Ir para conteúdo
  • Cadastre-se

dev botao

MDFe 3.0 - Erro com dhIniViagem


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

Recommended Posts

  • Membros Pro
Postado

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

 

 

  • Membros Pro
Postado

Bom dia Italo,

Atualizei agora os fontes e continua na mesma. A  linha 281 da pmdfeMDFeW.pas, continua igual. 

Poderia me dizer o que foi alterado (qual parte do fonte) para mim conferir se meus fontes estão mesmo atualizados?

Obrigado!

 

Valdir Dill

Rio de Janeiro - RJ

 

 

  • Consultores
  • Solution
Postado

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 ).
 

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Membros Pro
Postado

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!

  • Curtir 1

Valdir Dill

Rio de Janeiro - RJ

 

 

  • Membros Pro
Postado (editado)
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!

 

Editado por valdirdill

Valdir Dill

Rio de Janeiro - RJ

 

 

  • Consultores
Postado

Corrigido na revisão 12619 pelo Ítalo.

Favor verificar.

  • Curtir 1

[]'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.
×
×
  • 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...
The popup will be closed in 10 segundos...