Você está na página 1de 3

/* Cursor ira verificar a regra no cadastro do siac e aplicar ela no livros */

DECLARE
CURSOR CORRIGIR_REGRA IS
SELECT C.EMPRESA_ID,
C.PEDIDO_ID ,
P.PRODUTO_ID,
I.CFOP,
I.CST_PIS,
I.CST_COFINS,
I.GRUPO_PIS_ID,
PR.CAPA_ID,
PR.ITEM,
C.NOTA_INICIO,
I.ALIQUOTA_COFINS,
I.ALIQUOTA_PIS,
PR.PRECO_UNI,
PR.QUANTIDADE,
PR.VLR_DESCONTO,
PR.VLR_FRETE,
PR.VLR_OUT_DESP,
EM.BASEPC_FRETE_S ,
EM.BASEPC_ICMSST_S,
EM.BASEPC_IPI_S,
EM.BASEPC_OUTRASDESPESAS_S,
PR.VLR_TOTAL_ITEM
FROM PRODUTOS P,
PRODUTOS_EMPRESAS E,
NEW_GRUPO_PISCOFINS N,
NEW_ITENS_GRUPO_PISCOFINS I,
LIV_CAPA_MOVIMENTO C,
LIV_PRODUTOS_MOVIMENTO PR,
EMPRESAS EM
WHERE P.PRODUTO_ID = E.PRODUTO_ID
AND E.NEW_GRUPO_PIS_COFINS_ID = N.GRUPO_PISCOFINS_ID
AND N.GRUPO_PISCOFINS_ID = I.GRUPO_PIS_ID
AND E.EMPRESA_ID = '16.950.035/0001-21'
AND E.EMPRESA_ID = EM.EMPRESA_ID
AND C.EMPRESA_ID = EM.EMPRESA_ID
AND C.CAPA_ID = PR.CAPA_ID
AND SUBSTR(C.TIPO_MOVIMENTO, 1, 1) = 'S'
AND (C.DATA_EMISSAO) BETWEEN '01-feb-2017' AND '28-FEb-2017'
AND P.PRODUTO_ID = PR.PRODUTO_ID
and DECODE(TRIM(I.CFOP) ,'Todos',PR.CFO_ID, I.CFOP) = (PR.CFO_ID)
AND I.MOVIMENTO = 'S'
AND (PR.CST_PIS = '49' OR PR.CST_COFINS = '49')
AND PR.CFO_ID NOT LIKE '%929%'
AND C.TIPO_NOTA = 'C';

BEGIN
FOR C1 IN CORRIGIR_REGRA
LOOP

UPDATE LIV_PRODUTOS_MOVIMENTO C
SET C.CST_PIS = C1.CST_PIS ,
C.CST_COFINS = C1.CST_COFINS ,
C.ALIQUOTA_PIS = C1.ALIQUOTA_PIS ,
C.ALIQUOTA_COFINS = C1.ALIQUOTA_COFINS

WHERE C.CAPA_ID = C1.CAPA_ID


AND C.PRODUTO_ID = C1.PRODUTO_ID
AND C.EMPRESA_ID = C1.EMPRESA_ID
AND C.ITEM = C1.ITEM ;
COMMIT ;

UPDATE LIV_PRODUTOS_MOVIMENTO LIK


SET LIK.VLR_BASE_PIS = '0' ,
LIK.VLR_BASE_COFINS = '0',
LIK.ALIQUOTA_PIS = '0',
LIK.ALIQUOTA_COFINS = '0'

WHERE LIK.CAPA_ID = C1.CAPA_ID


AND LIK.PRODUTO_ID = C1.PRODUTO_ID
AND LIK.EMPRESA_ID = C1.EMPRESA_ID
AND LIK.ITEM = C1.ITEM
AND (LIK.CST_PIS IN ('04','06','49','73','98')
OR LIK.CST_COFINS IN ('04','06','49','73','98')) ;
COMMIT;

UPDATE LIV_CAPA_MOVIMENTO CM
SET CM.CST_PIS = C1.CST_PIS ,
CM.CST_COFINS = C1.CST_COFINS
WHERE CM.EMPRESA_ID = C1.EMPRESA_ID
AND CM.CAPA_ID = C1.CAPA_ID
AND CM.NOTA_INICIO= C1.NOTA_INICIO
AND CM.PEDIDO_ID = C1.PEDIDO_ID ;
COMMIT ;

UPDATE LIV_PRODUTOS_MOVIMENTO PM
SET PM.VLR_BASE_PIS = ((VLR_TOTAL_ITEM - VLR_DESCONTO)
+ DECODE(C1.BASEPC_FRETE_S, 'S', PM.VLR_FRETE, 0)
+ DECODE(C1.BASEPC_ICMSST_S, 'S', PM.VLR_ICMS_ST, 0)
+ DECODE(C1.BASEPC_IPI_S, 'S', PM.VLR_IPI, 0)
+ DECODE(C1.BASEPC_OUTRASDESPESAS_S, 'S', PM.VLR_OUT_DESP, 0)) ,

PM.VLR_BASE_COFINS = ((VLR_TOTAL_ITEM - VLR_DESCONTO)


+ DECODE(C1.BASEPC_FRETE_S, 'S', PM.VLR_FRETE, 0)
+ DECODE(C1.BASEPC_ICMSST_S, 'S', PM.VLR_ICMS_ST, 0)
+ DECODE(C1.BASEPC_IPI_S, 'S', PM.VLR_IPI, 0)
+ DECODE(C1.BASEPC_OUTRASDESPESAS_S, 'S', PM.VLR_OUT_DESP, 0))

WHERE PM.CST_PIS NOT IN ('04','06','49','73','98')


AND PM.CAPA_ID = C1.CAPA_ID
AND PM.PRODUTO_ID = C1.PRODUTO_ID
AND PM.EMPRESA_ID = C1.EMPRESA_ID
AND PM.ITEM = C1.ITEM ;
COMMIT ;

UPDATE LIV_PRODUTOS_MOVIMENTO LM
SET LM.VLR_PIS = ROUND (VLR_BASE_PIS * C1.ALIQUOTA_PIS * 0.01 ,2),
LM.VLR_COFINS =ROUND (VLR_BASE_PIS * C1.ALIQUOTA_COFINS * 0.01 ,2)

WHERE LM.CST_PIS NOT IN ('04','06','49','73','98')


AND LM.CAPA_ID = C1.CAPA_ID
AND LM.PRODUTO_ID = C1.PRODUTO_ID
AND LM.EMPRESA_ID = C1.EMPRESA_ID
AND LM.ITEM = C1.ITEM ;
COMMIT ;
END LOOP;
END;

Você também pode gostar