clinical_laboratory/issue_body.txt
Luis Ernesto Portillo Zaldivar 39318f9073 feat(#54): Cancelar automáticamente muestras y pruebas al cancelar orden
- Agregar estado 'cancelled' a stock.lot para muestras
- Implementar método action_cancel() en stock.lot
- Override action_cancel() en sale.order para:
  * Cancelar muestras en estados: pending_collection, collected, received, in_process
  * Cancelar pruebas asociadas que no estén validadas
  * Registrar mensajes en el chatter de cada elemento cancelado
  * Mostrar resumen de elementos cancelados en la orden
- Agregar tests unitarios completos para verificar:
  * Cancelación correcta de muestras y pruebas
  * No cancelación de elementos en estados finales
  * Generación de mensajes en chatter
  * Órdenes normales no afectadas

La funcionalidad asegura que no queden muestras o pruebas "huérfanas"
cuando se cancela una orden de laboratorio.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 18:53:19 -06:00

24 lines
1.4 KiB
Plaintext

## 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'