linking of consultation processes to entities in the database (not tested yet)

This commit is contained in:
2026-07-22 10:45:18 +02:00
parent 1cab78b2b4
commit c1843702f8
2 changed files with 32 additions and 17 deletions
+18 -1
View File
@@ -695,6 +695,23 @@ def page_consulting_linking_persons(
return linking_entries
# TODO wrap result
def page_consulting_eastablish_link(
vorgang_id: ConsId,
un_id: RecId | None,
pers_id: RecId | None,
) -> None:
stmt = (
sa.update(db.beratung_vorgang)
.where(db.beratung_vorgang.c.vorgang_id == vorgang_id)
.values(un_id=un_id, pers_id=pers_id)
)
with db.ENGINE.begin() as conn:
conn.execute(stmt)
def companyprofile_page_get_consultations(
un_id: RecId,
) -> CompanyProfileConsultations:
@@ -748,7 +765,7 @@ def companyprofile_page_get_consultations(
# // initial recording interaction
@wrap_result(10)
# TODO wrap result
def initrec_link_person_company(
un_id: RecId,
pers_id: RecId,
+14 -16
View File
@@ -4317,34 +4317,32 @@ class Page_Consulting(QWidget):
)
dialog = Page_Consulting_LinkingDialog(dialog_state, parent=self)
# .exec() öffnet das Fenster modal (blockiert das Hauptfenster)
# .exec() blocks main window
if dialog.exec() == QDialog.DialogCode.Accepted:
# Hier hast du am Ende beide (oder nur eine) Entitäten auswertbar vorliegen:
state = dialog.get_state()
un_id = state.un_id
pers_id = state.pers_id
dialog_state = dialog.get_state()
self.STATE.un_id = dialog_state.un_id
self.STATE.pers_id = dialog_state.pers_id
# TODO add infos to DB table "Beratung_Vorgang"
assert self.STATE.vorgang_id is not None, (
"cannot link consulting process which is not already saved"
)
# firma = dialog.gewaehltes_unternehmen
# person = dialog.gewaehlte_person
# comp_name = firma["name"] if firma else "Keine"
# person_name = person["name"] if person else "Keine"
# TODO error handling
backend.page_consulting_eastablish_link(
vorgang_id=self.STATE.vorgang_id,
un_id=self.STATE.un_id,
pers_id=self.STATE.pers_id,
)
logger_page_consulting.info(
"[Consulting Page] Company selected (ID): %s, Person selected (ID): %s",
un_id,
pers_id,
self.STATE.un_id,
self.STATE.pers_id,
)
# 1. TODO: Datenbank-Update ausführen (Fremdschlüssel setzen)
# 2. Banner ausblenden: self.banner.hide()
else:
logger_page_consulting.info("[Consulting Page] Verknüpfung abgebrochen.")
self._sync_state_to_GUI("banners")
def _clear_info_banners(self) -> None:
while self.info_banners:
banner = self.info_banners[0]