create or replace
PROCEDURE REPLICA_PRODUTO_FILIAL(
                            P_CDFILIORIG    IN VARCHAR2,
                            P_CDFILIDEST    IN VARCHAR2,
                            P_IDTPFILDEST   IN VARCHAR2,
                            P_IDTPCONFPAR   IN INTEGER,
                            P_CDPRODINIC    IN PRODUTO.CDARVPROD%TYPE,
                            P_CDPRODFINA    IN PRODUTO.CDARVPROD%TYPE,
                            P_LISTAPARAM    IN VARCHAR2)
AS
   V_PRODUTO VARCHAR2(10);
   V_COUNT INTEGER;
BEGIN

   IF P_IDTPFILDEST = 'F' THEN
      IF P_IDTPCONFPAR = 0 THEN
         FOR C_PRODFILI IN(SELECT D.CDFILIAL,        D.CDPRODUTO,       O.IDCNTRESTOQ,  O.QTESTOQMIN,   O.IDPRODATIV, 
                                  O.NRTEMPREPEST,    O.NRDIASESTOQ,     O.VRPTOLQTITAF, O.VRPTOLVRITAF, O.VRTXADMPROD,  
                                  O.QTESTMINSAID,    O.IDUTCTRLLOTE,    O.CDALMOXARIFE, O.CDLOCALESTOQ, O.CDALMOXINSPR, 
                                  O.CDLOCALINSPR,    O.CDALMOXPRACA,    O.CDLOCALPRACA, O.CDALMOXPRCLI, O.CDLOCALPRCLI, 
                                  O.CDALMOXPRSEMACA, O.CDLOCALPRSEMACA, O.CDALMOXQUAR,  O.CDLOCALQUAR,  O.IDUTPRORIGOBRIG,
                                  O.VRMINEMPENHOAF,  O.VRMINEMPENHOOL
                           FROM PRODFILI O, PRODFILI D, PRODUTO P
                           WHERE O.CDFILIAL = P_CDFILIORIG
                             AND O.CDPRODUTO = P.CDPRODUTO
                             AND CDARVPROD BETWEEN P_CDPRODINIC AND P_CDPRODFINA
                             AND D.CDFILIAL = P_CDFILIDEST
                             AND D.CDPRODUTO = O.CDPRODUTO) LOOP
            IF SUBSTR(P_LISTAPARAM,1,1) = 'S' THEN

               UPDATE PRODFILI
               SET  IDCNTRESTOQ  =  C_PRODFILI.IDCNTRESTOQ,
                    QTESTOQMIN   =  C_PRODFILI.QTESTOQMIN ,
                    IDPRODATIV   =  C_PRODFILI.IDPRODATIV ,
                    NRTEMPREPEST =  C_PRODFILI.NRTEMPREPEST,
                    NRDIASESTOQ  =  C_PRODFILI.NRDIASESTOQ,
                    VRPTOLQTITAF =  C_PRODFILI.VRPTOLQTITAF,
                    VRPTOLVRITAF =  C_PRODFILI.VRPTOLVRITAF,
                    VRTXADMPROD  =  C_PRODFILI.VRTXADMPROD,
                    QTESTMINSAID =  C_PRODFILI.QTESTMINSAID,
                    IDUTCTRLLOTE =  C_PRODFILI.IDUTCTRLLOTE,
                    CDALMOXARIFE =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXARIFE),CDALMOXARIFE),
                    CDLOCALESTOQ =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXARIFE, C_PRODFILI.CDLOCALESTOQ),CDLOCALESTOQ),
                    CDALMOXINSPR =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXINSPR),CDALMOXINSPR),
                    CDLOCALINSPR =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXINSPR,C_PRODFILI.CDLOCALINSPR),CDLOCALINSPR),
                    CDALMOXPRACA =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRACA), CDALMOXPRACA),
                    CDLOCALPRACA =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRACA, C_PRODFILI.CDLOCALPRACA), CDLOCALPRACA),
                    CDALMOXPRCLI =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRCLI), CDALMOXPRCLI),
                    CDLOCALPRCLI =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRCLI, C_PRODFILI.CDLOCALPRCLI),CDLOCALPRCLI),
                    CDALMOXPRSEMACA =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRSEMACA),CDALMOXPRSEMACA),
                    CDLOCALPRSEMACA =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRSEMACA, C_PRODFILI.CDLOCALPRSEMACA), CDLOCALPRSEMACA),
                    CDALMOXQUAR =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL,  C_PRODFILI.CDALMOXQUAR),CDALMOXQUAR),
                    CDLOCALQUAR =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXQUAR,  C_PRODFILI.CDLOCALQUAR),CDLOCALQUAR),
                    IDUTPRORIGOBRIG = C_PRODFILI.IDUTPRORIGOBRIG,
                    VRMINEMPENHOAF  = C_PRODFILI.VRMINEMPENHOAF,
                    VRMINEMPENHOOL  = C_PRODFILI.VRMINEMPENHOOL
               WHERE CDFILIAL  = C_PRODFILI.CDFILIAL
                 AND CDPRODUTO = C_PRODFILI.CDPRODUTO;
            ELSE
               UPDATE PRODFILI
                  SET IDCNTRESTOQ  =  DECODE(SUBSTR(P_LISTAPARAM,3,1),'S',C_PRODFILI.IDCNTRESTOQ,IDCNTRESTOQ),
                      QTESTOQMIN   =  DECODE(SUBSTR(P_LISTAPARAM,8,1),'S',C_PRODFILI.QTESTOQMIN, QTESTOQMIN),
                      IDPRODATIV   =  DECODE(SUBSTR(P_LISTAPARAM,2,1),'S',C_PRODFILI.IDPRODATIV,IDPRODATIV),
                      NRTEMPREPEST =  DECODE(SUBSTR(P_LISTAPARAM,10,1),'S',C_PRODFILI.NRTEMPREPEST, NRTEMPREPEST),
                      NRDIASESTOQ  =  DECODE(SUBSTR(P_LISTAPARAM,5,1),'S',C_PRODFILI.NRDIASESTOQ,NRDIASESTOQ),
                      VRPTOLQTITAF =  DECODE(SUBSTR(P_LISTAPARAM,6,1),'S',C_PRODFILI.VRPTOLQTITAF,VRPTOLQTITAF),
                      VRPTOLVRITAF =  DECODE(SUBSTR(P_LISTAPARAM,7,1),'S',C_PRODFILI.VRPTOLVRITAF,VRPTOLVRITAF),
                      VRTXADMPROD  =  DECODE(SUBSTR(P_LISTAPARAM,12,1),'S',C_PRODFILI.VRTXADMPROD, VRTXADMPROD),
                      QTESTMINSAID =  DECODE(SUBSTR(P_LISTAPARAM,9,1),'S',C_PRODFILI.QTESTMINSAID, QTESTMINSAID),
                      IDUTCTRLLOTE =  DECODE(SUBSTR(P_LISTAPARAM,4,1),'S',C_PRODFILI.IDUTCTRLLOTE,IDUTCTRLLOTE),
                      CDALMOXARIFE =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                           NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXARIFE),CDALMOXARIFE), CDALMOXARIFE),
                      CDLOCALESTOQ =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                           NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXARIFE, C_PRODFILI.CDLOCALESTOQ),CDLOCALESTOQ), CDLOCALESTOQ),
                      CDALMOXINSPR =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                            NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXINSPR),CDALMOXINSPR), CDALMOXINSPR),
                      CDLOCALINSPR =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                           NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXINSPR,C_PRODFILI.CDLOCALINSPR),CDLOCALINSPR), CDLOCALINSPR),
                      CDALMOXPRACA =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                           NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRACA), CDALMOXPRACA), CDALMOXPRACA),
                      CDLOCALPRACA =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                           NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRACA, C_PRODFILI.CDLOCALPRACA), CDLOCALPRACA), CDLOCALPRACA),
                      CDALMOXPRCLI =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                           NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRCLI), CDALMOXPRCLI), CDALMOXPRCLI),
                      CDLOCALPRCLI =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                           NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRCLI, C_PRODFILI.CDLOCALPRCLI),CDLOCALPRCLI), CDLOCALPRCLI),
                      CDALMOXPRSEMACA = DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                           NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRSEMACA),CDALMOXPRSEMACA), CDALMOXPRSEMACA),
                      CDLOCALPRSEMACA = DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                           NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRSEMACA, C_PRODFILI.CDLOCALPRSEMACA), CDLOCALPRSEMACA), CDLOCALPRSEMACA),
                      CDALMOXQUAR  =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                           NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL,  C_PRODFILI.CDALMOXQUAR),CDALMOXQUAR), CDALMOXQUAR),
                      CDLOCALQUAR  =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                           NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXQUAR,  C_PRODFILI.CDLOCALQUAR),CDLOCALQUAR), CDLOCALQUAR),
                      IDUTPRORIGOBRIG = DECODE(SUBSTR(P_LISTAPARAM,13,1),'S',C_PRODFILI.IDUTPRORIGOBRIG,IDUTPRORIGOBRIG),
                      VRMINEMPENHOAF  = DECODE(SUBSTR(P_LISTAPARAM,14,1),'S',C_PRODFILI.VRMINEMPENHOAF,VRMINEMPENHOAF),
                      VRMINEMPENHOOL  = DECODE(SUBSTR(P_LISTAPARAM,15,1),'S',C_PRODFILI.VRMINEMPENHOOL,VRMINEMPENHOOL)
               WHERE CDFILIAL  = C_PRODFILI.CDFILIAL
                 AND CDPRODUTO = C_PRODFILI.CDPRODUTO;
            END IF;
         END LOOP;
      ELSE
         IF P_IDTPCONFPAR = 1 THEN
            FOR C_PRODFILIDIF IN(SELECT P.CDPRODUTO,       O.IDCNTRESTOQ,     O.QTESTOQMIN,   O.IDPRODATIV,
                                        O.NRTEMPREPEST,    O.NRDIASESTOQ,     O.VRPTOLQTITAF, O.VRPTOLVRITAF, O.VRTXADMPROD,
                                        O.QTESTMINSAID,    O.IDUTCTRLLOTE,    O.CDALMOXARIFE, O.CDLOCALESTOQ, O.CDALMOXINSPR,
                                        O.CDLOCALINSPR,    O.CDALMOXPRACA,    O.CDLOCALPRACA, O.CDALMOXPRCLI, O.CDLOCALPRCLI,
                                        O.CDALMOXPRSEMACA, O.CDLOCALPRSEMACA, O.CDALMOXQUAR,  O.CDLOCALQUAR,  O.IDUTPRORIGOBRIG,
                                        O.VRMINEMPENHOAF,  O.VRMINEMPENHOOL
                                   FROM PRODFILI O, PRODUTO P
                                  WHERE O.CDFILIAL = P_CDFILIORIG
                                    AND O.CDPRODUTO = P.CDPRODUTO
                                    AND CDARVPROD BETWEEN P_CDPRODINIC AND P_CDPRODFINA)LOOP
               BEGIN
                  SELECT CDPRODUTO
                    INTO V_PRODUTO
                    FROM PRODFILI
                   WHERE CDFILIAL = P_CDFILIDEST
                     AND CDPRODUTO = C_PRODFILIDIF.CDPRODUTO;
               EXCEPTION
                  WHEN NO_DATA_FOUND THEN
                     V_PRODUTO := NULL;
               END;
               IF (SQL%ROWCOUNT = 0) THEN
                  INSERT INTO PRODFILI
                     (CDFILIAL, CDPRODUTO, IDCNTRESTOQ, QTESTOQMIN, IDPRODATIV, NRTEMPREPEST,  NRDIASESTOQ,
                      VRPTOLQTITAF,  VRPTOLVRITAF, VRTXADMPROD, QTESTMINSAID, IDUTCTRLLOTE,
                      CDALMOXARIFE, CDLOCALESTOQ,  CDALMOXINSPR, CDLOCALINSPR, CDALMOXPRACA, CDLOCALPRACA,
                      CDALMOXPRCLI, CDLOCALPRCLI,  CDALMOXPRSEMACA, CDLOCALPRSEMACA, CDALMOXQUAR, CDLOCALQUAR, 
                      IDUTPRORIGOBRIG, VRMINEMPENHOAF,  VRMINEMPENHOOL)
                  VALUES
                     (P_CDFILIDEST, C_PRODFILIDIF.CDPRODUTO, C_PRODFILIDIF.IDCNTRESTOQ, C_PRODFILIDIF.QTESTOQMIN, C_PRODFILIDIF.IDPRODATIV,
                      C_PRODFILIDIF.NRTEMPREPEST, C_PRODFILIDIF.NRDIASESTOQ, C_PRODFILIDIF.VRPTOLQTITAF, C_PRODFILIDIF.VRPTOLVRITAF,
                      C_PRODFILIDIF.VRTXADMPROD, C_PRODFILIDIF.QTESTMINSAID, C_PRODFILIDIF.IDUTCTRLLOTE,
                      VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILIDIF.CDALMOXARIFE),
                      VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILIDIF.CDALMOXARIFE, C_PRODFILIDIF.CDLOCALESTOQ),
                      VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILIDIF.CDALMOXINSPR),
                      VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILIDIF.CDALMOXINSPR,  C_PRODFILIDIF.CDLOCALINSPR),
                      VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILIDIF.CDALMOXPRACA),
                      VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILIDIF.CDALMOXPRACA, C_PRODFILIDIF.CDLOCALPRACA),
                      VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILIDIF.CDALMOXPRCLI),
                      VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILIDIF.CDALMOXPRCLI, C_PRODFILIDIF.CDLOCALPRCLI),
                      VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILIDIF.CDALMOXPRSEMACA),
                      VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILIDIF.CDALMOXPRSEMACA, C_PRODFILIDIF.CDLOCALPRSEMACA),
                      VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILIDIF.CDALMOXQUAR),
                      VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILIDIF.CDALMOXQUAR, C_PRODFILIDIF.CDLOCALQUAR ),
                      C_PRODFILIDIF.IDUTPRORIGOBRIG, C_PRODFILIDIF.VRMINEMPENHOAF, C_PRODFILIDIF.VRMINEMPENHOOL);
               END IF;
            END LOOP;
         ELSE
            IF P_IDTPCONFPAR = 2 THEN
               FOR C_PRODFILITOD IN(SELECT P.CDPRODUTO,       O.IDCNTRESTOQ,     O.QTESTOQMIN,   O.IDPRODATIV,
                                           O.NRTEMPREPEST,    O.NRDIASESTOQ,     O.VRPTOLQTITAF, O.VRPTOLVRITAF, O.VRTXADMPROD,
                                           O.QTESTMINSAID,    O.IDUTCTRLLOTE,    O.CDALMOXARIFE, O.CDLOCALESTOQ, O.CDALMOXINSPR,
                                           O.CDLOCALINSPR,    O.CDALMOXPRACA,    O.CDLOCALPRACA, O.CDALMOXPRCLI, O.CDLOCALPRCLI,
                                           O.CDALMOXPRSEMACA, O.CDLOCALPRSEMACA, O.CDALMOXQUAR,  O.CDLOCALQUAR,  O.IDUTPRORIGOBRIG,
                                           O.VRMINEMPENHOAF,  O.VRMINEMPENHOOL
                                      FROM PRODFILI O, PRODUTO P
                                     WHERE O.CDFILIAL  = P_CDFILIORIG
                                       AND O.CDPRODUTO = P.CDPRODUTO
                                       AND CDARVPROD BETWEEN P_CDPRODINIC AND P_CDPRODFINA)LOOP
                  BEGIN
                     SELECT CDPRODUTO
                     INTO V_PRODUTO
                     FROM PRODFILI
                     WHERE CDFILIAL   = P_CDFILIDEST
                        AND CDPRODUTO = C_PRODFILITOD.CDPRODUTO;
                  EXCEPTION
                     WHEN NO_DATA_FOUND THEN
                        V_PRODUTO := NULL;
                  END;
                  IF (SQL%ROWCOUNT = 0) THEN
                     INSERT INTO PRODFILI
                        (CDFILIAL, CDPRODUTO, IDCNTRESTOQ, QTESTOQMIN, IDPRODATIV, NRTEMPREPEST,  NRDIASESTOQ, VRPTOLQTITAF, VRPTOLVRITAF,
                         VRTXADMPROD, QTESTMINSAID, IDUTCTRLLOTE, CDALMOXARIFE, CDLOCALESTOQ, CDALMOXINSPR,CDLOCALINSPR, CDALMOXPRACA,
                         CDLOCALPRACA, CDALMOXPRCLI, CDLOCALPRCLI,  CDALMOXPRSEMACA, CDLOCALPRSEMACA, CDALMOXQUAR, CDLOCALQUAR,
                         IDUTPRORIGOBRIG, VRMINEMPENHOAF, VRMINEMPENHOOL)
                     VALUES
                        (P_CDFILIDEST, C_PRODFILITOD.CDPRODUTO, C_PRODFILITOD.IDCNTRESTOQ, C_PRODFILITOD.QTESTOQMIN, C_PRODFILITOD.IDPRODATIV,
                         C_PRODFILITOD.NRTEMPREPEST, C_PRODFILITOD.NRDIASESTOQ, C_PRODFILITOD.VRPTOLQTITAF,
                         C_PRODFILITOD.VRPTOLVRITAF, C_PRODFILITOD.VRTXADMPROD, C_PRODFILITOD.QTESTMINSAID, C_PRODFILITOD.IDUTCTRLLOTE,
                         VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILITOD.CDALMOXARIFE),
                         VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILITOD.CDALMOXARIFE, C_PRODFILITOD.CDLOCALESTOQ),
                         VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILITOD.CDALMOXINSPR),
                         VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILITOD.CDALMOXINSPR,  C_PRODFILITOD.CDLOCALINSPR),
                         VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILITOD.CDALMOXPRACA),
                         VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILITOD.CDALMOXPRACA, C_PRODFILITOD.CDLOCALPRACA),
                         VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILITOD.CDALMOXPRCLI),
                         VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILITOD.CDALMOXPRCLI, C_PRODFILITOD.CDLOCALPRCLI),
                         VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILITOD.CDALMOXPRSEMACA),
                         VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILITOD.CDALMOXPRSEMACA, C_PRODFILITOD.CDLOCALPRSEMACA),
                         VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILITOD.CDALMOXQUAR),
                         VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILITOD.CDALMOXQUAR, C_PRODFILITOD.CDLOCALQUAR),
                         C_PRODFILITOD.IDUTPRORIGOBRIG, C_PRODFILITOD.VRMINEMPENHOAF, C_PRODFILITOD.VRMINEMPENHOOL);
                  ELSE
                     UPDATE PRODFILI
                     SET  IDCNTRESTOQ  =  C_PRODFILITOD.IDCNTRESTOQ,
                          QTESTOQMIN   =  C_PRODFILITOD.QTESTOQMIN ,
                          IDPRODATIV   =  C_PRODFILITOD.IDPRODATIV ,
                          NRTEMPREPEST =  C_PRODFILITOD.NRTEMPREPEST,
                          NRDIASESTOQ  =  C_PRODFILITOD.NRDIASESTOQ,
                          VRPTOLQTITAF =  C_PRODFILITOD.VRPTOLQTITAF,
                          VRPTOLVRITAF =  C_PRODFILITOD.VRPTOLVRITAF,
                          VRTXADMPROD  =  C_PRODFILITOD.VRTXADMPROD,
                          QTESTMINSAID =  C_PRODFILITOD.QTESTMINSAID,
                          IDUTCTRLLOTE =  C_PRODFILITOD.IDUTCTRLLOTE,
                          CDALMOXARIFE =  NVL(VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILITOD.CDALMOXARIFE),CDALMOXARIFE),
                          CDLOCALESTOQ =  NVL(VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILITOD.CDALMOXARIFE, C_PRODFILITOD.CDLOCALESTOQ),CDLOCALESTOQ),
                          CDALMOXINSPR =  NVL(VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILITOD.CDALMOXINSPR),CDALMOXINSPR),
                          CDLOCALINSPR =  NVL(VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILITOD.CDALMOXINSPR,C_PRODFILITOD.CDLOCALINSPR),CDLOCALINSPR),
                          CDALMOXPRACA =  NVL(VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILITOD.CDALMOXPRACA), CDALMOXPRACA),
                          CDLOCALPRACA =  NVL(VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILITOD.CDALMOXPRACA, C_PRODFILITOD.CDLOCALPRACA), CDLOCALPRACA),
                          CDALMOXPRCLI =  NVL(VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILITOD.CDALMOXPRCLI), CDALMOXPRCLI),
                          CDLOCALPRCLI =  NVL(VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILITOD.CDALMOXPRCLI, C_PRODFILITOD.CDLOCALPRCLI),CDLOCALPRCLI),
                          CDALMOXPRSEMACA =  NVL(VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILITOD.CDALMOXPRSEMACA),CDALMOXPRSEMACA),
                          CDLOCALPRSEMACA =  NVL(VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILITOD.CDALMOXPRSEMACA, C_PRODFILITOD.CDLOCALPRSEMACA), CDLOCALPRSEMACA),
                          CDALMOXQUAR =  NVL(VERIFICA_ALMOX(P_CDFILIDEST, C_PRODFILITOD.CDALMOXQUAR),CDALMOXQUAR),
                          CDLOCALQUAR =  NVL(VERIFICA_LOCAL(P_CDFILIDEST, C_PRODFILITOD.CDALMOXQUAR,  C_PRODFILITOD.CDLOCALQUAR),CDLOCALQUAR),
                          IDUTPRORIGOBRIG = C_PRODFILITOD.IDUTPRORIGOBRIG,
                          VRMINEMPENHOAF  = C_PRODFILITOD.VRMINEMPENHOAF,
                          VRMINEMPENHOOL  = C_PRODFILITOD.VRMINEMPENHOOL
                     WHERE CDFILIAL = P_CDFILIDEST
                       AND CDPRODUTO = C_PRODFILITOD.CDPRODUTO;
                  END IF;
               END LOOP;
            END IF;
         END IF;
      END IF;
   ELSE
      V_COUNT := 0;
      IF P_IDTPFILDEST = 'G' THEN
         IF P_IDTPCONFPAR = 0 THEN
            FOR C_PRODFILI IN(SELECT D.CDFILIAL, D.CDPRODUTO, O.IDCNTRESTOQ, O.QTESTOQMIN, O.IDPRODATIV, O.CDALMOXARIFE, O.CDLOCALESTOQ, O.NRTEMPREPEST,
                                     O.CDALMOXINSPR, O.CDLOCALINSPR, O.CDALMOXPRACA, O.CDLOCALPRACA, O.CDALMOXPRCLI, O.CDLOCALPRCLI,
                                     O.CDALMOXPRSEMACA, O.CDLOCALPRSEMACA, O.CDALMOXQUAR, O.CDLOCALQUAR,
                                     O.NRDIASESTOQ, O.VRPTOLQTITAF, O.VRPTOLVRITAF, O.VRTXADMPROD, O.QTESTMINSAID, O.IDUTCTRLLOTE,
                                     O.IDUTPRORIGOBRIG, O.VRMINEMPENHOAF, O.VRMINEMPENHOOL
                              FROM PRODFILI O, PRODFILI D, PRODUTO P, FILGRUPFILI A, GRUPFILI G
                              WHERE O.CDFILIAL = P_CDFILIORIG
                                AND O.CDPRODUTO = P.CDPRODUTO
                                AND CDARVPROD BETWEEN P_CDPRODINIC AND P_CDPRODFINA
                                AND G.CDGRUPFILI = P_CDFILIDEST
                                AND G.CDGRUPFILI = A.CDGRUPFILI
                                AND D.CDFILIAL = A.CDFILIAL
                                AND D.CDPRODUTO = O.CDPRODUTO) LOOP

               V_COUNT := V_COUNT + 1;

               IF SUBSTR(P_LISTAPARAM,1,1) = 'S' THEN
                  UPDATE PRODFILI
                  SET  IDCNTRESTOQ  =  C_PRODFILI.IDCNTRESTOQ,
                       QTESTOQMIN   =  C_PRODFILI.QTESTOQMIN ,
                       IDPRODATIV   =  C_PRODFILI.IDPRODATIV ,
                       NRTEMPREPEST =  C_PRODFILI.NRTEMPREPEST,
                       NRDIASESTOQ  =  C_PRODFILI.NRDIASESTOQ,
                       VRPTOLQTITAF =  C_PRODFILI.VRPTOLQTITAF,
                       VRPTOLVRITAF =  C_PRODFILI.VRPTOLVRITAF,
                       VRTXADMPROD  =  C_PRODFILI.VRTXADMPROD,
                       QTESTMINSAID =  C_PRODFILI.QTESTMINSAID,
                       IDUTCTRLLOTE =  C_PRODFILI.IDUTCTRLLOTE,
                       CDALMOXARIFE =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXARIFE),CDALMOXARIFE),
                       CDLOCALESTOQ =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXARIFE, C_PRODFILI.CDLOCALESTOQ),CDLOCALESTOQ),
                       CDALMOXINSPR =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXINSPR),CDALMOXINSPR),
                       CDLOCALINSPR =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXINSPR,C_PRODFILI.CDLOCALINSPR),CDLOCALINSPR),
                       CDALMOXPRACA =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRACA), CDALMOXPRACA),
                       CDLOCALPRACA =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRACA, C_PRODFILI.CDLOCALPRACA), CDLOCALPRACA),
                       CDALMOXPRCLI =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRCLI), CDALMOXPRCLI),
                       CDLOCALPRCLI =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRCLI, C_PRODFILI.CDLOCALPRCLI),CDLOCALPRCLI),
                       CDALMOXPRSEMACA =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRSEMACA),CDALMOXPRSEMACA),
                       CDLOCALPRSEMACA =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRSEMACA, C_PRODFILI.CDLOCALPRSEMACA), CDLOCALPRSEMACA),
                       CDALMOXQUAR =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL,  C_PRODFILI.CDALMOXQUAR),CDALMOXQUAR),
                       CDLOCALQUAR =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXQUAR,  C_PRODFILI.CDLOCALQUAR),CDLOCALQUAR),
                       IDUTPRORIGOBRIG = C_PRODFILI.IDUTPRORIGOBRIG,
                       VRMINEMPENHOAF  = C_PRODFILI.VRMINEMPENHOAF,
                       VRMINEMPENHOOL  = C_PRODFILI.VRMINEMPENHOOL 
                  WHERE CDFILIAL = C_PRODFILI.CDFILIAL
                    AND CDPRODUTO = C_PRODFILI.CDPRODUTO;
               ELSE
                  UPDATE PRODFILI
                  SET  IDPRODATIV   =  DECODE(SUBSTR(P_LISTAPARAM,2,1),'S',C_PRODFILI.IDPRODATIV,IDPRODATIV),
                       IDCNTRESTOQ  =  DECODE(SUBSTR(P_LISTAPARAM,3,1),'S',C_PRODFILI.IDCNTRESTOQ,IDCNTRESTOQ),
                       IDUTCTRLLOTE =  DECODE(SUBSTR(P_LISTAPARAM,4,1),'S',C_PRODFILI.IDUTCTRLLOTE,IDUTCTRLLOTE),
                       NRDIASESTOQ  =  DECODE(SUBSTR(P_LISTAPARAM,5,1),'S',C_PRODFILI.NRDIASESTOQ,NRDIASESTOQ),
                       VRPTOLQTITAF =  DECODE(SUBSTR(P_LISTAPARAM,6,1),'S',C_PRODFILI.VRPTOLQTITAF,VRPTOLQTITAF),
                       VRPTOLVRITAF =  DECODE(SUBSTR(P_LISTAPARAM,7,1),'S',C_PRODFILI.VRPTOLVRITAF,VRPTOLVRITAF),
                       QTESTOQMIN   =  DECODE(SUBSTR(P_LISTAPARAM,8,1),'S',C_PRODFILI.QTESTOQMIN, QTESTOQMIN) ,
                       QTESTMINSAID =  DECODE(SUBSTR(P_LISTAPARAM,9,1),'S',C_PRODFILI.QTESTMINSAID, QTESTMINSAID),
                       VRTXADMPROD  =  DECODE(SUBSTR(P_LISTAPARAM,10,1),'S',C_PRODFILI.VRTXADMPROD, VRTXADMPROD),
                       NRTEMPREPEST =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',C_PRODFILI.NRTEMPREPEST, NRTEMPREPEST),
                       CDALMOXARIFE =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                             NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXARIFE),CDALMOXARIFE), CDALMOXARIFE),
                       CDLOCALESTOQ =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                             NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXARIFE, C_PRODFILI.CDLOCALESTOQ),CDLOCALESTOQ), CDLOCALESTOQ),
                       CDALMOXINSPR =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                              NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXINSPR),CDALMOXINSPR), CDALMOXINSPR),
                       CDLOCALINSPR =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                             NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXINSPR,C_PRODFILI.CDLOCALINSPR),CDLOCALINSPR), CDLOCALINSPR),
                       CDALMOXPRACA =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                             NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRACA), CDALMOXPRACA), CDALMOXPRACA),
                       CDLOCALPRACA =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                             NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRACA, C_PRODFILI.CDLOCALPRACA), CDLOCALPRACA), CDLOCALPRACA),
                       CDALMOXPRCLI =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                             NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRCLI), CDALMOXPRCLI), CDALMOXPRCLI),
                       CDLOCALPRCLI =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                             NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRCLI, C_PRODFILI.CDLOCALPRCLI),CDLOCALPRCLI), CDLOCALPRCLI),
                       CDALMOXPRSEMACA = DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                            NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRSEMACA),CDALMOXPRSEMACA), CDALMOXPRSEMACA),
                       CDLOCALPRSEMACA = DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                            NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRSEMACA, C_PRODFILI.CDLOCALPRSEMACA), CDLOCALPRSEMACA), CDLOCALPRSEMACA),
                       CDALMOXQUAR  =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                            NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL,  C_PRODFILI.CDALMOXQUAR),CDALMOXQUAR), CDALMOXQUAR),
                       CDLOCALQUAR  =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                             NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXQUAR,  C_PRODFILI.CDLOCALQUAR),CDLOCALQUAR), CDLOCALQUAR),
                       IDUTPRORIGOBRIG = DECODE(SUBSTR(P_LISTAPARAM,13,1),'S',C_PRODFILI.IDUTPRORIGOBRIG,IDUTPRORIGOBRIG),
                       VRMINEMPENHOAF  = DECODE(SUBSTR(P_LISTAPARAM,14,1),'S',C_PRODFILI.VRMINEMPENHOAF,VRMINEMPENHOAF),
                       VRMINEMPENHOOL  = DECODE(SUBSTR(P_LISTAPARAM,15,1),'S',C_PRODFILI.VRMINEMPENHOOL,VRMINEMPENHOOL)
                  WHERE CDFILIAL = C_PRODFILI.CDFILIAL
                    AND CDPRODUTO = C_PRODFILI.CDPRODUTO;
               END IF;
               IF V_COUNT > 1000 THEN
                  V_COUNT := 0;
                  COMMIT;
               END IF;
            END LOOP;
         ELSE
            IF P_IDTPCONFPAR = 1 THEN
               V_COUNT := 0;
               FOR C_PRODFILIDIF IN(SELECT P.CDPRODUTO, O.IDCNTRESTOQ, O.QTESTOQMIN, O.IDPRODATIV, O.CDALMOXARIFE, O.CDLOCALESTOQ, O.NRTEMPREPEST,
                                        O.CDALMOXINSPR, O.CDLOCALINSPR, O.CDALMOXPRACA, O.CDLOCALPRACA, O.CDALMOXPRCLI, O.CDLOCALPRCLI,
                                        O.CDALMOXPRSEMACA, O.CDLOCALPRSEMACA, O.CDALMOXQUAR, O.CDLOCALQUAR,
                                        O.NRDIASESTOQ, O.VRPTOLQTITAF, O.VRPTOLVRITAF, O.VRTXADMPROD, O.QTESTMINSAID, O.IDUTCTRLLOTE,  O.IDUTPRORIGOBRIG,
                                        O.VRMINEMPENHOAF,  O.VRMINEMPENHOOL
                                  FROM PRODFILI O, PRODUTO P
                                 WHERE O.CDFILIAL = P_CDFILIORIG
                                   AND O.CDPRODUTO = P.CDPRODUTO
                                   AND CDARVPROD BETWEEN P_CDPRODINIC AND P_CDPRODFINA)LOOP
                  FOR C_AGRUPFILIAL IN(SELECT CDFILIAL
                                         FROM GRUPFILI G, FILGRUPFILI F
                                         WHERE G.CDGRUPFILI = P_CDFILIDEST
                                           AND G.CDGRUPFILI = F.CDGRUPFILI) LOOP
                     BEGIN
                        SELECT CDPRODUTO
                        INTO V_PRODUTO
                        FROM PRODFILI
                        WHERE CDFILIAL = C_AGRUPFILIAL.CDFILIAL
                           AND CDPRODUTO = C_PRODFILIDIF.CDPRODUTO;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                           V_PRODUTO := NULL;
                     END;
                     IF (SQL%ROWCOUNT = 0) THEN
                        V_COUNT := V_COUNT + 1 ;
                        INSERT INTO PRODFILI                        
                           (CDFILIAL, CDPRODUTO, IDCNTRESTOQ, QTESTOQMIN, IDPRODATIV, NRTEMPREPEST,NRDIASESTOQ,
                            VRPTOLQTITAF,  VRPTOLVRITAF, VRTXADMPROD, QTESTMINSAID, IDUTCTRLLOTE,
                            CDALMOXARIFE, CDLOCALESTOQ, CDALMOXINSPR, CDLOCALINSPR, CDALMOXPRACA, CDLOCALPRACA,
                            CDALMOXPRCLI, CDLOCALPRCLI,  CDALMOXPRSEMACA, CDLOCALPRSEMACA, CDALMOXQUAR, CDLOCALQUAR,
                            IDUTPRORIGOBRIG, VRMINEMPENHOAF, VRMINEMPENHOOL)
                        VALUES
                           (C_AGRUPFILIAL.CDFILIAL, C_PRODFILIDIF.CDPRODUTO, C_PRODFILIDIF.IDCNTRESTOQ, C_PRODFILIDIF.QTESTOQMIN, C_PRODFILIDIF.IDPRODATIV,
                            C_PRODFILIDIF.NRTEMPREPEST, C_PRODFILIDIF.NRDIASESTOQ, C_PRODFILIDIF.VRPTOLQTITAF,
                            C_PRODFILIDIF.VRPTOLVRITAF, C_PRODFILIDIF.VRTXADMPROD, C_PRODFILIDIF.QTESTMINSAID, C_PRODFILIDIF.IDUTCTRLLOTE,
                            VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILIDIF.CDALMOXARIFE),
                            VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILIDIF.CDALMOXARIFE, C_PRODFILIDIF.CDLOCALESTOQ),
                            VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILIDIF.CDALMOXINSPR),
                            VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILIDIF.CDALMOXINSPR, C_PRODFILIDIF.CDLOCALINSPR),
                            VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILIDIF.CDALMOXPRACA),
                            VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILIDIF.CDALMOXPRACA, C_PRODFILIDIF.CDLOCALPRACA),
                            VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILIDIF.CDALMOXPRCLI),
                            VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILIDIF.CDALMOXPRCLI, C_PRODFILIDIF.CDLOCALPRCLI),
                            VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILIDIF.CDALMOXPRSEMACA),
                            VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILIDIF.CDALMOXPRSEMACA, C_PRODFILIDIF.CDLOCALPRSEMACA),
                            VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILIDIF.CDALMOXQUAR),
                            VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILIDIF.CDALMOXQUAR, C_PRODFILIDIF.CDLOCALQUAR),
                            C_PRODFILIDIF.IDUTPRORIGOBRIG, C_PRODFILIDIF.VRMINEMPENHOAF, C_PRODFILIDIF.VRMINEMPENHOOL);
                     END IF;
                  END LOOP;
                  IF V_COUNT > 1000 THEN
                     V_COUNT := 0;
                     COMMIT;
                  END IF;
               END LOOP;
            ELSE
               IF P_IDTPCONFPAR = 2 THEN
                  V_COUNT :=  0;
                  FOR C_PRODFILITOD IN(SELECT P.CDPRODUTO, O.IDCNTRESTOQ, O.QTESTOQMIN, O.IDPRODATIV, O.CDALMOXARIFE, O.CDLOCALESTOQ, O.NRTEMPREPEST,
                                           O.CDALMOXINSPR, O.CDLOCALINSPR, O.CDALMOXPRACA, O.CDLOCALPRACA, O.CDALMOXPRCLI, O.CDLOCALPRCLI,
                                           O.CDALMOXPRSEMACA, O.CDLOCALPRSEMACA, O.CDALMOXQUAR, O.CDLOCALQUAR,
                                           O.NRDIASESTOQ, O.VRPTOLQTITAF, O.VRPTOLVRITAF, O.VRTXADMPROD, O.QTESTMINSAID, O.IDUTCTRLLOTE,
                                           O.IDUTPRORIGOBRIG, O.VRMINEMPENHOAF,  O.VRMINEMPENHOOL
                                     FROM PRODFILI O, PRODUTO P
                                    WHERE O.CDFILIAL = P_CDFILIORIG
                                      AND O.CDPRODUTO = P.CDPRODUTO
                                      AND CDARVPROD BETWEEN P_CDPRODINIC AND P_CDPRODFINA)LOOP
                     FOR C_AGRUPFILIAL IN(SELECT CDFILIAL
                                            FROM GRUPFILI G, FILGRUPFILI F
                                            WHERE G.CDGRUPFILI = P_CDFILIDEST
                                              AND G.CDGRUPFILI = F.CDGRUPFILI) LOOP
                        V_COUNT := V_COUNT + 1 ;
                        BEGIN
                           SELECT CDPRODUTO
                           INTO V_PRODUTO
                           FROM PRODFILI
                           WHERE CDFILIAL = C_AGRUPFILIAL.CDFILIAL
                              AND CDPRODUTO = C_PRODFILITOD.CDPRODUTO;
                        EXCEPTION
                           WHEN NO_DATA_FOUND THEN
                              V_PRODUTO := NULL;
                        END;
                        IF (SQL%ROWCOUNT = 0) THEN
                           INSERT INTO PRODFILI
                              (CDFILIAL, CDPRODUTO, IDCNTRESTOQ, QTESTOQMIN, IDPRODATIV, NRTEMPREPEST, NRDIASESTOQ, VRPTOLQTITAF,
                               VRPTOLVRITAF, VRTXADMPROD, QTESTMINSAID, IDUTCTRLLOTE,
                               CDALMOXARIFE, CDLOCALESTOQ, CDALMOXINSPR,  CDLOCALINSPR, CDALMOXPRACA, CDLOCALPRACA, CDALMOXPRCLI,
                               CDLOCALPRCLI,  CDALMOXPRSEMACA, CDLOCALPRSEMACA, CDALMOXQUAR, CDLOCALQUAR,
                               IDUTPRORIGOBRIG, VRMINEMPENHOAF, VRMINEMPENHOOL)
                           VALUES
                              (C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDPRODUTO, C_PRODFILITOD.IDCNTRESTOQ, C_PRODFILITOD.QTESTOQMIN,
                               C_PRODFILITOD.IDPRODATIV, C_PRODFILITOD.NRTEMPREPEST, C_PRODFILITOD.NRDIASESTOQ, C_PRODFILITOD.VRPTOLQTITAF,
                               C_PRODFILITOD.VRPTOLVRITAF, C_PRODFILITOD.VRTXADMPROD, C_PRODFILITOD.QTESTMINSAID, C_PRODFILITOD.IDUTCTRLLOTE,
                               VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXARIFE),
                               VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXARIFE, C_PRODFILITOD.CDLOCALESTOQ),
                               VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXINSPR),
                               VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXINSPR, C_PRODFILITOD.CDLOCALINSPR),
                               VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXPRACA),
                               VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXPRACA, C_PRODFILITOD.CDLOCALPRACA),
                               VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXPRCLI),
                               VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXPRCLI, C_PRODFILITOD.CDLOCALPRCLI),
                               VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXPRSEMACA),
                               VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXPRSEMACA,C_PRODFILITOD.CDLOCALPRSEMACA),
                               VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXQUAR),
                               VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXQUAR, C_PRODFILITOD.CDLOCALQUAR),
                               C_PRODFILITOD.IDUTPRORIGOBRIG, C_PRODFILITOD.VRMINEMPENHOAF, C_PRODFILITOD.VRMINEMPENHOOL);
                        ELSE
                           UPDATE PRODFILI
                           SET  IDCNTRESTOQ  =  C_PRODFILITOD.IDCNTRESTOQ,
                                QTESTOQMIN   =  C_PRODFILITOD.QTESTOQMIN ,
                                IDPRODATIV   =  C_PRODFILITOD.IDPRODATIV ,
                                NRTEMPREPEST =  C_PRODFILITOD.NRTEMPREPEST,
                                NRDIASESTOQ  =  C_PRODFILITOD.NRDIASESTOQ,
                                VRPTOLQTITAF =  C_PRODFILITOD.VRPTOLQTITAF,
                                VRPTOLVRITAF =  C_PRODFILITOD.VRPTOLVRITAF,
                                VRTXADMPROD  =  C_PRODFILITOD.VRTXADMPROD,
                                QTESTMINSAID =  C_PRODFILITOD.QTESTMINSAID,
                                IDUTCTRLLOTE =  C_PRODFILITOD.IDUTCTRLLOTE,
                                CDALMOXARIFE =  NVL(VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXARIFE),CDALMOXARIFE),
                                CDLOCALESTOQ =  NVL(VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXARIFE, C_PRODFILITOD.CDLOCALESTOQ),CDLOCALESTOQ),
                                CDALMOXINSPR =  NVL(VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXINSPR),CDALMOXINSPR),
                                CDLOCALINSPR =  NVL(VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXINSPR,C_PRODFILITOD.CDLOCALINSPR),CDLOCALINSPR),
                                CDALMOXPRACA =  NVL(VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXPRACA), CDALMOXPRACA),
                                CDLOCALPRACA =  NVL(VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXPRACA, C_PRODFILITOD.CDLOCALPRACA), CDLOCALPRACA),
                                CDALMOXPRCLI =  NVL(VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXPRCLI), CDALMOXPRCLI),
                                CDLOCALPRCLI =  NVL(VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXPRCLI, C_PRODFILITOD.CDLOCALPRCLI),CDLOCALPRCLI),
                                CDALMOXPRSEMACA =  NVL(VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXPRSEMACA),CDALMOXPRSEMACA),
                                CDLOCALPRSEMACA =  NVL(VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXPRSEMACA, C_PRODFILITOD.CDLOCALPRSEMACA), CDLOCALPRSEMACA),
                                CDALMOXQUAR =  NVL(VERIFICA_ALMOX(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXQUAR),CDALMOXQUAR),
                                CDLOCALQUAR =  NVL(VERIFICA_LOCAL(C_AGRUPFILIAL.CDFILIAL, C_PRODFILITOD.CDALMOXQUAR,  C_PRODFILITOD.CDLOCALQUAR),CDLOCALQUAR),
                                IDUTPRORIGOBRIG = C_PRODFILITOD.IDUTPRORIGOBRIG,
                                VRMINEMPENHOAF  = C_PRODFILITOD.VRMINEMPENHOAF,
                                VRMINEMPENHOOL  = C_PRODFILITOD.VRMINEMPENHOOL
                           WHERE CDFILIAL = C_AGRUPFILIAL.CDFILIAL
                             AND CDPRODUTO = C_PRODFILITOD.CDPRODUTO;
                        END IF;
                     END LOOP;
                     IF V_COUNT > 1000 THEN
                        V_COUNT := 0;
                        COMMIT;
                     END IF;
                  END LOOP;
               END IF;
            END IF;
         END IF;
      ELSE
         IF P_IDTPFILDEST = 'L' THEN
            IF P_IDTPCONFPAR = 0 THEN
               FOR C_LISTAFIL IN (SELECT CDFILIAL
                                  FROM FILIAL
                                  WHERE (INSTR(P_CDFILIDEST, '_'||CDFILIAL||'_') > 0) ) LOOP
                  V_COUNT := 0;
                  FOR C_PRODFILI IN(SELECT D.CDFILIAL, D.CDPRODUTO, O.IDCNTRESTOQ, O.QTESTOQMIN, O.IDPRODATIV, O.CDALMOXARIFE, O.CDLOCALESTOQ, O.NRTEMPREPEST,
                                           O.CDALMOXINSPR, O.CDLOCALINSPR, O.CDALMOXPRACA, O.CDLOCALPRACA, O.CDALMOXPRCLI, O.CDLOCALPRCLI,
                                           O.CDALMOXPRSEMACA, O.CDLOCALPRSEMACA, O.CDALMOXQUAR, O.CDLOCALQUAR,
                                           O.NRDIASESTOQ, O.VRPTOLQTITAF, O.VRPTOLVRITAF, O.VRTXADMPROD, O.QTESTMINSAID, O.IDUTCTRLLOTE, 
                                           O.IDUTPRORIGOBRIG, O.VRMINEMPENHOAF, O.VRMINEMPENHOOL
                                    FROM PRODFILI O, PRODFILI D, PRODUTO P
                                    WHERE O.CDFILIAL = P_CDFILIORIG
                                      AND O.CDPRODUTO = P.CDPRODUTO
                                      AND CDARVPROD BETWEEN P_CDPRODINIC AND P_CDPRODFINA
                                      AND D.CDFILIAL = C_LISTAFIL.CDFILIAL
                                      AND D.CDPRODUTO = O.CDPRODUTO) LOOP
                     V_COUNT := V_COUNT + 1;                                      
                     IF SUBSTR(P_LISTAPARAM,1,1) = 'S' THEN
                        UPDATE PRODFILI
                        SET  IDCNTRESTOQ  =  C_PRODFILI.IDCNTRESTOQ,
                             QTESTOQMIN   =  C_PRODFILI.QTESTOQMIN ,
                             IDPRODATIV   =  C_PRODFILI.IDPRODATIV ,
                             NRTEMPREPEST =  C_PRODFILI.NRTEMPREPEST,
                             NRDIASESTOQ  =  C_PRODFILI.NRDIASESTOQ,
                             VRPTOLQTITAF =  C_PRODFILI.VRPTOLQTITAF,
                             VRPTOLVRITAF =  C_PRODFILI.VRPTOLVRITAF,
                             VRTXADMPROD  =  C_PRODFILI.VRTXADMPROD,
                             QTESTMINSAID =  C_PRODFILI.QTESTMINSAID,
                             IDUTCTRLLOTE =  C_PRODFILI.IDUTCTRLLOTE,
                             CDALMOXARIFE =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXARIFE),CDALMOXARIFE),
                             CDLOCALESTOQ =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXARIFE, C_PRODFILI.CDLOCALESTOQ),CDLOCALESTOQ),
                             CDALMOXINSPR =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXINSPR),CDALMOXINSPR),
                             CDLOCALINSPR =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXINSPR,C_PRODFILI.CDLOCALINSPR),CDLOCALINSPR),
                             CDALMOXPRACA =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRACA), CDALMOXPRACA),
                             CDLOCALPRACA =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRACA, C_PRODFILI.CDLOCALPRACA), CDLOCALPRACA),
                             CDALMOXPRCLI =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRCLI), CDALMOXPRCLI),
                             CDLOCALPRCLI =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRCLI, C_PRODFILI.CDLOCALPRCLI),CDLOCALPRCLI),
                             CDALMOXPRSEMACA =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRSEMACA),CDALMOXPRSEMACA),
                             CDLOCALPRSEMACA =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRSEMACA, C_PRODFILI.CDLOCALPRSEMACA), CDLOCALPRSEMACA),
                             CDALMOXQUAR =  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL,  C_PRODFILI.CDALMOXQUAR),CDALMOXQUAR),
                             CDLOCALQUAR =  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXQUAR,  C_PRODFILI.CDLOCALQUAR),CDLOCALQUAR),
                             IDUTPRORIGOBRIG = C_PRODFILI.IDUTPRORIGOBRIG,
                             VRMINEMPENHOAF  = C_PRODFILI.VRMINEMPENHOAF, 
                             VRMINEMPENHOOL  = C_PRODFILI.VRMINEMPENHOOL
                        WHERE CDFILIAL = C_PRODFILI.CDFILIAL
                          AND CDPRODUTO = C_PRODFILI.CDPRODUTO;
                     ELSE
                        UPDATE PRODFILI
                        SET  IDPRODATIV   =  DECODE(SUBSTR(P_LISTAPARAM,2,1),'S',C_PRODFILI.IDPRODATIV,IDPRODATIV),
                             IDCNTRESTOQ  =  DECODE(SUBSTR(P_LISTAPARAM,3,1),'S',C_PRODFILI.IDCNTRESTOQ,IDCNTRESTOQ),
                             IDUTCTRLLOTE =  DECODE(SUBSTR(P_LISTAPARAM,4,1),'S',C_PRODFILI.IDUTCTRLLOTE,IDUTCTRLLOTE),
                             NRDIASESTOQ  =  DECODE(SUBSTR(P_LISTAPARAM,5,1),'S',C_PRODFILI.NRDIASESTOQ,NRDIASESTOQ),
                             VRPTOLQTITAF =  DECODE(SUBSTR(P_LISTAPARAM,6,1),'S',C_PRODFILI.VRPTOLQTITAF,VRPTOLQTITAF),
                             VRPTOLVRITAF =  DECODE(SUBSTR(P_LISTAPARAM,7,1),'S',C_PRODFILI.VRPTOLVRITAF,VRPTOLVRITAF),
                             QTESTOQMIN   =  DECODE(SUBSTR(P_LISTAPARAM,8,1),'S',C_PRODFILI.QTESTOQMIN, QTESTOQMIN) ,
                             QTESTMINSAID =  DECODE(SUBSTR(P_LISTAPARAM,9,1),'S',C_PRODFILI.QTESTMINSAID, QTESTMINSAID),
                             VRTXADMPROD  =  DECODE(SUBSTR(P_LISTAPARAM,10,1),'S',C_PRODFILI.VRTXADMPROD, VRTXADMPROD),
                             NRTEMPREPEST =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',C_PRODFILI.NRTEMPREPEST, NRTEMPREPEST),
                             CDALMOXARIFE =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                                   NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXARIFE),CDALMOXARIFE), CDALMOXARIFE),
                             CDLOCALESTOQ =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                                   NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXARIFE, C_PRODFILI.CDLOCALESTOQ),CDLOCALESTOQ), CDLOCALESTOQ),
                             CDALMOXINSPR =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                                    NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXINSPR),CDALMOXINSPR), CDALMOXINSPR),
                             CDLOCALINSPR =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                                   NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXINSPR,C_PRODFILI.CDLOCALINSPR),CDLOCALINSPR), CDLOCALINSPR),
                             CDALMOXPRACA =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                                   NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRACA), CDALMOXPRACA), CDALMOXPRACA),
                             CDLOCALPRACA =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                                   NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRACA, C_PRODFILI.CDLOCALPRACA), CDLOCALPRACA), CDLOCALPRACA),
                             CDALMOXPRCLI =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                                   NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRCLI), CDALMOXPRCLI), CDALMOXPRCLI),
                             CDLOCALPRCLI =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                                   NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRCLI, C_PRODFILI.CDLOCALPRCLI),CDLOCALPRCLI), CDLOCALPRCLI),
                             CDALMOXPRSEMACA =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                                  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRSEMACA),CDALMOXPRSEMACA), CDALMOXPRSEMACA),
                             CDLOCALPRSEMACA =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                                  NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXPRSEMACA, C_PRODFILI.CDLOCALPRSEMACA), CDLOCALPRSEMACA), CDLOCALPRSEMACA),
                             CDALMOXQUAR  =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                                  NVL(VERIFICA_ALMOX(C_PRODFILI.CDFILIAL,  C_PRODFILI.CDALMOXQUAR),CDALMOXQUAR), CDALMOXQUAR),
                             CDLOCALQUAR  =  DECODE(SUBSTR(P_LISTAPARAM,11,1),'S',
                                                   NVL(VERIFICA_LOCAL(C_PRODFILI.CDFILIAL, C_PRODFILI.CDALMOXQUAR,  C_PRODFILI.CDLOCALQUAR),CDLOCALQUAR), CDLOCALQUAR),
                             IDUTPRORIGOBRIG = DECODE(SUBSTR(P_LISTAPARAM,13,1),'S',C_PRODFILI.IDUTPRORIGOBRIG,IDUTPRORIGOBRIG),
                             VRMINEMPENHOAF  = DECODE(SUBSTR(P_LISTAPARAM,14,1),'S',C_PRODFILI.VRMINEMPENHOAF,VRMINEMPENHOAF),
                             VRMINEMPENHOOL  = DECODE(SUBSTR(P_LISTAPARAM,15,1),'S',C_PRODFILI.VRMINEMPENHOOL,VRMINEMPENHOOL)                                                   
                        WHERE CDFILIAL = C_PRODFILI.CDFILIAL
                          AND CDPRODUTO = C_PRODFILI.CDPRODUTO;
                     END IF;
                     IF V_COUNT > 1000 THEN
                        V_COUNT := 0;
                        COMMIT;
                     END IF;
                  END LOOP;
               END LOOP;
            ELSE
               IF P_IDTPCONFPAR = 1 THEN
                  V_COUNT := 0;
                  FOR C_PRODFILIDIF IN(SELECT P.CDPRODUTO, O.IDCNTRESTOQ, O.QTESTOQMIN, O.IDPRODATIV, O.CDALMOXARIFE, O.CDLOCALESTOQ, O.NRTEMPREPEST,
                                           O.CDALMOXINSPR, O.CDLOCALINSPR, O.CDALMOXPRACA, O.CDLOCALPRACA, O.CDALMOXPRCLI, O.CDLOCALPRCLI,
                                           O.CDALMOXPRSEMACA, O.CDLOCALPRSEMACA, O.CDALMOXQUAR, O.CDLOCALQUAR,
                                           O.NRDIASESTOQ, O.VRPTOLQTITAF, O.VRPTOLVRITAF, O.VRTXADMPROD, O.QTESTMINSAID, O.IDUTCTRLLOTE,
                                           O.IDUTPRORIGOBRIG, O.VRMINEMPENHOAF, O.VRMINEMPENHOOL
                                     FROM PRODFILI O, PRODUTO P
                                    WHERE O.CDFILIAL = P_CDFILIORIG
                                      AND O.CDPRODUTO = P.CDPRODUTO
                                      AND CDARVPROD BETWEEN P_CDPRODINIC AND P_CDPRODFINA)LOOP

                     FOR C_LISTAFIL IN (SELECT CDFILIAL
                                  FROM FILIAL
                                  WHERE (INSTR(P_CDFILIDEST, '_'||CDFILIAL||'_') > 0) ) LOOP

                        BEGIN
                           SELECT CDPRODUTO
                           INTO V_PRODUTO
                           FROM PRODFILI
                           WHERE CDFILIAL = C_LISTAFIL.CDFILIAL
                              AND CDPRODUTO = C_PRODFILIDIF.CDPRODUTO;
                        EXCEPTION
                           WHEN NO_DATA_FOUND THEN
                              V_PRODUTO := NULL;
                        END;
                        V_COUNT := V_COUNT + 1;
                        IF (SQL%ROWCOUNT = 0) THEN
                           INSERT INTO PRODFILI
                              (CDFILIAL, CDPRODUTO, IDCNTRESTOQ, QTESTOQMIN, IDPRODATIV, NRTEMPREPEST, NRDIASESTOQ,
                               VRPTOLQTITAF,  VRPTOLVRITAF, VRTXADMPROD, QTESTMINSAID, IDUTCTRLLOTE,
                               CDALMOXARIFE, CDLOCALESTOQ, CDALMOXINSPR, CDLOCALINSPR, CDALMOXPRACA, CDLOCALPRACA,
                               CDALMOXPRCLI, CDLOCALPRCLI,  CDALMOXPRSEMACA, CDLOCALPRSEMACA, CDALMOXQUAR, CDLOCALQUAR,
                               IDUTPRORIGOBRIG, VRMINEMPENHOAF, VRMINEMPENHOOL)
                           VALUES
                              (C_LISTAFIL.CDFILIAL, C_PRODFILIDIF.CDPRODUTO, C_PRODFILIDIF.IDCNTRESTOQ, C_PRODFILIDIF.QTESTOQMIN, C_PRODFILIDIF.IDPRODATIV,
                               C_PRODFILIDIF.NRTEMPREPEST, C_PRODFILIDIF.NRDIASESTOQ, C_PRODFILIDIF.VRPTOLQTITAF,
                               C_PRODFILIDIF.VRPTOLVRITAF, C_PRODFILIDIF.VRTXADMPROD, C_PRODFILIDIF.QTESTMINSAID, C_PRODFILIDIF.IDUTCTRLLOTE,
                               VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL, C_PRODFILIDIF.CDALMOXARIFE),
                               VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILIDIF.CDALMOXARIFE, C_PRODFILIDIF.CDLOCALESTOQ),
                               VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL,C_PRODFILIDIF.CDALMOXINSPR),
                               VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILIDIF.CDALMOXINSPR, C_PRODFILIDIF.CDLOCALINSPR),
                               VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL,C_PRODFILIDIF.CDALMOXPRACA),
                               VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILIDIF.CDALMOXPRACA, C_PRODFILIDIF.CDLOCALPRACA),
                               VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL,C_PRODFILIDIF.CDALMOXPRCLI),
                               VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILIDIF.CDALMOXPRCLI, C_PRODFILIDIF.CDLOCALPRCLI),
                               VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL,C_PRODFILIDIF.CDALMOXPRSEMACA),
                               VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILIDIF.CDALMOXPRSEMACA, C_PRODFILIDIF.CDLOCALPRSEMACA),
                               VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL,C_PRODFILIDIF.CDALMOXQUAR),
                               VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILIDIF.CDALMOXQUAR, C_PRODFILIDIF.CDLOCALQUAR),
                               C_PRODFILIDIF.IDUTPRORIGOBRIG, C_PRODFILIDIF.VRMINEMPENHOAF, C_PRODFILIDIF.VRMINEMPENHOOL);
                        END IF;
                        IF V_COUNT > 1000 THEN
                           V_COUNT := 0;
                           COMMIT;
                        END IF;
                     END LOOP;
                  END LOOP;
               ELSE
                  IF P_IDTPCONFPAR = 2 THEN
                     V_COUNT := 0;
                     FOR C_PRODFILITOD IN(SELECT P.CDPRODUTO, O.IDCNTRESTOQ, O.QTESTOQMIN, O.IDPRODATIV, O.CDALMOXARIFE, O.CDLOCALESTOQ, O.NRTEMPREPEST,
                                              O.CDALMOXINSPR, O.CDLOCALINSPR, O.CDALMOXPRACA, O.CDLOCALPRACA, O.CDALMOXPRCLI, O.CDLOCALPRCLI,
                                              O.CDALMOXPRSEMACA, O.CDLOCALPRSEMACA, O.CDALMOXQUAR, O.CDLOCALQUAR,
                                              O.NRDIASESTOQ, O.VRPTOLQTITAF, O.VRPTOLVRITAF, O.VRTXADMPROD, O.QTESTMINSAID, O.IDUTCTRLLOTE,
                                              O.IDUTPRORIGOBRIG, O.VRMINEMPENHOAF, O.VRMINEMPENHOOL
                                        FROM PRODFILI O, PRODUTO P
                                       WHERE O.CDFILIAL = P_CDFILIORIG
                                         AND O.CDPRODUTO = P.CDPRODUTO
                                         AND CDARVPROD BETWEEN P_CDPRODINIC AND P_CDPRODFINA)LOOP
                     FOR C_LISTAFIL IN (SELECT CDFILIAL
                                  FROM FILIAL
                                  WHERE (INSTR(P_CDFILIDEST, '_'||CDFILIAL||'_') > 0) ) LOOP
                           BEGIN
                              SELECT CDPRODUTO
                              INTO V_PRODUTO
                              FROM PRODFILI
                              WHERE CDFILIAL = C_LISTAFIL.CDFILIAL
                                 AND CDPRODUTO = C_PRODFILITOD.CDPRODUTO;
                           EXCEPTION
                              WHEN NO_DATA_FOUND THEN
                                 V_PRODUTO := NULL;
                           END;
                           V_COUNT := V_COUNT + 1;
                           IF (SQL%ROWCOUNT = 0) THEN
                              INSERT INTO PRODFILI
                                 (CDFILIAL, CDPRODUTO, IDCNTRESTOQ, QTESTOQMIN, IDPRODATIV, NRTEMPREPEST, NRDIASESTOQ, VRPTOLQTITAF,
                                  VRPTOLVRITAF, VRTXADMPROD, QTESTMINSAID, IDUTCTRLLOTE,
                                  CDALMOXARIFE, CDLOCALESTOQ, CDALMOXINSPR,  CDLOCALINSPR, CDALMOXPRACA, CDLOCALPRACA, CDALMOXPRCLI,
                                  CDLOCALPRCLI,  CDALMOXPRSEMACA, CDLOCALPRSEMACA, CDALMOXQUAR, CDLOCALQUAR, 
                                  IDUTPRORIGOBRIG, VRMINEMPENHOAF, VRMINEMPENHOOL)
                              VALUES
                                 (C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDPRODUTO, C_PRODFILITOD.IDCNTRESTOQ, C_PRODFILITOD.QTESTOQMIN, C_PRODFILITOD.IDPRODATIV,
                                  C_PRODFILITOD.NRTEMPREPEST, C_PRODFILITOD.NRDIASESTOQ, C_PRODFILITOD.VRPTOLQTITAF,
                                  C_PRODFILITOD.VRPTOLVRITAF, C_PRODFILITOD.VRTXADMPROD, C_PRODFILITOD.QTESTMINSAID, C_PRODFILITOD.IDUTCTRLLOTE,
                                  VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXARIFE),
                                  VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXARIFE, C_PRODFILITOD.CDLOCALESTOQ),
                                  VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXINSPR),
                                  VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXINSPR, C_PRODFILITOD.CDLOCALINSPR),
                                  VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXPRACA),
                                  VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXPRACA, C_PRODFILITOD.CDLOCALPRACA),
                                  VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXPRCLI),
                                  VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXPRCLI, C_PRODFILITOD.CDLOCALPRCLI),
                                  VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXPRSEMACA),
                                  VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXPRSEMACA, C_PRODFILITOD.CDLOCALPRSEMACA),
                                  VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXQUAR),
                                  VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXQUAR, C_PRODFILITOD.CDLOCALQUAR),
                                  C_PRODFILITOD.IDUTPRORIGOBRIG, C_PRODFILITOD.VRMINEMPENHOAF, C_PRODFILITOD.VRMINEMPENHOOL);
                           ELSE
                              UPDATE PRODFILI
                              SET  IDCNTRESTOQ  =  C_PRODFILITOD.IDCNTRESTOQ,
                                   QTESTOQMIN   =  C_PRODFILITOD.QTESTOQMIN ,
                                   IDPRODATIV   =  C_PRODFILITOD.IDPRODATIV ,
                                   NRTEMPREPEST =  C_PRODFILITOD.NRTEMPREPEST,
                                   NRDIASESTOQ  =  C_PRODFILITOD.NRDIASESTOQ,
                                   VRPTOLQTITAF =  C_PRODFILITOD.VRPTOLQTITAF,
                                   VRPTOLVRITAF =  C_PRODFILITOD.VRPTOLVRITAF,
                                   VRTXADMPROD  =  C_PRODFILITOD.VRTXADMPROD,
                                   QTESTMINSAID =  C_PRODFILITOD.QTESTMINSAID,
                                   IDUTCTRLLOTE =  C_PRODFILITOD.IDUTCTRLLOTE,
                                   CDALMOXARIFE =  NVL(VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXARIFE),CDALMOXARIFE),
                                   CDLOCALESTOQ =  NVL(VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXARIFE, C_PRODFILITOD.CDLOCALESTOQ),CDLOCALESTOQ),
                                   CDALMOXINSPR =  NVL(VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXINSPR),CDALMOXINSPR),
                                   CDLOCALINSPR =  NVL(VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXINSPR,C_PRODFILITOD.CDLOCALINSPR),CDLOCALINSPR),
                                   CDALMOXPRACA =  NVL(VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXPRACA), CDALMOXPRACA),
                                   CDLOCALPRACA =  NVL(VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXPRACA, C_PRODFILITOD.CDLOCALPRACA), CDLOCALPRACA),
                                   CDALMOXPRCLI =  NVL(VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXPRCLI), CDALMOXPRCLI),
                                   CDLOCALPRCLI =  NVL(VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXPRCLI, C_PRODFILITOD.CDLOCALPRCLI),CDLOCALPRCLI),
                                   CDALMOXPRSEMACA =  NVL(VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXPRSEMACA),CDALMOXPRSEMACA),
                                   CDLOCALPRSEMACA =  NVL(VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXPRSEMACA, C_PRODFILITOD.CDLOCALPRSEMACA), CDLOCALPRSEMACA),
                                   CDALMOXQUAR =  NVL(VERIFICA_ALMOX(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXQUAR),CDALMOXQUAR),
                                   CDLOCALQUAR =  NVL(VERIFICA_LOCAL(C_LISTAFIL.CDFILIAL, C_PRODFILITOD.CDALMOXQUAR,  C_PRODFILITOD.CDLOCALQUAR),CDLOCALQUAR),
                                   IDUTPRORIGOBRIG = C_PRODFILITOD.IDUTPRORIGOBRIG, 
                                   VRMINEMPENHOAF  = C_PRODFILITOD.VRMINEMPENHOAF, 
                                   VRMINEMPENHOOL  = C_PRODFILITOD.VRMINEMPENHOOL
                              WHERE CDFILIAL = C_LISTAFIL.CDFILIAL
                                AND CDPRODUTO = C_PRODFILITOD.CDPRODUTO;
                           END IF;
                           IF V_COUNT > 1000 THEN
                              V_COUNT := 0;
                              COMMIT;
                           END IF;
                        END LOOP;
                     END LOOP;
                  END IF;
               END IF;
            END IF;
         END IF;
      END IF;
   END IF;
END;
/
-- VERSAO --
BEGIN ATUVEROBJ('REPLICA_PRODUTO_FILIAL','5.80.000'); END;
/
  


