domingo, 26 de abril de 2009

Nfe - Gerar Id




Nfe - Gerar Id

//MontaChaveAcesso
// (codigo alterado em 19/11/08 para compor a chave no formato da versão 1.10 do laioute)
//-------------------
//Parametros:
//codUF - codigo da Unidade e Federação do Município de acordo tabela IBGE.
//dtEmissaso - data de emissão da nota fiscal
//CNPJ - codigo CNPJ do emitente
//Modelo - Modelo da Nota Fiscal NF-e (55)
//Serie - codigo de serie da NFe
//NumeroNF - Número da Nota Fiscal
//Result = Chave de acesso
//
Function MontaChaveAcessoNFe_v110( codUF: integer; dtEmissao: TDateTime; CNPJ:string;
Modelo, Serie, NumeroNF): string;
var emissao:string[10];
chave:string;
CodigoNumerico: Integer;
begin
emissao := formatdatetime('DD/MM/YY', dtEmissao);

// Essa parte do código gera o Código Numérico (Aleatório)
//para que funcione inclua a unit "Math" na cláusule Uses.
Randomize;
CodigoNumerico := Random(99999999);

chave := IntToStr(codUF)+copy( emissao, 7,2)+copy(emissao,4,2)+
LimpaCNPJ(CNPJ)+StrZero(Modelo,2,0)+StrZero(Serie,3,0)+
StrZero(NumeroNF,9,0)+StrZero(CodigoNumerico,9,0);

Result := chave + Modulo11(chave);

end;

// LimpaCNPJ (retira máscaras do CNPJ)
//------------------------------------
Function LimpaCNPJ( cnpj: string): string;
begin
Result := StringReplace(StringReplace(StringReplace( cnpj,
'.','',[rfReplaceAll]),
'-','',[rfReplaceAll]),
'/','',[rfReplaceAll]);
end;

// StrZero (Preenche com zeros à esquerda)
// ------------------------------------------------------
Function StrZero(Num : Real; Zeros, Deci: Integer): string;
var tam,z : integer;
res,zer : string;
begin
str(Num:Zeros:Deci, res);
res := Alltrim(res);
tam := length(res);
zer := '';
for z := 1 to (Zeros-tam) do
zer := zer + '0';
result := zer+res
end;

Nenhum comentário:

Postar um comentário