Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Ao enviar um CTe de substituição é reportado o seguinte erro:

 

TAG: ID:#352/refCte(Chave do CTe) - Nenhum valor informado.
'' violates pattern constraint of '[0-9]{44}'.

 

Este mesmo erro é reportado aqui no forum no link:

 

Trecho XML:

<infCteSub>

  <chCte>23130900435179000100570010000173451153356992</chCte>

  <tomaICMS>

     <refCte>23130900435179000100570010000173451153356992</refCte>

  </tomaICMS>

</infCteSub>

 

Notem quem o chCte e tomaICMS estão no mesmo nível, e refCte dento de tormaICMS.

No código abaixo depois de extrair o tomaICMS, lê-se a tag refNFe e em seguida extrai a tag refNF, porém, como mostra o exemplo acima não há refNF. (Maiores informações no manual)

Quando lê a refCte nada é encontrado pois está no contexto da refNF.

 

Trecho do arquivo pcteCTeR_V104.inc iniciado na linha 909

    if Leitor.rExtrai(2, 'infCteSub') <> '' then
    begin
     CTe.infCTeSub.chCte := Leitor.rCampo(tcStr, 'chCte');
     if Leitor.rExtrai(3, 'tomaICMS') <> '' then
      begin
       CTe.infCTeSub.tomaICMS.refNFe := Leitor.rCampo(tcStr, 'refNFe');
       if Leitor.rExtrai(4, 'refNF') <> '' then
        begin
         CTe.infCTeSub.tomaICMS.refNF.CNPJ     := Leitor.rCampo(tcStr, 'CNPJ');
         CTe.infCTeSub.tomaICMS.refNF.modelo   := Leitor.rCampo(tcStr, 'mod');
         CTe.infCTeSub.tomaICMS.refNF.serie    := Leitor.rCampo(tcInt, 'serie');
         CTe.infCTeSub.tomaICMS.refNF.subserie := Leitor.rCampo(tcInt, 'subserie');
         CTe.infCTeSub.tomaICMS.refNF.nro      := Leitor.rCampo(tcInt, 'nro');
         CTe.infCTeSub.tomaICMS.refNF.valor    := Leitor.rCampo(tcDe2, 'valor');
         CTe.infCTeSub.tomaICMS.refNF.dEmi     := Leitor.rCampo(tcDat, 'dEmi');
        end;
       CTe.infCTeSub.tomaICMS.refCte := Leitor.rCampo(tcStr, 'refCte');
      end;
     if Leitor.rExtrai(3, 'tomaNaoICMS') <> '' then
      begin
       CTe.infCTeSub.tomaNaoICMS.refCteAnu := Leitor.rCampo(tcStr, 'refCteAnu');
      end;

 

    end;
 

Solução:

    if Leitor.rExtrai(2, 'infCteSub') <> '' then
    begin
     CTe.infCTeSub.chCte := Leitor.rCampo(tcStr, 'chCte');
     if Leitor.rExtrai(3, 'tomaICMS') <> '' then
      begin
       CTe.infCTeSub.tomaICMS.refCte := Leitor.rCampo(tcStr, 'refCte');
       CTe.infCTeSub.tomaICMS.refNFe := Leitor.rCampo(tcStr, 'refNFe');
       if Leitor.rExtrai(4, 'refNF') <> '' then
        begin
         CTe.infCTeSub.tomaICMS.refNF.CNPJ     := Leitor.rCampo(tcStr, 'CNPJ');
         CTe.infCTeSub.tomaICMS.refNF.modelo   := Leitor.rCampo(tcStr, 'mod');
         CTe.infCTeSub.tomaICMS.refNF.serie    := Leitor.rCampo(tcInt, 'serie');
         CTe.infCTeSub.tomaICMS.refNF.subserie := Leitor.rCampo(tcInt, 'subserie');
         CTe.infCTeSub.tomaICMS.refNF.nro      := Leitor.rCampo(tcInt, 'nro');
         CTe.infCTeSub.tomaICMS.refNF.valor    := Leitor.rCampo(tcDe2, 'valor');
         CTe.infCTeSub.tomaICMS.refNF.dEmi     := Leitor.rCampo(tcDat, 'dEmi');
        end;
      end;
     if Leitor.rExtrai(3, 'tomaNaoICMS') <> '' then
      begin
       CTe.infCTeSub.tomaNaoICMS.refCteAnu := Leitor.rCampo(tcStr, 'refCteAnu');
      end;
    end;

 

Fiz vários testes e agora funciona perfeitamente.

Gostaria de solicitar a inclusão no fonte oficial do projeto.

  • Curtir 1
  • 3 meses depois ...
Postado

Ítalo, boa tarde.

1º Quais os dados devo informar nas tags de Cte de substituição. Os mesmo que informo nas tags quanto o CTE e normal ?

2º Quando existe varias NFS, como informa para CTe de substituição ?

 

// NORMAL

Rem.InfNF.Add do

                      begin

                          // ***  Nota Fiscal ***

                          nRoma := NotaFiscal.FieldByName( 'NFC_132_NR_ROMANEIO'       ).AsString;

                          nPed  := NotaFiscal.FieldByName( 'NFC_133_NR_PEDIDO'         ).AsString;

                          .............

end

 

// SUBSTITUIÇÃO //

   if Ide.tpCTe = tcSubstituto then

                      begin

                         with InfCTeSub do

                         begin

                         duvida quais os dados deve informa abaixo

                            // Dados da Nota Fiscal Comum (papel) emitida pelo Tomador do Serviço

                            infCTeSub.tomaICMS.refNF.CNPJ     := NFCNPJ;

                            infCTeSub.tomaICMS.refNF.modelo   := NFMod;

                            infCTeSub.tomaICMS.refNF.serie    := NFSerie;

                            infCTeSub.tomaICMS.refNF.subserie := NFSubSerie;

                            infCTeSub.tomaICMS.refNF.nro      := NFNumero;

                             infCTeSub.tomaICMS.refNF.valor   := NFValor;  g

                            infCTeSub.tomaICMS.refNF.dEmi     := NFEmissao;

                         end;

                      end;

  • Consultores
Postado

Boa tarde ALA,

 

O melhor ponto de partida é o Manual do CT-e.

 

Existem situações quando o tomador é contribuinte e quando não é.

 

É preciso estudar com muita atenção a estrutura do XML e montar a rotina prevendo as diversas situações.

 

Outra coisa no Manual do CT-e você tem a informação se um determinado campo é obrigatório ou não.

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

Italo, obrigado. Mas não estou conseguindo incluir vairas notas quando o ct-e e substitutio

 

                         with InfCTeSub do
                         begin
                            // Dados da Nota Fiscal Comum (papel) emitida pelo Tomador do Serviço
                            infCTeSub.tomaICMS.refNF.CNPJ     := NFCNPJ;
                            infCTeSub.tomaICMS.refNF.modelo   := NFMod;
                            infCTeSub.tomaICMS.refNF.serie    := NFSerie;
                            infCTeSub.tomaICMS.refNF.subserie := NFSubSerie;
                            infCTeSub.tomaICMS.refNF.nro      := NFNumero;
                             infCTeSub.tomaICMS.refNF.valor   := NFValor;  g
                            infCTeSub.tomaICMS.refNF.dEmi     := NFEmissao;
                         end;
                      end;

  • Consultores
Postado

Boa tarde ALA,

 

Favor consultar o manual.

 

Note que tanto a versão 1.04 quanto a 2.00 só é permitido informar apenas uma nota quando se trata de CT-e substituido.

 

Estou me referindo ao documento emitido pelo tomador quando este é contribuinte do ICMS.

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

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