adaptions and additions cleanup tasks according to task 54312

This commit is contained in:
ma0068
2024-11-15 11:14:58 +01:00
parent e283997293
commit eccd827c71
18 changed files with 634 additions and 192 deletions
+21 -7
View File
@@ -13,16 +13,30 @@ $config['tabs'] =
//all fields can be configured to be hidden, see class attribute stv-details-prestudent-name for name
'hiddenFields' => [
//corresponding to config-entry 'ZGV_DOKTOR_ANZEIGEN' in global.config
'zgvdoktor_code', 'zgvdoktorort', 'zgvdoktordatum', 'zgvdoktornation', 'zgvdoktor_erfuellt',
//corresponding to config-entry 'ZGV_ERFUELLT_ANZEIGEN' in global.config
'zgv_erfuellt', 'zgvmas_erfuellt','zgvdoktor_erfuellt',
//propably used by FH-Communities
'aufnahmeschluessel', 'standort_code', 'facheinschlaegigBerufstaetig'
],
'hideUDFs' => false
]
];
];
// List of fields to show when ZGV_DOKTOR_ANZEIGEN is defined
$fieldsZgvDoktor = ['zgvdoktorort', 'zgvdoktordatum', 'zgvdoktornation', 'zgvdoktor_erfuellt', 'zgvdoktor_code'];
// List of fields to show when ZGV_ERFUELLT_ANZEIGEN is defined
$fieldsZgvErfuellt = ['zgv_erfuellt', 'zgvmas_erfuellt','zgvdoktor_erfuellt'];
//order important: to show zgf_erfuellt_doktor just in case visibility of doktor is true
if (!defined('ZGV_ERFUELLT_ANZEIGEN') || !ZGV_ERFUELLT_ANZEIGEN) {
$config['tabs']['prestudent']['hiddenFields'] = array_merge(
$config['tabs']['prestudent']['hiddenFields'], $fieldsZgvErfuellt
);
}
if (!defined('ZGV_DOKTOR_ANZEIGEN') || !ZGV_DOKTOR_ANZEIGEN) {
$config['tabs']['prestudent']['hiddenFields'] = array_merge(
$config['tabs']['prestudent']['hiddenFields'],
$fieldsZgvDoktor
);
}
@@ -47,17 +47,13 @@ class Address extends FHCAPI_Controller
public function getPlaces($plz = null)
{
//TODO(Manu) check with Chris
if (!$plz){
$plz = $this->input->post('plz');
}
$this->load->model('codex/Gemeinde_model', 'GemeindeModel');
$this->load->library('form_validation');
$this->form_validation->set_data(['address.plz' => $plz]);
$this->form_validation->set_rules('address.plz', 'PLZ', 'numeric|less_than[10000]');
$this->form_validation->set_rules('address.plz', 'PLZ', 'required|numeric|less_than[10000]');
if (!$this->form_validation->run())
$this->terminateWithValidationErrors($this->form_validation->error_array());
@@ -97,9 +97,6 @@ class Kontakt extends FHCAPI_Controller
|| $this->router->method == 'deleteContact'
|| $this->router->method == 'deleteBankverbindung'
) {
//TODO(manu) build all new with postparamater
if($this->input->post('address_id'))
$id = $this->input->post('address_id');
if($this->input->post('adresse_id'))
@@ -109,11 +106,6 @@ class Kontakt extends FHCAPI_Controller
if($this->input->post('kontakt_id'))
$id = $this->input->post('kontakt_id');
//$id = current(array_slice($this->uri->rsegments, 2));
// $id = $this->input->post('address_id') || $this->input->post('adresse_id');
//$id: no more uri parameter
// $this->terminateWithError($this->router->method, self::ERROR_TYPE_GENERAL);
$model = 'person/Adresse_model';
if ($this->router->method == 'loadContact'
|| $this->router->method == 'updateContact'
@@ -140,7 +132,12 @@ class Kontakt extends FHCAPI_Controller
}
public function getAdressen($person_id)
{
$this->AdresseModel->addSelect('public.tbl_adresse.*');
$this->AdresseModel->addSelect("public.tbl_adresse.*,
TO_CHAR (CASE
WHEN public.tbl_adresse.updateamum >= public.tbl_adresse.insertamum
THEN public.tbl_adresse.updateamum
ELSE public.tbl_adresse.insertamum
END::timestamp, 'DD.MM.YYYY HH24:MI:SS') AS lastUpdate");
$this->AdresseModel->addSelect('t.*');
$this->AdresseModel->addSelect('f.firma_id');
$this->AdresseModel->addSelect('f.name as firmenname');
@@ -158,15 +155,19 @@ class Kontakt extends FHCAPI_Controller
public function addNewAddress($person_id)
{
$this->form_validation->set_rules('plz', 'PLZ', 'required|numeric', [
$this->form_validation->set_data(['address.plz' => $_POST['plz']]);
$this->form_validation->set_rules('address.plz', 'PLZ', 'required|numeric', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'PLZ']),
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'PLZ'])
]);
if(isset($_POST['gemeinde']) && isset($_POST['ort']))
$this->form_validation->set_rules('plz', 'Postleitzahl', 'callback_validateLocationCombination', [
'validateLocationCombination' => $this->p->t('ui', 'error_location_combination')
]);
if(isset($_POST['gemeinde']) && isset($_POST['ort']) && isset($_POST['nation']) && $_POST['nation'] == 'A')
{
$this->form_validation->set_rules('address.plz', 'Postleitzahl', 'callback_validateLocationCombination', [
'validateLocationCombination' => $this->p->t('ui', 'error_location_combination')
]);
}
if ($this->form_validation->run() == false)
{
@@ -211,28 +212,30 @@ class Kontakt extends FHCAPI_Controller
]
);
if (isError($result))
{
return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
return $this->outputJsonSuccess(true);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function updateAddress()
{
//TODO(Manu) rename all to same
$address_id = $this->input->post('adresse_id');
$this->form_validation->set_data(['address.plz' => $_POST['plz']]);
$uid = getAuthUID();
$this->form_validation->set_rules('plz', 'PLZ', 'required|numeric', [
$this->form_validation->set_rules('address.plz', 'PLZ', 'required|numeric', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'PLZ']),
'numeric' => $this->p->t('ui', 'error_fieldNotNumeric', ['field' => 'PLZ'])
]);
if(isset($_POST['gemeinde']) && isset($_POST['ort']))
$this->form_validation->set_rules('plz', 'Postleitzahl', 'callback_validateLocationCombination', [
if(isset($_POST['gemeinde']) && isset($_POST['ort']) && isset($_POST['nation']) && ($_POST['nation'] == 'A'))
{
$this->form_validation->set_rules('address.plz', 'Postleitzahl', 'callback_validateLocationCombination', [
'validateLocationCombination' => $this->p->t('ui', 'error_location_combination')
]);
}
if ($this->form_validation->run() == false)
{
@@ -275,7 +278,7 @@ class Kontakt extends FHCAPI_Controller
'strasse' => $strasse,
'updatevon' => $uid,
'updateamum' => date('c'),
'plz' => $_POST['plz'],
'plz' => $_POST['address']['plz'],
'ort' => $ort,
'gemeinde' => $gemeinde,
'nation' => $nation,
@@ -290,11 +293,9 @@ class Kontakt extends FHCAPI_Controller
]
);
if (isError($result))
{
return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
return $this->outputJsonSuccess(true);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function loadAddress()
@@ -328,9 +329,7 @@ class Kontakt extends FHCAPI_Controller
public function deleteAddress()
{
//TODO(Manu) rename all to same
$adresse_id = $this->input->post('address_id');
// return $this->terminateWithError($adresse_id, self::ERROR_TYPE_GENERAL);
$this->load->model('person/Adresse_model', 'AdresseModel');
$result = $this->AdresseModel->load([
@@ -390,10 +389,10 @@ class Kontakt extends FHCAPI_Controller
$this->load->model('organisation/standort_model', 'StandortModel');
$result = $this->StandortModel->searchStandorte($searchString);
if (isError($result)) {
$this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
}
$this->terminateWithSuccess($result ?: []);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function getStandorteByFirma($firma_id)
@@ -573,11 +572,9 @@ class Kontakt extends FHCAPI_Controller
]
);
if (isError($result))
{
return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
return $this->outputJsonSuccess(true);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function deleteContact()
@@ -660,11 +657,9 @@ class Kontakt extends FHCAPI_Controller
'orgform_kurzbz' => $orgform_kurzbz
]
);
if (isError($result))
{
return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
}
return $this->outputJsonSuccess(true);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function loadBankverbindung()
@@ -738,11 +733,9 @@ class Kontakt extends FHCAPI_Controller
]
);
if (isError($result))
{
return $this->terminateWithError(getError($result), self::ERROR_TYPE_GENERAL);
}
return $this->outputJsonSuccess(true);
$data = $this->getDataOrTerminateWithError($result);
$this->terminateWithSuccess($data);
}
public function deleteBankverbindung()
+1
View File
@@ -309,6 +309,7 @@ abstract class Notiz_Controller extends FHCAPI_Controller
}
//update(1) loading all dms-entries with this notiz_id
$dms_id_arr = [];
$this->load->model('person/Notizdokument_model', 'NotizdokumentModel');
$this->NotizdokumentModel->addJoin('campus.tbl_dms_version', 'dms_id');
+4 -4
View File
@@ -5,8 +5,8 @@ export default {
getUid(){
return this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');
},
addNewNotiz(id, formData) {
return this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,
addNewNotiz(form, id, formData) {
return this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,
formData
);
},
@@ -27,8 +27,8 @@ export default {
id
});
},
updateNotiz(notiz_id, formData){
return this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,
updateNotiz(form, notiz_id, formData){
return this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,
formData
);
},
-1
View File
@@ -1,5 +1,4 @@
export default {
//TODO(Manu) check if tabulatorConfig use here like in konto.js
//------------- address.js-----------
getAdressen (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);
+21 -7
View File
@@ -39,24 +39,38 @@ export default {
},
//------------- MultiStatus.js------------------------------------------------------
getHistoryPrestudent (url, config, params){
return this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);
},
getMaxSem(studiengang_kzs) {
return this.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});
},
advanceStatus(status_id) {
return this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/' + Object.values(status_id).join('/'));
advanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
);
},
confirmStatus(status_id) {
return this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/' + Object.values(status_id).join('/'));
confirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
);
},
isLastStatus(id) {
return this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);
},
deleteStatus(status_id) {
return this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/' + Object.values(status_id).join('/'));
deleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
);
},
getLastBismeldestichtag() {
return this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');
+17 -4
View File
@@ -7,11 +7,24 @@ export default {
data
);
},
loadStatus(status_id) {
return this.$fhcApi.post('api/frontend/v1/stv/status/loadStatus/' + Object.values(status_id).join('/'));
loadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {
return this.$fhcApi.post(
'api/frontend/v1/stv/status/loadStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester
);
},
updateStatus(status_id, data) {
return this.$fhcApi.post('api/frontend/v1/stv/status/updateStatus/' + Object.values(status_id).join('/'), data);
updateStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {
return this.$fhcApi.post(
'api/frontend/v1/stv/status/updateStatus/'
+ prestudent_id + '/'
+ status_kurzbz + '/'
+ studiensemester_kurzbz + '/'
+ ausbildungssemester,
data
);
},
getStudienplaene(prestudent_id) {
return this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);
@@ -142,6 +142,18 @@ export default {
cm.getColumnByField('format_ausgabe').component.updateDefinition({
title: this.$p.t('wawi', 'ausgabedatum')
});
cm.getColumnByField('betriebsmittel_id').component.updateDefinition({
title: this.$p.t('ui', 'betriebsmittel_id')
});
cm.getColumnByField('betriebsmittelperson_id').component.updateDefinition({
title: this.$p.t('ui', 'betriebsmittelperson_id')
});
cm.getColumnByField('person_id').component.updateDefinition({
title: this.$p.t('person', 'person_id')
});
cm.getColumnByField('uid').component.updateDefinition({
title: this.$p.t('person', 'uid')
});
}
}
],
+25 -18
View File
@@ -161,7 +161,7 @@ export default {
event: 'tableBuilt',
handler: async () => {
await this.$p.loadCategory(['notiz', 'global']);
await this.$p.loadCategory(['notiz', 'global', 'ui']);
let cm = this.$refs.table.tabulator.columnManager;
@@ -202,18 +202,21 @@ export default {
visible: this.showVariables.showLastupdate
});
cm.getColumnByField('notiz_id').component.updateDefinition({
visible: this.showVariables.showNotiz_id
visible: this.showVariables.showNotiz_id,
title: this.$p.t('ui', 'notiz_id')
});
cm.getColumnByField('notizzuordnung_id').component.updateDefinition({
visible: this.showVariables.showNotizzuordnung_id
visible: this.showVariables.showNotizzuordnung_id,
title: this.$p.t('ui', 'notizzuordnung_id')
});
cm.getColumnByField('type_id').component.updateDefinition({
visible: this.showVariables.showType_id
visible: this.showVariables.showType_id,
title: this.$p.t('ui', 'type_id')
});
cm.getColumnByField('id').component.updateDefinition({
visible: this.showVariables.showId
visible: this.showVariables.showId,
title: this.$p.t('ui', 'extension_id')
});
}
}
],
@@ -302,7 +305,8 @@ export default {
formData.append('data', JSON.stringify(this.notizData));
Object.entries(this.notizData.anhang).forEach(([k, v]) => formData.append(k, v));
return this.endpoint.addNewNotiz(this.id, formData)
//TODO(Manu) formvalidation: inform not working with tinymce textarea
return this.endpoint.addNewNotiz(this.$refs.formNotiz, this.id, formData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.resetFormData();
@@ -318,7 +322,7 @@ export default {
},
deleteNotiz(notiz_id) {
return this.endpoint.deleteNotiz(notiz_id, this.typeId, this.id)
//return this.$fhcApi.post(this.endpoint + 'deleteNotiz/', this.param)
//return this.eost(this.endpoint + 'deleteNotiz/', this.param)
.then(result => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
this.$refs.deleteNotizModal.hide();
@@ -354,7 +358,8 @@ export default {
formData.append('data', JSON.stringify(this.notizData));
Object.entries(this.notizData.anhang).forEach(([k, v]) => formData.append(k, v));
return this.endpoint.updateNotiz(notiz_id, formData)
//TODO(Manu) formvalidation: inform not working with tinymce textarea
return this.endpoint.updateNotiz(this.$refs.formNotiz, notiz_id, formData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.resetFormData();
@@ -372,7 +377,9 @@ export default {
this.$refs.table.reloadTable();
},
resetFormData() {
this.$refs.formc.reset();
//TODO(Manu) check ref, needed here?
//this.$refs.formNotiz.reset();
//this.$refs.formc.reset();
this.notizData = {
typeId: this.typeId,
titel: null,
@@ -521,7 +528,7 @@ export default {
<br>
<form ref="formc" @submit.prevent class="row pt-3">
<form-form ref="formNotiz" @submit.prevent class="row pt-3">
<br><br>
<div class="pt-2">
<div class="row mb-3">
@@ -645,7 +652,7 @@ export default {
<button v-if="notizData.statusNew" type="button" class="btn btn-primary" @click="addNewNotiz()"> {{$p.t('studierendenantrag', 'btn_new')}}</button>
<button v-else type="button" class="btn btn-primary" @click="updateNotiz(notizData.notiz_id)"> {{$p.t('ui', 'speichern')}}</button>
</form>
</form-form>
</div>
<div v-else-if="notizLayout=='twoColumnsFormRight'" class="notiz-notiz">
@@ -685,7 +692,7 @@ export default {
<p v-else class="fw-bold">{{$p.t('notiz','notiz_edit')}} <span> [{{notizData.typeId}}]</span></p>
-->
<form ref="formc" @submit.prevent class="row pt-3">
<form-form ref="formNotiz" @submit.prevent class="row pt-3">
<div class="col pt-3">
<p v-if="notizData.statusNew" class="fw-bold">{{$p.t('notiz','notiz_new')}} <span> [{{notizData.typeId}}]</span></p>
<p v-else class="fw-bold">{{$p.t('notiz','notiz_edit')}} <span> [{{notizData.typeId}}]</span></p>
@@ -843,7 +850,7 @@ export default {
<p class="small">{{notizData.lastupdate}}</p>
</div>
</div>
</form>
</form-form>
</div>
</div>
</div>
@@ -863,7 +870,7 @@ export default {
<div class="row">
<div class="col-sm-6">
<form ref="formc" @submit.prevent class="row pt-3">
<form-form ref="formNotiz" @submit.prevent class="row pt-3">
<div class="col pt-3">
<p v-if="notizData.statusNew" class="fw-bold">{{$p.t('notiz','notiz_new')}} <span> [{{notizData.typeId}}]</span></p>
<p v-else class="fw-bold">{{$p.t('notiz','notiz_edit')}} <span> [{{notizData.typeId}}]</span></p>
@@ -1021,7 +1028,7 @@ export default {
<button v-if="notizData.statusNew" class="btn btn-primary" @click="addNewNotiz()"> {{$p.t('studierendenantrag', 'btn_new')}}</button>
<button v-else class="btn btn-primary" @click="updateNotiz(notizData.notiz_id)"> {{$p.t('ui', 'speichern')}}</button>
</div>
</form>
</form-form>
</div>
<div class="col-sm-6 pt-6">
@@ -1062,7 +1069,7 @@ export default {
</template>
<template #default>
<div>
<form ref="formc" @submit.prevent class="row">
<form-form ref="formNotiz" @submit.prevent class="row">
<div class="row mb-3">
<form-input
container-class="col-12"
@@ -1209,7 +1216,7 @@ export default {
<button v-if="notizData.statusNew" class="btn btn-primary" @click="addNewNotiz()"> {{$p.t('studierendenantrag', 'btn_new')}}</button>
<button v-else class="btn btn-primary" @click="updateNotiz(notizData.notiz_id)"> {{$p.t('ui', 'speichern')}}</button>
</div>
</form>
</form-form>
</div>
</template>
</BsModal>
@@ -45,8 +45,6 @@ export default {
cisRoot: this.cisRoot,
activeAddonBewerbung: this.activeAddons.split(';').includes('bewerbung'),
configGenerateAlias: this.config.generateAlias,
configShowZgvDoktor: this.config.showZgvDoktor,
configShowZgvErfuellt: this.config.showZgvErfuellt,
hasBpkPermission: this.permissions['student/bpk'],
hasAliasPermission: this.permissions['student/alias'],
hasPrestudentPermission: this.permissions['basis/prestudent'],
@@ -45,21 +45,9 @@ export default {
},
data() {
return {
test: {udf_viaf: 'TEST'},
familienstaende: {
"": "--keine Auswahl--",
"g": "geschieden",
"l": "ledig",
"v": "verheiratet",
"w": "verwitwet"
},
original: null,
data: null,
changed: {},
udfChanges: false,
studentIn: null,
gebDatumIsValid: false,
gebDatumIsInvalid: false
changed: {}
}
},
computed: {
@@ -71,6 +59,15 @@ export default {
},
noImageSrc() {
return FHC_JS_DATA_STORAGE_OBJECT.app_root + 'skin/images/profilbild_dummy.jpg';
},
familienstaende() {
return {
"": "-- " + this.$p.t('fehlermonitoring', 'keineAuswahl') + " --",
"g": this.$p.t('person', 'geschieden'),
"l": this.$p.t('person', 'ledig'),
"v": this.$p.t('person', 'verheiratet'),
"w": this.$p.t('person', 'verwitwet'),
};
}
},
watch: {
@@ -78,7 +75,6 @@ export default {
this.updateStudent(n);
},
data: {
// TODO(chris): use @input instead?
handler(n) {
let res = {};
for (var k in this.original) {
@@ -86,7 +82,6 @@ export default {
if (new Date(this.original[k]).toString() != new Date(n[k]).toString())
res[k] = n[k];
} else {
// TODO(chris): null && ""? should there be an exception for this?
if (this.original[k] !== n[k] && !(this.original[k] === null && n[k] === ""))
res[k] = n[k];
}
@@ -98,7 +93,6 @@ export default {
},
methods: {
updateStudent(n) {
// TODO(chris): move to fhcapi.factory
return this.$fhcApi.factory.stv.details.get(n.prestudent_id)
.then(result => {
this.data = result.data;
@@ -131,12 +125,10 @@ export default {
created() {
this.updateStudent(this.modelValue);
},
//TODO(chris): Phrasen
//TODO(chris): Geburtszeit? Anzahl der Kinder?
template: `
<core-form ref="form" class="stv-details-details" @submit.prevent="save">
<div class="position-sticky top-0 z-1">
<button type="submit" class="btn btn-primary position-absolute top-0 end-0" :disabled="!changedLength">Speichern</button>
<button type="submit" class="btn btn-primary position-absolute top-0 end-0" :disabled="!changedLength">{{$p.t('ui', 'speichern')}}</button>
</div>
<fieldset class="overflow-hidden">
<legend>Person</legend>
@@ -282,8 +274,7 @@ export default {
v-model="data.geburtsnation"
name="geburtsnation"
>
<option value="">-- keine Auswahl --</option>
<!-- TODO(chris): gesperrte nationen können nicht ausgewählt werden! Um das zu realisieren müsste man ein pseudo select machen -->
<option value="">-- {{$p.t('fehlermonitoring', 'keineAuswahl')}} --</option>
<option v-for="nation in lists.nations" :key="nation.nation_code" :value="nation.nation_code" :disabled="nation.sperre">{{nation.kurztext}}</option>
</form-input>
</div>
@@ -318,8 +309,7 @@ export default {
v-model="data.staatsbuergerschaft"
name="staatsbuergerschaft"
>
<option value="">-- keine Auswahl --</option>
<!-- TODO(chris): gesperrte nationen können nicht ausgewählt werden! Um das zu realisieren müsste man ein pseudo select machen -->
<option value="">-- {{$p.t('fehlermonitoring', 'keineAuswahl')}} --</option>
<option v-for="nation in lists.nations" :key="nation.nation_code" :value="nation.nation_code" :disabled="nation.sperre">{{nation.kurztext}}</option>
</form-input>
<form-input
@@ -399,7 +389,7 @@ export default {
</div>
</template>
<div v-else>
Loading...
{{$p.t('ui', 'dropdownLoading')}}...
</div>
<core-udf
v-if="!config.hideUDFs"
@@ -493,7 +483,7 @@ export default {
</div>
</template>
<div v-else>
Loading...
{{$p.t('ui', 'dropdownLoading')}}...
</div>
</fieldset>
</core-form>`
@@ -62,7 +62,7 @@ export default{
{title:"Adresse_id", field:"adresse_id", visible:false},
{title:"Person_id", field:"person_id", visible:false},
{title:"Name", field:"name", visible:false},
{title:"letzte Änderung", field:"updateamum", visible:false},
{title:"letzte Änderung", field:"lastupdate", visible:false},
{title:"Rechnungsadresse", field:"rechnungsadresse", visible:false,
formatter: (cell, formatterParams, onRendered) => {
let output = cell.getValue() ? this.$p.t('ui','ja') : this.$p.t('ui','nein');
@@ -89,9 +89,14 @@ export default{
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-xmark"></i>';
button.title = this.$p.t('person', 'adresse_delete');
button.addEventListener('click', () =>
this.actionDeleteAdress(cell.getData().adresse_id)
);
button.addEventListener('click', () => {
if (cell.getData().heimatadresse)
this.$fhcAlert.alertError(this.$p.t('person', 'error_deleteHomeAdress'));
else
this.actionDeleteAdress(cell.getData().adresse_id)
});
container.append(button);
return container;
@@ -134,6 +139,9 @@ export default{
cm.getColumnByField('heimatadresse').component.updateDefinition({
title: this.$p.t('person', 'heimatadresse')
});
cm.getColumnByField('zustelladresse').component.updateDefinition({
title: this.$p.t('person', 'zustelladresse')
});
cm.getColumnByField('co_name').component.updateDefinition({
title: this.$p.t('person', 'co_name')
});
@@ -143,7 +151,7 @@ export default{
cm.getColumnByField('firmenname').component.updateDefinition({
title: this.$p.t('person', 'firma')
});
cm.getColumnByField('updateamum').component.updateDefinition({
cm.getColumnByField('lastupdate').component.updateDefinition({
title: this.$p.t('notiz', 'letzte_aenderung')
});
cm.getColumnByField('rechnungsadresse').component.updateDefinition({
@@ -152,6 +160,18 @@ export default{
cm.getColumnByField('anmerkung').component.updateDefinition({
title: this.$p.t('global', 'anmerkung')
});
cm.getColumnByField('firma_id').component.updateDefinition({
title: this.$p.t('ui', 'firma_id')
});
cm.getColumnByField('adresse_id').component.updateDefinition({
title: this.$p.t('ui', 'adresse_id')
});
cm.getColumnByField('person_id').component.updateDefinition({
title: this.$p.t('person', 'person_id')
});
cm.getColumnByField('actions').component.updateDefinition({
title: this.$p.t('global', 'aktionen')
});
}
}
],
@@ -160,7 +180,9 @@ export default{
heimatadresse: true,
rechnungsadresse: false,
typ: 'h',
nation: 'A'
nation: 'A',
address: {plz: null},
plz: null
},
statusNew: true,
places: [],
@@ -201,37 +223,33 @@ export default{
this.loadAdress(adresse_id).then(() => {
if(this.addressData.adresse_id)
{
this.loadPlaces(this.addressData.plz);
this.addressData.address.plz = this.addressData.plz;
// delete this.addressData.plz;
this.loadPlaces(this.addressData.address.plz);
this.$refs.adressModal.show();
}
});
},
actionDeleteAdress(adresse_id) {
this.loadAdress(adresse_id).then(() => {
if(this.addressData.adresse_id)
if(this.addressData.heimatadresse)
this.$fhcAlert.alertError(this.$p.t('person', 'error_deleteHomeAdress'));
else {
this.$fhcAlert
.confirmDelete()
.then(result => result
? adresse_id
: Promise.reject({handled: true}))
.then(this.deleteAddress)
.catch(this.$fhcAlert.handleSystemError);
}
});
this.$fhcAlert
.confirmDelete()
.then(result => result
? adresse_id
: Promise.reject({handled: true}))
.then(this.deleteAddress)
.catch(this.$fhcAlert.handleSystemError);
},
addNewAddress(addressData) {
return this.$fhcApi.factory.stv.kontakt.addNewAddress(this.uid, this.addressData)
this.addressData.plz = this.addressData.address.plz;
return this.$refs.addressData.factory.stv.kontakt.addNewAddress(this.uid, this.addressData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.hideModal('adressModal');
this.resetModal();
}).catch(this.$fhcAlert.handleSystemError)
.finally(() => {
window.scrollTo(0, 0);
//window.scrollTo(0, 0);
this.reload();
});
},
@@ -242,13 +260,18 @@ export default{
this.statusNew = false;
return this.$fhcApi.factory.stv.kontakt.loadAddress(adresse_id)
.then(result => {
this.addressData = result.data;
return result;
this.addressData = result.data;
this.addressData.address = {};
this.addressData.address.plz = this.addressData.plz || null;
// delete this.addressData.plz;
return result;
})
.catch(this.$fhcAlert.handleSystemError);
},
updateAddress(adresse_id) {
return this.$fhcApi.factory.stv.kontakt.updateAddress(adresse_id,
//TODO(Manu) buggy with relad, warning/error: e.element.after is not a function
this.addressData.plz = this.addressData.address.plz;
return this.$refs.addressData.factory.stv.kontakt.updateAddress(adresse_id,
this.addressData
).then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
@@ -256,7 +279,7 @@ export default{
this.resetModal();
}).catch(this.$fhcAlert.handleSystemError)
.finally(() => {
window.scrollTo(0, 0);
//window.scrollTo(0, 0);
this.reload();
});
},
@@ -271,23 +294,17 @@ export default{
});
},
loadPlaces() {
//TODO(Manu) check with chris if its okay without abortion controller
/* if (this.abortController.places)
this.abortController.places.abort();*/
if (this.addressData.nation != 'A' || !this.addressData.plz)
if (this.abortController.places)
this.abortController.places.abort();
if (this.addressData.nation != 'A' || !this.addressData.address.plz)
return;
//this.abortController.places = new AbortController();
return this.$fhcApi.factory.stv.kontakt.getPlaces(this.addressData.plz)
this.abortController.places = new AbortController();
return this.$refs.addressData.factory.stv.kontakt.getPlaces(this.addressData.address.plz)
.then(result => {
this.places = result.data;
});
/* .catch(error => {
if (error.code != "ERR_CANCELED")
window.setTimeout(this.loadPlaces, 100);
else
this.$fhcAlert.handleSystemError(error);
});*/
},
search(event) {
return this.$fhcApi.factory.stv.kontakt.getFirmen(event.query)
@@ -311,7 +328,7 @@ export default{
this.addressData.anmerkung = null;
this.addressData.typ = 'h';
this.addressData.nation = 'A';
this.addressData.plz = null;
this.addressData.address = {plz: null};
this.statusNew = true;
},
@@ -388,9 +405,9 @@ export default{
<div class="row mb-3">
<form-input
type="text"
name="plz"
name="address[plz]"
:label="$p.t('person/plz') + ' *'"
v-model="addressData.plz"
v-model="addressData.address.plz"
required
@input="loadPlaces"
>
@@ -418,6 +435,7 @@ export default{
v-else
type="text"
name="addressData.gemeinde"
:label="$p.t('person/gemeinde')"
v-model="addressData.gemeinde"
>
</form-input>
@@ -444,6 +462,7 @@ export default{
v-else
type="text"
name="ort"
:label="$p.t('person/ort')"
v-model="addressData.ort"
>
</form-input>
@@ -562,7 +581,7 @@ export default{
</form-form>
<template #footer>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{$p.t('ui', 'abbrechen')}}</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" @click="reload()">{{$p.t('ui', 'abbrechen')}}</button>
<button v-if="statusNew" type="button" class="btn btn-primary" @click="addNewAddress()">OK</button>
<button v-else type="button" class="btn btn-primary" @click="updateAddress(addressData.adresse_id)">OK</button>
</template>
@@ -36,10 +36,10 @@ export default{
let output;
switch(cell.getValue()){
case "p":
output = "Privatkonto";
output = this.$p.t('person', 'privatkonto');
break;
case "f":
output = "Firmenkonto";
output = this.$p.t('person', 'firmenkonto');
break;
default:
output = cell.getValue();
@@ -110,7 +110,6 @@ export default{
cm.getColumnByField('typ').component.updateDefinition({
title: this.$p.t('global', 'typ')
});
cm.getColumnByField('anschrift').component.updateDefinition({
title: this.$p.t('person', 'anschrift')
});
@@ -120,10 +119,18 @@ export default{
cm.getColumnByField('blz').component.updateDefinition({
title: this.$p.t('person', 'blz')
});
cm.getColumnByField('verrechnung').component.updateDefinition({
title: this.$p.t('person', 'verrechnung')
});
cm.getColumnByField('person_id').component.updateDefinition({
title: this.$p.t('person', 'person_id')
});
cm.getColumnByField('bankverbindung_id').component.updateDefinition({
title: this.$p.t('ui', 'bankverbindung_id')
});
cm.getColumnByField('actions').component.updateDefinition({
title: this.$p.t('global', 'aktionen')
});
}
}
],
@@ -153,18 +160,16 @@ export default{
});
},
actionDeleteBankverbindung(bankverbindung_id){
this.loadBankverbindung(bankverbindung_id).then(() => {
this.$fhcAlert
.confirmDelete()
.then(result => result
? bankverbindung_id
: Promise.reject({handled: true}))
.then(this.deleteBankverbindung)
.catch(this.$fhcAlert.handleSystemError);
});
this.$fhcAlert
.confirmDelete()
.then(result => result
? bankverbindung_id
: Promise.reject({handled: true}))
.then(this.deleteBankverbindung)
.catch(this.$fhcAlert.handleSystemError);
},
addNewBankverbindung(bankverbindungData) {
return this.$fhcApi.factory.stv.kontakt.addNewBankverbindung(this.uid, this.bankverbindungData)
return this.$refs.bankverbindungData.factory.stv.kontakt.addNewBankverbindung(this.uid, this.bankverbindungData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.hideModal('bankverbindungModal');
@@ -186,7 +191,7 @@ export default{
.catch(this.$fhcAlert.handleSystemError);
},
updateBankverbindung(bankverbindung_id){
return this.$fhcApi.factory.stv.kontakt.updateBankverbindung(bankverbindung_id,
return this.$refs.bankverbindungData.factory.stv.kontakt.updateBankverbindung(bankverbindung_id,
this.bankverbindungData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
@@ -234,7 +239,7 @@ export default{
<div class="stv-details-kontakt-bankaccount h-100 pt-3">
<!--Modal: Bankverbindung-->
<BsModal title="Bankverbindung anlegen" ref="bankverbindungModal">
<BsModal ref="bankverbindungModal">
<template #title>
<p v-if="statusNew" class="fw-bold mt-3">{{$p.t('person', 'bankvb_new')}}</p>
<p v-else class="fw-bold mt-3">{{$p.t('person', 'bankvb_edit')}}</p>
@@ -103,7 +103,6 @@ export default{
cm.getColumnByField('anmerkung').component.updateDefinition({
title: this.$p.t('global', 'anmerkung')
});
cm.getColumnByField('lastupdate').component.updateDefinition({
title: this.$p.t('notiz', 'letzte_aenderung')
});
@@ -113,6 +112,21 @@ export default{
cm.getColumnByField('bezeichnung').component.updateDefinition({
title: this.$p.t('person', 'standort')
});
cm.getColumnByField('firma_id').component.updateDefinition({
title: this.$p.t('ui', 'firma_id')
});
cm.getColumnByField('kontakt_id').component.updateDefinition({
title: this.$p.t('ui', 'kontakt_id')
});
cm.getColumnByField('person_id').component.updateDefinition({
title: this.$p.t('person', 'person_id')
});
cm.getColumnByField('standort_id').component.updateDefinition({
title: this.$p.t('ui', 'standort_id')
});
cm.getColumnByField('actions').component.updateDefinition({
title: this.$p.t('global', 'aktionen')
});
}}
],
lastSelected: null,
@@ -163,7 +177,7 @@ export default{
.catch(this.$fhcAlert.handleSystemError);
},
addNewContact(formData) {
return this.$fhcApi.factory.stv.kontakt.addNewContact(this.uid, this.contactData)
return this.$refs.contactData.factory.stv.kontakt.addNewContact(this.uid, this.contactData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.hideModal("contactModal");
@@ -199,7 +213,7 @@ export default{
});
},
updateContact(kontakt_id){
return this.$fhcApi.factory.stv.kontakt.updateContact(kontakt_id,
return this.$refs.contactData.factory.stv.kontakt.updateContact(kontakt_id,
this.contactData)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
@@ -101,7 +101,7 @@ export default {
this.initialFormData = {...(this.initialFormData || {}), ...udfs};
},
updatePrestudent(){
return this.$fhcApi.factory.stv.prestudent.updatePrestudent(this.modelValue.prestudent_id, this.deltaArray)
return this.$refs.form.factory.stv.prestudent.updatePrestudent(this.modelValue.prestudent_id, this.deltaArray)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.deltaArray = [];
@@ -84,6 +84,7 @@ export default{
{title: "InsertVon", field: "insertvon", visible: false},
{title: "UpdateAmUm", field: "format_updateamum", visible: false},
{title: "UpdateVon", field: "updatevon", visible: false},
/* {title: "Aufnahmestufe", field: "aufnahmestufe", visible: false},*/
{
title: 'Aktionen', field: 'actions',
minWidth: 150, // Ensures Action-buttons will be always fully displayed
@@ -154,7 +155,8 @@ export default{
layoutColumnsOnNewData: false,
height: 'auto',
selectable: false,
//TODO(Manu) define Persistence Id to avoid empty result array if sort index not corresponding
index: 'statusId',
persistenceID: 'stv-multistatus'
},
tabulatorEvents: [
{
@@ -203,6 +205,14 @@ export default{
cm.getColumnByField('insertvon').component.updateDefinition({
title: this.$p.t('lehre', 'insert_von')
});
cm.getColumnByField('prestudent_id').component.updateDefinition({
title: this.$p.t('ui', 'prestudent_id')
});
cm.getColumnByField('studienplan_id').component.updateDefinition({
title: this.$p.t('ui', 'studienplan_id')
});
}
}
],
@@ -214,13 +224,9 @@ export default{
};
},
watch: {
//TODO(Manu) Watcher to factory
modelValue() {
if (this.$refs.table) {
if (this.$refs.table.tableBuilt)
this.$refs.table.tabulator.setData('api/frontend/v1/stv/Status/getHistoryPrestudent/' + this.modelValue.prestudent_id);
else
this.data.tabulatorOptions.ajaxURL = 'api/frontend/v1/stv/Status/getHistoryPrestudent/' + this.modelValue.prestudent_id;
this.$refs.table.reloadTable();
}
this.getMaxSem();
}
+361
View File
@@ -30527,6 +30527,367 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'geschieden',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'geschieden',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'divorced',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'ledig',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'ledig',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'single',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'verheiratet',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'verheiratet',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'married',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'verwitwet',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'verwitwet',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'widowed',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'firma_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Firma Id',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Company Id',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'adresse_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Adresse ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Address ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'kontakt_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Kontakt ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Contact ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'standort_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Standort ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Location ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'bankverbindung_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Bankverbindung ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Bankdetails ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'studienplan_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Studienplan ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Studyplan ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'prestudent_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'PrestudentIn ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Prestudent ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'notiz_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Notiz ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Notes ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'notizzuordnung_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Notizzuordnung ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Noteassignment ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'extension_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Extension ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Extension ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'type_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Type ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Type ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'betriebsmittel_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Betriebsmittel ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Ressource ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'betriebsmittelperson_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Betriebsmittelperson ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Ressourceperson ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'dropdownLoading',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Daten werden geladen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Loading',
'description' => '',
'insertvon' => 'system'
)
)
),
);