import openpyxl
import sys

def get_safe_float(val):
    if val is None:
        return 0.0
    try:
        return float(val)
    except ValueError:
        return 0.0

def get_safe_str(val):
    if val is None:
        return ""
    return str(val).strip().replace("'", "''")

try:
    wb = openpyxl.load_workbook('FLUJO DE CAJA 2025.xlsx', read_only=True, data_only=True)
    ws = wb.active
    
    # Tables
    t_items = "flujo_items"
    t_vals = "flujo_valores"
    
    # Create Table SQL
    create_sql = f"""
DROP TABLE IF EXISTS {t_vals};
DROP TABLE IF EXISTS {t_items};

CREATE TABLE IF NOT EXISTS {t_items} (
    id INT AUTO_INCREMENT PRIMARY KEY,
    descripcion VARCHAR(255)
);

CREATE TABLE IF NOT EXISTS {t_vals} (
    id INT AUTO_INCREMENT PRIMARY KEY,
    flujo_item_id INT,
    clave VARCHAR(50),
    valor DECIMAL(10,2),
    FOREIGN KEY (flujo_item_id) REFERENCES {t_items}(id) ON DELETE CASCADE
);
"""
    
    print(create_sql)
    
    print(f"INSERT INTO {t_items} (id, descripcion) VALUES")
    
    items_list = []
    vals_list = []
    
    current_id = 0
    
    # Column keys strictly ordered as in Excel
    keys = ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'escenario_1', 'escenario_2', 'promedio']

    # Skip header row (row 1)
    for row in ws.iter_rows(min_row=2, values_only=True):
        desc = row[0]
        if not desc:
            continue
            
        val_desc = get_safe_str(desc)
        if val_desc.upper() == "TOTALES":
            continue

        current_id += 1
        items_list.append(f"({current_id}, '{val_desc}')")
        
        # Process values
        raw_vals = [get_safe_float(row[i]) for i in range(1, 14)] 
        
        for idx, val in enumerate(raw_vals):
            if idx < len(keys):
                k = keys[idx]
                vals_list.append(f"({current_id}, '{k}', {val})")

    if items_list:
        print(",\n".join(items_list) + ";")
        
        print(f"\nINSERT INTO {t_vals} (flujo_item_id, clave, valor) VALUES")
        print(",\n".join(vals_list) + ";")
        
    else:
        print("-- No rows found")

except Exception as e:
    sys.stderr.write(f"Error: {e}\n")
    sys.exit(1)
