Olá Escovadores de Bits! Recentemente foi publicada uma nova Especificação de Requisitos do PAF que mudou a obrigatoriedade de geração de arquivos de extensão .txt para arquivos binários.
Não se apavorem quanto à geração destes arquivos binários, nós temos uma solução em alto nível para esta mudança.
Neste escovando bits vamos aprender como gerar os arquivos binários e como assiná-los usando a DarumaFramework.
Gerando arquivos binários da MF – Memória Fiscal
- Clique aqui e faça o download do Executável em Delphi
- Após o download, extraia o pacote e abra a pasta “DarumaFramework_Delphi7exe”.
- Rode o exemplo “DarumaFramework_Delphi.exe”.
- Clique no menu “Impressoras Fiscal”.
- Agora procure o menu “Geração de Arquivos” e clique no submenu “Método rEfetuarDownloadMF_ECF_Daruma”.
- Na janela que abriu, defina o nome do seu arquivo binário da Memória Fiscal.
Veja o exemplo:
- Clique no botão “OK” e aguarde a geração do arquivo binário.
- Após o termino da geração, deverá aparecer uma mensagem de retorno.
- Arquivo binário gerado! Bem simples né?!
- Por padrão o arquivo é gerado na pasta “C:/”.
- Continue com o exemplo “DarumaFramework_Delphi.exe” aberto, pois vamos usá-lo.
Gerando arquivos binários da MFD – Memória Fita Detalhe
- Com o exemplo “DarumaFramework_Delphi.exe” aberto na parte de “Impressoras Fiscal”, siga os passos abaixo.Procure o menu “Geração de Arquivos” e clique no submenu “Método rEfetuarDownloadMFD_ECF_Daruma”.
- Na janela que abriu, selecione o tipo de intervalo, o intervalo inicial, intervalo final e o nome do arquivo binário da MFD.
Veja como ficou:
- Após o preenchimento de todos os campos, clique no botão “Enviar” para iniciar a geração do arquivo binário.
- Aguarde a geração ser concluída e receberá uma mensagem de retorno.
- Geração concluída! Agora nós temos também o arquivo binário da Memória Fita Detalhe.
- Por padrão o arquivo é gerado na pasta “C:/”.
- Continue com o exemplo “DarumaFramework_Delphi.exe” aberto, pois vamos usá-lo.
Gerando arquivos binários da MF + MFD e arquivos de texto com a MF + MFD
- Escovador de bits, se você já usa o método rGerarRelatorio_ECF_Daruma, fique despreocupado, pois este método além de gerar os arquivos com extensão .txt, já gera os arquivos binários, que agora são exigidos pelo PAF.
- Com o exemplo “DarumaFramework_Delphi.exe” aberto na parte de “Impressoras Fiscal”, siga os passos abaixo.
- Procure o menu “Geração de Arquivos” e clique no submenu “Método rGerarRelatorio_ECF_Daruma”.
- Na janela que abriu, selecione “MF” e “MFD”. Coloque a data inicial e a data final.
- Não é necessário definir o local de geração dos arquivos. A pasta padrão é “C:/”.
- Após preencher os campos, clique no botão “Gerar Relatório” para iniciar a geração dos arquivos.
- Ao terminar a geração, a mensagem de retorno será exibida.
- Geração concluída! Agora temos os arquivos binários da MF e MFD, temos também os arquivos ATO_MF_DATA.TXT e ATO_MFD_DATA.TXT.
- Ressalto que a pasta padrão de geração de arquivos é o “C:/”.
- Assinando os arquivos binários da MF e MFD
Agora vamos assinar os arquivos gerados nos passos anteriores, Daruma.mf e Daruma.mfd. - Para assinar, vamos continuar usando o exemplo “DarumaFramework_Delphi.exe”.
- Procure o menu “PAF-ECF” e clique no submenu “Método eRSAAssinarArquivo_ECF_Daruma”.;
- Uma janela será aberta. Preencha o campo “Caminho do arquivo a ser assinado:”(São os binários que nós já geramos) e também o campo “Caminho da chave gerada pelo Puttygen:”(É o seu arquivo.key, sua chave privada).
Veja como ficou:
- Pressione o botão “Enviar” para assinar o arquivo Daruma.mf.
- Após concluir a assinatura, você receberá uma mensagem de retorno.
- Arquivo Daruma.mf está assinado, vamos assinar agora o arquivo Daruma.mfd.
- Procure o menu “PAF-ECF” e clique no submenu “Método eRSAAssinarArquivo_ECF_Daruma”.
- Uma janela será aberta. Preencha o campo “Caminho do arquivo a ser assinado:”(São os binários que nós já geramos) e também o campo “Caminho da chave gerada pelo Puttygen:”(É o seu arquivo.key, sua chave privada).
Veja como ficou:
- Pressione o botão “Enviar” para assinar o arquivo Daruma.mfd.
- Após concluir a assinatura, você receberá uma mensagem de retorno.
- Pronto! Os dois arquivos estão assinados, Daruma.mf e Daruma.mfd.
- Viram só como não tem nada de difícil em assinar os arquivos binários?
Importante: Após assinar o arquivo Daruma.mf, ele não pode mais ser utilizado para geração off-line. Motivo: Sem assinatura o arquivo tem 1024 kbytes, que é o tamanho total da Memória Fiscal. Após a assinatura ele tem seu tamanho mudado para 1025 kbytes, ou seja, um tamanho superior ao da Memória Fiscal. Este 1kbyte a mais, impede a geração off-line. Codificando a geração dos arquivos binários e assinatura dos mesmos:
Delphi
//Declarações
function rEfetuarDownloadMF_ECF_Daruma(pszNomeArquivo:string): Integer; StdCall; External 'DarumaFramework.dll';
function rEfetuarDownloadMFD_ECF_Daruma(pszTipo:string;pszInicial:string;pszFinal:string;pszNomeArquivo:string): Integer; StdCall; External 'DarumaFramework.dll';
function rGerarRelatorio_ECF_Daruma(szRelatorio:string; szTipo:string; szInicial:string; szFinal:string): Integer; StdCall; External 'DarumaFramework.dll';
function eRSAAssinarArquivo_ECF_Daruma(pszPathArquivo:string;pszChavePublica:string): Integer; StdCall; External 'DarumaFramework.dll';
//Chamada de Métodos
//Geração do arquivo binário da MF
iRetorno := rEfetuarDownloadMF_ECF_Daruma(‘Daruma.mf’);
//Geração do arquivo binário da MFD
iRetorno := rEfetuarDownloadMFD_ECF_Daruma(‘DATAM’, ‘01052013’, ‘10052013’, ‘Daruma.mfd’);
//Gerando arquivos binários da MF + MFD e arquivos de texto com a MF + MFD
iRetorno := rGerarRelatorio_ECF_Daruma(‘MF+MFD’, ‘DATAM’, ‘01052013’, ‘10052013’);
//Assinando arquivo binário da MF
iRetorno := eRSAAssinarArquivo_ECF_Daruma(‘C:/Daruma.mf’, ‘C:/Privada/arquivo.key’);
//Assinando arquivo binário da MFD
iRetorno := eRSAAssinarArquivo_ECF_Daruma(‘C:/Daruma.mfd’, ‘C:/Privada/arquivo.key’);
C#
//Declarações
[DllImport("DarumaFrameWork.dll")]
[DllImport("DarumaFrameWork.dll")]
[DllImport("DarumaFrameWork.dll")]
[DllImport("DarumaFrameWork.dll")]
//Chamada de Métodos
//Geração do arquivo binário da MF
iiRetorno = rEfetuarDownloadMF_ECF_Daruma(“Daruma.mf”);
//Geração do arquivo binário da MFD
iRetorno = rEfetuarDownloadMFD_ECF_Daruma(“DATAM”, “01052013”, “10052013”, “Daruma.mfd”);
//Gerando arquivos binários da MF + MFD e arquivos de texto com a MF + MFD
iRetorno = rGerarRelatorio_ECF_Daruma(“MF+MFD”, “DATAM”, “01052013”, “10052013”);
//Assinando arquivo binário da MF
iRetorno = eRSAAssinarArquivo_ECF_Daruma(“C://Daruma.mf”, “C://Privada//arquivo.key”);
//Assinando arquivo binário da MFD
iRetorno = eRSAAssinarArquivo_ECF_Daruma(“C://Daruma.mfd”, “C://Privada//arquivo.key”);
Visual Basic 6
//Declarações Fiscais
Public Declare Function rEfetuarDownloadMF_ECF_Daruma Lib "DarumaFrameWork.dll" (ByVal pszNomeArquivo As String) As Integer
Public Declare Function rEfetuarDownloadMFD_ECF_Daruma Lib "DarumaFrameWork.dll" (ByVal pszTipo As String, ByVal pszInicial As String, ByVal pszFinal As String, ByVal pszNomeArquivo As String) As Integer
Public Declare Function rGerarRelatorio_ECF_Daruma Lib "DarumaFrameWork.dll" (ByVal pszRelatorio As String, ByVal pszTipo As String, ByVal pszInicial As String, ByVal pszFinal As String) As Integer
Public Declare Function eRSAAssinarArquivo_ECF_Daruma Lib "DarumaFrameWork.dll" (ByVal pszPathArquivo As String, ByVal pszPathChave As String) As Integer
//Chamada de Métodos
//Geração do arquivo binário da MF
iRetorno = rEfetuarDownloadMF_ECF_Daruma(“Daruma.mf”)
//Geração do arquivo binário da MFD
iRetorno = rEfetuarDownloadMFD_ECF_Daruma(“DATAM”, “01052013”, “10052013”, “Daruma.mfd”)
//Gerando arquivos binários da MF + MFD e arquivos de texto com a MF + MFD
iRetorno = rGerarRelatorio_ECF_Daruma(“MF+MFD”, “DATAM”, “01052013”, “10052013”)
//Assinando arquivo binário da MF
iRetorno = eRSAAssinarArquivo_ECF_Daruma(“C:/Daruma.mf”, “C:/Privada/arquivo.key”)
//Assinando arquivo binário da MFD
iRetorno = eRSAAssinarArquivo_ECF_Daruma(“C:/Daruma.mfd”, “C:/Privada/arquivo.key”)
Escovadores de bits, agora vocês já sabem como gerar arquivos binários, como assiná-los e como codificar tudo isso.