Jump to content

dev botao

Arquivo NFP Reg 13


Marcelo Bill
Go to solution Solved by Régys Silveira,
  • Este tópico foi criado há 4309 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá Regys

Tenho um cliente cujo contador reclamou que o arquivo da NFP,

gerado através da função do acbr

"dm00.ECF.ArquivoMFD_DLL(vDataProcesso,vDataProcesso,LerIni('ECF','NFP')+vNomeArquivo,[docTodos],finMFD);"

Estava havendo a ausência do Registro 12, então baixei nova DLL e coloquei junto do meu EXE,

blz, passou a gerar com o Registro 12, no entanto, a partir disso, passou a faltar o Registro 13

sei mais ou menos que quem dá o retorno dessas informações é a DLL, mas a pergunto é

se por acaso ninguem reclamou sobre o fato ?

obrigado

fico no aguardo

Link to comment
Share on other sites

  • Moderadores

Olá, tente utilizar o método PafMF_GerarCat52, ele já foi parametrizado para pedir a dll os dados corretos para o arquivo NFP, se mesmo assim não gerar corretamente, teria que entrar em contato com os fabricantes, porque a dll gera o arquivo baseado no ato cotepe relativo ao hardware do ECF e isso é homologado, então não acho que eles estejam gerando errado, mas é bom dar uma olhada.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link to comment
Share on other sites

Olá Regys

Infelizmente não deu certo. (Esse teste foi feito com DR600)

a) Demora pacas, tipo coloquei um período de 01/09 a 05/09 e demorou aproximadamente uns 7 min para dar uma resposta.

B) Após esse tempo, deu um erro "ERRONFP=Erro ao Gerar arquivo DR130308.19C - Impressora Daruma não está respondendo"

Impressora Daruma não está respondendo.

Lembrando que eu faço da seguinte forma:

#################

vData1:=StrToDate(FormatDateTime('DD/MM/YY',Data1.DateTime));

vData2:=StrToDate(FormatDateTime('DD/MM/YY',Data2.DateTime));

if LerIni('ECF','NFP')='' then begin

GravarIni('ECF','NFP',LerIni('ACESSO','LOCAL')+'NFP\');

if not DirectoryExists(LerIni('ECF','NFP')) then begin

ForceDirectories(LeftStr(LerIni('ECF','NFP'),Length(LerIni('ECF','NFP'))-1));

end;

end;

ZapFiles(LerIni('ECF','NFP')+'*.*');

vOrigem:=LerIni('ECF','NFP');

vDestino:=LerIni('ECF','NFP');

Barra.Panels[0].Text:='Verificando Registros de ECF';

zCupom.Close;

zCupom.Params.CreateParam(ftDateTime,'pData1',ptInput);

zCupom.Params.CreateParam(ftDateTime,'pData2',ptInput);

zCupom.SQL.Add('SELECT EMISSAO FROM N_CUPOM WHERE EMISSAO BETWEEN :pData1 AND :pData2 GROUP BY EMISSAO');

zCupom.Params.ParamByName('pData1').AsDateTime:=vData1;

zCupom.Params.ParamByName('pData2').AsDateTime:=vData2;

zCupom.Open;

if zCupom.RecordCount=0 then begin

zCupom.Free;

mBox('Período sem movimento','E',[mbok]);

Barra.Panels[0].Text:='';

Exit;

end;

Try

Zip.FSpecArgs.Clear;

While not zCupom.Eof do begin

Application.ProcessMessages;

vDataProcesso:=zCupom.fieldbyname('emissao').AsDateTime;

if ValidarData(DateToStr(vDataProcesso)) then begin

vExtensao:=RetExtensaoNFP(vDataProcesso);

vNomeArquivo:=LefTstr(dm00.ECF.NumSerie,2)+RightStr(dm00.ECF.NumSerie,6)+'.'+vExtensao;

Try

Barra.Panels[0].Text:='Gerando o arquivo do dia '+DateToStr(vDataProcesso);

dm00.ECF.PafMF_GerarCAT52(vDataProcesso,vDataProcesso,LerIni('ECF','NFP'));

// dm00.ECF.ArquivoMFD_DLL(vDataProcesso,vDataProcesso,LerIni('ECF','NFP')+vNomeArquivo,[docTodos],finMFD);

if LeftStr(vNomeArquivo,2)=LefTstr(dm00.ECF.NumSerie,2) then begin

zip.FSpecArgs.Add(vOrigem+vNomeArquivo);

end;

except

on e:exception do begin

Barra.Panels[0].Text:='';

Dedoduro('ERRONFP','Erro ao Gerar arquivo '+vNomeArquivo+' - '+e.Message,DM.LoginFANTASIA.AsString);

mBox('Erro ao Gerar arquivo '+vNomeArquivo+' - '+e.Message,'E',[mbok]);

End;

end;

end;

zCupom.Next;

end;

Barra.Panels[0].Text:='';

Except

on e:exception do begin

Barra.Panels[0].Text:='';

Dedoduro('ERRONFP',e.Message,DM.LoginFANTASIA.AsString);

mBox(e.Message,'E',[mbok]);

zCupom.free;

End;

End;

zCupom.free;

#################

Veja, fiz dessa forma, pois a função anterior a qual está comentada, não tinha o tratamento de verificação

do dia sem movimento, dessa forma fiz um looping em cima da tabela dos Cupons emitidos que ficam gravados

no meu banco de dados.

Uma ou duvida, é se essa função PafMF_GerarCat52 se eu definir um prazo maior que um dia, se a função vai

gerar um arquivo para cada dia.

Tem mais, antes de eu fazer esse teste, copiei as Dlls que estão na pasta DLL do componente do acbr e descareguei

na maquina do meu cliente.

Inclusive, já tentei da forma anterior com a impressora Bematech e nunca consegui fazer, já com a Daruma,

em alguns lugares onde tem a DR700 e ou a DR600 (mais rescente) até funcionava a ArquivoMFD_DLL(vDataProcesso,vDataProcesso,LerIni('ECF','NFP')+vNomeArquivo,[docTodos],finMFD);

Amigo, estou ficando preocupado, já estou pensando seriamente em pegar a Lei da NFP, copiar as DLLs necessárias e fazer

na mão, porém sempre fico pensando que a Luz pode vir do fim desse túnel.

abraço, obrigado pelas dicas

Marcelo

Link to comment
Share on other sites

  • Moderadores

Primeiro tente atualizar a DLL Daruma, se mesmo assim não der certo, verifique com o suporte ao desenvolvedor Daruma, pois pode ser um caso de atualização de firmware visto que é uma DR600, quanto ao ACBr não tem como fazer muita coisa porque ele passa a bola para a dll e ela faz tudo nessa situação específica.

É mesmo demorado gerar o arquivo, a impressora leva um bom tempo e apita algumas vezes durante o processo, testei aqui em minha FS700 e está tudo OK.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link to comment
Share on other sites

Mas em relação a eu estar informando um periodo maior que um dia na função pafMF_GerarCat52... esse problema será que já foi solucionado ? Pois de outra forma no caso de um sabado, domingo ou feriado não havendo movimento a tempos atras,

isso causava um erro, informando que não havia movimento em um dos dias dentro do período.

valeu

Link to comment
Share on other sites

  • 2 months later...

[RESOLVIDO]

 

Regys

 

Agora a DLL esta respondendo corretamente, tanto na Daruma quanto na Bematech (valeu)

 

porem estou usando exatamente como esta no Exemplo do ACBr

 

A única coisa que não consegui descobrir foi no caso da Bematech é como determinar que os arquivos sejam gerados dentro do local que eu escolhi.

eu usei a função

ECF.pafMF_GerarCat52(Data1,Data2,'C:\TERMINAL\NFP\') e somente no caso da Bematech ele simplesmente jogou o arquivo do Download.mfd dentro do local escolhido e gerou os arquivos BE???????.??? no drive C:\

Alterei a path no Bemafi32.INI e também não funcionou.

 

Será que tem algum outro detalhe para resolver esse caso ?

 

Obrigado

Marcelo

Link to comment
Share on other sites

Regys

 

Na  M O S C A    +.+

 

Muito obrigado pela vossa existência.  Espero que essa frase se encaixo para todos que estiverem lendo

 

Muiiiiiiiiito boooooooas Fesssssssta a todos

e que o Papai Noel seja presenteado com a maior felicidade do Mundo, pois graças a Deus e o nosso esforço,

tivemos um excelente ano de trabalho.

Finalmente a informatica está se encaixando em seu devido grau de importância.

 

abraço a todos e boas festas.

Marcelo Narezzi e Familia

  • Like 1
Link to comment
Share on other sites

×
×
  • 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.