Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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.

Postado

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.

Postado

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.

  • Consultores
Postado

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.
  • 3 semanas depois ...
  • 3 semanas depois ...
  • 4 semanas depois ...
Postado

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.

  • 3 semanas depois ...
Postado

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.

  • 3 semanas depois ...
Postado

(...)

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.

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.