Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

estou usando versão capicom 7.17.2 que baixei hoje, ao cancelar recebo mensagem; Serviço desativado, usar o evento de cancelamento. Tentei também direto da janela do acbr, aba testes, botão Cancelamento NFE, também retornou o mesmo erro.

  • 11 meses depois ...
Postado

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;
  • Moderadores
Postado

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_Transparent-02.png
 

 

  • Moderadores
Postado

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_Transparent-02.png
 

 

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