CREATE OR REPLACE PROCEDURE AJUSTE_ENCARGOPED(
   P_CDFILIAL    IN PEDIDO.CDFILIAL%TYPE,
   P_NRPEDIDO    IN PEDIDO.NRPEDIDO%TYPE)
   
IS
   V_TESTE          NUMBER;
   V_TOTALENCARGO   NUMBER;
   V_DIFERENCA      NUMBER;
   V_VRITEMENCA     NUMBER;
   V_VRFRETEITEM    NUMBER;
   V_NRLANCTONF     VARCHAR2(12);

BEGIN

    FOR C_ENCARGO IN(SELECT EP.CDFILIAL, EP.NRPEDIDO, EN.CDENCARGO,EN.NMENCARGO,
                     NVL(EP.VRENCARGOPED, 0) AS VRENCARGOPED
                     FROM ENCARGO EN,(SELECT CDFILIAL, NRPEDIDO, CDENCARGO, VRENCARGOPED
                                          FROM ENCARGOPED
                                         WHERE CDFILIAL = P_CDFILIAL
                                           AND NRPEDIDO = P_NRPEDIDO) EP
                     WHERE EN.CDENCARGO = EP.CDENCARGO(+)
                    ORDER BY EP.CDFILIAL, EP.NRPEDIDO, EN.CDENCARGO
    ) LOOP
    
        IF C_ENCARGO.NRPEDIDO IS NOT NULL THEN
        
            SELECT SUM(I.VRITEMENCA) VRITEMENCA, MAX(I.NRLANCTONF)
            INTO V_TOTALENCARGO, V_NRLANCTONF
            FROM ENCARGOPED E, ITEMENCARGO I ,(
             SELECT CDFILIAL, NRPEDIDO, NRLANCTONF, MAX(NRSEQITPROD)NRSEQITPROD  
            FROM ITEMPRODUTO 
            WHERE CDFILIAL = P_CDFILIAL AND
                  NRPEDIDO = P_NRPEDIDO 
                  group by NRLANCTONF, CDFILIAL, NRPEDIDO) IT
            WHERE E.CDFILIAL   = P_CDFILIAL
             AND E.NRPEDIDO    = P_NRPEDIDO
             AND E.CDFILIAL    = I.CDFILIAL
             AND E.CDENCARGO   = I.CDENCARGO
             AND IT.CDFILIAL   = E.CDFILIAL
             AND IT.NRPEDIDO   = E.NRPEDIDO
             AND IT.NRLANCTONF = I.NRLANCTONF
             AND E.CDENCARGO   = C_ENCARGO.CDENCARGO;    
            
            V_DIFERENCA := C_ENCARGO.VRENCARGOPED - V_TOTALENCARGO;
            
            IF V_DIFERENCA <> 0 THEN    
                UPDATE ITEMENCARGO
                   SET VRITEMENCA = VRITEMENCA + V_DIFERENCA
                  WHERE CDFILIAL  = P_CDFILIAL
                   AND NRLANCTONF = V_NRLANCTONF 
                   AND CDENCARGO  = C_ENCARGO.CDENCARGO; 
            END IF;
        END IF;           
    END LOOP;
END;
/
-- VERSAO --
BEGIN ATUVEROBJ('AJUSTE_ENCARGOPED','6.39.032'); END;
/
