85 lines
3.2 KiB
Python
85 lines
3.2 KiB
Python
import os
|
|
import django
|
|
import sys
|
|
|
|
# Set up Django environment
|
|
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
|
|
django.setup()
|
|
|
|
from expenses.models import Category
|
|
|
|
def run_seed():
|
|
print("Clearing existing categories to ensure clean state...")
|
|
Category.objects.all().delete()
|
|
|
|
print("Seeding professional CBS categories...")
|
|
|
|
# Define the structure
|
|
cbs_structure = {
|
|
"1000": {
|
|
"name": "Recursos Humanos y Especialidades",
|
|
"children": {
|
|
"1100": "Personal Staff Core (Fijo / Sueldos Base)",
|
|
"1201": "Electricidad de Potencia e Infraestructura",
|
|
"1202": "Automatización y Control Industrial",
|
|
"1203": "Domótica e Inmótica (BMS & Climatización)",
|
|
"1204": "Electrónica y Sistemas de Hardware (PCB / Firmware)",
|
|
"1205": "Redes, Conectividad e Informática (TI & Ciberseguridad)",
|
|
"1206": "Tecnologías Inmersivas y Gemelos Digitales (VR/AR/LiDAR)",
|
|
"1207": "Gestión Administrativa, Dir. de Proyectos (PMP/Agile)"
|
|
}
|
|
},
|
|
"2000": {
|
|
"name": "Materiales e Insumos",
|
|
"children": {
|
|
"2100": "Componentes Electrónicos Prototipado",
|
|
"2200": "Equipamiento Industrial de Campo",
|
|
"2300": "Materiales Eléctricos y de Montaje",
|
|
"2400": "Insumos de Oficina, Aseo, Cafetería y Papelería"
|
|
}
|
|
},
|
|
"3000": {
|
|
"name": "Logística y Desplazamiento Terreno",
|
|
"children": {
|
|
"3101": "Combustibles / Bencina",
|
|
"3102": "Arriendo Vehículos 4x4",
|
|
"3103": "Pasajes de Bus Interurbano",
|
|
"3104": "Pasajes de Micro / Urbano",
|
|
"3105": "Pasajes de Colectivos / Taxis",
|
|
"3106": "Uber / Cabify / Didi",
|
|
"3107": "Peajes & Tag Nacionales",
|
|
"3108": "Reembolso Kilometraje Particular",
|
|
"3200": "Viáticos Alimentación y Alojamiento Terreno"
|
|
}
|
|
},
|
|
"4000": {
|
|
"name": "Software y Herramientas Digitales",
|
|
"children": {
|
|
"4100": "Licencias de Ingeniería & Diseño (Altium/Unity/Unreal)",
|
|
"4200": "Infraestructura y Servidores Cloud (AWS/Azure)",
|
|
"4300": "Herramientas de Gestión de Proyectos / Software General"
|
|
}
|
|
}
|
|
}
|
|
|
|
# Create Parents and Children
|
|
for p_code, p_data in cbs_structure.items():
|
|
parent_cat, _ = Category.objects.get_or_create(
|
|
code=p_code,
|
|
defaults={'name': p_data['name'], 'description': 'Partida Principal (Macro-categoría)'}
|
|
)
|
|
print(f"Created Parent: {parent_cat.code} - {parent_cat.name}")
|
|
|
|
for c_code, c_name in p_data['children'].items():
|
|
child_cat, _ = Category.objects.get_or_create(
|
|
code=c_code,
|
|
defaults={'name': c_name, 'parent': parent_cat}
|
|
)
|
|
print(f" Created Child: {child_cat.code} - {child_cat.name}")
|
|
|
|
print("✅ CBS Seeding completed successfully.")
|
|
|
|
if __name__ == "__main__":
|
|
run_seed()
|