From c1843702f88b03b66e167cbfea67c9a055135490 Mon Sep 17 00:00:00 2001 From: foefl Date: Wed, 22 Jul 2026 10:45:18 +0200 Subject: [PATCH] linking of consultation processes to entities in the database (not tested yet) --- src/wce_crm/backend/backend.py | 19 ++++++++++++++++++- src/wce_crm/gui.py | 30 ++++++++++++++---------------- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/src/wce_crm/backend/backend.py b/src/wce_crm/backend/backend.py index 361d149..bed6f23 100644 --- a/src/wce_crm/backend/backend.py +++ b/src/wce_crm/backend/backend.py @@ -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, diff --git a/src/wce_crm/gui.py b/src/wce_crm/gui.py index f607776..873e506 100644 --- a/src/wce_crm/gui.py +++ b/src/wce_crm/gui.py @@ -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]