Ir para conteúdo
  • Cadastre-se

dev botao

Problema Com Cancelamento De Nfe Por Evento


  • 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

  • 11 meses depois ...

Também estou tentando enviar um evento de cancelamento e tá dando um erro dizendo que o campo cOrgao não informado, abaixo segue o código, desde já agradeço a ajuda.

 

// 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

  • Moderadores

Bom dia

com certeza !!!

vejamos um trecho de 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;
    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';

agora faz um teste de mesa rápido e me diga o que vai acontecer?

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

  • Moderadores

As variáveis estão preenchidas incorretamente? Voei.

Não.

chegou a fazer o teste de mesa?

Veja lá no seu código primeiro você faz um Evento.Clear;

então temos uma lista certo?

agora olhe novamente para o código acima e refaça o teste de mesa? e me diga quantos eventos serão enviados !

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.