Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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;

 

  • Moderadores
Postado
10 horas atrás, Rafael jorge disse:

rejeição: código de hash no qr-code difere do calculado

Esse erro geralmente tem a haver com o CSC configurado incorretamente.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado
16 horas atrás, Juliomar Marchetti disse:

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

fica ruim de entender e compreender

ok. e que isso faz parte de uma unit gigantesca. por isso fiz isso. mas vou ter cuidado na próxima.

  • Curtir 1
Postado (editado)

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

Editado por Rafael jorge
  • Este tópico foi criado há 2494 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.