Ir para conteúdo
  • Cadastre-se

Rafael Teixeira Cardoso

Membros
  • Total de ítens

    6
  • Registro em

  • Última visita

Posts postados por Rafael Teixeira Cardoso

  1. 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.

     

×
×
  • 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.