# Plan de Desarrollo: Issue #6 - Solicitudes de Laboratorio

## Análisis

El objetivo de este issue es implementar la funcionalidad para que un recepcionista pueda registrar una **"Solicitud de Laboratorio"**. Esta solicitud debe estar vinculada a un paciente, a un médico remitente (opcional) y debe contener los análisis clínicos que se realizarán.

Basándose en los documentos de diseño (`ToBeDesing.md`) y los requerimientos, la estrategia principal es **reutilizar el modelo de Órdenes de Venta (`sale.order`) de Odoo** para representar las solicitudes de laboratorio. Esta decisión es clave porque aprovecha el flujo de facturación y contabilidad ya existente en Odoo, evitando desarrollar una lógica de cobro paralela y asegurando una integración nativa.

El trabajo realizado en el **Issue #5** ya nos proporciona el "Catálogo de Análisis Clínicos" como productos de tipo servicio, que serán los elementos que se añadirán a estas solicitudes.

Por lo tanto, el plan se centrará en adaptar y extender el modelo `sale.order` para que se comporte y se presente al usuario como una "Solicitud de Laboratorio".

---

## Plan de Actividades

-   **1. Extender el Modelo `sale.order`:**
    -   [x] Crear el archivo `lims_management/models/sale_order.py`.
    -   [x] Heredar del modelo `sale.order` para añadir los siguientes campos:
        -   `is_lab_request` (Booleano): Un campo técnico para identificar que la orden de venta es una solicitud de laboratorio. Será invisible en la interfaz y se usará para filtrar y aplicar lógica específica.
        -   `doctor_id` (Many2one a `res.partner`): Para seleccionar al médico que remite la solicitud. Se debe aplicar un dominio para que solo muestre los contactos que estén marcados como doctores (`is_doctor = True`).
    -   [x] Añadir el nuevo archivo `sale_order.py` al `__init__.py` de la carpeta `models`.

-   **2. Crear Vistas para Solicitudes de Laboratorio:**
    -   [x] Crear el archivo de vistas `lims_management/views/sale_order_views.xml`.
    -   [x] **Heredar la vista de formulario de `sale.order`** para:
        -   [x] Añadir el campo `doctor_id` cerca del campo del paciente.
        -   [x] Cambiar la etiqueta (string) del campo `partner_id` de "Cliente" a "Paciente".
        -   [x] **(Nuevo)** Aplicar un dominio al campo `partner_id` para que solo muestre contactos que sean pacientes (`is_patient = True`).
        -   [x] **(Nuevo)** Corregir y asegurar que el dominio en el campo `product_template_id` de las líneas de la orden restrinja la selección únicamente a análisis clínicos (`is_analysis = True`).
    -   [x] **Heredar la vista de lista (tree/list) de `sale.order`** para:
        -   Añadir la columna "Médico Remitente" (`doctor_id`).

-   **3. Crear Men�� y Acción de Ventana:**
    -   [x] Modificar el archivo `lims_management/views/menus.xml`.
    -   [x] Crear una nueva **Acción de Ventana** (`ir.actions.act_window`) para las solicitudes de laboratorio:
        -   `name`: "Solicitudes de Laboratorio".
        -   `res_model`: `sale.order`.
        -   `view_mode`: `list,form`.
        -   `domain`: `[('is_lab_request', '=', True)]` para mostrar solo las solicitudes de laboratorio.
        -   `context`: `{'default_is_lab_request': True}` para que las nuevas solicitudes se marquen correctamente por defecto.
    -   [x] Crear un nuevo `menuitem` llamado "Solicitudes de Laboratorio" bajo el menú principal de "Laboratorio", que dispare la acción anterior.

-   **4. Actualizar Manifiesto y Seguridad:**
    -   [x] Añadir la dependencia del módulo `sale` en el archivo `__manifest__.py`.
    -   [x] Añadir el nuevo archivo de vistas `sale_order_views.xml` a la lista `data` en `__manifest__.py`.
    -   [x] Asegurar que los grupos de usuarios del laboratorio (ej. Recepcionista) tengan los permisos adecuados para crear y modificar órdenes de venta (`sale.order`).

-   **5. Crear Datos de Demostración:**
    -   [x] Crear un nuevo archivo de datos de demostración para las solicitudes de laboratorio.
    -   [x] Definir al menos dos solicitudes de ejemplo que incluyan diferentes análisis y pacientes.
    -   [x] Añadir el nuevo archivo a la clave `demo` en `__manifest__.py`.

-   **6. Verificación Final:**
    -   [x] Reiniciar la instancia de Odoo para aplicar los cambios.
    -   [x] Verificar en la interfaz que el nuevo menú "Solicitudes de Laboratorio" aparece y funciona.
    -   [x] Comprobar que al crear una nueva solicitud, solo se puedan añadir análisis del catálogo y que se pueda seleccionar un médico remitente.
    -   [x] Revisar los logs para asegurar que no haya errores.
