Vertragsverwaltung - Filter korrigiert fuer aktive und inaktive

Mitarbeiter
This commit is contained in:
Andreas Österreicher
2025-09-05 12:45:39 +02:00
parent 1bb10ddeb1
commit 4099d91a1b
6 changed files with 157 additions and 167 deletions
@@ -4,20 +4,24 @@ $filterCmptArray = array(
'datasetName' => 'vertragsverwaltung',
'query' => '
SELECT
*
uid,
person_id,
vorname,
nachname,
gebdatum,
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,
CASE
WHEN b.aktiv = true THEN \'aktiv\'
END AS "aktiv_status",
b.aktiv
FROM
hr.tbl_dienstverhaeltnis d
@@ -25,29 +29,8 @@ $filterCmptArray = array(
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
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
GROUP BY b.uid, p.person_id, p.vorname, p.nachname, b.aktiv
) as vertragsdaten
',
'requiredPermissions' => 'vertrag/mitarbeiter'
);
+11
View File
@@ -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')
)
);
@@ -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: '<div>&sum; <span id="search_count"></span> / <span id="total_count"></span></div>',
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,6 +136,8 @@ export default {
},
methods: {
rowSelectionChanged(data) {
if(typeof data[0] != 'undefined')
{
this.selectedPerson = data[0].person_id;
this.selectedUid = data[0].uid;
@@ -165,10 +145,10 @@ export default {
person_id: this.selectedPerson,
uid: this.selectedUid
});
}
},
},
template: `
<core-filter-cmpt
ref="table"
:tabulator-options="tabulatorOptions"
@@ -177,11 +157,5 @@ export default {
:side-menu="false"
>
</core-filter-cmpt>
<Teleport v-for="data in tabulatorData" :key="data.uid" :to="data.emailDomain">
{{domain}}
</Teleport>
`
}
+5 -5
View File
@@ -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: [
{
@@ -708,4 +709,3 @@ export default {
</div>`
}
@@ -45,7 +45,7 @@ export default {
<!-- Navigation component -->
<core-navigation-cmpt/>
<div class="vv">
<div id="content">
<vertical-split ref="vsplit">
<template #top>
<div class="d-flex flex-column" style="height: 100%;">
+38 -16
View File
@@ -1561,38 +1561,60 @@ $filters = array(
array(
'app' => 'core',
'dataset_name' => 'vertragsverwaltung',
'filter_kurzbz' => 'Vertragsverwaltung',
'description' => '{Vertragsverwaltung}',
'filter_kurzbz' => 'VertragsverwaltungAktiv',
'description' => '{Aktive Mitarbeiter}',
'sort' => 1,
'default_filter' => true,
'filter' => '
{
"name": "MA Vertragsverwaltung (aktiv/all)",
"name": "Aktive Mitarbeiter",
"columns": [
{"name": "UID"},
{"name": "PersonId"},
{"name": "Nachname"},
{"name": "Vorname"},
{"name": "uid"},
{"name": "person_id"},
{"name": "nachname"},
{"name": "vorname"},
{"name": "aktiv"},
{"name": "Geburtsdatum"},
{"name": "Unternehmen"},
{"name": "Firma"},
{"name": "Vertragsarten"},
{"name": "IDs Dienstverhältnis"},
{"name": "email"},
{"name": "aktiv_status"}
{"name": "gebdatum"},
{"name": "unternehmen"},
{"name": "vertragsarten"},
{"name": "ids"}
],
"filters": [
{
"name": "aktiv_status",
"name": "aktiv",
"option": "",
"operation": "equal",
"condition": "aktiv"
"condition": "true"
}
]
}',
'oe_kurzbz' => null,
),
array(
'app' => 'core',
'dataset_name' => 'vertragsverwaltung',
'filter_kurzbz' => 'VertragsverwaltungAlle',
'description' => '{Alle Mitarbeiter}',
'sort' => 1,
'default_filter' => false,
'filter' => '
{
"name": "Alle Mitarbeiter",
"columns": [
{"name": "uid"},
{"name": "person_id"},
{"name": "nachname"},
{"name": "vorname"},
{"name": "aktiv"},
{"name": "gebdatum"},
{"name": "unternehmen"},
{"name": "vertragsarten"},
{"name": "ids"}
],
"filters": []
}',
'oe_kurzbz' => null,
),
);
// Loop through the filters array