Buenas...
Estoy con un sistema de una empresa donde se cobran cuotas por realizar actividades, o cuotas sociales (tipo club).
Cada actividad (son actividades de realización periódica) tiene una cuota que puede vencer en fecha diferente de otra, o incluso las cuotas sociales pueden vencer en otra fecha.
¿Cómo me conviene hacer la gestión de cuotas y vencimientos?
Había pensado tener una tabla "cuotas" con los campos "periodocuota", "socio", "importe" y "fechapago", por ejemplo. Entonces, aquí viene mi duda. ¿Cómo sabe el sistema que la cuota está vencida?
Me explico mejor (creo). Podría hacer una de las siguientes dos cosas:
1) Un procedimiento que al iniciar el sistema verifique todas las cuotas (de todos los socios) que debieran estar pagas a la fecha y no lo están, y las agregue a la tabla mencionada (obviamente, sin completar la fecha de pago).
2) Esperar que cada socio vaya a pagar y ahí, "en el aire", se calcule la deuda y la cantidad de cuotas impagas.
También les quería preguntar si se puede (y en ese caso, si conviene) hacer el procedimiento 1) con procedimientos almacenados directamente en la base de datos.
¿Cómo lo harían ustedes?
Muchas gracias.
Jerónimo
Saludos.
Una vez hice un sistema similar, hace unos 10 años y usaba archivos planos, fue interesante, luego cambie a Access. Bueno yendo a tu tema, no sé si mi recomendación será adecuada para orientarte pero creo que el cálculo de lo que
se debe ha de realizarse en el momento, "en el aire" como dices, con la salvedad de que no veo la necesidad de agregarla a ningún lado, solo se agrega (o se agregaría) las "transacciones cerradas" (estamos bravos con la invención de términos je). Me explico mejor:
Tienes estos campos: "periodocuota", "socio", "importe" y "fechapago", presumo que "fechapago" es la fecha limite en la que se debe pagar salvo que la tengas en otra tabla, pero supondré que ese campo es la fecha que debe pagar (tu lo acomodas), entonces haré un nuevo campo "fechacancela" que es el campo donde tendré la fecha en que cancelo la cuota. Si el campo es null quiere decir que aun no paga.
Entonces, con esa estructura, si viene un socio a pagar haré "en el aire" el procedimiento para saber si ese socio esta al día o no (la comparación la haces contra la fecha de sistema o de windows), sino paga no haré nada, no almacenaré nada, el día que venga a pagar volveré a ejecutar el procedimiento y sabré cuantos días de retraso tiene, incluso puedo crear una penalidad por días de retraso. Cuando cancela es que recién meto mano a la tabla.
Si viene un gerente y pide un reporte de todos los socios que adeudan, pues tendré otro query que calcule ese dato, o mejor dicho, que cheque en el campo "fechacancela" las fechas null para mostrarle en el reporte, y si soy mas ficho incluso haré en el query un conteo de días de retraso para ordenar en el reporte por ese campo.
Igual esto no lo grabo, solo la ejecuto porque esa información esta sujeta a comparación en caliente. Ahora, puede darse el caso que un socio no pague nunca, entonces seria un socio moroso y tendrán que definir cuantos días han de pasar para considerar un socio como moroso y en ese caso usaras otra tabla.
Espero no haber enredado mas.
Saludos