Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Caros,

ao tentar emitir um CT-e, conforme anexo, a Sefaz retorna: Rejeição: IE do Remetente não informada - 716

No xml gerado pela minha aplicação consta a IE do Remetente.

Obs.: No xml, o tomador do serviço é "outros" e o grupo gerado é o <toma4>.

Leiaute: 3.0

 

CTe - 87803.XML

Postado (editado)
18 horas atrás, Marília Paiva disse:

Caros,

ao tentar emitir um CT-e, conforme anexo, a Sefaz retorna: Rejeição: IE do Remetente não informada - 716

No xml gerado pela minha aplicação consta a IE do Remetente.

Obs.: No xml, o tomador do serviço é "outros" e o grupo gerado é o <toma4>.

Leiaute: 3.0

 

CTe - 87803.XML

Obs.: No XML gerado pelo ACBr, a partir do meu XML, a tag é removida, devido o código presente na procedure : GerarRem.

 

 

Editado por Marília Paiva
  • Consultores
Postado

Bom dia Marília,

Não entendi, você tem uma uma rotina própria que gera o XML? 

E ao ler esse XML pelo ACBrCTe, ele gera novamente o XML e remove a tag, mas qual tag?

Anexo o XML gerado pela sua aplicação e outro gerado pelo ACBrCTe.

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

Postado

Boa tarde Ítalo,

eu gero um XML e carrego ele no objeto TACBrCTe, conforme código abaixo:

image.png.bb28109f2ef2ef086b40c2b2f88757b0.png

 

O ACBr "popula" o objeto e num dado momento, ao passar pela verificação abaixo, remove do objeto as informações referentes à IE do Remetente e manda a requisição  para a Sefaz, sem   essa tag.

Perceba que ele faz duas verificações. As duas serão verdadeiras, mas a primeira não deveria ser (porque o frete é gerado como toma4, o pagador é outros).

Por contas das duas verificações serem verdadeiras, a função GeraIE não será chamada.

 if (CTe.ide.Toma03.Toma = tmRemetente) then

begin

  if (CTe.ide.indIEToma <> inNaoContribuinte) then 

image.thumb.png.3782f83347ff80978d21c4c589b46896.png 

 

Postado

Na minha aplicação,  tenho apenas o toma4, conforme mostra a imagem do XML abaixo.

Ou seja, o valor tmOutros é atribuído apenas a  toma4.

Estou enviado, o XML novamente.

Ítalo, vi que no método: LerXml (da unit: pcteCTeR ) é feita  a seguinte atribuição ( CTe.Ide.Toma03.Toma   := CTe.Ide.Toma4.toma ).

Será que por algum motivo, essa atribuição não está dando certo?

image.png.23b4271d93717093490f2e6e84ff3b78.png

image.thumb.png.6ceae4634c3430659a5f8abb86ac720f.png

CTe - 87803.XML

  • Consultores
Postado

Bom dia Marília,

Esse XML que você anexou trata-se do XML gerado pela primeira vez?

Pois notei que o IE consta no grupo <rem>.

Outra coisa, altere a linha que você carrega o XML para:

CTe.Conhecimentos.LoadFromStream(st, False);

O parâmetro False faz com que o XML não seja gerado novamente.

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

  • 1 mês depois ...
Postado

Estou com o mesmo problema, tentando autorizar um CTe onde o tomador é um terceiro (tmOutros).

Estou gerando o xml, assinando e na hora de transmitir o arquivo, utilizo o "ACBrCTe.Conhecimentos.LoadFromFile()" sem colocar como False no segundo parâmetro.

Quando gero o XML a TAG <IE> do remetente está no arquivo, quando faço o LoadFromFile a TAG some. Isto acontece porque na hora de gerar o arquivo novamente existe uma verificação lá na unit "pcteCTeW", no método "GerarRem" verificando o seguinte:

      if (Trim(CTe.Rem.IE) <> '') then
      begin
        if (CTe.infCTe.versao >= 3) then
        begin
          if (CTe.ide.Toma03.Toma = tmRemetente) then
          begin
            if (CTe.ide.indIEToma <> inNaoContribuinte) then
              GeraIE;
          end
          else
            GeraIE;
        end
        else
          GeraIE;
      end;

O problema é que "CTe.ide.Toma03.Toma" está igual a "tmRemetente" e no meu ponto de vista deveria estar "tmOutros".

No momento que gera o XML tem como atribuir "tmOutros" para "Toma03.Toma", mas no LoadFromFile não tem como.

Minha sugestão é alterar a leitura do arquivo XML.

Unit -> pcteCTeR

Método -> function TCTeR.LerXml: Boolean;

De

  (* Grupo da TAG <ide><toma03> ***********************************************)
  if Leitor.rExtrai(1, 'ide') <> '' then
  begin
    if (Leitor.rExtrai(2, 'toma03') <> '') or (Leitor.rExtrai(2, 'toma3') <> '') then
    begin
      (*B29*)CTe.Ide.Toma03.Toma := StrToTpTomador(ok, Leitor.rCampo(tcStr, 'toma'));
    end;
  end;

Para

  (* Grupo da TAG <ide><toma03> ***********************************************)
  if Leitor.rExtrai(1, 'ide') <> '' then
  begin
    if (Leitor.rExtrai(2, 'toma03') <> '') or (Leitor.rExtrai(2, 'toma3') <> '') then
    begin
      (*B29*)CTe.Ide.Toma03.Toma := StrToTpTomador(ok, Leitor.rCampo(tcStr, 'toma'));
    end else begin
      (*B29*)CTe.Ide.Toma03.Toma := tmOutros;
    end;
  end;

Ou seja, se não encontrou a TAG "Toma3" então define "Toma3.Toma" como "tmOutros". Isto poderia evitar outros problemas do gênero, pois se existe a TAG "Toma4", ou ainda, se não encontrou a TAG "Toma3", então "Toma3.Toma" também poderia estar como "tmOutros" e não como "tmRemetente" que é o valor default.

Nesse caso poderia fazer o LoadFromFile gerando novamente o arquivo XML sem nenhum problema.

Claro que aguardo uma opinião dos moderadores, caso tenham um ponto de vista diferente.

 

 

Postado
19 horas atrás, Italo Jurisato Junior disse:

Bom dia Rosemir,

A minha sugestão é quando o tomador for outros devemos também:

CTe.ide.Toma03.Toma := tmOutros;

Bom dia @Italo Jurisato Junior

Sim, sem problemas fazer isso quando estiver gerando o XML, mas quando faz o LoadFromFile ou LoadFromStream, "CTe.ide.Toma03.Toma" acaba ficando sempre como "tmRemetente", pois no xml não tem a TAG "Toma3" e não há tratamento quando não encontra. A minha sugestão seria nesse caso, apenas atribuir "tmOutros" quando não encontrada a TAG "Toma3".

Eu entendo que referente ao problema desse post, apenas passando True no segundo parâmetro resolve, mas a propriedade fica como "tmRemetente" e no XML é "tmOutros".

A correção seria referente ao método " LerXml";

 

 

  • Consultores
Postado

Bom dia Rosemir,

Acredito que os seus fontes estão desatualizados, veja:

    if Leitor.rExtrai(2, 'toma4') <> '' then
    begin
      (*B29*)CTe.Ide.Toma4.toma    := StrToTpTomador(ok, Leitor.rCampo(tcStr, 'toma'));
             CTe.Ide.Toma03.Toma   := CTe.Ide.Toma4.toma;

Como você pode ver se existe o grupo <toma4> o campo Toma de Toma03 recebe o mesmo valor do camppo Toma de Toma4.

O que eu não entendo é esse procedimento de muitos em gerar o XML, salvar e depois carrega-lo para poder enviar.

Por que não gera, assina, valida só no momento do envio?

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

Postado
44 minutos atrás, Italo Jurisato Junior disse:

Bom dia Rosemir,

Acredito que os seus fontes estão desatualizados, veja:

    if Leitor.rExtrai(2, 'toma4') <> '' then
    begin
      (*B29*)CTe.Ide.Toma4.toma    := StrToTpTomador(ok, Leitor.rCampo(tcStr, 'toma'));
             CTe.Ide.Toma03.Toma   := CTe.Ide.Toma4.toma;

Como você pode ver se existe o grupo <toma4> o campo Toma de Toma03 recebe o mesmo valor do camppo Toma de Toma4.

O que eu não entendo é esse procedimento de muitos em gerar o XML, salvar e depois carrega-lo para poder enviar.

Por que não gera, assina, valida só no momento do envio?

Sim, na verdade eles estavam desatualizados... O que aconteceu foi que eu atualizei e não testei antes de fazer a minha alteração, achei que a minha alteração é que havia resolvido o problema. Está correto, realmente não precisa alterar nada.

Desculpa pelo transtorno e agradeço pela explicação @Italo Jurisato Junior

 

  • Este tópico foi criado há 2511 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.