Skip to main content

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

TablaUso
CDS_AppointmentConfigConfiguración organizacional de agenda, reglas de asignación, aprobación, límites e intervalos.
CDS_AppointmentServiceServicios agendables con precio, duración, intervalo de slot, aprobación requerida y capacidad.
CDS_AppointmentEmployeeEmpleado disponible para citas, vinculado a C_BPartner y opcionalmente a AD_User.
CDS_EmployeeServiceRelación empleado-servicio con posibles overrides de precio y duración.
CDS_EmployeeScheduleLineBloques semanales de disponibilidad del empleado por día y rango horario.
CDS_EmployeeDayOffBloqueos de empleado por día completo o rango horario, incluyendo recurrencia anual.
CDS_OrgDayOffBloqueos 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_AppointmentSlotSlots generados para selección desde la ventana iDempiere y consulta desde API.
CDS_AppointmentRegistro principal de cita con cliente, empleado, servicio, fecha, hora, precio, duración, estado y slot.

Relaciones clave actuales

  • CDS_Appointment referencia cliente, empleado, servicio y opcionalmente slot.
  • CDS_AppointmentSlot se genera para un empleado, servicio, fecha y rango horario.
  • CDS_EmployeeService determina si un empleado puede prestar un servicio.
  • CDS_EmployeeScheduleLine define cuándo puede atender el empleado.
  • CDS_EmployeeDayOff y CDS_OrgDayOff bloquean disponibilidad.

Tabla CDS_AppointmentSlot

CDS_AppointmentSlot almacena horarios generados por usuario para que la UI o un cliente API pueda listar opciones disponibles después de ejecutar GenerateAppointmentSlots.

ColumnaUsoFiltro API recomendado
CDS_AppointmentSlot_IDIdentificador del slot seleccionado.Usar al copiar el slot hacia CDS_Appointment.CDS_AppointmentSlot_ID.
AD_Org_IDOrganización del slot.Filtrar por organización activa del usuario.
AD_User_IDUsuario que generó el slot.Filtrar por usuario actual para no mezclar slots temporales de otros usuarios.
CDS_Appointment_IDCita desde la cual se generó el slot, si aplica.Filtrar cuando los slots se generaron desde una cita específica.
CDS_AppointmentEmployee_IDEmpleado disponible para atender el slot.Filtrar por empleado seleccionado.
CDS_AppointmentService_IDServicio del slot.Filtrar por servicio seleccionado.
SlotDateFecha del slot normalizada al inicio del día.Filtrar por fecha de la cita.
StartDateTimeInicio exacto del horario disponible.Ordenar ascendente o filtrar por rango horario.
EndDateTimeFin exacto del horario disponible.Usar junto con StartDateTime para mostrar rango.
DisplayNameEtiqueta legible del horario.Mostrar como texto de selección.
IsAvailableIndica si el slot sigue disponible.Filtrar IsAvailable='Y'.
IsActiveControl estándar de registro activo.Filtrar IsActive='Y'.
AvailableEmployeesCantidad de empleados disponibles para el rango. En el flujo actual por empleado suele quedar en 1.Usar solo como referencia informativa.
PricePrecio efectivo del slot.Copiar a la cita si se selecciona el slot.
DurationMinutesDuración efectiva del slot.Copiar a la cita si se selecciona el slot.
AssignedByRuleIndica si el empleado fue asignado por regla automática.Actualmente informativo en el flujo por empleado.
AssignmentRuleUsedRegla de asignación usada al generar el slot.Usar para auditoría o depuración.

Consulta típica API: después de generar slots, listar CDS_AppointmentSlot filtrando por AD_User_ID, CDS_AppointmentEmployee_ID, CDS_AppointmentService_ID, SlotDate, IsActive='Y' e IsAvailable='Y', ordenando por StartDateTime.

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.

NecesidadOpción recomendadaValidación requerida
Servicio pertenece a una configuraciónAgregar 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 ambiguasSi se usa tabla intermedia, imponer unicidad por servicio activo.Bloquear más de una configuración activa por servicio.
Días libres por configuraciónUsar 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 sugeridoUso
CDS_AppointmentConfig_IDConfiguración de agenda a la que pertenece el horario macro.
WeekDayDía de la semana permitido.
StartTime / EndTimeRango horario general de atención.
ValidFrom / ValidToVigencia opcional del horario.

Importante: si el diccionario cambia, se deben regenerar los modelos antes de ajustar el código Java.