Módulo de comprobantes fiscales digitales (JCS CFD).
Introducción.
El módulo CFD permite generar comprobantes fiscales basados en el estándard 3.0 (CFDI) del Sistema de Administración Tributaria en México.
Nota: próximamente estaremos actualizado el módulo para generar CFDIs conforme a la v3.2.
Diseño.
El diseño está basado en la idea de un sistema robusto que permita generar y administrar comprobantes fiscales, y que se pueda adaptar fácilmente para su interfase con otros sistemas, tomando en cuenta que:
- Cada Proveedor de Certificación Autorizado (PAC) ofrece una solución de certificación (i.e. timbrado) diferente (i.e. cambia su implementación).
- La necesidad de generar los comprobantes a partir de la información de sistemas administrativos existentes.
Como primer paso se determinó la secuencia de operaciones necesarias para generar un CFDI a partir de información existente de un documento (como puede ser una factura de venta, nota de crédito, etc.). La secuencia es la siguiente:
- Generar un objeto que represente el comprobante fiscal y asignarle los datos del documento (fecha, R.F.C. del emisor, R.F.C del receptor, etc.). Este objeto es una representación interna del CFDI.
- Agregar al objeto el certificado del emisor.
- Generar la cadena original.
- Con la cadena original, generar el sello e integrarlo al objeto.
- Validar el objeto.
- Certificar el objeto mediante el servicio del PAC. Como resultado de la certificación se obtiene el elemento conocido como Timbre Fiscal Digital (TFD). La certificación se conoce también como timbrado.
- Integrar al objeto el TFD.
- Generar la addenda e integrarla al objeto. La addenda es un elemento opcional.
- Guardar el objeto en el almacén de comprobantes fiscales. Este es ya el CFDI (archivo en formato XML).
- Generar la representación impresa del comprobante. Esta representación requiere del código QR.
- Guardar el archivo con la representación impresa (comunmente en formato PDF).
Estas operaciones se clasificaron en las siguientes categorías:
- Conversión. La intención es recibir un objeto existente a partir del cual generar el CFDI, facilitando la integración del código con cualquier sistema en el que este objeto ya exista y represente, por ejemplo, un documento como puede ser una factura de venta.
- Preparación. Incluye las operaciones necearias para preparan el comprobante para su certificación: sello del emisor, validación, intregración del timbre fiscal, etc.
- Certificación. Esta operación requiere de la interacción con el sistema (muchas veces en forma de un servicio web) de un Proveedor Autorizado de Certificación (PAC). El considerar esta operación como independiente, nos facilita la integración del módulo con el servicio del cualquier PAC.
- Generación de la representación impresa, incluyendo la generación del código QR.
- Almacenamiento.
Implementación.
El modelo anterior ha sido implementado en las interfases que muestra el siguiente diagrama de clases.