Ir para conteúdo
  • Cadastre-se

dev botao

Nfc-E Retorna Erro Em Vez De Status


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

Recommended Posts

  • Membros Pro

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

 

                // AUMENTAR NUMERO NFC-E
                //539 - DUPLICAMENTO DA NFC-e
                //204 - DUPLICIDADE DA CHAVE
                IF
                      (Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat=539) or
                      (Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat=204)
                 THEN
                BEGIN

                       

                       MESU COMANDOS

 

                end;

 

 

                IF Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat=100 THEN
                begin
 

                     MESU COMANDOS

 

                END;

 

 

        except
            on E: Exception do
            begin
               if tipo=0 then
               MessagemH(1, E.Message );
            end;
        end;
 

 

 

 

O ERRO É DE DUPLICIDADE que dizer

Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat=539

mais vai direto para o Except

em vem de entra no codigo

e o cStat fica 0

Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat = 0

 

o que eu façor?

 

 

O Demo ACBrNFe ta a mesma coisa

 

 

  ACBrNFe1.Enviar(vNumLote,False,Sincrono);

  MemoResp.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Retorno.RetWS);
  memoRespWS.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Retorno.RetornoWS);
  LoadXML(MemoResp, WBResposta);

  MemoDados.Lines.Add('');
  MemoDados.Lines.Add('Envio NFe');
  MemoDados.Lines.Add('tpAmb: '+ TpAmbToStr(ACBrNFe1.WebServices.Retorno.TpAmb));
  MemoDados.Lines.Add('verAplic: '+ ACBrNFe1.WebServices.Retorno.verAplic);
  MemoDados.Lines.Add('cStat: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cStat));
  MemoDados.Lines.Add('cUF: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cUF));
  MemoDados.Lines.Add('xMotivo: '+ ACBrNFe1.WebServices.Retorno.xMotivo);
  MemoDados.Lines.Add('cMsg: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cMsg));
  MemoDados.Lines.Add('xMsg: '+ ACBrNFe1.WebServices.Retorno.xMsg);
  MemoDados.Lines.Add('Recibo: '+ ACBrNFe1.WebServices.Retorno.Recibo);
  MemoDados.Lines.Add('Protocolo: '+ ACBrNFe1.WebServices.Retorno.Protocolo);
// MemoDados.Lines.Add('cStat: '+ ACBrNFe1.WebServices.Retorno.NFeRetorno;

  ACBrNFe1.NotasFiscais.Clear;

 

 

envio da erro e pula direto para o ACBrNFe1.NotasFiscais.Clear;

e antes so dava erro quando estava sem internet ou site da sefaz tava fora do ar

 

 

 

olhando a diferenca do Enivar da versao antida da nova

 

 

 

function TWebServices.Envia(ALote: String; const ASincrono: Boolean): Boolean;
begin
//retirado por recomendação do documento disponível em http://www.nfe.fazenda.gov.br/PORTAL/docs/Consumo_Indevido_Aplicacao_Cliente_v1.00.pdf
{  if not(Self.StatusServico.Executar) then
     begin
       if Assigned(TACBrNFe( FACBrNFe ).OnGerarLog) then
          TACBrNFe( FACBrNFe ).OnGerarLog(Self.StatusServico.Msg);
       raise EACBrNFeException.Create(Self.StatusServico.Msg);
     end;      }

  self.Enviar.FLote := ALote;
  self.Enviar.FSincrono := ASincrono;

  if not(Self.Enviar.Executar) then
     begin
       if Assigned(TACBrNFe( FACBrNFe ).OnGerarLog) then
          TACBrNFe( FACBrNFe ).OnGerarLog(Self.Enviar.Msg);
       raise EACBrNFeException.Create(Self.Enviar.Msg);
     end;

  if (FConfiguracoes.Geral.ModeloDF = moNFe) or (not ASincrono) then
   begin
    Self.Retorno.Recibo := Self.Enviar.Recibo;
    if not(Self.Retorno.Executar) then
       begin
         if Assigned(TACBrNFe( FACBrNFe ).OnGerarLog) then
            TACBrNFe( FACBrNFe ).OnGerarLog(Self.Retorno.Msg);
         raise EACBrNFeException.Create(Self.Retorno.Msg);
       end;
   end;

  Result := true;
end;

 

 

 

function TWebServices.Envia(ALote: String; const ASincrono: Boolean): Boolean;
begin
  FEnviar.FLote     := ALote;
  FEnviar.FSincrono := ASincrono;

  if not Enviar.Executar then
    Enviar.GerarException(Enviar.Msg);

  if not ASincrono then
  begin
    FRetorno.Recibo := FEnviar.Recibo;
    if not FRetorno.Executar then
      FRetorno.GerarException(FRetorno.Msg);
  end;

  Result := True;
end;

post-4970-0-43094800-1421360616_thumb.jp

post-4970-0-83534800-1421360618_thumb.jp

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

  • Consultores

Desculpe, não entendi qual o problema.

Poderia tentar descrever mais detalhadamente?

1) o que fez?

2) o que esperava encontrar?

3) o que encontrou?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

1) o que fez?

     que seja como antes

2) o que esperava encontrar?

     min mostrar o status do retorno cStat=539

3) o que encontrou?

    status do retorno cStat=0

 

 

 

Quando envio uma NFC-e

com o comando enviar....

 

1-se estar sem internet ou a sefaz estar fora do ar

   da erro e cai no except certo ?

 

2-quando esta com intenet e a sefaz estar normal

   tempos que ter o retorno cStat,

ex:

   envie uma nota duplicada

   era para retorna isto
    Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat=539  //539 - DUPLICAMENTO DA NFC-e

    so que agora cai no except como se fosse um erro

    e debugando volto pro codigo e esta com

    Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat=0

  

 

 

try

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

 

   //retorno do sefaz

   //100 = autorizado

   //539 - DUPLICAMENTO DA NFC-e

   showmessage(Form_NFe.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat);

except

    //sem internet ou sefaz fora do ar

    on E: Exception do
    begin
        MessagemH(1, E.Message );
    end;

end;

 

 

agradeço desde de ja,

tem as imagem acima.

tava tudo ok, mais atualzei meu acbr pos ja tava bastante atrasado,

a versao nova tem a opcao de imprimri o danfe da NFC-e,

mais ta com este probleminha

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

  • Membros Pro

MT, HOMOLOGACAO, WINDOWS 8

 

estou com o demo,

 

 

procedure TForm1.btnCriarEnviarNFCeClick(Sender: TObject);
var
 vAux, vNumLote, vSincrono : String;
 Sincrono : boolean;
begin
  {
  if not(InputQuery('WebServices Enviar', 'Numero da Nota', vAux)) then
    exit;

  if not(InputQuery('WebServices Enviar', 'Numero do Lote', vNumLote)) then
    exit;

  vSincrono := '1';
  if not(InputQuery('WebServices Enviar', 'Envio Síncrono(1=Sim, 0=Não)', vSincrono)) then
    exit;

  vNumLote := OnlyNumber(vNumLote);

  if Trim(vNumLote) = '' then
   begin
     MessageDlg('Número do Lote inválido.',mtError,[mbok],0);
     exit;
   end;

  if (Trim(vSincrono) <> '1') and
     (Trim(vSincrono) <> '0') then
   begin
     MessageDlg('Valor Inválido.',mtError,[mbok],0);
     exit;
   end;

  if (Trim(vSincrono) = '1') then
    Sincrono := True
  else
    Sincrono := False;  

    }



  vAux  := '849';
  Sincrono := True;
  vNumLote := OnlyNumber('02');

  ACBrNFe1.NotasFiscais.Clear;

  ACBrNFe1.Configuracoes.Geral.ModeloDF := moNFCe;
  ACBrNFe1.Configuracoes.Geral.VersaoDF :=  TpcnVersaoDF(cbVersaoDF.ItemIndex);


  //GerarNFCe(vAux);
  if OpenDialog1.Execute then
  begin
    ACBrNFe1.NotasFiscais.LoadFromFile(OpenDialog1.FileName);
  end;


  try
    ACBrNFe1.Enviar(vNumLote,False,Sincrono);

    //retorno da sefaz
    //ex:
    //cStat = 100 tudo ok
    //cStat = 539 DUPLICAMENTO DA NFC-e
    ShowMessage(IntToStr(  ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat) );
  except

    //Quando esta sem internet ou sefaz fora do ar
    on E: Exception do
    begin
        ShowMessage(E.Message );
    end;

  end;

 

  MemoResp.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Retorno.RetWS);
  memoRespWS.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.Retorno.RetornoWS);
  LoadXML(MemoResp, WBResposta);

  MemoDados.Lines.Add('');
  MemoDados.Lines.Add('Envio NFe');
  MemoDados.Lines.Add('tpAmb: '+ TpAmbToStr(ACBrNFe1.WebServices.Retorno.TpAmb));
  MemoDados.Lines.Add('verAplic: '+ ACBrNFe1.WebServices.Retorno.verAplic);
  MemoDados.Lines.Add('cStat: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cStat));
  MemoDados.Lines.Add('cUF: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cUF));
  MemoDados.Lines.Add('xMotivo: '+ ACBrNFe1.WebServices.Retorno.xMotivo);
  MemoDados.Lines.Add('cMsg: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cMsg));
  MemoDados.Lines.Add('xMsg: '+ ACBrNFe1.WebServices.Retorno.xMsg);
  MemoDados.Lines.Add('Recibo: '+ ACBrNFe1.WebServices.Retorno.Recibo);
  MemoDados.Lines.Add('Protocolo: '+ ACBrNFe1.WebServices.Retorno.Protocolo);

  ACBrNFe1.NotasFiscais.Clear;
end;

 

 

e estou simulando um Duplicamento de NFC-e

entao era prara min retorna um status de duplicamento certo ?

mais da erro e cai direto no except

mais na messagem do except E.Message

mostra Duplicamento de NFC-e

e o retorno cSat fica com Zero(0)

 

Que dizer que em vem de so retorna um retono falando que a

Duplicamento de NFC-e da erro except e o retorno fica zero.

 

obrigado pela atnecao, to ficando louco ja,

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

  • Consultores

Boa tarde Heto Andrade,

 

Já tentou pegar o status desta forma:

 

     aStatus := ACBrNFe1.WebServices.Enviar.cStat; // aStatus é um Integer
Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

mais o que mudou para anterior para a nova é que

 

nao dava erro quando era duplicamento e sim só o retorno.

nao ia pro except.

 

o servidor e o meu pdv ta tudo em cima de

 

try

  enviar

  se status 100  gravo no banco

  se status 539  showmesse(duplicamento na nota) e nao gravo no banco

except

   showmessage(sem internet)

end;

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

   try
    ACBrNFe1.Enviar(vNumLote,False,Sincrono);

    //retorno da sefaz
    //ex:
    //cStat = 100 tudo ok
    //cStat = 204 DUPLICAMENTO DA NFC-e
    //ShowMessage(IntToStr(  ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat) );
    ShowMessage(IntToStr(  ACBrNFe1.WebServices.Enviar.cStat ) );
   except

    //Quando esta sem internet ou sefaz fora do ar
    on E: Exception do
    begin
        ShowMessage(E.Message +#13+
            'cStat='+IntToStr(  ACBrNFe1.WebServices.Enviar.cStat ));
    end;
   end;

 

 

 

 

só min confirma a funcao ACBrNFe1.WebServices.Enviar.cStat deu certo

min mostou o que eu quero cSata = 204  (DUPLICAMNETO)

mais agora o acbr vai da ERRO quando acontece um cStat diferente de 100 ?

e nao vai ser mais como antes que dava ERRO so quando tava sem

internet ou sefaz fora do AR.

 

vou ter que muda meus dos modulo e todoas as fucoes que vai enviar.

post-4970-0-80687000-1421776668_thumb.jp

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

  • Este tópico foi criado há 3536 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.