Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

Bom dia pessoal, tudo bem?

Estou tendo problemas ao tratar o retorno da receita para a aprovação do CTe-OS (modelo 67). Questão: em qual propriedade do componente podemos encontrar os dados do retorno, após o envio?

O xml de retorno da receita é o seguinte:

  <?xml version="1.0" encoding="UTF-8" ?> 
- <retCTeOS xmlns="http://www.portalfiscal.inf.br/cte" versao="3.00">
  <tpAmb>2</tpAmb> 
  <cUF>43</cUF> 
  <verAplic>RS20170524123027</verAplic> 
  <cStat>104</cStat> 
  <xMotivo>Lote processado</xMotivo> 
- <protCTe versao="3.00" xmlns="http://www.portalfiscal.inf.br/cte">
- <infProt Id="CTe143170000069206">
  <tpAmb>2</tpAmb> 
  <verAplic>RS20170829094659</verAplic> 
  <chCTe>43100002080759000157070020000000221040004850</chCTe> 
  <dhRecbto>2017-09-22T09:03:22-03:00</dhRecbto> 
  <nProt>143170000669200</nProt> 
  <digVal>SCqHYRKjbBPT3F99/Wr3ZP0AFRk=</digVal> 
  <cStat>100</cStat> 
  <xMotivo>Autorizado o uso do CT-e</xMotivo> 
  </infProt>
  </protCTe>
  </retCTeOS>

 

Pelo que reparei, após a aprovação, as propriedades do componente ficam todas em branco ou zeradas, como ACBrCTe.WebServices.Retorno.* e ACBrCTe.WebServices.Retorno.CTeRetorno.*

 

Desde já agradeço a ajuda dos colegas,

Gabriel.

Editado por Gabriel Bonzanini
Alteração de informações sigilozas do cliente
Postado

Para o Envio fiz o seguinte processo.

 

           ACBrCTe1.Conhecimentos.Clear;
           if FileExists(Cmd.Params(0)) then
              ACBrCTe1.Conhecimentos.LoadFromFile(Cmd.Params(0))
           else
              raise Exception.Create('Arquivo '+Cmd.Params(0)+' não encontrado.');

           ACBrCTe1.Conhecimentos.GerarCTe;
           if Cmd.Params(2) <> '0' then
              ACBrCTe1.Conhecimentos.Assinar;

           ACBrCTe1.Conhecimentos.Validar;

           if ACBrCTe1.Conhecimentos.Items[0].CTe.Ide.modelo = 67 then
           begin
               FrmACBrMonitor.rdModeloDFCTe.ItemIndex := 1;
               ACBrCTe1.Configuracoes.Geral.ModeloDF := pcteConversaoCTe.moCTeOS;
           end
           else
           begin
               FrmACBrMonitor.rdModeloDFCTe.ItemIndex := 0;
               ACBrCTe1.Configuracoes.Geral.ModeloDF := pcteConversaoCTe.moCTe;
           end;


           if not(ACBrCTe1.WebServices.StatusServico.Executar) then
            raise Exception.Create(ACBrCTe1.WebServices.StatusServico.Msg);

           if Trim(OnlyNumber(Cmd.Params(1))) = '' then
              ACBrCTe1.WebServices.Enviar.Lote := '1'
           else
              ACBrCTe1.WebServices.Enviar.Lote := OnlyNumber(Cmd.Params(1)); //StrToIntDef( OnlyNumber(Cmd.Params(1)),1);

           ACBrCTe1.WebServices.Enviar.Executar;

Tem que mudar alguma coisa para obter os resultados ?

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

Boa noite Gabriel,

Em vez de Retorno e CTeRetorno, tentou CTeRetornoOS?

Bom dia Italo!

Muito obrigado pelo retorno, sei como é a correria de vocês e como o tempo é escasso. Na verdade, reparei que existe, internamente, o objeto FCTeRetornoOS, porém o mesmo não foi publicado para acesso externo.

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

Boa noite Gabriel,

Em vez de Retorno e CTeRetorno, tentou CTeRetornoOS?

Também não consegui acessar essa propriedade.
Nos arquivos XML encontros todos os dados do PROTOCOLO de liberação mas o componente não é carregado

  • Consultores
Postado

Bom dia a todos,

Lembrem-se que no caso do CT-e OS o envio é síncrono, ou seja, após o envio já temos o resultado do processamento do documento.

Tentem obter os dados que desejam a respeito do resultado do processamento da seguinte forma:

Protocolo := ACBrCTe.Conhecimentos.Items[ x ].CTe.procCTe.nProt;
Status := ACBrCTe.Conhecimentos.Items[ x ].CTe.procCTe.cStat; 
Motivo := ACBrCTe.Conhecimentos.Items[ x ].CTe.procCTe.xMotivo; 
 

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

Eu estou pegando o retorno dessa maneira e o mesmo não retorna nada;

           Resposta :=  Resposta+
                            ACBrCTe1.WebServices.Retorno.Msg+sLineBreak+
                            '[RETORNO]'+sLineBreak+
                            '<ret Versao>'+ACBrCTe1.WebServices.Retorno.verAplic+'</ret Versao>'+sLineBreak+
                            '<ret TpAmb>'+TpAmbToStr(ACBrCTe1.WebServices.Retorno.TpAmb)+'</ret TpAmb>'+sLineBreak+
                            '<ret VerAplic>'+ACBrCTe1.WebServices.Retorno.VerAplic+'</ret VerAplic>'+sLineBreak+
                            '<ret NRec>'+ACBrCTe1.WebServices.Retorno.CteRetorno.nRec+'</ret NRec>'+sLineBreak+
                            '<ret CStat>'+IntToStr(ACBrCTe1.WebServices.Retorno.CStat)+'</ret CStat>'+sLineBreak+
                            '<ret XMotivo>'+ACBrCTe1.WebServices.Retorno.XMotivo+'</ret XMotivo>'+sLineBreak+
                            '<ret CUF>'+IntToStr(ACBrCTe1.WebServices.Retorno.CUF)+'</ret CUF>'+sLineBreak;

           for I:= 0 to ACBrCTe1.WebServices.Retorno.CteRetorno.ProtCTe.Count-1 do
            begin
              for J:= 0 to ACBrCTe1.Conhecimentos.Count-1 do
              begin
                if 'CTe'+ACBrCTe1.WebServices.Retorno.CteRetorno.ProtCTe.Items.chCTe = ACBrCTe1.Conhecimentos.Items[j].CTe.infCTe.Id  then
                begin
                  Cmd.Resposta := Cmd.Resposta+
                             '[CTE'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+']'+sLineBreak+
                             '<cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' Versao>'+ACBrCTe1.WebServices.Retorno.CteRetorno.ProtCTe.Items.verAplic+'</cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' Versao>'+sLineBreak+
                             '<cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' TpAmb>'+TpAmbToStr(ACBrCTe1.WebServices.Retorno.CteRetorno.ProtCTe.Items.tpAmb)+'</cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' TpAmb>'+sLineBreak+
                             '<cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' VerAplic>'+ACBrCTe1.WebServices.Retorno.CteRetorno.ProtCTe.Items.verAplic+'</cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' VerAplic>'+sLineBreak+
                             '<cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' CStat>'+IntToStr(ACBrCTe1.WebServices.Retorno.CteRetorno.ProtCTe.Items.cStat)+'</cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' CStat>'+sLineBreak+
                             '<cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' XMotivo>'+ACBrCTe1.WebServices.Retorno.CteRetorno.ProtCTe.Items.xMotivo+'</cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' XMotivo>'+sLineBreak+
                             '<cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' CUF>'+IntToStr(ACBrCTe1.WebServices.Retorno.CteRetorno.cUF)+'</cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' CUF>'+sLineBreak+
                             '<cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' ChCTe>'+ACBrCTe1.WebServices.Retorno.CteRetorno.ProtCTe.Items.chCTe+'</cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' ChCTe>'+sLineBreak+
                             '<cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' DhRecbto>'+DateTimeToStr(ACBrCTe1.WebServices.Retorno.CteRetorno.ProtCTe.Items.dhRecbto)+'</cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' DhRecbto>'+sLineBreak+
                             '<cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' NProt>'+ACBrCTe1.WebServices.Retorno.CteRetorno.ProtCTe.Items.nProt+'</cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' NProt>'+sLineBreak+
                             '<cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' DigVal>'+ACBrCTe1.WebServices.Retorno.CteRetorno.ProtCTe.Items.digVal+'</cte'+Trim(IntToStr(ACBrCTe1.Conhecimentos.Items[J].CTe.Ide.nCT))+' DigVal>'+sLineBreak;
                  break;
                end;
              end;

             
         end

 

E o Retorno apresentado é
[RETORNO]
<ret Versao>PR-v3_0_35</ret Versao>
<ret TpAmb>2</ret TpAmb>
<ret VerAplic>PR-v3_0_35</ret VerAplic>
<ret NRec></ret NRec>
<ret CStat>215</ret CStat>
<ret XMotivo>Falha no schema XML. org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 94; cvc-pattern-valid: Value '' is not facet-valid with respect to pattern '[0-9]{15}' for type 'TRec'.</ret XMotivo>
<ret CUF>41</ret CUF>

Postado
1 hora atrás, Italo Jurisato Junior disse:

Bom dia a todos,

Lembrem-se que no caso do CT-e OS o envio é síncrono, ou seja, após o envio já temos o resultado do processamento do documento.

Tentem obter os dados que desejam a respeito do resultado do processamento da seguinte forma:

Protocolo := ACBrCTe.Conhecimentos.Items[ x ].CTe.procCTe.nProt;
Status := ACBrCTe.Conhecimentos.Items[ x ].CTe.procCTe.cStat; 
Motivo := ACBrCTe.Conhecimentos.Items[ x ].CTe.procCTe.xMotivo; 
 

Utilizando o COMANDO acima o resultado foi
' Stat: '+IntToStr( ACBrCTe1.Conhecimentos.Items[0].CTe.procCTe.cStat )   RETORNOU '0'

' Motivo: '+ ACBrCTe1.Conhecimentos.Items[0].CTe.procCTe.xMotivo RETORNO VAZIO

 

Postado

Boa tarde pessoal.

A quem possa interessar, para sanar o problema de forma temporária, adicionei a propriedade 'CTeRetornoOS' para acesso externo:

 

image.thumb.png.4dab879763d880bf4234366abc5907b0.png

 

Após o envio do lote, para acessar os dados do retorno, basta acessar as propriedades ACBrCTe.WebServices.Enviar.CTeRetornoOS.* . Não sei se era a intenção inicial dos programadores do projeto, mas por enquanto pode "quebrar um galho" pra quem tenha urgência.

 

Abraço.

 

ACBrCTeWebServices.pas

  • Consultores
Postado

Boa tarde Cleonir,

Sim, porque o envio do CT-e é assíncrono, logo precisa ser realizado uma consulta para pegar o resultado do processamento.

Já no CT-e OS o envio é síncrono, ou seja, o retorno do envio já é o resultado do processamento.

Tente algo do tipo:

ACBrCTe.WebServices.Enviar.RetWS;
 

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

Não esta salvando os Soap.

Não certo como funciona. A rejeição que forcei acontece na validação nos Schemas, não sei se mesmo assim  teria que salvar os Soap.

Coloquei um valor menor que permitido no campo NroRegEstadual.

Mas enfim não esta salvando os Soap.

 

  • Consultores
Postado

Boa tarde Cleonir,

Então o problema não é pegar o retorno do envio e sim erro de validação.

O conteúdo do campo NroRegEstadual tem que ter obrigatoriamente 25 dígitos, preencher com zeros a esquerda se necessário.

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

Bom dia, ontem emite meu primeiro cliente com o CTe-Os, consegui os retornos assim:

      status    := dm.cte.Conhecimentos.Items[0].CTe.procCTe.cStat;
      protocolo := dm.cte.Conhecimentos.Items[0].CTe.procCTe.nProt;
      chave     := Copy(dm.cte.Conhecimentos.Items[0].CTe.infCTe.Id,4,44);


Funcionou legal, o unico detalhe foi da chave, que tive que "recortar" o CTe do começo da chave.

  • 4 semanas depois ...
Postado
Em 25/09/2017 at 13:50, Gabriel Bonzanini disse:

Boa tarde pessoal.

A quem possa interessar, para sanar o problema de forma temporária, adicionei a propriedade 'CTeRetornoOS' para acesso externo:

 

image.thumb.png.4dab879763d880bf4234366abc5907b0.png

 

Após o envio do lote, para acessar os dados do retorno, basta acessar as propriedades ACBrCTe.WebServices.Enviar.CTeRetornoOS.* . Não sei se era a intenção inicial dos programadores do projeto, mas por enquanto pode "quebrar um galho" pra quem tenha urgência.

 

Abraço.

 

ACBrCTeWebServices.pas

Bom dia pessoal!

 

@Juliomar Marchetti, vocês acham que seria possível publicar esta propriedade, para que o objeto FCTeRetornoOS possa ser acessado externamente? Acredito que seja útil, pois todos os dados da aprovação estão contidos nele.

 

Abraço.

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