Jump to content

dev botao

ACBr.Net MFD e LMFC


  • Este tópico foi criado há 4296 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

bom dia

Fiz o PAF usando a dll em .net e só falta a geração dos arquivos do ato cotepe do LMFC e MFD.

por exemplo, usando a dll da bematech funciona usando esses métodos:

LMFC

Paf_DLL_ECF.Bematech_FI_AbrePortaSerial()

iRetorno = Paf_DLL_ECF.Bematech_FI_DownloadMFD("C:\MENUFISCAL\" & cArqMFD, "1", sDataI, sDataF, "1")

iRetorno = Paf_DLL_ECF.BemaGeraRegistrosTipoE("C:\MENUFISCAL\" & cArqMFD, "C:\MENUFISCAL\" & sArquivo, cDataIni, cDataFim, cRazao, cEndereco, "", cCMD, "", "", "", "", "", "", "", "", "", "", "", "", "")

Paf_DLL_ECF.Bematech_FI_FechaPortaSerial()

MFD

Paf_DLL_ECF.Bematech_FI_AbrePortaSerial()

iRetorno = Paf_DLL_ECF.Bematech_FI_ArquivoMFD("", sDataI, sDataF, "D", "1", 2, Paf_VarALL.Paf_ChavePublica, Paf_VarALL.Paf_ChavePrivada, 1)

sArquivo = Paf_Param.EMISSORECF.NUMEROFABRICACAO.ToString.ToUpper.Trim & "_" & sDataI.Replace("/", "") & "_" & sDataF.Replace("/", "") & ".TXT"

Paf_DLL_ECF.Bematech_FI_FechaPortaSerial()

Não consegui encontrar no acbr.net os métodos correspontendes....

Abraços

Rodrigo M.

Link to comment
Share on other sites

Peço esclarecimentos:

Pelo que li pelos foruns a acbr32.dll depende da dll da ecf para gerar os arquivos Cotepe do MFD e LMFC.

Se sim, eu teria que colocar na pasta da aplicação todas as dlls das ecfs que a acbr contempla, e incluí-las na lista de arquivos utilizados com seus respectivos md5 para homologar o paf.

Link to comment
Share on other sites

Oi Rodrigo, boa noite!

Essas chamadas não estão implementadas na ACBr32.DLL; Vou fazê-las assim que possível e posto novo comentário.

***

Eu também gostaria de esclarecimento, acho que o pessoal do ACBr poderá nos ajudar quanto a isso: Eu acho que essas chamadas específicas não são parte do protocolo do ECF, e dependem da dll do fabricante.

Não sei o porquê dessa limitação, mas acredito que as dlls deverão ser colocadas junto à aplicação.

Abs!

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link to comment
Share on other sites

  • Consultores

Sim, é necessário a DLL.

O motivo, de forma resumida, é que os fabricantes de ECF não disponibilizaram como fazer isso via protocolo, apenas utilizando a DLL deles.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

  • 3 weeks later...
  • 3 weeks later...
  • 4 weeks later...

Boa tarde,

Estamos começando um novo projeto para implementação do PAF em C#, e estou em testes para utilizar o ACBr.NET. Verifiquei que o ACBr32.DLL não possui as funcionalidades para o Espelho MFD, então baixei os fontes do SVN e estou tentando trazer essa funcionalidade da DLL do Delphi para o ACBr.NET. O que eu fiz até o momento foi o seguinte:

Utilizando o Lazarus, eu alterei o arquivo ACBrECFDll.PAS incluindo a seguinte função:

Function ECF_EspelhoMFDArquivo( const ecfHandle: PECFHandle; const DataInicial : double; const DataFinal: double; const NomeArquivo: PChar ) : Integer ;{$IFDEF STDCALL} stdcall; {$ENDIF} {$IFDEF CDECL} cdecl; {$ENDIF} export;

var

Documentos: TACBrECFTipoDocumentoSet;

begin

Documentos := [TACBrECFTipoDocumento.docNenhum];

if (ecfHandle = nil) then

begin

Result := -2;

Exit;

end;

try

ecfHandle^.ECF.EspelhoMFD_DLL( DataInicial, DataFinal, NomeArquivo, Documentos );

Result := 0;

except

on exception : Exception do

begin

ecfHandle^.UltimoErro := exception.Message;

Result := -1;

end

end;

end;

e em seguida joguei no "Exports" o nome da função. Com isso eu consegui importar o essa função no .NET, onde executei as seguintes alterações (Utilizando o Visual Studio 2010):

No ACBrDll.cs eu incluí as seguintes linhas:

[DllImport( "ACBr32.dll", CallingConvention = CallingConvention.Cdecl )]

public static extern int ECF_EspelhoMFDArquivo( IntPtr ecfHandle, double dataInicial, double dataFinal, string nomeArquivo );

em seguida, no arquivo ACBrECF.cs, inclui as seguintes linhas:

public void EspelhoMFD( DateTime dataInicial, DateTime dataFinal, string nomeArquivo )

{

int ret = ACBrDll.ECF_EspelhoMFDArquivo( this.handle, dataInicial.ToOADate(), dataFinal.ToOADate(), ToUTF8( nomeArquivo ) );

CheckResult( ret );

}

depois dessas alterações eu tentei executar esse método no projeto ACBr.Net, alterando o arquivo MainForm.cs:

public void Ativar()

{

try

{

acbrECF.Modelo = (ModeloECF)modeloComboBox.SelectedItem;

acbrECF.Porta = (string)portaComboBox.SelectedItem;

.

.

.

WriteResp("Ativado: OK!");

acbrECF.EspelhoMFD( new DateTime( 2012, 01, 01 ), new DateTime( 2012, 01, 31 ), @"TESTE.TXT" );

WriteResp( "Gerado espelho MFD" );

}

catch (Exception exception)

{

ativarCheckButton.Checked = false;

messageToolStripStatusLabel.Text = "Exception";

descriptionToolStripStatusLabel.Text = exception.Message;

}

}

Está ocorrendo o seguinte, o sistema conecta com a impressora e ao executar o processo, a DLL da bematech gera o log de erro abaixo:

2012-08-08 15:58:29:225 - -----------------------------------------------------------------------

2012-08-08 15:58:29:227 - Bematech_FI_LeInformacoesConfiguracao

2012-08-08 15:58:29:229 - Versão BemaFI32.Dll: 6,1,0,0

2012-08-08 15:58:29:231 - Versão BemaMFD.dll: 2,1,0,0

2012-08-08 15:58:29:233 - Versão BemaMFD2.dll: 2,1,0,0

2012-08-08 15:58:29:235 - path: C:\TEMP\

2012-08-08 15:58:29:236 - Log: 1

2012-08-08 15:58:29:237 - LogDiario: 1

2012-08-08 15:58:29:239 - Status: 0

2012-08-08 15:58:29:240 - Retorno: 0

2012-08-08 15:58:29:242 - ControlePorta: 1

2012-08-08 15:58:29:243 - StatusFuncao: 0

2012-08-08 15:58:29:245 - ModeloImp: BEMATECH

2012-08-08 15:58:29:247 - ModoGaveta: 0

2012-08-08 15:58:29:248 - EmulMFD: 0

2012-08-08 15:58:29:250 - StatusCheque: 0

2012-08-08 15:58:29:252 - Porta: COM3

2012-08-08 15:58:29:253 - StatusErro: 1

2012-08-08 15:58:29:255 - TimeOutZ: 99

2012-08-08 15:58:29:257 - Impressora: 1

2012-08-08 15:58:29:258 - TimeOutGerencial: 40

2012-08-08 15:58:29:260 - CrLfVinculado: 0

2012-08-08 15:58:29:262 - Gerencial: 0

2012-08-08 15:58:29:264 - ForceWTSClient: 1

2012-08-08 15:58:29:265 - RetriesWTSCmd: 3

2012-08-08 15:58:29:267 - Software House - COO: 0

2012-08-08 15:58:29:269 - Software House - NumeroAplicativo: 0

2012-08-08 15:58:29:270 - Software House - CNPJ: 0

2012-08-08 15:58:29:272 - Software House - IE: 0

2012-08-08 15:58:29:274 - Software House - IM: 0

2012-08-08 15:58:29:276 - Software House - RazaoSocial: 0

2012-08-08 15:58:29:278 - Software House - NomeAplicativo: 0

2012-08-08 15:58:29:280 - Software House - Versao: 0

2012-08-08 15:58:29:282 - Software House - Linha1: 0

2012-08-08 15:58:29:284 - Software House - Linha2: 0

2012-08-08 15:58:29:286 - ECF - IM: 0

2012-08-08 15:58:29:288 - ECF - UF: 0

2012-08-08 15:58:29:290 - GerarRFD: 0

2012-08-08 15:58:29:292 - CalculoIcmsCupom: 0

2012-08-08 15:58:29:293 - HabilitaRFDImpMFD: 0

2012-08-08 15:58:29:295 - Retorno Bematech_FI_LeInformacoesConfiguracao: OK

2012-08-08 15:58:31:922 - -----------------------------------------------------------------------

2012-08-08 15:58:31:924 - Bematech_FI_EspelhoMFD

2012-08-08 15:58:31:926 - Parâmetros: C:\TEMP\TESTE.TXT|01/01/2012|31/01/2012|D|1|||

2012-08-08 15:58:31:928 - Bematech_FI_DownloadMFD

2012-08-08 15:58:31:930 - Parâmetros: 1|01/01/2012|31/01/2012|C:\TEMP\Download.MFD|0

2012-08-08 15:58:31:940 - Bematech_FI_ModeloImpressora

2012-08-08 15:58:31:942 - Bematech_FI_NumeroSerie

2012-08-08 15:58:44:133 - Timout finalizado e ACK não lido - Erro 003

2012-08-08 15:58:44:135 - Qtd bytes ler: 18

2012-08-08 15:58:44:138 - Qtd bytes lidos: 0

2012-08-08 15:58:44:152 - Retorno Bematech_FI_NumeroSerie: 0 - Erro de comunicacao

2012-08-08 15:58:44:155 - Retorno Bematech_FI_ModeloImpressora: 0

2012-08-08 15:58:44:157 - Retorno Bematech_FI_EspelhoMFD: -1 - Erro de execucao na funcao Bematech_FI_DownloadMFD:

Pelo que vi está faltando algumas informações como a chave privada e pública, além disso o final do log informa que está havendo um erro de comunicação, e nesse ponto eu estou empacado pois não sei exatamente o que fazer pois eu não entendo muito da sintaxe e dos comandos do Delphi, onde utilizei o comando LeituraMemoriaFiscalSerial, que está disponível no ACBr.Net, como modelo para trazer a função do Espelho de MFD para o ACBr.Net.

Link to comment
Share on other sites

  • 3 weeks later...

Boa tarde,

Verifiquei que o ACBr32.DLL não possui as funcionalidades para o Espelho MFD

(...)

Utilizando o Lazarus, eu alterei o arquivo ACBrECFDll.PAS incluindo a seguinte função:

(..)

Pelo que vi está faltando algumas informações como a chave privada e pública, além disso o final do log informa que está havendo um erro de comunicação, e nesse ponto eu estou empacado pois não sei exatamente o que fazer pois eu não entendo muito da sintaxe e dos comandos do Delphi, onde utilizei o comando LeituraMemoriaFiscalSerial, que está disponível no ACBr.Net, como modelo para trazer a função do Espelho de MFD para o ACBr.Net.

Alô Sensum...

Essas funções não foram implementadas ainda.

Você as fez corretamente no código que enviou, tem como testar o Espelho MFD no utilitário ECFTeste que vem junto do ACBrMonitor? Você está usando emulador ou impresora? Eu estou tendo problemas com erro de comunicação em alguns computadores usando o emulador da bematech.

De qualquer forma, essas funções serão implementadas, logo que estiverem ok eu posto um resultado aqui, ok.

Abs!

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link to comment
Share on other sites

  • 3 weeks later...

(...)

Verifiquei que o ACBr32.DLL não possui as funcionalidades para o Espelho MFD

(...)

Alô pessoal,

Recebemos a contribuição do colega Rafael Teno Dias que implementou as funções de DAV e MFD.

Já estão disponíveis no SVN!

Abs

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link to comment
Share on other sites

  • Este tópico foi criado há 4296 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...