Tablas y Modelo de Datos
El 2Pack del plugin define las tablas del módulo y genera modelos Java I_CDS_* y X_CDS_*. El código usa esos modelos como fuente de nombres de tabla, columnas y valores de referencia.
Tablas principales
| Tabla | Uso |
|---|---|
CDS_AppointmentConfig | Configuración organizacional de agenda, reglas de asignación, aprobación, límites e intervalos. |
CDS_AppointmentService | Servicios agendables con precio, duración, intervalo de slot, aprobación requerida y capacidad. |
CDS_AppointmentEmployee | Empleado disponible para citas, vinculado a C_BPartner y opcionalmente a AD_User. |
CDS_EmployeeService | Relación empleado-servicio con posibles overrides de precio y duración. |
CDS_EmployeeScheduleLine | Bloques semanales de disponibilidad del empleado por día y rango horario. |
CDS_EmployeeDayOff | Bloqueos de empleado por día completo o rango horario, incluyendo recurrencia anual. |
CDS_OrgDayOff | Bloqueos de organización por día completo o rango horario. Incluye CDS_AppointmentConfig_ID, aunque el motor actual todavía no filtra por configuración. |
CDS_AppointmentSlot | Slots generados para selección desde la ventana iDempiere. |
CDS_Appointment | Registro principal de cita con cliente, empleado, servicio, fecha, hora, precio, duración, estado y slot. |
Relaciones clave actuales
CDS_Appointmentreferencia cliente, empleado, servicio y opcionalmente slot.CDS_AppointmentSlotse genera para un empleado, servicio, fecha y rango horario.CDS_EmployeeServicedetermina si un empleado puede prestar un servicio.CDS_EmployeeScheduleLinedefine cuándo puede atender el empleado.CDS_EmployeeDayOffyCDS_OrgDayOffbloquean disponibilidad.
Relación configuración-servicio pendiente
El flujo objetivo requiere que cada servicio resuelva una configuración de agenda. Esto permite saber qué reglas de anticipación, horarios macro, días cerrados y aprobación aplican cuando se crea una cita.
| Necesidad | Opción recomendada | Validación requerida |
|---|---|---|
| Servicio pertenece a una configuración | Agregar CDS_AppointmentConfig_ID en CDS_AppointmentService. | El servicio debe tener una configuración activa cuando se use para generar slots o crear citas. |
| Un servicio no puede tener reglas ambiguas | Si se usa tabla intermedia, imponer unicidad por servicio activo. | Bloquear más de una configuración activa por servicio. |
| Días libres por configuración | Usar el campo existente CDS_AppointmentConfig_ID de CDS_OrgDayOff. | El motor debe filtrar bloqueos por organización y por configuración del servicio. |
Horario macro de configuración pendiente
Actualmente solo existe horario de empleado. Para cumplir el flujo objetivo se recomienda agregar una tabla de horario macro, por ejemplo CDS_AppointmentConfigScheduleLine, con una estructura similar a CDS_EmployeeScheduleLine.
| Campo sugerido | Uso |
|---|---|
CDS_AppointmentConfig_ID | Configuración de agenda a la que pertenece el horario macro. |
WeekDay | Día de la semana permitido. |
StartTime / EndTime | Rango horario general de atención. |
ValidFrom / ValidTo | Vigencia opcional del horario. |
Importante: si el diccionario cambia, se deben regenerar los modelos antes de ajustar el código Java.