Ir para conteúdo
  • Cadastre-se

dev botao

Arquivomf_Dll Não Implementada Para A Impressora: Fiscnet: Urano - Urano/1Fit Logger


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

Recommended Posts

  • Moderadores

Bom Dia,

Estou enfrentando o seguinte problema

ArquivoMF_DLL não implementada para a Impressora: FiscNET: URANO - URANO/1FIT LOGGER

e

ArquivoMFD_DLL não implementada para a Impressora: FiscNET: URANO - URANO/1FIT LOGGER

na hora de gerar os Arquivos Binários utilizando o protocolo FiscNET, gostaria de saber se alguem já o implementou e poderia compartilhar, pois atualizei meus Fontes do ACBr e os comandos realmente não estão implementados nas assinaturas utilizadas.

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom Dia Daniel,

Estou utilizando o novo Repositorio a muito tempo já, inclusive acabei de realizar um update "Completed: At revision: 7635" no repositorio. e os comandos de geração para os arquivos Binários para o protocolo FiscNET não existem.

Para os Testes estou utilizando uma Urano como pode ser visto na mensagem.
 

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Você deve ter instalações conflitantes do ACBr... o Código já existe a muito tempo... Veja:

 

https://svn.code.sf.net/p/acbr/code/trunk/Fontes/ACBrSerial/ACBrECFFiscNET.pas

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Daniel, na ER 02.01 pede para gerar o arquivo MF e MFD Binários, para atender o requisito foram adicionados as seguentes assinaturas.

Procedure ArquivoMF_DLL(NomeArquivo: AnsiString); override ;
Procedure ArquivoMFD_DLL(NomeArquivo: AnsiString); override ;

pois esses arquivos não podem ter filtros devem ser gerados de toda a ECF, se olha na Unit o mesmo não possui as assinaturas, assim não consigo atender ao requisito para impressoras que usam o protocolo, como Elgin, Dataregis, Urano dentre outras, estou pesquisando para encontrar a manira de implementar, mas os manuais são oriveis não tem muita informações. sobre como fazer esse download.

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Juliomar, para a Daruma, Bematech, Epson, Sweda funciona perfeitamente, já apaguei os fontes do ACBr 2 vezes e fiz o checkout do zero e mesmo acessando a Unit pelo browser conforme link postado não consigo visualizar essas alterações nessa Unit. eu consigo gerar os Arquivos descriptografados da MFD e MF que é o ATOCOTEP1704 mas os Binários não são gerados, poderia anexar a Unit aki no Post para que eu possa verificar se é algo na que minha maquina não está atualizando, Tenho apenas 1 diretorio com os Fontes do ACBr.

Editado por bragaped

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Realmente estão faltando os métodos:

 

    Procedure ArquivoMF_DLL(NomeArquivo: AnsiString); override ;
    Procedure ArquivoMFD_DLL(NomeArquivo: AnsiString); override ;
 

 

Esses métodos dependem de chamadas da DLL do fabricante para serem executados... 

 

Qual deve ser a chamada da DLL ? Há algum exemplo de como chamá-la ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Daniel, até o momento a unica coisa que encontrei foi metodo de geração do Binário TDM parece que não tem comando independente de geração de cada Binário.

o Metodo são os Mesmos utilizados nas Funções Arquivo_DLL já implementados.

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Sim.... o mesmo que achei... "DLLReadLeMemorias"... mas esse método não faz distinção de "MF" ou "MFD"...

 

Acho que é necessário contactar o fabricante e solicitar mais informações...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Moderadores

Bom Dia Daniel, não encontrei nada ainda da Dataregis e Urano para separar as memorias no arquivo mas de acordo com o pessoal da elgin o comando é esse.

Elgin_LeMemoriasBinario
Realiza a leitura binária das memórias do ECF, e grava em um arquivo no computador.
Esta função realiza uma chamada para a função DLLReadLeMemorias da DLL leitura.dll, que envia o
comando para ECF para fazer a leitura da Memória Fiscal e da Memória Fita Detalhe e gravar em
uma arquivo magnético.
Parâmetros:
szNomeArquivo:variável STRING com o caminho e o nome do arquivo que será gravado os dados
da leitura binária das memórias do ECF.
szSerieECF: variável STRING com o número de série do ECF.
bAguardaConcluirLeitura: variável BOLEANA que indica se a leitura deve ser executada de
maneira síncrona ( a função só "libera" o processamento após o fim da geração do arquivo , ou
assíncrona ( a leitura da memória é realizada em background"liberando" o processamento do
sistema).

Segundo o texto destacado acima, a função faz a leitura das memórias do ECF, ou seja as duas.

Um dos parâmetros da Função Elgin_LeMemoriasBinario é o tipo de arquivo que ela vai salvar (.TDM, .MFD ou .MF) esse parâmetro  irá gerar o formato especifico informado.

Exemplo:

Elgin_LeMemoriasBinario("c:\ArqMF.MF", NumSerie, True)  // caminho ou diretório + nome do arquivo (aqui, você pode escolher a extensão/tipo do arquivo que deseja criar)
Elgin_LeMemoriasBinario("c:\ArqMFD.MFD", NumSerie, True)

Elgin_LeMemoriasBinario("c:\ArqTDM.TDM", NumSerie, True)

 

Sendo assim para Elgin a geração do arquivo está correto mas para Urano e Dataregis ainda não consegui gerar as memorias separadas pela dll, mesmo utilizando a regra destacada pela elgin.

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Você chegou a implementar essas chamadas no ACBrECFFiscNet.pas ?

 

Se SIM, deseja compartilhar as alterações ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Moderadores

procedure TACBrECFFiscNET.ArquivoMF_DLL(NomeArquivo: AnsiString);
Var
  iRet : Integer;
  PortaSerial, ModeloECF, NumFab : AnsiString;
  CooIni, CooFim, ArqTmp : AnsiString ;
  OldAtivo : Boolean ;
begin
  NumFab      := NumSerie;
  ModeloECF   := SubModeloECF;
  CooIni      := '000001';
  CooFim      := '999999';
  PortaSerial := fpDevice.Porta ;

  ArqTmp := ExtractFilePath( NomeArquivo ) + 'ACBrMF.MF' ;

  if FilesExists( ArqTmp ) then DeleteFile( ArqTmp );
  if FilesExists( NomeArquivo ) then DeleteFile( NomeArquivo );

  LoadDLLFunctions;
  OldAtivo := Ativo;
  try
     Ativo := False;

     if pos(fsMarcaECF, 'dataregis|termoprinter') > 0 then
      begin
        iRet := xGera_PAF( PortaSerial, ModeloECF, ArqTmp, CooIni, CooFim );

        if iRet <> 0 then
           raise EACBrECFERRO.Create( ACBrStr( 'Erro ao executar Gera_PAF.'+sLineBreak+
                                            'Cod.: '+IntToStr(iRet) + ' - ' +
                                            GetErroAtoCotepe1704(iRet) )) ;

        if not FileExists( NomeArquivo ) then
           raise EACBrECFERRO.Create( ACBrStr( 'Erro na execução de Gera_PAF.'+sLineBreak+
                                            ': "'+NomeArquivo + '" não gerado' ))
      end

     else if (fsMarcaECF = 'elgin') then
      begin
        AbrePortaSerialDLL(fpDevice.Porta, ExtractFilePath(NomeArquivo));

        iRet := xElgin_LeMemoriasBinario( ArqTmp, NumFab, true );

        if (iRet <> 1) then
           raise EACBrECFERRO.Create(ACBrStr('Erro ao executar Elgin_LeMemoriasBinario.'+sLineBreak+
                                                   'Cod.: ' + IntToStr(iRet))) ;

        if not FilesExists( ArqTmp ) then
           raise EACBrECFERRO.Create(ACBrStr('Erro na execução de Elgin_LeMemoriasBinario.'+sLineBreak+
                                          'Arquivo binário não gerado!'));

        xElgin_FechaPortaSerial();
      end
     else
      begin    
        iRet := xDLLReadLeMemorias( PortaSerial, ArqTmp, NumFab, '1');

        if iRet <> 0 then
           raise EACBrECFERRO.Create( ACBrStr( 'Erro ao executar DLLReadLeMemorias.' + sLineBreak +
                                            'Cod.: '+ IntToStr(iRet) + ' - ' +
                                            GetErroAtoCotepe1704(iRet) )) ;
      end ;
  finally
    Ativo := OldAtivo ;
    if AnsiUpperCase(ArqTmp) <> AnsiUpperCase(NomeArquivo) then
      CopyFileTo(ArqTmp, NomeArquivo) ;
    //if FilesExists( ArqTmp ) then DeleteFile( ArqTmp );
  end;
end;

procedure TACBrECFFiscNET.ArquivoMFD_DLL(NomeArquivo: AnsiString);
Var
  iRet : Integer;
  PortaSerial, ModeloECF, NumFab : AnsiString;
  CooIni, CooFim, ArqTmp : AnsiString ;
  OldAtivo : Boolean ;
begin
  NumFab      := NumSerie;
  ModeloECF   := SubModeloECF;
  CooIni      := '000001';
  CooFim      := '999999';
  PortaSerial := fpDevice.Porta ;

  ArqTmp := ExtractFilePath( NomeArquivo ) + 'ACBrMFD.MFD' ;

  if FilesExists( ArqTmp ) then DeleteFile( ArqTmp );
  if FilesExists( NomeArquivo ) then DeleteFile( NomeArquivo );

  LoadDLLFunctions;
  OldAtivo := Ativo;
  try
     Ativo := False;

     if pos(fsMarcaECF, 'dataregis|termoprinter') > 0 then
      begin
        iRet := xGera_PAF( PortaSerial, ModeloECF, ArqTmp, CooIni, CooFim );

        if iRet <> 0 then
           raise EACBrECFERRO.Create( ACBrStr( 'Erro ao executar Gera_PAF.'+sLineBreak+
                                            'Cod.: '+IntToStr(iRet) + ' - ' +
                                            GetErroAtoCotepe1704(iRet) )) ;

        if not FileExists( NomeArquivo ) then
           raise EACBrECFERRO.Create( ACBrStr( 'Erro na execução de Gera_PAF.'+sLineBreak+
                                            ': "'+NomeArquivo + '" não gerado' ))
      end

     else if (fsMarcaECF = 'elgin') then
      begin
        AbrePortaSerialDLL(fpDevice.Porta, ExtractFilePath(NomeArquivo));

        iRet := xElgin_LeMemoriasBinario( ArqTmp, NumFab, true );

        if (iRet <> 1) then
           raise EACBrECFERRO.Create(ACBrStr('Erro ao executar Elgin_LeMemoriasBinario.'+sLineBreak+
                                                   'Cod.: ' + IntToStr(iRet))) ;

        if not FilesExists( ArqTmp ) then
           raise EACBrECFERRO.Create(ACBrStr('Erro na execução de Elgin_LeMemoriasBinario.'+sLineBreak+
                                          'Arquivo binário não gerado!'));

        xElgin_FechaPortaSerial();
      end
     else
      begin
        iRet := xDLLReadLeMemorias( PortaSerial, ArqTmp, NumFab, '1');

        if iRet <> 0 then
           raise EACBrECFERRO.Create( ACBrStr( 'Erro ao executar DLLReadLeMemorias.' + sLineBreak +
                                            'Cod.: '+ IntToStr(iRet) + ' - ' +
                                            GetErroAtoCotepe1704(iRet) )) ;
      end ;
  finally
    Ativo := OldAtivo ;
    if AnsiUpperCase(ArqTmp) <> AnsiUpperCase(NomeArquivo) then
      CopyFileTo(ArqTmp, NomeArquivo) ;
    //if FilesExists( ArqTmp ) then DeleteFile( ArqTmp );
  end;
end;

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Testei na Urano porem o arquivo gerado é o TDM não encontrei como gerar os arquivos independente como o eECF faz.

Para Dataregis não obitive retorno do Fabricante,

Para Elgin não consegui testar pois não possuo a mesma na bancada.

Pedro E. Braga

Product Owner/ System Analyst / Programmer

WhatsApp (47) 98925-0951

E-mail: [email protected]

Skype: [email protected]

http://bragatec.blogspot.com.br

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...
  • Fundadores

Olá Rodrigo,

Comprando as Units, não vi nenhuma modificação relacionado ao "Download da MFD"...

Certeza que você anexou a Unit correta ?

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2715 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.

The popup will be closed in 10 segundos...