Ir para conteúdo
  • Cadastre-se

dev botao

Arquivo NFP Reg 13


Ver Solução Respondido por Régys Silveira,
  • Este tópico foi criado há 4383 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

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

  • Moderadores
Postado

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
Postado

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

  • Moderadores
Postado

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
Postado

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

  • 2 meses depois ...
Postado

[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

Postado

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

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