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.
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.
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.keyNa 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:
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.