Nota Fiscal Eletrônica – Um caso real – Parte 2b
Como minimizar o trabalho de manutenção dos ERPs para integrá-los a NF-e?
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?
Na listagem seguinte é apresentada a primeira parte do método que gera o arquivo de solicitação para emissão da NF-e (GerarNFe). Embora o método seja grande, ele é simples, pois basicamente ele captura os dados da nota fiscal persistida no ERP e formata o arquivo de solicitação no mesmo local do aplicativo.
|
Observação1: |
|
Devido o tamanho do método, ele não pode ser colocado num único artigo. |
|
Observação2: |
|
A geração do arquivo no mesmo Path do aplicativo é recomendada, pois isto evita que o middleware tente consumir um arquivo que ainda não foi finalizado pelo ERP. |
|
// Método para gerar o arquivo de solicitação de emissão da NF-e |
|
function TCASSICNFe.GerarNFe(DataSet_Munic, DataSet_DF, DataSet_DF_Item: TSQLQuery): Boolean; |
|
var |
|
ArqDados: TextFile; |
|
Cont: Integer; |
|
FilePath: string; |
|
Munic, CFOPProd: string; |
|
CGF: string; |
|
begin |
|
try |
|
Result := True; |
|
FDataSet_Munic := DataSet_Munic; |
|
Munic := MunicID( |
|
DataSet_DF.FieldByName('UF').AsString, |
|
DataSet_DF.FieldByName('Cidade').AsString); |
|
CGF := DataSet_DF.FieldByName('CGF').AsString; |
|
if ( Trim(CGF) = '' ) then CGF := 'ISENTO'; |
|
// Arquivo temporário |
|
FilePath := ExtractFilePath( Application.Exename ) + '\NFE_SOLIC.TXT'; |
|
FilePath := StringReplace(FilePath, '\\', '\', [rfReplaceAll]); |
|
// Inicia Arquivo NFE_SOLIC.TXT |
|
AssignFile(ArqDados, FilePath); |
|
Rewrite( ArqDados ); |
|
///////////////////////// |
|
// // |
|
// Abertura do Arquivo // |
|
// // |
|
///////////////////////// |
|
// CNPJ da empresa usuária do CASSIC NF-e |
|
Writeln(ArqDados, '0000' + |
|
FCNPJ); |
|
// Versão do Layout |
|
Writeln(ArqDados, '0001' + |
|
'01.01.001'); |
|
// Tipo de mensagem |
|
Writeln(ArqDados, '0002' + |
|
'0001'); |
|
///////////////////////////////// |
|
// // |
|
// Configuração da Nota Fiscal // |
|
// // |
|
///////////////////////////////// |
|
// ID da nota fiscal gerada no Aplicativo Cliente |
|
Writeln(ArqDados, '0500' + |
|
DataSet_DF.FieldByName('ID').AsString); |
|
/////////////////////////////////////// |
|
// // |
|
// Dados Operacionais da Nota Fiscal // |
|
// // |
|
/////////////////////////////////////// |
|
// Código da natureza da operação - Tabela XI |
|
Writeln(ArqDados, '1000' + |
|
DataSet_DF.FieldByName('Operacao').AsString); |
|
// Descrição da natureza da operação |
|
Writeln(ArqDados, '1005' + |
|
DataSet_DF.FieldByName('CFOPDescr').AsString); |
|
// CGF para a substituição tributária |
|
Writeln(ArqDados, '1010' + |
|
DataSet_DF.FieldByName('CGFSubst').AsString); |
|
// CFOP da nota fiscal |
|
Writeln(ArqDados, '1020' + |
|
DataSet_DF.FieldByName('CFOP').AsString); |
|
// Data de emissão da nota fiscal |
|
Writeln(ArqDados, '1030' + |
|
DataSet_DF.FieldByName('DtEmissao').AsString); |
|
// Data de saída ou entrada da nota fiscal, de acordo com o campo 1000 |
|
Writeln(ArqDados, '1040' + |
|
DataSet_DF.FieldByName('DtSaida').AsString); |
|
// Hora da saída ou entrada da nota fiscal, de acordo com o campo 1000 |
|
Writeln(ArqDados, '1050' + |
|
DataSet_DF.FieldByName('HsSaida').AsString); |
|
// Indicador da forma de pagamento - Tabela I |
|
Writeln(ArqDados, '1060' + |
|
DataSet_DF.FieldByName('Fatura').AsString); |
|
////////////////////// |
|
// // |
|
// Dados do Cliente // |
|
// // |
|
////////////////////// |
|
// Razão Social do cliente |
|
Writeln(ArqDados, '1100' + |
|
DataSet_DF.FieldByName('Cliente').AsString); |
|
// Logradouro do cliente |
|
Writeln(ArqDados, '1110' + |
|
DataSet_DF.FieldByName('Lograd').AsString); |
|
// Número do logradouro do cliente |
|
Writeln(ArqDados, '1111' + |
|
DataSet_DF.FieldByName('LogradNum').AsString); |
|
// Complemento do endereço do cliente |
|
Writeln(ArqDados, '1120' + |
|
''); |
|
// Bairro do cliente |
|
Writeln(ArqDados, '1130' + |
|
DataSet_DF.FieldByName('Bairro').AsString); |
|
// CEP do cliente |
|
Writeln(ArqDados, '1140' + |
|
DataSet_DF.FieldByName('CEP').AsString); |
|
// ID do município do cliente - Anexo II |
|
Writeln(ArqDados, '1150' + |
|
Munic); |
|
// Unidade federativa do cliente |
|
Writeln(ArqDados, '1160' + |
|
DataSet_DF.FieldByName('UF').AsString); |
|
// ID do país do cliente. Anexo III |
|
Writeln(ArqDados, '1170' + |
|
'1058'); |
|
// Número do telefone do cliente |
|
Writeln(ArqDados, '1180' + |
|
DataSet_DF.FieldByName('Fone').AsString); |
|
// e-mail do cliente |
|
Writeln(ArqDados, '1190' + |
|
DataSet_DF.FieldByName('eMail').AsString); |
|
// CNPJ do cliente |
|
Writeln(ArqDados, '1200' + |
|
DataSet_DF.FieldByName('CNPJ').AsString); |
|
// CPF do cliente |
|
Writeln(ArqDados, '1201' + |
|
DataSet_DF.FieldByName('CPF').AsString); |
|
// CGF do cliente |
|
Writeln(ArqDados, '1210' + |
|
CGF); |
|
// SUFRAMA do cliente |
|
Writeln(ArqDados, '1220' + |
|
DataSet_DF.FieldByName('SUFRAMA').AsString); |
|
... |
|
Artigo escrito por http://www.cassic.com.br/ |
Mestre em Computação Aplicada; Especialista em Gestão de Projetos de TI; Especialista em Engenharia de Software; Tecnólogo em Automática; Certified ScrumMaster.



