Commit Graph

15 Commits

Author SHA1 Message Date
Luis Ernesto Portillo Zaldivar
3e97c9f418 feat(#60): Mejorar control y trazabilidad de re-muestreos
- Respetar configuración del wizard (checkbox crear re-muestra)
- Prevenir creación de múltiples re-muestras activas
- Agregar campos para trazabilidad completa:
  - root_sample_id: muestra original de la cadena
  - resample_chain_count: total de re-muestreos en cadena
- Validar límite de re-muestreos por cadena completa
- Mejorar vista con información de trazabilidad
- Método auxiliar para contar re-muestreos recursivamente

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 09:12:28 -06:00
Luis Ernesto Portillo Zaldivar
1e079a896b fix(#60): Corregir error en creación de actividades al rechazar muestra
- Agregar campo obligatorio res_model_id en mail.activity
- Obtener ID del modelo stock.lot antes de crear actividad
- Prevenir error de validación al rechazar muestras

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 08:22:35 -06:00
Luis Ernesto Portillo Zaldivar
0cf2e42f7a feat(#60): Implementar automatización configurable de re-muestreo
- Agregar modelo de configuración del laboratorio (lims.config.settings)
- Implementar generación automática de re-muestras al rechazar
- Añadir campos de trazabilidad: parent_sample_id, child_sample_ids
- Crear vista de configuración accesible desde menú admin
- Mejorar vistas de stock.lot con información de re-muestreo
- Incluir notificaciones automáticas a recepcionistas
- Configurar límite máximo de re-muestreos por muestra

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 07:39:43 -06:00
Luis Ernesto Portillo Zaldivar
87640b48e0 feat(#58): Implementar flujo de rechazo de muestras
- Agregar estado 'rejected' al ciclo de vida de la muestra
- Crear modelo lims.rejection.reason para gestionar motivos de rechazo
- Agregar campos de rechazo en stock.lot (reason, notes, rejected_by, date)
- Crear wizard para proceso de rechazo con validaciones
- Implementar acción de rechazo con notificaciones
- Crear vistas para muestras rechazadas con filtros y búsquedas
- Agregar 10 motivos de rechazo predefinidos (hemolizada, coagulada, etc.)
- Incluir permisos de seguridad para los nuevos modelos
- Agregar menús para gestión de rechazos y muestras rechazadas
- Corregir compatibilidad con Odoo 18 en vistas existentes

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 22:49:43 -06:00
36a9772a07 Merge pull request 'feat(#10): Implementar etiquetas de muestras con código de barras' (#57) from feature/10-sample-barcode-labels into dev 2025-07-16 04:05:26 +00:00
Luis Ernesto Portillo Zaldivar
2c76b97402 fix(#10): Corregir generación de código de barras en etiquetas
- Agregar método _ensure_barcode() para generar códigos faltantes
- Llamar _ensure_barcode() antes de imprimir etiquetas
- Usar name del lote como fallback si no hay barcode
- Manejar casos donde el campo barcode está vacío

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 20:51:26 -06:00
Luis Ernesto Portillo Zaldivar
58e1648493 feat(#9): Implementar flujo de validación y seguridad
- Ajustar permisos base: recepcionistas solo lectura, técnicos sin eliminar
- Crear reglas de registro para control granular por estado
- Implementar verificación de permisos en todas las transiciones
- Agregar mail.thread a stock.lot para trazabilidad completa
- Validar transiciones de estado y muestras asociadas
- Actualizar vistas con restricciones según grupos de usuario
- Mejorar mensajes del chatter con más contexto

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 19:19:51 -06:00
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
Luis Ernesto Portillo Zaldivar
4be56fc9f7 fix(#32): Spanish translations and workflow fixes
- Fixed missing action_collect method for pending_collection state
- Updated all model field labels to Spanish
- Updated view labels and strings to Spanish
- Fixed readonly conditions for pending_collection state
- Added barcode and new fields to stock.lot views
- Updated sale.order embedded view with correct button
- Added 5-minute timeout note to CLAUDE.md
- Removed problematic demo sale.order XML records
- Updated test script location guidance in CLAUDE.md
- Marked all acceptance criteria as completed in plan
2025-07-14 23:46:31 -06:00
Luis Ernesto Portillo Zaldivar
5a4a65c65b feat(#32): Enhanced barcode generation with uniqueness - Task 3 completed
- Added barcode field to stock.lot with automatic generation
- Implemented unique barcode generation in format YYMMDDNNNNNNC
- Added Luhn check digit for barcode validation
- Handles high volume scenarios with sample type prefixes
- Collision detection and retry mechanism for uniqueness
- Successful test with ephemeral instance restart
2025-07-14 22:38:18 -06:00
Luis Ernesto Portillo Zaldivar
a9ed1a23bd feat(#32): Add automatic sample generation - Task 1 completed
- Added generated_sample_ids field to sale.order model
- Override action_confirm() to intercept lab order confirmation
- Implemented _generate_lab_samples() main logic method
- Implemented _group_analyses_by_sample_type() for grouping
- Implemented _create_sample_for_group() for sample creation
- Added necessary fields to stock.lot model (doctor_id, origin, volume_ml, analysis_names)
- Updated state field to include 'pending_collection' state
- Added proper error handling and user notifications via message_post
- Successful test with ephemeral instance restart
2025-07-14 22:29:29 -06:00
Luis Ernesto Portillo Zaldivar
d240ba5de1 feat(#44): Add sample_type_product_id field to StockLot model
- Added sample_type_product_id Many2one field to reference sample type products
- Kept container_type field for backward compatibility (marked as legacy)
- Added @api.onchange method to synchronize fields
- Added get_container_name() method to retrieve container name from either field

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 20:44:43 -06:00
Luis Ernesto Portillo Zaldivar
4510ba27c7 feat(#31): Implementar ciclo de vida de muestras 2025-07-14 15:08:03 -06:00
Luis Ernesto Portillo Zaldivar
45af1771fa 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.
2025-07-14 09:39:58 -06:00
Luis Ernesto Portillo Zaldivar
ade39f9310 feat(#7): Extender stock.lot para gestion de muestras 2025-07-14 08:12:43 -06:00