Cómo implementar en nuestras aplicaciones las facturas serializadas, según la serie elegida la aplicación generará el contador correspondiente. Utilizaremos Delphi como lenguaje de programación, aunque es aplicable a cualquier lenguaje de programación.

Serialización de facturas y albaranes

La serialización de facturas y albaranes es una práctica muy común en casi todas las empresas que requieren de una aplicación de facturación. Por ejemplo, se recomienda que las facturas de abono tengan su propio contador, independiente del contador general de las facturas «normales». Para implementar esta distinción en una aplicación informática podremos utilizar la serialización que, además, nos servirá para otros muchos usos. Por ejemplo, para llevar contadores independientes según el tipo de factura.

Como ya hemos comentado, utilizaremos Delphi cómo lenguaje de programación y MySQL como motor de base de datos. Aunque la base de este manual sirve para cualquier lenguaje de programación (con los cambios pertinentes) y para cualquier motor de base de datos.

Preparar la base de datos para la serialización en la tabla de facturas

En primer lugar necesitaremos dos tablas en la base de datos para guardar los contadores y las series de las facturas/albaranes. En una tabla guardaremos las series disponibles y la tabla a la que se podrán asignar, a continuación os mostramos el script sql necesario para crearla:

Por otro lado necesitaremos una segunda tabla donde se guardará el número por el que va cada serie de cada tabla, con el script sql siguiente:

Lógicamente necesitaremos también una tabla para alojar las facturas, con el siguiente script SQL de creación:

En la tabla «factura», podremos observar que los dos campos utilizados para la serialización son «numerofactura» y «serie».

Para crear estas tablas podremos utilizar la aplicación AjpdSoft Administración Bases de Datos.

Componentes, controles, código fuente en Delphi 6 para serie de facturas y albaranes

Una vez creadas las tablas necesarias en la base de datos para la serialización de las facturas y albaranes, pasaremos ahora a explicar cómo programar cada opción en la aplicación que estemos desarrollando:

  • Crearemos un formulario para la inserción y modificación de las series de la factura:
Componentes, controles, código fuente en Delphi 6 para serie de facturas y albaranes

Se trata del formulario donde podremos introducir la Serie y la Tabla para la que la utilizaremos, en nuestro caso para la tabla «Factura». Los componentes de este formulario estarán enlazados con la tabla «Serie» creada anteriormente.

  • Crearemos un formulario para la inserción y modificación de los contadores:
Componentes, controles, código fuente en Delphi 6 para serie de facturas y albaranes

Este formulario contendrá los controles enlazados con la tabla «Contador» creada anteriormente. Este formulario mostrará el contador (número) y la serie, ambos se generarán de forma automática desde el formulario de la factura. Desde este formulario podremos modificarlos en caso necesario.

  • Crearemos un formulario para la inserción y modificación de las facturas:
Componentes, controles, código fuente en Delphi 6 para serie de facturas y albaranes

En este formulario será donde utilicemos las series y el contador, a continuación os mostramos el código fuente en Delphi del código que insertaremos en el evento OnClick del botón bGenerarNumFactura que es el que hay en la parte derecha del campo del número de factura. Este botón generará el número de forma automática según la serie introducida en el campo anterior (txtSerie):

Donde:

  • txtSerie: es el TDBComboBox que contendrá un desplegable con las series disponibles para la tabla actual (Facturas).
  • md.tFactura: es el componente TTable enlazado con la tabla «Facturas», donde se guardan los datos de la factura.
  • llenarCadena: es una función que rellena una cadena dada con el carácter indicado y con el tamaño indicado. A continuación os mostramos el código de esta función:

Esta función generará un número con el formato: 000032/2007.

  • generarNumeroSerie: esta función accede a la tabla «Contador» y obtiene el número por el que vaya el contador según la serie y la tabla que se le pase como parámetro. También incrementa el contador de esta tabla y serie. El código de esta función es el siguiente:

Donde:

  • md.tcContador: es el TTable enlazado con la tabla «Contador», donde se guarda un registro por cada serie y factura con el número por el que vaya actualmente el contador.

La aplicación funcionando tendrá este aspecto:

Componentes, controles, código fuente en Delphi 6 para serie de facturas y albaranes
Componentes, controles, código fuente en Delphi 6 para serie de facturas y albaranes
Componentes, controles, código fuente en Delphi 6 para serie de facturas y albaranes