Ir para conteúdo
  • Cadastre-se

dev botao

Alterações no Envio de Evento no ACBrNFe


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

Recommended Posts

Boa tarde pessoal,

 

Estou utilizando o cancelamento da seguinte forma:

 

 

ACBr.NotasFiscais.Clear;
ACBr.NotasFiscais.LoadFromStream(XML); //Carrega o XML
ACBr.Cancelamento(justificativa);
 
e pego o retorno em:
 
ACBr.WebServices.Cancelamento.cStat
 
Fui efetuar um teste de cancelamento hoje em modo homologação e recebo a mensagem "Desativado de acordo com Ajuste SINIEF 16/12. Usar o Evento de Cancelamento (NT 2011/006)".
 
Como devo utilizar agora o cancelamento?
 
Obrigado.
Link para o comentário
Compartilhar em outros sites

OK.

Obrigado pela dica peterson161.

 

Eu analisei o código lá.

Eu só gostaria de saber como pegar o xml com o cancelamento sem salvar em arquivo.

No nosso software não utilizamos os arquivos salvos. Pegamos as informações diretamente do componente.

Você sabe como se tem essa informação disponível?

Você sabe também onde eu pego o cStat no retorno do cancelamento?

Link para o comentário
Compartilhar em outros sites

Bom dia, para quem tem problema de horario segue uma dica.

 

 ACBrNFe1.WebServices.StatusServico.Executar;
 ACBrNFe1.EventoNFe.Evento.Clear;
 ACBrNFe1.EventoNFe.idLote := StrToInt(idLote) ;
  with ACBrNFe1.EventoNFe.Evento.Add do
   begin
     infEvento.chNFe := Chave;
     infEvento.CNPJ   := CNPJ;
     infEvento.dhEvento := ACBrNFe1.WebServices.StatusServico.dhRecbto;  //(pegar data e hora do servidor nfe)
     infEvento.tpEvento := teCCe;
     infEvento.nSeqEvento := StrToInt(nSeqEvento);
     infEvento.detEvento.xCorrecao := Correcao;
   end;
  ACBrNFe1.EnviarEventoNFe(StrToInt(idLote));
 

Link para o comentário
Compartilhar em outros sites

Bom dia, para quem tem problema de horario segue uma dica.

 

 ACBrNFe1.WebServices.StatusServico.Executar;

 ACBrNFe1.EventoNFe.Evento.Clear;

 ACBrNFe1.EventoNFe.idLote := StrToInt(idLote) ;

  with ACBrNFe1.EventoNFe.Evento.Add do

   begin

     infEvento.chNFe := Chave;

     infEvento.CNPJ   := CNPJ;

     infEvento.dhEvento := ACBrNFe1.WebServices.StatusServico.dhRecbto;  //(pegar data e hora do servidor nfe)

     infEvento.tpEvento := teCCe;

     infEvento.nSeqEvento := StrToInt(nSeqEvento);

     infEvento.detEvento.xCorrecao := Correcao;

   end;

  ACBrNFe1.EnviarEventoNFe(StrToInt(idLote));

 

Olá,

    tive relatos de alguns cliente que ao efetuar o cancelamento estão recebendo critica referente a data.

    e esta crítica ocorre de forma aleatória, e eu não conseguia identificar o motivo, então isso pode ajudar neste caso?

 

at+

Carlos H. Marian

Analista de Sistemas

|/-\|

Link para o comentário
Compartilhar em outros sites

Olá pessoal, com estas mudanças do cancelamento, qual a maneira correta de pegar os retornos do cancelamento ?

 

Antes eu pegava assim:

 

 

    sProtocolo  := ACBrNFe1.WebServices.Cancelamento.Protocolo;
    DataCancNFe := ACBrNFe1.WebServices.Cancelamento.DhRecbto;
    Status_Ret  := ACBrNFe1.WebServices.Cancelamento.cStat;
    xChaveNFe := ACBrNFe1.WebServices.Cancelamento.NFeChave;
 
Com as mudanças posso fazer assim:
 
    sProtocolo  := ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt;
    DataCancNFe := ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento;
    Status_Ret := ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat;
    xChaveNFe := ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.chNFe;
 
 
Se alguém tiver alguma dica, obrigado.
Link para o comentário
Compartilhar em outros sites

Olá

Pessoal, quando se usa o componente dá para corrigir o envio do cancelamento por evento assim , e quando usa o monitor ?? como passo os dados da data e hora ??

t+

MicroLine Software

xHarbour Simplex 1.2.3/xDev 0.70/xDesigner by L.F.Basso/HWGui

ACBRMonitorPlus OpenSSl/Capicom

[email protected]

69-98114-9250

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Olá

Pessoal, quando se usa o componente dá para corrigir o envio do cancelamento por evento assim , e quando usa o monitor ?? como passo os dados da data e hora ??

t+

Wagner vc testou com o exemplo que o André postou nest link? 

 


logoacbr.pngConheça o Portal do Projeto ACBr

Ajude o Projeto ACBr crescer - Assine o SAC ACBr
Assine um dos planos de longa duração do SAC ACBr, obtenha Descontos Especiais, Parcele no Cartão e ainda ganhe Brindes Exclusivos. Saiba mais aqui

Conheça o ACBrLib, o ACBr de forma nativa para qualquer linguagem de programação. Saiba mais aqui

 

 

 

 

Link para o comentário
Compartilhar em outros sites

Acabei de identificar o problema do cOrgão.

O problema ocorre pois o AN não aceita o valor 90 como cOrgao.


Falha na validação dos dados do Envio de Evento
'90' violates enumeration constraint of '11 12 13 14 15 16 17 21 22 23 24 25 26 27 28 29 31 32 33 35 41 42 43 50 51 52 53 91'.
The element '{http://www.portalfis...f.br/nfe}cOrgao' with value '90' failed to parse.

fiz o seguinte ajuste na função.


function TInfEvento.getcOrgao: integer;
// (AC,AL,AP,AM,BA,CE,DF,ES,GO,MA,MT,MS,MG,PA,PB,PR,PE,PI,RJ,RN,RS,RO,RR,SC,SP,SE,TO);
// (12,27,16,13,29,23,53,32,52,21,51,50,31,15,25,41,26,22,33,24,43,11,14,42,35,28,17);
begin
   if FcOrgao <> 0 then
      Result := FcOrgao
else
begin
case fTpEvento of
teCCe,teCancelamento:
begin
Result := StrToInt(copy(FChave,1,2));
{Estados que utilizam a SVAN: ES, MA, PA, PI, RN => Devem utilizar 91}
if Result in [32,21,15,22,24] then
Result := 91;
end
else
Result := 91;
end;
end;
end;


estou validando no cliente mas creio que seja este o problema.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Acabei de identificar o problema do cOrgão.

O problema ocorre pois o AN não aceita o valor 90 como cOrgao.

Falha na validação dos dados do Envio de Evento

'90' violates enumeration constraint of '11 12 13 14 15 16 17 21 22 23 24 25 26 27 28 29 31 32 33 35 41 42 43 50 51 52 53 91'.

The element '{http://www.portalfis...f.br/nfe}cOrgao' with value '90' failed to parse.

fiz o seguinte ajuste na função.

function TInfEvento.getcOrgao: integer;

// (AC,AL,AP,AM,BA,CE,DF,ES,GO,MA,MT,MS,MG,PA,PB,PR,PE,PI,RJ,RN,RS,RO,RR,SC,SP,SE,TO);

// (12,27,16,13,29,23,53,32,52,21,51,50,31,15,25,41,26,22,33,24,43,11,14,42,35,28,17);

begin

   if FcOrgao <> 0 then

      Result := FcOrgao

else

begin

case fTpEvento of

teCCe,teCancelamento:

begin

Result := StrToInt(copy(FChave,1,2));

{Estados que utilizam a SVAN: ES, MA, PA, PI, RN => Devem utilizar 91}

if Result in [32,21,15,22,24] then

Result := 91;

end

else

Result := 91;

end;

end;

end;

estou validando no cliente mas creio que seja este o problema.

Isso foi corrigido hoje pela manhã, por favor atualize seus fontes.
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Isso foi corrigido hoje pela manhã, por favor atualize seus fontes.

 

Fiz a atualização a 30 minutos e ainda continha o erro. mas vou fazer o procedimento novamente.

Fazendo a alteração acima consegui resolver com os clientes!

Ufa!

 

-- PS: Acabei de atualizar e esta ok. Muito obrigado!

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

Olá Pessoal,

 

Atualmente estou usando a versão 0.7.7.1 do "ACBr NFe MONITOR" e pesquisando como gerar um evento para cancelar uma NFe vi em outro tópico uma dica de um colega para usar o comando "NFe.EnviarEvento" mas conforme poderão ver abaixo não funcionou. Alguem saberia me dizer onde estou errando?

 

Comando:

NFe.EnviarEvento("EVENTO", idLote=38593, "EVENTO001", chNFe=22130407051752000120550010000064181000641818, cOrgao=22, CNPJ=07051752000120, dhEvento=2013-04-02T10:43:13-03:00, tpEvento=110111, nProt=422130003537495, xJust="TESTE DE CANCELAMENTO VIA EVENTO")
 

Resposta do ACBrNFeMonitor:

ERRO: Comando inválido (NFe.EnviarEvento("EVENTO", idLote=38593, "EVENTO001", chNFe=22130407051752000120550010000064181000641818, cOrgao=22, CNPJ=07051752000120, dhEvento=2013-04-02T10:43:13-03:00, tpEvento=110111, nProt=422130003537495, xJust="TESTE DE CANCELAMENTO VIA EVENTO"))
 

Link para o comentário
Compartilhar em outros sites

Bom dia,

Estou criando o evento de cancelamento da nota da seguinte forma:

 

   NumeroLote := StrToInt(FormatDateTime('yymmddhhmm', NOW));

      //carregar o xml da nota
      ACBrNFe.NotasFiscais.Clear;
      ACBrNFe.NotasFiscais.LoadFromFile(CaminhoXML);
      //cria evento cancelamento
      ACBrNFe.EventoNFe.Evento.Clear;
      ACBrNFe.EventoNFe.idLote := NumeroLote;
      try
        with ACBrNFe.EventoNFe.Evento.Add do
        begin
           InfEvento.chNFe   := ChaveNF;
           InfEvento.CNPJ    := aCNPJ;
           InfEvento.dhEvento:= now;
           InfEvento.tpEvento:= teCancelamento;
           InfEvento.detEvento.nProt := ACBrNFe.NotasFiscais.Items[0].NFe.procNFe.nProt;
           InfEvento.detEvento.xJust := xMotivo;
        end;
        //enviar o evento de cancelamento
        if ACBrNFe.EnviarEventoNFe(NumeroLote) then
        begin
          with ACBrNFe.WebServices.EnvEvento do
          begin
            if EventoRetorno.retEvento.Items[0].RetInfEvento.cStat <> 135 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;
            sl.Text         := EventoRetorno.retEvento.Items[0].RetInfEvento.XML;
            CodigoStatus    := EventoRetorno.retEvento.Items[0].RetInfEvento.cStat;
            MotivoStatus    := EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo;
 

No ambiente de homologaçao e nos cliente em produção funcionou em quase todos mas teve um caso espcial

em que na chamada do metodo ACBrNFe.EnviarEventoNFe(NumeroLote) ele simplesmente não executou o cancelamento

retornando falso mas tambem não acusa nenhum erro, tentei desativar o firewall e ate mesmo desativei o anti-virus com

medo que estivesse bloquando algo mas ele passa verifiquei todos parametros do evento e estão todos correto tambem,

alguem passou por algo semelhante ou tem alguma sugestão do que pode estar ocasionando isso?

Link para o comentário
Compartilhar em outros sites

mas ele nem chega a retnorar pois o retorno ta dentro do if da função ACBrNFe.EnviarEventoNFe(NumeroLote)

como é retnornada um falso ele não pega o retorno e a função EventoRetorno.retEvento.Items[X].RetInfEvento.cStat não e reconhecida

fora do if mesmo dando erro na ACBrNFe.EnviarEventoNFe(NumeroLote) ele traz um retorno?

Link para o comentário
Compartilhar em outros sites

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