Ir para conteúdo
  • Cadastre-se

dev botao

Cancelamento Por Evento


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

Recommended Posts

estou usando versão 8.1a no Paraná, o comando NFE.CancelarNFe estava funcionando ok, agora esta retornando a mensagem:

OK: Servico desativado, usar o evento de cancelamento.

[CANCELAMENTO]

Versao=PR-v2_7_5

TpAmb=1

VerAplic=PR-v2_7_5

CStat=999

XMotivo=Servico desativado, usar o evento de cancelamento.

CUF=41

ChNFe=41130610812342000160550010000045671000045673

DhRecbto=30/12/1899

NProt=

Editado por aacircordeiro
Link para o comentário
Compartilhar em outros sites

Como usuário do SAC, vc pode baixar a nova versão na área de download do SAC http://www.projetoacbr.com.br/forum/index.php?/files/

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Baixei e instalei a versão 7.12.1. Fiz teste de cancelamento, mas o problema continua igual, veja abaixo o comando e a resposta:
 
NFE.CancelarNFe(41130610812342000160550010000045671000045673,cliente desistiu da compra)
OK: Servico desativado, usar o evento de cancelamento.
[CANCELAMENTO]
Versao=PR-v2_7_5
TpAmb=1
VerAplic=PR-v2_7_5
CStat=999
XMotivo=Servico desativado, usar o evento de cancelamento.
CUF=41
ChNFe=41130610812342000160550010000045671000045673
DhRecbto=30/12/1899
NProt=
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

Olá gente, boa tarde, estou implementando o cancelamento por evento e está aparecendo um erro informando que o campo CORGAO não informado. Abaixo segue um trecho do código, se puderem me dar uma luz agradeço.

 

// Carrega o XML da nota fiscal eletrônica

    ACBrNFe.NotasFiscais.Clear;
    ACBrNFe.NotasFiscais.LoadFromFile('c:\jrrnfe\xml.txt');
 
    ACBrNFe.EventoNFe.Evento.Clear;
    ACBrNFe.EventoNFe.idLote := NumeroLote;
 
 
// Preenche os parâmetros da NF'e
    ACBrNFe.EventoNFe.Evento.Add.InfEvento.tpAmb            := ACBrNFe.NotasFiscais.Items[0].NFe.Ide.tpAmb;
    ACBrNFe.EventoNFe.Evento.Add.InfEvento.CNPJ             := ACBrNFe.NotasFiscais.Items[0].NFe.Emit.CNPJCPF;
    ACBrNFe.EventoNFe.Evento.Add.InfEvento.cOrgao           := ACBrNFe.NotasFiscais.Items[0].NFe.Ide.cUF;
    ACBrNFe.EventoNFe.Evento.Add.InfEvento.nSeqEvento       := 1;
    ACBrNFe.EventoNFe.Evento.Add.InfEvento.chNFe            := Copy(ACBrNFe.NotasFiscais.Items[0].NFe.infNFe.ID, 4, 44);
    ACBrNFe.EventoNFe.Evento.Add.InfEvento.dhEvento         := NOW;
    ACBrNFe.EventoNFe.Evento.Add.InfEvento.tpEvento         := teCancelamento;
    ACBrNFe.EventoNFe.Evento.Add.InfEvento.detEvento.nProt  := Qry1PROTOCOLO_1.AsString;
    ACBrNFe.EventoNFe.Evento.Add.InfEvento.detEvento.xJust  := 'ERRO NA EMISSÃO DA NOTA FISCAL';
 
    // Enviar o evento de cancelamento
    if ACBrNFe.EnviarEventoNFe(NumeroLote) then
    begin
      with ACBrNFe.WebServices.EnvEvento do
      begin
        if EventoRetorno.retEvento.Items[0].RetInfEvento.cStat <> 13 then
        begin
          raise Exception.CreateFmt('Ocorreu o seguinte erro ao cancelar a nota fiscal eletrônica: ' + sLineBreak +
                                    'Código: %d' + sLineBreak +
                                    'Motivo: %s', [
                                    EventoRetorno.retEvento.Items[0].RetInfEvento.cStat,
                                    EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo]);
        end;
        // retornos
        DataHoraEvento  := EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento;
        numeroProtocolo := EventoRetorno.retEvento.Items[0].RetInfEvento.nProt;
        xmlCancelamento := EventoRetorno.retEvento.Items[0].RetInfEvento.XML;
        CodigoStatus    := EventoRetorno.retEvento.Items[0].RetInfEvento.cStat;
        MotivoStatus    := EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo;
      end;
 
      IBSQL1.Close;
      IBSQL1.SQL.Clear;
      IBSQL1.SQL.Add('update NFE set STATUS = :xStatus,');
      IBSQL1.SQL.Add('               CANC_DATAHORA = :xDataHora,');
      IBSQL1.SQL.Add('               CANC_PROTOCOLO = :xProtocolo,');
      IBSQL1.SQL.Add('               CANC_XML = :xXml.');
      IBSQL1.SQL.Add('               CANC_CODIGOSTATUS = :xCodigoStatus,');
      IBSQL1.SQL.ADd('               CANC_MOTIVOSTATUS = :xMotivoStatus');
      IBSQL1.SQL.Add('where CODIGO = :xCodigo');
 
      IBSQL1.ParamByName('xStatus').AsString        := 'CANCELADA';
      IBSQL1.ParamByName('xDataHora').AsDateTime    := DataHoraEvento;
      IBSQL1.ParamByName('xProtocolo').AsString     := numeroProtocolo;
      IBSQL1.ParamByName('xXml').AsString           := xmlCancelamento;
      IBSQL1.ParamByName('xCodigoStatus').AsInteger := CodigoStatus;
      IBSQL1.ParamByName('xMotivoStatus').AsString  := MotivoStatus;
      IBSQL1.ExecQuery;
      IBSQL1.Transaction.CommitRetaining;
 
    end
    else
    begin
      with ACBrNFe.WebServices.EnvEvento do
      begin
        raise Exception.Create (
        'Ocorreram erros ao tentar efetuar o cancelamento:' + sLineBReak +
        'Lote: '      + IntToStr(EventoRetorno.idLote) + sLineBreak +
        'Ambiente: '  + TpAmbToStr(EventoRetorno.tpAmb) + sLineBreak +
        'Orgao: '     + IntToStr(EventoRetorno.cOrgao) + sLineBreak +
        'Status: '    + IntToStr(EventoRetorno.cStat) + sLineBreak +
        'Motivo: '    + EventoRetorno.xMotivo);
      end;
    end;
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde José,

 

Primeiramente, por favor não poste como texto no post fragmentos de código, principalmente se eles foram grandes como o seu.

 

Segundo, você sabe o que o ADD faz?

 

O Add é utilizado para adicionar um elemento em uma lista.

 

Vamos a um pequeno fragmento do seu código:

 

ACBrNFe.EventoNFe.Evento.Add.InfEvento.tpAmb            := ACBrNFe.NotasFiscais.Items[0].NFe.Ide.tpAmb;
ACBrNFe.EventoNFe.Evento.Add.InfEvento.CNPJ             := ACBrNFe.NotasFiscais.Items[0].NFe.Emit.CNPJCPF;
ACBrNFe.EventoNFe.Evento.Add.InfEvento.cOrgao           := ACBrNFe.NotasFiscais.Items[0].NFe.Ide.cUF;
 
Só nesse fragmento você adicionou 3 eventos e não um só.
Na primeira linha temos um evento só com o tipo de ambiente, na segunda linha você adiciona um segundo evento só com o CNPJ na terceira linha você adiciona mais um evento só com o código do órgão.
 
Entendeu onde você esta errando?
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Entendi sim meu amigo, muito obrigado e desculpe pelo tamanho do código hehehe, não se repetirá, Grato pela dica.

Além de estar postando código extenso está postando em dois lugares

já havia nele lhe passado para você mesmo descobrir e dei todas as dicas!

 

então um puxão de orelha, leia as regras do fórum e não poste em mais de um lugar! está descrito no mesmo

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

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