create or replace
PROCEDURE ARQUIVO_GIM_PB(
   P_REGISTRO     IN VARCHAR,
   P_CDIMPOSTO    IN IMPOSTO.CDIMPOSTO%TYPE,
   P_CDEMPRESA    IN EMPRESA.CDEMPRESA%TYPE,
   P_CDINSCESTA   IN EMPRESA.CDINSCESTA%TYPE,
   P_CDINSCESTAST IN NOTAFISCAL.CDINSCESTAST%TYPE,
   P_DTINICIAL    IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_DTFINAL      IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_DTPOSICAO    IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_CDPAIS       IN ESTADO.CDPAIS%TYPE,
   P_SGESTADO     IN VARCHAR2,
   P_VERSAO       IN NOTAFISCAL.IDSTATUS%TYPE,
   P_FINALIDADE   IN NOTAFISCAL.IDSTATUS%TYPE,
   P_NRSEQARQMAG  IN NOTAFISCAL.NRLANCTONF%TYPE,
   P_LIVRO        IN NOTAFISCAL.NRLANCTONF%TYPE,
   P_RECIBO       IN VARCHAR)
AS
   V_CONTGERAL      NUMBER;
   V_CONTADOR       NUMBER;
   V_SOMATOTAL      NUMBER;
   V_REGISTRO50     VARCHAR2(100);
   V_REGISTRO51     VARCHAR2(100);
   V_REGISTRO53     VARCHAR2(100);
   V_REGISTRO54     VARCHAR2(100);
   V_REGISTRO55     VARCHAR2(100);
   V_REGISTRO60     VARCHAR2(100);
   V_REGISTRO61     VARCHAR2(100);
   V_REGISTRO61R    VARCHAR2(100);
   V_REGISTRO70     VARCHAR2(100);
   V_REGISTRO71     VARCHAR2(100);
   V_REGISTRO74     VARCHAR2(100);
   V_REGISTRO88     VARCHAR2(100);
   V_REGISTRO90     VARCHAR2(100);
BEGIN
  V_SOMATOTAL := 2;

-------------------------------------------------------   /* GIM_PB 10 */   ------------------------------------------------

   V_CONTADOR := ARQUIVO_10_GIM_PB(P_CDEMPRESA, P_CDINSCESTA, P_CDINSCESTAST, P_DTINICIAL,P_DTFINAL, P_VERSAO,P_FINALIDADE,P_NRSEQARQMAG);

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* GIM_PB 11 */   ------------------------------------------------

   V_CONTADOR := ARQUIVO_11_GIM_PB(P_CDEMPRESA, P_CDINSCESTA, P_CDINSCESTAST, P_NRSEQARQMAG,V_CONTADOR);

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* GIM_PB 50 */   ------------------------------------------------
   IF SUBSTR(P_REGISTRO,1,1) = 'S' THEN
      V_REGISTRO50 := NVL(ARQUIVO_50_GIM_PB(P_CDEMPRESA, P_CDINSCESTA, P_CDINSCESTAST, P_DTINICIAL, P_DTFINAL, P_CDIMPOSTO,
                                            P_CDPAIS, P_SGESTADO, P_NRSEQARQMAG, V_CONTADOR),'0');

      IF V_REGISTRO50 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO50,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO50,11,10));

      END IF;

   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* DIEF 51 */   --------------------------------------------------
   IF SUBSTR(P_REGISTRO,2,1) = 'S' THEN
      V_REGISTRO51 := ARQUIVO_51_GIM_PB(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_CDINSCESTAST, P_DTINICIAL, P_DTFINAL,
                                        P_CDPAIS, P_SGESTADO, P_NRSEQARQMAG,V_CONTADOR,P_LIVRO);

      IF V_REGISTRO51 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO51,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO51,11,10));
      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* GIM_PB 53 */   ------------------------------------------------
   IF SUBSTR(P_REGISTRO,3,1) = 'S' THEN
      V_REGISTRO53 := ARQUIVO_53_GIM_PB(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_CDINSCESTAST, P_DTINICIAL, P_DTFINAL, P_CDPAIS,
                                         P_SGESTADO, P_NRSEQARQMAG, V_CONTADOR);

      IF V_REGISTRO53 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO53,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO53,11,10));

      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* GIM_PB 54 */   ------------------------------------------------
   IF SUBSTR(P_REGISTRO,4,1) = 'S' THEN
      V_REGISTRO54 := ARQUIVO_54_GIM_PB(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_CDINSCESTAST, P_DTINICIAL, P_DTFINAL, P_CDPAIS,
                                        P_SGESTADO,P_NRSEQARQMAG, V_CONTADOR,P_LIVRO);
      IF V_REGISTRO54 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO54,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO54,11,10));
      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* GIM_PB 55 */   ------------------------------------------------
   IF SUBSTR(P_REGISTRO,5,1) = 'S' THEN
        V_REGISTRO55 := ARQUIVO_55_GIM_PB(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_CDINSCESTAST, P_DTINICIAL, P_DTFINAL, P_NRSEQARQMAG,
                                   V_CONTADOR);

      IF V_REGISTRO55 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO55,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO55,11,10));

      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* GIM_PB 60 */   ------------------------------------------------
   IF SUBSTR(P_REGISTRO,6,1) = 'S' THEN
      V_REGISTRO60 := ARQUIVO_60_GIM_PB(P_REGISTRO, P_CDEMPRESA, P_CDINSCESTA, P_DTINICIAL, P_DTFINAL, P_NRSEQARQMAG,
                                        V_CONTADOR);

      IF V_REGISTRO60 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO60,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO60,11,10));

      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* GIM_PB 61 e 61R */   ------------------------------------------
   IF SUBSTR(P_REGISTRO,7,1) = 'S' THEN
      V_REGISTRO61 := ARQUIVO_61_GIM_PB(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_CDINSCESTAST, P_DTINICIAL, P_DTFINAL,P_NRSEQARQMAG, V_CONTADOR);

      IF V_REGISTRO61 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO61,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO61,11,10));

      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* GIM_PB 70 */   ------------------------------------------------
   IF (SUBSTR(P_REGISTRO,8,5) LIKE '%S%') THEN
      V_REGISTRO70 := ARQUIVO_70_GIM_PB(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_CDINSCESTAST, P_DTINICIAL, P_DTFINAL, P_CDPAIS,
                                        P_SGESTADO, P_NRSEQARQMAG, V_CONTADOR, P_DTPOSICAO, P_VERSAO, P_REGISTRO);

      IF V_REGISTRO70 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO70,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO70,11,10));

      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* GIM_PB 88 */   ------------------------------------------------
   IF SUBSTR(P_REGISTRO,13,1) = 'S' THEN
      V_REGISTRO88 := ARQUIVO_88_GIM_PB(P_CDIMPOSTO, P_CDEMPRESA, P_CDINSCESTA, P_CDINSCESTAST, P_FINALIDADE, P_DTINICIAL, P_DTFINAL, P_NRSEQARQMAG,
                                        V_CONTADOR, P_LIVRO, P_RECIBO);
      IF V_REGISTRO88 > 0 THEN
         V_CONTGERAL := TO_NUMBER(SUBSTR(V_REGISTRO88,1,10));
         V_SOMATOTAL := NVL(V_SOMATOTAL,0)+NVL(V_CONTGERAL,0);
         V_CONTADOR  := TO_NUMBER(SUBSTR(V_REGISTRO88,11,10));

      END IF;
   END IF;

----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------   /* DIEF 90 */   --------------------------------------------------
   V_REGISTRO90 := ARQUIVO_90_GIM_PB(P_CDEMPRESA, P_CDINSCESTA, P_CDINSCESTAST, V_SOMATOTAL+1, V_CONTADOR, P_NRSEQARQMAG);

   EXECUTE IMMEDIATE
   'TRUNCATE TABLE TMP_REGISTRO_PRODUTO';
   COMMIT;
END;
/

-- VERSAO --
BEGIN ATUVEROBJ('ARQUIVO_GIM_PB','6.39.013'); END;
/

