Validations, Phrases, cleanup

This commit is contained in:
ma0068
2024-11-19 14:34:50 +01:00
parent 5751441424
commit 07e6146e50
7 changed files with 1046 additions and 427 deletions
@@ -1,6 +1,5 @@
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
use \DateTime as DateTime;
@@ -12,20 +11,20 @@ class Vertraege extends FHCAPI_Controller
'getAllVertraege' => ['admin:r', 'assistenz:r'],
'getAllContractsNotAssigned' => ['admin:r', 'assistenz:r'],
'getAllContractsAssigned' => ['admin:r', 'assistenz:r'],
'getAllContractTypes' => self::PERM_LOGGED,
'getAllContractStati' => self::PERM_LOGGED,
'getStatiOfContract' => self::PERM_LOGGED,
'getAllContractTypes' => ['admin:r', 'assistenz:r'],
'getAllContractStati' => ['admin:r', 'assistenz:r'],
'getStatiOfContract' => ['admin:r', 'assistenz:r'],
'loadContract' => ['admin:r', 'assistenz:r'],
'updateContract' => ['admin:r', 'assistenz:r'],
'addNewContract' => ['admin:r', 'assistenz:r'],
'deleteContract' => ['admin:r', 'assistenz:r'],
'insertContractStatus' => ['admin:r', 'assistenz:r'],
'loadContractStatus' => ['admin:r', 'assistenz:r'],
'deleteContractStatus' => ['admin:r', 'assistenz:r'],
'updateContractStatus' => ['admin:r', 'assistenz:r'],
'deleteLehrauftrag' => ['admin:r', 'assistenz:r'],
'deleteBetreuung' => ['admin:r', 'assistenz:r']
]);
'updateContract' => self::PERM_LOGGED,
'addNewContract' => self::PERM_LOGGED,
'deleteContract' => self::PERM_LOGGED,
'insertContractStatus' => self::PERM_LOGGED,
'deleteContractStatus' => self::PERM_LOGGED,
'updateContractStatus' => self::PERM_LOGGED,
'deleteLehrauftrag' => self::PERM_LOGGED,
'deleteBetreuung' => self::PERM_LOGGED
]);
//Load Models and Libraries
$this->load->model('accounting/Vertrag_model', 'VertragModel');
@@ -33,8 +32,6 @@ class Vertraege extends FHCAPI_Controller
$this->load->model('accounting/Vertragstyp_model', 'VertragstypModel');
$this->load->model('accounting/Vertragvertragsstatus_model', 'VertragvertragsstatusModel');
//TODO(Manu) additional permission checks
// Load language phrases
$this->loadPhrases([
'ui',
@@ -42,7 +39,6 @@ class Vertraege extends FHCAPI_Controller
]);
}
//TODO(Manu) validations, phrases
public function getAllVertraege($person_id)
{
$result = $this->VertragModel->loadContractsOfPerson($person_id);
@@ -121,15 +117,25 @@ class Vertraege extends FHCAPI_Controller
$_POST['vertragsdatum']= $formData['vertragsdatum'];
$_POST['bezeichnung']= $formData['bezeichnung'];
$_POST['betrag'] = $formData['betrag'];
$_POST['vertragsstunden']= isset($formData['vertragsstunden']) ? $formData['vertragsstunden'] : null;
$_POST['vertragsstunden_studiensemester_kurzbz']= isset($formData['vertragsstunden_studiensemester_kurzbz']) ? $formData['vertragsstunden_studiensemester_kurzbz'] : null;
$_POST['anmerkung']= isset($formData['anmerkung']) ? $formData['anmerkung'] : null;
$_POST['vertragsstunden'] =
isset($formData['vertragsstunden'])
? $formData['vertragsstunden']
: null;
$_POST['vertragsstunden_studiensemester_kurzbz'] =
isset($formData['vertragsstunden_studiensemester_kurzbz'])
? $formData['vertragsstunden_studiensemester_kurzbz']
: null;
$_POST['anmerkung'] = isset($formData['anmerkung']) ? $formData['anmerkung'] : null;
$this->form_validation->set_rules('bezeichnung', 'Bezeichnung', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Bezeichnung'])
]);
$this->form_validation->set_rules('vertragstyp_kurzbz', 'Vertragstyp', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Vertragstyp'])
]);
$this->form_validation->set_rules('vertragsdatum', 'Vertragsdatum', 'required', [
$this->form_validation->set_rules('vertragsdatum', 'Vertragsdatum', 'required|is_valid_date', [
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Vertragsdatum']),
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Vertragsdatum'])
]);
$this->form_validation->set_rules('betrag', 'Betrag', 'required|numeric', [
@@ -151,13 +157,13 @@ class Vertraege extends FHCAPI_Controller
$result = $this->VertragModel->insert([
'person_id' => $person_id,
'vertragsdatum' => $_POST['vertragsdatum'],
'bezeichnung' => $_POST['bezeichnung'],
'vertragstyp_kurzbz' => $_POST['vertragstyp_kurzbz'],
'betrag' => $_POST['betrag'],
'vertragsstunden' => $_POST['vertragsstunden'],
'vertragsstunden_studiensemester_kurzbz' => $_POST['vertragsstunden_studiensemester_kurzbz'],
'anmerkung' => $_POST['anmerkung'],
'vertragsdatum' => $this->input->post('vertragsdatum'),
'bezeichnung' => $this->input->post('bezeichnung'),
'vertragstyp_kurzbz' => $this->input->post('vertragstyp_kurzbz'),
'betrag' => $this->input->post('betrag'),
'vertragsstunden' => $this->input->post('vertragsstunden'),
'vertragsstunden_studiensemester_kurzbz' => $this->input->post('vertragsstunden_studiensemester_kurzbz'),
'anmerkung' => $this->input->post('anmerkung'),
'insertamum' => date('c'),
'insertvon' => getAuthUID()
]);
@@ -180,8 +186,8 @@ class Vertraege extends FHCAPI_Controller
}
//Hinzufügen der Lehraufträge
foreach ($lehrauftraege as $row) {
foreach ($lehrauftraege as $row)
{
if ($row['type'] == 'Lehrauftrag')
{
$this->load->model('education/Lehreinheitmitarbeiter_model', 'LehreinheitmitarbeiterModel');
@@ -193,7 +199,8 @@ class Vertraege extends FHCAPI_Controller
],
[
'vertrag_id' => $vertrag_id
]);
]
);
if (!$result_lehrauftrag) {
$this->db->trans_rollback();
@@ -213,7 +220,8 @@ class Vertraege extends FHCAPI_Controller
],
[
'vertrag_id' => $vertrag_id
]);
]
);
if (!$result_projektbetreuer)
{
@@ -241,15 +249,25 @@ class Vertraege extends FHCAPI_Controller
$_POST['vertragsdatum']= $formData['vertragsdatum'];
$_POST['bezeichnung']= $formData['bezeichnung'];
$_POST['betrag'] = $formData['betrag'];
$_POST['vertragsstunden']= isset($formData['vertragsstunden']) ? $formData['vertragsstunden'] : null;
$_POST['vertragsstunden_studiensemester_kurzbz']= isset($formData['vertragsstunden_studiensemester_kurzbz']) ? $formData['vertragsstunden_studiensemester_kurzbz'] : null;
$_POST['vertragsstunden'] =
isset($formData['vertragsstunden'])
? $formData['vertragsstunden']
: null;
$_POST['vertragsstunden_studiensemester_kurzbz']=
isset($formData['vertragsstunden_studiensemester_kurzbz'])
? $formData['vertragsstunden_studiensemester_kurzbz']
: null;
$_POST['anmerkung']= isset($formData['anmerkung']) ? $formData['anmerkung'] : null;
$this->form_validation->set_rules('bezeichnung', 'Bezeichnung', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Bezeichnung'])
]);
$this->form_validation->set_rules('vertragstyp_kurzbz', 'Vertragstyp', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Vertragstyp'])
]);
$this->form_validation->set_rules('vertragsdatum', 'Vertragsdatum', 'required', [
$this->form_validation->set_rules('vertragsdatum', 'Vertragsdatum', 'required|is_valid_date', [
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Vertragsdatum']),
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Vertragsdatum'])
]);
$this->form_validation->set_rules('betrag', 'Betrag', 'required|numeric', [
@@ -271,23 +289,23 @@ class Vertraege extends FHCAPI_Controller
$vertrag_id,
[
'person_id' => $person_id,
'vertragsdatum' => $_POST['vertragsdatum'],
'bezeichnung' => $_POST['bezeichnung'],
'vertragstyp_kurzbz' => $_POST['vertragstyp_kurzbz'],
'betrag' => $_POST['betrag'],
'vertragsstunden' => $_POST['vertragsstunden'],
'vertragsstunden_studiensemester_kurzbz' => $_POST['vertragsstunden_studiensemester_kurzbz'],
'anmerkung' => $_POST['anmerkung'],
'vertragsstunden' => $_POST['vertragsstunden'],
'vertragsdatum' => $this->input->post('vertragsdatum'),
'bezeichnung' => $this->input->post('bezeichnung'),
'vertragstyp_kurzbz' => $this->input->post('vertragstyp_kurzbz'),
'betrag' => $this->input->post('betrag'),
'vertragsstunden' => $this->input->post('vertragsstunden'),
'vertragsstunden_studiensemester_kurzbz' => $this->input->post('vertragsstunden_studiensemester_kurzbz'),
'anmerkung' => $this->input->post('anmerkung'),
'updateamum' => date('c'),
'updatevon' => getAuthUID()
]);
]
);
$this->getDataOrTerminateWithError($result);
//Adding of Lehraufträge
foreach ($lehrauftraege as $row) {
foreach ($lehrauftraege as $row)
{
if ($row['type'] == 'Lehrauftrag')
{
$this->load->model('education/Lehreinheitmitarbeiter_model', 'LehreinheitmitarbeiterModel');
@@ -299,7 +317,8 @@ class Vertraege extends FHCAPI_Controller
],
[
'vertrag_id' => $vertrag_id
]);
]
);
if (!$result_lehrauftrag) {
$this->db->trans_rollback();
@@ -319,7 +338,8 @@ class Vertraege extends FHCAPI_Controller
],
[
'vertrag_id' => $vertrag_id
]);
]
);
if (!$result_projektbetreuer)
{
@@ -350,9 +370,6 @@ class Vertraege extends FHCAPI_Controller
public function deleteContract($vertrag_id)
{
//TODO(Manu) validations
//TODO(manu) use private function
$this->load->model('education/Lehreinheitmitarbeiter_model', 'LehreinheitmitarbeiterModel');
//check if attached Lehrauftrag
@@ -366,17 +383,17 @@ class Vertraege extends FHCAPI_Controller
foreach($resultLehrauftrag as $lehrauftrag)
{
$result = $this->LehreinheitmitarbeiterModel->update(
[
'lehreinheit_id' => $lehrauftrag->lehreinheit_id,
'mitarbeiter_uid' => $lehrauftrag->mitarbeiter_uid,
'vertrag_id' => $vertrag_id
],
[
'vertrag_id' => null
]);
[
'lehreinheit_id' => $lehrauftrag->lehreinheit_id,
'mitarbeiter_uid' => $lehrauftrag->mitarbeiter_uid,
'vertrag_id' => $vertrag_id
],
[
'vertrag_id' => null
]
);
$this->getDataOrTerminateWithError($result);
}
}
@@ -402,7 +419,8 @@ class Vertraege extends FHCAPI_Controller
],
[
'vertrag_id' => null
]);
]
);
$this->getDataOrTerminateWithError($result);
}
@@ -412,10 +430,11 @@ class Vertraege extends FHCAPI_Controller
'vertrag_id' => $vertrag_id
]);
//TODO(Manu) check if there are exceptions for deletions (status abgerechnet?)
if(hasData($result)){
if(hasData($result))
{
$data = getData($result);
foreach ($data as $item) {
foreach ($data as $item)
{
//delete all entries in lehre.tbl_vertrag_vertragsstatus
$result = $this->VertragvertragsstatusModel->delete([
'vertrag_id' => $vertrag_id,
@@ -442,26 +461,42 @@ class Vertraege extends FHCAPI_Controller
return $this->terminateWithSuccess(current(getData($result)));
}
public function insertContractStatus ($vertrag_id, $datum, $status){
public function insertContractStatus($vertrag_id)
{
$this->load->library('form_validation');
$this->form_validation->set_rules('vertragsstatus_kurzbz', 'vertragsstatus_kurzbz', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'vertragsstatus_kurzbz'])
]);
$this->form_validation->set_rules('datum', 'Datum', 'required|is_valid_date', [
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Datum']),
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Datum'])
]);
if ($this->form_validation->run() == false)
{
$this->terminateWithValidationErrors($this->form_validation->error_array());
}
$result = $this->VertragvertragsstatusModel->loadWhere(
array(
'vertrag_id' => $vertrag_id,
'vertragsstatus_kurzbz' => $status
'vertragsstatus_kurzbz' => $this->input->post('vertragsstatus_kurzbz')
)
);
if (hasData($result)) {
$this->terminateWithError("status bereits vorhanden", self::ERROR_TYPE_GENERAL);
// $this->terminateWithError($this->p->t('ui', 'error_status_existing', ['id' => 'Vertrag_id']), self::ERROR_TYPE_GENERAL);
if (hasData($result))
{
$this->terminateWithError($this->p->t('vertrag', 'error_statusVorhanden'), self::ERROR_TYPE_GENERAL);
}
$status_result = $this->VertragvertragsstatusModel->insert([
'vertrag_id' => $vertrag_id,
'uid' => getAuthUID(),
'vertragsstatus_kurzbz' => $status,
'vertragsstatus_kurzbz' => $this->input->post('vertragsstatus_kurzbz'),
'insertamum' => date('c'),
'insertvon' => getAuthUID(),
'datum' => $datum
'datum' => $this->input->post('datum')
]);
if (!$status_result) {
@@ -471,7 +506,9 @@ class Vertraege extends FHCAPI_Controller
return $this->terminateWithSuccess(current(getData($status_result)));
}
public function deleteContractStatus($vertrag_id, $status){
public function deleteContractStatus($vertrag_id)
{
$status = $this->input->post('vertragsstatus_kurzbz');
$result = $this->VertragvertragsstatusModel->delete(
array(
@@ -480,16 +517,20 @@ class Vertraege extends FHCAPI_Controller
)
);
if (isError($result)) {
if (isError($result))
{
return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
}
if (!hasData($result)) {
if (!hasData($result))
{
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'vertragsstatus_kurzb']), self::ERROR_TYPE_GENERAL);
}
return $this->terminateWithSuccess(current(getData($result)));
}
public function loadContractStatus ($vertrag_id, $status){
public function loadContractStatus($vertrag_id)
{
$status = $this->input->post('vertragsstatus_kurzbz');
$result = $this->VertragvertragsstatusModel->loadWhere(
array(
@@ -503,28 +544,34 @@ class Vertraege extends FHCAPI_Controller
return $this->terminateWithSuccess(current(getData($result)));
}
public function updateContractStatus ($vertrag_id, $datum, $status){
/* $result = $this->VertragvertragsstatusModel->loadWhere(
array(
'vertrag_id' => $vertrag_id,
'vertragsstatus_kurzbz' => $status
)
);
public function updateContractStatus($vertrag_id)
{
$this->load->library('form_validation');
if (hasData($result)) {
$this->terminateWithError("status bereits vorhanden", self::ERROR_TYPE_GENERAL);
// $this->terminateWithError($this->p->t('ui', 'error_status_existing', ['id' => 'Vertrag_id']), self::ERROR_TYPE_GENERAL);
}*/
$this->form_validation->set_rules('vertragsstatus_kurzbz', 'vertragsstatus_kurzbz', 'required', [
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'vertragsstatus_kurzbz'])
]);
$this->form_validation->set_rules('datum', 'Datum', 'required|is_valid_date', [
'is_valid_date' => $this->p->t('ui', 'error_notValidDate', ['field' => 'Datum']),
'required' => $this->p->t('ui', 'error_fieldRequired', ['field' => 'Datum'])
]);
$status_result = $this->VertragvertragsstatusModel->update([
if ($this->form_validation->run() == false)
{
$this->terminateWithValidationErrors($this->form_validation->error_array());
}
$status_result = $this->VertragvertragsstatusModel->update(
[
'vertrag_id' => $vertrag_id,
'vertragsstatus_kurzbz' => $status],
'vertragsstatus_kurzbz' => $this->input->post('vertragsstatus_kurzbz')],
[
'uid' => getAuthUID(),
'updateamum' => date('c'),
'updatevon' => getAuthUID(),
'datum' => $datum
]);
'datum' => $this->input->post('datum')
]
);
if (!$status_result) {
$this->terminateWithError('Fehler beim Updaten des Vertragsstatus.');
@@ -533,8 +580,11 @@ class Vertraege extends FHCAPI_Controller
return $this->terminateWithSuccess(current(getData($status_result)));
}
public function deleteLehrauftrag($vertrag_id, $lehreinheit_id, $mitarbeiter_uid)
public function deleteLehrauftrag($vertrag_id)
{
$lehreinheit_id = $this->input->post('lehreinheit_id');
$mitarbeiter_uid = $this->input->post('mitarbeiter_uid');
$this->load->model('education/Lehreinheitmitarbeiter_model', 'LehreinheitmitarbeiterModel');
//kein delete: ein update, bei dem die vertrag_id auf null gesetzt wird
@@ -546,19 +596,26 @@ class Vertraege extends FHCAPI_Controller
],
[
'vertrag_id' => null
]);
]
);
if (isError($result)) {
if (isError($result))
{
return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
}
if (!hasData($result)) {
if (!hasData($result))
{
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'Id_Lehrauftrag']), self::ERROR_TYPE_GENERAL);
}
return $this->terminateWithSuccess(current(getData($result)));
}
public function deleteBetreuung($vertrag_id, $person_id, $projektarbeit_id, $betreuerart_kurzbz)
public function deleteBetreuung($vertrag_id)
{
$person_id= $this->input->post('person_id');
$projektarbeit_id = $this->input->post('projektarbeit_id');
$betreuerart_kurzbz = $this->input->post('betreuerart_kurzbz');
$this->load->model('education/Projektbetreuer_model', 'Projektbetreuermodel');
$result = $this->Projektbetreuermodel->update(
@@ -570,16 +627,17 @@ class Vertraege extends FHCAPI_Controller
],
[
'vertrag_id' => null
]);
]
);
if (isError($result)) {
if (isError($result))
{
return $this->terminateWithError($result, self::ERROR_TYPE_GENERAL);
}
if (!hasData($result)) {
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'Id_Lehrauftrag']), self::ERROR_TYPE_GENERAL);
if (!hasData($result))
{
return $this->terminateWithError($this->p->t('ui', 'error_missingId', ['id' => 'Id_Projektbetreuung']), self::ERROR_TYPE_GENERAL);
}
return $this->terminateWithSuccess(current(getData($result)));
}
}
}
+12 -36
View File
@@ -20,58 +20,34 @@ export default {
getAllContractStati(){
return this.$fhcApi.get('api/frontend/v1/vertraege/vertraege/getAllContractStati/');
},
/* addNewContract(person_id, formData) {
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/addNewContract/' +
person_id, formData
);
},*/
addNewContract(data) {
//TODO(Manu) Refactor
const { person_id, formData, clickedRows } = data;
console.log("Person ID:", person_id);
console.log("Form Data:", formData);
console.log("Clicked Rows:", clickedRows);
//return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/addNewContract/' + Object.values(params.person_id).join('/') + '/' + Object.values(params.formData).join('/') + '/' + Object.values(params.clickedRows).join('/'));
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/addNewContract/', data);
addNewContract(form, data) {
return this.$fhcApi.post(form,'api/frontend/v1/vertraege/vertraege/addNewContract/', data);
},
loadContract(vertrag_id){
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/loadContract/' + vertrag_id);
},
/* updateContract(vertrag_id, formData) {
return this.$fhcApi.post( 'api/frontend/v1/vertraege/vertraege/updateContract/' + vertrag_id,
formData);
},*/
updateContract(data) {
//TODO(Manu) Refactor
const { vertrag_id, person_id, formData, clickedRows } = data;
console.log("Person ID:", person_id);
console.log("Vertrag ID:", vertrag_id);
console.log("Form Data:", formData);
console.log("Clicked Rows:", clickedRows);
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/updateContract/', data);
updateContract(form, data) {
return this.$fhcApi.post(form,'api/frontend/v1/vertraege/vertraege/updateContract/', data);
},
deleteContract(vertrag_id){
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/deleteContract/' + vertrag_id);
},
loadContractStatus(params){
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/loadContractStatus/' + Object.values(params.vertrag_id).join('/') + '/' + Object.values(params.status).join('/'));
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/loadContractStatus/' + params.vertrag_id, params);
},
insertContractStatus(params) {
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/insertContractStatus/' + params.vertrag_id + '/' + params.datum + '/' + Object.values(params.status).join('/'));
insertContractStatus(form, params) {
return this.$fhcApi.post(form,'api/frontend/v1/vertraege/vertraege/insertContractStatus/' + params.vertrag_id, params);
},
updateContractStatus(params) {
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/updateContractStatus/' + params.vertrag_id + '/' + params.datum + '/' + Object.values(params.status).join('/'));
updateContractStatus(form, params) {
return this.$fhcApi.post(form,'api/frontend/v1/vertraege/vertraege/updateContractStatus/' + params.vertrag_id, params);
},
deleteContractStatus(params) {
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/deleteContractStatus/' + Object.values(params.vertrag_id).join('/') + '/' + Object.values(params.status).join('/'));
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/deleteContractStatus/' + params.vertrag_id, params);
},
deleteLehrauftrag(params) {
//TODO Manu (Refactor!)
console.log(params.vertrag_id, params.lehreinheit_id, params.mitarbeiter_uid);
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/deleteLehrauftrag/' + Object.values(params.vertrag_id).join('/') + '/' + Object.values(params.lehreinheit_id).join('/') + '/' + Object.values(params.mitarbeiter_uid).join('/'));
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/deleteLehrauftrag/' + params.vertrag_id, params);
},
deleteBetreuung(params) {
console.log(params.vertrag_id, params.person_id, params.projektarbeit_id, params.betreuerart_kurzbz);
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/deleteBetreuung/' + Object.values(params.vertrag_id).join('/') + '/' + Object.values(params.person_id).join('/') + '/' + Object.values(params.projektarbeit_id).join('/') + '/' + Object.values(params.betreuerart_kurzbz).join('/'));
return this.$fhcApi.post('api/frontend/v1/vertraege/vertraege/deleteBetreuung/' + params.vertrag_id, params);
}
}
+61 -15
View File
@@ -36,21 +36,23 @@ export default {
ajaxResponse: (url, params, response) => response.data,
columns: [
{title: "Typ", field: "type"},
{title: "Betrag", field: "betrag"},
{title: "Betrag", field: "betrag",
formatter: function(cell) {
let value = cell.getValue();
if (value == null) {
return "0.00";
}
return parseFloat(value).toFixed(2);
}
},
{title: "Bezeichnung", field: "bezeichnung"},
{title: "Studiensemester", field: "studiensemester_kurzbz"},
{title: "PruefungId", field: "betrag", visible: false},
{title: "Pruefung_id", field: "pruefung_id", visible: false},
{title: "mitarbeiter_uid", field: "mitarbeiter_uid", visible: false},
{title: "projektarbeit_id", field: "projektarbeit_id", visible: false},
{title: "lehreinheit_id", field: "lehreinheit_id", visible: true},
{title: "betreuerart_kurzbz", field: "betreuerart_kurzbz", visible: false},
{title: "Vertragsstunden", field: "vertragsstunden", visible: false},
{title: "vertrag_id", field: "vertrag_id", visible: false}, //just for testing
{
title: "VertragsstundenStudiensemester",
field: "vertragsstunden_studiensemester_kurzbz",
visible: false
},
{
title: 'Aktionen', field: 'actions',
minWidth: 50,
@@ -62,10 +64,9 @@ export default {
let button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-xmark"></i>';
button.title = 'Lehrauftrag löschen';
button.title = this.$p.t('vertrag', 'deleteLehrauftrag');
let type = cell.getData().type;
console.log(type);
if (type == 'Lehrauftrag')
{
button.addEventListener(
@@ -96,12 +97,57 @@ export default {
height: '200',
selectableRangeMode: 'click',
selectable: true,
persistenceID: 'core-contracts-details'
},
tabulatorEvents: [
{
event: 'tableBuilt',
handler: async() => {
await this.$p.loadCategory(['ui', 'global', 'vertrag', 'projektarbeitsbeurteilung', 'lehre']);
let cm = this.$refs.table.tabulator.columnManager;
cm.getColumnByField('type').component.updateDefinition({
title: this.$p.t('global', 'typ')
});
cm.getColumnByField('bezeichnung').component.updateDefinition({
title: this.$p.t('ui', 'bezeichnung')
});
cm.getColumnByField('lehreinheit_id').component.updateDefinition({
title: this.$p.t('ui', 'lehreinheit_id')
});
cm.getColumnByField('betrag').component.updateDefinition({
title: this.$p.t('ui', 'betrag')
});
cm.getColumnByField('studiensemester_kurzbz').component.updateDefinition({
title: this.$p.t('lehre', 'studiensemester')
});
cm.getColumnByField('mitarbeiter_uid').component.updateDefinition({
title: this.$p.t('ui', 'mitarbeiter_uid')
});
cm.getColumnByField('projektarbeit_id').component.updateDefinition({
title: this.$p.t('ui', 'projektarbeit_id')
});
cm.getColumnByField('betreuerart_kurzbz').component.updateDefinition({
title: this.$p.t('projektarbeitsbeurteilung', 'betreuerart')
});
cm.getColumnByField('pruefung_id').component.updateDefinition({
title: this.$p.t('ui', 'pruefung_id')
});
cm.getColumnByField('vertrag_id').component.updateDefinition({
title: this.$p.t('ui', 'vertrag_id')
});
cm.getColumnByField('actions').component.updateDefinition({
title: this.$p.t('global', 'aktionen')
});
}
}
],
clickedRows: [],
}
},
watch: {
person_id() {
this.$refs.table.tabulator.setData('api/frontend/v1/vertraege/vertraege/getAllContractsAssigned/' + this.person_id + '/' + this.vertrag_id);
},
@@ -131,15 +177,15 @@ export default {
},
},
template: `
<!--TODO(Manu) nicht anzeigen, wenn keine vorhanden ? check css, design -->
<div class="core-vertraege-details h-50 d-flex flex-column w-100">
<div class="ore-contracts-details h-50 d-flex flex-column w-100">
<br>
<h4>Vertragdetails</h4>
<h4>{{$p.t('vertrag', 'vertragDetails')}}</h4>
<core-filter-cmpt
ref="table"
:tabulator-options="tabulatorOptions"
:tabulator-events="tabulatorEvents"
table-only
:side-menu="false"
reload
+55 -12
View File
@@ -40,13 +40,12 @@ export default {
{title: "Status", field: "bezeichnung"},
{title: "Datum", field: "format_datum"},
{title: "vertrag_id", field: "vertrag_id", visible: false},
// {title: "User", field: "bezeichnung", 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: "updatevon", field: "updatevon", visible: false},
{title: "updateamum", field: "format_updateamum", visible: false},
{title: "betreuerart_kurzbz", field: "betreuerart_kurzbz", visible: false},
{title: "Vertragsstunden", field: "vertragsstunden", visible: false},
{
title: 'Aktionen', field: 'actions',
minWidth: 150,
@@ -58,7 +57,7 @@ export default {
let button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-edit"></i>';
button.title = 'Status bearbeiten';
button.title = this.$p.t('vertrag', 'editStatus');
button.addEventListener(
'click',
(event) =>
@@ -69,7 +68,7 @@ export default {
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-xmark"></i>';
button.title = 'Status löschen';
button.title = this.$p.t('vertrag', 'deleteStatus');
button.addEventListener(
'click',
() =>
@@ -88,7 +87,50 @@ export default {
height: '200',
selectableRangeMode: 'click',
selectable: true,
persistenceID: 'core-contracts-status'
},
tabulatorEvents: [
{
event: 'tableBuilt',
handler: async() => {
await this.$p.loadCategory(['ui', 'global', 'vertrag']);
let cm = this.$refs.table.tabulator.columnManager;
cm.getColumnByField('bezeichnung').component.updateDefinition({
title: this.$p.t('global', 'status')
});
cm.getColumnByField('format_datum').component.updateDefinition({
title: this.$p.t('global', 'datum')
});
cm.getColumnByField('mitarbeiter_uid').component.updateDefinition({
title: this.$p.t('person', 'uid')
});
cm.getColumnByField('vertrag_id').component.updateDefinition({
title: this.$p.t('ui', 'vertrag_id')
});
cm.getColumnByField('vertragsstatus_kurzbz').component.updateDefinition({
title: this.$p.t('vertrag', 'vertragStatus')
});
cm.getColumnByField('actions').component.updateDefinition({
title: this.$p.t('global', 'aktionen')
});
cm.getColumnByField('updatevon').component.updateDefinition({
title: this.$p.t('global', 'updatevon')
});
cm.getColumnByField('format_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({
title: this.$p.t('global', 'insertamum')
});
}
}
],
clickedRows: [],
statusNew: true,
formData: {
@@ -99,6 +141,7 @@ export default {
},
watch: {
vertrag_id() {
//this.reloadTable();
this.$refs.table.tabulator.setData('api/frontend/v1/vertraege/vertraege/getStatiOfContract/' + this.vertrag_id);
},
formDataParent: {
@@ -160,19 +203,19 @@ export default {
}
},
template: `
<!--TODO(Manu) check filter (akzeptiert, neu, erteilt?), design -->
<div class="core-vertraege-status h-50 d-flex flex-column w-100">
<div class="core-contracts-status h-50 d-flex flex-column w-100">
<br>
<h4>Vertragsstatus</h4>
<h4>{{$p.t('vertrag', 'vertragStatus')}}</h4>
<core-filter-cmpt
ref="table"
:tabulator-options="tabulatorOptions"
:tabulator-events="tabulatorEvents"
table-only
:side-menu="false"
reload
new-btn-show
new-btn-label="Status"
:new-btn-label="this.$p.t('global', 'status')"
@click:new="actionNewStatus"
>
</core-filter-cmpt>
@@ -180,11 +223,11 @@ export default {
<div >
<bs-modal ref="contractStatus">
<template #title>
<p class="fw-bold mt-3">{{$p.t('ui', 'add_Status')}}</p>
<p class="fw-bold mt-3">{{$p.t('vertrag', 'addStatus')}}</p>
</template>
<core-form>
<core-form ref="statusData">
<div class="row mb-3">
<form-input
type="DatePicker"
@@ -192,7 +235,7 @@ export default {
name="datum"
v-model="formData.datum"
auto-apply
:enable-time-picker="false"
:enable-time-picker="true"
format="dd.MM.yyyy"
preview-format="dd.MM.yyyy"
:teleport="true"
@@ -31,40 +31,21 @@ export default {
person_id: this.person_id
};
},
//TODO(Manu) auch beträge von NULL anzeigen als 0.00
ajaxResponse: (url, params, response) => response.data,
columns: [
{title: "Typ", field: "type"},
/* {
{title: "Typ", field: "type", width: 100},
{
title: "Betrag",
field: "betrag",
formatter: function(cell) {
// Hole den Wert der Zelle
let value = cell.getValue();
// Falls der Wert null oder undefined ist, setze ihn auf "0,00"
if (value == null) {
return "0,00";
}
// Andernfalls formatiere ihn auf zwei Dezimalstellen
return parseFloat(value).toFixed(2).replace(".", ",");
}
},*/
{title: "Betrag",
field: "betrag1",
formatter: function(cell) {
let value = cell.getValue();
if (value == null) {
return "0.00";
}
return parseFloat(value).toFixed(2);
}},
{title: "Bezeichnung", field: "bezeichnung", width: 150},
{title: "Studiensemester", field: "studiensemester_kurzbz"},
{title: "PruefungId", field: "betrag", visible: false},
{title: "Studiensemester", field: "studiensemester_kurzbz", width: 160},
{title: "mitarbeiter_uid", field: "mitarbeiter_uid", visible: false},
{title: "projektarbeit_id", field: "projektarbeit_id", visible: false},
{title: "lehreinheit_id", field: "lehreinheit_id", visible: true},
@@ -82,37 +63,83 @@ export default {
height: '200',
selectableRangeMode: 'click',
selectable: true,
persistenceID: 'core-contracts-unassigned'
},
tabulatorEvents: [
{
event: 'rowClick',
handler: (e, row) => {
const data = row.getData();
this.toggleRowClick(data);
}
},
{
event: 'dataLoaded',
handler: (data) => {
this.totalRows = data.length;
}
},
{
event: 'tableBuilt',
handler: () => {
this.$p.loadCategory(['ui', 'global', 'vertrag', 'projektarbeitsbeurteilung', 'lehre']).then(() => {
let cm = this.$refs.table.tabulator.columnManager;
cm.getColumnByField('type').component.updateDefinition({
title: this.$p.t('global', 'typ')
});
cm.getColumnByField('bezeichnung').component.updateDefinition({
title: this.$p.t('ui', 'bezeichnung')
});
cm.getColumnByField('lehreinheit_id').component.updateDefinition({
title: this.$p.t('ui', 'lehreinheit_id')
});
cm.getColumnByField('betrag1').component.updateDefinition({
title: this.$p.t('ui', 'betrag')
});
cm.getColumnByField('studiensemester_kurzbz').component.updateDefinition({
title: this.$p.t('lehre', 'studiensemester')
});
cm.getColumnByField('mitarbeiter_uid').component.updateDefinition({
title: this.$p.t('ui', 'mitarbeiter_uid')
});
cm.getColumnByField('projektarbeit_id').component.updateDefinition({
title: this.$p.t('ui', 'projektarbeit_id')
});
cm.getColumnByField('betreuerart_kurzbz').component.updateDefinition({
title: this.$p.t('projektarbeitsbeurteilung', 'betreuerart')
});
cm.getColumnByField('vertragsstunden').component.updateDefinition({
title: this.$p.t('vertrag', 'vertragsstunden')
});
cm.getColumnByField('vertrag_id').component.updateDefinition({
title: this.$p.t('ui', 'vertrag_id')
});
cm.getColumnByField('vertragsstunden_studiensemester_kurzbz').component.updateDefinition({
title: this.$p.t('vertrag', 'vertragsstunden_studiensemester')
});
});
}
}
],
clickedRows: [],
sumBetragLehrauftraege: 0
sumBetragLehrauftraege: 0,
totalRows: 0
}
},
//TODO(Manu) auch auf fhcapi umbauen?
watch: {
//TODO(Manu) check if still working
person_id() {
this.$refs.table.tabulator.setData('api/frontend/v1/vertraege/vertraege/getAllContractsNotAssigned/' + this.person_id);
this.$refs.table.reloadTable();
//this.$refs.table.tabulator.setData('api/frontend/v1/vertraege/vertraege/getAllContractsNotAssigned/' + this.person_id);
},
clickedRows() {
this.$refs.table.tabulator.setData('api/frontend/v1/vertraege/vertraege/getAllContractsNotAssigned/' + this.person_id);
this.$refs.table.reloadTable();
//this.$refs.table.tabulator.setData('api/frontend/v1/vertraege/vertraege/getAllContractsNotAssigned/' + this.person_id);
},
},
methods: {
toggleRowClick(rowData){
//id already existing?
//const index = this.clickedRows.findIndex(row => row.id === id);
//id alleine reicht nicht: Betreuerart ebenfalls, am besten gleich ganze Row!
/* if (this.clickedRows.indexOf(id) == -1) {
console.log("Die Zahl " + id + " ist NICHT Array enthalten.");
this.clickedRows.push(id);
} else {
console.log("Die Zahl " + id + " ist im Array enthalten.");
const index = this.clickedRows.indexOf(id);
this.clickedRows.splice(index, 1);
}*/
// check row
const exists = this.clickedRows.some(row => JSON.stringify(row) === JSON.stringify(rowData));
@@ -122,7 +149,6 @@ export default {
this.handleSumUp();
} else {
this.clickedRows.push(rowData);
//hier soll der variable sumBetragLehrauftraege der Wert von this.clickedRows.betrag1 hinzugefügt werden
this.sumBetragLehrauftraege += Number(rowData.betrag1);
console.log(rowData.betrag1);
this.handleSumUp();
@@ -133,42 +159,27 @@ export default {
this.$emit('saveClickedRows', this.clickedRows);
},
reloadUnassigned() {
this.$refs.table.reloadTable();
this.$emit('reloadUnassigned');
this.clickedRows = [];
//this.$refs.table.reloadTable();
this.$emit('reloadUnassigned');
},
handleSumUp() {
this.$emit("sum-updated", this.sumBetragLehrauftraege);
},
},
mounted() {
this.$nextTick(() => {
this.$refs.table.tabulator.on("rowClick", (e, row) => {
const data = row.getData();
this.toggleRowClick(data);
});
});
},
template: `
<!--TODO(Manu) check css, design .. mybe list.js-->
<div class="core-vertraege h-50 d-flex flex-column w-100">
<!-- {{clickedRows}} <hr> sum: {{sumBetragLehrauftraege}}-->
<!--TODO(Manu) nicht anzeigen wenn keine vertraege vorhanden, "KEINE DATEN vorhanden"-->
<p>Die folgenden Lehraufträge sind noch keinem Vertrag zugeordnet. Markieren Sie die Lehraufträge um diese dem Vertrag zuzuordnen:</p>
<div class="core-contracts-unassigned h-50 d-flex flex-column w-100">
<p v-if="totalRows > 0">{{$p.t('vertrag', 'text_explainLehrauftrag')}}</p>
<core-filter-cmpt
ref="table"
:tabulator-options="tabulatorOptions"
:tabulator-events="tabulatorEvents"
table-only
:side-menu="false"
>
</core-filter-cmpt>
<p v-if="clickedRows.length > 0" >Folgende Lehraufträge werden hinzugefügt:</p>
<p v-if="clickedRows.length > 0" >{{$p.t('vertrag', 'text_addLehrauftrag')}}</p>
<div v-for="item in clickedRows" :key="item.lehreinheit_id" class="row">
<div class="col-md-6">
@@ -180,8 +191,6 @@ export default {
readonly
>
</div>
</div>
</div>`
}
+225 -198
View File
@@ -34,7 +34,6 @@ export default {
},
data() {
return {
//TODO(Manu) filter: alle vs offene Verträge
tabulatorOptions: {
ajaxURL: 'dummy',
ajaxRequestFunc: this.$fhcApi.factory.vertraege.person.getAllVertraege,
@@ -47,11 +46,21 @@ export default {
columns: [
{title: "Bezeichnung", field: "bezeichnung", width: 150},
{title: "lehreinheit_id", field: "lehreinheit_id", visible: true},
{title: "Betrag", field: "betrag", width: 150},
{
title: "Betrag", field: "betrag", width: 150,
formatter: function (cell) {
let value = cell.getValue();
if (value == null) {
return "0.00";
}
return parseFloat(value).toFixed(2);
}
},
{title: "Vertragstyp", field: "vertragstyp_bezeichnung", width: 125},
{title: "Status", field: "status"},
{title: "Vertragsdatum", field: "format_vertragsdatum", width: 128},
{title: "VertragstypKurzbz", field: "vertragstyp_kurzbz", visible: false},
{title: "VertragId", field: "vertrag_id", visible: false},
{title: "Vertragsdatum_iso", field: "vertragsdatum", visible: false},
{title: "Vertragsstunden", field: "vertragsstunden", visible: false},
@@ -69,7 +78,7 @@ export default {
let button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-edit"></i>';
button.title = 'Vertrag bearbeiten';
button.title = this.$p.t('vertrag', 'editVertrag');
button.addEventListener(
'click',
(event) =>
@@ -80,7 +89,7 @@ export default {
button = document.createElement('button');
button.className = 'btn btn-outline-secondary btn-action';
button.innerHTML = '<i class="fa fa-xmark"></i>';
button.title = 'Vertrag löschen';
button.title = this.$p.t('vertrag', 'deleteVertrag');
button.addEventListener(
'click',
() =>
@@ -101,30 +110,53 @@ export default {
},
tabulatorEvents: [
{
/* event: 'tableBuilt',
event: 'tableBuilt',
handler: async() => {
await this.$p.loadCategory(['wawi', 'global', 'infocenter']);
await this.$p.loadCategory(['ui', 'global', 'vertrag']);
let cm = this.$refs.table.tabulator.columnManager;
cm.getColumnByField('nummer').component.updateDefinition({
title: this.$p.t('wawi', 'nummer')
cm.getColumnByField('bezeichnung').component.updateDefinition({
title: this.$p.t('ui', 'bezeichnung')
});
cm.getColumnByField('lehreinheit_id').component.updateDefinition({
title: this.$p.t('ui', 'lehreinheit_id')
});
cm.getColumnByField('betrag').component.updateDefinition({
title: this.$p.t('ui', 'betrag')
});
cm.getColumnByField('status').component.updateDefinition({
title: this.$p.t('global', 'status')
});
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')
});
cm.getColumnByField('vertragsstunden').component.updateDefinition({
title: this.$p.t('vertrag', 'vertragsstunden')
});
cm.getColumnByField('vertragsstunden_studiensemester_kurzbz').component.updateDefinition({
title: this.$p.t('vertrag', 'vertragsstunden_studiensemester')
});
cm.getColumnByField('vertrag_id').component.updateDefinition({
title: this.$p.t('ui', 'vertrag_id')
});
cm.getColumnByField('anmerkung').component.updateDefinition({
title: this.$p.t('global', 'anmerkung')
});
cm.getColumnByField('format_retour').component.updateDefinition({
title: this.$p.t('wawi', 'retourdatum')
cm.getColumnByField('isabgerechnet').component.updateDefinition({
title: this.$p.t('vertrag', 'abgerechnet')
});
cm.getColumnByField('kaution').component.updateDefinition({
title: this.$p.t('infocenter', 'kaution')
cm.getColumnByField('actions').component.updateDefinition({
title: this.$p.t('global', 'aktionen')
});
cm.getColumnByField('format_ausgabe').component.updateDefinition({
title: this.$p.t('wawi', 'ausgabedatum')
});
}*/
}
}
],
statusNew: true,
@@ -143,7 +175,8 @@ export default {
},
watch: {
person_id() {
this.$refs.table.tabulator.setData('api/frontend/v1/vertraege/vertraege/getAllVertraege/' + this.person_id);
this.$refs.table.reloadTable();
//this.$refs.table.tabulator.setData('api/frontend/v1/vertraege/vertraege/getAllVertraege/' + this.person_id);
},
},
methods: {
@@ -184,12 +217,11 @@ export default {
};
return this.endpoint
.addNewContract(dataToSend)
.addNewContract(this.$refs.contractData, dataToSend)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$refs.contractModal.hide();
this.resetModal();
//this.$refs.contractdetails.reload(); //TOOD(Manu) check why error
//this.$refs.contractdetails.reload();
this.$refs.unassignedLehrauftraege.reloadUnassigned();
this.reload();
@@ -207,7 +239,7 @@ export default {
};
return this.endpoint
.updateContract(dataToSend)
.updateContract(this.$refs.contractData, dataToSend)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$refs.contractModal.hide();
@@ -231,91 +263,68 @@ export default {
//Methods Contract Stati
addNewContractStatus({status, datum}) {
const date = new Date();
//TODO(Manu) refactor this
const formattedDate = datum.toLocaleDateString('en-CA');
const formattedDate = datum != null ? datum.toLocaleDateString('en-CA',
{
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
hour12: false, // Use 24-hour format
}
) : null;
let params = {
vertrag_id : this.contractSelected.vertrag_id,
status: {status},
vertragsstatus_kurzbz: status,
datum: formattedDate
};
return this.endpoint
.insertContractStatus(params)
.insertContractStatus(this.$refs.contractstati.$refs.statusData, params)
.then(response => {
//this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
this.$refs.contractstati.closeModal();
//window.scrollTo(0, 0);
this.$refs.contractstati.reload();
this.reload();
})
.catch(this.$fhcAlert.handleSystemError);
},
deleteContractStatus({status, vertrag_id}){
let params = {
vertrag_id : {vertrag_id},
status: {status}
vertrag_id : vertrag_id,
vertragsstatus_kurzbz: status
};
return this.endpoint
.deleteContractStatus(params)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
//window.scrollTo(0, 0);
this.$refs.contractstati.reload();
})
.catch(this.$fhcAlert.handleSystemError);
},
deleteLehrauftrag({lehreinheit_id, vertrag_id, mitarbeiter_uid}){
let params = {
vertrag_id : {vertrag_id},
lehreinheit_id: {lehreinheit_id},
mitarbeiter_uid: {mitarbeiter_uid},
};
return this.endpoint
.deleteLehrauftrag(params)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
//window.scrollTo(0, 0);
this.resetModal();
this.$refs.contractdetails.reload();
this.$refs.unassignedLehrauftraege.reloadUnassigned();
})
.catch(this.$fhcAlert.handleSystemError);
},
deleteBetreuung({person_id, vertrag_id, projektarbeit_id, betreuerart_kurzbz}){
let params = {
vertrag_id : {vertrag_id},
person_id: {person_id},
projektarbeit_id: {projektarbeit_id},
betreuerart_kurzbz: {betreuerart_kurzbz},
};
return this.endpoint
.deleteBetreuung(params)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
//window.scrollTo(0, 0);
this.$refs.contractdetails.reload();
this.$refs.unassignedLehrauftraege.reloadUnassigned();
})
.catch(this.$fhcAlert.handleSystemError);
},
updateContractStatus({datum, status}){
//TODO(Manu) refactor this
const formattedDate = datum.toLocaleDateString('en-CA');
const date = new Date();
const formattedDate = datum != null ? datum.toLocaleDateString('en-CA',
{
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
hour12: false, // Use 24-hour format
}
) : null;
let params = {
vertrag_id : this.contractSelected.vertrag_id,
datum : formattedDate,
status: {status}
vertragsstatus_kurzbz: status
};
return this.endpoint
.updateContractStatus(params)
.updateContractStatus(this.$refs.contractstati.$refs.statusData, params)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave'));
//window.scrollTo(0, 0);
this.$refs.contractstati.closeModal();
this.$refs.contractstati.reload();
this.reload();
@@ -324,8 +333,8 @@ export default {
},
loadContractStatus({vertrag_id, status}){
let params = {
vertrag_id : {vertrag_id},
status: {status}
vertrag_id : vertrag_id,
vertragsstatus_kurzbz: status
};
return this.endpoint
.loadContractStatus(params)
@@ -335,6 +344,40 @@ export default {
})
.catch(this.$fhcAlert.handleSystemError);
},
deleteLehrauftrag({lehreinheit_id, vertrag_id, mitarbeiter_uid}){
let params = {
vertrag_id : vertrag_id,
lehreinheit_id: lehreinheit_id,
mitarbeiter_uid: mitarbeiter_uid
};
return this.endpoint
.deleteLehrauftrag(params)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
this.resetModal();
this.$refs.contractdetails.reload();
this.$refs.unassignedLehrauftraege.reloadUnassigned();
})
.catch(this.$fhcAlert.handleSystemError);
},
deleteBetreuung({person_id, vertrag_id, projektarbeit_id, betreuerart_kurzbz}){
let params = {
vertrag_id : vertrag_id,
person_id: person_id,
projektarbeit_id: projektarbeit_id,
betreuerart_kurzbz: betreuerart_kurzbz
};
return this.endpoint
.deleteBetreuung(params)
.then(response => {
this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successDelete'));
this.$refs.contractdetails.reload();
this.$refs.unassignedLehrauftraege.reloadUnassigned();
})
.catch(this.$fhcAlert.handleSystemError);
},
//Methods Unassigned List
saveClickedRows(clickedRows) {
this.childData = clickedRows;
@@ -397,8 +440,7 @@ export default {
},
template: `
<div class="core-vertraege h-100 d-flex flex-column">
<div class="core-contracts h-100 d-flex flex-column">
<!-- filter: open means no status abgerechnet yet-->
<div class="justify-content-end pb-3">
@@ -420,18 +462,17 @@ export default {
:side-menu="false"
reload
new-btn-show
new-btn-label="Vertrag"
:new-btn-label="this.$p.t('ui', 'vertrag')"
@click:new="actionNewContract"
>
</core-filter-cmpt>
</core-filter-cmpt>
<div class = "row">
<div class="col-sm-6">
<!-- ContractDetails -->
<div class="md-4" v-if="contractSelected.vertrag_id !=null">
<contract-details
:person_id="person_id"
<div class="md-4" v-if="contractSelected.vertrag_id !=null">
<contract-details
:person_id="person_id"
:vertrag_id="contractSelected.vertrag_id"
@deleteLehrauftrag="deleteLehrauftrag"
@deleteBetreuung="deleteBetreuung"
@@ -439,12 +480,11 @@ export default {
></contract-details>
</div>
</div>
<div class="col-sm-6">
<!-- ContractStati -->
<div class="md-4" v-if="contractSelected.vertrag_id !=null">
<contract-stati
:vertrag_id="contractSelected.vertrag_id"
<contract-stati
:vertrag_id="contractSelected.vertrag_id"
:listContractStati="listContractStati"
:formDataParent="contractFormData"
@setContractStatus="addNewContractStatus"
@@ -455,123 +495,110 @@ export default {
></contract-stati>
</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>
<core-form class="row g-3" ref="unassignedData">
<!-- {{formData}}-->
<!--TODO(Manu) wenn einer gelöscht wird, wird er auch nicht sofort angezeigt
Auswirkung von Vertragdetails of UnassignedList-->
<list-unassigned
:endpoint="$fhcApi.factory.vertraege.person"
:person_id="person_id"
ref="unassignedLehrauftraege"
@saveClickedRows="saveClickedRows"
@sum-updated="updateBetrag"
></list-unassigned>
<hr>
<!--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>
<div class="row mb-3">
<form-input
type="DatePicker"
:label="$p.t('vertrag/datum_vertrag')"
name="vertragsdatum"
v-model="formData.vertragsdatum"
auto-apply
:enable-time-picker="false"
format="dd.MM.yyyy"
preview-format="dd.MM.yyyy"
:teleport="true"
>
</form-input>
</div>
<div class="row mb-3">
<form-input
type="text"
:label="$p.t('ui/bezeichnung')"
name="bezeichnung"
v-model="formData.bezeichnung"
>
</form-input>
</div>
<div class="row mb-3">
<form-input
type="select"
:label="$p.t('global/typ')"
v-model="formData.vertragstyp_kurzbz"
name="vertragstyp_kurzbz"
>
<option :value="null">-- {{$p.t('fehlermonitoring', 'keineAuswahl')}} --</option>
<option
v-for="entry in listContractTypes"
:key="entry.vertragstyp_kurzbz"
:value="entry.vertragstyp_kurzbz"
>
{{entry.bezeichnung}}
</option>
</form-input>
</div>
<div class="row mb-3">
<form-input
:label="$p.t('ui/betrag')"
name="betrag"
v-model="formData.betrag"
>
</form-input>
</div>
<div class="row mb-3" v-if="!statusNew">
<form-input
type="text"
:label="$p.t('ui/stunden') + ' (' + $p.t('vertrag/vertrag_urfassung')+ ')'"
name="vertragsstunden"
v-model="formData.vertragsstunden"
disabled
>
</form-input>
</div>
<div class="row mb-3" v-if="!statusNew">
<form-input
type="text"
:label="$p.t('lehre/studiensemester') + ' (' + $p.t('vertrag/vertrag_urfassung')+ ')'"
name="vertragsstunden_studiensemester_kurzbz"
v-model="formData.vertragsstunden_studiensemester_kurzbz"
disabled
>
</form-input>
</div>
<list-unassigned
:endpoint="$fhcApi.factory.vertraege.person"
:person_id="person_id"
ref="unassignedLehrauftraege"
@saveClickedRows="saveClickedRows"
@sum-updated="updateBetrag"
></list-unassigned>
<hr>
<core-form ref="contractData">
<div class="row mb-3">
<form-input
type="DatePicker"
:label="$p.t('vertrag/datum_vertrag')"
name="vertragsdatum"
v-model="formData.vertragsdatum"
auto-apply
:enable-time-picker="false"
format="dd.MM.yyyy"
preview-format="dd.MM.yyyy"
:teleport="true"
>
</form-input>
</div>
<div class="row mb-3">
<form-input
type="textarea"
:label="$p.t('global/anmerkung')"
name="anmerkung"
v-model="formData.anmerkung"
>
</form-input>
</div>
<div class="row mb-3">
<form-input
type="text"
:label="$p.t('ui/bezeichnung')"
name="bezeichnung"
v-model="formData.bezeichnung"
>
</form-input>
</div>
<div class="row mb-3">
<form-input
type="select"
:label="$p.t('global/typ')"
v-model="formData.vertragstyp_kurzbz"
name="vertragstyp_kurzbz"
>
<option :value="null">-- {{$p.t('fehlermonitoring', 'keineAuswahl')}} --</option>
<option
v-for="entry in listContractTypes"
:key="entry.vertragstyp_kurzbz"
:value="entry.vertragstyp_kurzbz"
>
{{entry.bezeichnung}}
</option>
</form-input>
</div>
<div class="row mb-3">
<form-input
:label="$p.t('ui/betrag')"
name="betrag"
v-model="formData.betrag"
>
</form-input>
</div>
<div class="row mb-3" v-if="!statusNew">
<form-input
type="text"
:label="$p.t('ui/stunden') + ' (' + $p.t('vertrag/vertrag_urfassung')+ ')'"
name="vertragsstunden"
v-model="formData.vertragsstunden"
disabled
>
</form-input>
</div>
<div class="row mb-3" v-if="!statusNew">
<form-input
type="text"
:label="$p.t('lehre/studiensemester') + ' (' + $p.t('vertrag/vertrag_urfassung')+ ')'"
name="vertragsstunden_studiensemester_kurzbz"
v-model="formData.vertragsstunden_studiensemester_kurzbz"
disabled
>
</form-input>
</div>
<div class="row mb-3">
<form-input
type="textarea"
:label="$p.t('global/anmerkung')"
name="anmerkung"
v-model="formData.anmerkung"
>
</form-input>
</div>
</core-form>
</core-form>
<template #footer>
<button type="button" class="btn btn-primary" @click="statusNew ? addNewContract() : updateContract(formData.vertrag_id)">{{$p.t('ui', 'speichern')}}</button>
</template>
</bs-modal>
<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" @click="statusNew ? addNewContract() : updateContract(formData.vertrag_id)">{{$p.t('vertrag', 'vertragErstellen')}}</button>
</template>
</bs-modal>
</core-form>
</div>`
}
+460
View File
@@ -31207,6 +31207,106 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'deleteVertrag',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Vertrag löschen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Delete contract',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'addStatus',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Vertragstatus hinzufügen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Add contract status',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'editStatus',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Vertragstatus bearbeiten',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Edit contract status',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'deleteStatus',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Vertragstatus löschen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Delete contract status',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'deleteLehrauftrag',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Lehrauftrag löschen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Delete teaching assignment',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
@@ -31307,6 +31407,366 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'error_statusVorhanden',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Status bereits vorhanden',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Status already existing',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'lehreinheit_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Lehreinheit ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Teaching Unit ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'vertragstyp',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Vertragstyp',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Contract Type',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'vertragsdatum',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Vertragsdatum',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Contract Date',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'vertragsdatum_iso',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Vertragsdatum Iso',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Contract Date Iso',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'vertrag_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Vertrag ID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Contract ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'vertragsstunden',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Vertragsstunden',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Contract hours',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'vertragsstunden_studiensemester',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'vertragsstunden Studiensemester',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Contract hours study semester',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'abgerechnet',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'abgerechnetr',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'billed',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'mitarbeiter_uid',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Mitarbeiter UID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Employee UID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'projektarbeit_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Projektarbeit UID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Projekt work ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'pruefung_id',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Prüfung UID',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Exam ID',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'vertragErstellen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Vertrag erstellen',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Create contract',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'vertragDetails',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Vertragdetails',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Contract Details',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'vertragStatus',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Vertragsstatus',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Contract Status',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'error_fieldNotValidDate',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Das Eingabefeld {field} hat kein gültiges Datumsformat',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The input field {field} does not have a valid date format',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'text_explainLehrauftrag',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die folgenden Lehraufträge sind noch keinem Vertrag zugeordnet. Markieren Sie die Lehraufträge um diese dem Vertrag zuzuordnen:',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The following teaching assignments have not yet been assigned to a contract. Mark the teaching assignments to assign them to the contract:',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'vertrag',
'phrase' => 'text_addLehrauftrag',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Folgende Lehraufträge werden hinzugefügt:',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The following teaching assignments will be added:',
'description' => '',
'insertvon' => 'system'
)
)
),
);