create or replace PROCEDURE CARGA_PESAGEM(P_CDFILIAL VARCHAR2, 
                                          P_ERRO OUT VARCHAR2)
IS
V_CDEMPRESA        FILIAL.CDEMPRESA%TYPE; 
V_CDFILIAL         FILIAL.CDFILIAL%TYPE; 
V_CDPRODUTO        PRODUTO.CDPRODUTO%TYPE; 
V_NRORDPROD        ORDPRODUCAO.NRORDPROD%TYPE; 
V_NRSUBORDPROD     ORDPRODUCAO.NRSUBORDPROD%TYPE; 
V_NRSEQHIST        HISTPESOPROD.NRSEQHIST%TYPE;
V_QTEMBALAGEM      HISTPESOPROD.QTEMBALAGEM%TYPE;
V_QTPESOBRUTO      HISTPESOPROD.QTPESOBRUTO%TYPE;
V_QTPESOLIQ        HISTPESOPROD.QTPESOLIQ%TYPE; 
V_DTFABRICACAO     HISTPESOPROD.DTFABRICACAO%TYPE;
V_DTVALIDADE       HISTPESOPROD.DTVALIDADE%TYPE;
V_CDSUBPRODETA     HISTPESOPROD.CDSUBPRODETA%TYPE;
V_NRSUBPRETAOP     HISTPESOPROD.NRSUBPRETAOP%TYPE;
V_VRMEDIA          HISTPESOPROD.VRMEDIA%TYPE;
V_NRPRODACAB       HISTPESOPROD.NRPRODACAB%TYPE;
V_VRTARAEXT        HISTPESOPROD.VRTARAEXT%TYPE;
V_DSLOGOPERACAO    HISTPESOPROD.DSLOGOPERACAO%TYPE;
V_CDOPERADOR       OPERADOR.CDOPERADOR%TYPE;
BO_PRIM            BOOLEAN;
V_IDMODELOBALANCA  PARAMAN.IDMODELOBALANCA%TYPE;

CURSOR C_CARGAPESAGEM(P_CDFILIAL VARCHAR) IS 
SELECT CDFILIAL, CDPRODUTO, NRORDPROD, NRSUBORDPROD, NRSEQHIST, QTEMBALAGEM, QTPESOBRUTO, QTPESOLIQ, DTFABRICACAO, 
       DTVALIDADE, CDSUBPRODETA, NRSUBPRETAOP, VRMEDIA, NRPRODACAB, CDOPERADOR, DSLOGOPERACAO, VRTARAEXT
  FROM USR_HISTPESOPROD
 WHERE CDFILIAL = P_CDFILIAL
   AND IDINTEGRACAO = 'APONTADO';

BEGIN
   BEGIN 
      SELECT IDMODELOBALANCA
        INTO V_IDMODELOBALANCA
        FROM PARAMAN
       WHERE CDFILIAL = P_CDFILIAL;
   EXCEPTION
      WHEN OTHERS THEN
         V_IDMODELOBALANCA := 'XXX';
   END;

   CASE WHEN V_IDMODELOBALANCA = '99' THEN LNK_RECEBE_APONTAMENTO; --MODELO DE INTEGRACAO LENKE PROPACK
        ELSE V_IDMODELOBALANCA := 'XXX'; 
   END CASE; 


   BO_PRIM := TRUE;
   OPEN C_CARGAPESAGEM(P_CDFILIAL);
   LOOP
      FETCH C_CARGAPESAGEM INTO V_CDFILIAL, V_CDPRODUTO, V_NRORDPROD, V_NRSUBORDPROD, V_NRSEQHIST, V_QTEMBALAGEM, V_QTPESOBRUTO, V_QTPESOLIQ, V_DTFABRICACAO, 
                                V_DTVALIDADE, V_CDSUBPRODETA, V_NRSUBPRETAOP, V_VRMEDIA, V_NRPRODACAB, V_CDOPERADOR, V_DSLOGOPERACAO, V_VRTARAEXT; 
      
      IF (C_CARGAPESAGEM%NOTFOUND) AND (BO_PRIM) THEN 
         P_ERRO := 'NOT_FOUND'; 
         EXIT;
      END IF;
      EXIT WHEN C_CARGAPESAGEM%NOTFOUND;
      BO_PRIM := FALSE;
            INSERT INTO HISTPESOPROD(CDFILIAL, CDPRODUTO, NRORDPROD, NRSUBORDPROD, NRSEQHIST, QTEMBALAGEM, QTPESOBRUTO, QTPESOLIQ, DTFABRICACAO, 
                                     DTVALIDADE, CDSUBPRODETA, NRSUBPRETAOP, VRMEDIA, NRPRODACAB, CDOPERADOR, DSLOGOPERACAO, VRTARAEXT) 

            VALUES(V_CDFILIAL, V_CDPRODUTO, V_NRORDPROD, V_NRSUBORDPROD, V_NRSEQHIST, V_QTEMBALAGEM, V_QTPESOBRUTO, V_QTPESOLIQ, V_DTFABRICACAO, 
                   V_DTVALIDADE, V_CDSUBPRODETA, V_NRSUBPRETAOP, V_VRMEDIA, V_NRPRODACAB, V_CDOPERADOR, V_DSLOGOPERACAO, V_VRTARAEXT); 

           UPDATE USR_HISTPESOPROD
              SET IDINTEGRACAO = 'IMPORTADO',
                  DTINTEGRACAO = SYSDATE
            WHERE CDFILIAL = V_CDFILIAL
              AND NRORDPROD = V_NRORDPROD
              AND CDPRODUTO = V_CDPRODUTO
              AND NRSEQHIST = V_NRSEQHIST;           
           
           COMMIT;

   END LOOP;
   
   FOR C_PESOACUM IN(SELECT CDFILIAL, NRORDPROD, NRSUBORDPROD, CDSUBPRODETA, NRSUBPRETAOP, CDPRODUTO, NRPRODACAB, SUM(QTPESOLIQ) AS QTLIQACUM
                        FROM USR_HISTPESOPROD
                       WHERE IDINTEGRACAO = 'IMPORTADO' 
                       GROUP BY CDFILIAL, NRORDPROD, NRSUBORDPROD, CDSUBPRODETA, NRSUBPRETAOP, CDPRODUTO, NRPRODACAB) LOOP
                       
      UPDATE PRODACABADO
         SET QTLIQACUM    = C_PESOACUM.QTLIQACUM
       WHERE CDFILIAL     = C_PESOACUM.CDFILIAL
         AND NRORDPROD    = C_PESOACUM.NRORDPROD
         AND NRSUBORDPROD = C_PESOACUM.NRSUBORDPROD
         AND CDSUBPRODETA = C_PESOACUM.CDSUBPRODETA
         AND NRSUBPRETAOP = C_PESOACUM.NRSUBPRETAOP
         AND CDPRODUTO    = C_PESOACUM.CDPRODUTO
         AND NRPRODACAB   = C_PESOACUM.NRPRODACAB;
         
      UPDATE USR_HISTPESOPROD
         SET IDINTEGRACAO = 'INTEGRADO',
             DTINTEGRACAO = SYSDATE
       WHERE CDFILIAL     = C_PESOACUM.CDFILIAL
         AND NRORDPROD    = C_PESOACUM.NRORDPROD
         AND NRSUBORDPROD = C_PESOACUM.NRSUBORDPROD
         AND CDSUBPRODETA = C_PESOACUM.CDSUBPRODETA
         AND NRSUBPRETAOP = C_PESOACUM.NRSUBPRETAOP
         AND CDPRODUTO    = C_PESOACUM.CDPRODUTO
         AND NRPRODACAB   = C_PESOACUM.NRPRODACAB;
   END LOOP;

   COMMIT;   

END;
/
-- VERSAO --
BEGIN ATUVEROBJ('CARGA_PESAGEM','6.39.005'); END;
/
