CREATE OR ALTER procedure spc_nfs_faturamento8 (
    estabelecimento_1 integer,
    estabelecimento_2 integer,
    supervisor_1 varchar(10),
    representante_1 integer,
    representante_2 integer,
    empresa_1 integer,
    empresa_2 integer,
    data_1 date,
    data_2 date,
    notafiscal_1 integer,
    notafiscal_2 integer,
    uf_1 varchar(2),
    serie_1 varchar(3),
    devsim char(1),
    classificacao_1 char(1))
returns (
    estabelecimento_codigo integer,
    estabelecimento_fantasia varchar(50),
    data date,
    numero_notafiscal integer,
    empresa_codigo integer,
    empresa_nomefantasia varchar(23),
    empresa_razaosocial varchar(60),
    valor_total numeric(10,2),
    valor_desconto numeric(10,2),
    valor_acrescimo numeric(10,2),
    quantidade numeric(10,4),
    valor_total_dev numeric(10,2),
    quant_total_dev numeric(10,4),
    observacao varchar(15),
    data_remessa date)
as
BEGIN

end;

CREATE OR ALTER procedure spc_nfs_faturamento9 (
    estabelecimento_1 integer,
    estabelecimento_2 integer,
    supervisor_1 varchar(10),
    representante_1 integer,
    representante_2 integer,
    empresa_1 integer,
    empresa_2 integer,
    data_1 date,
    data_2 date,
    notafiscal_1 integer,
    notafiscal_2 integer,
    uf_1 varchar(2),
    serie_1 varchar(3),
    devsim char(1),
    classificacao_1 char(1))
returns (
    estabelecimento_codigo integer,
    estabelecimento_fantasia varchar(50),
    data date,
    numero_notafiscal integer,
    empresa_codigo integer,
    empresa_nomefantasia varchar(23),
    empresa_razaosocial varchar(60),
    valor_total numeric(10,2),
    valor_desconto numeric(10,2),
    valor_acrescimo numeric(10,2),
    valor_frete numeric(10,2),
    quantidade numeric(10,4),
    valor_total_dev numeric(10,2),
    quant_total_dev numeric(10,4),
    observacao varchar(15),
    data_remessa date)
as
BEGIN

end;


CREATE OR ALTER procedure spi_nfe4 (
    estabelecimento_codigo integer,
    numero_notafiscal integer,
    serie varchar(3),
    empresa_codigo integer,
    natureza integer,
    data_entrada date,
    data_emissao date,
    controle integer,
    situacao integer,
    cfop_codigo varchar(5),
    cfop_descricao varchar(60),
    usuario_codigo integer,
    usuario_data date,
    empresa_razaosocial varchar(50),
    empresa_cnpj varchar(14),
    empresa_ie varchar(20),
    empresa_endereco varchar(50),
    empresa_numero varchar(5),
    empresa_bairro varchar(20),
    empresa_cidade varchar(40),
    empresa_cep varchar(8),
    empresa_uf varchar(2),
    suframa varchar(9),
    chave_acesso varchar(44),
    tipo char(1),
    classificacao char(1),
    xml char(2),
    danfe char(1),
    pagamento char(1),
    protocolo_cancelamento varchar(20),
    motivo_cancelamento varchar(50),
    sped char(1),
    modelo char(2),
    especie1 varchar(5),
    data_fiscal date,
    fiscal_cfop_codigo varchar(5),
    basecalculo_icms numeric(10,5),
    basecalculo_icms_subst numeric(10,5),
    valor_icms numeric(10,5),
    valor_icms_subst numeric(10,5),
    valor_ipi numeric(10,5),
    valor_issqn numeric(10,5),
    valor_frete numeric(10,5),
    valor_seguro numeric(10,5),
    valor_pis numeric(10,5),
    valor_cofins numeric(10,5),
    valor_csll numeric(10,5),
    retencao_base_calculo_irrf numeric(10,2),
    retencao_base_calculo_inss numeric(10,2),
    di_base_calculo numeric(10,2),
    di_despesas_aduaneiras numeric(10,2),
    di_valor_ii numeric(10,2),
    di_valor_iof numeric(10,2),
    valor_desconto numeric(10,5),
    valor_acrescimo numeric(10,5),
    valor_outroscustos numeric(10,5),
    valor_total_produto numeric(10,5),
    valor_total_nf numeric(10,5),
    retencao_valor_pis numeric(10,5),
    retencao_valor_cofins numeric(10,5),
    retencao_valor_inss numeric(10,5),
    retencao_valor_issqn numeric(10,5),
    retencao_valor_irrf numeric(10,5),
    retencao_valor_csll numeric(10,5),
    valor_parcelas numeric(10,5),
    valor_contabil numeric(10,2),
    valor_pedagio numeric(10,2),
    transportadora_codigo integer,
    frete integer,
    ind_nat_frete varchar(1),
    placa varchar(8),
    placa_uf varchar(2),
    volumes integer,
    especie varchar(10),
    marca varchar(10),
    peso_bruto numeric(10,5),
    peso_liquido numeric(10,5),
    numero varchar(10),
    observacao01 varchar(130),
    observacao02 varchar(130),
    observacao03 varchar(130),
    observacao04 varchar(130),
    observacao05 varchar(130),
    observacao06 varchar(130),
    observacao07 varchar(130),
    observacao08 varchar(130),
    observacao09 varchar(130),
    observacao10 varchar(130),
    observacao11 varchar(130),
    observacao12 varchar(130),
    observacao13 varchar(130),
    observacao14 varchar(130),
    observacao15 varchar(130),
    tipo_doc char(1),
    sped_piscof char(1))
as
BEGIN

end;


CREATE OR ALTER procedure spi_nfe5 (
    estabelecimento_codigo integer,
    numero_notafiscal integer,
    serie varchar(3),
    empresa_codigo integer,
    natureza integer,
    data_entrada date,
    data_emissao date,
    hora_emissao varchar(5),
    hora_entrada varchar(5),
    controle integer,
    situacao integer,
    cfop_codigo varchar(5),
    cfop_descricao varchar(60),
    usuario_codigo integer,
    usuario_data date,
    empresa_razaosocial varchar(50),
    empresa_cnpj varchar(14),
    empresa_ie varchar(20),
    empresa_endereco varchar(50),
    empresa_numero varchar(5),
    empresa_bairro varchar(20),
    empresa_cidade varchar(40),
    empresa_cep varchar(8),
    empresa_uf varchar(2),
    suframa varchar(9),
    chave_acesso varchar(44),
    tipo char(1),
    classificacao char(1),
    xml char(2),
    danfe char(1),
    pagamento char(1),
    protocolo_cancelamento varchar(20),
    motivo_cancelamento varchar(50),
    sped char(1),
    modelo char(2),
    especie1 varchar(5),
    data_fiscal date,
    fiscal_cfop_codigo varchar(5),
    basecalculo_icms numeric(10,5),
    basecalculo_icms_subst numeric(10,5),
    valor_icms numeric(10,5),
    valor_icms_subst numeric(10,5),
    valor_ipi numeric(10,5),
    valor_issqn numeric(10,5),
    valor_frete numeric(10,5),
    valor_seguro numeric(10,5),
    valor_pis numeric(10,5),
    valor_cofins numeric(10,5),
    valor_csll numeric(10,5),
    retencao_base_calculo_irrf numeric(10,2),
    retencao_base_calculo_inss numeric(10,2),
    di_base_calculo numeric(10,2),
    di_despesas_aduaneiras numeric(10,2),
    di_valor_ii numeric(10,2),
    di_valor_iof numeric(10,2),
    valor_desconto numeric(10,5),
    valor_acrescimo numeric(10,5),
    valor_outroscustos numeric(10,5),
    valor_total_produto numeric(10,5),
    valor_total_nf numeric(10,5),
    retencao_valor_pis numeric(10,5),
    retencao_valor_cofins numeric(10,5),
    retencao_valor_inss numeric(10,5),
    retencao_valor_issqn numeric(10,5),
    retencao_valor_irrf numeric(10,5),
    retencao_valor_csll numeric(10,5),
    valor_parcelas numeric(10,5),
    valor_contabil numeric(10,2),
    valor_pedagio numeric(10,2),
    transportadora_codigo integer,
    frete integer,
    ind_nat_frete varchar(1),
    placa varchar(8),
    placa_uf varchar(2),
    volumes integer,
    especie varchar(10),
    marca varchar(10),
    peso_bruto numeric(10,5),
    peso_liquido numeric(10,5),
    numero varchar(10),
    observacao01 varchar(130),
    observacao02 varchar(130),
    observacao03 varchar(130),
    observacao04 varchar(130),
    observacao05 varchar(130),
    observacao06 varchar(130),
    observacao07 varchar(130),
    observacao08 varchar(130),
    observacao09 varchar(130),
    observacao10 varchar(130),
    observacao11 varchar(130),
    observacao12 varchar(130),
    observacao13 varchar(130),
    observacao14 varchar(130),
    observacao15 varchar(130),
    tipo_doc char(1),
    sped_piscof char(1))
as
BEGIN

end;


CREATE OR ALTER procedure spi_nfe6 (
    estabelecimento_codigo integer,
    numero_notafiscal integer,
    serie varchar(3),
    empresa_codigo integer,
    natureza integer,
    data_entrada date,
    data_emissao date,
    hora_emissao varchar(5),
    hora_entrada varchar(5),
    controle integer,
    situacao integer,
    cfop_codigo varchar(5),
    cfop_descricao varchar(60),
    usuario_codigo integer,
    usuario_data date,
    empresa_razaosocial varchar(50),
    empresa_cnpj varchar(14),
    empresa_ie varchar(20),
    empresa_endereco varchar(50),
    empresa_numero varchar(5),
    empresa_bairro varchar(20),
    empresa_cidade varchar(40),
    empresa_cep varchar(8),
    empresa_uf varchar(2),
    suframa varchar(9),
    chave_acesso varchar(44),
    tipo char(1),
    classificacao char(1),
    xml char(2),
    danfe char(1),
    pagamento char(1),
    protocolo_cancelamento varchar(20),
    motivo_cancelamento varchar(50),
    sped char(1),
    modelo char(2),
    especie1 varchar(5),
    data_fiscal date,
    fiscal_cfop_codigo varchar(5),
    basecalculo_icms numeric(10,5),
    basecalculo_icms_subst numeric(10,5),
    valor_icms numeric(10,5),
    valor_icms_subst numeric(10,5),
    valor_ipi numeric(10,5),
    valor_issqn numeric(10,5),
    valor_frete numeric(10,5),
    valor_seguro numeric(10,5),
    valor_pis numeric(10,5),
    valor_cofins numeric(10,5),
    valor_csll numeric(10,5),
    retencao_base_calculo_irrf numeric(10,2),
    retencao_base_calculo_inss numeric(10,2),
    di_base_calculo numeric(10,2),
    di_despesas_aduaneiras numeric(10,2),
    di_valor_ii numeric(10,2),
    di_valor_iof numeric(10,2),
    valor_desconto numeric(10,5),
    valor_acrescimo numeric(10,5),
    valor_outroscustos numeric(10,5),
    valor_total_produto numeric(10,5),
    valor_total_nf numeric(10,5),
    retencao_valor_pis numeric(10,5),
    retencao_valor_cofins numeric(10,5),
    retencao_valor_inss numeric(10,5),
    retencao_valor_issqn numeric(10,5),
    retencao_valor_irrf numeric(10,5),
    retencao_valor_csll numeric(10,5),
    valor_parcelas numeric(10,5),
    valor_contabil numeric(10,2),
    valor_pedagio numeric(10,2),
    transportadora_codigo integer,
    frete integer,
    ind_nat_frete varchar(1),
    placa varchar(8),
    placa_uf varchar(2),
    volumes integer,
    especie varchar(10),
    marca varchar(10),
    peso_bruto numeric(10,5),
    peso_liquido numeric(10,5),
    numero varchar(10),
    observacao01 varchar(130),
    observacao02 varchar(130),
    observacao03 varchar(130),
    observacao04 varchar(130),
    observacao05 varchar(130),
    observacao06 varchar(130),
    observacao07 varchar(130),
    observacao08 varchar(130),
    observacao09 varchar(130),
    observacao10 varchar(130),
    observacao11 varchar(130),
    observacao12 varchar(130),
    observacao13 varchar(130),
    observacao14 varchar(130),
    observacao15 varchar(130),
    tipo_doc char(1),
    sped_piscof char(1),
    ind_final char(1))
as
BEGIN

end;

CREATE OR ALTER procedure spi_nfe7 (
    estabelecimento_codigo integer,
    numero_notafiscal integer,
    serie varchar(3),
    empresa_codigo integer,
    natureza integer,
    data_entrada date,
    data_emissao date,
    hora_emissao varchar(5),
    hora_entrada varchar(5),
    controle integer,
    situacao integer,
    cfop_codigo varchar(5),
    cfop_descricao varchar(60),
    usuario_codigo integer,
    usuario_data date,
    empresa_razaosocial varchar(50),
    empresa_cnpj varchar(14),
    empresa_ie varchar(20),
    empresa_endereco varchar(200),
    empresa_numero varchar(20),
    empresa_bairro varchar(20),
    empresa_cidade varchar(40),
    empresa_cep varchar(8),
    empresa_uf varchar(2),
    suframa varchar(9),
    chave_acesso varchar(44),
    tipo char(1),
    classificacao char(1),
    xml char(2),
    danfe char(1),
    pagamento char(1),
    protocolo_cancelamento varchar(20),
    motivo_cancelamento varchar(50),
    sped char(1),
    modelo char(2),
    especie1 varchar(5),
    data_fiscal date,
    fiscal_cfop_codigo varchar(5),
    basecalculo_icms numeric(10,5),
    basecalculo_icms_subst numeric(10,5),
    valor_icms numeric(10,5),
    valor_icms_subst numeric(10,5),
    valor_ipi numeric(10,5),
    valor_issqn numeric(10,5),
    valor_frete numeric(10,5),
    valor_seguro numeric(10,5),
    valor_pis numeric(10,5),
    valor_cofins numeric(10,5),
    valor_csll numeric(10,5),
    retencao_base_calculo_irrf numeric(10,2),
    retencao_base_calculo_inss numeric(10,2),
    di_base_calculo numeric(10,2),
    di_despesas_aduaneiras numeric(10,2),
    di_valor_ii numeric(10,2),
    di_valor_iof numeric(10,2),
    valor_desconto numeric(10,5),
    valor_acrescimo numeric(10,5),
    valor_outroscustos numeric(10,5),
    valor_total_produto numeric(10,5),
    valor_total_nf numeric(10,5),
    retencao_valor_pis numeric(10,5),
    retencao_valor_cofins numeric(10,5),
    retencao_valor_inss numeric(10,5),
    retencao_valor_issqn numeric(10,5),
    retencao_valor_irrf numeric(10,5),
    retencao_valor_csll numeric(10,5),
    valor_parcelas numeric(10,5),
    valor_contabil numeric(10,2),
    valor_pedagio numeric(10,2),
    transportadora_codigo integer,
    frete integer,
    ind_nat_frete varchar(1),
    placa varchar(8),
    placa_uf varchar(2),
    volumes integer,
    especie varchar(10),
    marca varchar(10),
    peso_bruto numeric(10,5),
    peso_liquido numeric(10,5),
    numero varchar(10),
    observacao01 varchar(130),
    observacao02 varchar(130),
    observacao03 varchar(130),
    observacao04 varchar(130),
    observacao05 varchar(130),
    observacao06 varchar(130),
    observacao07 varchar(130),
    observacao08 varchar(130),
    observacao09 varchar(130),
    observacao10 varchar(130),
    observacao11 varchar(130),
    observacao12 varchar(130),
    observacao13 varchar(130),
    observacao14 varchar(130),
    observacao15 varchar(130),
    tipo_doc char(1),
    sped_piscof char(1),
    ind_final char(1),
    cmunini varchar(10),
    cmunfim varchar(10))
as
BEGIN

end;

CREATE OR ALTER trigger ttbnfe_b0u_01 for tbnfe
active before update position 0
AS
DECLARE VARIABLE DataInicial Date;
DECLARE VARIABLE DataFinal Date;
DECLARE VARIABLE MODULO_CODIGO INTEGER;

DECLARE VARIABLE DATA1 VARCHAR(10);
DECLARE VARIABLE DATA2 VARCHAR(10);
DECLARE VARIABLE DATA3 VARCHAR(23);
Begin

end;

ALTER TABLE TBNFE ADD OLD_PERFIL VARCHAR(10) DEFAULT '';
update TBNFE set OLD_PERFIL = CLASSIFICACAO;
ALTER TABLE TBNFE DROP CLASSIFICACAO;
ALTER TABLE TBNFE ADD CLASSIFICACAO VARCHAR(10) DEFAULT '';
update TBNFE set CLASSIFICACAO = OLD_PERFIL;
ALTER TABLE TBNFE DROP OLD_PERFIL;


CREATE OR ALTER trigger ttbnfe_b0u_01 for tbnfe
active before update position 0
AS
DECLARE VARIABLE DataInicial Date;
DECLARE VARIABLE DataFinal Date;
DECLARE VARIABLE MODULO_CODIGO INTEGER;

DECLARE VARIABLE DATA1 VARCHAR(10);
DECLARE VARIABLE DATA2 VARCHAR(10);
DECLARE VARIABLE DATA3 VARCHAR(23);
Begin
  if (old.SALESFORCE = new.SALESFORCE) then
      Begin
        For
        Select  
        (Select First 1 A.DataInicial   From TbConfiguracao_Periodo A Where A.Estabelecimento_Codigo = OLD.ESTABELECIMENTO_CODIGO and A.Modulo_Codigo = 3),
        (Select First 1 A.DataFINAL     From TbConfiguracao_Periodo A Where A.Estabelecimento_Codigo = OLD.ESTABELECIMENTO_CODIGO and A.Modulo_Codigo = 3),
        Coalesce((Select First 1 A.MODULO_CODIGO From TbConfiguracao_Periodo A Where A.Estabelecimento_Codigo = OLD.ESTABELECIMENTO_CODIGO and A.Modulo_Codigo = 3),0),
        
        extract(day from OLD.DATA_ENTRADA)||'/'||extract(month from OLD.DATA_ENTRADA)||'/'||extract(year from OLD.DATA_ENTRADA),
        extract(day from NEW.DATA_ENTRADA)||'/'||extract(month from NEW.DATA_ENTRADA)||'/'||extract(year from NEW.DATA_ENTRADA),
        (Select First 1 extract(day from A.DataInicial)||'/'||extract(month from A.DataInicial)||'/'||extract(year from A.DataInicial)
                        ||' A '||extract(day from A.DataFINAL)||'/'||extract(month from A.DataFINAL)||'/'||extract(year from A.DataFINAL)
           From TbConfiguracao_Periodo A Where A.Estabelecimento_Codigo = OLD.ESTABELECIMENTO_CODIGO and A.Modulo_Codigo = 3)
        
        FROM RDB$DATABASE
        
        Into :DataInicial,:DataFinal,:MODULO_CODIGO,:DATA1,:DATA2,:DATA3
        Do
        begin
          if (:MODULO_CODIGO = 0)      Then Exception "..." 'MODULO DE NFE[3] NAO LOCALIZADO PARA ESSE ESTABELECIMENTO. ID.'||OLD.ESTABELECIMENTO_CODIGO||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
          if (OLD.DATA_ENTRADA < :DATAINICIAL) Then Exception "..." 'MODULO DE NFE[3]. DATA '||:DATA1||' FORA DO PERIODO LIBERADO: '||:DATA3||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
          if (OLD.DATA_ENTRADA > :DATAFINAL)   Then Exception "..." 'MODULO DE NFE[3]. DATA '||:DATA1||' FORA DO PERIODO LIBERADO: '||:DATA3||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
          if (NEW.DATA_ENTRADA < :DATAINICIAL) Then Exception "..." 'MODULO DE NFE[3]. DATA '||:DATA2||' FORA DO PERIODO LIBERADO: '||:DATA3||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
          if (NEW.DATA_ENTRADA > :DATAFINAL)   Then Exception "..." 'MODULO DE NFE[3]. DATA '||:DATA2||' FORA DO PERIODO LIBERADO: '||:DATA3||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
        end
     End
End;


CREATE OR ALTER procedure spi_nfe7 (
    estabelecimento_codigo integer,
    numero_notafiscal integer,
    serie varchar(3),
    empresa_codigo integer,
    natureza integer,
    data_entrada date,
    data_emissao date,
    hora_emissao varchar(5),
    hora_entrada varchar(5),
    controle integer,
    situacao integer,
    cfop_codigo varchar(5),
    cfop_descricao varchar(60),
    usuario_codigo integer,
    usuario_data date,
    empresa_razaosocial varchar(50),
    empresa_cnpj varchar(14),
    empresa_ie varchar(20),
    empresa_endereco varchar(200),
    empresa_numero varchar(20),
    empresa_bairro varchar(20),
    empresa_cidade varchar(40),
    empresa_cep varchar(8),
    empresa_uf varchar(2),
    suframa varchar(9),
    chave_acesso varchar(44),
    tipo char(1),
    classificacao char(1),
    xml char(2),
    danfe char(1),
    pagamento char(1),
    protocolo_cancelamento varchar(20),
    motivo_cancelamento varchar(50),
    sped char(1),
    modelo char(2),
    especie1 varchar(5),
    data_fiscal date,
    fiscal_cfop_codigo varchar(5),
    basecalculo_icms numeric(10,5),
    basecalculo_icms_subst numeric(10,5),
    valor_icms numeric(10,5),
    valor_icms_subst numeric(10,5),
    valor_ipi numeric(10,5),
    valor_issqn numeric(10,5),
    valor_frete numeric(10,5),
    valor_seguro numeric(10,5),
    valor_pis numeric(10,5),
    valor_cofins numeric(10,5),
    valor_csll numeric(10,5),
    retencao_base_calculo_irrf numeric(10,2),
    retencao_base_calculo_inss numeric(10,2),
    di_base_calculo numeric(10,2),
    di_despesas_aduaneiras numeric(10,2),
    di_valor_ii numeric(10,2),
    di_valor_iof numeric(10,2),
    valor_desconto numeric(10,5),
    valor_acrescimo numeric(10,5),
    valor_outroscustos numeric(10,5),
    valor_total_produto numeric(10,5),
    valor_total_nf numeric(10,5),
    retencao_valor_pis numeric(10,5),
    retencao_valor_cofins numeric(10,5),
    retencao_valor_inss numeric(10,5),
    retencao_valor_issqn numeric(10,5),
    retencao_valor_irrf numeric(10,5),
    retencao_valor_csll numeric(10,5),
    valor_parcelas numeric(10,5),
    valor_contabil numeric(10,2),
    valor_pedagio numeric(10,2),
    transportadora_codigo integer,
    frete integer,
    ind_nat_frete varchar(1),
    placa varchar(8),
    placa_uf varchar(2),
    volumes integer,
    especie varchar(10),
    marca varchar(10),
    peso_bruto numeric(10,5),
    peso_liquido numeric(10,5),
    numero varchar(10),
    observacao01 varchar(130),
    observacao02 varchar(130),
    observacao03 varchar(130),
    observacao04 varchar(130),
    observacao05 varchar(130),
    observacao06 varchar(130),
    observacao07 varchar(130),
    observacao08 varchar(130),
    observacao09 varchar(130),
    observacao10 varchar(130),
    observacao11 varchar(130),
    observacao12 varchar(130),
    observacao13 varchar(130),
    observacao14 varchar(130),
    observacao15 varchar(130),
    tipo_doc char(1),
    sped_piscof char(1),
    ind_final char(1),
    cmunini varchar(10),
    cmunfim varchar(10))
as
BEGIN
INSERT INTO TbNfe (
Estabelecimento_Codigo,Numero_NotaFiscal,Serie,Empresa_Codigo,Natureza,
Data_Entrada,Data_Emissao,hora_emissao,hora_entrada,
Controle,Situacao,Cfop_Codigo,Cfop_Descricao,Usuario_Codigo,
Usuario_Data,Empresa_RazaoSocial,Empresa_Cnpj,Empresa_Ie,Empresa_Endereco,
Empresa_Numero,Empresa_Bairro,Empresa_Cidade,Empresa_Cep,Empresa_Uf,SUFRAMA,CHAVE_ACESSO,
TIPO,XML,DANFE,PAGAMENTO,protocolo_cancelamento,motivo_cancelamento,
sped,modelo,especie,DATA_FISCAL,FISCAL_CFOP_CODIGO,
Tipo_Doc,Classificacao,Sped_PisCof,IND_FINAL) VALUES (
:Estabelecimento_Codigo,:Numero_NotaFiscal,:Serie,:Empresa_Codigo,:Natureza,
:Data_Entrada,:Data_Emissao,:hora_emissao,:hora_entrada,:Controle,:Situacao,
:Cfop_Codigo,:Cfop_Descricao,
:Usuario_Codigo,:Usuario_Data,:Empresa_RazaoSocial,
:Empresa_Cnpj,:Empresa_Ie,:Empresa_Endereco,:Empresa_Numero,:Empresa_Bairro,
:Empresa_Cidade,:Empresa_Cep,:Empresa_Uf,:SUFRAMA,:CHAVE_ACESSO,:TIPO,:XML,:DANFE,:PAGAMENTO,
:protocolo_cancelamento,:motivo_cancelamento,
:sped,:modelo,:especie1,:DATA_FISCAL,
:FISCAL_CFOP_CODIGO,:Tipo_Doc,:Classificacao,:Sped_PisCof,:IND_FINAL);

INSERT INTO TbNfe_Totais (
Nfe_Controle,BaseCalculo_Icms,BaseCalculo_Icms_Subst,Valor_Icms,Valor_Icms_Subst,
Valor_Ipi,Valor_IssQn,Valor_Frete,Valor_Seguro,Valor_Pis,Valor_Cofins,Valor_Desconto,
Valor_Parcelas,Valor_Acrescimo,Valor_OutrosCustos,Valor_Total_Produto,Valor_Total_Nf,
Retencao_Valor_Pis,Retencao_Valor_Cofins,Retencao_Valor_Inss,Retencao_Valor_IssQn,
Retencao_Valor_Irrf,Valor_Csll,Retencao_Valor_Csll,RETENCAO_BASE_CALCULO_IRRF,
RETENCAO_BASE_CALCULO_INSS,DI_BASE_CALCULO,DI_DESPESAS_ADUANEIRAS,DI_VALOR_II,
DI_VALOR_IOF,VALOR_CONTABIL,VALOR_PEDAGIO)
VALUES(
:Controle,:BaseCalculo_Icms,:BaseCalculo_Icms_Subst,:Valor_Icms,:Valor_Icms_Subst,
:Valor_Ipi,:Valor_IssQn,:Valor_Frete,:Valor_Seguro,:Valor_Pis,:Valor_Cofins,:Valor_Desconto,
:Valor_Parcelas,:Valor_Acrescimo,:Valor_OutrosCustos,:Valor_Total_Produto,:Valor_Total_Nf,
:Retencao_Valor_Pis,:Retencao_Valor_Cofins,:Retencao_Valor_Inss,:Retencao_Valor_IssQn,
:Retencao_Valor_Irrf,:Valor_Csll,:Retencao_Valor_Csll,:RETENCAO_BASE_CALCULO_IRRF,
:RETENCAO_BASE_CALCULO_INSS,:DI_BASE_CALCULO,:DI_DESPESAS_ADUANEIRAS,:DI_VALOR_II,
:DI_VALOR_IOF,:VALOR_CONTABIL,:VALOR_PEDAGIO);

INSERT INTO TbNfe_Transportadora(
Nfe_Controle,Transportadora_Codigo,Frete,Ind_Nat_Frete,Volumes,Especie,
Peso_Bruto,Peso_Liquido,Marca,Numero,Placa,Placa_Uf,CMUNINI,CMUNFIM
) VALUES(
:Controle,:Transportadora_Codigo,:Frete,:Ind_Nat_Frete,:Volumes,:Especie,
:Peso_Bruto,:Peso_Liquido,:Marca,:Numero,:Placa,:Placa_Uf,:CMUNINI,:CMUNFIM
);

INSERT INTO TbNfe_Observacao(
Nfe_Controle,Observacao01,Observacao02,Observacao03,Observacao04,Observacao05,
Observacao06,Observacao07,Observacao08,Observacao09,Observacao10,Observacao11,
Observacao12,Observacao13,Observacao14,Observacao15) VALUES  ( 
:Controle,:Observacao01,:Observacao02,:Observacao03,:Observacao04,:Observacao05,
:Observacao06,:Observacao07,:Observacao08,:Observacao09,:Observacao10,:Observacao11,
:Observacao12,:Observacao13,:Observacao14,:Observacao15);

END;

CREATE OR ALTER procedure spi_nfe6 (
    estabelecimento_codigo integer,
    numero_notafiscal integer,
    serie varchar(3),
    empresa_codigo integer,
    natureza integer,
    data_entrada date,
    data_emissao date,
    hora_emissao varchar(5),
    hora_entrada varchar(5),
    controle integer,
    situacao integer,
    cfop_codigo varchar(5),
    cfop_descricao varchar(60),
    usuario_codigo integer,
    usuario_data date,
    empresa_razaosocial varchar(50),
    empresa_cnpj varchar(14),
    empresa_ie varchar(20),
    empresa_endereco varchar(50),
    empresa_numero varchar(5),
    empresa_bairro varchar(20),
    empresa_cidade varchar(40),
    empresa_cep varchar(8),
    empresa_uf varchar(2),
    suframa varchar(9),
    chave_acesso varchar(44),
    tipo char(1),
    classificacao char(1),
    xml char(2),
    danfe char(1),
    pagamento char(1),
    protocolo_cancelamento varchar(20),
    motivo_cancelamento varchar(50),
    sped char(1),
    modelo char(2),
    especie1 varchar(5),
    data_fiscal date,
    fiscal_cfop_codigo varchar(5),
    basecalculo_icms numeric(10,5),
    basecalculo_icms_subst numeric(10,5),
    valor_icms numeric(10,5),
    valor_icms_subst numeric(10,5),
    valor_ipi numeric(10,5),
    valor_issqn numeric(10,5),
    valor_frete numeric(10,5),
    valor_seguro numeric(10,5),
    valor_pis numeric(10,5),
    valor_cofins numeric(10,5),
    valor_csll numeric(10,5),
    retencao_base_calculo_irrf numeric(10,2),
    retencao_base_calculo_inss numeric(10,2),
    di_base_calculo numeric(10,2),
    di_despesas_aduaneiras numeric(10,2),
    di_valor_ii numeric(10,2),
    di_valor_iof numeric(10,2),
    valor_desconto numeric(10,5),
    valor_acrescimo numeric(10,5),
    valor_outroscustos numeric(10,5),
    valor_total_produto numeric(10,5),
    valor_total_nf numeric(10,5),
    retencao_valor_pis numeric(10,5),
    retencao_valor_cofins numeric(10,5),
    retencao_valor_inss numeric(10,5),
    retencao_valor_issqn numeric(10,5),
    retencao_valor_irrf numeric(10,5),
    retencao_valor_csll numeric(10,5),
    valor_parcelas numeric(10,5),
    valor_contabil numeric(10,2),
    valor_pedagio numeric(10,2),
    transportadora_codigo integer,
    frete integer,
    ind_nat_frete varchar(1),
    placa varchar(8),
    placa_uf varchar(2),
    volumes integer,
    especie varchar(10),
    marca varchar(10),
    peso_bruto numeric(10,5),
    peso_liquido numeric(10,5),
    numero varchar(10),
    observacao01 varchar(130),
    observacao02 varchar(130),
    observacao03 varchar(130),
    observacao04 varchar(130),
    observacao05 varchar(130),
    observacao06 varchar(130),
    observacao07 varchar(130),
    observacao08 varchar(130),
    observacao09 varchar(130),
    observacao10 varchar(130),
    observacao11 varchar(130),
    observacao12 varchar(130),
    observacao13 varchar(130),
    observacao14 varchar(130),
    observacao15 varchar(130),
    tipo_doc char(1),
    sped_piscof char(1),
    ind_final char(1))
as
BEGIN
INSERT INTO TbNfe (
Estabelecimento_Codigo,Numero_NotaFiscal,Serie,Empresa_Codigo,Natureza,
Data_Entrada,Data_Emissao,hora_emissao,hora_entrada,
Controle,Situacao,Cfop_Codigo,Cfop_Descricao,Usuario_Codigo,
Usuario_Data,Empresa_RazaoSocial,Empresa_Cnpj,Empresa_Ie,Empresa_Endereco,
Empresa_Numero,Empresa_Bairro,Empresa_Cidade,Empresa_Cep,Empresa_Uf,SUFRAMA,CHAVE_ACESSO,
TIPO,XML,DANFE,PAGAMENTO,protocolo_cancelamento,motivo_cancelamento,
sped,modelo,especie,DATA_FISCAL,FISCAL_CFOP_CODIGO,
Tipo_Doc,Classificacao,Sped_PisCof,IND_FINAL) VALUES (
:Estabelecimento_Codigo,:Numero_NotaFiscal,:Serie,:Empresa_Codigo,:Natureza,
:Data_Entrada,:Data_Emissao,:hora_emissao,:hora_entrada,:Controle,:Situacao,
:Cfop_Codigo,:Cfop_Descricao,
:Usuario_Codigo,:Usuario_Data,:Empresa_RazaoSocial,
:Empresa_Cnpj,:Empresa_Ie,:Empresa_Endereco,:Empresa_Numero,:Empresa_Bairro,
:Empresa_Cidade,:Empresa_Cep,:Empresa_Uf,:SUFRAMA,:CHAVE_ACESSO,:TIPO,:XML,:DANFE,:PAGAMENTO,
:protocolo_cancelamento,:motivo_cancelamento,
:sped,:modelo,:especie1,:DATA_FISCAL,
:FISCAL_CFOP_CODIGO,:Tipo_Doc,:Classificacao,:Sped_PisCof,:IND_FINAL);

INSERT INTO TbNfe_Totais (
Nfe_Controle,BaseCalculo_Icms,BaseCalculo_Icms_Subst,Valor_Icms,Valor_Icms_Subst,
Valor_Ipi,Valor_IssQn,Valor_Frete,Valor_Seguro,Valor_Pis,Valor_Cofins,Valor_Desconto,
Valor_Parcelas,Valor_Acrescimo,Valor_OutrosCustos,Valor_Total_Produto,Valor_Total_Nf,
Retencao_Valor_Pis,Retencao_Valor_Cofins,Retencao_Valor_Inss,Retencao_Valor_IssQn,
Retencao_Valor_Irrf,Valor_Csll,Retencao_Valor_Csll,RETENCAO_BASE_CALCULO_IRRF,
RETENCAO_BASE_CALCULO_INSS,DI_BASE_CALCULO,DI_DESPESAS_ADUANEIRAS,DI_VALOR_II,
DI_VALOR_IOF,VALOR_CONTABIL,VALOR_PEDAGIO)
VALUES(
:Controle,:BaseCalculo_Icms,:BaseCalculo_Icms_Subst,:Valor_Icms,:Valor_Icms_Subst,
:Valor_Ipi,:Valor_IssQn,:Valor_Frete,:Valor_Seguro,:Valor_Pis,:Valor_Cofins,:Valor_Desconto,
:Valor_Parcelas,:Valor_Acrescimo,:Valor_OutrosCustos,:Valor_Total_Produto,:Valor_Total_Nf,
:Retencao_Valor_Pis,:Retencao_Valor_Cofins,:Retencao_Valor_Inss,:Retencao_Valor_IssQn,
:Retencao_Valor_Irrf,:Valor_Csll,:Retencao_Valor_Csll,:RETENCAO_BASE_CALCULO_IRRF,
:RETENCAO_BASE_CALCULO_INSS,:DI_BASE_CALCULO,:DI_DESPESAS_ADUANEIRAS,:DI_VALOR_II,
:DI_VALOR_IOF,:VALOR_CONTABIL,:VALOR_PEDAGIO);

INSERT INTO TbNfe_Transportadora(
Nfe_Controle,Transportadora_Codigo,Frete,Ind_Nat_Frete,Volumes,Especie,
Peso_Bruto,Peso_Liquido,Marca,Numero,Placa,Placa_Uf) VALUES(
:Controle,:Transportadora_Codigo,:Frete,:Ind_Nat_Frete,:Volumes,:Especie,
:Peso_Bruto,:Peso_Liquido,:Marca,:Numero,:Placa,:Placa_Uf);

INSERT INTO TbNfe_Observacao(
Nfe_Controle,Observacao01,Observacao02,Observacao03,Observacao04,Observacao05,
Observacao06,Observacao07,Observacao08,Observacao09,Observacao10,Observacao11,
Observacao12,Observacao13,Observacao14,Observacao15) VALUES  ( 
:Controle,:Observacao01,:Observacao02,:Observacao03,:Observacao04,:Observacao05,
:Observacao06,:Observacao07,:Observacao08,:Observacao09,:Observacao10,:Observacao11,
:Observacao12,:Observacao13,:Observacao14,:Observacao15);

END;

CREATE OR ALTER procedure spi_nfe5 (
    estabelecimento_codigo integer,
    numero_notafiscal integer,
    serie varchar(3),
    empresa_codigo integer,
    natureza integer,
    data_entrada date,
    data_emissao date,
    hora_emissao varchar(5),
    hora_entrada varchar(5),
    controle integer,
    situacao integer,
    cfop_codigo varchar(5),
    cfop_descricao varchar(60),
    usuario_codigo integer,
    usuario_data date,
    empresa_razaosocial varchar(50),
    empresa_cnpj varchar(14),
    empresa_ie varchar(20),
    empresa_endereco varchar(50),
    empresa_numero varchar(5),
    empresa_bairro varchar(20),
    empresa_cidade varchar(40),
    empresa_cep varchar(8),
    empresa_uf varchar(2),
    suframa varchar(9),
    chave_acesso varchar(44),
    tipo char(1),
    classificacao char(1),
    xml char(2),
    danfe char(1),
    pagamento char(1),
    protocolo_cancelamento varchar(20),
    motivo_cancelamento varchar(50),
    sped char(1),
    modelo char(2),
    especie1 varchar(5),
    data_fiscal date,
    fiscal_cfop_codigo varchar(5),
    basecalculo_icms numeric(10,5),
    basecalculo_icms_subst numeric(10,5),
    valor_icms numeric(10,5),
    valor_icms_subst numeric(10,5),
    valor_ipi numeric(10,5),
    valor_issqn numeric(10,5),
    valor_frete numeric(10,5),
    valor_seguro numeric(10,5),
    valor_pis numeric(10,5),
    valor_cofins numeric(10,5),
    valor_csll numeric(10,5),
    retencao_base_calculo_irrf numeric(10,2),
    retencao_base_calculo_inss numeric(10,2),
    di_base_calculo numeric(10,2),
    di_despesas_aduaneiras numeric(10,2),
    di_valor_ii numeric(10,2),
    di_valor_iof numeric(10,2),
    valor_desconto numeric(10,5),
    valor_acrescimo numeric(10,5),
    valor_outroscustos numeric(10,5),
    valor_total_produto numeric(10,5),
    valor_total_nf numeric(10,5),
    retencao_valor_pis numeric(10,5),
    retencao_valor_cofins numeric(10,5),
    retencao_valor_inss numeric(10,5),
    retencao_valor_issqn numeric(10,5),
    retencao_valor_irrf numeric(10,5),
    retencao_valor_csll numeric(10,5),
    valor_parcelas numeric(10,5),
    valor_contabil numeric(10,2),
    valor_pedagio numeric(10,2),
    transportadora_codigo integer,
    frete integer,
    ind_nat_frete varchar(1),
    placa varchar(8),
    placa_uf varchar(2),
    volumes integer,
    especie varchar(10),
    marca varchar(10),
    peso_bruto numeric(10,5),
    peso_liquido numeric(10,5),
    numero varchar(10),
    observacao01 varchar(130),
    observacao02 varchar(130),
    observacao03 varchar(130),
    observacao04 varchar(130),
    observacao05 varchar(130),
    observacao06 varchar(130),
    observacao07 varchar(130),
    observacao08 varchar(130),
    observacao09 varchar(130),
    observacao10 varchar(130),
    observacao11 varchar(130),
    observacao12 varchar(130),
    observacao13 varchar(130),
    observacao14 varchar(130),
    observacao15 varchar(130),
    tipo_doc char(1),
    sped_piscof char(1))
as
BEGIN
INSERT INTO TbNfe (
Estabelecimento_Codigo,Numero_NotaFiscal,Serie,Empresa_Codigo,Natureza,
Data_Entrada,Data_Emissao,hora_emissao,hora_entrada,
Controle,Situacao,Cfop_Codigo,Cfop_Descricao,Usuario_Codigo,
Usuario_Data,Empresa_RazaoSocial,Empresa_Cnpj,Empresa_Ie,Empresa_Endereco,
Empresa_Numero,Empresa_Bairro,Empresa_Cidade,Empresa_Cep,Empresa_Uf,SUFRAMA,CHAVE_ACESSO,
TIPO,XML,DANFE,PAGAMENTO,protocolo_cancelamento,motivo_cancelamento,
sped,modelo,especie,DATA_FISCAL,FISCAL_CFOP_CODIGO,
Tipo_Doc,Classificacao,Sped_PisCof) VALUES (
:Estabelecimento_Codigo,:Numero_NotaFiscal,:Serie,:Empresa_Codigo,:Natureza,
:Data_Entrada,:Data_Emissao,:hora_emissao,:hora_entrada,:Controle,:Situacao,
:Cfop_Codigo,:Cfop_Descricao,
:Usuario_Codigo,:Usuario_Data,:Empresa_RazaoSocial,
:Empresa_Cnpj,:Empresa_Ie,:Empresa_Endereco,:Empresa_Numero,:Empresa_Bairro,
:Empresa_Cidade,:Empresa_Cep,:Empresa_Uf,:SUFRAMA,:CHAVE_ACESSO,:TIPO,:XML,:DANFE,:PAGAMENTO,
:protocolo_cancelamento,:motivo_cancelamento,
:sped,:modelo,:especie1,:DATA_FISCAL,
:FISCAL_CFOP_CODIGO,:Tipo_Doc,:Classificacao,:Sped_PisCof);

INSERT INTO TbNfe_Totais (
Nfe_Controle,BaseCalculo_Icms,BaseCalculo_Icms_Subst,Valor_Icms,Valor_Icms_Subst,
Valor_Ipi,Valor_IssQn,Valor_Frete,Valor_Seguro,Valor_Pis,Valor_Cofins,Valor_Desconto,
Valor_Parcelas,Valor_Acrescimo,Valor_OutrosCustos,Valor_Total_Produto,Valor_Total_Nf,
Retencao_Valor_Pis,Retencao_Valor_Cofins,Retencao_Valor_Inss,Retencao_Valor_IssQn,
Retencao_Valor_Irrf,Valor_Csll,Retencao_Valor_Csll,RETENCAO_BASE_CALCULO_IRRF,
RETENCAO_BASE_CALCULO_INSS,DI_BASE_CALCULO,DI_DESPESAS_ADUANEIRAS,DI_VALOR_II,
DI_VALOR_IOF,VALOR_CONTABIL,VALOR_PEDAGIO)
VALUES(
:Controle,:BaseCalculo_Icms,:BaseCalculo_Icms_Subst,:Valor_Icms,:Valor_Icms_Subst,
:Valor_Ipi,:Valor_IssQn,:Valor_Frete,:Valor_Seguro,:Valor_Pis,:Valor_Cofins,:Valor_Desconto,
:Valor_Parcelas,:Valor_Acrescimo,:Valor_OutrosCustos,:Valor_Total_Produto,:Valor_Total_Nf,
:Retencao_Valor_Pis,:Retencao_Valor_Cofins,:Retencao_Valor_Inss,:Retencao_Valor_IssQn,
:Retencao_Valor_Irrf,:Valor_Csll,:Retencao_Valor_Csll,:RETENCAO_BASE_CALCULO_IRRF,
:RETENCAO_BASE_CALCULO_INSS,:DI_BASE_CALCULO,:DI_DESPESAS_ADUANEIRAS,:DI_VALOR_II,
:DI_VALOR_IOF,:VALOR_CONTABIL,:VALOR_PEDAGIO);

INSERT INTO TbNfe_Transportadora(
Nfe_Controle,Transportadora_Codigo,Frete,Ind_Nat_Frete,Volumes,Especie,
Peso_Bruto,Peso_Liquido,Marca,Numero,Placa,Placa_Uf) VALUES(
:Controle,:Transportadora_Codigo,:Frete,:Ind_Nat_Frete,:Volumes,:Especie,
:Peso_Bruto,:Peso_Liquido,:Marca,:Numero,:Placa,:Placa_Uf);

INSERT INTO TbNfe_Observacao(
Nfe_Controle,Observacao01,Observacao02,Observacao03,Observacao04,Observacao05,
Observacao06,Observacao07,Observacao08,Observacao09,Observacao10,Observacao11,
Observacao12,Observacao13,Observacao14,Observacao15) VALUES  ( 
:Controle,:Observacao01,:Observacao02,:Observacao03,:Observacao04,:Observacao05,
:Observacao06,:Observacao07,:Observacao08,:Observacao09,:Observacao10,:Observacao11,
:Observacao12,:Observacao13,:Observacao14,:Observacao15);

END;

CREATE OR ALTER procedure spi_nfe4 (
    estabelecimento_codigo integer,
    numero_notafiscal integer,
    serie varchar(3),
    empresa_codigo integer,
    natureza integer,
    data_entrada date,
    data_emissao date,
    controle integer,
    situacao integer,
    cfop_codigo varchar(5),
    cfop_descricao varchar(60),
    usuario_codigo integer,
    usuario_data date,
    empresa_razaosocial varchar(50),
    empresa_cnpj varchar(14),
    empresa_ie varchar(20),
    empresa_endereco varchar(50),
    empresa_numero varchar(5),
    empresa_bairro varchar(20),
    empresa_cidade varchar(40),
    empresa_cep varchar(8),
    empresa_uf varchar(2),
    suframa varchar(9),
    chave_acesso varchar(44),
    tipo char(1),
    classificacao char(1),
    xml char(2),
    danfe char(1),
    pagamento char(1),
    protocolo_cancelamento varchar(20),
    motivo_cancelamento varchar(50),
    sped char(1),
    modelo char(2),
    especie1 varchar(5),
    data_fiscal date,
    fiscal_cfop_codigo varchar(5),
    basecalculo_icms numeric(10,5),
    basecalculo_icms_subst numeric(10,5),
    valor_icms numeric(10,5),
    valor_icms_subst numeric(10,5),
    valor_ipi numeric(10,5),
    valor_issqn numeric(10,5),
    valor_frete numeric(10,5),
    valor_seguro numeric(10,5),
    valor_pis numeric(10,5),
    valor_cofins numeric(10,5),
    valor_csll numeric(10,5),
    retencao_base_calculo_irrf numeric(10,2),
    retencao_base_calculo_inss numeric(10,2),
    di_base_calculo numeric(10,2),
    di_despesas_aduaneiras numeric(10,2),
    di_valor_ii numeric(10,2),
    di_valor_iof numeric(10,2),
    valor_desconto numeric(10,5),
    valor_acrescimo numeric(10,5),
    valor_outroscustos numeric(10,5),
    valor_total_produto numeric(10,5),
    valor_total_nf numeric(10,5),
    retencao_valor_pis numeric(10,5),
    retencao_valor_cofins numeric(10,5),
    retencao_valor_inss numeric(10,5),
    retencao_valor_issqn numeric(10,5),
    retencao_valor_irrf numeric(10,5),
    retencao_valor_csll numeric(10,5),
    valor_parcelas numeric(10,5),
    valor_contabil numeric(10,2),
    valor_pedagio numeric(10,2),
    transportadora_codigo integer,
    frete integer,
    ind_nat_frete varchar(1),
    placa varchar(8),
    placa_uf varchar(2),
    volumes integer,
    especie varchar(10),
    marca varchar(10),
    peso_bruto numeric(10,5),
    peso_liquido numeric(10,5),
    numero varchar(10),
    observacao01 varchar(130),
    observacao02 varchar(130),
    observacao03 varchar(130),
    observacao04 varchar(130),
    observacao05 varchar(130),
    observacao06 varchar(130),
    observacao07 varchar(130),
    observacao08 varchar(130),
    observacao09 varchar(130),
    observacao10 varchar(130),
    observacao11 varchar(130),
    observacao12 varchar(130),
    observacao13 varchar(130),
    observacao14 varchar(130),
    observacao15 varchar(130),
    tipo_doc char(1),
    sped_piscof char(1))
as
BEGIN
INSERT INTO TbNfe (
Estabelecimento_Codigo,Numero_NotaFiscal,Serie,Empresa_Codigo,Natureza,Data_Entrada,
Data_Emissao,Controle,Situacao,Cfop_Codigo,Cfop_Descricao,Usuario_Codigo,
Usuario_Data,Empresa_RazaoSocial,Empresa_Cnpj,Empresa_Ie,Empresa_Endereco,
Empresa_Numero,Empresa_Bairro,Empresa_Cidade,Empresa_Cep,Empresa_Uf,SUFRAMA,CHAVE_ACESSO,
TIPO,XML,DANFE,PAGAMENTO,protocolo_cancelamento,motivo_cancelamento,
sped,modelo,especie,DATA_FISCAL,FISCAL_CFOP_CODIGO,
Tipo_Doc,Classificacao,Sped_PisCof) VALUES (
:Estabelecimento_Codigo,:Numero_NotaFiscal,:Serie,:Empresa_Codigo,:Natureza,
:Data_Entrada,:Data_Emissao,:Controle,:Situacao,:Cfop_Codigo,:Cfop_Descricao,
:Usuario_Codigo,:Usuario_Data,:Empresa_RazaoSocial,
:Empresa_Cnpj,:Empresa_Ie,:Empresa_Endereco,:Empresa_Numero,:Empresa_Bairro,
:Empresa_Cidade,:Empresa_Cep,:Empresa_Uf,:SUFRAMA,:CHAVE_ACESSO,:TIPO,:XML,:DANFE,:PAGAMENTO,
:protocolo_cancelamento,:motivo_cancelamento,
:sped,:modelo,:especie1,:DATA_FISCAL,
:FISCAL_CFOP_CODIGO,:Tipo_Doc,:Classificacao,:Sped_PisCof);

INSERT INTO TbNfe_Totais (
Nfe_Controle,BaseCalculo_Icms,BaseCalculo_Icms_Subst,Valor_Icms,Valor_Icms_Subst,
Valor_Ipi,Valor_IssQn,Valor_Frete,Valor_Seguro,Valor_Pis,Valor_Cofins,Valor_Desconto,
Valor_Parcelas,Valor_Acrescimo,Valor_OutrosCustos,Valor_Total_Produto,Valor_Total_Nf,
Retencao_Valor_Pis,Retencao_Valor_Cofins,Retencao_Valor_Inss,Retencao_Valor_IssQn,
Retencao_Valor_Irrf,Valor_Csll,Retencao_Valor_Csll,RETENCAO_BASE_CALCULO_IRRF,
RETENCAO_BASE_CALCULO_INSS,DI_BASE_CALCULO,DI_DESPESAS_ADUANEIRAS,DI_VALOR_II,
DI_VALOR_IOF,VALOR_CONTABIL,VALOR_PEDAGIO)
VALUES(
:Controle,:BaseCalculo_Icms,:BaseCalculo_Icms_Subst,:Valor_Icms,:Valor_Icms_Subst,
:Valor_Ipi,:Valor_IssQn,:Valor_Frete,:Valor_Seguro,:Valor_Pis,:Valor_Cofins,:Valor_Desconto,
:Valor_Parcelas,:Valor_Acrescimo,:Valor_OutrosCustos,:Valor_Total_Produto,:Valor_Total_Nf,
:Retencao_Valor_Pis,:Retencao_Valor_Cofins,:Retencao_Valor_Inss,:Retencao_Valor_IssQn,
:Retencao_Valor_Irrf,:Valor_Csll,:Retencao_Valor_Csll,:RETENCAO_BASE_CALCULO_IRRF,
:RETENCAO_BASE_CALCULO_INSS,:DI_BASE_CALCULO,:DI_DESPESAS_ADUANEIRAS,:DI_VALOR_II,
:DI_VALOR_IOF,:VALOR_CONTABIL,:VALOR_PEDAGIO);

INSERT INTO TbNfe_Transportadora(
Nfe_Controle,Transportadora_Codigo,Frete,Ind_Nat_Frete,Volumes,Especie,
Peso_Bruto,Peso_Liquido,Marca,Numero,Placa,Placa_Uf) VALUES(
:Controle,:Transportadora_Codigo,:Frete,:Ind_Nat_Frete,:Volumes,:Especie,
:Peso_Bruto,:Peso_Liquido,:Marca,:Numero,:Placa,:Placa_Uf);

INSERT INTO TbNfe_Observacao(
Nfe_Controle,Observacao01,Observacao02,Observacao03,Observacao04,Observacao05,
Observacao06,Observacao07,Observacao08,Observacao09,Observacao10,Observacao11,
Observacao12,Observacao13,Observacao14,Observacao15) VALUES  ( 
:Controle,:Observacao01,:Observacao02,:Observacao03,:Observacao04,:Observacao05,
:Observacao06,:Observacao07,:Observacao08,:Observacao09,:Observacao10,:Observacao11,
:Observacao12,:Observacao13,:Observacao14,:Observacao15);

END;



CREATE OR ALTER procedure spc_nfs_faturamento9 (
    estabelecimento_1 integer,
    estabelecimento_2 integer,
    supervisor_1 varchar(10),
    representante_1 integer,
    representante_2 integer,
    empresa_1 integer,
    empresa_2 integer,
    data_1 date,
    data_2 date,
    notafiscal_1 integer,
    notafiscal_2 integer,
    uf_1 varchar(2),
    serie_1 varchar(3),
    devsim char(1),
    classificacao_1 char(1))
returns (
    estabelecimento_codigo integer,
    estabelecimento_fantasia varchar(50),
    data date,
    numero_notafiscal integer,
    empresa_codigo integer,
    empresa_nomefantasia varchar(23),
    empresa_razaosocial varchar(60),
    valor_total numeric(10,2),
    valor_desconto numeric(10,2),
    valor_acrescimo numeric(10,2),
    valor_frete numeric(10,2),
    quantidade numeric(10,4),
    valor_total_dev numeric(10,2),
    quant_total_dev numeric(10,4),
    observacao varchar(15),
    data_remessa date)
as
BEGIN

FOR Select
    Distinct(B.Estabelecimento_Codigo),
    Max((Select First 1 E.NomeFantasia||'/'||E.UF From tbestabelecimento E Where B.Estabelecimento_Codigo = E.Codigo)),
    B.Data_Emissao Data, B.Numero_NotaFiscal, B.Empresa_Codigo,
    Max((Select First 1 E.NomeFantasia||'/'||E.UF From tbempresa E Where B.Empresa_Codigo = E.Codigo)),
    Max(B.Empresa_RazaoSocial||'/'||B.Empresa_UF),
    Sum(A.Valor_Total) Valor_Total, Max(C.Valor_Desconto) Valor_Desconto,
    Max(C.Valor_Ipi+C.Valor_Acrescimo+C.Valor_Seguro+C.Valor_OutrosCustos+C.Valor_Icms_Subst) Valor_Acrescimo,
    Max(C.Valor_Frete) Valor_Frete,
    Sum(A.Quantidade) Quantidade, Max(0) Valor_Total_Dev, Max(0) Quant_Total_Dev,

    Max((Select First 1 Cast((lPad(P.Conta_Receber_Banco,3,0)||'|'||lPad(P.Conta_Receber_Cobranca,3,0)||'|'||lpad(P.Conta_Receber_Posicao,3,0)) as varchar(12))
    From TbNfs_Parcelamento P Where P.Nfs_Controle = B.Controle)),
    Max((Select First 1 P.Remessa_Data From TbNfs_Parcelamento P Where P.Nfs_Controle = B.Controle))

From TbNfs_Item A, TbNfs B, TbNfs_Totais C, TbOperacao D, TbRepresentante R

Where A.Nfs_Controle = B.Controle
and A.Nfs_Controle = C.Nfs_Controle
and A.Operacao_Codigo = D.Codigo
and B.Representante_Codigo = R.Codigo
and D.Controle_Faturamento = 1
and ((B.Situacao = 2) or (B.Situacao = 1 and B.Natureza = 2))

and (B.Estabelecimento_Codigo Between :ESTABELECIMENTO_1 and :ESTABELECIMENTO_2)
and (R.Supervisor_ID like :SUPERVISOR_1)
and (B.Representante_Codigo between :REPRESENTANTE_1 and :REPRESENTANTE_2)
and (B.Empresa_Codigo between :EMPRESA_1 and :EMPRESA_2)
and (B.Data_Emissao BetWeen :DATA_1 and :DATA_2)
and (B.Numero_NotaFiscal BetWeen :NOTAFISCAL_1 and :NOTAFISCAL_2)
and (B.Empresa_uf like :UF_1)
and (B.Classificacao Like :Classificacao_1)

Group By B.Estabelecimento_Codigo, B.Data_Emissao, B.Numero_NotaFiscal,B.Empresa_Codigo

Union

Select Distinct(B.Estabelecimento_Codigo),
    Max((Select First 1 E.NomeFantasia||'/'||E.UF From tbestabelecimento E Where B.Estabelecimento_Codigo = E.Codigo)),
    B.Data_Entrada Data, B.Numero_NotaFiscal, B.Empresa_Codigo,

    Max((Select First 1 E.NomeFantasia||'/'||E.UF From tbempresa E Where B.Empresa_Codigo = E.Codigo)),
    Max(B.Empresa_RazaoSocial||'/'||B.Empresa_UF),

    Max(0) Valor_Total, Max(0) Valor_Desconto, Max(0) Valor_Acrescimo, Max(0) Valor_Frete, Max(0) Quantidade,
    Sum(A.Valor_Total-A.Valor_Desconto+A.Valor_Acrescimo+A.Valor_Ipi+A.Valor_Icms_St) Valor_Total_Dev,
    Sum(A.Quantidade) Quant_Total_Dev, '', null

From TbNfe_Item A, TbNfe B, TbOperacao C, TbCliente CL, TbRepresentante R

Where A.Nfe_Controle = B.Controle
  and A.Operacao_Codigo = C.Codigo
  and C.Controle_Devolucao = 1 and B.Situacao < 3
  and B.Empresa_Codigo = CL.Codigo
  and CL.Representante_Codigo = R.Codigo
  and (B.Estabelecimento_Codigo between :ESTABELECIMENTO_1 and :ESTABELECIMENTO_2)
  and (R.Supervisor_ID like :SUPERVISOR_1)
  and (CL.Representante_Codigo between :REPRESENTANTE_1 and :REPRESENTANTE_2)
  and (B.Empresa_Codigo between :EMPRESA_1 and :EMPRESA_2)
  and (B.Data_Entrada BetWeen :DATA_1 and :DATA_2)
  and (B.empresa_uf Like :UF_1)
  and (B.serie Like :Serie_1)
  and (:DevSim = '1')
  and (B.Classificacao Like :Classificacao_1)

Group By B.Estabelecimento_Codigo, B.Data_Entrada, B.Numero_NotaFiscal,B.Empresa_Codigo
Order By 1,3,4

INTO   :ESTABELECIMENTO_CODIGO,
       :ESTABELECIMENTO_FANTASIA,
       :DATA,
       :NUMERO_NOTAFISCAL,
       :EMPRESA_CODIGO,
       :EMPRESA_NOMEFANTASIA,
       :EMPRESA_RAZAOSOCIAL,
       :VALOR_TOTAL,
       :VALOR_DESCONTO,
       :VALOR_ACRESCIMO,
       :VALOR_FRETE,
       :QUANTIDADE,
       :VALOR_TOTAL_DEV,
       :QUANT_TOTAL_DEV,
       :OBSERVACAO,
       :Data_Remessa
DO SUSPEND;
END;



CREATE OR ALTER procedure spc_nfs_faturamento8 (
    estabelecimento_1 integer,
    estabelecimento_2 integer,
    supervisor_1 varchar(10),
    representante_1 integer,
    representante_2 integer,
    empresa_1 integer,
    empresa_2 integer,
    data_1 date,
    data_2 date,
    notafiscal_1 integer,
    notafiscal_2 integer,
    uf_1 varchar(2),
    serie_1 varchar(3),
    devsim char(1),
    classificacao_1 char(1))
returns (
    estabelecimento_codigo integer,
    estabelecimento_fantasia varchar(50),
    data date,
    numero_notafiscal integer,
    empresa_codigo integer,
    empresa_nomefantasia varchar(23),
    empresa_razaosocial varchar(60),
    valor_total numeric(10,2),
    valor_desconto numeric(10,2),
    valor_acrescimo numeric(10,2),
    quantidade numeric(10,4),
    valor_total_dev numeric(10,2),
    quant_total_dev numeric(10,4),
    observacao varchar(15),
    data_remessa date)
as
BEGIN

FOR Select
    Distinct(B.Estabelecimento_Codigo),
    Max((Select First 1 E.NomeFantasia||'/'||E.UF From tbestabelecimento E Where B.Estabelecimento_Codigo = E.Codigo)),
    B.Data_Emissao Data, B.Numero_NotaFiscal, B.Empresa_Codigo,
    Max((Select First 1 E.NomeFantasia||'/'||E.UF From tbempresa E Where B.Empresa_Codigo = E.Codigo)),
    Max(B.Empresa_RazaoSocial||'/'||B.Empresa_UF),
    Sum(A.Valor_Total) Valor_Total, Max(C.Valor_Desconto) Valor_Desconto,
    Max(C.Valor_Ipi+C.Valor_Acrescimo+C.Valor_Frete+C.Valor_Seguro+C.Valor_OutrosCustos+C.Valor_Icms_Subst) Valor_Acrescimo,
    Sum(A.Quantidade) Quantidade, Max(0) Valor_Total_Dev, Max(0) Quant_Total_Dev,

    Max((Select First 1 Cast((lPad(P.Conta_Receber_Banco,3,0)||'|'||lPad(P.Conta_Receber_Cobranca,3,0)||'|'||lpad(P.Conta_Receber_Posicao,3,0)) as varchar(12))
    From TbNfs_Parcelamento P Where P.Nfs_Controle = B.Controle)),
    Max((Select First 1 P.Remessa_Data From TbNfs_Parcelamento P Where P.Nfs_Controle = B.Controle))

From TbNfs_Item A, TbNfs B, TbNfs_Totais C, TbOperacao D, TbRepresentante R

Where A.Nfs_Controle = B.Controle
and A.Nfs_Controle = C.Nfs_Controle
and A.Operacao_Codigo = D.Codigo
and B.Representante_Codigo = R.Codigo
and D.Controle_Faturamento = 1
and ((B.Situacao = 2) or (B.Situacao = 1 and B.Natureza = 2))

and (B.Estabelecimento_Codigo Between :ESTABELECIMENTO_1 and :ESTABELECIMENTO_2)
and (R.Supervisor_ID like :SUPERVISOR_1)
and (B.Representante_Codigo between :REPRESENTANTE_1 and :REPRESENTANTE_2)
and (B.Empresa_Codigo between :EMPRESA_1 and :EMPRESA_2)
and (B.Data_Emissao BetWeen :DATA_1 and :DATA_2)
and (B.Numero_NotaFiscal BetWeen :NOTAFISCAL_1 and :NOTAFISCAL_2)
and (B.Empresa_uf like :UF_1)
and (B.Classificacao Like :Classificacao_1)

Group By B.Estabelecimento_Codigo, B.Data_Emissao, B.Numero_NotaFiscal,B.Empresa_Codigo

Union

Select Distinct(B.Estabelecimento_Codigo),
    Max((Select First 1 E.NomeFantasia||'/'||E.UF From tbestabelecimento E Where B.Estabelecimento_Codigo = E.Codigo)),
    B.Data_Entrada Data, B.Numero_NotaFiscal, B.Empresa_Codigo,

    Max((Select First 1 E.NomeFantasia||'/'||E.UF From tbempresa E Where B.Empresa_Codigo = E.Codigo)),
    Max(B.Empresa_RazaoSocial||'/'||B.Empresa_UF),

    Max(0) Valor_Total, Max(0) Valor_Desconto, Max(0) Valor_Acrescimo, Max(0) Quantidade,
    Sum(A.Valor_Total-A.Valor_Desconto+A.Valor_Acrescimo+A.Valor_Ipi+A.Valor_Icms_St) Valor_Total_Dev,
    Sum(A.Quantidade) Quant_Total_Dev, '', null

From TbNfe_Item A, TbNfe B, TbOperacao C, TbCliente CL, TbRepresentante R

Where A.Nfe_Controle = B.Controle
  and A.Operacao_Codigo = C.Codigo
  and C.Controle_Devolucao = 1 and B.Situacao < 3
  and B.Empresa_Codigo = CL.Codigo
  and CL.Representante_Codigo = R.Codigo
  and (B.Estabelecimento_Codigo between :ESTABELECIMENTO_1 and :ESTABELECIMENTO_2)
  and (R.Supervisor_ID like :SUPERVISOR_1)
  and (CL.Representante_Codigo between :REPRESENTANTE_1 and :REPRESENTANTE_2)
  and (B.Empresa_Codigo between :EMPRESA_1 and :EMPRESA_2)
  and (B.Data_Entrada BetWeen :DATA_1 and :DATA_2)
  and (B.empresa_uf Like :UF_1)
  and (B.serie Like :Serie_1)
  and (:DevSim = '1')
  and (B.Classificacao Like :Classificacao_1)

Group By B.Estabelecimento_Codigo, B.Data_Entrada, B.Numero_NotaFiscal,B.Empresa_Codigo
Order By 1,3,4

INTO   :ESTABELECIMENTO_CODIGO,
       :ESTABELECIMENTO_FANTASIA,
       :DATA,
       :NUMERO_NOTAFISCAL,
       :EMPRESA_CODIGO,
       :EMPRESA_NOMEFANTASIA,
       :EMPRESA_RAZAOSOCIAL,
       :VALOR_TOTAL,
       :VALOR_DESCONTO,
       :VALOR_ACRESCIMO,
       :QUANTIDADE,
       :VALOR_TOTAL_DEV,
       :QUANT_TOTAL_DEV,
       :OBSERVACAO,
       :Data_Remessa
DO SUSPEND;
END;

