create or replace PROCEDURE PROT_EXPORTA_NFENTRADA
IS
V_CDFIL_EXP VARCHAR2(4);
V_EMPRESA   VARCHAR2(2);
V_CPASS     VARCHAR2(5);
V_NOPC      VARCHAR2(1);
V_CFORMUL VARCHAR2(1);
V_CTIPO   VARCHAR2(1);
V_CDOC    VARCHAR2(9);
V_CSERIE  VARCHAR2(5);
V_DTEMISSAO  VARCHAR2(10);
V_CFORNECE VARCHAR2(14);
V_CESPECIE varchar2(10);
V_CUF VARCHAR2(2);
V_CCHVNFE VARCHAR2(44);
V_SGESTADO VARCHAR2(5);
/* ITEMPRODUTO */
V_CCOD    VARCHAR2(15);
V_CQUANT  FLOAT;
V_CVUNIT  FLOAT;
V_CTOTAL  FLOAT;
V_CLOCAL  VARCHAR2(2);
V_CUM     VARCHAR2(5);
V_CLOJA   VARCHAR2(2);
V_CEMPAUX  VARCHAR2(2);
V_CFILAUX  VARCHAR2(20);
V_EMPR_PROTHEUS VARCHAR2(02);
V_CDFIL_PROTHEUS VARCHAR2(02);

V_IDORIGDESTNF VARCHAR2(1);
V_CDFILIRECE VARCHAR2(4);
V_CDFORNECED VARCHAR2(21);
V_CDFILIAL    VARCHAR2(4);
V_NRLANCTONF  VARCHAR2(10);
V_NRSEQITPROD VARCHAR2(4);
V_ERRO VARCHAR2(500);

V_NRINSJURNF    VARCHAR2(20);
V_NRINSJURIEST  VARCHAR2(20);
V_CCUSTO        VARCHAR2(20);

CURSOR C_NOTAS(C_CDFILLANC IN VARCHAR2) IS
SELECT N.CDFILIAL, N.NRLANCTONF,
       CASE WHEN T.CDTIPOOPER = '03' THEN 'P'
            WHEN T.IDNOTADEVO = 'S'  THEN 'D'
            WHEN T.IDCMPVNDBONI = 'S' THEN 'B'
          ELSE 'N' END AS CTIPO,
       NVL(SUBSTR(N.NRNOTAFISC, -9), N.NRNOTAFISC) CDOC,
       LPAD(N.CDSERIEENTR,3,0) CSERIE,
       TO_CHAR(N.DTEMISSAO,'YYYY/MM/DD') DTEMISSAO,
       SUBSTR(REGEXP_REPLACE(NVL(N.NRINSJURNF, F.NRINSJURFORN), '\D'), 1, 14) CFORNECE,
       N.IDORIGDESTNF,
       N.CDFILIRECE,
       F.CDFORNECED,
       CASE WHEN N.CDMODDOCFISC = '57' THEN 'CTE'
            WHEN N.CDMODDOCFISC = '67' THEN 'CTEOS'
            WHEN N.CDMODDOCFISC = '55' THEN 'SPED'
            WHEN N.CDMODDOCFISC = '05' THEN 'NFCF'
            WHEN N.CDMODDOCFISC = '06' THEN 'NFPS'
            WHEN N.CDMODDOCFISC = '04' THEN 'NFS'
            WHEN N.CDMODDOCFISC = '01' THEN 'NFE'
          ELSE 'NF' END AS CESPECIE,
       F.SGESTADO CUF,
       NRACESSONFE AS CCHVNFE,
       CDEMPRE_PROTHEUS,
       CDFIL_PROTHEUS,
       N.NRINSJURNF,
       I.NRINSJURIEST,
       P.CDEXFILIAL
  FROM NOTAFISCAL N
 INNER JOIN PARAMFILIAL P
    ON N.CDFILIRECE = P.CDFILIAL
 INNER JOIN TIPOOPERAC T
    ON N.IDENTRSAIDOP = T.IDENTRSAIDOP
   AND N.CDTIPOOPER   = T.CDTIPOOPER
   AND T.IDENTRSAIDOP = 'E'
   AND T.CDTIPOOPER <> '18'
 INNER JOIN INSCRESTAD I
    ON N.CDEMPRESA  = I.CDEMPRESA
   AND N.CDINSCESTA = I.CDINSCESTA
 INNER JOIN (SELECT PARAMEMPRESA.CDEMPINTEGRACAO AS CDFIL_PROTHEUS, PARAMEMPRESA.CDEXPORTEMPR AS CDEMPRE_PROTHEUS, EMPRESA.CDEMPRESA AS CDEMPR_TEK
               FROM PARAMEMPRESA
              INNER JOIN EMPRESA
                 ON EMPRESA.CDEMPRESA = PARAMEMPRESA.CDEMPRESA
              ) EMPR_PROTHEUS
    ON N.CDEMPRESA = EMPR_PROTHEUS.CDEMPR_TEK
  LEFT JOIN (SELECT FORNECEDOR.CDFORNECED, FORNECEDOR.NRINSJURFORN, ENDEFORN.SGESTADO
               FROM FORNECEDOR
              INNER JOIN ENDEFORN
                 ON FORNECEDOR.CDFORNECED = ENDEFORN.CDFORNECED
                AND ENDEFORN.IDTPENDEFORN = 'P') F
    ON N.CDFORNECED   = F.CDFORNECED
 WHERE N.NRNOTAFISC IS NOT NULL
   AND EXISTS(SELECT CDFILIAL
                FROM ITEMPRODUTO I
               WHERE I.CDFILIAL = N.CDFILIAL
                 AND I.NRLANCTONF = N.NRLANCTONF
                 AND I.DTEXPXMLPROT IS NULL);

CURSOR C_ITEMPRODUTO(C_CDFILIAL IN VARCHAR2, C_NRLANCTONF IN VARCHAR2) IS
SELECT P.CDARVPROD CCOD, I.QTITEMPROD CQUANT, I.VRUNITITEM CVUNIT, I.VRTOTAITEM CTOTAL, I.CDALMOXARIFE CLOCAL, P.SGUNIDADE CUM,
       I.NRSEQITPROD
  FROM ITEMPRODUTO I, PRODUTO P
 WHERE I.CDPRODUTO  = P.CDPRODUTO
   AND I.CDFILIAL   = C_CDFILIAL
   AND I.NRLANCTONF = C_NRLANCTONF;

BEGIN
   V_CPASS   := 'SPORT';
   V_NOPC    := '3';
   V_CLOJA   := '01';
   V_CFORMUL := NULL;

   DELETE FROM USR_PROT_NFENTRADA;

   DELETE FROM USR_PROT_ITEMENTRADA;

   DELETE USR_PROT_INTEGRACAO
    WHERE CDLOG = 'EnviarNFE'
      AND (OBSLOG = NULL);
   COMMIT;

      OPEN C_NOTAS(V_CDFIL_EXP);
      LOOP
         FETCH C_NOTAS INTO V_CDFILIAL, V_NRLANCTONF, V_CTIPO, V_CDOC, V_CSERIE, V_DTEMISSAO, V_CFORNECE,
                            V_IDORIGDESTNF, V_CDFILIRECE, V_CDFORNECED, V_CESPECIE, V_CUF, V_CCHVNFE, V_EMPR_PROTHEUS, V_CDFIL_PROTHEUS,
                            V_NRINSJURNF, V_NRINSJURIEST, V_CCUSTO;
         EXIT WHEN C_NOTAS%NOTFOUND;

         BEGIN
            IF V_IDORIGDESTNF = 'F' THEN
               SELECT SGESTADO
                 INTO V_SGESTADO
                 FROM ENDEFORN
                WHERE CDFORNECED = V_CDFORNECED
                  AND IDTPENDEFORN = 'P';
            ELSE
               SELECT SGESTADO
                 INTO V_SGESTADO
                 FROM ENDEFILI
                WHERE CDFILIAL = V_CDFILIRECE
                  AND IDTPENDEFILI = 'P';
            END IF;
         EXCEPTION
            WHEN OTHERS THEN
               V_SGESTADO := NULL;
         END;

         IF (V_CTIPO = 'D') AND (V_NRINSJURNF = V_NRINSJURIEST) THEN
            V_CFORMUL := 'S';
         ELSE
            V_CFORMUL := NULL;
         END IF;

         IF (V_SGESTADO IS NOT NULL) THEN

            INSERT INTO USR_PROT_NFENTRADA(CPASS, NOPC, CTIPO, CFORMUL, CDOC, CSERIE, DTEMISSAO,
                                           CFORNECE, CLOJA, CEMPAUX, CFILAUX, CDFILIAL, NRLANCTONF,
                                           CESPECIE, CUF, CCHVNFE, CCUSTO)
            VALUES(V_CPASS, V_NOPC, V_CTIPO, V_CFORMUL, V_CDOC, V_CSERIE, V_DTEMISSAO,
                   V_CFORNECE, V_CLOJA, V_EMPR_PROTHEUS, V_CDFIL_PROTHEUS, V_CDFILIAL, V_NRLANCTONF,
                   V_CESPECIE, V_SGESTADO, V_CCHVNFE, V_CCUSTO);

            OPEN C_ITEMPRODUTO(V_CDFILIAL, V_NRLANCTONF);
            LOOP
               FETCH C_ITEMPRODUTO INTO V_CCOD, V_CQUANT, V_CVUNIT, V_CTOTAL, V_CLOCAL, V_CUM, V_NRSEQITPROD;
               EXIT WHEN C_ITEMPRODUTO%NOTFOUND;

               INSERT INTO USR_PROT_ITEMENTRADA(CCOD, CQUANT, CVUNIT, CTOTAL, CLOCAL, CUM, CDFILIAL, NRLANCTONF, NRSEQITPROD)
               VALUES(V_CCOD, V_CQUANT, V_CVUNIT, V_CTOTAL, V_CLOCAL, V_CUM, V_CDFILIAL, V_NRLANCTONF, V_NRSEQITPROD);

            END LOOP;
            CLOSE C_ITEMPRODUTO;

         END IF;
      END LOOP;
      CLOSE C_NOTAS;

      COMMIT;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('PROT_EXPORTA_NFENTRADA','6.35.041'); END;
/
