Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Poder controlar Periodo escuela 2007/2008 (https://www.clubdelphi.com/foros/showthread.php?t=51749)

Jaros 27-12-2007 20:26:00

Poder controlar Periodo escuela 2007/2008
 
Hola, quisiera saber si me podrias dar una idea de como hacer esto porque he pensado varias formas y no hay manera me lio demasiado.
Estoy haciendo un programa para una escuela, en el que por ejemplo un curso puede durar tres años, y el primer periodo empieza en Octubre del 2007 y acaba en junio del 2008 y mi problema es que no se como controlar los meses que ha pagado durante el primer periodo darlo por finalizado y empezar con el segundo periodo que seria 2008/2009 y que se quede registrado todo pero que en pantalla solo salga el periodo en curso.
Estoy trabajando con tablas parados pero si tengo que halerlo con SQL no tengo problema.
Me podriais dar una idea de como lo harias vosotros.

Muchas Gracias de ante mano.

Lepe 28-12-2007 13:06:45

Hola Jaros, Bienvenido a ClubDelphi.

La información que proporcionas es bastante general. Supongo tendrás las siguientes tablas:
CURSO
PERIODO (periodos definidos para cada curso)
PERSONA
CURSANDO (cursos que está cursando una persona)

Necesitarás otra tabla PAGO que defina la unidad de pago dentro de un periodo, dicho de otra forma: Un periodo dura 1 año, pero el curso se paga mensualmente, bimensualmente, etc. En esta tabla PAGO, es donde almacenas la unidad mínima de pago.

La estructura, más o menos sería así:
Código:

PAGO
  idPago  autoinc
  idPeriodo  integer (referencia a  PERIODO.IDperiodo)
  FechaInicioPago  date
  FechaFinPago  date
  Pagado Boolean

Un pago pertenece a un único periodo. Dicho periodo pertenece a un único Curso.

Si un periodo es anual y se paga trimestralmente, tendrás 4 registros en la tabla Pago para una persona que está en el curso en ese determinado año.

FechaInicioPago, FechaFinPago, es lo que registra si el pago es bimensual, trimestral, etc.

Saludos

Jaros 29-12-2007 11:53:15

Gracias Lepe por responder y por la bienvenida,

Si mas o menos eso lo tengo claro, tengo varias tablas entre ellas Alumnos y Pagos donde las tengo con un maestro detalle con el campo periodo (2007/2008), creo que no he realizado bien la pregunta (falta de costumbre).
Voy hacer un pequeño resumen a ver si lo entiendes mejor, la escuela es un Escuela de arte (de mi Hija situada en Madrid) donde se realizan Actividades, cursillos y Cursos en el primero y segundo no tengo problema el problema esta en el tercero.
El como controlar los pagos si lo tengo, por ejemplo;
Un alumno ha escogido el curso de Danza Moderna(que tiene varias asignaturas) que empieza en Octubre,
el pago es mensual, mi hija busca la ficha del alumno e ingresa el pago, donde yo recogo los registros idalumno, Mes, cantidad, periodo(2007/2008) y fechapago en la tabla Pagos, bien el problema esta en que este periodo se compone de 10 meses (10 pagos) lo que no tengo muy claro es si cuando finalicen los diez meses obligarle a mi hija que vaya a la ficha del curso y por medio de un boton o lo que sea cambie el periodo de 2007/2008 a 2008/2009, y luego en la ficha del alumno cuando realice el primer pago se le cambie el campo periodo a 2008/2009 mas que nada por si algun alumno por problemas ajenos a la escuela no pueda seguir el siguiente periodo no se le quede activo, por que si lo hago en automatico (cambiar el periodo a todos los alumnos a la vez lo mismo que en el curso) creo que pueda tener problemas.
Se que es un poco liante pero que te parece la forma de gestionarlo creo que es un poco cutrilla pero me gustaria que me dieras tu opinion, ó si se te ocurre otra forma mejor de hacerlo.
Gracias.

Lepe 29-12-2007 14:12:25

Al tratarse de paradox, la cosa se complica un poco, en otros motores de Bases de datos, se tienen muchos mecanismos donde elegir, aquí, poco se puede hacer. Tendrás que implementar mucho código delphi y consultas sql.

Cita:

Empezado por Jaros
lo que no tengo muy claro es si cuando finalicen los diez meses obligarle a mi hija que vaya a la ficha del curso y por medio de un boton o lo que sea cambie el periodo de 2007/2008 a 2008/2009

No tienes que obligar a nada a tu hija, tampoco te echará cuenta... :p (no he podido contenerme de hacer un chiste malo, lo siento ;)).
Cuando un curso se da de alta, se debería dar de alta todos los periodos que comprende, es decir, si tiene 2 periodos, dar de alta 2 registros:
Código:

IdCurso                IdPeriodo        Periodo                Fecha_inico        FechaFin
  1                1                2007/2008        01/10/2007        30/06/2008
  1                2                2008/2009        01/07/2008        01/01/2009

A través de la fecha actual del sistema, usando fecha_inicio y Fecha_Fin, puedes saber qué periodo es el vigente de cada curso.

Incluso pidiendo un listado por filtrado por IdCurso y ordenado ascendentemente por IdPeriodo, puedes saber cual es el periodo siguiente al vigente.

Si no existen alumnos en el periodo vigente, significa que estás comenzando un nuevo periodo y puedes preguntar al usuario si quiere crear todos los registros para el periodo actual. No sé supongo que es lo que quieres decir con "cambiar el periodo a todos los alumnos", dicho de otra forma, crear nuevos registros para un periodo nuevo de cada alumno cursando una materia.

Obviamente cada Alumno que está en un curso debe tener un campo Boolean que se llame "Matricula_Cancelada", para no dar de alta en el nuevo periodo, aquellos alumnos que han cancelaldo su matrícula.

Cita:

Empezado por Jaros
por que si lo hago en automatico (cambiar el periodo a todos los alumnos a la vez lo mismo que en el curso) creo que pueda tener problemas.

Obviamente no sé cómo has implementado eso y tampoco sé, cómo debe funcionar el programa, por este motivo quizás "no nos entendamos".

Cita:

Empezado por Jaros
luego en la ficha del alumno cuando realice el primer pago se le cambie el campo periodo a 2008/2009

ummm, esto no lo entiendo. Cuando un alumno va a pagar, tu hija debe indicar qué curso, qué periodo y qué mes va a pagar. Por tanto, el campo "periodo" es un dato de entrada, no tienes que averiguarlo.

Se puede solucionar con un DBLookUpCombo, mostrando en la lista desplegable del combo los periodos que tiene un curso, y, sabiendo la fecha actual del sistema, "proponer por defecto" el periodo que se desea pagar.

Si no "he entendido lo que preguntas", expón la estructura de tus tablas (al menos la de curso, periodo, curso-alumno, pagos) y explica qué registros das de alta y como funciona. Quizás yo tenga en mente una forma de trabajo y tu otra distinta.

Saludos

Jaros 29-12-2007 15:39:55

Ok Lepe veo que si me has entendido, y la solucion de cuando das de alta un Curso dar de alta todos los periodos que este curso conlleva no se me habia ocurrido y veo que es una solucion muy buena. Muchas Gracias "chavalote" me has sido de gran ayuda.

Con respecto al "chiste" si venia a cuento por el tipo de expresion que yó he utilizado, de todas las maneras hoy en dia obligar a un hijo a que haga algo esta un poco crudo.
Gracias y un saludo. ** Feliz año nuevo **


La franja horaria es GMT +2. Ahora son las 15:16:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi