Adzacam commited on
Commit
ee2a57b
·
1 Parent(s): f258782

feat: implement automatic creation of default financial category for budget payloads in app sync process

Browse files
Files changed (1) hide show
  1. app.py +10 -0
app.py CHANGED
@@ -512,6 +512,7 @@ def procesar_lote_tabular(payloads: List[ProcessSheetPayload], db: Session = Dep
512
  tiempos_db = {t.id_tiempo for t in db.query(DimTiempo).all()}
513
  docs_db = {d.id_documento for d in db.query(DimOrigenDocumental).all()}
514
  users_db = {u.id for u in db.query(Users).all()}
 
515
 
516
  nuevos_estudiantes = []
517
  nuevos_docentes = []
@@ -519,6 +520,7 @@ def procesar_lote_tabular(payloads: List[ProcessSheetPayload], db: Session = Dep
519
  nuevos_tiempos = []
520
  nuevos_docs = []
521
  nuevos_users = []
 
522
 
523
  hechos_marketing = []
524
  hechos_surveys = []
@@ -542,6 +544,13 @@ def procesar_lote_tabular(payloads: List[ProcessSheetPayload], db: Session = Dep
542
  if payload.id_usuario not in users_db:
543
  nuevos_users.append(Users(id=payload.id_usuario, username=f"sistema_{payload.id_usuario}", hashed_password="$placeholder$", role="admin"))
544
  users_db.add(payload.id_usuario)
 
 
 
 
 
 
 
545
 
546
  # Insertar nuevas dimensiones en bloque si existen
547
  if nuevos_docentes: db.add_all(nuevos_docentes)
@@ -549,6 +558,7 @@ def procesar_lote_tabular(payloads: List[ProcessSheetPayload], db: Session = Dep
549
  if nuevos_tiempos: db.add_all(nuevos_tiempos)
550
  if nuevos_docs: db.add_all(nuevos_docs)
551
  if nuevos_users: db.add_all(nuevos_users)
 
552
  db.flush()
553
 
554
  for payload in payloads:
 
512
  tiempos_db = {t.id_tiempo for t in db.query(DimTiempo).all()}
513
  docs_db = {d.id_documento for d in db.query(DimOrigenDocumental).all()}
514
  users_db = {u.id for u in db.query(Users).all()}
515
+ categorias_db = {c.id_categoria for c in db.query(DimCategoriaFinanciera).all()}
516
 
517
  nuevos_estudiantes = []
518
  nuevos_docentes = []
 
520
  nuevos_tiempos = []
521
  nuevos_docs = []
522
  nuevos_users = []
523
+ nuevas_categorias = []
524
 
525
  hechos_marketing = []
526
  hechos_surveys = []
 
544
  if payload.id_usuario not in users_db:
545
  nuevos_users.append(Users(id=payload.id_usuario, username=f"sistema_{payload.id_usuario}", hashed_password="$placeholder$", role="admin"))
546
  users_db.add(payload.id_usuario)
547
+
548
+ # Para presupuestos asumimos categoría base por defecto (ID 1) si no existe
549
+ area_check = getattr(payload, 'tipo_fuente', 'ACADEMIC')
550
+ if not area_check: area_check = 'ACADEMIC'
551
+ if area_check == 'BUDGET' and 1 not in categorias_db:
552
+ nuevas_categorias.append(DimCategoriaFinanciera(id_categoria=1, nombre_categoria="Presupuesto General", tipo="EGRESO"))
553
+ categorias_db.add(1)
554
 
555
  # Insertar nuevas dimensiones en bloque si existen
556
  if nuevos_docentes: db.add_all(nuevos_docentes)
 
558
  if nuevos_tiempos: db.add_all(nuevos_tiempos)
559
  if nuevos_docs: db.add_all(nuevos_docs)
560
  if nuevos_users: db.add_all(nuevos_users)
561
+ if nuevas_categorias: db.add_all(nuevas_categorias)
562
  db.flush()
563
 
564
  for payload in payloads: