Jump to content

click.png

click.png

click.png

click.png click.png click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

MDFe 3.0 - Erro com dhIniViagem


Valdir Dill
Go to solution Solved by Italo Giurizzato Junior,
  • Este tópico foi criado há 1762 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Boa tarde,

Estou testando a versão 3.0 do MDFe.

Pelo que analisei do NT, o campo dhIniViagem não é obrigatório ser preenchido. Mas ao deixá-lo sem preencher, parece que que o Acbr alimenta com data zero (30/12/1899), o que causa erro na validação (print anexo).

O que está errado, minha interpretação do manual ou o acbr ao não verificar se o campo foi preenchido antes de formatá-lo (linha 281 da pmdfeMDFeW.pas)?

Obrigado.

ErroMDFe.png

Valdir Dill

Rio de Janeiro - RJ

 

 

Link to comment
Share on other sites

  • Consultores
  • Solution

Boa noite Valdir,

Unit: pmdfeMDFeW.pas - linha: 281

  if VersaoDF = ve100 then
    Gerador.wCampo(tcDatHor, '#024a', 'dhIniViagem', 19, 19, 0, MDFe.ide.dhIniViagem, DSC_DHINIVIAGEM)
  else
    Gerador.wCampo(tcStr, '#024a', 'dhIniViagem', 25, 25, 0, FormatDateTime('yyyy-mm-dd"T"hh:nn:ss', MDFe.ide.dhIniViagem)
                                                           + GetUTC(CodigoParaUF(MDFe.ide.cUF), MDFe.ide.dhIniViagem), DSC_DHINIVIAGEM);

Coloquei zero no lugar do 1, esse parâmetro indica que a tag é opcional ( = 0 ) ou obrigatória ( = 1 ).
 

  • Like 1
Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • Membros Pro

Bom dia,

Certo, entendi o que ocorre. O problema é que quando dhIniViagem NÃO é alimentada, seu valor fica 0 (30/12/1899). Então, mesmo sendo uma data inválida, o campo TEM valor e isso faz com que o componente gere a tag. Mas esse valor não passa na validação do XML do WS.

Sugiro que essa rotina seja alterada para:

  if MDFe.ide.dhIniViagem > 0 then
   begin

    if VersaoDF = ve100 then
      Gerador.wCampo(tcDatHor, '#024a', 'dhIniViagem', 19, 19, 0, MDFe.ide.dhIniViagem, DSC_DHINIVIAGEM)
    else
      Gerador.wCampo(tcStr, '#024a', 'dhIniViagem', 25, 25, 0, FormatDateTime('yyyy-mm-dd"T"hh:nn:ss', MDFe.ide.dhIniViagem)

                                                           + GetUTC(CodigoParaUF(MDFe.ide.cUF), MDFe.ide.dhIniViagem), DSC_DHINIVIAGEM);
   end;

Dessa forma a tag só seria criada no XML se dhIniViagem tiver sido alimentada com uma data válida.

Obrigado!

  • Like 1

Valdir Dill

Rio de Janeiro - RJ

 

 

Link to comment
Share on other sites

  • Consultores

Boa noite Valdir,

Com certeza a solução é essa, já fiz a alteração e vou disponibilizar no repositório.

  • Like 1
Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • Membros Pro
14 horas atrás, Italo Jurisato Junior disse:

Boa noite Valdir,

Com certeza a solução é essa, já fiz a alteração e vou disponibilizar no repositório.

A Alteração ficou errada

  if MDFe.ide.dhIniViagem > 0 then
  begin
    if VersaoDF = ve100 then
      Gerador.wCampo(tcDatHor, '#024a', 'dhIniViagem', 19, 19, 0, MDFe.ide.dhIniViagem, DSC_DHINIVIAGEM)
    else
      Gerador.wCampo(tcStr, '#024a', 'dhIniViagem', 25, 25, 0, FormatDateTime('yyyy-mm-dd"T"hh:nn:ss', MDFe.ide.dhIniViagem)
  end;                                                         + GetUTC(CodigoParaUF(MDFe.ide.cUF), MDFe.ide.dhIniViagem), DSC_DHINIVIAGEM);

 

Esse end; deve ficar na linha 286 e não na 285.

Obrigado!

 

Edited by valdirdill

Valdir Dill

Rio de Janeiro - RJ

 

 

Link to comment
Share on other sites

  • Consultores

Corrigido na revisão 12619 pelo Ítalo.

Favor verificar.

  • Like 1

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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

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