Bematech Software Partners

 
  • jul 28 2009

    Edição 46 – Arquivo MFD, Espelho MFD e Ato Cotepe 17/04 por COO e Data

    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:

    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!

    Related posts:

    1. Edição 33 – Conhecendo a BemaSB32.dll Caro Parceiro, Agora, vamos conhecer a interface que iremos utilizar...
    2. Transferência Eletrônica de Fundos (T.E.F.) – Discado – Passo 3/10 ...
    3. Programando o horário de verão Com a chegada do horário de verão, as impressoras fiscais...
    4. Edição 62 – Analisando o Retorno Estendido Caro Partner e Desenvolvedor,  Quando trabalhamos com o ECF (Emissor...
    5. Edição 82 – Identificando o Consumidor no Cupom Fiscal  Caro Partner e Desenvolvedor Bematech,   Nesta edição de nosso Flash...

     

1 Comentário

  • 4 de fevereiro de 2010 às 12:49

    Comentário by Ivan Pinto

    Muito bom os esclarecimentos

Deixe um comentário