Ir para conteúdo
  • Cadastre-se

dev botao

ACBrNFe - Evento Carta de Correção não Funciona. Erro 297: Assinatura difere do calculado


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

Recommended Posts

Bom dia!

Sou desenvolvedor Delphi, e estou enfrentando um problema que não consigo resolver. O nosso sistema possui um módulo de envio de carta de correção.

Já busquei em todos os fóruns de vocês mas não consigo enviar carta de correção. Está dando rejeição 297 - Assinatura difere do calculado. Vocês podem me ajudar?

Segue o código do método de envio de carta de correção:

procedure TFrmWsEnvioCartaCorrecaoSaida.btnEnviarClick(Sender: TObject);
var
   Chave, CNPJ, nSeqEvento, Correcao, DiretorioAssinatura, Estado: string;
   NumeroNota, idLote, codEstado: integer;
begin
   Chave := QryNotas.FieldBYName('CHAVEACESSO').AsString;

   if frmMain.ControlaEmpresa then
   begin
      QryAuxiliar.Close;
      QryAuxiliar.Sql.text := 'select * from empresa where codigoempresa = :codigoempresa';
      QryAuxiliar.ParamByName('CODIGOEMPRESA').AsInteger := FrmMain.CodigoEmpresa;
      QryAuxiliar.Open;
   end
   else
   begin
      QryAuxiliar.Close;
      QryAuxiliar.Sql.text := 'select * from configuracaonfe where nomebanco = ' + QuotedStr(FrmMain.NomeBanco);
      QryAuxiliar.Open;
   end;

   Estado := QryAuxiliar.FieldByName('estado').AsString;
   codEstado := CodigoUF(Estado);

   if trim(QryAuxiliar.FieldByName('numeroserie').AsString) <> '' then
      ACBrNFe1.Configuracoes.Certificados.NumeroSerie := trim(QryAuxiliar.FieldByName('numeroserie').AsString);

   idLote     := 1;
   CNPJ       := RetiraPontuacao2(QryAuxiliar.FieldByname('cnpj').AsString);
   nSeqEvento := QryNotas.FieldbYName('codigocartacorrecaoeletronica').AsString;
   Correcao   := QryNotas.FieldBYName('textocorrecao').AsString;
   ACBrNFe1.EventoNFe.Evento.Clear;
   ACBrNFe1.EventoNFe.idLote := idLote;
   ACBrNFe1.Configuracoes.Geral.RetirarAcentos := True;
   ACBrNFe1.Configuracoes.Geral.RetirarEspacos := True;

   with ACBrNFe1.CartaCorrecao.CCe.Evento.Add do
   begin
      infEvento.tpAmb        := taProducao;
      infEvento.cOrgao       := codEstado;
      infEvento.chNFe        := Chave;
      infEvento.CNPJ         := CNPJ;
      infEvento.dhEvento     := now;
      infEvento.tpEvento     := teCCe;
      infEvento.nSeqEvento   := StrToInt(nSeqEvento);
      InfEvento.versaoEvento := '1.00';
      infEvento.detEvento.xCorrecao := Correcao;
      infEvento.detEvento.descEvento := 'Carta de Correcao';
      infEvento.detEvento.xCondUso := '';
   end;

   if FrmMain.AtivarTLS then
   begin
      ACBrNFe1.SSL.SSLType := LT_TLSv1_2;
      ACBrNFe1.Configuracoes.WebServices.SSLType := LT_TLSv1_2;
   end;

   if ACBrNFe1.Configuracoes.Certificados.NumeroSerie = '' then
      ACBrNFe1.SSL.SelecionarCertificado;

//   ACBrNFe1.Configuracoes.WebServices.UF := 'MG';
//   case cbAmbiente.ItemIndex of
//      0: ACBrNFe1.Configuracoes.WebServices.Ambiente := taProducao;
//      1: ACBrNFe1.Configuracoes.WebServices.Ambiente := taHomologacao;
//   end;
   ACBrNFe1.CartaCorrecao.CCe.GerarXML;
   ACBrNFe1.EnviarCartaCorrecao(idLote);
   MemoResp.Lines.Text := UTF8Encode(ACBrNFe1.WebServices.EnvEvento.RetWS);
   LoadXML(MemoResp, WBResposta);

   if ACBrNFe1.WebServices.EnvEvento.xMotivo <> '' then
      messagedlg(ACBrNFe1.WebServices.EnvEvento.xMotivo + #13 + ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo, mtInformation, [mbok], 0);

   QryAuxiliar.Close;
   QryAuxiliar.Sql.text := 'select * from configuracaonfe where nomebanco = ' + QuotedStr(FrmMain.NomeBanco);
   QryAuxiliar.Open;

  //Colocando parametro e enviando XML por email
   DiretorioEnvioNotas := adicionarbarra(QryAuxiliar.FieldByName('diretoriocceenvio').AsString);
   arquivoenvio := (DiretorioEnvioNotas + IntToStr(QryNotas.FieldByName('NUMERONOTASAIDA').AsInteger)) + '-procEventoNFe.xml';
   CopyFile(Pchar(PathWithDelim(ExtractFileDir(application.ExeName)) + 'temp.xml'), PChar(arquivoenvio), False);
   EnviarXMLEmailCCE;

  //Voltando com parametro
   DiretorioEnvioNotas := QryAuxiliar.FieldByName('DIRETORIOENVIO').AsString;
end;

Aguardo o apoio de vocês! Desde já obrigado.

 

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Moderadores
56 minutos atrás, Rafael Teixeira Cardoso disse:

Desculpa a demora em responder, mas fiz a mesma configuração do exemplo do svn e deu o mesmo erro. Alguém pode me ajudar?

Como assim ? é que não estou entendendo qual a msg de erro que dá? o porque não envia. msgss que aparecem?

gera o xml?

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 para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...