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á 2677 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 para o comentário
Compartilhar em outros sites

  • Consultores

Boa noite Valdir,

Favor atualizar os fontes e refaça os testes.

  • Curtir 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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

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

 

 

Link para o comentário
Compartilhar em outros 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 ).
 

  • Curtir 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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros 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!

  • Curtir 1

Valdir Dill

Rio de Janeiro - RJ

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa noite Valdir,

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

  • Curtir 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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros 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!

 

Editado por valdirdill

Valdir Dill

Rio de Janeiro - RJ

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

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.
Link para o comentário
Compartilhar em outros sites

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