Resuelve el error "Model 'stock.lot' does not exist in registry"
agregando 'stock' a la lista de dependencias del módulo.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Eliminar método create duplicado que sobrescribía la lógica de secuencias
- Consolidar la generación de secuencias en un único método create
- Agregar contexto especial para evitar validaciones durante la inicialización
- Ahora todos los tests se crean con códigos secuenciales (LAB-YYYY-NNNNN)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Cambiar 'tree' por 'list' en view_mode de todas las acciones de dashboard
- Corregir sintaxis de filtros de fecha usando context_today() y relativedelta
- Eliminar campo booleano is_out_of_range como medida en gráfico
- Corregir referencia a sample.state en lugar de sample.sample_state
- Reemplazar sample.test_ids por búsqueda de tests asociados
- Eliminar consulta SQL directa a columna logo inexistente
- Corregir método invalidate_cache() por _invalidate_cache()
- Agregar sección de notificaciones en CLAUDE.md
Los dashboards ahora funcionan correctamente sin errores de JavaScript.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Cambiar graph_view_id y pivot_view_id por view_ids con sintaxis correcta
- Usar eval con lista de tuplas según formato Odoo estándar
- Resolver error 'Invalid field graph_view_id on model ir.actions.act_window'
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Agregar graph_view_id y pivot_view_id en todas las acciones
- Resolver error 'View types not defined tree found in act_window action'
- Mantener view_mode con 'tree' según convención Odoo 18
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Dashboard de Estado de Órdenes: Vista gráfica y pivot de órdenes por estado
- Dashboard de Productividad de Técnicos: Análisis de pruebas por técnico
- Dashboard de Muestras: Estado y distribución de muestras por tipo
- Dashboard de Parámetros Fuera de Rango: Identificación de resultados críticos
- Dashboard de Análisis Más Solicitados: Top de análisis por período
- Dashboard de Distribución Demográfica: Tests por género y rango de edad
- Agregar campos computed age_range, patient_gender y patient_age_range
- Configurar menú de Dashboards solo para administradores
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- La validación de action_enter_results no estaba verificando el campo value_selection
- Esto causaba falso positivo de 'parámetros sin resultados ingresados'
- Agregar value_selection a la condición del filtro
- Agregar método _onchange_value_selection() que autocompleta al escribir
- Agregar método _validate_and_autocomplete_selection() para validación
- Override create() y write() para autocompletar antes de guardar
- Búsqueda flexible: acepta iniciales, mayúsculas/minúsculas, coincidencias parciales
- Generar instrucciones automáticas en campo notes al crear resultados
- Las instrucciones muestran opciones disponibles y ejemplos de uso
- Modificar todos los métodos action_* para manejar múltiples registros
- Usar bucle 'for record in self:' en lugar de acceder directamente a self
- Afecta a: action_collect, action_receive, action_start_analysis,
action_complete_analysis, action_store, action_dispose, action_cancel
- Previene el error cuando se llaman estos métodos con múltiples muestras
- Agregar QWeb template para generar PDF profesional con:
- Encabezado con datos del laboratorio y logo
- Información completa del paciente y orden
- Tabla de resultados con indicadores visuales para valores fuera de rango
- Sección de observaciones y notas
- Información del validador y fecha de validación
- Agregar campo computado reference_text en parameter_range para mostrar rangos formateados
- Agregar botón "Imprimir Informe de Resultados" en vista de órdenes (solo visible cuando hay pruebas validadas)
- Agregar campo lab_notes en sale.order para observaciones generales
- Reorganizar vista de lims.test con pestañas para mejor UX
- Corregir manejo de employee_ids en el reporte para casos donde no existe el módulo HR
- Incluir scripts de prueba para generar datos de demostración
El informe resalta valores críticos y fuera de rango con colores distintivos,
facilitando la interpretación rápida de los resultados por parte del médico.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Agregar contexto de vistas personalizadas en todos los campos que referencian muestras
- Modificar sale_order_views.xml: campo all_sample_ids con redirección
- Modificar lims_test_views.xml: campo sample_id con redirección
- Modificar lims_result_bulk_entry_views.xml: campo sample_id con redirección
- Modificar stock_lot_views.xml: campos parent_sample_id y child_sample_ids
- Agregar muestra y estado a vista de resultados con filtros y agrupación
- Corregir estado 'in_analysis' por 'in_process' en action_start_process
- Corregir validación de resultados críticos para usar campo correcto
Ahora todas las referencias a muestras en el módulo LIMS abren la vista personalizada del laboratorio en lugar de la vista estándar de stock.lot.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Las re-muestras de re-muestras ahora se crean como hijas del padre original
- Evita nombres anidados como RE-RE-0000002-1
- Mantiene estructura más clara: todas las re-muestras son hermanas
- Actualiza mensajes para reflejar la muestra rechazada que originó la re-muestra
- Mejora trazabilidad manteniendo referencia clara al origen
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- Agregar campo computed all_sample_ids que incluye re-muestras
- Método recursivo para obtener todas las re-muestras
- Mejorar vista de orden con pestaña unificada de muestras
- Mostrar indicador de re-muestra y muestra original
- Incluir estado y motivo de rechazo en la vista
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- Crear script assign_admin_to_lab_group.py
- Integrar en proceso de inicialización
- Asegurar que admin tenga acceso completo al menú de configuración
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- Agregar permisos de lectura/escritura para recepcionista en sale.order.line
- Agregar permisos de solo lectura para técnico en sale.order y sale.order.line
- Agregar permisos completos para administrador en ambos modelos
Esto corrige el error "No puede ingresar a los registros 'Línea de pedido de venta'"
que impedía a la recepcionista ver las órdenes de laboratorio.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- Sintaxis correcta para widget barcode en reportes QWeb
- Solución para caracteres especiales en PDFs
- Ejemplo de layout para múltiples etiquetas por página
- Problemas comunes y sus soluciones
- Corregir codificación UTF-8 usando referencias numéricas de caracteres
- Ajustar espaciado entre etiquetas para evitar solapamiento
- Reducir tamaño de código de barras para mejor ajuste
- Agregar contenedores con overflow para controlar el contenido
- Cambiar de web.html_container a web.basic_layout para mejor renderizado PDF
- Cambiar sintaxis de generación de código de barras a widget de Odoo 18
- Usar t-field con t-options para renderizar correctamente
- El código de barras ahora se muestra correctamente en el PDF
- Cambiar sintaxis de % a t-attf-src para mejor compatibilidad
- Agregar el número del código debajo de la imagen
- Verificado que las muestras tienen barcode en BD
- Simplificar la lógica del template
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- Mover paperformat antes del action report para evitar error de referencia
- Asegurar que los IDs se definan en el orden correcto
Co-Authored-By: Claude <noreply@anthropic.com>
- Crear plantilla QWeb para etiquetas de 100x50mm
- Incluir datos del paciente, orden y tipo de muestra
- Generar código de barras Code128 usando campo existente
- Agregar botón 'Imprimir Etiquetas' en órdenes confirmadas
- Formato optimizado para impresoras de etiquetas
Co-Authored-By: Claude <noreply@anthropic.com>
- Crear usuario 'recepcionista' con rol Recepcionista
- Crear usuario 'tecnico' con rol Técnico
- Crear usuario 'administrador' con rol Administrador
- Todos con contraseña 'demo' para facilitar pruebas
- Incluir archivo en datos demo del módulo
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- 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>
- Cambiar view_mode de 'tree' a 'list' en menus.xml para action_lims_test
- Cambiar mode='tree' a 'list' en lims_test_views.xml para campo result_ids
- Corregir script create_demo_data.py:
* Comentar campo inexistente 'lab_request_priority'
* Cambiar 'observations' por 'note' (campo estándar)
* Cambiar 'lab_sample_ids' por 'generated_sample_ids'
* Ajustar índices de pacientes para usar María González (femenina) para embarazo
- Mejorar validación en lims_result.py:
* Considerar False y 0.0 como equivalentes para campos numéricos
* Solo requerir valores cuando la prueba no esté en estado 'draft'
Resuelve el error "View types not defined tree found in act_window action 457"
y permite confirmar órdenes con pruebas de selección correctamente.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Movido menus.xml al final del manifest para cargar después de las vistas
- Agregadas referencias explícitas a las vistas en action_lims_test
- Esto soluciona el error 'No se pudo encontrar una vista por defecto de tipo tree'
- Eliminado completamente el botón de reporte en lims_test_views.xml
- Removida referencia a report/report_test_result.xml del manifest
- Removida referencia a report_test_result.css del manifest
- Esto soluciona el error 'External ID not found' durante la inicialización