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 Nakatani



Olá 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:

AC1704

*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)

Iohannes Nakatani

Iohannes Nakatani - Analista de Suporte. Bematech - Marketing de Parcerias.
Visite o site:
http://www.bematech.com.br.