Bematech Software Partners

 
  • fev 10 2011

    Edição 58 – Gerando o Arquivo MFD (PAF-ECF)

    Caro parceiro,

    Sempre visando orientar e apoiar você nosso parceiro de software e toda a comunidade de desenvolvedores no uso de nossas ferramentas de integração, damos continuidade a seqüência de dicas para o ano de 2011, através desta nova edição do Bematech Flash Tip.

    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 nesta edição do Flash Tip, 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 Flash Tip sobre o uso da função Bematech_FI_ArquivoMFD.

    Caso surjam dúvidas durante o desenvolvimento, nos colocamos a sua disposição para esclarecê-las através de nossos canais de atendimento via 0800 644 7277 ou email suporte@bematech.com.br, além de nossos Msn´s, Skypes´s e Fórum.

    Um forte abraço e até o próximo Flash Tip!

    Iohannes Nakatani
    Analista de Suporte ao Desenvolvedor
    0800 644 SBSP (7277)

    Email/msn: suporte.iohannes@bematech.com.br
    Skype: suporte.iohannes

     

Nenhum Comentário

Deixe um comentário