CREATE OR REPLACE PROCEDURE INSERE_TRABRELPROCF(
   P_NRTIPOCUSTO     IN     INT,
   P_NMTIPOCUSTO     IN     VARCHAR2,
   P_CDPRODUTOINI    IN     PRODUTO.CDARVPROD%TYPE,
   P_CDPRODUTOFIN    IN     PRODUTO.CDARVPROD%TYPE,
   P_CDFILIAL        IN     FILIAL.CDFILIAL%TYPE,
   P_CDPROCFABRIC    IN     VARCHAR2,
   P_IDLOCAL         IN     VARCHAR2,
   P_TODASOP2        IN     VARCHAR2,
   P_NROP            IN     VARCHAR2,
   P_NRORDPRODINI    IN     ORDPRODUCAO.NRORDPROD%TYPE,
   P_NRORDPRODFIN    IN     ORDPRODUCAO.NRORDPROD%TYPE,
   P_NRSUBOP         IN     ORDPRODUCAO.NRSUBORDPROD%TYPE,
   P_DTGERORDPRODINI IN     ORDPRODUCAO.DTGERORDPROD%TYPE,
   P_DTGERORDPRODFIN IN     ORDPRODUCAO.DTGERORDPROD%TYPE,
   P_DTHRINICIAOPINI IN     ORDPRODUCAO.DTHRINICIAOP%TYPE,
   P_DTHRINICIAOPFIN IN     ORDPRODUCAO.DTHRINICIAOP%TYPE,
   P_SEQTRABPROCF    OUT    VARCHAR2)
IS
   CURSOR C_REG IS
      SELECT
         PF.CDPRODUTO, PF.CDPROCFABRIC, PF.IDPROFABPADR, PF.QTPADPROCFAB
      FROM
         PRODUTO PROD,
         PROCFABRICA PF
      WHERE
         (PF.CDFILIAL = P_CDFILIAL) AND
         ((PROD.CDARVPROD BETWEEN P_CDPRODUTOINI AND P_CDPRODUTOFIN)OR
         ((P_CDPRODUTOINI IS NULL) AND (P_CDPRODUTOFIN IS NULL)))AND
         (PF.CDPRODUTO = PROD.CDPRODUTO)                    AND
         ((INSTR(P_CDPROCFABRIC, PF.CDPROCFABRIC) > 0) OR  (P_CDPROCFABRIC IS NULL))
      ORDER BY
         PROD.CDARVPROD,
         PF.IDPROFABPADR DESC,
         PF.CDPROCFABRIC;

   CURSOR C_ORD IS
      SELECT
         OP.NRORDPROD,
         OP.NRSUBORDPROD ,
         OP.CDPRODUTO,
         OP.CDPROCFABRIC,
         OP.IDSITORDPROD,
         OP.QTAPRODPREOP,              
         P.IDPROFABPADR
      FROM
         ORDPRODUCAO OP,
         PROCFABRICA P
      WHERE
         (OP.CDFILIAL  = P_CDFILIAL)                       AND
         ((DTGERORDPROD BETWEEN P_DTGERORDPRODINI AND P_DTGERORDPRODFIN)OR ((P_DTGERORDPRODINI IS NULL)AND( P_DTGERORDPRODFIN IS NULL)))AND
         ((DTHRINICIAOP BETWEEN P_DTHRINICIAOPINI AND P_DTHRINICIAOPFIN)OR ((P_DTHRINICIAOPINI IS NULL)AND( P_DTHRINICIAOPFIN IS NULL)))AND
         ((OP.NRORDPROD BETWEEN P_NRORDPRODINI AND P_NRORDPRODFIN)OR((P_NRORDPRODINI IS NULL)AND( P_NRORDPRODFIN IS NULL)))AND
         (OP.NRSUBORDPROD = NVL(P_NRSUBOP, OP.NRSUBORDPROD))AND
         ((INSTR(P_NROP, '_'||OP.NRORDPROD||'\ '||OP.NRSUBORDPROD||'_') > 0) OR
         (P_TODASOP2 = 'T'))                 AND
         (OP.IDSITORDPROD  <> '4') AND
         (OP.CDFILIAL     = P.CDFILIAL)  AND
         (OP.CDPRODUTO    = P.CDPRODUTO) AND
         (OP.CDPROCFABRIC = P.CDPROCFABRIC)
      ORDER BY
         OP.NRORDPROD,
         OP.NRSUBORDPROD;

/* VARIAVEIS DO CURSOR DE PROCESSO DE FABRICACAO*/
   V_CDPRODUTO       PRODUTO.CDPRODUTO%TYPE;
   V_CDPROCFABRIC    TPROCFABRICA.CDPROCFABRIC%TYPE;
   V_IDPROFABPADR    PROCFABRICA.IDPROFABPADR%TYPE;
   V_QTPADPROCFAB    PROCFABRICA.QTPADPROCFAB%TYPE;

/* VARIAVEIS DO CURSOR DE OP*/
    V_NRORDPROD     ORDPRODUCAO.NRORDPROD%TYPE;
    V_NRSUBORDPROD  ORDPRODUCAO.NRSUBORDPROD%TYPE;
    V_IDSITORDPROD  ORDPRODUCAO.IDSITORDPROD%TYPE;

   V_SEQUENCIAL VARCHAR2(20);                                  
   V_INQUEBRAPAG  INT;
   V_NIVEL        VARCHAR2(5);
   V_INSEQNIVEL   INT;
   V_CDARVPRODORIG    PRODUTO.CDARVPROD%TYPE;
   V_NMPRODUTOORIG    PRODUTO.NMPRODUTO%TYPE;
   V_SGUNPORIG        PRODUTO.SGUNIDADE%TYPE;
   V_CDARVPROD        PRODUTO.CDARVPROD%TYPE;
   V_NMPRODUTO        PRODUTO.NMPRODUTO%TYPE;
   V_SGUNIDADE        PRODUTO.SGUNIDADE%TYPE;
   V_NMPROCFABRIC     TPROCFABRICA.NMPROCFABRIC%TYPE;
   V_IDBUSCADADOP     VARCHAR2(1);
   V_QUANTIDADE       FLOAT(126);
BEGIN

   NOVO_CODIGO('TRABRELPROCF'||P_CDFILIAL, V_SEQUENCIAL);
   V_SEQUENCIAL := SUBSTR(V_SEQUENCIAL, 11,10);
   V_INQUEBRAPAG := 0;

   IF P_IDLOCAL = 'P' THEN
      BEGIN
         OPEN C_REG;
         LOOP
            FETCH C_REG INTO V_CDPRODUTO, V_CDPROCFABRIC, V_IDPROFABPADR, V_QTPADPROCFAB;
            EXIT WHEN C_REG%NOTFOUND;

            V_INQUEBRAPAG := V_INQUEBRAPAG + 1;
            V_NIVEL := '1';

            BEGIN
               SELECT
                  PORIG.CDARVPROD, PORIG.NMPRODUTO, PORIG.SGUNIDADE,
                  PROD.CDARVPROD, PROD.NMPRODUTO, PROD.SGUNIDADE, T.NMPROCFABRIC
               INTO
                 V_CDARVPRODORIG, V_NMPRODUTOORIG, V_SGUNPORIG,
                 V_CDARVPROD, V_NMPRODUTO, V_SGUNIDADE, V_NMPROCFABRIC
               FROM
                  PRODUTO PORIG,
                  PRODUTO PROD,
                  TPROCFABRICA T
               WHERE
                  (PROD.CDPRODUTO  = V_CDPRODUTO)    AND
                  (T.CDPROCFABRIC  = V_CDPROCFABRIC) AND
                  (PORIG.CDPRODUTO = V_CDPRODUTO);

               INSERT INTO TRABRELPROCF
                  (NRTRABRELPF, IDQUEBRAPGPF, CDFILIALPF, CDPRODORIGPF, CDARVPORIGPF, NMPROGORIGPF, SGUNPORIGPF,
                   IDNIVELPF, QTPADPROCPF, CDPRODUTOPF, CDARVPRODPF, NMPRODUTOPF, SGUNIDADEPF,
                   QUANTIDADEPF, CDPROCFABRPF, NMPROCFABRPF, IDPROFABPAPF, NRTIPOCUSTPF, NMCUSTOPF,
                   NRORDPRODPF, NRSUBORDPRPF, IDPOSSACABPF, IDBUSCDADOPF, IDPRIMVEZPF)
               VALUES
                  (V_SEQUENCIAL, V_INQUEBRAPAG, P_CDFILIAL,   V_CDPRODUTO, V_CDARVPRODORIG,
                   V_NMPRODUTOORIG, V_SGUNPORIG, V_NIVEL, V_QTPADPROCFAB, V_CDPRODUTO,
                   V_CDARVPROD, V_NMPRODUTO, V_SGUNIDADE, V_QTPADPROCFAB, V_CDPROCFABRIC,
                   V_NMPROCFABRIC, V_IDPROFABPADR, P_NRTIPOCUSTO, P_NMTIPOCUSTO, '', '', 'S', '', '');
            EXCEPTION
               WHEN NO_DATA_FOUND THEN
                  NULL;
            END;
         END LOOP;
         CLOSE C_REG;
      END;

      FOR C_TRAB IN ( SELECT CDPRODORIGPF, CDPROCFABRPF, QTPADPROCPF,
                             IDQUEBRAPGPF, NRTRABRELPF, IDNIVELPF
                      FROM TRABRELPROCF
                      WHERE
                         NRTRABRELPF = V_SEQUENCIAL AND
                         IDPOSSACABPF = 'S') LOOP

         V_INSEQNIVEL := 0;
         FOR C_INSUMO IN( SELECT
                           I.CDPRODUTO,
                           I.CDPRODINSUMO,
                           P.CDPROCFABRIC,
                           P.IDPROFABPADR,
                           QTPREVI_MATPRIMA( P_CDFILIAL, I.CDPRODUTO, I.CDPROCFABRIC, I.CDETAPAPROD, I.CDPRODINSUMO, C_TRAB.QTPADPROCPF) AS QUANTIDADE
                        FROM
                           INSUMETAPA I,
                           PROCFABRICA P
                        WHERE
                           (I.CDFILIAL     = P_CDFILIAL          )AND
                           (I.CDPRODUTO    = C_TRAB.CDPRODORIGPF )AND
                           (I.CDPROCFABRIC = C_TRAB.CDPROCFABRPF )AND
                           (I.IDSEMIACETAP = 'S')             AND
                           (P.CDFILIAL     = I.CDFILIAL)      AND
                           (I.CDPRODINSUMO = P.CDPRODUTO)     AND
                           (P.IDPROFABPADR = 'S')
                        ORDER BY
                           P.CDPRODUTO,
                           P.IDPROFABPADR DESC,
                           P.CDPROCFABRIC )LOOP

            V_INSEQNIVEL := V_INSEQNIVEL + 1;

            BEGIN
               SELECT
                  PORIG.CDARVPROD, PORIG.NMPRODUTO, PORIG.SGUNIDADE,
                  PROD.CDARVPROD, PROD.NMPRODUTO, PROD.SGUNIDADE, T.NMPROCFABRIC
               INTO
                 V_CDARVPRODORIG, V_NMPRODUTOORIG, V_SGUNPORIG,
                 V_CDARVPROD, V_NMPRODUTO, V_SGUNIDADE, V_NMPROCFABRIC
               FROM
                  PRODUTO PORIG,
                  PRODUTO PROD,
                  TPROCFABRICA T
               WHERE
                  (PROD.CDPRODUTO  = C_INSUMO.CDPRODINSUMO)AND
                  (T.CDPROCFABRIC  = C_INSUMO.CDPROCFABRIC) AND
                  (PORIG.CDPRODUTO = C_TRAB.CDPRODORIGPF);

               INSERT INTO TRABRELPROCF
                  (NRTRABRELPF, IDQUEBRAPGPF, CDFILIALPF, CDPRODORIGPF, CDARVPORIGPF, NMPROGORIGPF, SGUNPORIGPF,
                   IDNIVELPF, QTPADPROCPF, CDPRODUTOPF, CDARVPRODPF, NMPRODUTOPF, SGUNIDADEPF,
                   QUANTIDADEPF, CDPROCFABRPF, NMPROCFABRPF, IDPROFABPAPF, NRTIPOCUSTPF, NMCUSTOPF,
                   NRORDPRODPF, NRSUBORDPRPF, IDPOSSACABPF, IDBUSCDADOPF, IDPRIMVEZPF)
               VALUES
                  (C_TRAB.NRTRABRELPF, C_TRAB.IDQUEBRAPGPF, P_CDFILIAL,   C_TRAB.CDPRODORIGPF, V_CDARVPRODORIG,
                   V_NMPRODUTOORIG, V_SGUNPORIG, C_TRAB.IDNIVELPF||'.'||TO_CHAR(V_INSEQNIVEL), C_TRAB.QTPADPROCPF,
                   C_INSUMO.CDPRODINSUMO, V_CDARVPROD, V_NMPRODUTO, V_SGUNIDADE, C_INSUMO.QUANTIDADE,
                   C_INSUMO.CDPROCFABRIC, V_NMPROCFABRIC, C_INSUMO.IDPROFABPADR, P_NRTIPOCUSTO, P_NMTIPOCUSTO, '', '', 'N', '', '');
            EXCEPTION
               WHEN NO_DATA_FOUND THEN
                  NULL;
            END;
         END LOOP;
      END LOOP;
   ELSE IF P_IDLOCAL = 'R' THEN
           BEGIN
              OPEN C_ORD;
              LOOP
                 FETCH C_ORD INTO V_NRORDPROD, V_NRSUBORDPROD, V_CDPRODUTO, V_CDPROCFABRIC,
                                  V_IDSITORDPROD, V_QTPADPROCFAB, V_IDPROFABPADR;
                 EXIT WHEN C_ORD%NOTFOUND;
                 V_INQUEBRAPAG := V_INQUEBRAPAG + 1;
                 V_NIVEL := '1';
                 BEGIN
                    SELECT
                       PORIG.CDARVPROD, PORIG.NMPRODUTO, PORIG.SGUNIDADE,
                       PROD.CDARVPROD, PROD.NMPRODUTO, PROD.SGUNIDADE, T.NMPROCFABRIC
                    INTO
                      V_CDARVPRODORIG, V_NMPRODUTOORIG, V_SGUNPORIG,
                      V_CDARVPROD, V_NMPRODUTO, V_SGUNIDADE, V_NMPROCFABRIC
                    FROM
                       PRODUTO PORIG,
                       PRODUTO PROD,
                       TPROCFABRICA T
                    WHERE
                       (PROD.CDPRODUTO  = V_CDPRODUTO)    AND
                       (T.CDPROCFABRIC  = V_CDPROCFABRIC) AND
                       (PORIG.CDPRODUTO = V_CDPRODUTO);

                    IF V_IDSITORDPROD = '1' THEN
                       V_IDBUSCADADOP  := 'N';
                    ELSE
                       V_IDBUSCADADOP  := 'S';
                    END IF;


                    INSERT INTO TRABRELPROCF
                       (NRTRABRELPF, IDQUEBRAPGPF, CDFILIALPF, CDPRODORIGPF, CDARVPORIGPF, NMPROGORIGPF, SGUNPORIGPF,
                        IDNIVELPF, QTPADPROCPF, CDPRODUTOPF, CDARVPRODPF, NMPRODUTOPF, SGUNIDADEPF,
                        QUANTIDADEPF, CDPROCFABRPF, NMPROCFABRPF, IDPROFABPAPF, NRTIPOCUSTPF, NMCUSTOPF,
                        NRORDPRODPF, NRSUBORDPRPF, IDPOSSACABPF, IDBUSCDADOPF, IDPRIMVEZPF)
                    VALUES
                       (V_SEQUENCIAL, V_INQUEBRAPAG, P_CDFILIAL,   V_CDPRODUTO, V_CDARVPRODORIG,
                        V_NMPRODUTOORIG, V_SGUNPORIG, V_NIVEL, V_QTPADPROCFAB, V_CDPRODUTO,
                        V_CDARVPROD, V_NMPRODUTO, V_SGUNIDADE, V_QTPADPROCFAB, V_CDPROCFABRIC,
                        V_NMPROCFABRIC, V_IDPROFABPADR, P_NRTIPOCUSTO, P_NMTIPOCUSTO, V_NRORDPROD , V_NRSUBORDPROD,
                        'S', V_IDBUSCADADOP, 'T');
                 EXCEPTION
                    WHEN NO_DATA_FOUND THEN
                       NULL;
                 END;
              END LOOP;
              CLOSE C_ORD;
           END;

           FOR C_TRAB IN ( SELECT IDQUEBRAPGPF, CDPRODORIGPF, CDPROCFABRPF,
                                  IDNIVELPF, NRORDPRODPF, NRSUBORDPRPF, IDBUSCDADOPF,
                                  QTPADPROCPF, NRTRABRELPF, IDPRIMVEZPF
                           FROM TRABRELPROCF
                           WHERE
                              NRTRABRELPF = V_SEQUENCIAL AND
                              IDPOSSACABPF = 'S') LOOP


              IF (C_TRAB.IDPRIMVEZPF = 'T')AND(C_TRAB.IDBUSCDADOPF = 'S') THEN
                 V_INSEQNIVEL := 0;
                 FOR C_INSUMO IN( SELECT
                                     I.CDPRODUTO   ,
                                     I.CDPRODINSUMO,
                                     I.CDPROCFABRIC,
                                     P.IDPROFABPADR,
                                     IT.QTPRERETPROD,
                                     R.NRLANCESTQ,
                                     IT.NRRETEST
                                  FROM
                                     INSUMETAPA I, RETIRADAESTO R, ITEMRETIEST IT, PROCFABRICA P
                                  WHERE
                                     R.CDFILIAL     = P_CDFILIAL     AND
                                     R.NRORDPROD    = C_TRAB.NRORDPRODPF  AND
                                     R.NRSUBORDPROD = C_TRAB.NRSUBORDPRPF AND
                                     I.CDPROCFABRIC = C_TRAB.CDPROCFABRPF AND
                                     I.CDPRODUTO    = C_TRAB.CDPRODORIGPF AND
                                     I.IDSEMIACETAP = 'S'             AND
                                     R.CDFILIAL     = IT.CDFILIAL     AND
                                     R.NRRETEST     = IT.NRRETEST     AND
                                     R.CDETAPAPROD  = I.CDETAPAPROD   AND
                                     IT.CDPRODUTO    = I.CDPRODINSUMO  AND
                                     R.CDFILIAL     = I.CDFILIAL      AND
                                     P.CDPRODUTO    = I.CDPRODINSUMO  AND
                                     P.CDFILIAL     = I.CDFILIAL      AND
                                     P.IDPROFABPADR = 'S'
                                  ORDER BY
                                     P.CDPRODUTO,
                                     P.IDPROFABPADR DESC,
                                     P.CDPROCFABRIC)LOOP

                    V_INSEQNIVEL := V_INSEQNIVEL +1;
                    IF(C_INSUMO.NRLANCESTQ IS NULL) THEN
                       V_QUANTIDADE :=  C_INSUMO.QTPRERETPROD;
                    ELSE
                       BEGIN
                          SELECT
                             SUM(L.QTRETPROD)- NVL(D.DEVOLVIDA,0)
                          INTO V_QUANTIDADE
                          FROM
                             LOTITRETIEST L,
                             RETIRADAESTO R,
                             (SELECT  SUM(QTRETPROD) AS DEVOLVIDA
                              FROM
                                 LOTITRETIEST L, RETIRADAESTO R
                              WHERE
                                 L.CDFILIAL = P_CDFILIAL  AND
                                 IDTPRETEST = 'D'         AND
                                 R.NRRETEST = C_INSUMO.NRRETEST AND
                                 L.CDFILIAL = R.CDFILIAL  AND
                                 L.NRRETEST = R.NRRETEST)D
                          WHERE
                             L.CDFILIAL = P_CDFILIAL AND
                             IDTPRETEST = 'R'         AND
                             R.NRRETEST = C_INSUMO.NRRETEST AND
                             L.CDFILIAL = R.CDFILIAL  AND
                             L.NRRETEST = R.NRRETEST
                          GROUP BY
                             D.DEVOLVIDA;
                       EXCEPTION
                          WHEN NO_DATA_FOUND THEN
                             V_QUANTIDADE := 0;
                       END;

                    END IF;

                    BEGIN
                       SELECT
                          PORIG.CDARVPROD, PORIG.NMPRODUTO, PORIG.SGUNIDADE,
                          PROD.CDARVPROD, PROD.NMPRODUTO, PROD.SGUNIDADE, T.NMPROCFABRIC
                       INTO
                         V_CDARVPRODORIG, V_NMPRODUTOORIG, V_SGUNPORIG,
                         V_CDARVPROD, V_NMPRODUTO, V_SGUNIDADE, V_NMPROCFABRIC
                       FROM
                          PRODUTO PORIG,
                          PRODUTO PROD,
                          TPROCFABRICA T
                       WHERE
                          (PROD.CDPRODUTO  = C_INSUMO.CDPRODINSUMO)AND
                          (T.CDPROCFABRIC  = C_INSUMO.CDPROCFABRIC) AND
                          (PORIG.CDPRODUTO = C_TRAB.CDPRODORIGPF);


                       INSERT INTO TRABRELPROCF
                          (NRTRABRELPF, IDQUEBRAPGPF, CDFILIALPF, CDPRODORIGPF, CDARVPORIGPF, NMPROGORIGPF, SGUNPORIGPF,
                           IDNIVELPF, QTPADPROCPF, CDPRODUTOPF, CDARVPRODPF, NMPRODUTOPF, SGUNIDADEPF,
                           QUANTIDADEPF, CDPROCFABRPF, NMPROCFABRPF, IDPROFABPAPF, NRTIPOCUSTPF, NMCUSTOPF,
                           NRORDPRODPF, NRSUBORDPRPF, IDPOSSACABPF, IDBUSCDADOPF, IDPRIMVEZPF)
                       VALUES
                          (C_TRAB.NRTRABRELPF, C_TRAB.IDQUEBRAPGPF, P_CDFILIAL,   C_TRAB.CDPRODORIGPF, V_CDARVPRODORIG,
                           V_NMPRODUTOORIG, V_SGUNPORIG, C_TRAB.IDNIVELPF||'.'||TO_CHAR(V_INSEQNIVEL), C_TRAB.QTPADPROCPF,
                           C_INSUMO.CDPRODINSUMO, V_CDARVPROD, V_NMPRODUTO, V_SGUNIDADE, V_QUANTIDADE,
                           C_INSUMO.CDPROCFABRIC, V_NMPROCFABRIC, C_INSUMO.IDPROFABPADR, P_NRTIPOCUSTO, P_NMTIPOCUSTO, C_TRAB.NRORDPRODPF,
                           C_TRAB.NRSUBORDPRPF, 'N', 'N', 'F');
                    EXCEPTION
                       WHEN NO_DATA_FOUND THEN
                          NULL;
                    END;
                 END LOOP;
              ELSE
                 V_INSEQNIVEL := 0;
                 FOR C_INSUMO IN( SELECT
                                   I.CDPRODUTO,
                                   I.CDPRODINSUMO,
                                   P.CDPROCFABRIC,
                                   P.IDPROFABPADR,
                                   QTPREVI_MATPRIMA( P_CDFILIAL, I.CDPRODUTO, I.CDPROCFABRIC, I.CDETAPAPROD, I.CDPRODINSUMO, C_TRAB.QTPADPROCPF) AS QUANTIDADE
                                FROM
                                   INSUMETAPA I,
                                   PROCFABRICA P
                                WHERE
                                   (I.CDFILIAL     = P_CDFILIAL          )AND
                                   (I.CDPRODUTO    = C_TRAB.CDPRODORIGPF )AND
                                   (I.CDPROCFABRIC = C_TRAB.CDPROCFABRPF )AND
                                   (I.IDSEMIACETAP = 'S')             AND
                                   (P.CDFILIAL     = I.CDFILIAL)      AND
                                   (I.CDPRODINSUMO = P.CDPRODUTO)     AND
                                   (P.IDPROFABPADR = 'S')
                                ORDER BY
                                   P.CDPRODUTO,
                                   P.IDPROFABPADR DESC,
                                   P.CDPROCFABRIC )LOOP

                    V_INSEQNIVEL := V_INSEQNIVEL + 1;
                    BEGIN
                       SELECT
                          PORIG.CDARVPROD, PORIG.NMPRODUTO, PORIG.SGUNIDADE,
                          PROD.CDARVPROD, PROD.NMPRODUTO, PROD.SGUNIDADE, T.NMPROCFABRIC
                       INTO
                         V_CDARVPRODORIG, V_NMPRODUTOORIG, V_SGUNPORIG,
                         V_CDARVPROD, V_NMPRODUTO, V_SGUNIDADE, V_NMPROCFABRIC
                       FROM
                          PRODUTO PORIG,
                          PRODUTO PROD,
                          TPROCFABRICA T
                       WHERE
                          (PROD.CDPRODUTO  = C_INSUMO.CDPRODINSUMO)AND
                          (T.CDPROCFABRIC  = C_INSUMO.CDPROCFABRIC) AND
                          (PORIG.CDPRODUTO = C_TRAB.CDPRODORIGPF);

                       INSERT INTO TRABRELPROCF
                          (NRTRABRELPF, IDQUEBRAPGPF, CDFILIALPF, CDPRODORIGPF, CDARVPORIGPF, NMPROGORIGPF, SGUNPORIGPF,
                           IDNIVELPF, QTPADPROCPF, CDPRODUTOPF, CDARVPRODPF, NMPRODUTOPF, SGUNIDADEPF,
                           QUANTIDADEPF, CDPROCFABRPF, NMPROCFABRPF, IDPROFABPAPF, NRTIPOCUSTPF, NMCUSTOPF,
                           NRORDPRODPF, NRSUBORDPRPF, IDPOSSACABPF, IDBUSCDADOPF, IDPRIMVEZPF)
                       VALUES
                          (C_TRAB.NRTRABRELPF, C_TRAB.IDQUEBRAPGPF, P_CDFILIAL,   C_TRAB.CDPRODORIGPF, V_CDARVPRODORIG,
                           V_NMPRODUTOORIG, V_SGUNPORIG, C_TRAB.IDNIVELPF||'.'||TO_CHAR(V_INSEQNIVEL), C_TRAB.QTPADPROCPF,
                           C_INSUMO.CDPRODINSUMO, V_CDARVPROD, V_NMPRODUTO, V_SGUNIDADE, C_INSUMO.QUANTIDADE,
                           C_INSUMO.CDPROCFABRIC, V_NMPROCFABRIC, C_INSUMO.IDPROFABPADR, P_NRTIPOCUSTO, P_NMTIPOCUSTO, C_TRAB.NRORDPRODPF,
                           C_TRAB.NRSUBORDPRPF, 'N', 'N', 'F');
                    EXCEPTION
                       WHEN NO_DATA_FOUND THEN
                          NULL;
                    END;
                 END LOOP;
              END IF;
           END LOOP;
        END IF;
   END IF;
   P_SEQTRABPROCF := V_SEQUENCIAL;
END;
/