Jump to content

Assista click.png tectoy.png

C6 chamada_c6.png botao.png

capturar o erro da nfc-e


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

Recommended Posts

estou com um problema. 
sempre que da erro na validação do sefaz em vez de retornar o erro que causou sempre informa "rejeição: código de hash no qr-code difere do calculado" ai tenho que pegar o xml ir no site https://www.sefaz.rs.gov.br/nfe/nfe-val.aspx colar o xml e validar pra ver realmente qual o erro. abaixo eu mostro o procedimento que realizo ao enviar:
 

 try
   try
     nfe.WebServices.StatusServico.Executar;
     except on E:Exception do
      begin
       showmessage({aviso(}'Erro ao Consultar Status da SEFAZ. Erro:' + E.Message+#13+
             'Motivo: ' + nfe.WebServices.StatusServico.xMotivo + #13+
             'Observação: ' + NFE.WebServices.StatusServico.xObs
             );//'',maviso);
       result := false;
       //abort;
       Exit;
      end;
     end;

    NFE.WebServices.Enviar.Lote := NFCEGeraLote(empresa, conexao, erro);
    Try
     NFE.WebServices.Enviar.Executar;
     except on E:Exception do
      begin
       showmessage({aviso(}'Lote não pode ser enviado. Erro:' + E.Message+#13+
             'Motivo: ' + NFE.WebServices.Enviar.xMotivo
             );//'',maviso);
       result := false;
       if RecuperaNota then
        begin
         result := true;
         exit;
        end;
      end;
     end;


    //salvando no banco os dados da nota...
    NFE.WebServices.Retorno.Recibo := NFE.WebServices.Enviar.Recibo;
    {self.nfsaida.NFE_lote          := strtointdef(vnumlote,0);
    self.nfsaida.NFE_recibo        := NFE.WebServices.Retorno.Recibo;
    SELF.nfsaida.NFE_XML_NOME      := NFE.NotasFiscais.Items[0].NomeArq;}
    //testar o Retorno do envio
    Try
     NFE.WebServices.Retorno.Executar;
     except on E:Exception do
      begin
       showmessage({aviso(}'Não foi possível processar o Retorno da SEFAZ. Erro:' + E.Message+#13+
             'Motivo: ' + NFE.WebServices.Retorno.xMotivo
             );//'',maviso);
       result := false;
       if RecuperaNota then
        begin
         result := true;
         exit;
        end;
      end;
     end;

    MENSAGEM := '';
    case NFe.WebServices.Retorno.cStat of
      204:begin
           // Registrar consulta para obter informação da NF-e
           NFE.WebServices.Consulta.NFeChave:= NFE.WebServices.Retorno.ChaveNFe;
           try
            NFE.WebServices.Consulta.Executar;
            except on E:Exception do
             begin
              mensagem := 'Nota já foi Recebida na SEFAZ mas houve erro ao atualizar dados da NF-e. Erro:' + E.Message+#13+
                          'Motivo: ' + NFE.WebServices.Consulta.XMotivo + #13+
                          'Mensagem: ' + NFE.WebServices.Consulta.Msg;
              showmessage({aviso(}mensagem
                    );//'',maviso);
              result  := false;
              retorno := NFE.WebServices.Retorno.Msg;
              if RecuperaNota then
               begin
                result := true;
                exit;
               end;
             end;
            end;
           mensagem := 'Nota já foi Recebida na SEFAZ. Atualizado o Status da NF-e no Sistema'+#13+
                       'Motivo: ' + IntToStr(NFE.WebServices.Consulta.cStat) + ' - ' + NFE.WebServices.Consulta.XMotivo+#13+
                       'Retorno : '+NFE.WebServices.Retorno.xMotivo;
           showmessage({aviso(}mensagem
                 );//'',maviso);
          result  := false;
          retorno := NFE.WebServices.Retorno.Msg;
          if RecuperaNota then
           begin
            result := true;
            exit;
           end;
         end;
     301..302:begin
               mensagem := 'Nota Enviada mas foi DENEGADO O USO!'+#13+
                           'Cod. Status: ' + IntToStr(NFE.WebServices.Retorno.cStat)+' - ' + NFE.WebServices.Retorno.Msg+#13+
                           'Retorno : '+NFE.WebServices.Retorno.xMotivo;
               showmessage({aviso(}mensagem
                      );//'',maviso);
               result  := true;
               retorno := NFE.WebServices.Retorno.Msg;
               if RecuperaNota then
                begin
                 result := true;
                 exit;
                end;
             end;

     103,104,105:begin
                  mensagem := 'Lote em Processamento na SEFAZ'+#13+
                              'Cod. Status: ' + IntToStr(NFE.WebServices.Retorno.cStat) +' - ' + NFE.WebServices.Retorno.Msg+#13+
                              'Retorno : '+NFE.WebServices.Retorno.xMotivo;
                  showmessage({aviso(}mensagem
                       );//'',maviso);
                  result  := true;
                  retorno := NFE.WebServices.Retorno.Msg;
                  if RecuperaNota then
                   begin
                    result := true;
                    exit;
                   end;
                 end;

          108:begin
                mensagem := 'Serviço Paralizado momentaneamente!'+#13+
                            'Cod. Status: ' + IntToStr(NFE.WebServices.Retorno.cStat) +' - ' + NFE.WebServices.Retorno.Msg+#13+
                            'Retorno : '+NFE.WebServices.Retorno.xMotivo;
                showmessage({aviso(}mensagem
                      );//'',maviso);
                result  := false;
                retorno := NFE.WebServices.Retorno.Msg;
                if RecuperaNota then
                 begin
                  result := true;
                  exit;
                 end;
              end;

          109:begin
                mensagem := 'Serviço Paralizado sem previsão de retorno!'+#13+
                            'Cod. Status: ' + IntToStr(NFE.WebServices.Retorno.cStat) +' - ' + NFE.WebServices.Retorno.Msg+#13+
                            'Retorno : '+NFE.WebServices.Retorno.xMotivo;
                showmessage({aviso(}mensagem
                      );//'',maviso);
                result  := false;
                retorno := NFE.WebServices.Retorno.Msg;
                if RecuperaNota then
                 begin
                  result := true;
                  exit;
                 end;
              end;

   201,202,203,205..279:begin
                   mensagem := 'Houve Rejeição do Processamento. Analise o motivo e faça as devidas correções - Edite a NF-e'+#13+
                               'Cod. Status: ' + IntToStr(NFE.WebServices.Retorno.cStat) +' - ' + NFE.WebServices.Retorno.Msg+#13+
                               'Retorno : '+NFE.WebServices.Retorno.xMotivo;
                   showmessage({aviso(}mensagem
                         );//'',maviso);
                  // gravar recibo e status da nota
                  result  := false;
                  retorno := NFE.WebServices.Retorno.Msg;
                  {if RecuperaNota then
                   begin
                    result := true;
                    exit;
                   end;}
                end;

       280..298:begin
                  mensagem := 'Houve Rejeição do Processamento. Analise o motivo e faça as devidas correções' + #13 +
                              'Há problemas com o Certificado atual, analise se o certificado não está vencido' + #13 +
                              'ou se o mesmo não está danificado. Remova o certificado do Emitente, ' + #13 +
                              'remova a cadeia de certificados e instale novamente.'+#13+
                              'Cod. Status: ' + IntToStr(NFE.WebServices.Retorno.cStat) +' - ' + NFE.WebServices.Retorno.Msg+#13+
                              'Retorno : '+NFE.WebServices.Retorno.xMotivo;
                  showmessage({aviso(}mensagem
                        );//'',maviso);
                  retorno := NFE.WebServices.Retorno.Msg;
                  result  := false;
                  if RecuperaNota then
                   begin
                    result := true;
                    exit;
                   end;
                end;

      401..999:begin
                mensagem := 'Houve Rejeição do Processamento. Analise o motivo e faça as devidas correções - Edite a NF-e' + #13 +
                            'Problemas com os dados do emitente/destinatário. Corriga os cadastros de ambos, valide a NF-e e gere novamente'+#13+
                            'Cod. Status: ' + IntToStr(NFE.WebServices.Retorno.cStat) +' - ' + NFE.WebServices.Retorno.Msg+#13+
                            'Retorno : '+NFE.WebServices.Retorno.xMotivo;
                showmessage({aviso(}mensagem
                      );//'',maviso);
               retorno := NFE.WebServices.Retorno.Msg;
               result  := false;
               if RecuperaNota then
                begin
                 result := true;
                 exit;
                end;
              end;

      101:begin
           mensagem := 'Nota Enviada com sucesso!'+#13+
                       'Protocolo: ' + NFE.WebServices.Retorno.Protocolo + #13 +
                       'NF-e : ' + NFE.WebServices.Retorno.ChaveNFe + ' enviada com sucesso!';
           showmessage(mensagem);
           retorno := NFE.WebServices.Retorno.Msg;
           try
            //NFCEGrava(nfe,empresa,conexao,erro);
            NFCEincNumero(empresa,conexao,erro);
            NFE.NotasFiscais.Imprimir;
            except end;
           result := true;
          end;


       100:begin
           // gravar NFe
           //GravaNota;

           //cdc.FieldByName('NFE_temporesposta').AsInteger:= NFE.WebServices.Enviar.TMed;
           //cdc.FieldByName('NFE_xml').LoadFromFile(NFE.Configuracoes.Geral.PathSalvar + NFE.WebServices.Retorno.ChaveNFe + '-nfe.xml',ftBlob);
           //cdc.FieldByName('NFE_divval').AsString        := NFE.WebServices.Retorno.NFeRetorno.ProtNFe.Items[0].digVal;
           //cdc.FieldByName('NFE_cstat').AsInteger        := NFE.WebServices.Retorno.NFeRetorno.ProtNFe.Items[0].cStat;
           {mensagem := 'Nota Enviada com sucesso!'+#13+
                       'Protocolo: ' + NFE.WebServices.Retorno.Protocolo + #13 +
                       'NF-e : ' + NFE.WebServices.Retorno.ChaveNFe + ' enviada com sucesso!';
           showmessage(mensagem
                 );//'',maviso);}
           retorno := NFE.WebServices.Retorno.Msg;
           try
            //NFCEGrava(nfe,empresa,conexao,erro);
            NFCEincNumero(empresa,conexao,erro);
            NFE.NotasFiscais.Imprimir;
            except end;

           //salvando na rede...
           if formConfiguracaoNFE.editrede.Text <> '' then
            begin
             if DirectoryExists(formConfiguracaoNFE.editrede.Text+formatdatetime('yyyymm',NFE.NotasFiscais.Items[0].NFe.Ide.dEmi)) = false then
              begin
               try
                 CreateDir(formConfiguracaoNFE.editrede.Text+formatdatetime('yyyymm',NFE.NotasFiscais.Items[0].nfe.Ide.dEmi))
                 except end;
              end;
             try
              //finalemente gravando o arquivo na rede.
              NFE.NotasFiscais.GravarXML(formConfiguracaoNFE.editrede.Text+formatdatetime('yyyymm',NFE.NotasFiscais.Items[0].nfe.Ide.dEmi)+
                                                                   '\'+extractfilename(NFE.NotasFiscais.Items[0].NomeArq));
              except end;
            end;
           result := true;
          end;
      else begin
       //se nao pegou nenhum status
       mensagem := 'A nf-e pegou um status invalido'+#13+
                   'Cod. Status: ' + IntToStr(NFE.WebServices.Retorno.cStat)+'.'+#13+
                   'Retorno obtido: '+ NFE.WebServices.Retorno.Msg;
       showmessage(mensagem);
       if RecuperaNota then
        begin
         result := true;
         exit;
        end;
      end;
     end;
    //recuperanota;
  except on e:exception do
    begin
      if pos('Certificado Digital não encontrado', e.message) <> 0 then
       begin
        aviso('Certificado Digital não encontrado!'+#13+
              'O sistema não consequio localizar o certificado Digital, tente novamente. Caso o erro persista, verifique com o suporte tecnico.',
              '',
              maviso);
        result := false;
       end else begin
        //FormAvisoErroNFE                 := tFormAvisoErroNFE.create(application);
        //FormAvisoErroNFE.memo.lines.text := 'Erro ao Gerar/assinar/validar NF-e';
        //FormAvisoErroNFE.memo.lines.add('');

        if pos('cUF(Código do UF (Unidade da Federação)) - Conteúdo inválido.', e.message)              <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'Faltou o UF do emitente';//);
        if pos('cMunFG(Código do Município FG) - Conteúdo inválido', e.message)                         <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'Faltou o código do municipio do emitente';//);
        if pos('<emit><enderEmit> ID:C10/cMun(Código do Município) - Conteúdo inválido.', e.message)    <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'Faltou o código do municipio do emitente';//);
        if pos('<dest><enderDest> ID:E07/nro(Número) - Nenhum valor informado.', e.message)             <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'Faltou o número do endereço do destinatario';//);
        if pos('<dest><enderDest> ID:E10/cMun(Código do Município) - Conteúdo inválido.', e.message)    <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'Faltou o código do municipio do destinatario';//);
        if pos('NCM(Código NCM) - Nenhum valor informado', e.message)                                   <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'algum produto esta sem o código NCM';//);
        if pos('<dest> ID:E02-E03/CNPJ-CPF(CNPJ/CPF) - Nenhum valor informado.', e.message)             <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'Faltou o CNPJ/CPF do destinatario';//);
        if pos('<dest><enderDest> ID:E06/xLgr(Logradouro) - Nenhum valor informado.', e.message)        <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'Faltou o logradouro do destinatario';//);
        if pos('<dest><enderDest> ID:E09/xBairro(Bairro) - Nenhum valor informado.', e.message)         <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'Faltou o bairro do destinatario';//);
        if pos('<dest><enderDest> ID:E11/xMun(Nome do Município) - Nenhum valor informado.', e.message) <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'Faltou o numero do destinatario';//);
        if pos('<dest><enderDest> ID:E12/UF(Sigla da UF) - Nenhum valor informado.', e.message)         <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'Faltou o UF do destinatario';//);
        if pos('<dest><enderDest> ID:E12/UF(Sigla da UF) - Conteúdo inválido.', e.message)              <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'O conteudo da UF passado é valido';//);
        if pos('O conjunto de chaves não existe', e.message)                                            <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'O Conjunto de Chaves Registrado não Existe. Verifique se o certificado digital esta conectado (caso seja um pen-driver ou cartão digital), ou se é o mesmo que esta configurado no sistema.';//);
        if pos('Certificado Digital não encontrado!', e.message)                                        <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'O sistema não consequio localizar o certificado Digital, tente novamente. Caso o erro persista, verifique com o suporte tecnico.';//);

        if pos('<prod> ID:I11/vProd(Valor Total Bruto dos Produtos ou Serviços) - Numero máximo de casas decimais permitidas', e.message)           <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'Valor Total Bruto dos Produtos ou Serviços excedeu o Numero máximo de casas decimais permitidas';//);
        if pos('<total><ICMSTot> ID:W07/vProd(Valor Total Bruto dos Produtos ou Serviços) - Numero máximo de casas decimais permitidas', e.message) <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'Valor Total Bruto dos Produtos ou Serviços excedeu o Numero máximo de casas decimais permitidas';//);
        if pos('<total><ICMSTot> ID:W16/vNF(Valor Total da NF-e) - Numero máximo de casas decimais permitidas', e.message)                          <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'Valor Total da NF-e excedeu o Numero máximo de casas decimais permitidas';//);
        if pos('{http://www.portalfiscal.inf.br/nfe}IE', e.message)                                                                                 <> 0 then msg_erro := msg_erro+#13+{FormAvisoErroNFE.memo.lines.add(}'Erro na validação da Inscrição Estatual do cliente ou emitente. Por favor verifique ambos.';//);
        //FormAvisoErroNFE.memo.lines.add('');
        ///FormAvisoErroNFE.memo.lines.add(e.Message);
        //FormAvisoErroNFE.mostraform('Erro', true, false, form, '', nil, 0);
        aviso(msg_erro, '', merro);
        result := false;
       end;
    end;
  end;
 end;

 

Link to comment
Share on other sites

  • Consultores

primeira coisa não cole trechos grandes de códigos, anexe como arquivo assim poderemos ajudar.

fica ruim de entender e compreender

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

estava passando o csc correto mas o idcsc nao.

descobri o que era. o IDCSC que o cliente me informou era 1. so que na verdade era pra ser 2.
o contador dele jurou de pe junto que era 1. so descobri pq acessei remotamente o pc junto com ele entramos no cadastro e vi que era 2.
além de programador agora tenho que ser detetive com esses contadores.
pelo menos fica ai pra quem passar por isso tambem

Edited by Rafael jorge
Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.