#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Script para verificar los resultados recién creados """ import odoo def check_results(cr): """Verificar resultados de las pruebas LAB-2025-00034, 00035 y 00036""" env = odoo.api.Environment(cr, odoo.SUPERUSER_ID, {}) print("🔍 Buscando las pruebas recién creadas...") # Buscar las pruebas por nombre test_names = ['LAB-2025-00034', 'LAB-2025-00035', 'LAB-2025-00036'] tests = env['lims.test'].search([('name', 'in', test_names)]) print(f"\n Pruebas encontradas: {len(tests)}") for test in tests: print(f"\n📋 Prueba: {test.name}") print(f" Análisis: {test.product_id.name}") print(f" Resultados: {len(test.result_ids)}") for result in test.result_ids: print(f"\n Resultado ID {result.id}:") print(f" Parámetro: {result.parameter_id.name}") print(f" Tipo: {result.parameter_value_type}") print(f" value_numeric: {result.value_numeric}") print(f" value_text: '{result.value_text}'") print(f" value_selection: '{result.value_selection}'") print(f" value_boolean: {result.value_boolean}") # Verificar si es problemático if result.parameter_value_type == 'selection': values_count = 0 if result.value_numeric not in [False, 0.0]: values_count += 1 if result.value_text: values_count += 1 if result.value_selection: values_count += 1 if result.value_boolean: values_count += 1 if values_count > 1 or (values_count == 1 and not result.value_selection): print(f" ❌ PROBLEMÁTICO: {values_count} valores establecidos") # Intentar corregir print(" 🔧 Corrigiendo...") try: # Primero intentar con SQL directo para evitar validaciones cr.execute(""" UPDATE lims_result SET value_numeric = NULL, value_text = NULL, value_boolean = FALSE WHERE id = %s """, (result.id,)) print(" ✓ Corregido con SQL directo") except Exception as e: print(f" ❌ Error al corregir: {e}") # Verificar si la orden S00029 sigue en estado sale order = env['sale.order'].search([('name', '=', 'S00029')], limit=1) if order: print(f"\n📊 Estado de la orden S00029: {order.state}") # Si está en sale, las muestras deberían estar generadas if order.state == 'sale': print(f" Muestras generadas: {len(order.generated_sample_ids)}") for sample in order.generated_sample_ids: print(f" - {sample.name}: {sample.sample_state}") if __name__ == '__main__': db_name = 'lims_demo' try: registry = odoo.modules.registry.Registry(db_name) with registry.cursor() as cr: check_results(cr) cr.commit() print("\n✅ Cambios guardados exitosamente") except Exception as e: print(f"\n❌ Error: {e}") import traceback traceback.print_exc()