Skip to content

Cómo se estructura la librería

Luis Carrasco edited this page May 12, 2017 · 2 revisions

A partir de la version 2.0 de la librería, la cual se rediseño para manejar extensivamente interfaces y facilitar el mantenimiento y extensibilidad de la librería, la estructura es la siguiente:

  • IComprobanteFiscal : La interfase base que implementa las propiedades y métodos comunes para todos los comprobantes independientemente de su versión.
    • IComprobanteFiscalV33 : Implementación específica de CFDI v3.3 importada usando el XML Data Binding de Delphi usando el archivo CFD33.xsd
  • IGeneradorCadenaOriginal : Definición de la interfase que debe seguir cada implementación según su versión.
    • IGeneradorCadenaOriginalV33 : Implementación específica para generar la cadena original de CFDI 3.3 usando el archivo XSLT de transformación.
  • IGeneradorSello Definición de la interfase que debe seguir cada implementación del generador de sello según su versión.
    • IGeneradorSelloV33 : Clase específica para realizar el sello de la cadena original para CFDI 3.3
  • IProveedorAutorizadoCertificacion : Definición de interfase que debe seguir cualquier implementación de un PAC.

¿Cómo implementar el timbrado con un nuevo PAC?

Solo debes crear una nueva clase que implemente la interface IProveedorAutorizadoDeCertificacion e implementar los métodos solicitados por la misma, por ejemplo:

TMiSuperPAC = class(TInterfacedObject, IProveedorAutorizadoCertificacion)
  private 
    fCredencialesPAC :  TFacturacionCredencialesPAC;
    function ExtraerNodoTimbre(const aComprobanteXML : TEcodexComprobanteXML): TCadenaUTF8;
    procedure ProcesarExcepcionDePAC(const aExcepcion: Exception);
  public
    procedure Configurar(const aDominioWebService: string;
                         const aCredencialesPAC: TFacturacionCredencialesPAC);
    function TimbrarDocumento(var aComprobante: IComprobanteFiscal;
                              const aTransaccion: Int64): TCadenaUTF8;
  end;

Para usarlo solo tienes que solicitar el timbre a la instancia de tu PAC, por ejemplo:

var
   miSuperPAC: IProveedorAutorizadoCertificacion;
begin
   // ... rutinas de generación de CFDI, sellado, etc.
   miSuperPAC := TMiSuperPAC.Create;
   xmlTimbre := miSuperPAC.TimbrarDocumento(nuevaFactura, Random(9999));
   nuevaFactura.AsignarTimbreFiscal(xmlTimbre);

y listo.