#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Script para actualizar la fecha de nacimiento de los pacientes existentes """ import odoo from datetime import date, timedelta import random def update_patient_birthdates(env): """Actualizar fechas de nacimiento de pacientes existentes""" # Buscar pacientes sin fecha de nacimiento patients = env['res.partner'].search([ ('is_patient', '=', True), ('birthdate_date', '=', False) ]) if patients: print(f"Actualizando {len(patients)} pacientes sin fecha de nacimiento...") for patient in patients: # Generar una edad aleatoria entre 20 y 70 años age_years = random.randint(20, 70) birthdate = date.today() - timedelta(days=age_years * 365 + random.randint(0, 364)) # Actualizar fecha de nacimiento patient.write({ 'birthdate_date': birthdate.strftime('%Y-%m-%d') }) print(f" - {patient.name}: {birthdate.strftime('%Y-%m-%d')} ({age_years} años)") else: print("Todos los pacientes ya tienen fecha de nacimiento.") return patients if __name__ == '__main__': # Configuración db_name = 'lims_demo' # Conectar a Odoo odoo.tools.config.parse_config(['--database', db_name]) # Obtener el registro de la base de datos registry = odoo.registry(db_name) # Crear cursor y environment with registry.cursor() as cr: env = odoo.api.Environment(cr, odoo.SUPERUSER_ID, {}) try: # Actualizar pacientes patients = update_patient_birthdates(env) # Confirmar cambios cr.commit() if patients: print(f"\n✅ Se actualizaron {len(patients)} pacientes con fecha de nacimiento.") except Exception as e: cr.rollback() print(f"\n❌ Error: {str(e)}")