# Operación e Integración

Uso desde iDempiere, REST/API, instalación y 2Pack.

# Uso desde REST/API

Los clientes externos pueden crear citas directamente en `CDS_Appointment` mediante la API REST estándar de iDempiere. No se requiere un proceso custom para crear la cita.

> **Idea clave:** REST/API y ventana iDempiere comparten la misma seguridad funcional porque el evento de modelo valida el registro antes de guardarlo.

## Flujo recomendado

1. Consultar servicios activos en `CDS_AppointmentService`.
2. Consultar empleados activos y sus relaciones en `CDS_EmployeeService`.
3. Consultar o calcular disponibilidad usando la misma información de horarios y días libres.
4. Crear un registro `CDS_Appointment` con cliente, empleado, servicio, fecha, hora inicial, hora final, precio, duración y estado.
5. Dejar que `AppointmentModelValidator` valide consistencia, disponibilidad y conflictos.

## Campos importantes

<table id="bkmrk-campousoc_bpartner_i" style="width:100%;border-collapse:collapse;margin:12px 0 20px 0;"><thead><tr><th style="border:1px solid #d8dee9;padding:12px;background:#eef2f7;text-align:left;">Campo</th><th style="border:1px solid #d8dee9;padding:12px;background:#eef2f7;text-align:left;">Uso</th></tr></thead><tbody><tr><td style="border:1px solid #d8dee9;padding:12px;">`C_BPartner_ID`</td><td style="border:1px solid #d8dee9;padding:12px;">Cliente o tercero de la cita.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">`CDS_AppointmentEmployee_ID`</td><td style="border:1px solid #d8dee9;padding:12px;">Empleado que atiende.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">`CDS_AppointmentService_ID`</td><td style="border:1px solid #d8dee9;padding:12px;">Servicio solicitado.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">`AppointmentDate`</td><td style="border:1px solid #d8dee9;padding:12px;">Día operativo de la cita.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">`StartDateTime` / `EndDateTime`</td><td style="border:1px solid #d8dee9;padding:12px;">Rango exacto de atención.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">`Price` / `DurationMinutes`</td><td style="border:1px solid #d8dee9;padding:12px;">Valores efectivos de la cita, validados contra servicio/slot cuando aplique.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">`R_Request_ID`</td><td style="border:1px solid #d8dee9;padding:12px;">Referencia opcional/manual si una implementación quiere vincular una solicitud. El código del plugin no depende de este campo.</td></tr></tbody></table>

# Instalación y 2Pack

La instalación requiere desplegar el bundle OSGi del plugin y aplicar el 2Pack correspondiente en iDempiere 12.

## 2Packs incluidos

<table id="bkmrk-archivouso2pack_1.0." style="width:100%;border-collapse:collapse;margin:12px 0 20px 0;"><thead><tr><th style="border:1px solid #d8dee9;padding:12px;background:#eef2f7;text-align:left;">Archivo</th><th style="border:1px solid #d8dee9;padding:12px;background:#eef2f7;text-align:left;">Uso</th></tr></thead><tbody><tr><td style="border:1px solid #d8dee9;padding:12px;">`2Pack_1.0.0.zip`</td><td style="border:1px solid #d8dee9;padding:12px;">Paquete inicial del diccionario de aplicación.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">`2Pack_1.0.1.zip`</td><td style="border:1px solid #d8dee9;padding:12px;">Paquete actualizado con traducciones `es_CO` para campos, elementos, menús, ventanas, pestañas, procesos, parámetros, referencias y valores de lista.</td></tr></tbody></table>

## Pasos de instalación

1. Compilar y desplegar el bundle `com.cdsoftware.appointment` en iDempiere 12.
2. Aplicar el 2Pack más reciente desde `com.cdsoftware.appointment/META-INF`.
3. Reiniciar o refrescar iDempiere para activar servicios OSGi, factories, anotaciones, callouts, procesos y eventos.
4. Configurar `CDS_AppointmentConfig` para la organización.
5. Crear servicios en `CDS_AppointmentService`.
6. Crear empleados en `CDS_AppointmentEmployee`.
7. Relacionar empleados con servicios en `CDS_EmployeeService`.
8. Configurar horarios semanales en `CDS_EmployeeScheduleLine`.
9. Configurar días no disponibles en `CDS_OrgDayOff` o `CDS_EmployeeDayOff`.
10. Probar la generación de slots y creación de citas desde la ventana.

<p class="callout warning">**Importante:** después de aplicar cambios de diccionario que modifiquen columnas o referencias, se deben regenerar modelos y revisar que el código siga usando las constantes generadas.</p>