create or replace PROCEDURE ARQUIVO_DIF_TO_HI(
   P_CDINSCESTA    IN MAPAAPURAC.CDINSCESTA%TYPE,  --I.E. da empresa referencia
   P_PERIODO       IN MAPAAPURAC.CDINSCESTA%TYPE,  --Periodo referEncia AAAA
   P_NRSEQARQMAG   IN ARQMAGNETICO.NRSEQARQMAG%TYPE, --Sequencial controle tabela ARQMAGNETICO
   P_CONTREG       OUT NUMBER
   )
AS
   V_CONTREG   NUMBER;
BEGIN
   V_CONTREG := 0;


    INSERT INTO ARQMAGNETICO
         (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
    SELECT
        '08'||LPAD(ROWNUM, 8, '0') ORDEM,
        'H'                                                                   || --H1 Segmento
        LPAD(P_CDINSCESTA,9,'0')                                              || --H2 Inscricao Estadual 
        P_PERIODO                                                             || --H3 Periodo de Referencia
        LPAD(IE_ORIGEM,9,'0')                                                 || --H4 Inscricao Estadual de Origem   
        TIPODOMICFISCAL                                                       || --H5 Tipo Domicilio Fiscal 
        CODMUNIBGE                                                            || --H6 Codigo do Municipio
        DECODE(UF,'TO',IBGE_ORIGEM,'9999999')                                  --H7 Municipio de Origem
        ,P_NRSEQARQMAG
    from TMP_DIF_TO_ENTSAI
    where UF = 'TO'
    and IDENTRSAIDOP = 'E'
    and IDCONTRIBICMS = 'N';

    V_CONTREG := V_CONTREG + SQL%ROWCOUNT;




    INSERT INTO ARQMAGNETICO
         (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
    SELECT
        '09'||LPAD(RTRIM(RANK () OVER (ORDER BY TIPODOMICFISCAL,LPAD(IE_ORIGEM,9,'0'))), 8, '0') ORDEM,
        'I'                                                                   || --I1 Segmento
        LPAD(P_CDINSCESTA,9,'0')                                              || --I2 Inscricao Estadual
        P_PERIODO                                                             || --I3 Periodo de Referencia
        LPAD(IE_ORIGEM,9,'0')                                                 || --I4 Inscricao Estadual de Origem   
        TIPODOMICFISCAL                                                       || --I5 Tipo Domicilio Fiscal
        CODMUNIBGE                                                            || --I6 Codigo do Municipio
        LPAD(NOTA_FISCAL,7,'0')                                               || --I7 Numero da nota
        REPLACE(LTRIM(TO_CHAR(SUM(VALOR_CONTABIL),'000000000000.00')),'.')       --I8 Valor da nota
        ,P_NRSEQARQMAG
    from TMP_DIF_TO_ENTSAI
    where UF = 'TO'
    and IDENTRSAIDOP = 'E'
    and IDCONTRIBICMS = 'N'
    GROUP BY
        LPAD(IE_ORIGEM,9,'0'),
        TIPODOMICFISCAL,
        CODMUNIBGE,
        LPAD(NOTA_FISCAL,7,'0');

    V_CONTREG := V_CONTREG + SQL%ROWCOUNT;

   P_CONTREG := V_CONTREG;
END;
/