Ir para conteúdo
  • Cadastre-se

dev botao

Carta de Correção CTe


Ver Solução Respondido por Werner_Marques,
  • Este tópico foi criado há 2540 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Bom dia 

Não estou conseguindo emitir cartas de correções para o CTes, todos apresentam a seguinte rejeição.

Segue linha de Código Fonte:

    iNumLote:= FormatDateTime('yymmddhhmm', now);
    if not(InputQuery('WebServices CCe: Carta de Correção', 'Identificador de controle do Lote de envio do Evento', iNumLote)) then
      exit;

    if not(InputQuery('WebServices CCe: Carta de Correção', 'Chave da CT-e', Chave)) then
      exit;
      chave := Trim(OnlyNumber(Chave));

    CNPJ := copy(Chave,7,14);
    if not(InputQuery('WebServices CCe: Carta de Correção', 'CNPJ ou o CPF do autor do Evento', CNPJ)) then
      exit;

    Grupo := 'Indicar o grupo de informações que pertence o Campo Alterado dentro do XML.';
    if not(InputQuery('WebServices CCe: Carta de Correção','Digite Grupo de Correção:', Grupo)) then
      exit;

    Campo := 'Nome do campo modificado do CT-e Original.';
    if not(InputQuery('WebServices CCe: Carta de Correção','Digite o Campo de modificação:', Campo)) then
      exit;

    Valor := 'Valor correspondente à alteração.';
    if not(InputQuery('WebServices CCe: Carta de Correção','Digite o valor de alteração:', Valor)) then
      exit;

    NumItem := 'Informe o número (Mais de um índice alterado)';
    if not(InputQuery('WebServices CCe: Carta de Correção','Número do item:', NumItem)) then
      exit;


    ACBrCTe1.EventoCTe.Evento.Clear;
    with ACBrCTe1.EventoCTe.Evento.Add do
    begin
       nSeqEvento := qr1.fieldbyname('seq_cce').asstring;

       if tp_ambiente = 0 then
          InfEvento.tpAmb              := taProducao
       else
          InfEvento.tpAmb              := taHomologacao;

       infevento.chCTe      := Chave;
       infEvento.CNPJ       := CNPJ;
       infEvento.cOrgao     := StrtoInt(Copy(frameLookupFilial1.qr1.fieldbyname('cd_cid').AsString, 1,2));
       infEvento.dhEvento   := Now;
       infEvento.tpEvento   := teCCe;
       infEvento.nSeqEvento := StrToInt(nSeqEvento);
       infEvento.detEvento.descEvento := 'Carta de Correção';
       infEvento.detEvento.xCondUso   := '';

    ACBrCTe1.EventoCTe.Evento.Items[0].InfEvento.detEvento.infCorrecao.Clear;

    with ACBrCTe1.EventoCTe.Evento.Items[0].InfEvento.detEvento.infCorrecao.Add do
      begin
       grupoAlterado   := Grupo;
       campoAlterado   := Campo;
       valorAlterado   := Valor;
       nroItemAlterado := strtoint(NumItem);
      end;
    end;


    // envio da carta de correção
    if  ACBrCTe1.EnviarEvento(StrToInt(iNumLote)) then
    begin
      with ACBrCTe1.WebServices.EnvEvento do
      begin
        if not(EventoRetorno.retEvento.Items[0].RetInfEvento.cStat in [135, 136]) then
        begin
          raise EDatabaseError.CreateFmt(
            'Ocorreu o seguinte erro ao enviar a carta de correção:'  + sLineBreak +
            'Código:%d' + sLineBreak +
            'Motivo: %s', [
              EventoRetorno.retEvento.Items[0].RetInfEvento.cStat,
              EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo
          ]);
        end;

        qr2.Close;
        qr2.SQL.Clear;
        qr2.SQL.Text:= 'update conhec set seq_cce = seq_cce+1 '+
                       'where nr_conhec = '+quotedstr(qr1.fieldbyname('nr_conhec').AsString)+
                       'and cd_fil = '+quotedstr(qr1.fieldbyname('cd_fil').AsString)+
                       ';';
        qr2.ExecSQL;

      end;
    end
    else
    begin
      with ACBrCTe1.WebServices.EnvEvento do
      begin
        raise Exception.Create(
          'Ocorreram erros ao enviar a Carta de Correção:' + sLineBreak +
          'Lote: '     + IntToStr(EventoRetorno.idLote) + sLineBreak +
          'Ambiente: ' + TpAmbToStr(EventoRetorno.tpAmb) + sLineBreak +
          'Orgao: '    + IntToStr(EventoRetorno.cOrgao) + sLineBreak +
          sLineBreak +
          'Status: '   + IntToStr(EventoRetorno.cStat) + sLineBreak +
          'Motivo: '   + EventoRetorno.xMotivo
        );
      end;
    end;

    ACBrCTe1.EventoCTe.GerarXML;
    MemoResp.Lines.Text := UTF8Encode(ACBrCTe1.WebServices.EnvEvento.RetWS);
    LoadXML(MemoResp, WBResposta);
 

 

Sem título.jpg

  • Moderadores
Postado

Bom dia, chegou a realizar algum teste com outro evento? Cancelamento por exemplo... Pois o método de Validação e assinatura é o mesmo para todos.

Qual configuração de SSL está utilizando?

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

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