
import uuid
import random
from datetime import datetime, timedelta

# Constants
PERIOD_ID = 'ea6ce3ec-3b2f-4050-b9cc-517883d5755e'
USER_ID = '69abe0de-7812-41bd-9124-6a7238aee7d1'
BRANCH_ID = '69abe0de-7812-41bd-9124-6a7238aee7d1'
START_DATE = datetime(2025, 1, 1)

# Accounts (UUIDs from core_accounting_plan.sql)
DEBITS = [
    '262c246f-73e2-443d-b6db-15ee4a854cf6', # SERVICIO DE AGUA
    '13a48a81-400d-45e4-903c-1d5e03b13fd5', # COMBUSTIBLE
    '10d53022-f394-4c70-ba7d-309c0f6dd54a', # MATERIAL DE ESCRITORIO
    '6b061a12-ff2d-4a7b-b656-c1c168a87a34', # PERSONAL A CONTRATO
    '50bb7a58-24f2-4154-8208-794f775843f2', # DOTACIÓN Y SUMINISTRO
]

CREDITS = [
    '50370f99-e6e4-4a11-9f09-5f0418e6108d', # CAJA CHICA
    '04d15183-a75f-4e7c-a154-9f7a930dcc5e', # CUENTAS POR PAGAR (Assume selectable or use child)
    '1e8787f8-81d3-432e-9507-7145f86c1cf2', # PRIMAS DE SEGUROS POR PAGAR
    '3272125b-a5c6-4001-a19b-b9f3f12673ce', # INTERESES COMERCIALES POR PAGAR
]

CREDIT_SAFE = '50370f99-e6e4-4a11-9f09-5f0418e6108d'

entry_sql_lines = []
detail_sql_lines = []
detail_id_counter = 50 

entry_sql_lines.append("INSERT INTO `core_accounting_entry` (`relative`, `users_sid`, `global_branch_office_id`, `accounting_period_id`, `entry_type`, `entry_number`, `entry_date`, `currency_rate`, `ufv_rate`, `gloss`, `document_reference`, `status`, `created_by`, `created_at`) VALUES")
detail_sql_lines.append("INSERT INTO `core_accounting_entry_details` (`id`, `entry_relative`, `account_relative`, `auxiliary_id`, `debit`, `credit`, `debit_foreign`, `credit_foreign`) VALUES")

entries_batch = []
details_batch = []

# CORRECTED TYPES: 'DIARIO' removed, replaced with 'AJUSTE' to match enum
types = ['INGRESO', 'EGRESO', 'TRASPASO', 'AJUSTE']

for day in range(31):
    current_date = START_DATE + timedelta(days=day)
    date_str = current_date.strftime('%Y-%m-%d')
    date_formatted = current_date.strftime('%Y-%m%d')
    
    for i in range(4): # 4 entries per day
        entry_uuid = str(uuid.uuid4())
        entry_num_seq = str(i + 1).zfill(3)
        
        entry_number = f"E-{date_formatted}-{entry_num_seq}"
        entry_type = types[i % 4]
        gloss = f"Registro {entry_type} dia {date_str} Nro {i+1}"
        
        entry_val = f"('{entry_uuid}', '{USER_ID}', '{BRANCH_ID}', '{PERIOD_ID}', '{entry_type}', '{entry_number}', '{date_str}', '6.960000', '2.50000', '{gloss}', NULL, 'D', '{USER_ID}', NOW())"
        entries_batch.append(entry_val)
        
        # Details
        amount = random.randint(100, 5000)
        amount_fmt = f"{amount:.2f}"
        
        # Debit
        debit_acc = DEBITS[(day + i) % len(DEBITS)]
        detail_id_counter += 1
        d_val = f"({detail_id_counter}, '{entry_uuid}', '{debit_acc}', NULL, '{amount_fmt}', '0.00', '0.00', '0.00')"
        details_batch.append(d_val)
        
        # Credit
        credit_acc = CREDIT_SAFE
        detail_id_counter += 1
        c_val = f"({detail_id_counter}, '{entry_uuid}', '{credit_acc}', NULL, '0.00', '{amount_fmt}', '0.00', '0.00')"
        details_batch.append(c_val)

entry_sql = entry_sql_lines[0] + "\n" + ",\n".join(entries_batch) + ";"
detail_sql = detail_sql_lines[0] + "\n" + ",\n".join(details_batch) + ";"

# Write Files
with open('database/core_accounting_entry.sql', 'w') as f:
    f.write(entry_sql)

with open('database/core_accounting_entry_details.sql', 'w') as f:
    f.write(detail_sql)

print("Generated SQL files with corrected types.")
