Spaces:
Sleeping
Sleeping
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
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:
|