Olá pessoal, vamos a mais um artigo sobre automação comercial.

Na geração da maioria dos relatórios no Menu Fiscal é necessário que o arquivo seja assinado digitalmente, inserindo ao final do mesmo uma linha com o registro tipo EAD conforme especificado no layout abaixo.

Registro tipo EAD

Figura 1. Registro tipo EAD.

Já imaginou o trabalho que dá para editar um arquivo, localizar a última linha e inserir logo após a assinatura do arquivo.

A única coisa que você necessita é ter o arquivo com a extensão (.key) para assinar os arquivos gerados através da DarumaFramework.dll.

Veja como gerar o arquivo.key caso você ainda não possua: http://bit.ly/wn0TZW.

A DarumaFramework.DLL pode assinar os arquivos gerados automaticamente, após sua geração ou pode assinar qualquer arquivo independente da origem.

Assinando na Geração

A própria função de geração de múltiplos arquivos possibilita a assinatura dos mesmos através de um parâmetro opcional no qual se pode passar o diretório do “arquivo.key” que carrega a chave da assinatura.

Layout da Assinatura

Figura 2. Layout da Assinatura.

Como podemos observar na tabela, é só passar no parâmetro dos relatórios que desejamos gerar a descrição [EAD]”+Chave”.

Exemplo:

NFP+[EAD]C:\Chave.key

Na pratica

Listagem 1: C(Sharp):


[DllImport("DarumaFrameWork.dll")]
        public static extern int rGerarRelatorio_ECF_Daruma(string pszRelatorio, 
string pszTipo, string pszInicial, string pszFinal);
		
DarumaFramework_DLL.DarumaFramework_DeclaracFramework_Declaracoes_CSharp.
rGerarRelatorio_ECF_Daruma(“NFP+[EAD]C:\Chave.key”, “DATAM”, “010911”, “301011”);

Listagem 1: Delphi:


function rGerarRelatorio_ECF_Daruma(szRelatorio:string; szTipo:string; 
szInicial:string; szFinal:string): Integer; StdCall; External 'DarumaFramework.dll';
 Int_Retorno:= rGerarRelatorio_ECF_Daruma(‘NFP+[EAD]C:\Chave.key’, 
‘DATAM’, ‘010911’, ‘301011’);

O relatório "[EAD]+Path da chave privada" faz a assinatura dos relatórios:

  • MF
  • MFD
  • TDM
  • NFP
  • NFPTDM
  • SINTEGRA
  • SPED
  • LMFC
  • LMFS

O mesmo deve ser colocado sempre no final dos relatórios selecionados.

Por exemplo, para assinar o arquivo MFD o comando deve ser passado da seguinte maneira: rGerarRelatorio_ECF_Daruma("MFD+[EAD]c:\Chave.key", "DATAM", "01052011", "30052011");

Onde "c:\Chave.key" é o caminho mais o nome da minha chave.

Basta isso para que os arquivos gerados saiam assinados.

Assinando arquivos prontos

A DarumaFramework.DLL possui um método que lê o arquivo informado e faz a assinatura dele automaticamente.

Esta função é a: eRSAAssinarArquivo_ECF_Daruma.

Parâmetros:

Veja os Parâmetros

Figura 3. Veja os Parâmetros.

Exemplo em Delphi:


function eRSAAssinarArquivo_ECF_Daruma(pszPathArquivo:string;
pszChave:string): Integer; StdCall; External 'DarumaFramework.dll';
2Int_Retorno := eRSAAssinarArquivo_ECF_Daruma(
Str_CaminhoArqAssinar,Str_CaminhoChave);

A assinatura será colocada na última linha do arquivo informado.

Um abraço e ficamos por aqui, até o próximo artigo.