CREATE OR REPLACE PROCEDURE GERA_PED_OL_EXPEDICAO (P_CDFILDEST  IN PEDIDOEXOL.CDFILDEST%TYPE,
                                                   P_CDFILLANC  IN PEDIDOEXOL.CDFILLANC%TYPE,
                                                   P_NRPEDEXOL  IN PEDIDOEXOL.NRPEDEXOL%TYPE,
                                                   P_CDFATPRECO IN FATORPRECO.CDFATPRECO%TYPE )
IS
V_IDENVIOITMPEDOL   PARASUPRI.IDENVIOITMPEDOL%TYPE;
V_CDFILIOPELOG      PEDIDOEXOL.CDFILIOPELOG%TYPE;
V_CDCLIENTE         PARAMPEDIDO.CDCLIENTE%TYPE;
V_CDMODPGTO         PARAMPEDIDO.CDMODPGTO%TYPE;
V_CDVENDEDOR        PARAMPEDIDO.CDVENDEDOR%TYPE;
V_IDLANCPED         PARAMPEDIDO.IDLANCPED%TYPE;
V_IDSITPEDIDO       PEDIDO.IDSITPEDIDO%TYPE;
V_IDSITITEMPED      ITEMPEDIDO.IDSITITEMPED%TYPE;
V_NRPEDIDO          PEDIDO.NRPEDIDO%TYPE;
V_PXM_NRPEDIDO      VARCHAR2(20);
V_NOVO_NRPEDIDO     PEDIDO.NRPEDIDO%TYPE;
V_NMOPERADOR        OPERADOR.NMOPERADOR%TYPE;
V_CDOPELANPED       PEDIDO.CDOPELANPED%TYPE;
V_CDFORMPGTO        MODPGTO.CDFORMPGTO%TYPE;
V_IDTPFORPGTPED     PEDIDO.IDTPFORPGTPED%TYPE;
V_NRDIAPGFIXPED     PEDIDO.NRDIAPGFIXPED%TYPE;
V_NRPARCPGTOPED     PEDIDO.NRPARCPGTOPED%TYPE;
V_CDTIPORECE        MODPGTO.CDTIPORECE%TYPE;
V_DTENTPED          PEDIDO.DTENTPED%TYPE;
V_DTPEDIDO          PEDIDO.DTPEDIDO%TYPE;
V_DTPEDIDO1         PEDIDO.DTPEDIDO%TYPE;
V_NRITEMPED         ITEMPEDIDO.NRITEMPED%TYPE;
V_NOVO_NRITEMPED    ITEMPEDIDO.NRITEMPED%TYPE;
V_CDPRECOBASE       PRECOBASE.CDPRECOBASE%TYPE;
V_CDPRECOBASE1      PRECOBASE.CDPRECOBASE%TYPE;
V_VRPREUNITPED      ITEMPEDIDO.VRPREUNITPED%TYPE;
V_HRENTRPROD        PARAMPRODMRP.HRENTRPROD%TYPE;
V_CDPRODESTO        PRODUTO.CDPRODESTO%TYPE;
V_VRPESOITPED       ITEMPEDIDO.VRPESOITPED%TYPE;
V_COMMIT            BOOLEAN;
V_COUNTITM          INTEGER;
P_INCONSITM         VARCHAR2(20);
V_IDTPIJURTRAN      TRANSPORT.IDTPIJURTRAN%TYPE;
V_NRINSJURTRAN      TRANSPORT.NRINSJURTRAN%TYPE;
V_CDTIPTRANS        TRANSPORT.CDTIPTRANS%TYPE;
V_VRFATOCONV        PRODUTO.VRFATOCONV%TYPE;
V_CDFATPRECO        ITEMPEDIDO.CDFATPRECO%TYPE;
V_IDTABPRECO        PARAMPEDIDO.IDTABPRECO%TYPE;
V_IDCALCPRECFAT     PARAMPEDIDO.IDCALCPRECFAT%TYPE;
V_IDCUSEXP          PAREXPEDICAO.IDCUSEXP%TYPE;
V_DTPROCESSA        PARAMFILIAL.DTPROCESSA%TYPE;
V_VRCUSTPROD        ITEMPEDIDO.VRPREUNITPED%TYPE;
V_VRFATPRECO        PRODFATOR.VRFATPRECO%TYPE;
V_CDPRODUTO         PRODUTO.CDPRODUTO%TYPE;
V_IDIOMA            VARCHAR2(64);
V_TEXTO             VARCHAR2(30);
V_CDTIPOOPER        VARCHAR2(02);
V_IDENTRSAIDOP      VARCHAR2(01);
V_IDOBRTPOPPED      VARCHAR2(01);
BEGIN
   SELECT MAX(P.CDFILIOPELOG)
     INTO V_CDFILIOPELOG
     FROM PEDIDOEXOL P
    WHERE P.CDFILDEST  = P_CDFILDEST
      AND P.CDFILLANC  = P_CDFILLANC
      AND P.NRPEDEXOL  = P_NRPEDEXOL;
   SELECT NVL(MAX(IDENVIOITMPEDOL), 'N')
     INTO V_IDENVIOITMPEDOL
     FROM PARASUPRI
    WHERE PARASUPRI.CDFILIAL = (SELECT NVL(FILIAL.CDFILCENTCMP, FILIAL.CDFILIAL)
                                  FROM FILIAL
                                 WHERE FILIAL.CDFILIAL = V_CDFILIOPELOG);

   BEGIN
      SELECT SUBSTR(NVL(MAX(VALUE), 'E'), 1, 64)
        INTO V_IDIOMA
        FROM V$NLS_PARAMETERS
       WHERE PARAMETER = 'NLS_TERRITORY';
   EXCEPTION
      WHEN OTHERS THEN BEGIN
         V_IDIOMA := 'E';
      END;
   END;
   IF V_IDIOMA = 'BRAZIL' THEN
      V_TEXTO := ' Filial Destino: ';
   ELSE
      V_TEXTO := ' Site Destino: ';
   END IF;
   IF (V_IDENVIOITMPEDOL = 'S') THEN
      P_INCONSITM := NULL;

      SELECT MAX(P.CDCLIENTE),
             MAX(P.CDMODPGTO),
             MAX(P.CDVENDEDOR),
             NVL(MAX(IDLANCPED), '1')
        INTO
           V_CDCLIENTE,
           V_CDMODPGTO,
           V_CDVENDEDOR,
           V_IDLANCPED
        FROM PARAMPEDIDO P
       WHERE CDFILIAL = P_CDFILDEST;

      IF V_CDCLIENTE IS NULL THEN
          P_INCONSITM := 'ERRO_CLIENTE';
      END IF;

      IF ((V_CDMODPGTO IS NULL) AND (P_INCONSITM IS NULL)) THEN
          P_INCONSITM := 'ERRO_MODPGTO';
      END IF;

      IF ((V_CDVENDEDOR IS NULL) AND (P_INCONSITM IS NULL))THEN
          P_INCONSITM := 'ERRO_VENDEDOR';
      END IF;

      SELECT MAX(B.IDTPIJURTRAN), MAX(B.NRINSJURTRAN), MAX(B.CDTIPTRANS)
        INTO V_IDTPIJURTRAN, V_NRINSJURTRAN, V_CDTIPTRANS
      FROM
         RELFILTRAS A, TRANSPORT B
      WHERE
         A.CDFILIAL     = P_CDFILDEST    AND
         A.IDTRANSPRINC = 'S'            AND
         A.IDTPIJURTRAN = B.IDTPIJURTRAN AND
         A.NRINSJURTRAN = B.NRINSJURTRAN;

      IF (((V_CDTIPTRANS IS NULL) OR (V_IDTPIJURTRAN IS NULL)) AND (P_INCONSITM IS NULL))THEN
         P_INCONSITM := 'ERRO_TRANSPORT';
      END IF;

      IF P_INCONSITM IS NULL THEN
         IF V_IDLANCPED = '1' THEN
            V_IDSITPEDIDO  := '1';
            V_IDSITITEMPED := '1';
         END IF;

         IF V_IDLANCPED = '2' THEN
            V_IDSITPEDIDO  := '2';
            V_IDSITITEMPED := '2';
         END IF;

         IF V_IDLANCPED = '3' THEN
            V_IDSITPEDIDO  := '2';
            V_IDSITITEMPED := '3';
         END IF;

         SELECT MAX(P.NRPEDIDO) INTO V_NRPEDIDO
           FROM PEDIDO P, ITEMPEDIDO IP
          WHERE P.CDFILIAL    = IP.CDFILIAL
            AND P.NRPEDIDO    = IP.NRPEDIDO
            AND P.CDFILIAL    = V_CDFILIOPELOG
            AND P.CDCLIENTE   = V_CDCLIENTE
            AND P.CDFILIALPED = P_CDFILDEST
            AND P.IDSITPEDIDO IN ('1','2')
            AND (INSTR(IP.DSITEMPED, V_CDFILIOPELOG||P_CDFILLANC||P_CDFILDEST||P_NRPEDEXOL) > 0);

         SELECT TO_DATE(TO_CHAR(SYSDATE, 'DD/MM/YYYY'))
           INTO V_DTPEDIDO
           FROM DUAL;

         SELECT TO_DATE(TO_CHAR(SYSDATE+1, 'DD/MM/YYYY'))
           INTO V_DTPEDIDO1
           FROM DUAL;

         SELECT MAX(CDFORMPGTO), MAX(IDTPFORPGTOMOD), MAX(CDTIPORECE), MAX(NRDIAPGFIXMOD), MAX(NRPARCPGTOMOD)
           INTO  V_CDFORMPGTO, V_IDTPFORPGTPED, V_CDTIPORECE, V_NRDIAPGFIXPED, V_NRPARCPGTOPED
           FROM MODPGTO
          WHERE CDMODPGTO = V_CDMODPGTO;

         SELECT MAX(CDPRECOBASE)
           INTO V_CDPRECOBASE
           FROM PRECOBASECLI
          WHERE CDCLIENTE = V_CDCLIENTE
            AND IDPRBASEPRIN = 'S';

         IF V_CDPRECOBASE IS NULL THEN
            SELECT MAX(CDPRECOBASE)
              INTO V_CDPRECOBASE1
              FROM PRECOUTI
             WHERE PRECOUTI.CDMODPGTO = V_CDMODPGTO
               AND PRECOUTI.CDFILIAL  = P_CDFILDEST;
         ELSE
            V_CDPRECOBASE1 := V_CDPRECOBASE;
         END IF;
         IF V_NRPEDIDO IS NULL THEN
            NOVO_CODIGO_SC('PEDIDO'||V_CDFILIOPELOG, V_PXM_NRPEDIDO, 1);
            V_NOVO_NRPEDIDO := SUBSTR(V_PXM_NRPEDIDO, 11, 10);
            NMUSUARIO(V_NMOPERADOR);

            SELECT MAX(CDOPERADOR) INTO V_CDOPELANPED
              FROM OPERADOR
             WHERE NMOPERADOR LIKE V_NMOPERADOR;

            IF V_CDOPELANPED IS NULL THEN
               SELECT MAX(CDOPERADOR) INTO V_CDOPELANPED
                 FROM OPERADOR;
            END IF;
            V_CDTIPOOPER := NULL;
            V_IDENTRSAIDOP := NULL;
            SELECT MAX(IDOBRTPOPPED), MAX(CDTIPOOPER)
              INTO V_IDOBRTPOPPED, V_CDTIPOOPER
              FROM PARAMPEDIDO
             WHERE CDFILIAL = V_CDFILIOPELOG;

            IF V_IDOBRTPOPPED = 'S' THEN
               V_IDENTRSAIDOP := 'S';
            END IF;
			

            INSERT INTO PEDIDO
                   (CDFILIAL, NRPEDIDO, IDSITPEDIDO, CDCLIENTE, IDPRIOPED, DTPEDIDO, DTENTPED,
                   CDFORMPGTO, IDTPFORPGTPED, NRDIAPGFIXPED, NRPARCPGTOPED,  CDPRECOBASE, CDTIPORECE, CDVENDEDOR,
                   CDMODPGTO, DTHRLANPED, CDOPELANPED, IDPEDIDOIMPR, IDTIPOPEDIDO, IDORIGPED, CDFILIALPED, IDTPIJURTRAN, NRINSJURTRAN, CDTIPTRANS,
				   CDTIPOOPER, IDENTRSAIDOP)
            VALUES (V_CDFILIOPELOG, V_NOVO_NRPEDIDO, V_IDSITPEDIDO, V_CDCLIENTE, '3',  V_DTPEDIDO, V_DTPEDIDO/*UPDATAR ESTE CAMPO POR ULTIMO*/,
                   V_CDFORMPGTO, V_IDTPFORPGTPED, V_NRDIAPGFIXPED, V_NRPARCPGTOPED, V_CDPRECOBASE1, V_CDTIPORECE, V_CDVENDEDOR,
                   V_CDMODPGTO, SYSDATE, V_CDOPELANPED, 'N', '1', '9', P_CDFILDEST, V_IDTPIJURTRAN, V_NRINSJURTRAN, V_CDTIPTRANS,
				   V_CDTIPOOPER, V_IDENTRSAIDOP);
            IF V_IDTPFORPGTPED = 'V' THEN
               INSERT INTO PRAZOPGTOPED (CDFILIAL, NRPEDIDO, NRDIASPGTOPED, VRPERCPGTOPED)
               SELECT P_CDFILDEST, V_NOVO_NRPEDIDO, NRDIASMODPGTO, VRPERCMODPGTO
                 FROM PRAZOMODPGTO
                WHERE CDMODPGTO = V_CDMODPGTO;
            END IF;
         ELSE
            V_NOVO_NRPEDIDO := V_NRPEDIDO;
         END IF;
         V_COUNTITM := 0;
         FOR C_ITMPEDIDO IN
            (SELECT ITEMPEDEXOL.CDPRODUTO,
                    ITEMPEDEXOL.DTPROGENPEOL,
                    ITEMPEDEXOL.QTPROGENPEOL,
                    ITEMPEDEXOL.CDMARCA
               FROM ITEMPEDEXOL
              WHERE ITEMPEDEXOL.CDFILDEST      = P_CDFILDEST
                AND ITEMPEDEXOL.CDFILLANC       = P_CDFILLANC
                AND ITEMPEDEXOL.NRPEDEXOL       = P_NRPEDEXOL
                AND NVL(ITEMPEDEXOL.IDEXPTITMOLEXP, 'N')  = 'N'
              ORDER BY ITEMPEDEXOL.DTPROGENPEOL, ITEMPEDEXOL.CDPRODUTO)
         LOOP
            SELECT NVL(MAX(RELACPRODOL.CDPRODARVOL), C_ITMPEDIDO.CDPRODUTO)
              INTO V_CDPRODUTO
              FROM RELACPRODOL
             WHERE RELACPRODOL.CDPRARVORIG = C_ITMPEDIDO.CDPRODUTO
               AND RELACPRODOL.CDMARCA     = C_ITMPEDIDO.CDMARCA;
            V_IDTABPRECO := NULL;

            SELECT MAX(NRITEMPED)
              INTO V_NRITEMPED
              FROM ITEMPEDIDO
             WHERE CDFILIAL     = V_CDFILIOPELOG
               AND NRPEDIDO     = V_NOVO_NRPEDIDO;

            IF V_NRITEMPED IS NULL THEN
               V_NOVO_NRITEMPED := '0000000001';
            ELSE
               SELECT LPAD((TO_CHAR(TO_NUMBER(V_NRITEMPED) + 1)), 10, '0') INTO V_NOVO_NRITEMPED FROM DUAL;
            END IF;

            SELECT NVL(MAX(VRITEPREBASE), (-1))
              INTO V_VRPREUNITPED
              FROM ITEMPREBASE
             WHERE (CDPRODUTO   = V_CDPRODUTO)
               AND (CDPRECOBASE = V_CDPRECOBASE1)
               AND (V_DTPEDIDO BETWEEN DTINIVALIPB AND NVL(DTFIMVALIPB, V_DTPEDIDO1));

            IF NVL(V_VRPREUNITPED, -1) <= 0 THEN
               SELECT CDPRODESTO, VRFATOCONV
                 INTO V_CDPRODESTO, V_VRFATOCONV
                 FROM PRODUTO
                WHERE (CDPRODUTO   = C_ITMPEDIDO.CDPRODUTO);
                  V_VRPREUNITPED := NVL(V_VRFATOCONV,1)*(CUSTO_PRODUTO(V_CDFILIOPELOG, V_CDPRODESTO, 6, V_DTPEDIDO, SYSDATE));
            END IF;

            SELECT MAX(IDTABPRECO), MAX(IDCALCPRECFAT)
                 INTO V_IDTABPRECO, V_IDCALCPRECFAT
                 FROM PARAMPEDIDO
                WHERE CDFILIAL = V_CDFILIOPELOG;

            IF P_CDFATPRECO IS NOT NULL THEN
               V_CDFATPRECO := P_CDFATPRECO;
            ELSE
               IF V_IDTABPRECO =  '2' THEN
                  BEGIN
                     SELECT CDFATPRECO
                       INTO V_CDFATPRECO
                       FROM FATORPRECO;
                  EXCEPTION
                     WHEN NO_DATA_FOUND THEN
                        V_CDFATPRECO := NULL;
                     WHEN TOO_MANY_ROWS THEN
                        RAISE_APPLICATION_ERROR(-20501, 'Existe mais de um fator cadastrado, e nao foi informado nenhum fator na geracao do pedido. ', TRUE);
                  END;
               END IF;
            END IF;

            IF V_CDFATPRECO IS NOT NULL THEN
               SELECT NVL(MAX(P.VRFATPRECO), 0)
                 INTO V_VRFATPRECO
                 FROM FATORPRECO F, PRODFATOR P
                WHERE (F.CDFATPRECO = V_CDFATPRECO)
                  AND (F.CDFATPRECO = P.CDFATPRECO)
                  AND (P.CDPRODUTO  = V_CDPRODUTO);

               IF (V_IDCALCPRECFAT = 'L') THEN
                  SELECT NVL(MAX(IDCUSEXP), 3)
                    INTO V_IDCUSEXP
                    FROM PAREXPEDICAO
                   WHERE CDFILIAL = V_CDFILIOPELOG;

                  SELECT NVL(MAX(DTPROCESSA),V_DTPEDIDO)
                    INTO V_DTPROCESSA
                    FROM PARAMFILIAL
                   WHERE CDFILIAL = V_CDFILIOPELOG;

                  V_VRCUSTPROD := CUSTO_PRODUTO(V_CDFILIOPELOG, V_CDPRODUTO, V_IDCUSEXP, V_DTPEDIDO, V_DTPROCESSA);

                  V_VRPREUNITPED := V_VRCUSTPROD * V_VRFATPRECO;
               ELSE
                  V_VRPREUNITPED := V_VRFATPRECO;
               END IF;
            END IF;

            IF (NVL(V_VRPREUNITPED, -1) > 0) THEN

               V_COUNTITM :=  V_COUNTITM + 1;

               V_DTENTPED := TO_DATE(TO_CHAR(C_ITMPEDIDO.DTPROGENPEOL, 'DD/MM/YYYY')||TO_CHAR(SYSDATE,'HH24MI'), 'DD/MM/YYYYHH24MI');

               SELECT MAX(CDPRODESTO), MAX(C_ITMPEDIDO.QTPROGENPEOL*VRFATOCONV)
                 INTO V_CDPRODESTO, V_VRPESOITPED
                 FROM PRODUTO
                WHERE PRODUTO.CDPRODUTO = V_CDPRODUTO;

               IF (TO_CHAR(C_ITMPEDIDO.DTPROGENPEOL, 'HH24') = '00') AND (TO_CHAR(C_ITMPEDIDO.DTPROGENPEOL, 'MI') = '00') THEN

                  BEGIN
                     SELECT HRENTRPROD INTO V_HRENTRPROD
                       FROM PARAMPRODMRP
                      WHERE CDPRODUTO  = V_CDPRODESTO
                        AND CDFILIAL   = P_CDFILDEST;
                  EXCEPTION
                     WHEN NO_DATA_FOUND THEN
                        V_HRENTRPROD := '0000';
                  END;

                  IF (NOT V_HRENTRPROD IS NULL) AND ( V_HRENTRPROD <> '0000') THEN
                     V_DTENTPED := TO_DATE(TO_CHAR(TO_CHAR(C_ITMPEDIDO.DTPROGENPEOL,'DD/MM/YYYY')||' '||(SUBSTR(V_HRENTRPROD,1,2)||':'||SUBSTR(V_HRENTRPROD,3,2))), 'DD/MM/YYYY HH24:MI');
                  END IF;
               END IF;

               INSERT INTO ITEMPEDIDO
                      (CDFILIAL, NRPEDIDO, NRITEMPED, IDSITITEMPED, CDPRODUTO,
                      QTITEMPED, VRPREUNITPED, QTEXPITEMPED, DTENTITPED, DSITEMPED, CDOPERADOR, VRPESOITPED, VRPRTABITPED,
                      CDFATPRECO)
               VALUES (V_CDFILIOPELOG, V_NOVO_NRPEDIDO, V_NOVO_NRITEMPED, V_IDSITITEMPED, V_CDPRODUTO,
                      C_ITMPEDIDO.QTPROGENPEOL, V_VRPREUNITPED, 0, V_DTENTPED,
                      'OL ==>'||V_TEXTO||P_CDFILDEST||' - Pedido OL: '||P_NRPEDEXOL||' - '||V_CDFILIOPELOG||
                      P_CDFILLANC||P_CDFILDEST||P_NRPEDEXOL||C_ITMPEDIDO.CDMARCA||C_ITMPEDIDO.CDPRODUTO, V_CDOPELANPED, V_VRPESOITPED, V_VRPREUNITPED,
                      V_CDFATPRECO);

               UPDATE ITEMPEDEXOL
                  SET DSINCONITMOLEXP =  V_CDFILIOPELOG||V_NOVO_NRPEDIDO||V_NOVO_NRITEMPED,
                      IDEXPTITMOLEXP  = 'S'
                WHERE CDFILDEST       = P_CDFILDEST
                  AND CDFILLANC       = P_CDFILLANC
                  AND NRPEDEXOL       = P_NRPEDEXOL
                  AND CDPRODUTO       = C_ITMPEDIDO.CDPRODUTO
                  AND CDMARCA         = C_ITMPEDIDO.CDMARCA;

               INSERT INTO ITEMPEDRELACOL
               (NRITEMPEDRELACOL, CDFILDEST, CDFILLANC, NRPEDEXOL, CDMARCA, CDPRODUTO, DTPROGENPEOL,
                CDFILIAL, NRPEDIDO, NRITEMPED)
               VALUES
               (SEQ_NRITEMPEDRELACOL.NEXTVAL, P_CDFILDEST, P_CDFILLANC, P_NRPEDEXOL, C_ITMPEDIDO.CDMARCA, C_ITMPEDIDO.CDPRODUTO, C_ITMPEDIDO.DTPROGENPEOL,
                V_CDFILIOPELOG, V_NOVO_NRPEDIDO, V_NOVO_NRITEMPED);

               IF V_COUNTITM = 1 THEN
                  UPDATE PEDIDO
                     SET DTENTPED     = C_ITMPEDIDO.DTPROGENPEOL
                   WHERE CDFILIAL     = V_CDFILIOPELOG
                     AND NRPEDIDO     = V_NOVO_NRPEDIDO
                     AND IDSITPEDIDO  = V_IDSITPEDIDO
                     AND CDCLIENTE    = V_CDCLIENTE;

               END IF;
            ELSE
               IF V_CDFATPRECO IS NULL THEN
                  P_INCONSITM := 'ERRO_VRPRECBASE';
               ELSE
                  P_INCONSITM := 'ERRO_VRFATOPRECO';
               END IF;
               UPDATE ITEMPEDEXOL
                  SET DSINCONITMOLEXP = P_INCONSITM,
                      IDEXPTITMOLEXP  = 'N'
                WHERE CDFILDEST       = P_CDFILDEST
                  AND CDFILLANC       = P_CDFILLANC
                  AND NRPEDEXOL       = P_NRPEDEXOL
                  AND CDPRODUTO       = C_ITMPEDIDO.CDPRODUTO
                  AND CDMARCA         = C_ITMPEDIDO.CDMARCA;
            END IF ;
         END LOOP;
         IF ((V_COUNTITM = 0) AND (P_INCONSITM IN ('ERRO_VRPRECBASE', 'ERRO_VRFATOPRECO')))  THEN
            DELETE
             FROM PEDIDO
            WHERE CDFILIAL = V_CDFILIOPELOG
              AND NRPEDIDO = V_NOVO_NRPEDIDO
              AND NOT EXISTS (SELECT 1
                                FROM ITEMPEDIDO
                               WHERE ITEMPEDIDO.CDFILIAL = PEDIDO.CDFILIAL
                                 AND ITEMPEDIDO.NRPEDIDO = PEDIDO.NRPEDIDO);
            IF V_IDTPFORPGTPED = 'V' THEN
               DELETE PRAZOPGTOPED
                WHERE CDFILIAL = P_CDFILDEST
                  AND NRPEDIDO = V_NOVO_NRPEDIDO;
            END IF;
         END IF;
      ELSE
         UPDATE ITEMPEDEXOL
            SET DSINCONITMOLEXP = P_INCONSITM,
                IDEXPTITMOLEXP  = 'N'
          WHERE CDFILDEST       = P_CDFILDEST
            AND CDFILLANC       = P_CDFILLANC
            AND NRPEDEXOL       = P_NRPEDEXOL;
      END IF;
      COMMIT;
   END IF;
END;