|
|
Programación: Serialización de facturas y albaranes con Delphi
En este artículo os explicamos paso a paso, con capturas de pantalla y con todas las explicaciones necesarias 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 con Delphi 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. 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: CREATE TABLE serie ( codigo int(10) unsigned NOT NULL auto_increment, nombre char(2) NOT NULL, tabla varchar(50) NOT NULL, PRIMARY KEY (codigo), UNIQUE KEY serie_tabla_nombre USING BTREE (nombre, tabla) ) 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: CREATE TABLE contador ( codigo int(10) unsigned NOT NULL auto_increment, tabla varchar(100) NOT NULL, contador int(10) unsigned, serie char(2) NOT NULL, PRIMARY KEY USING BTREE (codigo), UNIQUE KEY contador_tabla_serie USING BTREE (tabla,serie) ) Lógicamente necesitaremos también una tabla para alojar las facturas, con el siguiente script sql de creación: CREATE TABLE factura ( codigo int(10) unsigned NOT NULL auto_increment, numexpediente varchar(15), numerofactura varchar(25) NOT NULL, serie char(2) NOT NULL, codigocliente int(10), matricula varchar(35), cobrado char(1), fechacobro datetime, importetotal float, clientecontacto varchar(100), fechacarga datetime, telefono varchar(40), email varchar(100), observacion varchar(255), porcentajebeneficio float, importebeneficio float, importetransportista float, codigotransportista int(10), pagadotransportista char(1), fechapagotransportista datetime, codusuarioa int(10) unsigned, codusuariom int(10) unsigned, fechaa datetime, fecham datetime, pesonetototal float, envasestotales float, paletstotales float, fecha datetime, fechavencimiento datetime, PRIMARY KEY USING BTREE (codigo), UNIQUE KEY factura_numerofactura USING BTREE (numerofactura, serie) ) 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. 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:
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.
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 modifcarlos en caso necesario.
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):
procedure TformGFactura.bGenerarNumFacturaClick(
Sender: TObject);
var
ano, mes, dia : word;
begin
if txtSerie.Text = '' then
begin
MessageDlg('La serie de la factura debe tener un valor.',
mtWarning, [mbok], 0);
txtSerie.SetFocus;
end
else
begin
decodeDate(now, ano, mes, dia);
md.tFacturanumerofactura.AsString :=
llenarCadena(floattostr(generarNumeroSerie (
txtSerie.Text, vtTablaFactura)),
6,'0', false) + '/' + inttostr(ano);
end;
end;
Donde:
Donde:
La aplicación funcionando tendrá este aspecto:
Anuncios
Enviado el Domingo, 16 septiembre a las 16:51:34 por ajpdsoft
|
|