feat: Descartar automáticamente muestras al cancelar orden de laboratorio #54

Closed
opened 2025-07-16 00:40:58 +00:00 by luis_portillo · 1 comment

Descripción

Actualmente, cuando se cancela una orden de laboratorio, las muestras asociadas permanecen activas y no se descartan automáticamente. Esto puede causar confusión ya que quedan muestras "huérfanas" en el sistema que ya no tienen una orden válida.

Comportamiento esperado

Cuando se cancela una orden de laboratorio:

  1. Todas las muestras generadas asociadas a esa orden deben cambiar automáticamente su estado a "cancelled"
  2. Si hay pruebas (lims.test) asociadas a esas muestras, también deben cancelarse
  3. Se debe registrar en el chatter de la muestra que fue cancelada debido a la cancelación de la orden

Criterios de aceptación

  • Al cancelar una orden de laboratorio, todas sus muestras asociadas se marcan como canceladas
  • Las pruebas asociadas a las muestras también se cancelan
  • Se registra un mensaje en el chatter de cada muestra indicando la razón de cancelación
  • Si una muestra ya estaba cancelada o completada, no se modifica
  • La acción es reversible: si se vuelve a poner la orden en borrador, las muestras NO deben reactivarse automáticamente

Notas técnicas

  • El método a modificar es action_cancel() en el modelo sale.order
  • Verificar el campo generated_sample_ids para obtener las muestras asociadas
  • Solo cancelar muestras que estén en estados: 'pending_collection', 'collected', 'in_analysis'
## Descripción Actualmente, cuando se cancela una orden de laboratorio, las muestras asociadas permanecen activas y no se descartan automáticamente. Esto puede causar confusión ya que quedan muestras "huérfanas" en el sistema que ya no tienen una orden válida. ## Comportamiento esperado Cuando se cancela una orden de laboratorio: 1. Todas las muestras generadas asociadas a esa orden deben cambiar automáticamente su estado a "cancelled" 2. Si hay pruebas (lims.test) asociadas a esas muestras, también deben cancelarse 3. Se debe registrar en el chatter de la muestra que fue cancelada debido a la cancelación de la orden ## Criterios de aceptación - [ ] Al cancelar una orden de laboratorio, todas sus muestras asociadas se marcan como canceladas - [ ] Las pruebas asociadas a las muestras también se cancelan - [ ] Se registra un mensaje en el chatter de cada muestra indicando la razón de cancelación - [ ] Si una muestra ya estaba cancelada o completada, no se modifica - [ ] La acción es reversible: si se vuelve a poner la orden en borrador, las muestras NO deben reactivarse automáticamente ## Notas técnicas - El método a modificar es `action_cancel()` en el modelo `sale.order` - Verificar el campo `generated_sample_ids` para obtener las muestras asociadas - Solo cancelar muestras que estén en estados: 'pending_collection', 'collected', 'in_analysis'
Author
Owner

Implementación completada

He implementado la funcionalidad de cancelación automática de muestras y pruebas cuando se cancela una orden de laboratorio.

🔧 Cambios realizados:

  1. Modelo stock.lot (Muestras):

    • Agregado estado 'cancelled'
    • Implementado método action_cancel()
  2. Modelo sale.order (Órdenes):

    • Override del método action_cancel() para órdenes de laboratorio
    • Cancela automáticamente muestras en estados: pending_collection, collected, received, in_process
    • Cancela pruebas asociadas que no estén validadas
  3. Mensajes en chatter:

    • Registra mensaje en cada muestra cancelada
    • Registra mensaje en cada prueba cancelada
    • Muestra resumen en la orden con cantidad de elementos cancelados
  4. Tests unitarios:

    • 6 tests completos que verifican todos los escenarios
    • Verificación de estados finales no afectados
    • Verificación de mensajes en chatter

🧪 Prueba realizada:

✓ Orden cancelada
  Estado de la orden: cancel

📦 Estado final de las muestras:
  - 0000012: cancelled
    ✓ Mensaje de cancelación registrado

🔬 Estado final de las pruebas:
  - LAB-2025-00014: cancelled
    ✓ Mensaje de cancelación registrado

📝 Mensajes en la orden:
  ✓ Mensaje de resumen de cancelación encontrado
    - Muestras canceladas: 1
    - Pruebas canceladas: 1

Commit: 39318f9

## ✅ Implementación completada He implementado la funcionalidad de cancelación automática de muestras y pruebas cuando se cancela una orden de laboratorio. ### 🔧 Cambios realizados: 1. **Modelo stock.lot (Muestras)**: - Agregado estado 'cancelled' - Implementado método `action_cancel()` 2. **Modelo sale.order (Órdenes)**: - Override del método `action_cancel()` para órdenes de laboratorio - Cancela automáticamente muestras en estados: pending_collection, collected, received, in_process - Cancela pruebas asociadas que no estén validadas 3. **Mensajes en chatter**: - Registra mensaje en cada muestra cancelada - Registra mensaje en cada prueba cancelada - Muestra resumen en la orden con cantidad de elementos cancelados 4. **Tests unitarios**: - 6 tests completos que verifican todos los escenarios - Verificación de estados finales no afectados - Verificación de mensajes en chatter ### 🧪 Prueba realizada: ``` ✓ Orden cancelada Estado de la orden: cancel 📦 Estado final de las muestras: - 0000012: cancelled ✓ Mensaje de cancelación registrado 🔬 Estado final de las pruebas: - LAB-2025-00014: cancelled ✓ Mensaje de cancelación registrado 📝 Mensajes en la orden: ✓ Mensaje de resumen de cancelación encontrado - Muestras canceladas: 1 - Pruebas canceladas: 1 ``` ### Commit: 39318f9
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Grupo-Consiti/clinical_laboratory#54
No description provided.