cuf = código da unidade de federação do emitente
cnpj = cnpj do emitente
mod = Código do modelo do Documento Fiscal. Utilizar 55 para identificação da NF-e
serie = série da nota
nnf = Número do Documento Fiscal
aamm = data de emissão da nota
cnf = Código numérico que compõe a Chave de Acesso. Número aleatório gerado pelo emitente para cada NF-e
Sabendo destas regras e nomeado os parametros já sabemos como trabalhar na nfe a série é obrigatória ter três digitos por isso utilizamos a proc procedure p_s_nfe_preenchenumero(serie,3,'0','E') que adiciona zeros a esquerda do mesmo modo a nnf e a cnf com nove digitos obrigatórios onde o cnf é um codigo incremental com zeros a esquerda simulando um numero aleatório.
Espero ter ajudado para compreender melhor, de uma olhada nos primeiros posts.
Esta proc retorna a chave da Nfe e o digito verificador.
Um abraço e no próximo post vamos montar a view V_NFE_NOTA_FISCAL
CREATE PROCEDURE P_S_NFE_IDNFE (
cuf varchar(2),
aamm date,
cnpj varchar(20),
mod varchar(10),
serie varchar(10),
nnf integer,
cnf integer)
returns (
verificador varchar(2),
result varchar(1000))
as
declare variable ano varchar(4);
declare variable data varchar(4);
declare variable mes varchar(2);
declare variable dv varchar(2);
declare variable numero varchar(500);
declare variable cnfresult varchar(100);
declare variable nnfresult varchar(100);
begin
nnfresult = cast (nnf as varchar (100));
cnfresult = cast (cnf as varchar (100));
execute procedure p_s_nfe_preenchenumero(cnfresult,9,'0','E')
returning_values :cnfresult ;
execute procedure p_s_nfe_preenchenumero(nnfresult,9,'0','E')
returning_values :nnfresult ;
ano = cast(extract(year from :aamm) as varchar(4));
mes = trim(cast(extract(month from :aamm)as varchar(2)));
ano = substring(ano from 3 for 4 );
execute procedure p_s_nfe_preenchenumero(mes,2,'0','E')
returning_values :mes ;
data = ano||mes;
execute procedure p_s_nfe_preenchenumero(serie,3,'0','E')
returning_values :serie ;
numero = cuf||data||CNPJ||mod||serie||nnfresult||cnfresult;
execute procedure p_s_nfe_digitoverificador(numero)
returning_values : dv;
result = cuf||data||CNPJ||mod||serie||nnfresult||CNFresult||dv ;
verificador = dv;
suspend;
end^