Ir para conteúdo
  • Cadastre-se

dev botao

Erro no envio de cancelamento do CT-e por evento


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 2552 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado
49 minutos atrás, José M. S. Junior disse:

Bom dia, parece estar faltando o método "infEvento.cOrgao"

Bom dia.

Então, no exemplo do ACBRCTE-e não consta esse método, embora vi que ele existe.

Qual seria o valor para o preenchimento desse método?

Grato.

Gilberto F. Rezende

 

 

Postado

Se o XML de do CTe foi gerado, não seria mais fácil carregar ele no componente e utilizar a função de cancelamento :

 

    CTe.Conhecimentos.Clear;
    CTe.Conhecimentos.LoadFromFile(OpenDialog1.FileName);
    aNumeroCanc := CTE.Conhecimentos.Items[0].CTe.Ide.nCT;
    if not(InputQuery('Cancelamento do CTe:', 'Justificativa', vAux)) then exit;
    if not CTE.Cancelamento(vAux, 1) then
    begin
      ShowMessage('Cancelamento não, verifique todas as informações indicadas no cancelamento');
      exit;
    end;
 

Captura de tela 2024-07-23 103314.png

  • Consultores
Postado

Gilberto,

Esses XMLs se refere ao envio e retorno do CT-e e não do envio e retorno do evento de cancelamento.

Desculpe, mas não consigo entender essa mania de alguns desenvolvedores tem em querer alterar o nome do XML, sendo que existe uma nomenclatura definida no manual.

 

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

  • Membros Pro
Postado

Boa tarde...

Então. Quando envio o cancelamento, a execução do programa para nessa linha:

 ACBrCTe.EnviarEvento(iLote);   

e na sequência não são executadas as linhas a seguir:

MemoResp.Lines.Text :=  UTF8Encode(ACBrCTe.WebServices.EnvEvento.RetWS);
memoRespWS.Lines.Text :=  UTF8Encode(ACBrCTe.WebServices.EnvEvento.RetWS);
LoadXML(MemoResp, WBResposta);

Grato.

 

  • Moderadores
Postado
2 horas atrás, podiuminformatica disse:

 

erro4.jpg

Veja que no topo da imagem você tem este trecho de código:
 

with ACBrCTe.EventoCTe.Evento.Add do
begin
end;

Ou seja, você está gerando um evento novo mas sem preencher as propriedades.

Abaixo você cria um segundo evento e aí sim faz o preenchimento.

Provavelmente é esse trecho de cima que está gerando a exceção, remova.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Membros Pro
Postado
8 minutos atrás, BigWings disse:

Veja que no topo da imagem você tem este trecho de código:
 


with ACBrCTe.EventoCTe.Evento.Add do
begin
end;

Ou seja, você está gerando um evento novo mas sem preencher as propriedades.

Abaixo você cria um segundo evento e aí sim faz o preenchimento.

Provavelmente é esse trecho de cima que está gerando a exceção, remova.

Boa tarde.

Segue anexo código completo da rotina.

Grato.

codigo_completo.txt

Agora, podiuminformatica disse:

Boa tarde.

Segue anexo código completo da rotina.

Grato.

codigo_completo.txt

 

Este Código

with ACBrCTe.EventoCTe.Evento.Add do
begin
end;

Eu já havia removido antes.

  • Moderadores
Postado
19 minutos atrás, podiuminformatica disse:

Boa tarde.

Segue anexo código completo da rotina.

Grato.

codigo_completo.txt

Nesse caso deve estar faltando a configuração da UF do webservice no componente.

Exemplo do demo:

ACBrCTe1.Configuracoes.WebServices.UF         := cbUF.Text;
ACBrCTe1.Configuracoes.WebServices.Ambiente   := StrToTpAmb(Ok,IntToStr(rgTipoAmb.ItemIndex+1));

E faça o que o Italo pediu, configure o componente para salvar os arquivos de envio e retorno:
 

ACBrCTe1.Configuracoes.Arquivos.Salvar := True;
ACBrCTe1.Configuracoes.Arquivos.PathEvento := edtPathEvento.Text;

E anexe os arquivos *-ped-eve.xml e *-eve.xml gerados.

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Membros Pro
Postado

Senhores...

Bom dia...

Com relação ao erro que estava dando, dou meu esclarecimentos.

Não sei o que aconteceu mas hoje consegui enviar o cancelamento normalmente com a rotina como está.

Em todo o caso, grato pela atenção.

Gilberto F. Rezende.

  • Consultores
  • Solution
Postado

Bom dia Gilberto,

Você pode simplificar a sua rotina de cancelamento, veja:

ACBrCTe1.Conhecimentos.LoadFromFile(xNomeXMLCTe, False); // xNomeXMLCTe contem o nome completo do XML do CTe que se deseja cancelar

ACBrCTe1.Cancelamento(xJustificativa, nLote); // xJustificativa contem o motivo do cancelamento (minimo de 15 caracteres) e nLote contem o numero do lote do evento
 

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

  • Membros Pro
Postado
2 horas atrás, Italo Jurisato Junior disse:

Bom dia Gilberto,

Você pode simplificar a sua rotina de cancelamento, veja:

ACBrCTe1.Conhecimentos.LoadFromFile(xNomeXMLCTe, False); // xNomeXMLCTe contem o nome completo do XML do CTe que se deseja cancelar

ACBrCTe1.Cancelamento(xJustificativa, nLote); // xJustificativa contem o motivo do cancelamento (minimo de 15 caracteres) e nLote contem o numero do lote do evento
 

Grato pela atenção.

Tenha um ótimo dia.

  • Membros Pro
Postado
7 minutos atrás, podiuminformatica disse:

Grato pela atenção.

Tenha um ótimo dia.

Fiz a implementação como você sugeriu  e ficou muito melhor mesmo.

O código ficou mais limpo e mais simplificado.

Grato.

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