/*
***********************************************************************************
****    Procedure para calculo do demonstrativo de resultado operacional
*************************************************************************************

Criado em  : 03/2018
       Por : Jefferson Gouvea

Descri��o:

          - Com base nos dados parametrizados para a unidade realiza apura��o do
            resultado operacional da mesma, grava em tabelas espec�ficas a fim de
            possibilitar a gera��o de relat�rios gerenciais a partir de dados
            previamente calculados.

  Procedure APURAC_INVENTARIOROP

  IM - Implanta��o de Estoque
  AJ - Ajuste de Estoque
  II - Inventario Inicial
  IF - Inventario Final

*/

CREATE OR REPLACE PROCEDURE APURAC_INVENTARIOROP(
   P_CDFILIAL       FILIAL.CDFILIAL%TYPE,
   P_FILIALPAR      FILIAL.CDFILIAL%TYPE,
   P_DTINICIAL      IN DATE,
   P_DTFINAL        IN DATE, 
   P_NRROPFILIAL    IN VARCHAR,
   P_CDFILISUBGR    IN VARCHAR,            
   P_PRIMEEXEC      IN VARCHAR DEFAULT 'N')
IS
   V_NRTIPOCUSTO    NUMBER;
   V_NRSEQINVENROP  VARCHAR2(10);
   V_CDPRODFIN      VARCHAR2(20);
   V_CDPRODINI      VARCHAR2(20);
   V_NRMOVIESTQ     VARCHAR2(20);
   V_CDFILCENTPME   VARCHAR2(04);
   V_NRSEQINVENTROP NUMBER;  
   V_POSGRUPPROD    VARCHAR2(10);
   V_POSUBGRUPPROD  VARCHAR2(10);
   V_CDFILISUBGR    VARCHAR2(04);
BEGIN
   BEGIN
      SELECT TO_NUMBER(NVL(PF.CDTIPCUSTEST,'4'))
        INTO V_NRTIPOCUSTO
        FROM PARAMFILIAL PF, PARAMGERAL P
       WHERE PF.CDFILIAL = P_CDFILIAL;
   EXCEPTION
     WHEN NO_DATA_FOUND THEN
       V_NRTIPOCUSTO := '4';
   END;

   BEGIN
      SELECT CDFILCENTPME
        INTO V_CDFILCENTPME
        FROM FILIAL
       WHERE CDFILIAL = P_CDFILIAL;
   EXCEPTION
     WHEN NO_DATA_FOUND THEN
       V_CDFILCENTPME := NULL;
   END;
   
   FOR C_PARFILIALROP IN (SELECT P.IDINVINICROP, P.IDINVFINAROP, P.CDGRUPPROD CDGRUPPROD, IDIMPLANTROP, IDAJUSTEROP
                            FROM PARFILIALROP P
                           WHERE P.CDFILIAL = P_FILIALPAR
                             AND (NVL(P.IDTPAPURACAO,'3') <> '2')
                             AND P.CDGRUPPROD IS NOT NULL
                           UNION
                          SELECT P.IDINVINICROP, P.IDINVFINAROP, P.CDGRUPPRODDRL CDGRUPPROD, IDIMPLANTROP, IDAJUSTEROP
                            FROM PARFILIALROP P
                           WHERE P.CDFILIAL = P_FILIALPAR
                             AND (NVL(P.IDTPAPURACAO,'3') <> '1')
                             AND P.CDGRUPPRODDRL IS NOT NULL) LOOP
                             
      SELECT NVL(MAX(X.CDFILIAL), MAX(X.CDFILIPADRAO)) CDFILISUBGR
        INTO V_CDFILISUBGR
        FROM (SELECT DISTINCT CDFILISUBGR AS CDFILIAL, '' AS CDFILIPADRAO
                FROM PRSUBGRPROD
               WHERE CDGRUPPROD  = C_PARFILIALROP.CDGRUPPROD
                 AND CDFILISUBGR = P_CDFILIAL
               UNION ALL
              SELECT DISTINCT '' AS CDFILIAL, CDFILISUBGR AS CDFILIPADRAO
                FROM PRSUBGRPROD
               WHERE CDGRUPPROD  = C_PARFILIALROP.CDGRUPPROD
                 AND CDFILISUBGR = 'P') X;

      IF C_PARFILIALROP.IDINVINICROP = 'S' THEN
         V_POSGRUPPROD   := NULL;
         V_POSUBGRUPPROD := NULL;
         IF V_NRTIPOCUSTO IN (40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,57,58,59,60,61,62) THEN

            FOR C_INVINICIAL IN (SELECT P.CDPRODUTO, P.QTESTDIACON,
                                        NVL(CUSTO_PRODUTO(P.CDFILIAL, P.CDPRODUTO, V_NRTIPOCUSTO, P_DTINICIAL-1, SYSDATE),0) * P.QTESTDIACON AS VRESTDIACON,
                                        PR.CDARVPROD
                                   FROM POSESTCONS P, PRODUTO PR
                                  WHERE P.CDFILIAL = P_CDFILIAL
                                    AND (P.QTESTDIACON <> 0 OR P.VRESTDIACON <> 0)
                                    AND P.DTPOSESTCON = (SELECT MAX(DTPOSESTCON)
                                                           FROM POSESTCONS C
                                                          WHERE C.CDFILIAL = P_CDFILIAL
                                                            AND C.CDPRODUTO = P.CDPRODUTO
                                                            AND C.DTPOSESTCON <= P_DTINICIAL)
                                    AND PR.CDPRODUTO = P.CDPRODUTO) LOOP
               BEGIN
                  SELECT N.CDGRUPPROD, N.CDSUBGRPROD
                    INTO V_POSGRUPPROD, V_POSUBGRUPPROD
                    FROM PRODUTO P, NVSUBGRPROD N
                   WHERE P.CDPRODUTO = N.CDPRODUTO
                     AND N.CDFILISUBGR = V_CDFILISUBGR
                     AND N.CDGRUPPROD = C_PARFILIALROP.CDGRUPPROD
                     AND C_INVINICIAL.CDARVPROD LIKE P.CDARVPROD||'%';
               EXCEPTION
                 WHEN NO_DATA_FOUND THEN BEGIN
                     V_POSGRUPPROD := NULL;
                     V_POSUBGRUPPROD := NULL;
                 END;
               END;

               IF V_POSGRUPPROD IS NOT NULL THEN
                  NOVO_CODIGO('GESINVENTARIOROP', V_NRSEQINVENTROP);

                  INSERT INTO INVENTARIOROP (NRFILIALROP, NRINVENTARIOROP, CDFILIAL, CDGRUPPROD, CDSUBGRPROD,
                                             IDTPLANCROP, VRITEMLANCROP, CDFILIALCENT, DTINVENTARIO, DTLANCAMENT,
                                             QTESTDIACON)
                       VALUES (P_NRROPFILIAL, V_NRSEQINVENTROP, P_CDFILIAL, V_POSGRUPPROD, V_POSUBGRUPPROD,
                               'INV_INICIAL', C_INVINICIAL.VRESTDIACON, V_CDFILCENTPME, P_DTINICIAL, SYSDATE,
                               C_INVINICIAL.QTESTDIACON);
               END IF;
            END LOOP;
         ELSE
            FOR C_INVINICIAL IN (SELECT B.CDPRODUTO, B.QTESTOQDIA AS QTESTDIACON,
                                        NVL(CUSTO_PRODUTO_LCEST(B.CDFILIAL,B.CDPRODUTO, V_NRTIPOCUSTO,P_DTINICIAL - 1, SYSDATE,B.CDALMOXARIFE,B.CDLOCALESTOQ,
                                        B.NRLOTEESTQ,B.NRSUBLOTE),0) * B.QTESTOQDIA AS VRESTDIACON, PR.CDARVPROD
                                   FROM POSESTDIA B, PRODUTO PR
                                  WHERE B.CDFILIAL = P_CDFILIAL
                                    AND B.QTESTOQDIA <> 0
                                    AND B.DTPOSIESTQ = (SELECT MAX(P.DTPOSIESTQ)
                                                          FROM POSESTDIA P
                                                         WHERE P.CDFILIAL = P_CDFILIAL
                                                           AND P.CDPRODUTO = B.CDPRODUTO
                                                           AND P.CDALMOXARIFE = B.CDALMOXARIFE
                                                           AND P.CDLOCALESTOQ = B.CDLOCALESTOQ
                                                           AND P.NRLOTEESTQ = B.NRLOTEESTQ
                                                           AND P.NRSUBLOTE = B.NRSUBLOTE
                                                           AND P.DTPOSIESTQ <= P_DTINICIAL)
                                    AND PR.CDPRODUTO = B.CDPRODUTO) LOOP

               BEGIN
                  SELECT N.CDGRUPPROD, N.CDSUBGRPROD
                    INTO V_POSGRUPPROD, V_POSUBGRUPPROD
                    FROM PRODUTO P, NVSUBGRPROD N
                   WHERE P.CDPRODUTO = N.CDPRODUTO
                     AND N.CDFILISUBGR = V_CDFILISUBGR
                     AND N.CDGRUPPROD = C_PARFILIALROP.CDGRUPPROD
                     AND C_INVINICIAL.CDARVPROD LIKE P.CDARVPROD||'%';
               EXCEPTION
                 WHEN NO_DATA_FOUND THEN BEGIN
                     V_POSGRUPPROD := NULL;
                     V_POSUBGRUPPROD := NULL;
                 END;
               END;
   
               IF V_POSGRUPPROD IS NOT NULL THEN
                  NOVO_CODIGO('GESINVENTARIOROP', V_NRSEQINVENTROP);
   
                  INSERT INTO INVENTARIOROP (NRFILIALROP, NRINVENTARIOROP, CDFILIAL, CDGRUPPROD, CDSUBGRPROD,
                                             IDTPLANCROP, VRITEMLANCROP, CDFILIALCENT, DTINVENTARIO, DTLANCAMENT,
                                             QTESTDIACON)
                       VALUES (P_NRROPFILIAL, V_NRSEQINVENTROP, P_CDFILIAL, V_POSGRUPPROD, V_POSUBGRUPPROD,
                               'INV_INICIAL', C_INVINICIAL.VRESTDIACON, V_CDFILCENTPME, P_DTINICIAL, SYSDATE,
                               C_INVINICIAL.QTESTDIACON);
               END IF;
            END LOOP;
         END IF;
      END IF;

      IF C_PARFILIALROP.IDINVFINAROP = 'S' THEN
         V_POSGRUPPROD   := NULL;
         V_POSUBGRUPPROD := NULL;

         IF V_NRTIPOCUSTO IN (40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,57,58,59,60,61,62) THEN
            FOR C_INVFINAL IN (SELECT P.CDPRODUTO, P.QTESTDIACON,
                                      NVL(CUSTO_PRODUTO(P.CDFILIAL, P.CDPRODUTO, V_NRTIPOCUSTO, P_DTINICIAL, SYSDATE),0) * P.QTESTDIACON AS VRESTDIACON,
                                      PR.CDARVPROD
                                 FROM POSESTCONS P, PRODUTO PR
                                WHERE P.CDFILIAL = P_CDFILIAL
                                  AND (P.QTESTDIACON <> 0 OR P.VRESTDIACON <> 0)
                                  AND P.DTPOSESTCON = (SELECT MAX(DTPOSESTCON)
                                                         FROM POSESTCONS C
                                                        WHERE C.CDFILIAL = P_CDFILIAL
                                                          AND C.CDPRODUTO = P.CDPRODUTO
                                                          AND C.DTPOSESTCON <= P_DTINICIAL+1)
                                  AND PR.CDPRODUTO = P.CDPRODUTO) LOOP
               BEGIN
                  SELECT N.CDGRUPPROD, N.CDSUBGRPROD
                    INTO V_POSGRUPPROD, V_POSUBGRUPPROD
                    FROM PRODUTO P, NVSUBGRPROD N
                   WHERE P.CDPRODUTO = N.CDPRODUTO
                     AND N.CDFILISUBGR = P_CDFILISUBGR
                     AND N.CDGRUPPROD = C_PARFILIALROP.CDGRUPPROD
                     AND C_INVFINAL.CDARVPROD LIKE P.CDARVPROD||'%';
               EXCEPTION
                 WHEN NO_DATA_FOUND THEN BEGIN
                    V_POSGRUPPROD := NULL;
                    V_POSUBGRUPPROD := NULL;
                 END;
               END;

               IF V_POSGRUPPROD IS NOT NULL THEN
                  NOVO_CODIGO('GESINVENTARIOROP', V_NRSEQINVENTROP);

                  INSERT INTO INVENTARIOROP (NRFILIALROP, NRINVENTARIOROP, CDFILIAL, CDGRUPPROD, CDSUBGRPROD,
                                             IDTPLANCROP, VRITEMLANCROP, CDFILIALCENT, DTINVENTARIO, DTLANCAMENT,
                                             QTESTDIACON)
                       VALUES (P_NRROPFILIAL, V_NRSEQINVENTROP, P_CDFILIAL, V_POSGRUPPROD, V_POSUBGRUPPROD,
                                  'INV_FINAL', C_INVFINAL.VRESTDIACON, V_CDFILCENTPME, P_DTINICIAL, SYSDATE,
                            C_INVFINAL.QTESTDIACON);
               END IF;
            END LOOP;
         ELSE
            FOR C_INVFINAL IN (SELECT B.CDPRODUTO, B.QTESTOQDIA AS QTESTDIACON,
                                      NVL(CUSTO_PRODUTO_LCEST(B.CDFILIAL,B.CDPRODUTO, V_NRTIPOCUSTO, P_DTINICIAL, SYSDATE,B.CDALMOXARIFE,B.CDLOCALESTOQ,
                                      B.NRLOTEESTQ,B.NRSUBLOTE),0) * B.QTESTOQDIA AS VRESTDIACON, PR.CDARVPROD
                                 FROM POSESTDIA B, PRODUTO PR
                                WHERE B.CDFILIAL = P_CDFILIAL
                                  AND B.QTESTOQDIA <> 0
                                  AND B.DTPOSIESTQ = (SELECT MAX(P.DTPOSIESTQ)
                                                        FROM POSESTDIA P
                                                       WHERE P.CDFILIAL = P_CDFILIAL
                                                         AND P.CDPRODUTO = B.CDPRODUTO
                                                         AND P.CDALMOXARIFE = B.CDALMOXARIFE
                                                         AND P.CDLOCALESTOQ = B.CDLOCALESTOQ
                                                         AND P.NRLOTEESTQ = B.NRLOTEESTQ
                                                         AND P.NRSUBLOTE = B.NRSUBLOTE
                                                         AND P.DTPOSIESTQ <= P_DTINICIAL + 1)
                                  AND PR.CDPRODUTO = B.CDPRODUTO) LOOP
               BEGIN
                  SELECT N.CDGRUPPROD, N.CDSUBGRPROD
                    INTO V_POSGRUPPROD, V_POSUBGRUPPROD
                    FROM PRODUTO P,NVSUBGRPROD N
                   WHERE P.CDPRODUTO = N.CDPRODUTO
                     AND N.CDFILISUBGR = V_CDFILISUBGR
                     AND N.CDGRUPPROD = C_PARFILIALROP.CDGRUPPROD
                     AND C_INVFINAL.CDARVPROD LIKE P.CDARVPROD||'%';
               EXCEPTION
                 WHEN NO_DATA_FOUND THEN BEGIN
                     V_POSGRUPPROD := NULL;
                     V_POSUBGRUPPROD := NULL;
                 END;
               END;

               IF V_POSGRUPPROD IS NOT NULL THEN
                  NOVO_CODIGO('GESINVENTARIOROP', V_NRSEQINVENTROP);

                  INSERT INTO INVENTARIOROP (NRFILIALROP, NRINVENTARIOROP, CDFILIAL, CDGRUPPROD, CDSUBGRPROD,
                                             IDTPLANCROP, VRITEMLANCROP, CDFILIALCENT, DTINVENTARIO, DTLANCAMENT,
                                             QTESTDIACON)
                       VALUES (P_NRROPFILIAL, V_NRSEQINVENTROP, P_CDFILIAL, V_POSGRUPPROD, V_POSUBGRUPPROD,
                               'INV_FINAL', C_INVFINAL.VRESTDIACON, V_CDFILCENTPME, P_DTINICIAL, SYSDATE,
                               C_INVFINAL.QTESTDIACON);
               END IF;
            END LOOP;
         END IF;
      END IF;

      /* IMPLANTACAO E AJUSTE */
      IF ((C_PARFILIALROP.IDIMPLANTROP = 'S' OR C_PARFILIALROP.IDAJUSTEROP = 'S')) AND (P_PRIMEEXEC = 'S') THEN
         SELECT MAX(P.CDARVPROD) AS CDPRODFIN, MIN(P.CDARVPROD) AS CDPRODINI
           INTO V_CDPRODFIN, V_CDPRODINI
           FROM PRODUTO P INNER JOIN ITLANCTOEST I ON I.CDPRODMOVI = P.CDPRODUTO
          WHERE I.CDFILIMOVI = P_CDFILIAL
            AND I.IDTIPOMOVI IN ('0','1')
            AND TRUNC(I.DTLANCMOVI) BETWEEN P_DTINICIAL AND P_DTFINAL;
         
         IF V_CDPRODFIN IS NOT NULL THEN
            SELECT LPAD(ABS(ROUND(DBMS_RANDOM.VALUE(9999,9999999999))),10,'0')
              INTO V_NRMOVIESTQ
              FROM DUAL;

            FOR C_MOVIMENTACAO IN (SELECT I.CDFILIMOVI, I.CDALMOXARIFE, I.CDLOCALESTOQ
                                     FROM ITLANCTOEST I, PRODUTO P
                                    WHERE I.CDFILIMOVI = P_CDFILIAL
                                      AND I.DTLANCMOVI BETWEEN P_DTINICIAL AND P_DTFINAL
                                      AND I.IDTIPOMOVI IN ('1','0')
                                      AND I.CDPRODUTO = P.CDPRODUTO
                                      AND P.CDARVPROD BETWEEN V_CDPRODINI AND V_CDPRODFIN
                                    GROUP BY I.CDFILIMOVI, I.CDALMOXARIFE, I.CDLOCALESTOQ) LOOP

               MOVIMENTACAO_ESTOQUE(C_MOVIMENTACAO.CDFILIMOVI, C_MOVIMENTACAO.CDALMOXARIFE, C_MOVIMENTACAO.CDLOCALESTOQ,NULL, 1,
                                    P_DTINICIAL,P_DTFINAL, V_CDPRODINI, V_CDPRODFIN, 3, 1, V_NRMOVIESTQ, 'N', 'N', 'N');
            END LOOP;

            IF C_PARFILIALROP.IDIMPLANTROP = 'S' THEN
               FOR C_IMPLANTACAO IN (SELECT AN.CDGRUPPROD, AN.CDSUBGRPROD, TRUNC(R.DTLANCMOVIEST) DTLANCMOVIEST, SUM(QTLANCAMENTO) QTLANCAMENTO,
                                            SUM(VRDIFECUST) VRDIFECUST
                                       FROM RELAT_MOVIEST R INNER JOIN PRODUTO P
                                                                    ON R.CDPRODMOVIEST = P.CDARVPROD
                                                            INNER JOIN (SELECT B.CDPRODUTO, A.CDGRUPPROD, A.CDSUBGRPROD, A.CDFILISUBGR
                                                                          FROM PRODUTO B INNER JOIN PRODUTO C ON B.CDPRODUTO = C.CDPRODUTO
                                                                                         INNER JOIN (SELECT P.CDARVPROD AS CDPRODUTO, N.CDGRUPPROD,
                                                                                                            N.CDSUBGRPROD, N.CDFILISUBGR
                                                                                                       FROM PRODUTO P,NVSUBGRPROD N
                                                                                                      WHERE P.CDPRODUTO   = N.CDPRODUTO
                                                                                                        AND N.CDFILISUBGR = V_CDFILISUBGR
                                                                                                        AND N.CDGRUPPROD  = C_PARFILIALROP.CDGRUPPROD) A
                                                                                                 ON C.CDARVPROD LIKE A.CDPRODUTO||'%'
                                                                         WHERE A.CDFILISUBGR = V_CDFILISUBGR
                                                                           AND A.CDGRUPPROD = C_PARFILIALROP.CDGRUPPROD
                                                                         ORDER BY B.CDARVPROD) AN
                                                                    ON P.CDPRODUTO = AN.CDPRODUTO
                                                            INNER JOIN SUBGRPRODFIL SG
                                                                    ON AN.CDFILISUBGR = SG.CDFILISUBGR
                                                                   AND AN.CDGRUPPROD = SG.CDGRUPPROD
                                                                   AND AN.CDSUBGRPROD = SG.CDSUBGRPROD
                                      WHERE R.CDFILIMOVIEST = P_CDFILIAL
                                        AND R.NRRELATMOVI = V_NRMOVIESTQ
                                        AND TRUNC(R.DTLANCMOVIEST) BETWEEN P_DTINICIAL AND P_DTFINAL
                                        AND SG.CDFILISUBGR = V_CDFILISUBGR
                                        AND SG.CDGRUPPROD = C_PARFILIALROP.CDGRUPPROD
                                        AND R.IDTIPOMOVIEST = '0'
                                      GROUP BY DTLANCMOVIEST, AN.CDGRUPPROD, AN.CDSUBGRPROD
                                      ORDER BY DTLANCMOVIEST, AN.CDSUBGRPROD, AN.CDGRUPPROD) LOOP

                  NOVO_CODIGO('GESINVENTARIOROP', V_NRSEQINVENTROP);
            
                  INSERT INTO INVENTARIOROP (NRFILIALROP, NRINVENTARIOROP, CDFILIAL, CDGRUPPROD, CDSUBGRPROD,
                                             IDTPLANCROP, VRITEMLANCROP, CDFILIALCENT, DTINVENTARIO, DTLANCAMENT,
                                             QTESTDIACON)
                       VALUES (P_NRROPFILIAL, V_NRSEQINVENTROP, P_CDFILIAL, C_IMPLANTACAO.CDGRUPPROD, C_IMPLANTACAO.CDSUBGRPROD,
                               'IMPLANTACAO', C_IMPLANTACAO.VRDIFECUST, V_CDFILCENTPME, C_IMPLANTACAO.DTLANCMOVIEST, SYSDATE,
                               C_IMPLANTACAO.QTLANCAMENTO);
               END LOOP;
            END IF;
            IF C_PARFILIALROP.IDAJUSTEROP = 'S' THEN
               FOR C_AJUSTE IN (SELECT AN.CDGRUPPROD, AN.CDSUBGRPROD, TRUNC(DTLANCMOVIEST) DTLANCMOVIEST, SUM(QTLANCAMENTO) QTLANCAMENTO,
                                       SUM(VRDIFECUST) VRDIFECUST
                                  FROM RELAT_MOVIEST R INNER JOIN PRODUTO  P ON R.CDPRODMOVIEST = P.CDARVPROD
                                                       INNER JOIN (SELECT B.CDPRODUTO,A.CDGRUPPROD,A.CDSUBGRPROD,A.CDFILISUBGR
                                                                     FROM PRODUTO B INNER JOIN PRODUTO C
                                                                                            ON B.CDPRODUTO = C.CDPRODUTO
                                                                                    INNER JOIN (SELECT P.CDARVPROD AS CDPRODUTO, N.CDGRUPPROD,
                                                                                                       N.CDSUBGRPROD, N.CDFILISUBGR
                                                                                                  FROM PRODUTO P INNER JOIN NVSUBGRPROD N
                                                                                                                         ON P.CDPRODUTO = N.CDPRODUTO
                                                                                                 WHERE N.CDFILISUBGR = V_CDFILISUBGR
                                                                                                   AND N.CDGRUPPROD = C_PARFILIALROP.CDGRUPPROD) A
                                                                                            ON C.CDARVPROD LIKE A.CDPRODUTO||'%'
                                                                    WHERE A.CDFILISUBGR = V_CDFILISUBGR
                                                                      AND A.CDGRUPPROD = C_PARFILIALROP.CDGRUPPROD
                                                                    ORDER BY B.CDARVPROD) AN ON P.CDPRODUTO = AN.CDPRODUTO
                                                       INNER JOIN SUBGRPRODFIL SG ON AN.CDFILISUBGR = SG.CDFILISUBGR
                                                                                 AND AN.CDGRUPPROD = SG.CDGRUPPROD
                                                                                 AND AN.CDSUBGRPROD = SG.CDSUBGRPROD
                                 WHERE R.CDFILIMOVIEST = P_CDFILIAL
                                   AND R.NRRELATMOVI = V_NRMOVIESTQ
                                   AND TRUNC(R.DTLANCMOVIEST) BETWEEN P_DTINICIAL AND P_DTFINAL
                                   AND SG.CDGRUPPROD = C_PARFILIALROP.CDGRUPPROD
                                   AND SG.CDFILISUBGR = V_CDFILISUBGR
                                   AND R.IDTIPOMOVIEST = '1'
                                 GROUP BY AN.CDGRUPPROD, AN.CDSUBGRPROD, TRUNC(DTLANCMOVIEST)
                                 ORDER BY DTLANCMOVIEST, AN.CDSUBGRPROD, AN.CDGRUPPROD) LOOP

                  NOVO_CODIGO('GESINVENTARIOROP', V_NRSEQINVENTROP);

                  INSERT INTO INVENTARIOROP (NRFILIALROP, NRINVENTARIOROP, CDFILIAL, CDGRUPPROD, CDSUBGRPROD,
                                             IDTPLANCROP, VRITEMLANCROP, CDFILIALCENT, DTINVENTARIO, DTLANCAMENT,
                                             QTESTDIACON)
                       VALUES (P_NRROPFILIAL, V_NRSEQINVENTROP, P_CDFILIAL, C_AJUSTE.CDGRUPPROD, C_AJUSTE.CDSUBGRPROD,
                               'AJUSTE', C_AJUSTE.VRDIFECUST, V_CDFILCENTPME, C_AJUSTE.DTLANCMOVIEST, SYSDATE,
                               C_AJUSTE.QTLANCAMENTO);
               END LOOP;
            END IF;
         END IF;
 
         DELETE FROM RELAT_MOVIEST
               WHERE CDFILIMOVIEST = P_CDFILIAL
                 AND NRRELATMOVI = V_NRMOVIESTQ;
      END IF;
   END LOOP;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('APURAC_INVENTARIOROP','6.35.009'); END;
/
