Business - Automação Comercial

Bematech: Arquivo MFD, Espelho MFD e Ato Cotepe 17/04 por COO e Data

Se você está preparando sua aplicação para homologar o PAF-ECF, já deve ter se deparado com o "Requisito VII" do Roteiro de Análise Funcional, mais especificamente os itens 5 e 6, onde tratam da geração do espelho MFD por intervalo de COO e data, e geração do Ato Cotepe 17/04 com base no arquivo MFD também por intervalo de COO e data, respectivamente.

por André Luiz R. Munhoz



Se você está preparando sua aplicação para homologar o PAF-ECF, já deve ter se deparado com o "Requisito VII" do Roteiro de Análise Funcional, mais especificamente os itens 5 e 6, onde tratam da geração do espelho MFD por intervalo de COO e data, e geração do Ato Cotepe 17/04 com base no arquivo MFD também por intervalo de COO e data, respectivamente.

Reprodução dos itens 5 e 6:

ITEM 5: “Espelho MFD”, para gerar arquivo eletrônico da Memória de Fita Detalhe, no formato de “espelho” dos documentos nela contidos, com possibilidade de seleção por período de data e por intervalo de COO, devendo assiná-lo digitalmente inserindo ao final do arquivo uma linha com o registro tipo EAD...

ITEM 6: “Arq. MFD” para gerar arquivo eletrônico da Memória de Fita Detalhe conforme leiaute estabelecido no Ato COTEPE/ICMS 17/04 com possibilidade de seleção por período de data e por intervalo de COO, devendo assiná-lo digitalmente inserindo ao final do arquivo uma linha com o registro tipo EAD...

Então, o objetivo deste Flash Tip é orientá-lo a como atender estes dois itens, com dicas de programação usando nossa dll de alto-nível BemaFI32.dll, e também as BemaMFD.dll e BemaMFD2.dll na geração do Ato Cotepe 17/04.

Vamos lá!

- ITEM 5:

O espelho MFD nada mais é do que a imagem, na íntegra, dos cupons emitidos no ECF. Para atender este item, devemos usar simplesmente duas funções encontrada na BemaFI32.dll:

  1. Bematech_FI_DownloadMFD. Função que faz a captura da memória de fita-detalhe (MFD) da impressora e;
  2. Bematech_FI_FormatoDadosMFD. Função que formata a MFD para arquivo texto.

A função Bematech_FI_DownloadMFD possui os seguintes parâmetros:

par1: String com o caminho + nome do arquivo de saída que será criado com o conteúdo da MFD da impressora. Exemplo: "C:\DOWNLOAD.MFD".
par2:

String com o tipo do download da MFD, onde:
"0" (zero) para download total da MFD da impressora;
"1" (um) para download por intervalo de data ou;
"2" (dois) para download por intervalo de COO.

par3: String com a data inicial ou o COO inicial, no formato "DDMMAA" ou "DDMMAAAA" para a data, ou COO com no máximo 6 dígitos (formato "999999").
par4: String com a data final ou o COO final, no formato "DDMMAA" ou "DDMMAAAA" para a data, ou COO com no máximo 6 dígitos (formato "999999").
par5: String com o número do usuário proprietário do ECF, no tamanho de 1 dígito.

Importante: Se o tipo do download for "Total", não será necessário informar os parâmetros par3, par4 e par5. Neste caso, estes parâmetros são informados com string nula.

  • Em VB, temos esta função implementada assim:

iRetorno = Bematech_FI_DownloadMFD("C:\DOWNLOAD.MFD", "2", "000500", "001000", "1")

  • Em Delphi, temos esta função implementada assim:

cArquivo := "C:\DOWNLOAD.MFD";
cTipoDownload := "2";
cCOOInicial := "000500";
cCOOFinal := "001000";
cUsuario := "1";

iRetorno := Bematech_FI_DownloadMFD( pchar( cArquivo ), pchar( cTipoDownload ), pchar( cCOOInicial ), pchar( cCOOFinal ),
pchar( cUsuario ) );

Neste exemplo, estamos fazendo um download da MFD da impressora por intervalo de COO do "000500" ao "001000" e para o usuário "1".

A função Bematech_FI_FormatoDadosMFD possui os seguintes parâmetros:

par1: String com o caminho + nome do arquivo de origem contendo o download da MFD da impressora. Exemplo: "C:\DOWNLOAD.MFD".
par2:

String com o caminho + nome do arquivo de saída que será criado com o conteúdo convertido da MFD da impressora. Exemplo: "C:\ESPELHO.TXT".

par3: String com o tipo do formato de conversão da MFD, onde:
"0" (zero) para formato .TXT (é criado um arquivo TXT com a imagem dos cupons referentes ao movimento);
"1" (um) para formato .RTF (é criado um arquivo RTF com a imagem dos cupons referentes ao movimento) ou;
"2" (dois) para formato .MDB (é criado um arquivo MDB com tabelas referentes ao movimento)
par4: String com o tipo do download da MFD, onde:
"0" (zero) para download total da MFD da impressora;
"1" (um) para download por intervalo de data ou;
"2" (dois) para download por intervalo de COO.
par5: String com a data inicial ou o COO inicial, no formato "DDMMAA" ou "DDMMAAAA" para a data, ou COO com no máximo 6 dígitos (formato "999999").
par6: String com a data final ou o COO final, no formato "DDMMAA" ou "DDMMAAAA" para a data, ou COO com no máximo 6 dígitos (formato "999999").
par7: String com o número do usuário proprietário do ECF, no tamanho de 1 dígito.

Importante: Se o tipo do download for "Total", não será necessário informar os parâmetros par5, par6 e par7. Neste caso, estes parâmetros são informados com string nula.

  • Em VB, temos esta função implementada assim:

iRetorno = Bematech_FI_FormatoDadosMFD("C:\DOWNLOAD.MFD", "C:\ESPELHO.TXT", "0", "2", "000500", "001000", "1")

  • Em Delphi, temos esta função implementada assim:

cArquivoOrigem := "C:\DOWNLOAD.MFD";
cArquivoDestino := "C:\ESPELHO.TXT";
cTipoFormato := "0";
cTipoDownload := "2";
cCOOInicial := "000500";
cCOOFinal := "001000";
cUsuario := "1";

iRetorno := Bematech_FI_FormatoDadosMFD( pchar( cArquivoOrigem ), pchar( cArquivoDestino ), pchar( cTipoFormato ), pchar( cTipoDownload ), pchar( cCOOInicial ), pchar( cCOOFinal ),
pchar( cUsuario ) );

Neste exemplo, estamos gerando um espelho em texto da MFD da impressora por intervalo de COO do "000500" ao "001000" e para o usuário "1".

Assim, atendemos o item 5 do requisito VII do PAF-ECF.

- ITEM 6:

Este item pede para gerar o arquivo de download da MFD no formato do Ato Cotepe 17/04, o mesmo exigido para a Nota Fiscal Paulista, porém assinado (registro EAD). Para isso, precisamos também de apenas duas funções:

  1. Bematech_FI_DownloadMFD (função já vista anteriormente). Usaremos esta função para fazer a captura da MFD da impressora, pois iremos passar no primeiro parâmetro da função abaixo, o arquivo .mfd previamente gerado e;
  2. BemaGeraRegistrosTipoE. Função encontrada na BemaMFD.dll e BemaMFD2.dll para geração dos registros tipo E pertencentes ao layout do Ato Cotepe 17/04.

A função BemaGeraRegistrosTipoE possui os seguintes parâmetros:

par1: String com o caminho + nome do arquivo de origem contendo o download da MFD da impressora. Exemplo: "C:\DOWNLOAD.MFD".
par2:

String com o caminho + nome do arquivo de saída que será criado com o conteúdo convertido da MFD da impressora. Exemplo: "C:\COTEPE1704.TXT".

par3: String com a data inicial, no formato "DDMMAAAA".
par4: String com a data final, no formato "DDMMAAAA".
par5: String com a razão social do estabelecimento proprietário do ECF.
par6: String com o endereço do estabelecimento proprietário do ECF.
par7: String nula.
par8: String com o comando de geração dos registros, fixo em "2".
par9: String nula.
par10: String nula.
par11: String nula.
par12: String nula.
par13: String nula.
par14: String nula.
par15: String nula.
par16: String nula.
par17: String nula.
par18: String nula.
par19: String nula.
par20: String nula.
par21: String nula.
  • Em VB, temos esta função implementada assim:

cArqMFD = "C:\DOWNLOAD.MFD"
cArqTXT = "C:\COTEPE1704.TXT"
cRazao = "Bematech S/A"
cEndereco = "Rua ABCDEF, 1234"
cCMD = "2"
cDataIni = "01062009" " DDMMAAAA
cDataFim = "30062009" " DDMMAAAA

iRetorno = BemaGeraRegistrosTipoE(cArqMFD, cArqTXT, cDataIni, cDataFim, cRazao, cEndereco, "", cCMD, "", "", "", "", "", "", "", "", "", "", "", "", "")

  • Em Delphi, temos esta função implementada assim:

cArqMFD := "C:\DOWNLOAD.MFD";
cArqTXT := "C:\COTEPE1704.TXT";
cRazao := "Bematech S/A";
cEndereco := "Rua ABCDEF, 1234";
cCMD := "2";
cDataIni := 01062009; // DDMMAAAA
cDataFim := 30062009; // DDMMAAAA

iRetorno := BemaGeraRegistrosTipoE(pchar(cArqMFD), pchar(cArqTXT), pchar(cDataIni), pchar(cDataFim), pchar(cRazao), pchar(cEndereco), "", pchar(cCMD), "", "", "", "", "", "", "", "", "", "", "", "", "");

Importante:

  • Para os modelos de impressoras fiscais MP-2000 TH FI e MP-6000 TH FI, a função BemaGeraRegistrosTipoE deve ser chamada da BemaMFD.dll.
  • Para os modelos de impressoras fiscais MP-2100 TH FI, MP-3000 TH FI, MP-4000 TH FI, MP-6100 TH FI e MP-7000 TH FI, a função BemaGeraRegistrosTipoE deve ser chamada da BemaMFD2.dll.

No exemplo acima, temos a geração do Ato Cotepe 17/04 por intervalo de datas. Podemos também realizar esta geração por intervalo de COOs. Para isso, temos dois exemplos prontos disponíveis para baixar através dos links:

- em VB: http://www.bematech.com.br/suporte/downloads/fisc_win/RegistrosTipoE_VB.zip
- em Delphi:

http://www.bematech.com.br/suporte/downloads/fisc_win/RegistrosTipoE_Delphi.zip

Assim, atendemos o item 6 do requisito VII do PAF-ECF.

Além disso, não podemos esquecer que tanto o arquivo contendo o espelho da MFD quanto o arquivo do Ato Cotepe 17/04 devem ser assinados (registro EAD). Sendo assim, podemos usar facilmente a sign_bema.dll.

Maiores detalhes sobre estas funções, podemos consultar no help on-line da BemaFI32.dll, disponível na WEB.

Boas implementações!

André Luiz R. Munhoz

André Luiz R. Munhoz - Bematech: DSP - Desenvolvimento de Software e Parcerias.
Visite o site: http://www.bematech.com.br.