CREATE OR REPLACE PROCEDURE INTEGRA_RECEITA_CENTRALIZADA
   (P_CDFILIORIG  IN VARCHAR2,
    P_CDFILIDEST  IN VARCHAR2,
    P_NRLISTA     IN VARCHAR2,
    P_IDTIPORECE  IN VARCHAR2,
    P_NRLOGINTCENT OUT LOGINTRECCENT.NRLOGINTCENT%TYPE)
IS
   V_IDRECEFILI VARCHAR2(1);
   V_IDRECESERV VARCHAR2(1);
   V_SERVORIGDEST VARCHAR2(2000);
   V_NRLOGINTCENT VARCHAR2(10);

   V_IDOPERACAOP VARCHAR2(1);
   V_FILAUXDEST  VARCHAR2(4);
   V_IDOPERACAOR VARCHAR2(1);
   V_PRODUTO VARCHAR2(10);
   V_CONTPRAT NUMBER;
   V_CONTRECEF NUMBER;
   V_CONTRS NUMBER;
   V_CONTRF NUMBER;
   V_PRATOS NUMBER;
   V_EXISTS NUMBER;
   V_ERROS NUMBER;
   V_PRATNMDUPL NUMBER;
   V_CONTRECES NUMBER;
   V_NMPRATODEST VARCHAR(40);
   V_CDPRATO PRATO.CDPRATO%TYPE;
   V_CDFILAUX PRATO.CDFILAUXPRAT%TYPE;
BEGIN
   /* FORMATO P_IDTIPORECE = 'FS' ou 'XX' */
   V_IDRECEFILI := SUBSTR(P_IDTIPORECE,1,1);
   V_IDRECESERV := SUBSTR(P_IDTIPORECE,2,1);
   V_NRLOGINTCENT := '';
   V_ERROS := 0;

   SELECT DECODE(MAX(NRLOGINTCENT),
         NULL, LPAD('1', 10, '0'),
             0, LPAD('1', 10, '0'),
                LPAD((MAX(NRLOGINTCENT)+1), 10, '0'))
   INTO V_NRLOGINTCENT
   FROM LOGINTRECCENT;

   SELECT CDPRODUTO INTO V_PRODUTO
   FROM PRODUTO
   WHERE ROWNUM = 1;

   FOR C_PRATOSORIG IN
      (SELECT
          P.CDPRATO,
          P.CDFILAUXPRAT,
          P.NMPRATO,
          P.CDNVPRATO,
          P.SGUNIDADE,
          P.VRARREDTRANS,
          P.CDSEGMER,
          P.CDEXPRATO
       FROM
          PRATO P,
          LISTA_PRATO L
       WHERE
          L.NRLISTA = P_NRLISTA AND
          P.CDFILAUXPRAT = L.CDFILAUXPRAT AND
          P.CDPRATO = L.CDPRATO
       ORDER BY
          P.CDPRATO,
          P.CDFILAUXPRAT)
   LOOP
      /* 'I' - IGNORAR  */
      /* 'S' - SOBREPOR */
      V_IDOPERACAOP := 'S';

      V_CONTRS := 0;
      V_CONTRF := 0;
      V_EXISTS := 0;
      V_PRATOS := 0;
      V_PRATNMDUPL := 0;

      IF (C_PRATOSORIG.CDFILAUXPRAT <> 'P') THEN
         SELECT COUNT(1)
           INTO V_PRATNMDUPL FROM(
         SELECT D.NMPRATO, O.NMPRATO
           FROM PRATO O, PRATO D
          WHERE O.CDPRATO = C_PRATOSORIG.CDPRATO
            AND O.CDPRATO = D.CDPRATO
            AND (TRIM(UPPER(O.NMPRATO)) <> TRIM(UPPER(D.NMPRATO)))
            AND D.CDFILAUXPRAT = P_CDFILIDEST
            AND O.CDFILAUXPRAT = P_CDFILIORIG);

         V_FILAUXDEST := P_CDFILIDEST;
      ELSE
         V_FILAUXDEST := 'P';
      END IF;
      FOR C_PRATERRO IN(
           SELECT 'L' AS RECEITA, PR.CDPRODUTO, PF.IDCNTRESTOQ, PF.IDPRODATIV,
                  PR.IDPRODATIVPR, PL.IDCTRLESTQ
             FROM PRATO PO, RECEFILI RF, PRODUTO PR, PARAMFILIAL PL, PRODFILI PF
            WHERE PO.CDPRATO = RF.CDPRATO
              AND PO.CDFILAUXPRAT = RF.CDFILAUXPRAT
              AND RF.CDPRODUTO = PR.CDPRODUTO
              AND PO.CDPRATO = C_PRATOSORIG.CDPRATO
              AND PO.CDFILAUXPRAT = C_PRATOSORIG.CDFILAUXPRAT
              AND RF.CDFILIAL = P_CDFILIORIG
              AND PR.CDPRODUTO = PF.CDPRODUTO(+)
              AND P_CDFILIDEST = PF.CDFILIAL(+)
              AND P_CDFILIDEST = PL.CDFILIAL(+)
              AND (V_IDRECEFILI = 'F')
              AND ((NVL(PF.IDPRODATIV, 'A') = 'I') OR (NVL(PR.IDPRODATIVPR, 'S') = 'N') OR
                  (NVL(PF.IDCNTRESTOQ, 'S') = 'N') OR (NVL(PL.IDCTRLESTQ, 'S') = 'N'))
            UNION ALL
           SELECT DISTINCT *
             FROM (SELECT 'S' AS RECEITA, PR2.CDPRODUTO, PF2.IDCNTRESTOQ, PF2.IDPRODATIV,
                          PR2.IDPRODATIVPR, PL2.IDCTRLESTQ
                    FROM PRATO PO2, RECESERV RS2, PRODUTO PR2, PARAMFILIAL PL2, PRODFILI PF2,
			    (SELECT O.CDSERVFILI, O.NMSERVICO
                	     FROM SERVICO O, SERVICO D
                	    WHERE (O.CDFILIAL = P_CDFILIORIG) AND
                	          (D.CDFILIAL = P_CDFILIDEST) AND
        	                  (O.CDSERVFILI = D.CDSERVFILI) AND
	                          (UPPER(RTRIM(LTRIM(O.NMSERVICO))) = UPPER(RTRIM(LTRIM(D.NMSERVICO)))) AND
                	            EXISTS(SELECT CDPRATO
        	                             FROM RECESERV
	                                    WHERE CDPRATO = C_PRATOSORIG.CDPRATO AND
                	                          CDFILAUXPRAT = C_PRATOSORIG.CDFILAUXPRAT AND
        	                                  CDFILIAL = P_CDFILIORIG AND
	                                          CDSERVFILI = O.CDSERVFILI)) SERV
                   WHERE PO2.CDPRATO = RS2.CDPRATO
                     AND PO2.CDFILAUXPRAT = RS2.CDFILAUXPRAT
                     AND RS2.CDPRODUTO = PR2.CDPRODUTO
                     AND PO2.CDPRATO = C_PRATOSORIG.CDPRATO
                     AND PO2.CDFILAUXPRAT = C_PRATOSORIG.CDFILAUXPRAT
                     AND RS2.CDFILIAL = P_CDFILIORIG
                     AND PR2.CDPRODUTO = PF2.CDPRODUTO(+)
                     AND P_CDFILIDEST = PF2.CDFILIAL(+)
                     AND P_CDFILIDEST = PL2.CDFILIAL(+)
                     AND RS2.CDSERVFILI = SERV.CDSERVFILI
                     AND (V_IDRECESERV = 'S')
                     AND ((NVL(PF2.IDPRODATIV, 'A') = 'I') OR (NVL(PR2.IDPRODATIVPR, 'S') = 'N') OR
                         (NVL(PF2.IDCNTRESTOQ, 'S') = 'N') OR (NVL(PL2.IDCTRLESTQ, 'S') = 'N')))
      )
      LOOP

         IF (V_IDRECEFILI = 'F') THEN
            IF (C_PRATERRO.RECEITA = 'L') THEN
               V_CONTRF := (V_CONTRF+1);
            END IF;
         END IF;
         IF (V_IDRECESERV = 'S') THEN
      	   IF (C_PRATERRO.RECEITA = 'S') THEN
               V_CONTRS := (V_CONTRS+1);
            END IF;
         END IF;

         IF ((C_PRATERRO.IDPRODATIV = 'I') OR (C_PRATERRO.IDPRODATIVPR = 'N')) THEN
            V_EXISTS := V_EXISTS + 1;

            INSERT INTO LOGINTRECCENT
                (NRLOGINTCENT,
                 CDFILDESTLOG,
                 CDPRATOLOG,
                 CDFAPRAORIGLOG,
                 CDFAPRADESTL,
                 CDFILORIGLOGREC,
                 CDPRODUTO,
                 IDTIPORECELOG,
                 IDNUMEROERRO)
             VALUES
               (V_NRLOGINTCENT,
                P_CDFILIDEST,
                C_PRATOSORIG.CDPRATO,
                C_PRATOSORIG.CDFILAUXPRAT,
                V_FILAUXDEST,
                P_CDFILIORIG,
                C_PRATERRO.CDPRODUTO,
                C_PRATERRO.RECEITA,
                '0');

         END IF;
         IF ((C_PRATERRO.IDCNTRESTOQ = 'N') OR (C_PRATERRO.IDCTRLESTQ = 'N')) THEN
             V_EXISTS := V_EXISTS + 1;

             INSERT INTO LOGINTRECCENT
                (NRLOGINTCENT,
                 CDFILDESTLOG,
                 CDPRATOLOG,
                 CDFAPRAORIGLOG,
                 CDFAPRADESTL,
                 CDFILORIGLOGREC,
                 CDPRODUTO,
                 IDTIPORECELOG,
                 IDNUMEROERRO)
             VALUES
               (V_NRLOGINTCENT,
                P_CDFILIDEST,
                C_PRATOSORIG.CDPRATO,
                C_PRATOSORIG.CDFILAUXPRAT,
                V_FILAUXDEST,
                P_CDFILIORIG,
                C_PRATERRO.CDPRODUTO,
                C_PRATERRO.RECEITA,
                '1');

         END IF;
      END LOOP;

      IF (V_PRATNMDUPL > 0) THEN
          V_EXISTS := V_EXISTS + 1;
          V_PRATOS := V_PRATOS + 1;

          INSERT INTO LOGINTRECCENT
             (NRLOGINTCENT,
              CDFILDESTLOG,
              CDPRATOLOG,
              CDFAPRAORIGLOG,
              CDFAPRADESTL,
              CDFILORIGLOGREC,
              CDPRODUTO,
              IDTIPORECELOG,
              IDNUMEROERRO)
          VALUES
            (V_NRLOGINTCENT,
             P_CDFILIDEST,
             C_PRATOSORIG.CDPRATO,
             C_PRATOSORIG.CDFILAUXPRAT,
             V_FILAUXDEST,
             P_CDFILIORIG,
             V_PRODUTO,
             'N',
             '2');
      END IF;

      V_ERROS := V_ERROS + V_EXISTS;

      IF (((V_CONTRF = 0) OR (V_CONTRS = 0)) AND (V_PRATOS = 0)) THEN

         /* PRATOS */
         IF (C_PRATOSORIG.CDFILAUXPRAT <> 'P') THEN
            V_CONTPRAT := 0;
            SELECT COUNT(*), MAX(NMPRATO)
            INTO V_CONTPRAT, V_NMPRATODEST
            FROM PRATO
            WHERE
               CDPRATO = C_PRATOSORIG.CDPRATO AND
               CDFILAUXPRAT = P_CDFILIDEST;

            IF (V_CONTPRAT = 0) THEN
               V_IDOPERACAOP := 'S';
               INSERT INTO PRATO
               (CDFILAUXPRAT,
                CDPRATO,
                CDFILIAL,
                NMPRATO,
                CDNVPRATO,
                SGUNIDADE,
                VRARREDTRANS,
                CDSEGMER,
                CDEXPRATO)
               VALUES
               (P_CDFILIDEST,
                C_PRATOSORIG.CDPRATO,
                P_CDFILIDEST,
                C_PRATOSORIG.NMPRATO,
                C_PRATOSORIG.CDNVPRATO,
                C_PRATOSORIG.SGUNIDADE,
                C_PRATOSORIG.VRARREDTRANS,
                C_PRATOSORIG.CDSEGMER,
                C_PRATOSORIG.CDEXPRATO);
            ELSE
               IF (TRIM(UPPER(C_PRATOSORIG.NMPRATO)) = TRIM(UPPER(V_NMPRATODEST))) THEN
                  V_IDOPERACAOP := 'S';
               ELSE
                  V_IDOPERACAOP := 'I';
               END IF;
            END IF;
         END IF;

         V_CDFILAUX := C_PRATOSORIG.CDFILAUXPRAT;
         IF (V_CDFILAUX <> 'P') THEN
            V_CDFILAUX := P_CDFILIDEST;
         END IF;

         /* RECEITAS */
         IF (V_IDOPERACAOP = 'S') THEN
            IF ((V_IDRECEFILI = 'F') AND (V_CONTRF = 0))  THEN
               V_CONTRECEF := 0;
               SELECT COUNT(1)
               INTO V_CONTRECEF
               FROM RECEFILI
               WHERE
                  CDPRATO = C_PRATOSORIG.CDPRATO AND
                  CDFILAUXPRAT = C_PRATOSORIG.CDFILAUXPRAT AND
                  CDFILIAL = P_CDFILIORIG;

               IF (V_CONTRECEF > 0) THEN

                  DELETE FROM RECEFILI
                  WHERE
                     CDPRATO = C_PRATOSORIG.CDPRATO AND
                     CDFILAUXPRAT = V_CDFILAUX AND
                     CDFILIAL = P_CDFILIDEST;

                  FOR C_INS_RECEFII IN (SELECT R.CDPRATO,      R.CDPRODUTO,    R.QTPRODRECLOC,
                                               R.VRPEFATCOCLO, R.VRPEFATCORLO, R.HRTEMPPREPLO,
                                               R.SGUNIDADE,    R.QTUNIDESTLO,  R.QTBRUTALO,
                                               R.IDPRODBASELO, R.CDAPRERECE,   R.VRPEFATNUTLO,
                                               R.QTCALCNUTRLO, R.QTBRUTALOUNR, R.VRPERCDEGELO
                                        FROM PRODUTO P, PRODFILI PF, RECEFILI R
                                        WHERE
                                           (R.CDPRATO       = C_PRATOSORIG.CDPRATO)      AND
                                           (R.CDFILAUXPRAT  = C_PRATOSORIG.CDFILAUXPRAT) AND
                                           (R.CDFILIAL      = P_CDFILIORIG)              AND
                                           (R.CDPRODUTO     = P.CDPRODUTO)               AND
                                           (PF.CDFILIAL (+) = P_CDFILIDEST)              AND
                                           (PF.CDPRODUTO(+) = R.CDPRODUTO)               AND
                                           (NVL(PF.IDCNTRESTOQ, 'S') = 'S')              AND
                                           (NVL(PF.IDPRODATIV, 'A') = 'A')               AND
                                           (P.IDPRODATIVPR = 'S')
                  ) LOOP
                     INSERT INTO RECEFILI (CDFILAUXPRAT, CDPRATO,
                                           CDFILIAL,     CDPRODUTO,
                                           QTPRODRECLOC, VRPEFATCOCLO,
                                           VRPEFATCORLO, HRTEMPPREPLO,
                                           SGUNIDADE,    QTUNIDESTLO,
                                           QTBRUTALO,    IDPRODBASELO,
                                           CDAPRERECE,   DTULTATURECF,
                                           VRPEFATNUTLO, QTCALCNUTRLO,
                                           QTBRUTALOUNR, VRPERCDEGELO)
                     VALUES(V_CDFILAUX,                 C_INS_RECEFII.CDPRATO,
                            P_CDFILIDEST,               C_INS_RECEFII.CDPRODUTO,
                            C_INS_RECEFII.QTPRODRECLOC, C_INS_RECEFII.VRPEFATCOCLO,
                            C_INS_RECEFII.VRPEFATCORLO, C_INS_RECEFII.HRTEMPPREPLO,
                            C_INS_RECEFII.SGUNIDADE,    C_INS_RECEFII.QTUNIDESTLO,
                            C_INS_RECEFII.QTBRUTALO,    C_INS_RECEFII.IDPRODBASELO,
                            C_INS_RECEFII.CDAPRERECE,   SYSDATE,
                            C_INS_RECEFII.VRPEFATNUTLO, C_INS_RECEFII.QTCALCNUTRLO,
                            C_INS_RECEFII.QTBRUTALOUNR, C_INS_RECEFII.VRPERCDEGELO);
                  END LOOP;
               END IF;

               V_CONTRECEF := 0;
               SELECT COUNT(1)
               INTO V_CONTRECEF
               FROM PRATFILI
               WHERE
                  CDPRATO = C_PRATOSORIG.CDPRATO AND
                  CDFILAUXPRAT = C_PRATOSORIG.CDFILAUXPRAT AND
                  CDFILIAL = P_CDFILIORIG;

               IF (V_CONTRECEF > 0) THEN
                  DELETE FROM PRATFILI
                  WHERE
                     CDPRATO = C_PRATOSORIG.CDPRATO AND
                     CDFILAUXPRAT = V_CDFILAUX AND
                     CDFILIAL = P_CDFILIDEST;

                  INSERT INTO PRATFILI
                  (CDFILAUXPRAT,
                   CDPRATO,
                   CDFILIAL,
                   NRCORPRIFILI,
                   NRCORSEQFILI,
                   NRCORAUXFILI,
                   QTPADRAOFILI,
                   QTCONTAIFILI,
                   HRVALCONFILI,
                   NMFANTASIAPF,
                   QTCARBOPRFIL,
                   QTLIPIDPRFIL,
                   QTPROTEPRFIL,
                   QTCALORPRFIL,
                   QTALCOOPRFIL)
                  (SELECT
                      V_CDFILAUX,
                      CDPRATO,
                      P_CDFILIDEST,
                      NRCORPRIFILI,
                      NRCORSEQFILI,
                      NRCORAUXFILI,
                      QTPADRAOFILI,
                      QTCONTAIFILI,
                      HRVALCONFILI,
                      NMFANTASIAPF,
                      QTCARBOPRFIL,
                      QTLIPIDPRFIL,
                      QTPROTEPRFIL,
                      QTCALORPRFIL,
                      QTALCOOPRFIL
                   FROM PRATFILI
                   WHERE
                      CDPRATO = C_PRATOSORIG.CDPRATO AND
                      CDFILAUXPRAT = C_PRATOSORIG.CDFILAUXPRAT AND
                      CDFILIAL = P_CDFILIORIG);
               END IF;
            END IF;

            IF ((V_IDRECESERV = 'S') AND (V_CONTRS = 0)) THEN
               V_SERVORIGDEST := NULL;
               FOR C_SERVICO IN
               (SELECT
                   O.CDSERVFILI, O.NMSERVICO
                FROM
                   SERVICO O,
                   SERVICO D
                WHERE
                   (O.CDFILIAL = P_CDFILIORIG) AND
                   (D.CDFILIAL = P_CDFILIDEST) AND
                   (O.CDSERVFILI = D.CDSERVFILI) AND
                   (UPPER(RTRIM(LTRIM(O.NMSERVICO))) = UPPER(RTRIM(LTRIM(D.NMSERVICO)))) AND
                   EXISTS(SELECT CDPRATO
                          FROM RECESERV
                          WHERE
                             CDPRATO = C_PRATOSORIG.CDPRATO AND
                             CDFILAUXPRAT = C_PRATOSORIG.CDFILAUXPRAT AND
                             CDFILIAL = P_CDFILIORIG AND
                             CDSERVFILI = O.CDSERVFILI))
               LOOP
                  DELETE FROM RECESERV
                  WHERE
                     CDPRATO = C_PRATOSORIG.CDPRATO AND
                     CDFILAUXPRAT = V_CDFILAUX AND
                     CDFILIAL = P_CDFILIDEST  AND
                     CDSERVFILI = C_SERVICO.CDSERVFILI;

                  FOR C_INS_RECESERV IN (SELECT R.CDPRATO,      R.CDSERVFILI,   R.CDPRODUTO,
                                                R.QTPRODRECSER, R.VRPEFATCOCSE, R.VRPEFATCORSE,
                                                R.HRTEMPPREPSE, R.SGUNIDADE,    R.QTUNIDESTSE,
                                                R.QTBRUTASE,    R.IDPRODBASESE, R.CDAPRERECE,
                                                R.VRPEFATNUTSE, R.QTCALCNUTRSE, R.QTBRUTASEUNR, R.VRPERCDEGELO
                                         FROM PRODUTO P, PRODFILI PF, RECESERV R
                                         WHERE
                                            (R.CDPRATO      = C_PRATOSORIG.CDPRATO)       AND
                                            (R.CDFILAUXPRAT = C_PRATOSORIG.CDFILAUXPRAT)  AND
                                            (R.CDFILIAL     = P_CDFILIORIG)               AND
                                            (R.CDSERVFILI   = C_SERVICO.CDSERVFILI)    AND
                                            (R.CDPRODUTO     = P.CDPRODUTO)               AND
                                            (PF.CDFILIAL (+) = P_CDFILIDEST)              AND
                                            (PF.CDPRODUTO(+) = R.CDPRODUTO)               AND
                                            (NVL(PF.IDCNTRESTOQ, 'S') = 'S')              AND
                                            (NVL(PF.IDPRODATIV, 'A') = 'A')               AND
                                            (P.IDPRODATIVPR = 'S')
                  )LOOP
                     INSERT INTO RECESERV (CDFILAUXPRAT, CDPRATO,
                                           CDFILIAL,     CDSERVFILI,
                                           CDPRODUTO,    QTPRODRECSER,
                                           VRPEFATCOCSE, VRPEFATCORSE,
                                           HRTEMPPREPSE, SGUNIDADE,
                                           QTUNIDESTSE,  QTBRUTASE,
                                           IDPRODBASESE, CDAPRERECE,
                                           DTULTATURECS, VRPEFATNUTSE,
                                           QTCALCNUTRSE, QTBRUTASEUNR, VRPERCDEGELO)
                     VALUES(V_CDFILAUX,                  C_INS_RECESERV.CDPRATO,
                            P_CDFILIDEST,                C_INS_RECESERV.CDSERVFILI,
                            C_INS_RECESERV.CDPRODUTO,    C_INS_RECESERV.QTPRODRECSER,
                            C_INS_RECESERV.VRPEFATCOCSE, C_INS_RECESERV.VRPEFATCORSE,
                            C_INS_RECESERV.HRTEMPPREPSE, C_INS_RECESERV.SGUNIDADE,
                            C_INS_RECESERV.QTUNIDESTSE,  C_INS_RECESERV.QTBRUTASE,
                            C_INS_RECESERV.IDPRODBASESE, C_INS_RECESERV.CDAPRERECE,
                            SYSDATE,                     C_INS_RECESERV.VRPEFATNUTSE,
                            C_INS_RECESERV.QTCALCNUTRSE, C_INS_RECESERV.QTBRUTASEUNR, C_INS_RECESERV.VRPERCDEGELO);

                  END LOOP;
               END LOOP;

               V_SERVORIGDEST := NULL;
               FOR C_SERVICO IN
               (SELECT
                   O.CDSERVFILI, O.NMSERVICO
                FROM
                   SERVICO O,
                   SERVICO D
                WHERE
                   (O.CDFILIAL = P_CDFILIORIG) AND
                   (D.CDFILIAL = P_CDFILIDEST) AND
                   (O.CDSERVFILI = D.CDSERVFILI) AND
                   (UPPER(RTRIM(LTRIM(O.NMSERVICO))) = UPPER(RTRIM(LTRIM(D.NMSERVICO)))) AND
                   EXISTS(SELECT CDPRATO
                          FROM PRATSERV
                          WHERE
                             CDPRATO = C_PRATOSORIG.CDPRATO AND
                             CDFILAUXPRAT = C_PRATOSORIG.CDFILAUXPRAT AND
                             CDFILIAL = P_CDFILIORIG AND
                             CDSERVFILI = O.CDSERVFILI))
               LOOP
                  V_SERVORIGDEST := V_SERVORIGDEST || C_SERVICO.CDSERVFILI || '_';
               END LOOP;

               DELETE FROM PRATSERV
               WHERE
                  CDPRATO = C_PRATOSORIG.CDPRATO AND
                  CDFILAUXPRAT = V_CDFILAUX AND
                  CDFILIAL = P_CDFILIDEST  AND
                  INSTR(V_SERVORIGDEST, CDSERVFILI) <> 0;

               INSERT INTO PRATSERV
               (CDFILAUXPRAT,
                CDPRATO,
                CDFILIAL,
                CDSERVFILI,
                NRCORPRISERV,
                NRCORSEQSERV,
                NRCORAUXSERV,
                QTPADRAOSERV,
                QTCONTAISERV,
                HRVALCONSERV,
                NMFANTASIASE,
                QTCARBOPRSER,
                QTLIPIDPRSER,
                QTPROTEPRSER,
                QTCALORPRSER,
                QTALCOOPRSER)
               (SELECT
                   V_CDFILAUX,
                   CDPRATO,
                   P_CDFILIDEST,
                   CDSERVFILI,
                   NRCORPRISERV,
                   NRCORSEQSERV,
                   NRCORAUXSERV,
                   QTPADRAOSERV,
                   QTCONTAISERV,
                   HRVALCONSERV,
                   NMFANTASIASE,
                   QTCARBOPRSER,
                   QTLIPIDPRSER,
                   QTPROTEPRSER,
                   QTCALORPRSER,
                   QTALCOOPRSER
                FROM PRATSERV
                WHERE
                   CDPRATO = C_PRATOSORIG.CDPRATO AND
                   CDFILAUXPRAT = C_PRATOSORIG.CDFILAUXPRAT AND
                   CDFILIAL = P_CDFILIORIG AND
                   INSTR(V_SERVORIGDEST, CDSERVFILI) <> 0);
            END IF;
         END IF;
         COMMIT;  /* 37083 */
       END IF;
    END LOOP; /*PRATOS*/
    IF (V_ERROS > 0) THEN
       P_NRLOGINTCENT := V_NRLOGINTCENT;
    END IF;
END;
/