From 4099d91a1bb9d331d6acfc9b25179dc74dca6935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 5 Sep 2025 12:45:39 +0200 Subject: [PATCH] Vertragsverwaltung - Filter korrigiert fuer aktive und inaktive Mitarbeiter --- .../components/filters/Vertragsverwaltung.php | 51 +++---- application/config/navigation.php | 11 ++ .../components/Vertraege/MitarbeiterHeader.js | 46 ++----- public/js/components/Vertraege/Vertraege.js | 34 ++--- .../Vertraege/Vertragsverwaltung.js | 56 ++++---- system/filtersupdate.php | 126 ++++++++++-------- 6 files changed, 157 insertions(+), 167 deletions(-) diff --git a/application/components/filters/Vertragsverwaltung.php b/application/components/filters/Vertragsverwaltung.php index d759f9563..b96aee8ea 100644 --- a/application/components/filters/Vertragsverwaltung.php +++ b/application/components/filters/Vertragsverwaltung.php @@ -4,50 +4,33 @@ $filterCmptArray = array( 'datasetName' => 'vertragsverwaltung', 'query' => ' SELECT - * - FROM - ( - SELECT - b.uid , p.person_id, - p.vorname, p.nachname, + uid, + person_id, + vorname, + nachname, gebdatum, - COALESCE(b.alias, b.uid) AS email, - STRING_AGG(DISTINCT va.bezeichnung, \', \') AS Vertragsarten, - STRING_AGG(DISTINCT u.bezeichnung, \', \') AS Unternehmen, - STRING_AGG(d.dienstverhaeltnis_id::TEXT, \', \') AS ids, - CASE - WHEN b.aktiv = true THEN \'aktiv\' - END AS "aktiv_status", - b.aktiv - FROM - hr.tbl_dienstverhaeltnis d - JOIN public.tbl_benutzer b ON d.mitarbeiter_uid = b.uid - JOIN public.tbl_person p ON p.person_id = b.person_id - JOIN public.tbl_organisationseinheit u ON d.oe_kurzbz = u.oe_kurzbz - JOIN hr.tbl_vertragsart va ON d.vertragsart_kurzbz = va.vertragsart_kurzbz - WHERE b.aktiv = true - GROUP BY b.uid, p.person_id, p.vorname, p.nachname, b.alias, b.aktiv - - UNION ALL - + vertragsarten, + unternehmen, + ids, + aktiv + FROM + ( SELECT b.uid , p.person_id, p.vorname, p.nachname, gebdatum, - COALESCE(b.alias, b.uid) AS email, STRING_AGG(DISTINCT va.bezeichnung, \', \') AS Vertragsarten, STRING_AGG(DISTINCT u.bezeichnung, \', \') AS Unternehmen, STRING_AGG(d.dienstverhaeltnis_id::TEXT, \', \') AS ids, - \'all\' AS "aktiv_status", b.aktiv FROM hr.tbl_dienstverhaeltnis d - JOIN public.tbl_benutzer b ON d.mitarbeiter_uid = b.uid - JOIN public.tbl_person p ON p.person_id = b.person_id - JOIN public.tbl_organisationseinheit u ON d.oe_kurzbz = u.oe_kurzbz - JOIN hr.tbl_vertragsart va ON d.vertragsart_kurzbz = va.vertragsart_kurzbz - GROUP BY b.uid, p.person_id, p.vorname, p.nachname, b.alias - ORDER BY nachname, vorname) a + JOIN public.tbl_benutzer b ON d.mitarbeiter_uid = b.uid + JOIN public.tbl_person p ON p.person_id = b.person_id + JOIN public.tbl_organisationseinheit u ON d.oe_kurzbz = u.oe_kurzbz + JOIN hr.tbl_vertragsart va ON d.vertragsart_kurzbz = va.vertragsart_kurzbz + GROUP BY b.uid, p.person_id, p.vorname, p.nachname, b.aktiv + ) as vertragsdaten ', 'requiredPermissions' => 'vertrag/mitarbeiter' - ); \ No newline at end of file + ); diff --git a/application/config/navigation.php b/application/config/navigation.php index 752a70464..b4b0aa51c 100644 --- a/application/config/navigation.php +++ b/application/config/navigation.php @@ -334,3 +334,14 @@ $config['navigation_menu']['system/issues/Issues/*'] = array( ), ); + +$config['navigation_menu']['vertragsverwaltung/*'] = array( + 'vertragsverwaltung' => array( + 'link' => site_url('vertragsverwaltung'), + 'description' => 'Vertragsverwaltung', + 'icon' => 'home', + 'sort' => 100, + 'target' => '_blank', + 'requiredPermissions' => array('vertrag/mitarbeiter:r') + ) +); diff --git a/public/js/components/Vertraege/MitarbeiterHeader.js b/public/js/components/Vertraege/MitarbeiterHeader.js index 52fb244c3..31f9fe96d 100644 --- a/public/js/components/Vertraege/MitarbeiterHeader.js +++ b/public/js/components/Vertraege/MitarbeiterHeader.js @@ -61,24 +61,9 @@ export default { {title: "Unternehmen", field: "unternehmen", visible: false, headerFilter: "input"}, {title: "Vertragsarten", field: "vertragsarten", visible: true, headerFilter: "input"}, {title: "Ids Dienstverträge", field: "ids", visible: true, headerFilter: "input"}, - { - title: "email", field: "email", headerFilter: "input", - visible: false, - formatter: (cell, formatterParams, onRendered) => { - - let email = cell.getValue() + '@'; - - let container = document.createElement('div'); - container.className = "d-flex"; - container.append(email); - container.append(cell.getData().emailDomain); - return container; - }, - }, - {title: "Filter aktiv/all", field: "aktiv_status", visible:false, headerFilter: "input"} ], layout: 'fitColumns', - persistenceID: 'core-mitarbeiter_20250901', + persistenceID: 'core-mitarbeiter_20250901-2', footerElement: '
/
', selectableRangeMode: 'click', selectable: true, @@ -91,9 +76,7 @@ export default { { event: 'tableBuilt', handler: async() => { - await this.$p.loadCategory(['person', 'global', 'vertrag']); - let cm = this.$refs.table.tabulator.columnManager; cm.getColumnByField('uid').component.updateDefinition({ @@ -144,11 +127,6 @@ export default { handler: (data) => { let el = document.getElementById("total_count"); el.innerHTML = data.length; - - this.tabulatorData = data.map(item => { - item.emailDomain = document.createElement('div'); - return item; - }); } }, ], @@ -158,17 +136,19 @@ export default { }, methods: { rowSelectionChanged(data) { - this.selectedPerson = data[0].person_id; - this.selectedUid = data[0].uid; + if(typeof data[0] != 'undefined') + { + this.selectedPerson = data[0].person_id; + this.selectedUid = data[0].uid; - this.$emit('selectionChanged', { - person_id: this.selectedPerson, - uid: this.selectedUid - }); + this.$emit('selectionChanged', { + person_id: this.selectedPerson, + uid: this.selectedUid + }); + } }, }, template: ` - - - - {{domain}} - - ` } - diff --git a/public/js/components/Vertraege/Vertraege.js b/public/js/components/Vertraege/Vertraege.js index d075ddd62..2b9531a07 100644 --- a/public/js/components/Vertraege/Vertraege.js +++ b/public/js/components/Vertraege/Vertraege.js @@ -56,9 +56,9 @@ export default { ), ajaxResponse: (url, params, response) => response.data, columns: [ - {title: "Bezeichnung", field: "bezeichnung", width: 150}, + {title: "Bezeichnung", field: "bezeichnung", width: 300}, { - title: "Betrag", field: "betrag", width: 150, + title: "Betrag", field: "betrag", width: 100, formatter: function (cell) { let value = cell.getValue(); @@ -69,7 +69,7 @@ export default { } }, {title: "Vertragstyp", field: "vertragstyp_bezeichnung", width: 125}, - {title: "Status", field: "status"}, + {title: "Status", field: "status", width: 100}, { title: "Vertragsdatum", field: "vertragsdatum", @@ -137,9 +137,10 @@ export default { persistence: { sort: true, page: true, + columns: true, filter: false //to avoids js errors }, - persistenceID: 'core-contracts' + persistenceID: 'core-contracts-20250905' }, tabulatorEvents: [ { @@ -522,10 +523,10 @@ export default { }, template: `
- + - + -
- +
+
- + - +
@@ -587,7 +588,7 @@ export default {
-
+
- + - +
- +
- +