Arquitectura y Componentes
La arquitectura del plugin separa la definición de modelos, la disponibilidad, la experiencia de ventana iDempiere y la validación obligatoria antes de guardar citas.
Componentes principales
| Componente | Responsabilidad |
|---|---|
AppointmentAvailabilityEngine | Centraliza cálculo de disponibilidad, validación de horarios, días libres, conflictos y generación de slots. |
AppointmentModelValidator | Valida citas antes de crear o modificar registros, incluyendo consistencia del slot y conflictos de agenda. |
CalloutAppointment | Apoya la captura en ventana iDempiere copiando precio, duración, empleado y horas desde servicio o slot. |
GenerateAppointmentSlots | Genera registros CDS_AppointmentSlot para un empleado, servicio y fecha específicos. |
ReopenAppointment | Permite reabrir una cita procesada de forma controlada. |
Flujo general
- El usuario configura servicios, empleados, capacidades, horarios y días no disponibles.
- Desde una cita se selecciona empleado, servicio y fecha.
- El proceso de generación crea slots disponibles para esa combinación.
- El usuario selecciona un slot y el callout copia datos a la cita.
- Al guardar, el evento valida disponibilidad, consistencia y conflictos.
- Los clientes REST/API pueden crear la cita directamente y reciben la misma validación por evento.
Nota: los callouts mejoran la experiencia de captura, pero no son la capa de seguridad. La regla final vive en AppointmentModelValidator.