Alguien que apoye: Cancelar el CFDI y recuperar el Acuse de Cancelacion e Imprimirlo

37 views
Skip to first unread message

André Ladab Serrot

unread,
Dec 1, 2017, 2:49:27 PM12/1/17
to TFacturaElectronica

Saludos voy a colocar el avance la opcion para CANCELAR y obtener el ACUSE DE CANCELACION del CFDI
Alguien que me aporte al CODE por que no logro cancelar


uses Facturacion.Comprobante, Facturacion.ProveedorAutorizadoCertificacion,

Facturacion.OpenSSL, Facturacion.CertificadoDeSellos, Facturacion.PAC.Ecodex;

Var
// Instancias comunes independientes de la version
OpenSSL : IOpenSSL;
Pac: IProveedorAutorizadoCertificacion;
CertificadoSellos: ICertificadoDeSellos;
CredencialesPAC : TFacturacionCredencialesPAC;
//Variables
RutaCertificado, RutaLlavePrivada, ClaveLlavePrivada: String;

Const
_URL_ECODEX_PRUEBAS_V33 = 'https://wsdev.ecodex.com.mx:2045';

Begin
Try
// El primer sello es para Ecodex
RutaCertificado := ExtractFilePath(Application.ExeName) + 'CSD_SAT\CSD_Pruebas_CFDI_VOC990129I26.cer';
RutaLlavePrivada := ExtractFilePath(Application.ExeName) + 'CSD_SAT\CSD_Pruebas_CFDI_VOC990129I26.key';
ClaveLlavePrivada:= '12345678a';

      OpenSSL:= TOpenSSL.Create;
      OpenSSL.AsignarLlavePrivada(rutaLlavePrivada, claveLlavePrivada);

      CertificadoSellos:= TCertificadoDeSellos.Create;
      CertificadoSellos.Leer(rutaCertificado);

      IF Not openSSL.SonPareja(RutaCertificado, RutaLlavePrivada, ClaveLlavePrivada) Then // Verificando certificado de sellos y llave privada... sean pareja
      Begin
       Application.MessageBox('Los Archivos de Certificado y Llave Privada No Son Pareja. Favor de Verificar','Certificado SAT SCAMi Recaudación',mb_Ok+mb_iconInformation);
       Exit;
      End;

      Pac:= TProveedorEcodex.Create; //Writeln('Creando instancia de PAC...');
      CredencialesPAC.RFC           := 'VOC990129I26';
      CredencialesPAC.DistribuidorID:= '2b3a8764-d586-4543-9b7e-82834443f219';

      IF Pac.CancelarDocumento('02550709-1653-4553-B698-448B5CDD784B') Then
      Begin
       With UniQ_Operations Do
       Begin
        Close;
        SQL.Clear;
        SQL.Add('UPDATE ING_RECIBOS');
        SQL.Add('SET C_CANCEL = ''' + Trim(UpperCase(Causa.Text)) + ''', ');
        SQL.Add('FE_ACUSE_CFDI = ''' + Pac.ObtenerAcuseDeCancelacion('02550709-1653-4553-B698-448B5CDD784B') + ''', ');
        SQL.Add('STATUS = ''CA'''+', ');
        SQL.Add('PC_UPDATE = ''' + Terminal + ''' ');
        SQL.Add('WHERE EJERCICIO = ' + UniQ_Ejercicio.FieldByName('EJERCICIO').AsString + '');
        SQL.Add('AND FOLIO = ''' + UniQ_Ingresos.FieldByName('FOLIO').AsString + '''');
        ExecSQL;
       End;
       UniTransactionWrite.CommitRetaining;
      End
      Else
       Application.MessageBox('El CFDI Seleccionado no puede ser cancelado correctamente, Verificarlo','CANCELACION CFDI',mb_Ok+mb_iconInformation);
  Except
    On E: Exception Do
    Begin
     Application.MessageBox(PChar('** Ocurrio un error inesperado:' + E.ClassName + ': ' + E.Message),'Cancelacion CFDI.',mb_Ok+mb_iconInformation);
     UniTransactionWrite.RollbackRetaining;
     Btn_CancelarClick(Sender);
    End;
  End;

End;


Espero su aportaciones. . .gracias

Ing. Luis Carrasco

unread,
Jan 9, 2018, 11:25:58 AM1/9/18
to TFacturaElectronica
Reply all
Reply to author
Forward
0 new messages