Merge branch 'feature-52533/PV21_Karteireiter_Vertraege' of github.com:FH-Complete/FHC-Core into feature-52533/PV21_Karteireiter_Vertraege

This commit is contained in:
ma0068
2025-02-19 16:37:47 +01:00
7 changed files with 105 additions and 41 deletions
@@ -659,7 +659,12 @@ class Vertraege extends FHCAPI_Controller
}
if (!hasData($result))
{
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'Id_Lehrauftrag']), self::ERROR_TYPE_GENERAL);
//return data before PV21 (with filter fix angestellt, active and with bisverwendung)
$result = $this->Mitarbeitermodel->getPersonal(true, true, true);
if (isError($result))
{
return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
}
}
return $this->terminateWithSuccess(getData($result));
}
@@ -343,9 +343,9 @@ class Vertrag_model extends DB_Model
*,
tbl_vertrag.bezeichnung as bezeichnung,
tbl_vertragstyp.bezeichnung as vertragstyp_bezeichnung,
TO_CHAR(tbl_vertrag.vertragsdatum::timestamp, 'DD.MM.YYYY') AS format_vertragsdatum,
tbl_vertrag.vertragsdatum,
(SELECT bezeichnung FROM lehre.tbl_vertragsstatus
JOIN lehre.tbl_vertrag_vertragsstatus USING(vertragsstatus_kurzbz)
JOIN lehre.tbl_vertrag_vertragsstatus USING(vertragsstatus_kurzbz)
WHERE vertrag_id=tbl_vertrag.vertrag_id ORDER BY datum desc limit 1) as status, anmerkung,
CASE
WHEN EXISTS (
@@ -487,15 +487,15 @@ SELECT
$query = "
SELECT
*,
TO_CHAR(tbl_vertrag_vertragsstatus.datum::timestamp, 'DD.MM.YYYY HH24:MI') AS format_datum,
TO_CHAR(tbl_vertrag_vertragsstatus.insertamum::timestamp, 'DD.MM.YYYY HH24:MI') AS format_insertamum,
TO_CHAR(tbl_vertrag_vertragsstatus.updateamum::timestamp, 'DD.MM.YYYY HH24:MI') AS format_updateamum
tbl_vertrag_vertragsstatus.datum,
tbl_vertrag_vertragsstatus.insertamum,
tbl_vertrag_vertragsstatus.updateamum
FROM
lehre.tbl_vertrag_vertragsstatus
JOIN lehre.tbl_vertragsstatus USING(vertragsstatus_kurzbz)
WHERE
tbl_vertrag_vertragsstatus.vertrag_id = ?
ORDER BY datum DESC";
ORDER BY tbl_vertrag_vertragsstatus.datum DESC";
return $this->execQuery($query, array($vertrag_id));
}
@@ -107,17 +107,14 @@ class Mitarbeiter_model extends DB_Model
{
$qry = "
SELECT
b.uid , p.person_id,
b.uid , p.person_id,
p.vorname, p.nachname,
TO_CHAR(gebdatum::timestamp, 'DD.MM.YYYY') AS format_gebdatum,
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,
b.aktiv
-- CASE WHEN b.aktiv=true THEN 'aktiv'
-- ELSE 'nicht aktiv'
-- END as status //not working in header filter */
FROM
hr.tbl_dienstverhaeltnis d
JOIN
@@ -128,7 +125,7 @@ class Mitarbeiter_model extends DB_Model
public.tbl_organisationseinheit u ON d.oe_kurzbz = u.oe_kurzbz
JOIN
hr.tbl_vertragsart va ON d.vertragsart_kurzbz = va.vertragsart_kurzbz
";
";
if($person_id)
{
@@ -138,9 +135,9 @@ class Mitarbeiter_model extends DB_Model
$qry.= "
GROUP BY
b.uid, p.person_id, p.vorname, p.nachname, b.alias
ORDER BY
ORDER BY
p.nachname, p.vorname;
";
";
$params = array($person_id);
+53 -6
View File
@@ -44,14 +44,61 @@ export default {
ajaxResponse: (url, params, response) => response.data,
columns: [
{title: "Status", field: "bezeichnung"},
{title: "Datum", field: "format_datum"},
{
title: "Datum",
field: "datum",
formatter: function (cell) {
const dateStr = cell.getValue();
const date = new Date(dateStr); // Convert to Date object
return date.toLocaleString("de-DE", {
day: "2-digit",
month: "2-digit",
year: "numeric",
hour: "2-digit",
minute: "2-digit",
hour12: false
});
}
},
{title: "vertrag_id", field: "vertrag_id", visible: false},
{title: "Vertragsstatus", field: "vertragsstatus_kurzbz", visible: false},
{title: "User", field: "mitarbeiter_uid", visible: false},
{title: "insertvon", field: "insertvon", visible: false},
{title: "insertamum", field: "format_insertamum", visible: false},
{
title: "insertamum",
field: "insertamum",
visible: false,
formatter: function (cell) {
const dateStr = cell.getValue();
const date = new Date(dateStr);
return date.toLocaleString("de-DE", {
day: "2-digit",
month: "2-digit",
year: "numeric",
hour: "2-digit",
minute: "2-digit",
hour12: false
});
}
},
{title: "updatevon", field: "updatevon", visible: false},
{title: "updateamum", field: "format_updateamum", visible: false},
{
title: "updateamum",
field: "updateamum",
visible: false,
formatter: function (cell) {
const dateStr = cell.getValue();
const date = new Date(dateStr);
return date.toLocaleString("de-DE", {
day: "2-digit",
month: "2-digit",
year: "numeric",
hour: "2-digit",
minute: "2-digit",
hour12: false
});
}
},
{
title: 'Aktionen', field: 'actions',
minWidth: 150,
@@ -112,7 +159,7 @@ export default {
cm.getColumnByField('bezeichnung').component.updateDefinition({
title: this.$p.t('global', 'status')
});
cm.getColumnByField('format_datum').component.updateDefinition({
cm.getColumnByField('datum').component.updateDefinition({
title: this.$p.t('global', 'datum')
});
cm.getColumnByField('mitarbeiter_uid').component.updateDefinition({
@@ -130,13 +177,13 @@ export default {
cm.getColumnByField('updatevon').component.updateDefinition({
title: this.$p.t('global', 'updatevon')
});
cm.getColumnByField('format_updateamum').component.updateDefinition({
cm.getColumnByField('updateamum').component.updateDefinition({
title: this.$p.t('global', 'updateamum')
});
cm.getColumnByField('insertvon').component.updateDefinition({
title: this.$p.t('global', 'insertvon')
});
cm.getColumnByField('format_insertamum').component.updateDefinition({
cm.getColumnByField('insertamum').component.updateDefinition({
title: this.$p.t('global', 'insertamum')
});
}
@@ -62,7 +62,20 @@ export default {
crossElement: '<i class="fa fa-xmark text-danger"></i>'
}
},
{title: "Geburtsdatum", field: "format_gebdatum", headerFilter:"input"},
{
title: "Geburtsdatum",
field: "gebdatum",
headerFilter:"input",
formatter: function (cell) {
const dateStr = cell.getValue();
const date = new Date(dateStr);
return date.toLocaleString("de-DE", {
day: "2-digit",
month: "2-digit",
year: "numeric",
});
}
},
{title: "Unternehmen", field: "unternehmen", headerFilter:"input"},
{title: "Vertragsarten", field: "vertragsarten", headerFilter:"input"},
{title: "Ids Dienstverträge", field: "ids", headerFilter:"input"},
@@ -98,7 +111,7 @@ export default {
cm.getColumnByField('aktiv').component.updateDefinition({
title: this.$p.t('global', 'aktiv')
});
cm.getColumnByField('format_gebdatum').component.updateDefinition({
cm.getColumnByField('gebdatum').component.updateDefinition({
title: this.$p.t('person', 'geburtsdatum')
});
cm.getColumnByField('unternehmen').component.updateDefinition({
+16 -7
View File
@@ -68,9 +68,21 @@ export default {
},
{title: "Vertragstyp", field: "vertragstyp_bezeichnung", width: 125},
{title: "Status", field: "status"},
{title: "Vertragsdatum", field: "format_vertragsdatum", width: 128},
{
title: "Vertragsdatum",
field: "vertragsdatum",
width: 128,
formatter: function (cell) {
const dateStr = cell.getValue();
const date = new Date(dateStr);
return date.toLocaleString("de-DE", {
day: "2-digit",
month: "2-digit",
year: "numeric",
});
}
},
{title: "VertragId", field: "vertrag_id", visible: false},
{title: "Vertragsdatum_iso", field: "vertragsdatum", visible: false},
{title: "Vertragsstunden", field: "vertragsstunden", visible: false},
{title: "VertragsstundenStudiensemester", field: "vertragsstunden_studiensemester_kurzbz", visible: false},
{title: "Anmerkung", field: "anmerkung", visible: false},
@@ -146,11 +158,8 @@ export default {
cm.getColumnByField('vertragstyp_bezeichnung').component.updateDefinition({
title: this.$p.t('vertrag', 'vertragstyp')
});
cm.getColumnByField('format_vertragsdatum').component.updateDefinition({
title: this.$p.t('vertrag', 'vertragsdatum')
});
cm.getColumnByField('vertragsdatum').component.updateDefinition({
title: this.$p.t('vertrag', 'vertragsdatum_iso')
title: this.$p.t('vertrag', 'vertragsdatum')
});
cm.getColumnByField('vertragsstunden').component.updateDefinition({
title: this.$p.t('vertrag', 'vertragsstunden')
@@ -177,7 +186,7 @@ export default {
//(maybe enable also for ADDON FH Burgenland: MultiAccept later)
event: 'rowClick',
handler: (e, row) => {
if (this.dataPrintHonorar.multiselect) {
if (this.dataPrintHonorar != null && this.dataPrintHonorar.multiselect != null) {
const selectedContract = row.getData().vertrag_id;
const status = row.getData().status;
const bezeichnung = row.getData().bezeichnung;
@@ -21,15 +21,8 @@ export default {
}
},
data() {
//TODO(Manu) props for filter: actually not necessary
return {
person_id: null,
/* filterMa: {
active: true,
hasVertraege: true
},*/
/* vertragsarten:
[ 'echterdv', 'externerlehrender', 'gastlektor']*/
}
},
methods: {
@@ -43,14 +36,14 @@ export default {
<main class="col-md-8 ms-sm-auto col-lg-9 col-xl-10">
<vertical-split ref="vsplit">
<template #top>
<!-- <div class="d-flex flex-column" style="height: 100%;">-->
<MitarbeiterHeader :filterMa="filterMa" :vertragsarten="vertragsarten" @selectedPerson="selectPerson" />
<!-- </div>-->
<div class="d-flex flex-column" style="height: 100%;">
<mitarbeiter-header :filterMa="filterMa" :vertragsarten="vertragsarten" @selectedPerson="selectPerson" />
</div>
</template>
<template #bottom>
<div class="col" v-if="person_id!=null">
<mitarbeiter-details :person_id="person_id"></mitarbeiter-details>
<VertraegeMitarbeiter :endpoint="$fhcApi.factory.vertraege.person" :person_id="this.person_id"/>
<vertraege-mitarbeiter :endpoint="$fhcApi.factory.vertraege.person" :person_id="this.person_id"/>
</div>
<template>
</vertical-split>