mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
Vertragsverwaltung - Filter korrigiert fuer aktive und inaktive
Mitarbeiter
This commit is contained in:
@@ -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'
|
||||
);
|
||||
);
|
||||
|
||||
@@ -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>∑ <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,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: `
|
||||
|
||||
<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>
|
||||
|
||||
`
|
||||
}
|
||||
|
||||
|
||||
@@ -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: `
|
||||
<div class="core-contracts h-100 d-flex flex-column">
|
||||
|
||||
|
||||
<!-- injected print functionality for KU Linz (printHonorarvertrag) -->
|
||||
<template v-if="arraySelectedContracts.length >= 2" class="container mt-2">
|
||||
|
||||
|
||||
<div v-for="item in arraySelectedContracts" :key="item[0]">
|
||||
<input
|
||||
class="form-control"
|
||||
@@ -536,7 +537,7 @@ export default {
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<template v-if="arraySelectedContracts.length >= 2" class="d-flex">
|
||||
<div class="ms-auto mt-2">
|
||||
<button type="button" class="btn btn-secondary mx-1" @click="clearSelection()"><i class="fa fa-trash"></i></button>
|
||||
@@ -544,8 +545,8 @@ export default {
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<hr>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- filter: open means no status abgerechnet yet-->
|
||||
<div class="justify-content-end pb-3">
|
||||
<form-input
|
||||
@@ -557,7 +558,7 @@ export default {
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
|
||||
|
||||
<core-filter-cmpt
|
||||
ref="table"
|
||||
:tabulator-options="tabulatorOptions"
|
||||
@@ -570,7 +571,7 @@ export default {
|
||||
@click:new="actionNewContract"
|
||||
>
|
||||
</core-filter-cmpt>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<!-- ContractDetails -->
|
||||
@@ -587,7 +588,7 @@ export default {
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<!-- ContractStati -->
|
||||
<div class="md-4" v-if="contractSelected.vertrag_id !=null">
|
||||
<div class="md-4" v-if="contractSelected.vertrag_id !=null">
|
||||
<contract-stati
|
||||
:person_id="person_id"
|
||||
:vertrag_id="contractSelected.vertrag_id"
|
||||
@@ -603,14 +604,14 @@ export default {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!--Modal: contractModal-->
|
||||
<bs-modal ref="contractModal" dialog-class="modal-xl">
|
||||
<template #title>
|
||||
<p v-if="statusNew" class="fw-bold mt-3">{{$p.t('vertrag', 'addVertrag')}}</p>
|
||||
<p v-else class="fw-bold mt-3">{{$p.t('vertrag', 'editVertrag')}}</p>
|
||||
</template>
|
||||
|
||||
|
||||
<list-unassigned
|
||||
:person_id="person_id"
|
||||
:endpoint="endpoint"
|
||||
@@ -634,7 +635,7 @@ export default {
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row mb-3">
|
||||
<form-input
|
||||
type="text"
|
||||
@@ -699,7 +700,7 @@ export default {
|
||||
</form-input>
|
||||
</div>
|
||||
</core-form>
|
||||
|
||||
|
||||
<template #footer>
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" @click="reload()">{{$p.t('ui', 'abbrechen')}}</button>
|
||||
<button type="button" class="btn btn-primary" :disabled="!this.hasSchreibrechte" @click="statusNew ? addNewContract() : updateContract(formData.vertrag_id)">{{$p.t('vertrag', 'vertragErstellen')}}</button>
|
||||
@@ -708,4 +709,3 @@ export default {
|
||||
|
||||
</div>`
|
||||
}
|
||||
|
||||
|
||||
@@ -45,33 +45,33 @@ export default {
|
||||
<!-- Navigation component -->
|
||||
<core-navigation-cmpt/>
|
||||
|
||||
<div class="vv">
|
||||
<vertical-split ref="vsplit">
|
||||
<template #top>
|
||||
<div class="d-flex flex-column" style="height: 100%;">
|
||||
<mitarbeiter-header
|
||||
:endpoint="endpoint"
|
||||
:domain="config.domain"
|
||||
@selectionChanged="handleSelection"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<template #bottom>
|
||||
<div class="col" v-if="person_id!=null">
|
||||
<fhc-header
|
||||
:person_id="person_id"
|
||||
:mitarbeiter_uid="this.mitarbeiter_uid"
|
||||
typeHeader="mitarbeiter"
|
||||
@redirectToLeitung="redirectToLeitung"
|
||||
></fhc-header>
|
||||
<vertraege-mitarbeiter
|
||||
:endpoint="endpoint"
|
||||
:person_id="this.person_id"
|
||||
:mitarbeiter_uid="this.mitarbeiter_uid"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</vertical-split>
|
||||
<div id="content">
|
||||
<vertical-split ref="vsplit">
|
||||
<template #top>
|
||||
<div class="d-flex flex-column" style="height: 100%;">
|
||||
<mitarbeiter-header
|
||||
:endpoint="endpoint"
|
||||
:domain="config.domain"
|
||||
@selectionChanged="handleSelection"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<template #bottom>
|
||||
<div class="col" v-if="person_id!=null">
|
||||
<fhc-header
|
||||
:person_id="person_id"
|
||||
:mitarbeiter_uid="this.mitarbeiter_uid"
|
||||
typeHeader="mitarbeiter"
|
||||
@redirectToLeitung="redirectToLeitung"
|
||||
></fhc-header>
|
||||
<vertraege-mitarbeiter
|
||||
:endpoint="endpoint"
|
||||
:person_id="this.person_id"
|
||||
:mitarbeiter_uid="this.mitarbeiter_uid"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</vertical-split>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
}
|
||||
|
||||
+74
-52
@@ -1395,14 +1395,14 @@ $filters = array(
|
||||
{"name": "PersonId"},
|
||||
{"name": "Vorname"},
|
||||
{"name": "Nachname"},
|
||||
{"name": "EMail"},
|
||||
{"name": "Unternehmen"},
|
||||
{"name": "Vertragsart"},
|
||||
{"name": "DV_von"},
|
||||
{"name": "DV_bis"},
|
||||
{"name": "Wochenstunden"},
|
||||
{"name": "WS_von"},
|
||||
{"name": "WS_bis"},
|
||||
{"name": "EMail"},
|
||||
{"name": "Unternehmen"},
|
||||
{"name": "Vertragsart"},
|
||||
{"name": "DV_von"},
|
||||
{"name": "DV_bis"},
|
||||
{"name": "Wochenstunden"},
|
||||
{"name": "WS_von"},
|
||||
{"name": "WS_bis"},
|
||||
{"name": "Standardkostenstelle"},
|
||||
{"name": "DV_status"}
|
||||
],
|
||||
@@ -1433,14 +1433,14 @@ $filters = array(
|
||||
{"name": "PersonId"},
|
||||
{"name": "Vorname"},
|
||||
{"name": "Nachname"},
|
||||
{"name": "EMail"},
|
||||
{"name": "Unternehmen"},
|
||||
{"name": "Vertragsart"},
|
||||
{"name": "DV_von"},
|
||||
{"name": "DV_bis"},
|
||||
{"name": "Wochenstunden"},
|
||||
{"name": "WS_von"},
|
||||
{"name": "WS_bis"},
|
||||
{"name": "EMail"},
|
||||
{"name": "Unternehmen"},
|
||||
{"name": "Vertragsart"},
|
||||
{"name": "DV_von"},
|
||||
{"name": "DV_bis"},
|
||||
{"name": "Wochenstunden"},
|
||||
{"name": "WS_von"},
|
||||
{"name": "WS_bis"},
|
||||
{"name": "Standardkostenstelle"},
|
||||
{"name": "DV_status"}
|
||||
],
|
||||
@@ -1471,14 +1471,14 @@ $filters = array(
|
||||
{"name": "PersonId"},
|
||||
{"name": "Vorname"},
|
||||
{"name": "Nachname"},
|
||||
{"name": "EMail"},
|
||||
{"name": "Unternehmen"},
|
||||
{"name": "Vertragsart"},
|
||||
{"name": "DV_von"},
|
||||
{"name": "DV_bis"},
|
||||
{"name": "Wochenstunden"},
|
||||
{"name": "WS_von"},
|
||||
{"name": "WS_bis"},
|
||||
{"name": "EMail"},
|
||||
{"name": "Unternehmen"},
|
||||
{"name": "Vertragsart"},
|
||||
{"name": "DV_von"},
|
||||
{"name": "DV_bis"},
|
||||
{"name": "Wochenstunden"},
|
||||
{"name": "WS_von"},
|
||||
{"name": "WS_bis"},
|
||||
{"name": "Standardkostenstelle"},
|
||||
{"name": "DV_status"}
|
||||
],
|
||||
@@ -1509,14 +1509,14 @@ $filters = array(
|
||||
{"name": "PersonId"},
|
||||
{"name": "Vorname"},
|
||||
{"name": "Nachname"},
|
||||
{"name": "EMail"},
|
||||
{"name": "Unternehmen"},
|
||||
{"name": "Vertragsart"},
|
||||
{"name": "DV_von"},
|
||||
{"name": "DV_bis"},
|
||||
{"name": "Wochenstunden"},
|
||||
{"name": "WS_von"},
|
||||
{"name": "WS_bis"},
|
||||
{"name": "EMail"},
|
||||
{"name": "Unternehmen"},
|
||||
{"name": "Vertragsart"},
|
||||
{"name": "DV_von"},
|
||||
{"name": "DV_bis"},
|
||||
{"name": "Wochenstunden"},
|
||||
{"name": "WS_von"},
|
||||
{"name": "WS_bis"},
|
||||
{"name": "Standardkostenstelle"},
|
||||
{"name": "DV_status"}
|
||||
],
|
||||
@@ -1547,10 +1547,10 @@ $filters = array(
|
||||
{"name": "PersonId"},
|
||||
{"name": "Vorname"},
|
||||
{"name": "Nachname"},
|
||||
{"name": "Unternehmen"},
|
||||
{"name": "Vertragsart"},
|
||||
{"name": "DV_von"},
|
||||
{"name": "DV_bis"},
|
||||
{"name": "Unternehmen"},
|
||||
{"name": "Vertragsart"},
|
||||
{"name": "DV_von"},
|
||||
{"name": "DV_bis"},
|
||||
{"name": "Disziplinaere_Zuordnung"},
|
||||
{"name": "DV_status"}
|
||||
],
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user