Gerenciador de XML - CT-e

Para a função de importação de XML para CT-e o sistema faz algumas validações para saber se deve receber o XML e importar o mesmo.

Em um CT-e temos os seguintes papeis: Emitente, Remetente, Destinatário, Expedidor, Recebedor e Tomador Serviço.

Abaixo temos um CT-e onde explicaremos a função de cada um desses papeis.

Qual dos papeis o Gerenciador de XML vai pegar para importar o XML?

Ajustado o gerenciador de CT-e no Gerencial (Menu >> Utilitários >> Gerenciador CT-e...) para que verifique o CNPJ do Tomador do Serviço ao definir em qual empresa será gerada a transação. Caso o CNPJ do tomador seja encontrado no cadastro de empresas, o CT-e será lançado para o Tomador do Serviço. Caso não encontre, será verificado se o (Emitente, Destinatário, Remetente ou Recebedor) constam no cadastro de empresas, e será utilizada a empresa encontrada.
Ajustado o gerenciador de XML para que também considere o CNPJ do tomador do CTe ao verificar se o XML encontrado deve ser importado.
Liberado a partir da versão 351.4 do Gerencial e 312.5 do Gerenciador de XML.


O Gerenciador de XML para CT-e foi alterado para olhar sempre o tomador do Serviço de Frete.

O sistema segue sempre essa lógica.

Se no XML a tag <toma> for igual a 4 o gerenciador valida se o CNPJ do tomador existe como uma empresa para importação do XML.

if TRnArquivoRecebido(arqRecebido).ProcCTe300.CTe.InfCte.Ide.Toma4.Toma = '4' then
sCnpj := TRnArquivoRecebido(arqRecebido).ProcCTe300.CTe.InfCte.Ide.Toma4.CNPJ


Se no XML a tag <toma> for igual a 0 o gerenciador valida se o CNPJ do Remetente existe como uma empresa para importação do XML.

else if TRnArquivoRecebido(arqRecebido).ProcCTe300.CTe.InfCte.Ide.Toma3.Toma = '0' then
sCnpj := TRnArquivoRecebido(arqRecebido).ProcCTe300.CTe.InfCte.Rem.CNPJ


Se no XML a tag <toma> for igual a 1 o gerenciador valida se o CNPJ do Expedidor existe como uma empresa para importação do XML.

else if TRnArquivoRecebido(arqRecebido).ProcCTe300.CTe.InfCte.Ide.Toma3.Toma = '1' then
sCnpj := TRnArquivoRecebido(arqRecebido).ProcCTe300.CTe.InfCte.Exped.CNPJ


Se no XML a tag <toma> for igual a 2 o gerenciador valida se o CNPJ do Recebedor existe como uma empresa para importação do XML.

else if TRnArquivoRecebido(arqRecebido).ProcCTe300.CTe.InfCte.Ide.Toma3.Toma = '2' then
sCnpj := TRnArquivoRecebido(arqRecebido).ProcCTe300.CTe.InfCte.Receb.CNPJ


Se no XML a tag <toma> for igual a 3 o gerenciador valida se o CNPJ do Destinatário existe como uma empresa para importação do XML.

else if TRnArquivoRecebido(arqRecebido).ProcCTe300.CTe.InfCte.Ide.Toma3.Toma = '3' then
sCnpj := TRnArquivoRecebido(arqRecebido).ProcCTe300.CTe.InfCte.Dest.CNPJ;


Nesse exemplo vemos a tag <Toma> com o número 3, nesse exemplo o tomador será o mesmo CNPJ do destinatário.