Artigo

[Escovando Bits] Geração de Arquivos binários no ECF atendendo aos requisitos do PAF.ECF

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                

                                                        dde044_003.jpg                                            

                Gerando arquivos binários da MFD – Memória Fita Detalhe                

                                                        dde044_006.jpg                                            

                Gerando arquivos binários da MF + MFD e arquivos de texto com a MF + MFD                

                                                        dde044_013.jpg                                            

                                                        dde044_016.jpg                                            

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")] public static extern int rEfetuarDownloadMF_ECF_Daruma(string pszNomeArquivo);
                [DllImport("DarumaFrameWork.dll")] public static extern int rEfetuarDownloadMFD_ECF_Daruma(string pszTipo, string pszInicial, string pszFinal, string pszNomeArquivo);
                [DllImport("DarumaFrameWork.dll")] public static extern int rGerarRelatorio_ECF_Daruma(string pszRelatorio, string pszTipo, string pszInicial, string pszFinal);
                [DllImport("DarumaFrameWork.dll")] public static extern int eRSAAssinarArquivo_ECF_Daruma(string arquivo, string chave);                
//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.

  • Daruma Developer

    Daruma Developer