Inquiridor
Como gerar o arquivo da CAT-52 / Ato Cotepe 17/04 nas impressoras fiscais Bematech

Discussão Geral
-
Caro parceiro,
Ainda existem algumas dúvidas em relação à geração do arquivo da portaria CAT-52 e Ato Cotepe 17/04 para o estado de São Paulo nas impressoras fiscais modelo Bematech.
Neste post, estarei detalhando todos os procedimentos de geração deste arquivo, através de nossas ferramentas de comunicação.DLL BEMAFI32 (ambiente Windows)
A Bematech implementou em sua dll de alto-nível BemaFI32.dll, o controle e geração do arquivo da portaria CAT-52 (layout para as impressoras fiscais matriciais) e Ato Cotepe 17/04 (layout para as impressoras fiscais térmicas com MFD) automaticamente. A última versão disponível em nosso site é 5.8.0.0.
Basta atualizar a BemaFI32.dll juntamente com as dlls BemaMFD.dll, BemaMFD2.dll e o arquivo de configuração BemaFI32.ini, no diretório de sistema de seu Windows (C:\Windows\System32, por exemplo).
As chaves das seções [SoftwareHouse] e [ECF], no arquivo BemaFI32.ini, devem ser configuradas da seguinte forma:[SoftwareHouse] COO= Informe nesta chave o último COO da impressora, antes da atualização da nova dll, com o tamanho de 6 bytes. Ex: imprima uma Leitura X e coloque o COO desta Leitura X nesta chave. NumeroAplicativo= Informe nesta chave um Id para sua aplicação, com o tamanho de 2 bytes. Ex: 01 CNPJ= Informe nesta chave o CNPJ/CPF da Software House ou desenvolvedor autônomo, com até 14 bytes. Sem máscara. IE= Informe nesta chave a Inscrição Estadual da Software House, com até 14 bytes. Sem máscara. Caso não possua pode deixar em branco. IM= Informe nesta chave a Inscrição Municipal da Software House, com até 14 bytes. Sem máscara. Caso não possua pode deixar em branco. RazaoSocial= Informe nesta chave a Razão Social da Software House, com até 40 bytes. NomeAplicativo= Informe nesta chave o nome do aplicativo de automação comercial, com até 40 bytes. Versao= Informe nesta chave a versão do aplicativo de automação comercial, com até 10 bytes. Ex: 01.00.05 Linha1= Informe nesta chave comentários do programa aplicativo, com até 42 bytes. Caso não possua pode deixar em branco. Linha2= Informe nesta chave comentários do programa aplicativo, com até 42 bytes. Caso não possua pode deixar em branco. [ECF] IM= Informe nesta chave a Inscrição Municipal do estabelecimento que possui a ECF, com até 20 bytes. Sem máscara. Caso não possua pode deixar em branco. UF= Informe nesta chave a Unidade da Federação do estabelecimento que possui a ECF, com até 2 posições. Esta chave deve possuir o valor SP (UF=SP) obrigatoriamente para que a dll possa gerar o arquivo. Exemplo:
[SoftwareHouse]
COO=003351
NumeroAplicativo=01
CNPJ=11111111111111
IE=22222222222222
IM=33333333333333
RazaoSocial=EMPRESA DE SOFTWARE TESTE
NomeAplicativo=APLICATIVO TESTE
Versao=1.0
Linha1=LINHA1 TESTE
Linha2=LINHA2 TESTE
[ECF]
IM=44444444444444
UF=SP
Obs: Se a impressora fiscal utilizada for MP-20 FI II ou MP-40 FI II, a chave Impressora na seção [MFD] deve possuir o valor 0 (Impressora=0), caso contrário esta chave deve possuir o valor 1 (Impressora=1).
Configurando estas chaves, a dll estará controlando os dados para a geração da CAT-52 ou Ato Cotepe 17/04.
Quando é gerado o arquivo final pronto para ser validado?
Existem 3 situações:
1) Quando for executada a Redução Z pela aplicação de automação comercial;
2) Quando a impressora emitir automaticamente a Redução Z às 02:00 horas da manhã e, posteriormente, for aberto o cupom fiscal e;
3) Quando a impressora emitir automaticamente a Redução Z quando for ligada no dia seguinte e, posteriormente, for aberto o primeiro cupom fiscal do dia.
Nas impressoras fiscais matriciais, a dll irá criar e manter um arquivo de extensão ".rfd" durante o movimento do dia (este arquivo corresponde ao Registro de Fita-Detalhe e seu conteúdo é criptografado).
Quando ocorrer uma das 3 situações acima, a dll irá converter este arquivo em um novo arquivo (sem extensão ".rfd") no formato e layout da portaria CAT-52, pronto para ser validado no site da SEFAZ/SP.
Nas impressoras fiscais térmicas, a dll irá gerar o arquivo final diretamente da MFD (Memória de Fita-Detalhe) da impressora, quando ocorrer uma das 3 situações acima, ou seja, a dll fará o download da MFD do dia do movimento, e criará o arquivo no formato e layout do Ato Cotepe 17/04.
Onde é gerado o arquivo final?
O arquivo da portaria CAT-52 ou Ato Cotepe 17/04 é gerado no caminho configurado na chave Path do arquivo BemaFI32.ini. Além do arquivo final, o arquivo ".rfd" ou ".mfd" também é gerado neste caminho.
Bematech Monitor (ambiente Windows e DOS)
O driver Bematech Monitor para acesso remoto às impressoras fiscais Bematech também está preparado para a portaria CAT-52 e Ato Cotepe 17/04, pois ele interage com a dll BemaFI32. Então, basta configurar as chaves citadas acima no arquivo BemaFI32.ini da estação.
Aplicações em ambiente DOS (janela DOS) também podem gerar o arquivo da CAT-52 e Ato Cotepe 17/04, comunicando com as impressoras fiscais Bematech, através do Bematech Monitor.
O Bematech Monitor foi criado para acessar às impressoras fiscais Bematech remotamente, porém seu "mecanismo" de comunicação é "troca de arquivos", ou seja, a dll cria um arquivo com um código e o Bematech Monitor transforma este código na função correspondente da dll. Portanto, sua aplicação em DOS pode criar este arquivo (BemaFI32.cmd) com o código da função correspondente ao processo que deseja executar na impressora e envia-o para o Bematech Monitor, este por sua vez lê o arquivo e realiza todo o processo de envio à impressora, controlando os dados para a geração da CAT-52 e Ato Cotepe 17/04 (veja no arquivo de ajuda BemaFI32.chm, tópico "Utilizando a DLL em aplicações 16 Bits", mais informações sobre seu uso).
Além disso, se sua aplicação DOS faz acesso às impressoras fiscais Bematech através do Bemafi.exe, você também poderá usar o Bematech Monitor.
O Bematech Monitor reconhece a sintaxe e nomenclatura do arquivo Bemafi.cmd. Então, basta retirar a chamada ao Bemafi.exe e criar o arquivo Bemafi.cmd normalmente, gravando-o na pasta de monitoramento do Bematech Monitor. Se o arquivo BemaFI32.ini estiver configurado para gerar a CAT-52 e Ato Cotepe 17/04, o arquivo final será gerado.
Utilizando o emulador para os testes de geração do arquivo CAT-52 / Ato Cotepe 17/04
É possível utilizar o emulador da impressora fiscal para a geração do arquivo Ato Cotepe 17/04, mas para isso toda a comunicação com ele deverá ser realizada por meio de um cabo serial fisicamente conectado no computador (COM1 <--> COM2, por exemplo), pois é realizado o download da MFD para a geração do arquivo. A pinagem deste cabo está descrito no arquivo de ajuda do emulador e a chave EmulMFD no arquivo BemaFI32.ini, deve possuir o valor 0 (EmulMFD=0).
Geração do arquivo CAT-52 / Ato Cotepe 17/04 retroativo
É possível gerar o arquivo da portaria CAT-52 e Ato Cotepe 17/04 retroativo, de duas maneiras:
- pela BemaFI32.dll
Implementamos na dll a função Bematech_FI_GeraRegistrosCAT52MFD que permite gerar o arquivo final, a partir de informações contidas na MFD das impressoras fiscais térmicas ou a partir do arquivo .RFD ou .MFD gerados anteriormente.
A função Bematech_FI_GeraRegistrosCAT52MFD possui os seguintes parâmetros:
Arquivo: STRING com o nome do arquivo .MFD ou .RFD de onde os registros serão gerados. Informar o caminho completo.
DataGeracao: STRING com a data que os registros serão gerados, no formato ddmmaa, dd/mm/aa, ddmmaaaa ou dd/mm/aaaa.
E, funciona da seguinte maneira:
- Para os modelos de impressoras fiscais matriciais é obrigatório informar o arquivo .RFD como parâmetro. O parâmetro que corresponde a data não é obrigatório e será ignorado caso seja informado. O arquivo da CAT-52 será gerado com as informações contidas no arquivo .RFD informado.
- Para os modelos de impressoras fiscais térmicas com MFD temos as seguintes possibilidades:a) se não forem informados o arquivo .MFD e a data como parâmetros, a função fará o download da MFD da data atual e fará a geração do arquivo do Ato Cotepe 17/04.
b) se for informado o arquivo .MFD e não for informada a data, a função retornará erro.
c) se for informada apenas a data, a função fará o download da MFD com base na data informada e fará a geração do arquivo do Ato Cotepe 17/04.
d) se forem informados o arquivo .MFD e a data, a função fará a geração do arquivo do Ato Cotepe 17/04 com as informações contidas no arquivo .MFD na data informada.
Exemplo em Visual Basic:
iRetorno = Bematech_FI_GeraRegistrosCAT52MFD("C:\download.mfd", "30/07/2007")
ou
iRetorno = Bematech_FI_GeraRegistrosCAT52MFD("C:\BEB00007.M57.rfd", "30/07/2007")
Exemplo em Delphi:
Arquivo := 'C:\download.mfd';
Data := '30/07/2007';
iRetorno := Bematech_FI_GeraRegistrosCAT52MFD( pchar( Arquivo ), pchar( Data ) );
ou
Arquivo := 'C:\BEB00007.M57.rfd';
Data := '30/07/2007';
iRetorno := Bematech_FI_GeraRegistrosCAT52MFD( pchar( Arquivo ), pchar( Data ) );
- pelo WinMFD2
A Bematech disponibiliza em seu site um aplicativo chamado WinMFD2 que possibilita a geração do arquivo da portaria CAT-52 e Ato Cotepe 17/04 retroativo, nas impressoras fiscais matriciais e térmicas.
A utilização deste aplicativo se dá da seguinte maneira:
1) para impressoras fiscais térmicas com MFD
- No menu "Comunicação", selecione a porta de comunicação onde a impressora está conectada e neste mesmo menu selecione o modelo da impressora.- No menu "Arquivo", selecione a opção CAT-52.
- Na janela que surgir, selecione as opções desejadas e clique no botão "Gerar Registros".
A geração do Ato Cotepe 17/04, diretamente da impressora, leva aproximadamente 30 segundos para um dia de movimento fiscal com 350 cupons fiscais emitidos.
- pelo micro-terminal SB-2010/SB-2011/SB-3010
A geração do arquivo para os micro-terminais fiscais Bematech ocorrerá somente se a impressora fiscal utilizada por eles for térmicas (MFD). Desta forma, a impressora deverá ser conectada a um computador com o aplicativo WinMFD2 instalado, e proceder conforme orientações acima (tópico "pelo WinMFD2" ).
Obs: para os micro-terminais que usam impressoras fiscais matriciais a geração do arquivo para a portaria CAT-52 não será possível, pois ambos os equipamentos não possuem memória para armazenamento e emissão dos registros da portaria.
Nomenclatura do arquivo
O arquivo gerado para a portaria CAT-52 e Ato Cotepe 17/04 possui um conteúdo de texto, visível pelo "Bloco de Notas (notepad)" do Windows (por exemplo). Entretanto, sua nomenclatura é definida da seguinte forma:
- Nome do arquivo no formato FFM12345.DMA, sendo:FF é a identificação do fabricante da impressora fiscal. M é a identificação do modelo da impressora fiscal. 12345 são os cinco últimos dígitos do número de série da impressora fiscal. DMA são a identificação do dia, mês e ano do movimento, codificados com números de 1 a 9 para os dias compreendidos entre 01 e 09, e letras de A a Z compreendendo os dias acima de 09, sendo que o dia 10 corresponde a letra A, dia 11 a letra B, dia 12 a letra C e, assim, sucessivamente. Isso também se aplica para o mês e ano. Exemplo:
BEE28347.1C7, sendo:BE identifica Bematech. E identifica o modelo MP-2100 TH FI, onde: Modelo ECFValor MP 20 FI II6 MP 40 FI II8 MP 25 FIB MP 50 FIC MP 2000 TH FID MP 2100 TH FIE MP 3000 TH FIF MP 6000 TH FIG MP 6100 TH FIH 28347 cinco últimos dígitos do número de série da impressora fiscal. 1C7 identifica o dia 01 de dezembro de 2007. Ats,
André Munhoz
Todas as Respostas
-
Bom dia André
Gostaria de saber se é possível, na matricial, a geração de dados retroativos... fiz na térmica e funcionou perfeitamente... na matricial ela pega os dados conforme o nome do arquivo? BE628347.1C7.rfd ? Não consegui gerar nada em matricial ainda...
Abraço
Alex
-
-
Bom dia Andre,
Estou com a versão 5.9.0.1(+ conjunto) da dll da bematech e não estou conseguindo gerar este arquivo.
Ja tentei fazer o download do arquivo mfd e depois utilizar a função bematech_fi_GeraRegistrosCAT52MFDEx e GeraRegistrosCAT52MFD e nenhuma das duas funções consegue gerar.
Você poderia indicar qual foi a sequencia de comandos utilizados?
Obrigado
-
Olá Fabner,
Se a impressora em uso é térmica e vc já fez o download da MFD, basta passar este arquivo como parâmetro na função Bematech_FI_GeraRegistrosCAT52MFD ou usar o aplicativo WinMFD2 (menu Arquivo, opção CAT-52). Para o uso da função processa assim:
Code SnippetExemplo em Visual Basic
iRetorno = Bematech_FI_GeraRegistrosCAT52MFD("C:\download.mfd", "30/07/2007")
ou
iRetorno = Bematech_FI_GeraRegistrosCAT52MFD("C:\BEB00007.M57.rfd", "30/07/2007")
// Exemplo em Delphi
Arquivo := 'C:\download.mfd';
Data := '30/07/2007'
iRetorno := Bematech_FI_GeraRegistrosCAT52MFD( pchar( Arquivo ), pchar( Data ) );
ou
Arquivo := 'C:\BEB00007.M57.rfd';
Data := '30/07/2007'
iRetorno := Bematech_FI_GeraRegistrosCAT52MFD( pchar( Arquivo ), pchar( Data ) );Através do WinMFD2, vc poderá fazer um download informando um intervalo de datas maior e pela opção CAT-52, é gerado todos os arquivos a partir deste intervalo.
Ats,
André Munhoz
-
André,
Acho que estou com o mesmo problema que o Fabner. No caso estou fazendo como solicitado, mas a função Bematech_FI_GeraRegistrosCAT52MFD está retornando -1 (Erro de execucao da função.) .
Percebi pelo log do ECF que a data está com alguns caracteres estranhos, mas estou passando em um dos formatos especificados no help da DLL ("dd/mm/aaaa"). No meu caso, está sendo passado desta forma:
iRetorno = Bematech_FI_GeraRegistrosCAT52MFD("C:\ECFFISCO\download.mfd", "21/05/2008")
Essa linha está logo abaixo da linha que faz download da MDF nesta data (passei a data inicial = data final para fazer download apenas do dia 21/05/2008). Como não deu certo, tentei fazer o download da MFD pelo WinMFD2 e utilizá-lo para gerar o arquivo do CAT-52. Ocorreu o mesmo problema.
Aqui vai o que sai no LOG:
-----------------------------------------------------------------------
Bematech_FI_GeraRegistrosCAT52MFD
Parâmetros: C:\ECFFISCO\download.mfd|lä]
Retorno Bematech_FI_GeraRegistrosCAT52MFD: -1 - erro na geração dos registros E01 a E21. Retorno GeraRegistrosTipoE: 3
-----------------------------------------------------------------------
Será que estou fazendo algo errado? Perceba que, nos parâmetros, após o caminho do arquivo, o segundo parâmetro é a data...
No suporte da Bematech, me orientaram a habilitar a geração do retorno estendido, mas o ST3 retornou zerado (6,0,0,0). Liguei de volta para informar, mas parece que o suporte está congestionado e ficaram de me retornar.