Caro parceiro,
Se você está preparando sua aplicação para homologar o PAF-ECF, já deve ter se deparado com o “Requisito VII” do Roteiro de Flash-Tip 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 Flash-Tip 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:
-
Bematech_FI_DownloadMFD. Função que faz a captura da memória de fita-detalhe (MFD) da impressora e;
-
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:
-
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;
-
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!
Related posts:
- Edição 33 – Conhecendo a BemaSB32.dll Caro Parceiro, Agora, vamos conhecer a interface que iremos utilizar...
- Transferência Eletrônica de Fundos (T.E.F.) – Discado – Passo 3/10 ...
- Programando o horário de verão Com a chegada do horário de verão, as impressoras fiscais...
- Edição 62 – Analisando o Retorno Estendido Caro Partner e Desenvolvedor, Quando trabalhamos com o ECF (Emissor...
- Edição 82 – Identificando o Consumidor no Cupom Fiscal Caro Partner e Desenvolvedor Bematech, Nesta edição de nosso Flash...
4 de fevereiro de 2010 às 12:49
Comentário by Ivan Pinto
Muito bom os esclarecimentos