generated from dopt-python/py311
adapted linking dialog for consulting sessions
This commit is contained in:
+128
-146
@@ -2907,9 +2907,9 @@ class Page_NewEntry(QWidget):
|
||||
|
||||
back_requested = Signal() # Signal back button
|
||||
# TODO re-enable with correct settings
|
||||
# company_requested = Signal(Page_InitRecCompany_State) # Signal "Unternehmen"
|
||||
# person_requested = Signal(Page_InitRecPerson_State) # Signal "Individualperson"
|
||||
consulting_requested = Signal(Page_Consulting_State) # Signal "Beratungsgespräch"
|
||||
# company_requested = Signal(Page_InitRec_State) # Signal "Unternehmen"
|
||||
# person_requested = Signal(Page_InitRec_State) # Signal "Individualperson"
|
||||
new_consulting_requested = Signal(Page_Consulting_State) # Signal "Beratungsgespräch"
|
||||
new_initrec_requested = Signal(Page_InitRec_State) # TODO: rename
|
||||
|
||||
def __init__(
|
||||
@@ -2919,75 +2919,101 @@ class Page_NewEntry(QWidget):
|
||||
super().__init__()
|
||||
self.STATE = state
|
||||
|
||||
layout = QVBoxLayout(self)
|
||||
layout.setAlignment(Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignLeft)
|
||||
outer_layout = QHBoxLayout(self)
|
||||
layout_container = QWidget()
|
||||
layout_container.setMinimumWidth(700)
|
||||
layout_container.setMaximumWidth(1000)
|
||||
layout = QVBoxLayout(layout_container)
|
||||
|
||||
outer_layout.addStretch(1)
|
||||
outer_layout.addWidget(layout_container, stretch=100)
|
||||
# outer_layout.addWidget(scroll_area, stretch=100)
|
||||
outer_layout.addStretch(1)
|
||||
outer_layout.setAlignment(Qt.AlignmentFlag.AlignTop)
|
||||
|
||||
# Zurück-Button
|
||||
back_btn = QPushButton("← Zurück zur Übersicht")
|
||||
back_btn.setFixedWidth(200)
|
||||
back_btn.clicked.connect(lambda: self.back_requested.emit())
|
||||
|
||||
# Platzhalter für die Details
|
||||
self.title_label = QLabel("Wählen Sie den Typ der Grunderfassung")
|
||||
self.title_label.setStyleSheet(
|
||||
"font-size: 24px; font-weight: bold; margin-top: 20px;"
|
||||
)
|
||||
|
||||
title_initrec = QLabel("Grunderfassung anlegen")
|
||||
title_initrec.setStyleSheet(
|
||||
"font-size: 16px; font-weight: bold; margin-top: 20px; margin-bottom: 5px;"
|
||||
)
|
||||
btn_company = QPushButton("Unternehmen →")
|
||||
btn_company.setFixedWidth(300)
|
||||
btn_company.setFixedHeight(40)
|
||||
btn_company.clicked.connect(self._request_initrec_company)
|
||||
|
||||
btn_person = QPushButton("Individualperson →")
|
||||
btn_person.setFixedWidth(300)
|
||||
btn_person.setFixedHeight(40)
|
||||
btn_person.clicked.connect(self._request_initrec_person)
|
||||
|
||||
title_consulting = QLabel("Beratung durchführen")
|
||||
title_consulting.setStyleSheet(
|
||||
"font-size: 16px; font-weight: bold; margin-top: 20px; margin-bottom: 5px;"
|
||||
)
|
||||
btn_consulting = QPushButton("Beratungsgespräch →")
|
||||
btn_consulting.setFixedWidth(300)
|
||||
btn_consulting.setFixedHeight(40)
|
||||
btn_consulting.clicked.connect(self._request_consulting)
|
||||
|
||||
btn_newinitrec = QPushButton("NEUE GRUNDERFASSUNG →")
|
||||
btn_newinitrec.setFixedWidth(300)
|
||||
btn_newinitrec.setFixedHeight(40)
|
||||
btn_newinitrec.clicked.connect(self._request_new_initrec)
|
||||
# TODO check removal
|
||||
# btn_newinitrec = QPushButton("NEUE GRUNDERFASSUNG →")
|
||||
# btn_newinitrec.setFixedWidth(300)
|
||||
# btn_newinitrec.setFixedHeight(40)
|
||||
# btn_newinitrec.clicked.connect(self._debug_request_new_initrec)
|
||||
|
||||
layout.addWidget(back_btn)
|
||||
layout.addSpacing(15)
|
||||
layout.addWidget(self.title_label)
|
||||
layout.addSpacing(20)
|
||||
layout.addWidget(btn_newinitrec)
|
||||
layout.addSpacing(20)
|
||||
# layout.addSpacing(20)
|
||||
# layout.addWidget(btn_newinitrec)
|
||||
# layout.addSpacing(20)
|
||||
layout.addWidget(title_initrec)
|
||||
layout.addWidget(btn_company)
|
||||
layout.addWidget(btn_person)
|
||||
layout.addSpacing(10)
|
||||
layout.addWidget(title_consulting)
|
||||
layout.addWidget(btn_consulting)
|
||||
|
||||
# TODO configure correctly
|
||||
def _request_initrec_company(self) -> None:
|
||||
logger_gui.debug("[Page -- NewEntry] Call for company...")
|
||||
# ids = EntityIds(type=RecordingType.COMPANY)
|
||||
# req_state = Page_InitRecCompany_State(
|
||||
# session=self.STATE.session,
|
||||
# ids=ids,
|
||||
# # un_id=None, # TODO remove
|
||||
# locked=False,
|
||||
# )
|
||||
# logger_gui.debug("[Page -- InitRec] State to call: %s", req_state)
|
||||
# self.company_requested.emit(req_state)
|
||||
logger_gui.debug("[Page -- NewEntry] Call for person...")
|
||||
req_state = Page_InitRec_State(
|
||||
session=self.STATE.session,
|
||||
recording_type=RecordingType.WITH_COMPANY,
|
||||
form_data=Page_InitRec_Form_Data(metadata={}, person={}, company={}),
|
||||
locked=False,
|
||||
)
|
||||
logger_gui.debug("[Page -- NewEntry] State to call (IDs): %s", req_state.ids)
|
||||
self.new_initrec_requested.emit(req_state)
|
||||
|
||||
def _request_initrec_person(self) -> None:
|
||||
logger_gui.debug("[Page -- NewEntry] Call for person...")
|
||||
# ids = EntityIds(type=RecordingType.PERSON)
|
||||
# req_state = Page_InitRecPerson_State(
|
||||
# session=self.STATE.session,
|
||||
# ids=ids,
|
||||
# # pers_id=None, # TODO remove
|
||||
# locked=False,
|
||||
# )
|
||||
# logger_gui.debug("[Page -- InitRec] State to call: %s", req_state)
|
||||
# self.person_requested.emit(req_state)
|
||||
req_state = Page_InitRec_State(
|
||||
session=self.STATE.session,
|
||||
recording_type=RecordingType.WITHOUT_COMPANY,
|
||||
form_data=Page_InitRec_Form_Data(metadata={}, person={}, company={}),
|
||||
locked=False,
|
||||
)
|
||||
logger_gui.debug("[Page -- NewEntry] State to call (IDs): %s", req_state.ids)
|
||||
self.new_initrec_requested.emit(req_state)
|
||||
|
||||
def _debug_request_new_initrec(self) -> None:
|
||||
req_state = Page_InitRec_State(
|
||||
session=self.STATE.session,
|
||||
recording_type=RecordingType.WITH_COMPANY,
|
||||
form_data=Page_InitRec_Form_Data(metadata={}, person={}, company={}),
|
||||
locked=False,
|
||||
)
|
||||
logger_gui.debug("[Page -- NewEntry] State to call (IDs): %s", req_state.ids)
|
||||
self.new_initrec_requested.emit(req_state)
|
||||
|
||||
def _request_consulting(self) -> None:
|
||||
req_state = Page_Consulting_State(
|
||||
@@ -2997,17 +3023,7 @@ class Page_NewEntry(QWidget):
|
||||
locked=False,
|
||||
)
|
||||
logger_gui.debug("[Page -- InitRec] State to call: %s", req_state)
|
||||
self.consulting_requested.emit(req_state)
|
||||
|
||||
def _request_new_initrec(self) -> None:
|
||||
req_state = Page_InitRec_State(
|
||||
session=self.STATE.session,
|
||||
recording_type=RecordingType.WITH_COMPANY,
|
||||
form_data=Page_InitRec_Form_Data(metadata={}, person={}, company={}),
|
||||
locked=False,
|
||||
)
|
||||
logger_gui.debug("[Page -- NewInitRec] State to call (IDs): %s", req_state.ids)
|
||||
self.new_initrec_requested.emit(req_state)
|
||||
self.new_consulting_requested.emit(req_state)
|
||||
|
||||
def _sync_state_to_GUI(self) -> None:
|
||||
pass
|
||||
@@ -5177,46 +5193,14 @@ class Page_Consulting_LinkingDialog(QDialog):
|
||||
parent: QWidget | None = None,
|
||||
):
|
||||
super().__init__(parent)
|
||||
# State and data
|
||||
self.STATE = state
|
||||
self.all_companies = backend.page_consulting_linking_companies(None)
|
||||
self.all_persons = backend.page_consulting_linking_persons()
|
||||
|
||||
self.setWindowTitle("Beziehung verknüpfen")
|
||||
self.resize(700, 450)
|
||||
|
||||
# firmen_aus_db = [{"id": 1, "name": "Siemens AG"}, {"id": 2, "name": "Bosch GmbH"}]
|
||||
# personen_aus_db = [
|
||||
# {
|
||||
# "id": 50,
|
||||
# "name": "Max Mustermann",
|
||||
# "unternehmen_id": 1,
|
||||
# "firma_name": "Siemens AG",
|
||||
# },
|
||||
# {
|
||||
# "id": 51,
|
||||
# "name": "Erika Muster",
|
||||
# "unternehmen_id": 1,
|
||||
# "firma_name": "Siemens AG",
|
||||
# },
|
||||
# {
|
||||
# "id": 52,
|
||||
# "name": "Peter Müller",
|
||||
# "unternehmen_id": 2,
|
||||
# "firma_name": "Bosch GmbH",
|
||||
# },
|
||||
# {
|
||||
# "id": 53,
|
||||
# "name": "Freiberufler Frank",
|
||||
# "unternehmen_id": None,
|
||||
# "firma_name": None,
|
||||
# },
|
||||
# ]
|
||||
|
||||
# self.all_unternehmen = firmen_aus_db
|
||||
# self.all_personen = personen_aus_db
|
||||
|
||||
# # Rückgabewerte
|
||||
# self.gewaehltes_unternehmen = None
|
||||
# self.gewaehlte_person = None
|
||||
|
||||
# --- UI LAYOUT ---
|
||||
main_layout = QVBoxLayout(self)
|
||||
column_layout = QHBoxLayout()
|
||||
@@ -5241,7 +5225,7 @@ class Page_Consulting_LinkingDialog(QDialog):
|
||||
column_layout.addLayout(self.vbox_persons)
|
||||
main_layout.addLayout(column_layout)
|
||||
|
||||
# Unten: OK / Abbrechen Buttons
|
||||
# OK / Cancel buttons
|
||||
self.button_box = QDialogButtonBox(
|
||||
QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel
|
||||
)
|
||||
@@ -5251,10 +5235,7 @@ class Page_Consulting_LinkingDialog(QDialog):
|
||||
self.button_box.button(QDialogButtonBox.StandardButton.Cancel).setText("Abbrechen")
|
||||
main_layout.addWidget(self.button_box)
|
||||
|
||||
# initial loading
|
||||
# self._load_companies()
|
||||
# self._load_persons()
|
||||
|
||||
# TODO check removal
|
||||
# list_style = """
|
||||
# QListWidget::item:selected {
|
||||
# background-color: #0078D4; /* Blau, wenn die Liste aktiv fokussiert ist */
|
||||
@@ -5305,20 +5286,28 @@ class Page_Consulting_LinkingDialog(QDialog):
|
||||
def _sync_state_to_GUI(
|
||||
self,
|
||||
reset: bool,
|
||||
section: Literal["person_selection", "validation"] | None = None,
|
||||
section: Literal["person_selection", "company_selection", "validation"] | None = None,
|
||||
) -> None:
|
||||
if reset:
|
||||
self._reset()
|
||||
self._load_companies()
|
||||
self._load_companies_to_list(None)
|
||||
self._load_persons_to_list(None)
|
||||
|
||||
if section is None or section == "person_selection":
|
||||
if self.STATE.beratungs_typ is ConsultingType.PAUSCHAL:
|
||||
self._enable_person_selection(False)
|
||||
elif self.STATE.beratungs_typ is ConsultingType.INDIVIDUAL:
|
||||
self._enable_person_selection(True)
|
||||
self.list_persons.blockSignals(True)
|
||||
self._load_persons(self.STATE.un_id)
|
||||
self.list_persons.blockSignals(False)
|
||||
if not self.list_persons.selectedItems():
|
||||
self.list_persons.blockSignals(True)
|
||||
self._load_persons_to_list(self.STATE.un_id)
|
||||
self.list_persons.blockSignals(False)
|
||||
|
||||
if section is None or section == "company_selection":
|
||||
if not self.list_companies.selectedItems():
|
||||
self.list_companies.blockSignals(True)
|
||||
self._load_companies_to_list(self.STATE.filter_un_ids)
|
||||
self.list_companies.blockSignals(False)
|
||||
|
||||
if section is None or section == "validation":
|
||||
self._validate()
|
||||
@@ -5341,31 +5330,49 @@ class Page_Consulting_LinkingDialog(QDialog):
|
||||
else:
|
||||
self.ok_btn.setEnabled(False)
|
||||
|
||||
def _load_companies(self) -> None:
|
||||
def _reload_all_companies(self) -> None:
|
||||
self.all_companies = backend.page_consulting_linking_companies(None)
|
||||
|
||||
def _reload_all_persons(self) -> None:
|
||||
self.all_persons = backend.page_consulting_linking_persons()
|
||||
|
||||
def _load_companies_to_list(
|
||||
self,
|
||||
un_ids: set[RecId] | None,
|
||||
) -> None:
|
||||
# search_text = self.suche_firma.text().strip().lower()
|
||||
self.list_companies.clear()
|
||||
companies = backend.page_consulting_linking_companies(un_id=self.STATE.un_id)
|
||||
# TODO check reload of companies
|
||||
# companies = backend.page_consulting_linking_companies(None)
|
||||
logger_page_consulting.debug(
|
||||
"[Page Consulting -- Linking] Retrieved company entries:\n%s", companies
|
||||
"[Page Consulting -- Linking] Retrieved company entries:\n%s", self.all_companies
|
||||
)
|
||||
|
||||
for company in companies:
|
||||
for company in self.all_companies:
|
||||
if un_ids and company.un_id not in un_ids:
|
||||
continue
|
||||
|
||||
item = QListWidgetItem(company.display_name)
|
||||
item.setData(Qt.ItemDataRole.UserRole, company)
|
||||
self.list_companies.addItem(item)
|
||||
|
||||
def _load_persons(
|
||||
def _load_persons_to_list(
|
||||
self,
|
||||
un_id: RecId | None,
|
||||
) -> None:
|
||||
"""Lädt Personen. Wenn firma_id übergeben wird, wird gefiltert."""
|
||||
self.list_persons.clear()
|
||||
|
||||
persons = backend.page_consulting_linking_persons(un_id)
|
||||
# TODO check reload of persons
|
||||
# persons = backend.page_consulting_linking_persons()
|
||||
logger_page_consulting.debug(
|
||||
"[Page Consulting -- Linking] Retrieved person entries:\n%s", persons
|
||||
"[Page Consulting -- Linking] Retrieved person entries:\n%s", self.all_persons
|
||||
)
|
||||
|
||||
for person in persons:
|
||||
for person in self.all_persons:
|
||||
if un_id and un_id not in person.un_ids:
|
||||
continue
|
||||
|
||||
item = QListWidgetItem(person.display_name)
|
||||
item.setData(Qt.ItemDataRole.UserRole, person)
|
||||
self.list_persons.addItem(item)
|
||||
@@ -5386,10 +5393,6 @@ class Page_Consulting_LinkingDialog(QDialog):
|
||||
pformat(self.STATE),
|
||||
)
|
||||
self._sync_state_to_GUI(reset=False)
|
||||
# if self.STATE.beratungs_typ is ConsultingType.INDIVIDUAL:
|
||||
# self.list_persons.blockSignals(True)
|
||||
# self._load_persons(un_id=self.STATE.un_id)
|
||||
# self.list_persons.blockSignals(False)
|
||||
|
||||
def _person_selected(self) -> None:
|
||||
items = self.list_persons.selectedItems()
|
||||
@@ -5400,29 +5403,29 @@ class Page_Consulting_LinkingDialog(QDialog):
|
||||
"LinkingConsultationsEntryPerson", items[0].data(Qt.ItemDataRole.UserRole)
|
||||
)
|
||||
self.STATE.pers_id = person.pers_id
|
||||
self._sync_state_to_GUI(reset=False, section="validation")
|
||||
|
||||
# TODO this backlink is a really good idea and should be implemented
|
||||
# if person["unternehmen_id"]:
|
||||
# self.list_companies.blockSignals(True)
|
||||
#
|
||||
# for i in range(self.list_companies.count()):
|
||||
# item = self.list_companies.item(i)
|
||||
# firma_data = item.data(Qt.ItemDataRole.UserRole)
|
||||
# if firma_data["id"] == person["unternehmen_id"]:
|
||||
# item.setSelected(True)
|
||||
# self.gewaehltes_unternehmen = firma_data
|
||||
# break
|
||||
# self.list_companies.blockSignals(False)
|
||||
if person.un_ids:
|
||||
self.STATE.filter_un_ids = person.un_ids
|
||||
else:
|
||||
self.STATE.filter_un_ids = None
|
||||
|
||||
self._sync_state_to_GUI(reset=False)
|
||||
|
||||
def _clear_company_selection(self) -> None:
|
||||
logger_page_consulting.debug(
|
||||
"[Page Consulting -- Linking] Clear company selection...",
|
||||
)
|
||||
self.list_companies.clearSelection()
|
||||
self.STATE.un_id = None
|
||||
self._sync_state_to_GUI(reset=False)
|
||||
|
||||
def _clear_person_selection(self) -> None:
|
||||
logger_page_consulting.debug(
|
||||
"[Page Consulting -- Linking] Clear person selection...",
|
||||
)
|
||||
self.list_persons.clearSelection()
|
||||
self.STATE.pers_id = None
|
||||
self.STATE.filter_un_ids = None
|
||||
self._sync_state_to_GUI(reset=False)
|
||||
|
||||
def get_state(self) -> Page_Consulting_Linking_State:
|
||||
@@ -6220,8 +6223,8 @@ class MainWindow(QMainWindow):
|
||||
self.new_entry_select.back_requested.connect(self.show_main_page)
|
||||
# self.new_initrec_select.company_requested.connect(self.show_page_initrec_company)
|
||||
# self.new_initrec_select.person_requested.connect(self.show_page_initrec_person)
|
||||
self.new_entry_select.consulting_requested.connect(self.show_page_consulting)
|
||||
self.new_entry_select.new_initrec_requested.connect(self.show_page_newinitrec)
|
||||
self.new_entry_select.new_consulting_requested.connect(self.show_page_consulting)
|
||||
self.new_entry_select.new_initrec_requested.connect(self.show_page_initrec)
|
||||
self.stack.addWidget(self.new_entry_select)
|
||||
|
||||
# SITE: 'Grunderfassung'
|
||||
@@ -6232,35 +6235,13 @@ class MainWindow(QMainWindow):
|
||||
form_data=Page_InitRec_Form_Data(metadata={}, person={}, company={}),
|
||||
locked=False,
|
||||
)
|
||||
self.newinitrec = Page_InitRec(newinitrec_state)
|
||||
self.newinitrec.back_main_requested.connect(self.show_main_page)
|
||||
self.newinitrec.back_requested.connect(self.simple_go_back)
|
||||
self.newinitrec.company_profile_requested.connect(self.show_page_company_profile)
|
||||
self.initrec = Page_InitRec(newinitrec_state)
|
||||
self.initrec.back_main_requested.connect(self.show_main_page)
|
||||
self.initrec.back_requested.connect(self.simple_go_back)
|
||||
self.initrec.company_profile_requested.connect(self.show_page_company_profile)
|
||||
# self.newinitrec.update_triggered.connect(self.update_grid)
|
||||
self.stack.addWidget(self.newinitrec)
|
||||
self.stack.addWidget(self.initrec)
|
||||
|
||||
# SITE: 'Grunderfassung Unternehmen'
|
||||
# ids = EntityIds(type=RecordingType.COMPANY)
|
||||
# initrec_company_state = Page_InitRecCompany_State(
|
||||
# session=self.STATE.session, ids=ids, locked=False
|
||||
# )
|
||||
# self.initrec_company = Page_InitRecCompany(initrec_company_state)
|
||||
# self.initrec_company.back_main_requested.connect(self.show_main_page)
|
||||
# self.initrec_company.back_requested.connect(self.simple_go_back)
|
||||
# self.initrec_company.update_main_page.connect(self.update_grid)
|
||||
# self.initrec_company.initrec_person_requested.connect(self.show_page_initrec_person)
|
||||
# self.initrec_company.company_profile_requested.connect(self.show_page_company_profile)
|
||||
# self.stack.addWidget(self.initrec_company)
|
||||
# SITE: 'Grunderfassung Person'
|
||||
# ids = EntityIds(type=RecordingType.PERSON)
|
||||
# initrec_person_state = Page_InitRecPerson_State(
|
||||
# session=self.STATE.session, ids=ids, locked=False
|
||||
# )
|
||||
# self.initrec_person = Page_InitRecPerson(initrec_person_state)
|
||||
# self.initrec_person.back_main_requested.connect(self.show_main_page)
|
||||
# self.initrec_person.back_requested.connect(self.simple_go_back)
|
||||
# self.initrec_person.update_triggered.connect(self.update_grid)
|
||||
# self.stack.addWidget(self.initrec_person)
|
||||
# SITE: 'Unternehmensprofil'
|
||||
comp_profile_state = Page_CompanyProfile_State(session=self.STATE.session)
|
||||
self.company_profile = Page_CompanyProfile(comp_profile_state)
|
||||
@@ -6270,6 +6251,7 @@ class MainWindow(QMainWindow):
|
||||
self.company_profile.back_requested.connect(self.simple_go_back)
|
||||
self.company_profile.consulting_requested.connect(self.show_page_consulting)
|
||||
self.stack.addWidget(self.company_profile)
|
||||
|
||||
# SITE: 'Beratungsgespräch'
|
||||
self.consulting_page = Page_Consulting(self.STATE.session)
|
||||
self.consulting_page.back_main_requested.connect(self.show_main_page)
|
||||
@@ -6452,12 +6434,12 @@ class MainWindow(QMainWindow):
|
||||
def show_new_entry_select(self):
|
||||
self._navigate_to_target(self.new_entry_select)
|
||||
|
||||
def show_page_newinitrec(
|
||||
def show_page_initrec(
|
||||
self,
|
||||
new_state: Page_InitRec_State,
|
||||
):
|
||||
self.newinitrec.load_state(new_state)
|
||||
self._navigate_to_target(self.newinitrec)
|
||||
self.initrec.load_state(new_state)
|
||||
self._navigate_to_target(self.initrec)
|
||||
|
||||
# def show_page_initrec_company(
|
||||
# self,
|
||||
|
||||
Reference in New Issue
Block a user