create or replace TRIGGER USR_INTEGRA_PEDIDO
AFTER INSERT ON USR_IMPORTA_PEDNEOLOG FOR EACH ROW

DECLARE
   V_COUNT    INTEGER;
   --V_VARIAVEL CLOB;
   JOB_N INT;
    V_COMANDO VARCHAR2(5000);
    V_URL VARCHAR2(200);
   V_COUNTERRO INTEGER;
   V_NRITEMPEDMAX VARCHAR2(10);
   V_CDARVPRODMAX VARCHAR2(20);
   V_PRODUTODUB   VARCHAR2(500);
BEGIN

    SELECT MAX(HTTPNEOLOG)
     INTO V_URL
     FROM PARAMGERAL
    WHERE CDPARGERAL = '0001';

   SELECT COUNT(1)
     INTO V_COUNT
     FROM USR_PEDNEOLOG
    WHERE CDFILIAL = :NEW.CDFILIAL
      AND NRPEDIDO = :NEW.NRPEDIDO;


   IF (V_COUNT = 0) THEN
      INSERT INTO USR_PEDNEOLOG
      (CDFILIAL, NRPEDIDO, DTPEDIDO, DTENTPED, OBSPEDIDO, IDPRIOPED, CDFILIALPED, DTINCLUSAOPED,
       DSENDEFILI, SGPAIS, SGESTADO, NMMUNICIPIO, NMBAIRFILI, NRENDEFILISEP, DSCOMPENDFIL, NRCEPFILI)
      (SELECT :NEW.CDFILIAL, :NEW.NRPEDIDO, MAX(P.DTPEDIDO), MAX(P.DTENTPED), '', MAX(IDPRIOPED), MAX(CDFILIALPED), NVL(:NEW.DTINCLUSAOPED, SYSDATE),
              MAX(E.DSENDEFILI), MAX(A.SGPAIS), MAX(S.SGESTADO), MAX(M.NMMUNICIPIO), MAX(E.NMBAIRFILI), MAX(E.NRENDEFILISEP), MAX(E.DSCOMPENDFIL), MAX(E.NRCEPFILI)
        FROM PEDIDO P, ENDEFILI E, PAIS A, ESTADO S, MUNICIPIO M, OBSPEDIDO O
       WHERE P.CDFILIAL = :NEW.CDFILIAL
         AND P.NRPEDIDO = :NEW.NRPEDIDO
         AND P.CDFILIALPED = E.CDFILIAL(+)
         AND E.IDTPENDEFILI(+) = 'P'
         AND E.CDPAIS = A.CDPAIS(+)
         AND E.CDPAIS = S.CDPAIS(+)
         AND E.SGESTADO = S.SGESTADO(+)
         AND E.CDPAIS = M.CDPAIS(+)
         AND E.SGESTADO = M.SGESTADO(+)
         AND E.CDMUNICIPIO = M.CDMUNICIPIO(+)
         AND P.CDFILIAL = O.CDFILIAL(+)
         AND P.NRPEDIDO = O.NRPEDIDO(+));


      INSERT INTO USR_ITEMPEDNEOLOG
      (CDFILIAL, NRPEDIDO, NRITEMPED, CDARVPROD,
       DSENDEFILI, SGPAIS, SGESTADO, NMMUNICIPIO, NMBAIRFILI, NRENDEFILISEP, DSCOMPENDFIL, NRCEPFILI,
       QTITEMPED, VRPREUNITPED, DTINCLUSAOPED)
      (SELECT :NEW.CDFILIAL, :NEW.NRPEDIDO, I.NRITEMPED, P.CDARVPROD,
              E.DSENDEFILI, A.SGPAIS, S.SGESTADO, M.NMMUNICIPIO, E.NMBAIRFILI, E.NRENDEFILISEP, E.DSCOMPENDFIL, E.NRCEPFILI,
              I.QTITEMPED, I.VRPREUNITPED, NVL(:NEW.DTINCLUSAOPED, SYSDATE)
        FROM ITEMPEDIDO I, PRODUTO P, ENDEFILI E, PAIS A, ESTADO S, MUNICIPIO M
       WHERE I.CDFILIAL = :NEW.CDFILIAL
         AND I.NRPEDIDO = :NEW.NRPEDIDO
         AND I.CDPRODUTO = P.CDPRODUTO
         AND I.CDFILIAL = E.CDFILIAL
         AND E.IDTPENDEFILI = 'P'
         AND E.CDPAIS = A.CDPAIS
         AND E.CDPAIS = S.CDPAIS
         AND E.SGESTADO = S.SGESTADO
         AND E.CDPAIS = M.CDPAIS
         AND E.SGESTADO = M.SGESTADO
         AND E.CDMUNICIPIO = M.CDMUNICIPIO);

      V_PRODUTODUB := NULL;
      FOR C_PRODDUB IN (SELECT CDARVPROD, COUNT(1)
                          FROM USR_ITEMPEDNEOLOG
                         WHERE CDFILIAL = :NEW.CDFILIAL
                           AND NRPEDIDO = :NEW.NRPEDIDO
                        GROUP BY CDARVPROD
                        HAVING COUNT(1) > 1) LOOP

         V_PRODUTODUB := V_PRODUTODUB ||' - '||C_PRODDUB.CDARVPROD;
      END LOOP;
      IF (V_PRODUTODUB IS NOT NULL) THEN
         UPDATE USR_PEDNEOLOG
            SET DSERRO = 'Produtos duplicados no pedido: '+ V_PRODUTODUB
          WHERE CDFILIAL = :NEW.CDFILIAL
            AND NRPEDIDO = :NEW.NRPEDIDO;

         UPDATE USR_ITEMPEDNEOLOG
            SET DSERRO = 'Produtos duplicados no pedido: '+ V_PRODUTODUB
          WHERE CDFILIAL = :NEW.CDFILIAL
            AND NRPEDIDO = :NEW.NRPEDIDO;
      END IF;

   END IF;
END;
/

-- VERSAO --
BEGIN atuverobj('USR_INTEGRA_PEDIDO','6.06.113'); END;

/
