Callouts y Flujo de UI CalloutAppointment ayuda al usuario a capturar una cita desde iDempiere sin reemplazar la validación final del backend. Comportamiento de callouts Campo Comportamiento CDS_AppointmentService_ID Copia precio y duración efectivos. Si existe empleado seleccionado, usa override de CDS_EmployeeService . Limpia slot y horas, pero no limpia empleado. AppointmentDate Limpia slot, hora inicial y hora final. No limpia empleado ni servicio. CDS_AppointmentSlot_ID Copia empleado, hora inicial, hora final, precio y duración desde el slot seleccionado. Flujo recomendado en ventana Seleccionar el empleado que atenderá la cita. Seleccionar el servicio filtrado para ese empleado. Seleccionar la fecha de la cita. Ejecutar el proceso de generación de slots. Seleccionar el slot generado. Guardar la cita. Importante: si un usuario modifica manualmente horas, precio o duración, el evento de modelo vuelve a validar la consistencia antes de guardar.