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