Você está na página 1de 1

/* cursor ira calcular o DIFAL na tabela ITENS_MOVIMENTO */

DECLARE
CURSOR CORRECAO_DIFAL IS
SELECT PRODUTO_ID, pedido_id,TIPO_MOVIMENTO,EMPRESA_ID,
ALIQUOTA_ICMS,
VLR_LIQUIDO,
VLR_ICMSUFDEST,
ROUND(VLR_LIQUIDO * (ALIQ_INTERNA - ALIQUOTA_ICMS) /100 * 0.60,2) NEW_DEST,
VLR_ICMSUFREMET,
ROUND(VLR_LIQUIDO * (ALIQ_INTERNA - ALIQUOTA_ICMS) /100 * 0.40,2) NEW_REMET
FROM

(SELECT PRODUTO_ID, pedido_id,TIPO_MOVIMENTO,EMPRESA_ID,


'18' ALIQ_INTERNA,
I.ALIQUOTA_ICMS,
I.VLR_LIQUIDO,
I.VLR_ICMSUFDEST,
I.VLR_ICMSUFREMET

FROM ITENS_MOVIMENTO I
WHERE pedido_id = 91506
AND TIPO_MOVIMENTO = 'SV');
BEGIN
FOR CD IN CORRECAO_DIFAL LOOP
UPDATE ITENS_MOVIMENTO IM
SET IM.VLR_ICMSUFDEST = CD.NEW_DEST,
IM.VLR_ICMSUFREMET = CD.NEW_REMET
WHERE IM.EMPRESA_ID = CD.EMPRESA_ID
AND IM.PRODUTO_ID = CD.PRODUTO_ID
AND IM.TIPO_MOVIMENTO = CD.TIPO_MOVIMENTO
AND IM.PEDIDO_ID = CD.PEDIDO_ID ;
COMMIT;
END LOOP;
END;

Você também pode gostar