From 45af1771fa53621ece5a2e53099af3b81e9622c1 Mon Sep 17 00:00:00 2001 From: Luis Ernesto Portillo Zaldivar Date: Mon, 14 Jul 2025 09:39:58 -0600 Subject: [PATCH] feat(#7): Anadir campo de recolector a muestras - Anadido el campo 'collector_id' al modelo stock.lot. - Actualizadas las vistas de lista y formulario para incluir el nuevo campo. - Actualizados los datos de demostracion para asignar un recolector. - Actualizado el plan de desarrollo. --- documents/plans/ISSUE7_PLAN.md | 50 ++++++++---------- lims_management/demo/z_sample_demo.xml | 2 + .../__pycache__/stock_lot.cpython-312.pyc | Bin 1176 -> 1466 bytes lims_management/models/stock_lot.py | 6 +++ lims_management/views/stock_lot_views.xml | 2 + 5 files changed, 33 insertions(+), 27 deletions(-) diff --git a/documents/plans/ISSUE7_PLAN.md b/documents/plans/ISSUE7_PLAN.md index 815e0b7..f02cfa2 100644 --- a/documents/plans/ISSUE7_PLAN.md +++ b/documents/plans/ISSUE7_PLAN.md @@ -10,11 +10,13 @@ Extender el modelo de Lotes/Números de Serie de Odoo (`stock.lot`) para represe - [x] Crear el archivo `lims_management/models/stock_lot.py`. - [x] Heredar del modelo `stock.lot`. - [x] Añadir campos: `is_lab_sample`, `patient_id`, `request_id`, `collection_date`, `container_type`. + - [ ] **(Nuevo)** Añadir campo `collector_id` (Many2one a `res.users`) para registrar quién tomó la muestra. - [x] **Adaptar las Vistas de Lote/Número de Serie:** - [x] Crear el archivo `lims_management/views/stock_lot_views.xml`. - [x] Crear vistas de lista y formulario para las muestras. - [x] Crear un producto de servicio por defecto para las muestras. + - [ ] **(Nuevo)** Añadir el campo `collector_id` a las vistas de lista y formulario. - [x] **Crear el Menú "Gestión de Muestras":** - [x] Modificar `lims_management/views/menus.xml`. @@ -30,32 +32,26 @@ Extender el modelo de Lotes/Números de Serie de Odoo (`stock.lot`) para represe - [x] **Verificación Final:** - [x] Reiniciar y verificar la instancia de Odoo. +- [x] **Mejorar Modelo de Productos para Tipos de Muestra:** + - [x] Añadir un campo booleano `is_sample_type` al modelo `product.template`. + +- [x] **Crear Menú para "Tipos de Muestra":** + - [x] Añadir acción de ventana y `menuitem` para los tipos de muestra. + +- [x] **Actualizar Vista de Muestras (`stock.lot`):** + - [x] Hacer visible y aplicar dominio al campo `product_id` (Tipo de Muestra). + - [x] Eliminar el producto genérico y su referencia en el contexto. + +- [x] **Crear Datos de Demostración:** + - [x] Crear archivo `demo/z_sample_demo.xml` con tipos de muestra y muestras de ejemplo. + - [x] Añadir el archivo de demostración al manifiesto. + - [ ] **(Nuevo)** Actualizar los datos de demostración para incluir el `collector_id`. + +- [x] **Verificación Final (con Demo):** + - [x] Validar la funcionalidad completa con los datos de demostración. + --- +## Consideraciones Futuras (Siguientes Issues) -## **Nuevas Tareas (Feedback)** - -- [ ] **Mejorar Modelo de Productos para Tipos de Muestra:** - - [ ] Añadir un campo booleano `is_sample_type` al modelo `product.template` en `lims_management/models/product.py`. - -- [ ] **Crear Menú para "Tipos de Muestra":** - - [ ] En `lims_management/views/menus.xml`, añadir una nueva acción de ventana y un `menuitem` en "Configuración". - - [ ] La acción debe mostrar los productos que tengan `is_sample_type = True`. - - [ ] El `context` de la acción debe preestablecer `default_is_sample_type = True` y `default_type = 'service'`. - -- [ ] **Actualizar Vista de Muestras (`stock.lot`):** - - [ ] En `lims_management/views/stock_lot_views.xml`, hacer visible el campo `product_id` (Tipo de Muestra). - - [ ] Aplicar un dominio al campo `product_id` para que solo muestre productos con `is_sample_type = True`. - - [ ] Eliminar el `default_product_id` del contexto de la acción de la muestra. - - [ ] Eliminar el producto genérico "Lab Sample" del archivo de datos. - -- [ ] **Crear Datos de Demostración:** - - [ ] Crear el archivo `lims_management/demo/z_sample_demo.xml`. - - [ ] Añadir registros de `product.template` para diferentes tipos de muestra (ej. "Tubo de Suero", "Tubo EDTA"). - - [ ] Añadir registros de `stock.lot` que representen muestras reales, usando los pacientes y los nuevos tipos de muestra de demostración. - - [ ] Añadir el nuevo archivo de demostración al `__manifest__.py`. - -- [ ] **Verificación Final (con Demo):** - - [ ] Reactivar temporalmente la carga de datos de demostración en `init_odoo.py`. - - [ ] Reiniciar la instancia (`docker-compose down -v` y `docker-compose up -d`). - - [ ] Revisar logs y verificar la funcionalidad completa en la interfaz de Odoo. - - [ ] Desactivar nuevamente la carga de datos de demostración al finalizar. +- **Ciclo de Vida de la Muestra:** Implementar un campo de estado (`state`) con su lógica de transiciones (ej. 'Recolectada' -> 'Recibida' -> 'En Proceso' -> 'Completada' -> 'Almacenada'). +- **Informes de Muestras:** Crear informes en PDF o vistas dinámicas sobre el estado y trazabilidad de las muestras. \ No newline at end of file diff --git a/lims_management/demo/z_sample_demo.xml b/lims_management/demo/z_sample_demo.xml index 688d6bb..bb871b6 100644 --- a/lims_management/demo/z_sample_demo.xml +++ b/lims_management/demo/z_sample_demo.xml @@ -24,6 +24,7 @@ + serum_tube @@ -32,6 +33,7 @@ + edta_tube diff --git a/lims_management/models/__pycache__/stock_lot.cpython-312.pyc b/lims_management/models/__pycache__/stock_lot.cpython-312.pyc index 15aeeebe5040a2bbb1e116eaace75bf01ed9de25..3c5a0bbb56e07aa17b87a3a74e4f5aee9cd1c650 100644 GIT binary patch delta 406 zcmbQixr>|kG%qg~0}xzOF3p%Rk++M9gK^@_I}^`Kiu0xLrwFt#tPxzz3{t?r5XDz1 zq$#|)lF@;&zKXLbwOFsTIJKy_ipM!WCnq(zBsE1LsWO=nq8Lnq*dWcH^?<~5h8l(} zurMl-#e~WS@q!sN8T~YwZZW6kmEB?iS)<8#i={Xgio7Hi$&Nrw0&zbHO4WhFzAI8arQD2QN#5iCGP@wCZnnQP=5{5}XUh$v4m zn{GeR{sxEe4Sw010$N|#Swz?xeTu{<>#}G_se|;vjRCqiH$SB`C)KV(Z zkh;k!%;o|`Y(N&6U;#3Ut0!+^sbOjKE0Uk=&#ECM2a=Qr5eh)!7l%!5eoARhs$G%t YfK0GL0F*8wj{pDw diff --git a/lims_management/models/stock_lot.py b/lims_management/models/stock_lot.py index 8ca95bf..1c37cfc 100644 --- a/lims_management/models/stock_lot.py +++ b/lims_management/models/stock_lot.py @@ -27,3 +27,9 @@ class StockLot(models.Model): ('urine', 'Urine Container'), ('other', 'Other') ], string='Container Type') + + collector_id = fields.Many2one( + 'res.users', + string='Collected by', + default=lambda self: self.env.user + ) diff --git a/lims_management/views/stock_lot_views.xml b/lims_management/views/stock_lot_views.xml index ff3c077..9c5587a 100644 --- a/lims_management/views/stock_lot_views.xml +++ b/lims_management/views/stock_lot_views.xml @@ -12,6 +12,7 @@ + @@ -40,6 +41,7 @@ +