Ir para conteúdo
  • Cadastre-se

dev botao

Alteração em ACBrCTeConhecimentos.pas


paulorsa
  • Este tópico foi criado há 1991 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Consultores

Bom dia Paulo,

Esse XML tem 2 coisas erradas.

Primeiro não existe NameSpace no grupo <rodo>

Segundo o Manual do CT-e 3.00 - página 12 item b temos:

b) Declaração namespace 
 
O documento XML terá tão somente UMA declaração de namespace no elemento raiz do documento com o seguinte padrão:  

<CTe xmlns=”http://www.portalfiscal.inf.br/cte” > (exemplo para o XML do CT-e)

Esse XML possui um namespace np grupo CTe que esta correto e uma segunda no grupo rodo que esta errado, conforme o manual.

Os namespace que aparecem nos grupos cteProc e protCTe não traz nenhum prejuízo, pois são grupos que não fazem parte da estrutura do CT-e.

O grupo cteProc contem dois grupos: CTe (gerado e enviado para SEFAZ) e protCTe (gerado e retornado pela SEFAZ), portanto é de se esperar que cada um desses dois grupos tenham os seus namespace.

 

Segundo quem desenvolveu essa aplicação não sabe o que vem a ser o Recebedor e Expedidor e quando usar.

Note que os dados do Expedidor são exatamente os mesmos do Remetente e os dados de Recebedor são exatamente os mesmos do Destinatário.

O Expedidor e Recebedor só devem aparecer no XML do CT-e quando temos um CT-e cujo tipo de serviço é: 2 = Redespacho ou 3 = Redespacho intermediário.

Se tratando de Redespacho deverá constar o Recebedor ou o Expedidor e nunca os dois, mais o Remente e o Destinatário.

E se tratando de Redespacho Intermediário deverá constar somente o Recebedor e o Expedidor.

Esse CT-e que você anexou o tipo de serviço é zero, ou seja, normal.

 

Quanto a sua alteração visa resolver o problema de um CT-e mau feito cujo modal é o Rodoviário e os demais modais?

Acredito que devemos adotar uma outra solução que atenda todos os modais.

  • 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

Concordo que o XML não esta correto, mas como o sistema é feito para empresas de contabilidade ele apenas verifica se o XML está validado no SEFAZ, este foi apenas um caso de um xml que eu não consegui validar, mas que o SEFAZ aceito e consta na base deles exatamente como esta ai. É meu cliente que usa a transportadora e não adianta pedir para consertarem o sistema deles pois alegam que se fosse errado o SEFAZ não aceitaria. Fiz a alteração pois meu sistema valida e carrega a base de dados em cima dos XML's de CTe's.

Quanto aos outros modais, não tive nenhum com esse problema, acredito (espero) que não tenha mais nenhum, pois isso só ocorre com transportadoras do tipo Rodoviário. (talvez todas usem o mesmo sistema).

Tenho outros XML's com a mesma situação, se desejar posso anexar.

Editado por paulorsa
Complemento de informação
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Paulo,

Vou pensar em uma solução para todos os modais.

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

  • Consultores

Boa tarde Paulo,

Favor atualizar os fontes e faça um teste com a minha alteração.

 

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

Não funcionou pelo seguinte motivo.

Na linha 303 do ACBrCTeConhecimentos.pas foi alterada

  AXMLModal := StringReplace(AXMLModal, ' xmlns="' + ACBRCTE_NAMESPACE + '"', '',
                                     [rfReplaceAll, rfIgnoreCase]);

 

corretamente, mas na linha de baixo na 306 onde tem um case.

  case TACBrCTe(TConhecimentos(Collection).ACBrCTe).IdentificaSchemaModal(AXML) of
é passado como parâmetro  AXML 

nesse caso teria que fazer o StringReplace no AXML ou modificar também a ACBrCTe.pas na function TACBrCTe.IdentificaSchemaModal(const AXML: String): TSchemaCTe;

fazendo o mesmo StringReplace, se quiser posso fazer só não sei qual seria a melhor opção.

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Paulo,

Vou verificar e assim que corrigir o problema, informo aqui.

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

  • Este tópico foi criado há 1991 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

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