UPDATE NFE SET STATUS_ENVIO_NFE = 4

FROM NFE N

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = N.COD_MOVIMENTO

WHERE M.COD_TDF = 34 AND N.STATUS_ENVIO_NFE IN(1,0)

GO

UPDATE MOVIMENTO_ITEM SET

CST_ICMS = PSC.CST_ICMS,

CST_COFINS = PSC.CST_COFINS,

CST_PIS = PSC.CST_PIS,

CST_IPI = PSC.CST_IPI

FROM MOVIMENTO_ITEM I

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = I.COD_MOVIMENTO

INNER JOIN NFE N ON N.COD_MOVIMENTO = M.COD_MOVIMENTO

INNER JOIN PRODUTO_SERVICO_CONFIG PSC ON PSC.COD_PRODUTO_SERVICO = I.COD_PRODUTO_SERVICO AND PSC.COD_EMPRESA = M.COD_EMPRESA

WHERE M.COD_TDF IN(34,30) AND N.STATUS_ENVIO_NFE = 4

GO

UPDATE MOVIMENTO_ITEM SET

PER_ICMS = AE.PER_ALIQUOTA

FROM MOVIMENTO_ITEM I

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = I.COD_MOVIMENTO

INNER JOIN NFE N ON N.COD_MOVIMENTO = M.COD_MOVIMENTO

INNER JOIN PRODUTO_SERVICO_CONFIG PSC ON PSC.COD_PRODUTO_SERVICO = I.COD_PRODUTO_SERVICO AND PSC.COD_EMPRESA = M.COD_EMPRESA

INNER JOIN ALIQUOTA_ECF AE ON AE.COD_ALIQUOTA_ECF = PSC.COD_ALIQUOTA_ECF

WHERE M.COD_TDF IN(34,30) AND N.STATUS_ENVIO_NFE = 4 AND (LEN(I.CST_ICMS) = 2)

GO

UPDATE MOVIMENTO_ITEM SET VAL_DESCONTO_REAL = I.VAL_DESCONTO + (M.VAL_DESC_SUB_TOTAL / M.VAL_PRODUTOS) * (I.QUANTIDADE * I.VAL_UNITARIO)

FROM MOVIMENTO_ITEM I

INNER JOIN VENDA V ON V.COD_MOVIMENTO = I.COD_MOVIMENTO

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = I.COD_MOVIMENTO

WHERE COD_TDF = 34 AND M.STATUS NOT IN(3,5) AND M.VAL_PRODUTOS > 0  AND I.STATUS = 0

GO

UPDATE MOVIMENTO_ITEM SET

VAL_DESCONTO_REAL = VAL_DESCONTO_REAL + (ISNULL((SELECT SUM(X.VAL_DESCONTO_REAL) FROM MOVIMENTO_ITEM X WHERE X.COD_MOVIMENTO = I.COD_MOVIMENTO AND X.STATUS = 0),0)

- (SELECT Y.VAL_DESCONTO FROM MOVIMENTO Y WHERE Y.COD_MOVIMENTO = I.COD_MOVIMENTO)

)

FROM MOVIMENTO_ITEM I

INNER JOIN VENDA V ON V.COD_MOVIMENTO = I.COD_MOVIMENTO

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = I.COD_MOVIMENTO

WHERE COD_TDF = 34 AND M.STATUS NOT IN(3,5) AND (I.SEQUENCIA = 1) AND M.VAL_PRODUTOS > 0 AND I.STATUS = 0

GO

UPDATE MOVIMENTO_ITEM SET

VL_BC_PIS = 0,

VL_BC_COFINS = 0,

VL_PIS = 0,

VL_COFINS = 0,

ALIQ_PIS_PERC = 0,

ALIQ_COFINS_PERC = 0

FROM MOVIMENTO_ITEM I

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = I.COD_MOVIMENTO

INNER JOIN NFE N ON N.COD_MOVIMENTO = M.COD_MOVIMENTO

WHERE I.CST_PIS IN('07','08') AND M.COD_TDF IN(34,30) AND N.STATUS_ENVIO_NFE = 4

GO

UPDATE MOVIMENTO_ITEM SET VL_BC_ICMS = ((I.QUANTIDADE * I.VAL_UNITARIO) - I.VAL_DESCONTO + I.VAL_ACRESCIMO) - (I.VAL_TOTAL * (M.VAL_DESCONTO / ISNULL(NULLIF(M.VAL_PRODUTOS,0),1)))

FROM MOVIMENTO_ITEM I

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = I.COD_MOVIMENTO

INNER JOIN NFE N ON N.COD_MOVIMENTO = M.COD_MOVIMENTO

WHERE M.COD_TDF IN(34,30) AND (N.STATUS_ENVIO_NFE = 4) AND (I.CST_ICMS IN('00','10','20','70','90'))

GO

UPDATE MOVIMENTO_ITEM SET VL_BC_ICMS = I.VL_BC_ICMS - (I.VL_BC_ICMS * (I.PER_REDUCAO / 100))

FROM MOVIMENTO_ITEM I

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = I.COD_MOVIMENTO

INNER JOIN NFE N ON N.COD_MOVIMENTO = M.COD_MOVIMENTO

WHERE M.COD_TDF IN(34,30) AND (N.STATUS_ENVIO_NFE = 4) AND (I.CST_ICMS IN('00','10','20','70','90'))

GO

UPDATE MOVIMENTO_ITEM SET VL_ICMS = I.VL_BC_ICMS * (I.PER_ICMS / 100)

FROM MOVIMENTO_ITEM I

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = I.COD_MOVIMENTO

INNER JOIN NFE N ON N.COD_MOVIMENTO = M.COD_MOVIMENTO

WHERE M.COD_TDF IN(34,30) AND (N.STATUS_ENVIO_NFE = 4) AND (I.CST_ICMS IN('00','10','20','70','90'))

GO

UPDATE MOVIMENTO_ITEM SET

ALIQ_PIS_PERC = (SELECT PER_PIS FROM EMPRESA_CONFIGURACAO WHERE COD_EMPRESA = M.COD_EMPRESA),

ALIQ_COFINS_PERC = (SELECT PER_COFINS FROM EMPRESA_CONFIGURACAO WHERE COD_EMPRESA = M.COD_EMPRESA),

VL_BC_PIS = VAL_TOTAL_LIQ,

VL_BC_COFINS = VAL_TOTAL_LIQ

FROM MOVIMENTO_ITEM I

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = I.COD_MOVIMENTO

INNER JOIN NFE N ON N.COD_MOVIMENTO = M.COD_MOVIMENTO

WHERE I.CST_PIS IN('01') AND M.COD_TDF IN(34,30) AND (N.STATUS_ENVIO_NFE = 4)

GO

UPDATE MOVIMENTO_ITEM SET

VL_PIS = CONVERT(NUMERIC(15,2),VAL_TOTAL_LIQ * (ALIQ_PIS_PERC / 100)),

VL_COFINS = CONVERT(NUMERIC(15,2),VAL_TOTAL_LIQ * (ALIQ_COFINS_PERC / 100))

FROM MOVIMENTO_ITEM I

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = I.COD_MOVIMENTO

INNER JOIN NFE N ON N.COD_MOVIMENTO = M.COD_MOVIMENTO

WHERE I.CST_PIS IN('01') AND M.COD_TDF IN(34,30) AND (N.STATUS_ENVIO_NFE = 4)

GO

UPDATE MOVIMENTO SET

VAL_BC_ICMS = ISNULL((SELECT SUM(I.VL_BC_ICMS) FROM MOVIMENTO_ITEM I WHERE I.COD_MOVIMENTO = MOVIMENTO.COD_MOVIMENTO AND I.STATUS = 0),0),

VAL_BC_ICMS_ST = ISNULL((SELECT SUM(I.VL_BC_ICMS_ST) FROM MOVIMENTO_ITEM I WHERE I.COD_MOVIMENTO = MOVIMENTO.COD_MOVIMENTO AND I.STATUS = 0),0),

VAL_ICMS = ISNULL((SELECT SUM(I.VL_ICMS) FROM MOVIMENTO_ITEM I WHERE I.COD_MOVIMENTO = MOVIMENTO.COD_MOVIMENTO AND I.STATUS = 0),0),

VAL_ICMS_ST = ISNULL((SELECT SUM(I.VL_ICMS_ST) FROM MOVIMENTO_ITEM I WHERE I.COD_MOVIMENTO = MOVIMENTO.COD_MOVIMENTO AND I.STATUS = 0),0),

VAL_BC_PIS = ISNULL((SELECT SUM(I.VL_BC_PIS) FROM MOVIMENTO_ITEM I WHERE I.COD_MOVIMENTO = MOVIMENTO.COD_MOVIMENTO AND I.STATUS = 0),0),

VAL_BC_COFINS = ISNULL((SELECT SUM(I.VL_BC_COFINS) FROM MOVIMENTO_ITEM I WHERE I.COD_MOVIMENTO = MOVIMENTO.COD_MOVIMENTO AND I.STATUS = 0),0),

VAL_PIS = ISNULL((SELECT SUM(I.VL_PIS) FROM MOVIMENTO_ITEM I WHERE I.COD_MOVIMENTO = MOVIMENTO.COD_MOVIMENTO AND I.STATUS = 0),0),

VAL_COFINS = ISNULL((SELECT SUM(I.VL_COFINS) FROM MOVIMENTO_ITEM I WHERE I.COD_MOVIMENTO = MOVIMENTO.COD_MOVIMENTO AND I.STATUS = 0),0)

WHERE COD_TDF IN(30,34) AND STATUS NOT IN(3,5)

GO

UPDATE MOVIMENTO_ITEM SET COD_CFOP = 319

FROM MOVIMENTO_ITEM I

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = I.COD_MOVIMENTO

WHERE M.STATUS NOT IN(3,5) AND (M.COD_TDF = 34) AND I.COD_CFOP = 259 AND I.CST_ICMS = '60'  AND I.STATUS = 0

GO

UPDATE MOVIMENTO_ITEM SET COD_CFOP = 319

FROM MOVIMENTO_ITEM I

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = I.COD_MOVIMENTO

WHERE I.CST_ICMS IN('60','201','500','10')  AND M.STATUS != 3 AND M.COD_TDF = 34 AND (I.COD_CFOP <> 319)

GO

UPDATE MOVIMENTO_ITEM SET COD_CFOP = 259

FROM MOVIMENTO_ITEM I

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = I.COD_MOVIMENTO

WHERE I.CST_ICMS IN('00','20')  AND M.STATUS != 3 AND M.COD_TDF = 34 AND (I.COD_CFOP <> 259)

GO

UPDATE NFE SET STATUS_ENVIO_NFE = 3

FROM NFE N

INNER JOIN MOVIMENTO M ON M.COD_MOVIMENTO = N.COD_MOVIMENTO

WHERE M.COD_TDF = 34 AND N.STATUS_ENVIO_NFE <> 3 AND M.STATUS = 3

GO

UPDATE MOVIMENTO_ITEM SET VAL_DESCONTO_REAL = VAL_DESCONTO_REAL * -1 WHERE VAL_DESCONTO_REAL < 0

GO