Business - Automação Comercial
Gerando o Arquivo MFD (PAF-ECF)
Devido a obrigatoriedade de homologação dos aplicativos, de acordo com o Ato Cotepe 06/08 do PAF-ECF, implementamos em nossa DLL BemaFI32/BemaFI64 diversas funções de auxílio. Dentre elas, iremos destacar a função Bematech_FI_ArquivoMFD que é responsável pela geração do “ArqMFD”, exigido na homologação e especificado pelo Ato Cotepe 17/04.
por Iohannes NakataniOlá pessoal,
Devido a obrigatoriedade de homologação dos aplicativos, de acordo com o Ato Cotepe 06/08 do PAF-ECF, implementamos em nossa DLL BemaFI32/BemaFI64 diversas funções de auxílio. Dentre elas a função Bematech_FI_ArquivoMFD que é responsável pela geração do “ArqMFD”, exigido na homologação e especificado pelo Ato Cotepe 17/04.
O Ato Cotepe 17/04 especifica o layout dos registros do “Tipo E”. Este layout possui 5 tipos de geração, no qual existem diferenças de registros contidos no arquivo. Podemos ver na tabela abaixo.
Tipo |
Registros Gerados no Arquivo |
MF |
E01, E02, E03, E04, E05, E06, E07, E08, E09, E10, E11, E12 e E13 |
MFD |
E01, E02, E14, E15, E16, E17, E18, E19, E20 e E21 |
TDM |
E01, E02, E03, E04, E05, E06, E07, E08, E09, E10, E11, E12, E13, E14, E15, E16, E17, E18, E19, E20 e E21 |
RZ |
E01, E02, E14, E15 e E16 |
RFD |
E01, E02, E03, E04, E05, E06, E07, E08, E09, E10, E11, E12 e E13 |
Estes registros do Tipo “E” contêm as informações de vendas realizadas na impressora.
Agora que já conhecemos os tipos de arquivo que podemos gerar, vamos para a implementação da função Bematech_FI_ArquivoMFD (lembrando que esta função é compatível apenas para os modelos de impressoras fiscais térmicas Bematech que possuem a Memória de Fita Detalhe (MFD)).
Esta função trabalha com os seguintes parâmetros:
- Arquivo de Origem: Uma variável do tipo STRING contendo o path + nome do arquivo de origem, podemos passar o conteúdo nulo (NULL) caso não tenha o arquivo MFD previamente gerado.
- Dado Inicial: Uma variável do tipo STRING contendo o dado inicial do intervalo a ser gerado. Para gerarmos por data usaremos o formato “DD/MM/AAAA” e se for por COO (número de cupom) usaremos o formato “999999″.
- Dado Final: Uma variável do tipo STRING contendo o dado final do intervalo. A formatação dos dados é a mesma usada no Dado Inicial.
- Tipo de Intervalo: Uma variável do tipo STRING contendo a letra indicativa do tipo de intervalo que vamos fazer, onde: “D” é por Data e “C” é por COO.
- Usuário: Uma variável do tipo STRING contendo o número do usuário cadastrado na impressora.
- Tipo de Geração: Uma variável do tipo INTEGER contendo a indicação do layout que será utilizado no arquivo, conforme tabela mostrada anteriormente, onde:
- 0= MF
- 1 = MFD
- 2 = TDM
- 3 = RZ
- 4 = RFD
- Chave Pública: Uma variável do tipo STRING contendo a chave pública para assinatura do arquivo.
- Chave Privada: Uma variável do tipo STRING contendo a chave privada para assinatura do arquivo.
- Arquivo Único: Uma variável do tipo INTEGER que indica se a geração será em um único arquivo ou em múltiplos arquivos (arquivos diários), onde:
- 1 = único arquivo
- 0 = múltiplos arquivos
Agora vamos para a declaração da função.
Delphi
function Bematech_FI_ArquivoMFD( cNomeArquivoOrigem: String; cDadoInicial: String; cDadoFinal: String; cTipoDownload: String; cUsuario: String; iTipoGeracao: integer; cChavePublica: String; cChavePrivada: String; iUnicoArquivo: integer ): Integer; StdCall; External’BEMAFI32.DLL’;
VB
Public Declare Function Bematech_FI_ArquivoMFD Lib “BEMAFI32.dll” (ByVal cNomeArquivoOrigem As String, ByVal cDadoInicial As String, ByVal cDadoFinal As String, ByVal cTipoDownload As String, ByVal cUsuario As String, ByVal iTipoGeracao As Integer, ByVal cChavePublica As String, ByVal cChavePrivada As String, ByVal iUnicoArquivo As Integer) As Integer
Depois de declarada, iremos para a inicialização das variáveis e execução da função.
Delphi
cNomeArquivoOrigem := ‘’; //
ou podemos informar o path+arquivo.mfd (ex: ‘c:\Bematech\Download.mfd’)
cDadoInicial := ‘01/01/2011’;
cDadoFinal := ‘31/01/2011’;
cTipoDownload := ‘D’;
cUsuario := ‘01’;
iTipoGeracaor := 2; // neste exemplo usamos o layout TDM
cChavePublica := ‘A499F300F731F6892F44B83A5DD9D97CF…’; // chave previamente
gerada
cChavePrivada := ‘D19598300478932ACFFE16CB6903552F1…’; // chave previamente
gerada
iUnicoArquivo := ‘1’;
iRetorno := Bematech_FI_ArquivoMFD( cNomeArquivoOrigem; cDadoInicial; cDadoFinal; cTipoDownload; cUsuario; iTipoGeracaor; cChavePublica; cChavePrivada; iUnicoArquivo);
VB
cNomeArquivoOrigem = “”; ‘ou
podemos informar o path+arquivo.mfd (ex: “c:\Bematech\Download.mfd”)
cDadoInicial = “01/01/2011”
cDadoFinal = “31/01/2011”
cTipoDownload = “D”
cUsuario = “01”
iTipoGeracaor = 2 ‘ neste exemplo usamos o layout TDM
cChavePublica = “A499F300F731F6892F44B83A5DD9D97CF…” ‘chave previamente gerada
cChavePrivada = “D19598300478932ACFFE16CB6903552F1…” ‘chave previamente gerada
iUnicoArquivo = “1”
iRetorno = Bematech_FI_ArquivoMFD(cNomeArquivoOrigem, cDadoInicial, cDadoFinal, cTipoDownload, cUsuario, iTipoGeracao, cChavePublica, cChavePrivada, iUnicoArquivo)
Executando a função, temos o arquivo gerado conforme exemplo:
*A imagem acima é apenas para ilustração do conteúdo do arquivo.
O layout das informações contidas no arquivo pode ser encontrado no Ato Cotepe 17/04:
http://www.fazenda.gov.br/confaz/confaz/atos/atos_cotepe/2004/AC017_04.htm
Com isso finalizamos este artigo sobre o uso da função Bematech_FI_ArquivoMFD.
Um forte abraço e até o próximo artigo!
Iohannes Nakatani
Analista de Suporte ao Desenvolvedor
0800 644 SBSP (7277)
- DarumaFramework.SO no LinuxAutomação Comercial
- Palavra de status da impressora na DarumaFrameworkAutomação Comercial
- TEF – Comprovante de Crédito ou DébitoAutomação Comercial
- Comunicar com equipamentos Daruma em linguagens 16bits e DOSAutomação Comercial
- Verificando Redução Z nas Impressoras DarumaAutomação Comercial