Jump to content

dev botao

Duplicamento Nfc-E


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

Recommended Posts

  • Membros Pro

Enviei este comando

Form_NFe.ACBrNFe1.Enviar(vNumLote,False,True);

 

 

e reu erro de retorno da sefaz,

ai tentei enviar de novo

Form_NFe.ACBrNFe1.Enviar(vNumLote,False,True);

 

deu esta massagem

(imagem )

 

 

como faço para pegar este chave e este protocolo. ?

 

obrigado pela atenção.

post-4970-0-87957000-1404745632_thumb.jp

Link to comment
Share on other sites

  • Consultores

Boa tarde Heto Andrade,

 

Ao enviar pela primeira vez qual foi o erro?

 

Se não foi de rejeição, você não pode enviar novamente e sim carregar o XML assinado e não protocolado e realizar uma consulta para obter o protocolo de autorização.

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

Projeto ACBr

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

Link to comment
Share on other sites

  • Membros Pro

Resumindo...

quando mando

Form_NFe.ACBrNFe1.Enviar(vNumLote,False,True);

e recebo a massagem erro: 539 (imagem)

 

tem como pega a chavedeacesso e o protocolo

com algum comando ex:

 

    ShowMessage(ACBrNFe1.WebServices.Consulta.Protocolo);
    MemoResp.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Consulta.RetWS);
    memoRespWS.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Consulta.RetornoWS);

 

 

eu tive que pega a string da massagem

e copiar chave e o protocolo com

copy( messagem, 94,44 ) e copy( messagem,142,15 )

post-4970-0-17863900-1405103157_thumb.jp

Link to comment
Share on other sites

  • Moderadores

Quando você envia e da erro no SEFAZ, você deve consultar a situação da nota depois de um tempo para verificar se ela foi autorizada ou não.

Se foi ele retorna os dados de protocolo, etc, etc

 

Se você tenta enviar novamente ele mostra a mensagem de duplicidade, se você mudar alguma coisa na chave de acesso, ele mostra o erro de duplicidade com diferença na chave de acesso, esse erro geralmente acontece porque você mudou o cNF.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link to comment
Share on other sites

  • Moderadores

Veja várias situações, desde uma simples movimentação do cursor até mesmo um refresh nos dados ao gerar a nf-e e assim pega os dados de outra nota o seu sistema!

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 to comment
Share on other sites

  • Consultores

Boa tarde Heto Andrade,

 

     ACBrNFe.Enviar(Lote);
 
     sRecibo   := ACBrNFe.WebServices.Enviar.Recibo;
 
     ACBrNFe.WebServices.Retorno.Recibo := sRecibo;
     if ACBrNFe.WebServices.Retorno.Executar
      then begin
       for i := 0 to (ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Count - 1) do
        begin
         sDataHora     := DateTimeToStr(ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Items.dhRecbto);
         sProtocolo    := ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Items.nProt;
         sStat         := IntToStr(ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Items.cStat);
         sMotivo       := ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Items.xMotivo;
         sChave   := ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Items.chNFe;
 
        // Atualizar o banco de dados 
 
       end;
     end;
 

Espero ter ajudado.

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

Projeto ACBr

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

Link to comment
Share on other sites

  • Membros Pro

A variável sRecibo, Ta retornando ''  nada, o que deve ser ?

 

 

var

sRecibo : string;

--------------------------

 

     Form_NFe.ACBrNFe1.Enviar(vNumLote,False,True);
 
     sRecibo   := Form_NFe.ACBrNFe1.WebServices.Enviar.Recibo;
Edited by hetoandrade
Link to comment
Share on other sites

  • Membros Pro

resumindo nao vou pode usar esta função, que pena.

 

 

     sRecibo   := ACBrNFe.WebServices.Enviar.Recibo;

 
     ACBrNFe.WebServices.Retorno.Recibo := sRecibo;
     if ACBrNFe.WebServices.Retorno.Executar
      then begin

       for i := 0 to (ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Count - 1) do
        begin
         sDataHora     := DateTimeToStr(ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Items.dhRecbto);
         sProtocolo    := ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Items.nProt;
         sStat         := IntToStr(ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Items.cStat);
         sMotivo       := ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Items.xMotivo;
         sChave   := ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Items.chNFe;
 
        // Atualizar o banco de dados 
 
       end;
     end;
Link to comment
Share on other sites

  • Membros Pro

quando

Form_NFe.ACBrNFe1.Enviar(vNumLote,False,True);

e recebo a massagem erro: 539 (imagem)

duplicamento

 

preciso saber que a nfc-e que ta na sefaz é o mesmo, cupom que to tentando enivar

entao , pego a chavedeacesso da messagem (imagem)

 

eu tive que pega a string da massagem

e copiar chave e o protocolo com

 

 

                        msmChaveAcesso:='';
                        
                        if Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat=204 then
                        begin
                          msmChaveAcesso:= copy( Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, 4,44 );
                        end;


                        if Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat=539 then
                        begin
                          msmChaveAcesso:= SoNumeros( copy(Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.xMotivo, 55, 45 ));
                          msmProtocolo:=   SoNumeros( copy(Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.xMotivo, 104, 16 ));

                          if Length(msmChaveAcesso)<>44 then
                          begin
                            msmChaveAcesso:='';
                          end;
                        end;

 

 

 

 

ai faço a consulta ,

pra saber a data da nfc-e

para verifica se e a mesma data da nfc-e que to tentando enviar

 

pego assim

se for a mesma data, pego a chavedeacesso e protocoque da messagem,

e colo no bando de dados,

as vezes envio a sefaz nao retorna nada, quando tento enviar de novo da duplicamento.

 

 

                        duplicar:=2;

                        Form_NFe.memoLog.Clear;


                        //Form_NFe.ACBrNFe1.WebServices.Consulta.NFeChave := Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.chNFe;

                        if msmChaveAcesso<>'' then
                        Form_NFe.ACBrNFe1.WebServices.Consulta.NFeChave := msmChaveAcesso else
                        Form_NFe.ACBrNFe1.WebServices.Consulta.NFeChave := ChaveOriginal;

                                        
                        Form_NFe.MudarParaNFeOuNFCe(0);
                        Form_NFe.ACBrNFe1.WebServices.Consulta.Executar;
                        Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat:=0;



function PegaLinhaDeUmMumu:string;
var
  i : integer;
  Linha: string;
begin

  Result:='';

  for i := 0 to Form_NFe.memoLog.Lines.Count - 1 do
  begin
    Linha:=Form_NFe.memoLog.Lines.Strings;

    if pos('Recebimento',Linha)<>0 then
    begin
      Result:=Copy(Linha,15,10);
      //ShowMessage(Result);
    end;


  end;

end;


                        if PegaLinhaDeUmMumu<>'' then
                        begin
                           try
                           dataduplicar:= StrToDate(PegaLinhaDeUmMumu);


                                //DataProtocolo nao pode ser menor que a data do cupom
                                if  dataduplicar >= StrToDate(cupomData) then
                                begin

                                    //cupom iqual
                                    duplicar:=1;
                                    vresChaveAcesso  :=  Form_NFe.ACBrNFe1.WebServices.Consulta.NFeChave;
                                    vresProtocolo    :=  Form_NFe.ACBrNFe1.WebServices.Consulta.Protocolo;

                                end else
                                duplicar:=3; //1
                                

                           except
                              duplicar:=2; //1
                           end;
                        end else
                        duplicar:=2;   //1
                        //novo se for iqual nao duplicar   0=sim   1=nao

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Imagem(ns) anexada(s)
Link to comment
Share on other sites

  • Membros Pro

Blz, 

em vez em quando a sefaz ta com problema,

ai quando eu envio nao retorna nada erro 999

blz, mudo o xml para modo offline e imprimo o cupom para o cliente,

depois tento enviar de novo so que da erro de duplicamento,

que dizer, a primeira vez que enviei ja gravou na sefaz e a sefaz nao min retornou nada,

 

quando tento enviar de novo da erro de duplicameto,

entao pra saber se é duplicamento de verdade ou é o mesmo nfc-e ,.

pego a messegem que deu , falando que tem duplicamento,

na messagem tem a chave e o protocolo da nfc-e que ta na sefaz,

 

pego a chave faço uma consulta , min retorno a data da nfc-e,

compara com a data do registro que to tentando enviar.

se for o mesmo dia,

pego a chave o protocolo e salvo no registro que to tentando enviar.

 

--------------------------

quando pego a messagem tenho que fazer uns copy

msmChaveAcesso:= SoNumeros( copy(Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.xMotivo, 55, 45 ));
msmProtocolo:=   SoNumeros( copy(Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.xMotivo, 104, 16 ));

 

existe uma opcao para pega esta chave e protocolo, sem precisar fazer isto ?

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.