Commit Graph

52 Commits

Author SHA1 Message Date
Luis Ernesto Portillo Zaldivar
02237c6d8c fix(#71): Corregir errores en dashboards y scripts de inicialización
- 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>
2025-07-18 12:11:01 -06:00
Luis Ernesto Portillo Zaldivar
753b84936e fix(#71): Corregir sintaxis de view_ids en acciones de dashboards
- 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>
2025-07-17 13:31:28 -06:00
Luis Ernesto Portillo Zaldivar
266b3f28be fix(#71): Agregar referencias explícitas de vistas en acciones de dashboards
- 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>
2025-07-17 12:55:48 -06:00
Luis Ernesto Portillo Zaldivar
d51d3b5d69 feat(#71): Implementar dashboards para administrador del laboratorio
- 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>
2025-07-17 11:17:26 -06:00
Luis Ernesto Portillo Zaldivar
f8be847777 feat(#67): Implementar autocompletado inteligente para campos de selección
- 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
2025-07-17 02:06:04 -06:00
Luis Ernesto Portillo Zaldivar
aa8a0571fc feat(#11): Implementar informe PDF de resultados de laboratorio
- 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>
2025-07-16 18:03:06 -06:00
Luis Ernesto Portillo Zaldivar
0d09e1819a feat(#63): Implementar redirección a vistas personalizadas de muestras
- 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>
2025-07-16 12:30:13 -06:00
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
be6c97cfad fix(#60): Corregir impresión de etiquetas para incluir re-muestras activas
- Modificar action_print_sample_labels para usar all_sample_ids
- Filtrar muestras rechazadas, canceladas y desechadas
- Actualizar condición del botón para usar all_sample_ids
- Ahora imprime etiquetas de re-muestras activas

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 08:55:59 -06:00
Luis Ernesto Portillo Zaldivar
b225fa0815 feat(#60): Agregar visualización de re-muestras en órdenes de laboratorio
- 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>
2025-07-16 08:38:14 -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
c74b17554e feat(#10): Implementar etiquetas de muestras con código de barras
- 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>
2025-07-15 19:57:25 -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
0a7e3a1b12 fix: Corregir errores de compatibilidad con Odoo 18 y validación de resultados
- 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>
2025-07-15 18:25:24 -06:00
Luis Ernesto Portillo Zaldivar
02f011a02b fix: Corregir orden de carga de vistas y referencias en action
- 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'
2025-07-15 15:05:21 -06:00
Luis Ernesto Portillo Zaldivar
4283fe0507 fix: Eliminar referencias a reportes no implementados
- 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
2025-07-15 14:53:08 -06:00
Luis Ernesto Portillo Zaldivar
78091085f3 fix: Comentar botón de reporte no implementado
- Comentado el botón 'Imprimir Resultados' que referenciaba action_report_test_result
- Este action no existe ya que los reportes no han sido implementados aún
- Previene error de inicialización 'External ID not found'
2025-07-15 14:26:15 -06:00
Luis Ernesto Portillo Zaldivar
c7009990fe feat(#51): Issue #51 completado - Catálogo de parámetros de análisis
Implementación completa del sistema de catálogo de parámetros flexible:

 **Tasks completadas:**
- Task 1-12: Todas las tareas implementadas exitosamente
- Task 13: No aplicable (no hay reportes desarrollados aún)

**Características principales:**
- Catálogo centralizado de parámetros reutilizables
- Rangos de referencia flexibles por edad/género/embarazo
- Generación automática de resultados basada en configuración
- Integración completa con el flujo existente
- 36 parámetros demo y 31 rangos de referencia
- Tests automatizados completos

**Modelos implementados:**
- lims.analysis.parameter
- lims.parameter.range
- product.template.parameter

La Task 13 se omitió ya que no existen reportes desarrollados en el módulo actualmente.
2025-07-15 14:22:11 -06:00
Luis Ernesto Portillo Zaldivar
bac05b4bb2 feat(#51): Task 9 completada - Actualizar vistas de ingreso de resultados 2025-07-15 13:18:00 -06:00
Luis Ernesto Portillo Zaldivar
cdb8a97d58 feat(#51): Task 8 completada - Crear vistas de configuración de parámetros 2025-07-15 12:59:49 -06:00
Luis Ernesto Portillo Zaldivar
c80a154afd feat(#51): Task 7 completada - Eliminar modelo obsoleto lims.analysis.range 2025-07-15 12:48:40 -06:00
Luis Ernesto Portillo Zaldivar
79373a01a1 feat(#51): Task 6 completada - Actualizar generación automática de resultados
- Implementado método _generate_test_results() en lims.test
- Genera automáticamente líneas de lims.result basadas en product.template.parameter
- Se ejecuta al crear una nueva prueba
- Respeta el orden (sequence) y las instrucciones de cada parámetro
- Agregado action_regenerate_results() para regenerar manualmente
- Botón en la vista con confirmación para regenerar resultados
- Logging de información sobre resultados generados

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 12:40:44 -06:00
Luis Ernesto Portillo Zaldivar
5bee8e79df feat(#51): Task 5 completada - Modificar modelo lims.result
- Cambio de parameter_name (Char) a parameter_id (Many2one a lims.analysis.parameter)
- Mantener parameter_name como campo related para compatibilidad
- Agregados campos: parameter_value_type, parameter_unit, value_boolean, value_display
- Implementado _compute_applicable_range() para determinar rango según paciente
- Actualizado _compute_is_out_of_range() para usar rangos flexibles y detectar valores críticos
- Validación mejorada según tipo de parámetro
- Actualizada vista de resultados en lims.test para nuevos campos

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 12:33:20 -06:00
Luis Ernesto Portillo Zaldivar
99990bdfcc feat(#51): Task 4 completada - Agregar método _compute_age() en res.partner
- Agregado campo computado 'age' que calcula edad en años desde birthdate_date
- Agregado campo 'is_pregnant' con validación de género femenino
- Implementado método _compute_age() usando relativedelta para precisión
- Agregado método helper get_age_at_date() para cálculos en fechas específicas
- Actualizada vista de pacientes para mostrar edad y estado de embarazo
- Validación que previene marcar embarazo en género masculino

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 11:56:50 -06:00
Luis Ernesto Portillo Zaldivar
bd0daf3da7 feat(#51): Task 3 completada - Crear modelo lims.parameter.range
- Creado modelo lims.parameter.range para rangos de referencia flexibles
- Campos de condiciones: gender, age_min/max, pregnant
- Campos de valores: normal_min/max, critical_min/max
- Métodos helper: is_value_normal(), is_value_critical(), get_value_status()
- Múltiples validaciones para garantizar consistencia de datos
- Vistas con filtros por edad, género y condiciones especiales
- Actualizado analysis_parameter con rangos en notebook

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 11:47:32 -06:00
Luis Ernesto Portillo Zaldivar
92f8894164 feat(#51): Task 2 completada - Crear modelo product.template.parameter
- Creado modelo product.template.parameter para asociar parámetros a análisis
- Campos: sequence, required, instructions
- Relación Many2one con analysis.parameter y product.template
- Agregadas vistas embebidas en product.template
- Actualizado analysis.parameter con relación One2many
- Configurados permisos de seguridad

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 11:29:41 -06:00
Luis Ernesto Portillo Zaldivar
98aba1c747 feat(#51): Task 1 completada - Crear modelo lims.analysis.parameter
- Creado modelo lims.analysis.parameter con campos: name, code, value_type, unit, etc.
- Implementadas validaciones y constraints
- Creadas vistas form, list y search
- Agregado menú en Configuración
- Configurados permisos de seguridad

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 11:10:13 -06:00
Luis Ernesto Portillo Zaldivar
619c6a3afa feat(#8): Task 5 completada - Configuración de validación opcional
- Modelo res.config.settings con parámetro lims_require_validation
- Método _compute_require_validation usa la configuración
- Auto-validación cuando no se requiere validación manual
- Vista de configuración en Laboratorio > Configuración > Ajustes
- Instancia validada sin errores
2025-07-15 00:59:52 -06:00
Luis Ernesto Portillo Zaldivar
8851a8994a feat(#8): Task 3 completada - Interfaz de ingreso de resultados
- Vista formulario con lista editable de resultados
- Campos dinámicos que se ocultan según tipo de valor
- Botones de acción según estado de la prueba
- Vista lista, kanban y búsqueda implementadas
- Menú agregado en sección Laboratorio
- decoration-danger para valores fuera de rango preparado
2025-07-15 00:45:46 -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
f3443619ce feat(#32): Update sale.order views for generated samples - Task 4 completed
- Added 'Muestras Generadas' tab in sale.order form view
- Shows generated samples with barcode, type, volume, and analyses
- Added action buttons for sample workflow in the embedded list
- Added indicators in sale.order list view for lab requests and samples
- Successful test with ephemeral instance restart
2025-07-14 22:42:51 -06:00
Luis Ernesto Portillo Zaldivar
59db50b907 feat(#44): Update stock lot views to include sample type product field
- Added sample_type_product_id to list view
- Added sample_type_product_id to form view with proper readonly states
- Made container_type optional in list view and invisible when product is selected
- Both fields synchronized through model's @api.onchange method

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 20:54:19 -06:00
Luis Ernesto Portillo Zaldivar
4632a95d83 feat(#44): Update product views to include sample type relationships
- Added required_sample_type_id and sample_volume_ml fields to analysis configuration page
- Created list view for analysis products showing sample type relationship
- Created list view for sample type products
- Added is_sample_type field to product form view
- Made sample_volume_ml visible only when sample type is selected

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 20:47:50 -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
a047cd1a02 feat(#7): Implementar feedback de gestion de muestras
- Anadido catalogo de Tipos de Muestra.
- Mejorada la vista de Muestras para seleccionar el tipo.
- Creados datos de demostracion para tipos de muestra y muestras.
2025-07-14 09:09:24 -06:00
Luis Ernesto Portillo Zaldivar
bbd65ed929 feat(#7): Anadir menu para gestion de muestras 2025-07-14 08:39:46 -06:00
Luis Ernesto Portillo Zaldivar
87dd570548 feat(#7): Añadir vistas y datos para gestion de muestras
Se añaden las vistas de lista y formulario para las muestras de laboratorio, junto con un producto de servicio por defecto. Se deshabilita temporalmente la carga de datos de demostración en init_odoo.py para estabilizar el entorno de validación.
2025-07-14 08:15:58 -06:00
Luis Ernesto Portillo Zaldivar
55b399f5e4 \"feat(#6): Implementar solicitudes de laboratorio y corregir filtros\" 2025-07-14 03:10:26 -06:00
Luis Ernesto Portillo Zaldivar
f56b60ad15 \"feat(#6): Implementar solicitudes de laboratorio y corregir datos de demostracion\" 2025-07-14 02:29:38 -06:00
Luis Ernesto Portillo Zaldivar
8f9e6582be fix(#5): Corregir error de evaluacion de contexto en accion de ventana 2025-07-14 00:34:54 -06:00
Luis Ernesto Portillo Zaldivar
b78e71ac5c feat(#5): Implementar cat logo de an lisis y datos de demostraci¢n 2025-07-14 00:12:36 -06:00
Luis Ernesto Portillo Zaldivar
0eaaaef98d feat(#5): Implementar catálogo de análisis clínicos
- Se extiende el modelo product.template para incluir análisis.
- Se crea el modelo para rangos de referencia (lims.analysis.range).
- Se definen permisos de seguridad para el nuevo modelo.
- Se crean las vistas de formulario y lista necesarias.
- Se añade el menú 'Catálogo de Análisis' en Configuración.
- Se actualiza la guía de desarrollo en GEMINI.md con las nuevas convenciones de Odoo 18.
2025-07-13 23:45:32 -06:00
Luis Ernesto Portillo Zaldivar
3dd835dfcc \"feat(#4): A¤adir men£ y vista para la gesti¢n de doctores\" 2025-07-13 22:52:19 -06:00
Luis Ernesto Portillo Zaldivar
ccb8a447d8 fix(#4): Corregir errores de vistas y menús en Odoo 18
Se solucionaron los problemas de inicialización y visualización
relacionados con las vistas de árbol y las definiciones de menú
en Odoo 18.

- Se actualizó la sintaxis de la vista de árbol de <tree> a <list>.
- Se corrigió el 'view_mode' en la acción de ventana a 'list,form'.
- Se ajustó el orden de carga de las vistas en __manifest__.py.
- Se eliminaron dependencias de módulos no utilizados.
2025-07-13 22:44:36 -06:00
Luis Ernesto Portillo Zaldivar
e9ffe7a4bf \"feat(#4): A¤ade gesti¢n de relaci¢n tutor-paciente\" 2025-07-13 22:06:54 -06:00
Luis Ernesto Portillo Zaldivar
da27d0bc83 \"feat(#4): A¤ade l¢gica de autogeneraci¢n y campo de origen\" 2025-07-13 21:16:10 -06:00
Luis Ernesto Portillo Zaldivar
aef6e49c50 \"feat(#4): Implementa vista y campos cl¡nicos en res.partner\" 2025-07-13 20:47:21 -06:00