Código de factura personalizado
Que el volumen y calidad de la comunidad Magento no tiene parangón, a estas alturas está muy claro.
Hace días que se me planteo un problema, más por desconocimiento de un servidor que por limitación de la aplicación, aplicar un formato personalizado a la codificación de la factura. Ayer escribí un post en mi blog, sobre este tema junto con la limpieza de la base de datos una vez finalizada las pruebas, pero me gustaría haceros un breve resumen, pero centrado en la codificación de entidades (pedidos, facturas y envíos).
Cómo decía una vez planteado el problema, que es una codificación especial para facturas, me puse a buscar información sobre el tema en el foro oficial de Magento, de ahí la primera frase de este post, y aquí estaba. Magento es extremadamente flexible. El trabajo de codificación a bajo nivel de entidades se encarga a dos ficheros PHP Alphanum.php y Numeric.php ambos ubicados en el directorio app/code/core/Mage/Eav/Model/Entity/Increment/. En ellos podemos definir el patrón más adecuado para nuestra aplicación en las entidades más relevantes:
Si deseamos definir un numero factura del tipo: FXXX-YY Ejemplo: F200-08
Deberemos modificar la función getNextId() en fichero Alphanum.php, programando el formato deseado. Además de asignar a la entidad en cuestión, en este caso Factura(Invoice), en la tabla eav_entity_type el modelo de incremento adecuado, para ello buscaríamos el registro con entity_type_code = invoice y modificar el campo increment_model a eav/entity_increment_alphanumeric.
Y con ello habremos conseguido una codificación de factura personalizada.
Aunque me refiero en todo momento al fichero Alphanum.php, lo más limpio sería crear un modelo nuevo heredado ya que podemos necesitar la codificación alfanumérica con formatos diferentes para varias entidades de la aplicación.