#!/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)}")