# Dependencias, Procesos, Eventos, Workflows y Correos

Esta página resume las dependencias iDempiere del proyecto, los procesos Java identificados, el evento del plugin, los configuradores del sistema y los workflows de Lirion que disparan correos o cambios de estado.

## Dependencias iDempiere

<table id="bkmrk-componente-estado-ro" 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;">Componente</th><th style="border:1px solid #d8dee9;padding:12px;background:#eef2f7;text-align:left;">Estado</th><th style="border:1px solid #d8dee9;padding:12px;background:#eef2f7;text-align:left;">Rol dentro del proyecto</th></tr></thead><tbody><tr><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">`iDempiere 12`</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Base operativa</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Sistema fuente para terceros, usuarios, roles, solicitudes, órdenes, procesos, workflows, configuradores del sistema y ventanas administrativas.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">`com.cdsoftware.iea.portal`</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Plugin principal del flujo del portal</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Gestiona validación de usuarios, roles, aprobación, relaciones, solicitudes, cotizaciones, evaluaciones y visto bueno.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">[`com.cdsoftware.appointment`](https://docs.primware.net/books/comcdsoftwareappointment)</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Plugin de agendamiento reutilizable</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Gestiona citas, servicios, empleados, horarios, días no disponibles, generación de slots y validación centralizada de disponibilidad desde ventana iDempiere o REST/API.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">`com.cdsoftware.lirion.dnfd`</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Dependencia funcional</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Integra con la Dirección Nacional de Farmacia y Drogas para datos y validaciones relacionadas con el flujo regulatorio.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">`com.cdsoftware.iea`</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;"><p class="callout info">En desarrollo</p>

</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Maneja extensiones de solicitud y recepción de materiales, etiquetas de producto, notificaciones de vencimiento y valores por defecto en recibos desde solicitudes.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">`LabCollector`</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;"><p class="callout warning">Integración futura</p>

</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Se contempla como una integración posterior para complementar el flujo operativo/laboratorio.</td></tr></tbody></table>

## Configuradores del sistema

Algunas reglas operativas del flujo se controlan desde configuradores del sistema en iDempiere. Estos valores permiten cambiar destinatarios o comportamientos sin modificar el portal.

<table id="bkmrk-configurador-descrip" 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;">Configurador</th><th style="border:1px solid #d8dee9;padding:12px;background:#eef2f7;text-align:left;">Descripción</th><th style="border:1px solid #d8dee9;padding:12px;background:#eef2f7;text-align:left;">Valor esperado</th><th style="border:1px solid #d8dee9;padding:12px;background:#eef2f7;text-align:left;">Dónde se usa</th></tr></thead><tbody><tr><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">`IEA_InitialSalesRep`</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Usuario inicial de las solicitudes por parte del IEA.</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">ID del usuario iDempiere en `AD_User` que recibirá la notificación inicial de nuevas solicitudes.</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Campo `SalesRep_ID` de la solicitud y workflow **Nueva Solicitud**, donde el nodo de correo usa `@$sysconfig.IEA_InitialSalesRep@`.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">`IEA_AppointmentEmployee`</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Empleado fijo de agendamiento usado por el portal Flutter cuando el flujo IEA debe crear o consultar disponibilidad contra un responsable específico.</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">ID del registro en `CDS_AppointmentEmployee` que representa al empleado usado para las citas del portal.</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Integración del portal Flutter con `com.cdsoftware.appointment` para filtrar/generar slots y crear citas con un empleado predeterminado.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">`IEA_AppointmentService`</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Servicio fijo de agendamiento usado por el portal Flutter para el tipo de cita asociado al flujo IEA.</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">ID del registro en `CDS_AppointmentService` que representa el servicio usado para las citas del portal.</td><td style="border:1px solid #d8dee9;padding:12px;vertical-align:top;">Integración del portal Flutter con `com.cdsoftware.appointment` para filtrar/generar slots y crear citas con un servicio predeterminado.</td></tr></tbody></table>

## Procesos del plugin `com.cdsoftware.iea.portal`

<table id="bkmrk-proceso-qu%C3%A9-hace-uso" 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;">Proceso</th><th style="border:1px solid #d8dee9;padding:12px;background:#eef2f7;text-align:left;">Qué hace</th><th style="border:1px solid #d8dee9;padding:12px;background:#eef2f7;text-align:left;">Uso en el flujo</th></tr></thead><tbody><tr><td style="border:1px solid #d8dee9;padding:12px;">`SetUserPasswordProcess`</td><td style="border:1px solid #d8dee9;padding:12px;">Recibe `AD_User_ID` y `Password`; asigna contraseña al usuario.</td><td style="border:1px solid #d8dee9;padding:12px;">Alta de Profesional, Empresa y Asistente cuando se define contraseña.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">`AuthUser`</td><td style="border:1px solid #d8dee9;padding:12px;">Valida `IsVerified`, lee `C_Job_ID`, busca `IEA_AuthConfig`, crea `AD_User_Roles` y marca `IsPublic`.</td><td style="border:1px solid #d8dee9;padding:12px;">Habilitación del usuario para operar en el portal.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">`CreateQuoteFromRequest`</td><td style="border:1px solid #d8dee9;padding:12px;">Crea `C_Order` tipo cotización desde `R_Request` y vincula la orden a la solicitud.</td><td style="border:1px solid #d8dee9;padding:12px;">Generación de cotización por el IEA.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">`AssignCurrentUserToApproval`</td><td style="border:1px solid #d8dee9;padding:12px;">Asigna el usuario actual al registro `CDS_Approval`.</td><td style="border:1px solid #d8dee9;padding:12px;">Firma o registro del responsable del visto bueno.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">`AssignEvaluatorAndDateOnRequestEvaluation`</td><td style="border:1px solid #d8dee9;padding:12px;">Escribe usuario y fecha actual en columnas configurables de `IEA_RequestEvaluation`.</td><td style="border:1px solid #d8dee9;padding:12px;">Asignación de evaluadores y fechas de evaluación.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">`AssignDateFinishOnRequestEvaluation`</td><td style="border:1px solid #d8dee9;padding:12px;">Asigna `DateFinish` cuando `Evaluator_1` y `Evaluator_2` están completos.</td><td style="border:1px solid #d8dee9;padding:12px;">Cierre de evaluación.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">`AssignEvaluatorUserOnOrder`</td><td style="border:1px solid #d8dee9;padding:12px;">Asigna el usuario actual a una columna configurable de `C_Order`.</td><td style="border:1px solid #d8dee9;padding:12px;">Asignación de evaluador sobre la orden/cotización.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">`CreateUserCorrectionRequest`</td><td style="border:1px solid #d8dee9;padding:12px;">Crea solicitud de corrección de datos de usuario y campos relacionados.</td><td style="border:1px solid #d8dee9;padding:12px;">Correcciones solicitadas por usuarios o personal IEA.</td></tr></tbody></table>

## Evento reconocido

`RequestApprovalLinker` escucha creación/cambio de `R_Request`. Cuando cambia `CDS_ApprovalStatus`, crea o actualiza `CDS_Approval` y lo vincula a la solicitud.

<div drawio-diagram="111"><img src="https://docs.primware.net/uploads/images/drawio/2026-05/czmDolLlHpWeow4s-drawing-1-1778730288.png" alt="czmDolLlHpWeow4s-drawing-1-1778730288.png"/></div>

## Workflows y correos en Lirion

Los workflows de iDempiere se disparan por tabla y lógica de documento. En este flujo se usan principalmente para enviar correos con el proceso `SendMailText CDS` y, en un caso, para marcar un campo de control.

<table id="bkmrk-workflow-tabla-dispa" 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;">Workflow</th><th style="border:1px solid #d8dee9;padding:12px;background:#eef2f7;text-align:left;">Tabla</th><th style="border:1px solid #d8dee9;padding:12px;background:#eef2f7;text-align:left;">Disparo</th><th style="border:1px solid #d8dee9;padding:12px;background:#eef2f7;text-align:left;">Acción</th></tr></thead><tbody><tr><td style="border:1px solid #d8dee9;padding:12px;">**Validar usuario profesional**</td><td style="border:1px solid #d8dee9;padding:12px;">`Professional`</td><td style="border:1px solid #d8dee9;padding:12px;">Registro nuevo con `C_Job_ID > 1`.</td><td style="border:1px solid #d8dee9;padding:12px;">Envía correo de validación al profesional mediante `SendMailText CDS`.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">**Validar usuario Company**</td><td style="border:1px solid #d8dee9;padding:12px;">`Company`</td><td style="border:1px solid #d8dee9;padding:12px;">Registro nuevo con `C_Job_ID > 1`.</td><td style="border:1px solid #d8dee9;padding:12px;">Envía correo de validación a la empresa.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">**Validar usuario Asistente**</td><td style="border:1px solid #d8dee9;padding:12px;">`Assistant`</td><td style="border:1px solid #d8dee9;padding:12px;">Registro nuevo con `C_Job_ID > 1`.</td><td style="border:1px solid #d8dee9;padding:12px;">Envía correo de validación al asistente.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">**Olvide contraseña**</td><td style="border:1px solid #d8dee9;padding:12px;">`reset_password`</td><td style="border:1px solid #d8dee9;padding:12px;">Registro nuevo.</td><td style="border:1px solid #d8dee9;padding:12px;">Envía correo para recuperación o definición de contraseña.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">**Notificar Usuario nuevo a IEA**</td><td style="border:1px solid #d8dee9;padding:12px;">`Company`</td><td style="border:1px solid #d8dee9;padding:12px;">`IsVerified = true` e `IsPublic = false`.</td><td style="border:1px solid #d8dee9;padding:12px;">Notifica al IEA que existe un usuario/empresa validado por correo pendiente de aprobación.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">**Notificar usuario validado por IEA**</td><td style="border:1px solid #d8dee9;padding:12px;">`Company`</td><td style="border:1px solid #d8dee9;padding:12px;">`IsPublic = true` y `CDS_ApprovalEmailSent = false`.</td><td style="border:1px solid #d8dee9;padding:12px;">Envía correo a la empresa y marca `CDS_ApprovalEmailSent = Y` para evitar reenvíos.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">**Nueva relación de profesional**</td><td style="border:1px solid #d8dee9;padding:12px;">`CDS_ProfessionalDetails`</td><td style="border:1px solid #d8dee9;padding:12px;">Registro nuevo.</td><td style="border:1px solid #d8dee9;padding:12px;">Notifica al asistente cuando se crea una nueva relación con un profesional.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">**Nueva relación de empresa**</td><td style="border:1px solid #d8dee9;padding:12px;">`CDS_CompanyDetails`</td><td style="border:1px solid #d8dee9;padding:12px;">Registro nuevo con `C_Job_ID = 1000001`.</td><td style="border:1px solid #d8dee9;padding:12px;">Notifica a la empresa cuando se crea una nueva relación de profesional.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">**Relación aprobada empresa-profesional**</td><td style="border:1px solid #d8dee9;padding:12px;">`CDS_CompanyDetails`</td><td style="border:1px solid #d8dee9;padding:12px;">Registro actualizado con `CDS_IsApproved = true` y `C_Job_ID = 1000001`.</td><td style="border:1px solid #d8dee9;padding:12px;">Notifica al profesional que la relación fue aprobada.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">**Relación finalizada**</td><td style="border:1px solid #d8dee9;padding:12px;">`CDS_CompanyDetails` / `CDS_ProfessionalDetails`</td><td style="border:1px solid #d8dee9;padding:12px;">Registro actualizado con `CDS_IsApproved = false`.</td><td style="border:1px solid #d8dee9;padding:12px;">Notifica al usuario relacionado y, en el flujo de empresa/profesional, también al IEA.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">**Corrección de datos**</td><td style="border:1px solid #d8dee9;padding:12px;">`IEA_UserCorrectionRequest`</td><td style="border:1px solid #d8dee9;padding:12px;">Registro nuevo.</td><td style="border:1px solid #d8dee9;padding:12px;">Envía correo relacionado con la solicitud de corrección.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">**Nueva Solicitud**</td><td style="border:1px solid #d8dee9;padding:12px;">`Request`</td><td style="border:1px solid #d8dee9;padding:12px;">Solicitud nueva.</td><td style="border:1px solid #d8dee9;padding:12px;">Envía la notificación inicial al usuario configurado en `IEA_InitialSalesRep`. En el nodo de correo el destinatario se resuelve con `@$sysconfig.IEA_InitialSalesRep@`.</td></tr><tr><td style="border:1px solid #d8dee9;padding:12px;">**Cambios en Solicitud**</td><td style="border:1px solid #d8dee9;padding:12px;">`Request`</td><td style="border:1px solid #d8dee9;padding:12px;">Solicitud actualizada.</td><td style="border:1px solid #d8dee9;padding:12px;">Ejecuta notificaciones de cambio de solicitud con `SendMailText CDS`.</td></tr></tbody></table>

## Notas sobre correos

- Los correos del flujo se ejecutan desde iDempiere/Lirion mediante el proceso `SendMailText CDS`.
- Las plantillas, destinatarios y configuradores se administran en Lirion; el portal consume el resultado del flujo, pero no define por sí solo todas las reglas de envío.
- Cuando el correo contiene un enlace de validación, ese enlace apunta a una URL del portal con un parámetro que permite identificar el registro a validar.

## Relación con `com.cdsoftware.iea`

El plugin `com.cdsoftware.iea` complementa el flujo con funciones de materiales: generación de etiquetas para líneas de recibo completadas, notificaciones de vencimiento de productos y propagación de datos desde solicitudes hacia recibos de materiales mediante el callout `RequestInOut`. Esta parte está en desarrollo y debe documentarse como dependencia operativa cuando el flujo de materiales entre en uso.