Interesante tema, quiero compartir con ustedes mi experiencia en un proyecto
en el que nos pedian algo un poco mas complejo.
Nosotros llamamos "conciliaciones" al proceso de ir descontando el saldo pendiente a cancelar por factura.
La empresa nos pidio que se hiciera automaticamente para algunos clientes y manualmente para otros, me explico, hay clientes a los que no les interesa como estan pagando sus cuentas pues llevan mentalmente su total de facturas y su total de abonos, sin embargo otros clientes cunado efectuan sus pagos indican que facturas estan cancelando y puede suceder que con un abono (recibo) paguen parte de una y parte de otra factura.
El modelo que elaboramos fue el siguiente:
Código:
Tercero:
Codigo_Tercero Integer (PK)
...
Cliente_Saldo_Automatico
Cliente_Saldo_Actual
Factura:
Numero_Factura (PK)
Fecha_Documento
Codigo_Cliente (FK -> Tercero)
Valor_Total
Valor_Conciliado
Saldo_Por_Conciliar
...
Abono:
Numero_abono (PK)
Fecha_Documento
Codigo_Cliente (FK -> Tercero)
Valor_Total
Valor_Conciliado
Saldo_Por_Conciliar
...
Conciliacion:
ID_Conciliacion (PK automatico)
Fecha_Conciliacion
Numero_Abono (FK -> Abono)
Numero_Factura (FK -> Factura)
Valor_Conciliacion
...
Explicacion:
El campo Cliente_Saldo_Automatico tiene dos pocibles valores S/N, si el valor es S el sisterma automaticamente concilia los documentos con saldo pendiente por conciliar.
En el sistema cuando las conciliaciones son manuales, se "cruza" un abono contra una o mas facturas, en ocasiones el pago es mayor que lo que debe el cliente, entonces quedan un saldo pendiente por cruzar.
El modelo real es un poco mas complejo porque se maneja otros documentos como son NotasDebito y NotasCredito.
Espero que les sea de utilidad.