mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-25 16:44:28 +00:00
Compare commits
20
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
494d1bdb23 | ||
|
|
edc65621f7 | ||
|
|
0f19788d2d | ||
|
|
e39d05c83c | ||
|
|
ea7910d1a4 | ||
|
|
728a8ab19e | ||
|
|
4d022208e7 | ||
|
|
fcb1ea6534 | ||
|
|
181580fb55 | ||
|
|
e968d21d35 | ||
|
|
4925542c8a | ||
|
|
0f8afd90fd | ||
|
|
1e5979fe70 | ||
|
|
7403c612b0 | ||
|
|
bcf6708e31 | ||
|
|
b511e1b15b | ||
|
|
ed579be7d1 | ||
|
|
8031a7ace8 | ||
|
|
2d18d1856a | ||
|
|
6e0c399831 |
@@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright (C) 2024 fhcomplete.org
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||||
|
|
||||||
|
class Permission extends FHCAPI_Controller
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct([
|
||||||
|
'isBerechtigt' => self::PERM_LOGGED
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Load the library SearchBarLib
|
||||||
|
$this->load->library('PermissionLib');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isBerechtigt()
|
||||||
|
{
|
||||||
|
$payload = json_decode($this->input->raw_input_stream, TRUE);
|
||||||
|
if( !isset($payload['berechtigung_kurzbz']) || empty($payload['berechtigung_kurzbz']) )
|
||||||
|
{
|
||||||
|
$this->terminateWithError('Missing Parameter "berechtigung_kurzbz"');
|
||||||
|
}
|
||||||
|
$berechtigung_kurzbz = $payload['berechtigung_kurzbz'];
|
||||||
|
$art = isset($payload['art']) ? $payload['art'] : null;
|
||||||
|
$oe_kurzbz = isset($payload['oe_kurzbz']) ? $payload['oe_kurzbz'] : null;
|
||||||
|
$kostenstelle_id = isset($payload['kostenstelle_id']) ? $payload['kostenstelle_id'] : null;
|
||||||
|
$payload['isBerechtigt'] = $this->permissionlib->isBerechtigt(
|
||||||
|
$berechtigung_kurzbz, $art, $oe_kurzbz, $kostenstelle_id
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->terminateWithSuccess($payload);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -259,7 +259,7 @@ class BetriebsmittelP extends FHCAPI_Controller
|
|||||||
$kaution = $this->input->post('kaution');
|
$kaution = $this->input->post('kaution');
|
||||||
if($kaution) $kaution = str_replace(',', '.', $kaution);
|
if($kaution) $kaution = str_replace(',', '.', $kaution);
|
||||||
$ausgegebenam = $this->input->post('ausgegebenam');
|
$ausgegebenam = $this->input->post('ausgegebenam');
|
||||||
$retouram = $this->input->post('retouram') == "" ? null : $this->input->post('retouram');
|
$retouram = $this->input->post('retouram');
|
||||||
|
|
||||||
// NOTE(chris): transform_kartennummer
|
// NOTE(chris): transform_kartennummer
|
||||||
if ($betriebsmitteltyp == 'Zutrittskarte' && $nummer)
|
if ($betriebsmitteltyp == 'Zutrittskarte' && $nummer)
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ class Detailheader extends FHCAPI_Controller
|
|||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct([
|
parent::__construct([
|
||||||
'getHeader' => ['vertrag/mitarbeiter:r', 'basis/mitarbeiter:r'],
|
'getHeader' => ['vertrag/mitarbeiter:r'],
|
||||||
'getPersonAbteilung' => ['vertrag/mitarbeiter:r', 'basis/mitarbeiter:r'],
|
'getPersonAbteilung' => ['vertrag/mitarbeiter:r'],
|
||||||
'getLeitungOrg' => ['vertrag/mitarbeiter:r', 'basis/mitarbeiter:r'],
|
'getLeitungOrg' => ['vertrag/mitarbeiter:r'],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -294,10 +294,6 @@ class Funktionen extends FHCAPI_Controller
|
|||||||
{
|
{
|
||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||||
}
|
}
|
||||||
if($datum_von == '')
|
|
||||||
$datum_von = null;
|
|
||||||
if($datum_bis == '')
|
|
||||||
$datum_bis = null;
|
|
||||||
|
|
||||||
$result = $this->BenutzerfunktionModel->update(
|
$result = $this->BenutzerfunktionModel->update(
|
||||||
[
|
[
|
||||||
|
|||||||
@@ -371,9 +371,6 @@ class Abschlusspruefung extends FHCAPI_Controller
|
|||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||||
}
|
}
|
||||||
|
|
||||||
$datum = $formData['datum'] == '' ? null : $formData['datum'];
|
|
||||||
$sponsion = $formData['sponsion'] == '' ? null : $formData['sponsion'];
|
|
||||||
|
|
||||||
$result = $this->AbschlusspruefungModel->update(
|
$result = $this->AbschlusspruefungModel->update(
|
||||||
[
|
[
|
||||||
'abschlusspruefung_id' => $abschlusspruefung_id
|
'abschlusspruefung_id' => $abschlusspruefung_id
|
||||||
@@ -385,8 +382,8 @@ class Abschlusspruefung extends FHCAPI_Controller
|
|||||||
'vorsitz' => $vorsitz,
|
'vorsitz' => $vorsitz,
|
||||||
'pruefungsantritt_kurzbz' => $formData['pruefungsantritt_kurzbz'],
|
'pruefungsantritt_kurzbz' => $formData['pruefungsantritt_kurzbz'],
|
||||||
'abschlussbeurteilung_kurzbz' => $formData['abschlussbeurteilung_kurzbz'],
|
'abschlussbeurteilung_kurzbz' => $formData['abschlussbeurteilung_kurzbz'],
|
||||||
'datum' => $datum,
|
'datum' => $formData['datum'],
|
||||||
'sponsion' => $sponsion,
|
'sponsion' => $formData['sponsion'],
|
||||||
'pruefer1' => $pruefer1,
|
'pruefer1' => $pruefer1,
|
||||||
'pruefer2' => $pruefer2,
|
'pruefer2' => $pruefer2,
|
||||||
'pruefer3' => $pruefer3,
|
'pruefer3' => $pruefer3,
|
||||||
|
|||||||
@@ -170,8 +170,6 @@ class Dokumente extends FHCAPI_Controller
|
|||||||
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
$this->terminateWithValidationErrors($this->form_validation->error_array());
|
||||||
}
|
}
|
||||||
|
|
||||||
$nachgereicht_am = $this->input->post('nachgereicht_am') == '' ? null : $this->input->post('nachgereicht_am');
|
|
||||||
|
|
||||||
$uid = getAuthUID();
|
$uid = getAuthUID();
|
||||||
|
|
||||||
$result = $this->AkteModel->update(
|
$result = $this->AkteModel->update(
|
||||||
@@ -182,7 +180,7 @@ class Dokumente extends FHCAPI_Controller
|
|||||||
'dokument_kurzbz' => $this->input->post('dokument_kurzbz'),
|
'dokument_kurzbz' => $this->input->post('dokument_kurzbz'),
|
||||||
'anmerkung_intern' => $this->input->post('anmerkung_intern'),
|
'anmerkung_intern' => $this->input->post('anmerkung_intern'),
|
||||||
'titel_intern' => $this->input->post('titel_intern'),
|
'titel_intern' => $this->input->post('titel_intern'),
|
||||||
'nachgereicht_am' => $nachgereicht_am,
|
'nachgereicht_am' => $this->input->post('nachgereicht_am'),
|
||||||
'updateamum' => date('c'),
|
'updateamum' => date('c'),
|
||||||
'updatevon' => $uid,
|
'updatevon' => $uid,
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -429,12 +429,9 @@ class Konto extends FHCAPI_Controller
|
|||||||
'updateamum' => date('c'),
|
'updateamum' => date('c'),
|
||||||
'updatevon' => getAuthUID()
|
'updatevon' => getAuthUID()
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($allowed as $field)
|
foreach ($allowed as $field)
|
||||||
if ($this->input->post($field) !== null)
|
if ($this->input->post($field) !== null)
|
||||||
$data[$field] = $this->input->post($field);
|
$data[$field] = $this->input->post($field);
|
||||||
if($data['buchungsdatum'] == '')
|
|
||||||
$data['buchungsdatum'] = null;
|
|
||||||
|
|
||||||
$result = $this->KontoModel->update($id, $data);
|
$result = $this->KontoModel->update($id, $data);
|
||||||
|
|
||||||
|
|||||||
@@ -237,8 +237,8 @@ class Mobility extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
$formData = $this->input->post('formData');
|
$formData = $this->input->post('formData');
|
||||||
|
|
||||||
$von = ($formData['von'] ?? '') ?: null;
|
$von = $formData['von'] ?? null;
|
||||||
$bis = ($formData['bis'] ?? '') ?: null;
|
$bis = $formData['bis'] ?? null;
|
||||||
$nation_code = $formData['nation_code'] ?? null;
|
$nation_code = $formData['nation_code'] ?? null;
|
||||||
$mobilitaetsprogramm_code = $formData['mobilitaetsprogramm_code'] ?? null;
|
$mobilitaetsprogramm_code = $formData['mobilitaetsprogramm_code'] ?? null;
|
||||||
$herkunftsland_code = $formData['herkunftsland_code'] ?? null;
|
$herkunftsland_code = $formData['herkunftsland_code'] ?? null;
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ class Prestudent extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
elseif (
|
elseif (
|
||||||
$val === ''
|
$val === ''
|
||||||
&& in_array($prop, ['zgvnation', 'zgvmanation', 'zgvdoktornation', 'berufstaetigkeit_code', 'ausbildungcode', 'zgvdatum', 'zgvmadatum'])
|
&& in_array($prop, ['zgvnation', 'zgvmanation', 'zgvdoktornation', 'berufstaetigkeit_code', 'ausbildungcode'])
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$val = null;
|
$val = null;
|
||||||
|
|||||||
@@ -448,10 +448,8 @@ class Pruefung extends FHCAPI_Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$datum = $this->input->post('datum') == '' ? null : $this->input->post('datum');
|
|
||||||
if(intval($pruefung_id) > 0)
|
if(intval($pruefung_id) > 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
$result = $this->PruefungModel->update(
|
$result = $this->PruefungModel->update(
|
||||||
[
|
[
|
||||||
'pruefung_id' => $pruefung_id
|
'pruefung_id' => $pruefung_id
|
||||||
@@ -461,7 +459,7 @@ class Pruefung extends FHCAPI_Controller
|
|||||||
'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'),
|
'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'),
|
||||||
'note' => $this->input->post('note'),
|
'note' => $this->input->post('note'),
|
||||||
'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'),
|
'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'),
|
||||||
'datum' => $datum,
|
'datum' => $this->input->post('datum'),
|
||||||
'anmerkung' => $this->input->post('anmerkung'),
|
'anmerkung' => $this->input->post('anmerkung'),
|
||||||
'updatevon' => $authUID,
|
'updatevon' => $authUID,
|
||||||
'updateamum' => date('c'),
|
'updateamum' => date('c'),
|
||||||
@@ -474,7 +472,7 @@ class Pruefung extends FHCAPI_Controller
|
|||||||
'lehreinheit_id' => $this->input->post('lehreinheit_id'),
|
'lehreinheit_id' => $this->input->post('lehreinheit_id'),
|
||||||
'student_uid' => $this->input->post('student_uid'),
|
'student_uid' => $this->input->post('student_uid'),
|
||||||
'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'),
|
'mitarbeiter_uid' => $this->input->post('mitarbeiter_uid'),
|
||||||
'datum' => $datum,
|
'datum' => $this->input->post('datum'),
|
||||||
'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'),
|
'pruefungstyp_kurzbz' => $this->input->post('pruefungstyp_kurzbz'),
|
||||||
'note' => $this->input->post('note'),
|
'note' => $this->input->post('note'),
|
||||||
'anmerkung' => $this->input->post('anmerkung'),
|
'anmerkung' => $this->input->post('anmerkung'),
|
||||||
@@ -522,7 +520,7 @@ class Pruefung extends FHCAPI_Controller
|
|||||||
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
'studiensemester_kurzbz' => $studiensemester_kurzbz,
|
||||||
'note' => $this->input->post('note'),
|
'note' => $this->input->post('note'),
|
||||||
'uebernahmedatum' => date('c'),
|
'uebernahmedatum' => date('c'),
|
||||||
'benotungsdatum' => $datum,
|
'benotungsdatum' => $this->input->post('datum'),
|
||||||
'insertamum' => date('c'),
|
'insertamum' => date('c'),
|
||||||
'insertvon' => $authUID,
|
'insertvon' => $authUID,
|
||||||
'punkte' => $this->input->post('punkte') ? str_replace(',', '.', $this->input->post('punkte')) : null
|
'punkte' => $this->input->post('punkte') ? str_replace(',', '.', $this->input->post('punkte')) : null
|
||||||
@@ -557,7 +555,7 @@ class Pruefung extends FHCAPI_Controller
|
|||||||
], [
|
], [
|
||||||
'note' => $this->input->post('note'),
|
'note' => $this->input->post('note'),
|
||||||
'uebernahmedatum' => date('c'),
|
'uebernahmedatum' => date('c'),
|
||||||
'benotungsdatum' => $datum,
|
'benotungsdatum' => $this->input->post('datum'),
|
||||||
'updateamum' => date('c'),
|
'updateamum' => date('c'),
|
||||||
'updatevon' => $authUID,
|
'updatevon' => $authUID,
|
||||||
'punkte' => $this->input->post('punkte') ? str_replace(',', '.', $this->input->post('punkte')) : null
|
'punkte' => $this->input->post('punkte') ? str_replace(',', '.', $this->input->post('punkte')) : null
|
||||||
|
|||||||
@@ -296,10 +296,6 @@ class Student extends FHCAPI_Controller
|
|||||||
$fotoval = ($val == '') ? null : str_replace('data:image/jpeg;base64,', '', $val);
|
$fotoval = ($val == '') ? null : str_replace('data:image/jpeg;base64,', '', $val);
|
||||||
$update_person[$prop] = $fotoval;
|
$update_person[$prop] = $fotoval;
|
||||||
}
|
}
|
||||||
else if ($prop == 'gebdatum')
|
|
||||||
{
|
|
||||||
$update_person[$prop] = ($val == '') ? null : $val;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$update_person[$prop] = $val;
|
$update_person[$prop] = $val;
|
||||||
|
|||||||
@@ -15,6 +15,13 @@ class GehaltsbestandteilLib
|
|||||||
protected $CI;
|
protected $CI;
|
||||||
/** @var Gehaltsbestandteil_model */
|
/** @var Gehaltsbestandteil_model */
|
||||||
protected $GehaltsbestandteilModel;
|
protected $GehaltsbestandteilModel;
|
||||||
|
/** @var Dienstverhaeltnis_model */
|
||||||
|
protected $DienstverhaeltnisModel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var PermissionLib
|
||||||
|
*/
|
||||||
|
protected $PermissionLib;
|
||||||
|
|
||||||
protected $loggedInUser;
|
protected $loggedInUser;
|
||||||
|
|
||||||
@@ -24,7 +31,25 @@ class GehaltsbestandteilLib
|
|||||||
$this->CI = get_instance();
|
$this->CI = get_instance();
|
||||||
$this->CI->load->model('vertragsbestandteil/Gehaltsbestandteil_model',
|
$this->CI->load->model('vertragsbestandteil/Gehaltsbestandteil_model',
|
||||||
'GehaltsbestandteilModel');
|
'GehaltsbestandteilModel');
|
||||||
|
$this->CI->load->model('vertragsbestandteil/Dienstverhaeltnis_model',
|
||||||
|
'DienstverhaeltnisModel');
|
||||||
|
$this->DienstverhaeltnisModel = $this->CI->DienstverhaeltnisModel;
|
||||||
|
$this->CI->load->library('extensions/FHC-Core-Personalverwaltung/abrechnung/GehaltsLib');
|
||||||
$this->GehaltsbestandteilModel = $this->CI->GehaltsbestandteilModel;
|
$this->GehaltsbestandteilModel = $this->CI->GehaltsbestandteilModel;
|
||||||
|
$this->CI->load->library('PermissionLib', null, 'PermissionLib');
|
||||||
|
$this->PermissionLib = $this->CI->PermissionLib;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function fetchDienstverhaeltnis($dienstverhaeltnis_id)
|
||||||
|
{
|
||||||
|
$result = $this->DienstverhaeltnisModel->load($dienstverhaeltnis_id);
|
||||||
|
$dv = null;
|
||||||
|
if(null !== ($row = getData($result)))
|
||||||
|
{
|
||||||
|
$dv = new Dienstverhaeltnis();
|
||||||
|
$dv->hydrateByStdClass($row[0], true);
|
||||||
|
}
|
||||||
|
return $dv;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function fetchGehaltsbestandteileValorisiertForChart($dienstverhaeltnis_id, $stichtag=null, $includefuture=false)
|
public function fetchGehaltsbestandteileValorisiertForChart($dienstverhaeltnis_id, $stichtag=null, $includefuture=false)
|
||||||
@@ -120,12 +145,24 @@ class GehaltsbestandteilLib
|
|||||||
{
|
{
|
||||||
$this->setUIDtoPGSQL();
|
$this->setUIDtoPGSQL();
|
||||||
|
|
||||||
$ret = $this->GehaltsbestandteilModel->delete($gehaltsbestandteil->getGehaltsbestandteil_id());
|
$dv = $this->fetchDienstverhaeltnis($gehaltsbestandteil->getDienstverhaeltnis_id());
|
||||||
|
if($dv && $this->PermissionLib->isberechtigt('basis/gehaelter', 'd', $dv->getOe_kurzbz()))
|
||||||
if (isError($ret))
|
|
||||||
{
|
{
|
||||||
throw new Exception('error deleting gehaltsbestandteil');
|
// delete Gehaltsabrechnung
|
||||||
|
$ret = $this->CI->gehaltslib->deleteAbrechnung($gehaltsbestandteil);
|
||||||
|
|
||||||
|
//
|
||||||
|
$ret = $this->GehaltsbestandteilModel->delete($gehaltsbestandteil->getGehaltsbestandteil_id());
|
||||||
|
|
||||||
|
if (isError($ret))
|
||||||
|
{
|
||||||
|
throw new Exception('error deleting gehaltsbestandteil');
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
throw new Exception('permission denied for deleting gehaltsbestandteil');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function endGehaltsbestandteil(Gehaltsbestandteil $gehaltsbestandteil, $enddate)
|
public function endGehaltsbestandteil(Gehaltsbestandteil $gehaltsbestandteil, $enddate)
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace vertragsbestandteil;
|
||||||
|
|
||||||
|
class NoPermissionException extends \Exception
|
||||||
|
{
|
||||||
|
// Redefine the exception so message isn't optional
|
||||||
|
public function __construct($message, $code = 0, ?\Throwable $previous = null) {
|
||||||
|
|
||||||
|
// make sure everything is assigned properly
|
||||||
|
parent::__construct($message, $code, $previous);
|
||||||
|
}
|
||||||
|
|
||||||
|
// custom string representation of object
|
||||||
|
public function __toString() {
|
||||||
|
return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -13,10 +13,12 @@ require_once __DIR__ . '/VertragsbestandteilKarenz.php';
|
|||||||
require_once __DIR__ . '/VertragsbestandteilLohnguide.php';
|
require_once __DIR__ . '/VertragsbestandteilLohnguide.php';
|
||||||
require_once __DIR__ . '/VertragsbestandteilFactory.php';
|
require_once __DIR__ . '/VertragsbestandteilFactory.php';
|
||||||
require_once __DIR__ . '/OverlapChecker.php';
|
require_once __DIR__ . '/OverlapChecker.php';
|
||||||
|
require_once __DIR__ . '/NoPermissionException.php';
|
||||||
|
|
||||||
use vertragsbestandteil\Dienstverhaeltnis;
|
use vertragsbestandteil\Dienstverhaeltnis;
|
||||||
use vertragsbestandteil\Vertragsbestandteil;
|
use vertragsbestandteil\Vertragsbestandteil;
|
||||||
use vertragsbestandteil\VertragsbestandteilFactory;
|
use vertragsbestandteil\VertragsbestandteilFactory;
|
||||||
|
use vertragsbestandteil\NoPermissionException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description of VertragsbestandteilLib
|
* Description of VertragsbestandteilLib
|
||||||
@@ -35,6 +37,8 @@ class VertragsbestandteilLib
|
|||||||
protected $DienstverhaeltnisModel;
|
protected $DienstverhaeltnisModel;
|
||||||
/** @var Vertragsbestandteil_model */
|
/** @var Vertragsbestandteil_model */
|
||||||
protected $VertragsbestandteilModel;
|
protected $VertragsbestandteilModel;
|
||||||
|
/** @var GehaltsbestandeilModel */
|
||||||
|
protected $GehaltbestandteilModel;
|
||||||
/** @var Benutzer_model */
|
/** @var Benutzer_model */
|
||||||
protected $BenutzerModel;
|
protected $BenutzerModel;
|
||||||
/**
|
/**
|
||||||
@@ -44,6 +48,11 @@ class VertragsbestandteilLib
|
|||||||
|
|
||||||
protected $loggedInUser;
|
protected $loggedInUser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var PermissionLib
|
||||||
|
*/
|
||||||
|
protected $PermissionLib;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->loggedInUser = getAuthUID();
|
$this->loggedInUser = getAuthUID();
|
||||||
@@ -54,12 +63,17 @@ class VertragsbestandteilLib
|
|||||||
$this->CI->load->model('vertragsbestandteil/Vertragsbestandteil_model',
|
$this->CI->load->model('vertragsbestandteil/Vertragsbestandteil_model',
|
||||||
'VertragsbestandteilModel');
|
'VertragsbestandteilModel');
|
||||||
$this->VertragsbestandteilModel = $this->CI->VertragsbestandteilModel;
|
$this->VertragsbestandteilModel = $this->CI->VertragsbestandteilModel;
|
||||||
|
$this->CI->load->model('vertragsbestandteil/Gehaltsbestandteil_model',
|
||||||
|
'GehaltbestandteilModel');
|
||||||
|
$this->GehaltbestandteilModel = $this->CI->GehaltbestandteilModel;
|
||||||
$this->CI->load->model('person/benutzer_model',
|
$this->CI->load->model('person/benutzer_model',
|
||||||
'BenutzerModel');
|
'BenutzerModel');
|
||||||
$this->BenutzerModel = $this->CI->BenutzerModel;
|
$this->BenutzerModel = $this->CI->BenutzerModel;
|
||||||
$this->CI->load->library('vertragsbestandteil/GehaltsbestandteilLib',
|
$this->CI->load->library('vertragsbestandteil/GehaltsbestandteilLib',
|
||||||
null, 'GehaltsbestandteilLib');
|
null, 'GehaltsbestandteilLib');
|
||||||
$this->GehaltsbestandteilLib = $this->CI->GehaltsbestandteilLib;
|
$this->GehaltsbestandteilLib = $this->CI->GehaltsbestandteilLib;
|
||||||
|
$this->CI->load->library('PermissionLib', null, 'PermissionLib');
|
||||||
|
$this->PermissionLib = $this->CI->PermissionLib;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handleGUIData($guidata, $employeeUID, $userUID)
|
public function handleGUIData($guidata, $employeeUID, $userUID)
|
||||||
@@ -99,9 +113,14 @@ class VertragsbestandteilLib
|
|||||||
$vbs = $this->VertragsbestandteilModel->getVertragsbestandteile(
|
$vbs = $this->VertragsbestandteilModel->getVertragsbestandteile(
|
||||||
$dienstverhaeltnis_id, $stichtag, $includefuture
|
$dienstverhaeltnis_id, $stichtag, $includefuture
|
||||||
);
|
);
|
||||||
$gbs = $this->GehaltsbestandteilLib->fetchGehaltsbestandteile(
|
$dv = $this->fetchDienstverhaeltnis($dienstverhaeltnis_id);
|
||||||
$dienstverhaeltnis_id, $stichtag, $includefuture, $withvalorisationhistory
|
$gbs = array();
|
||||||
);
|
if($dv && $this->PermissionLib->isberechtigt('basis/gehaelter', 's', $dv->getOe_kurzbz()))
|
||||||
|
{
|
||||||
|
$gbs = $this->GehaltsbestandteilLib->fetchGehaltsbestandteile(
|
||||||
|
$dienstverhaeltnis_id, $stichtag, $includefuture, $withvalorisationhistory
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$gbsByVBid = array();
|
$gbsByVBid = array();
|
||||||
foreach( $gbs as $gb )
|
foreach( $gbs as $gb )
|
||||||
@@ -235,8 +254,12 @@ class VertragsbestandteilLib
|
|||||||
throw new Exception("Transaction failed");
|
throw new Exception("Transaction failed");
|
||||||
}
|
}
|
||||||
$this->CI->db->trans_commit();
|
$this->CI->db->trans_commit();
|
||||||
}
|
} catch (NoPermissionException $e) {
|
||||||
catch (Exception $ex)
|
log_message('debug', "Transaction rolled back. " . $e->getMessage());
|
||||||
|
$this->CI->db->trans_rollback();
|
||||||
|
// rethrow and let GUIHandler catch it to display error message
|
||||||
|
throw $e;
|
||||||
|
} catch (Exception $ex)
|
||||||
{
|
{
|
||||||
log_message('debug', "Transaction rolled back. " . $ex->getMessage());
|
log_message('debug', "Transaction rolled back. " . $ex->getMessage());
|
||||||
$this->CI->db->trans_rollback();
|
$this->CI->db->trans_rollback();
|
||||||
@@ -314,6 +337,15 @@ class VertragsbestandteilLib
|
|||||||
|
|
||||||
private function deleteVertragsbestandteilHelper(Vertragsbestandteil $vertragsbestandteil)
|
private function deleteVertragsbestandteilHelper(Vertragsbestandteil $vertragsbestandteil)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$dv = $this->fetchDienstverhaeltnis($vertragsbestandteil->getDienstverhaeltnis_id());
|
||||||
|
$hasGehaltsPermission = $this->PermissionLib->isberechtigt('basis/gehaelter', 's', $dv->getOe_kurzbz());
|
||||||
|
$vbHasGehaltsbestandteile = $this->GehaltbestandteilModel->existsGehaltsbestandteil($vertragsbestandteil->getVertragsbestandteil_id());
|
||||||
|
|
||||||
|
if (!$hasGehaltsPermission && $vbHasGehaltsbestandteile)
|
||||||
|
{
|
||||||
|
throw new NoPermissionException('delete Gehaltsbestandteil permission denied');
|
||||||
|
}
|
||||||
|
|
||||||
$specialisedModel = VertragsbestandteilFactory::getVertragsbestandteilDBModel(
|
$specialisedModel = VertragsbestandteilFactory::getVertragsbestandteilDBModel(
|
||||||
$vertragsbestandteil->getVertragsbestandteiltyp_kurzbz());
|
$vertragsbestandteil->getVertragsbestandteiltyp_kurzbz());
|
||||||
|
|||||||
@@ -129,6 +129,15 @@ LEFT JOIN
|
|||||||
array($dienstverhaeltnis_id),
|
array($dienstverhaeltnis_id),
|
||||||
$this->getEncryptedColumns());
|
$this->getEncryptedColumns());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function existsGehaltsbestandteil($vertragsbestandteil_id)
|
||||||
|
{
|
||||||
|
$qry = "select count(*) from hr.tbl_gehaltsbestandteil where vertragsbestandteil_id=?";
|
||||||
|
$ret = $this->execQuery($qry,
|
||||||
|
array($vertragsbestandteil_id));
|
||||||
|
$d = getData($ret);
|
||||||
|
return $d !== null && $d > 0;
|
||||||
|
}
|
||||||
|
|
||||||
public function getGehaltsbestandteile($dienstverhaeltnis_id, $stichtag=null,
|
public function getGehaltsbestandteile($dienstverhaeltnis_id, $stichtag=null,
|
||||||
$includefuture=false, $withvalorisationhistory=true)
|
$includefuture=false, $withvalorisationhistory=true)
|
||||||
|
|||||||
@@ -148,6 +148,9 @@
|
|||||||
generateJSsInclude('vendor/npm-asset/primevue/autocomplete/autocomplete.min.js');
|
generateJSsInclude('vendor/npm-asset/primevue/autocomplete/autocomplete.min.js');
|
||||||
generateJSsInclude('vendor/npm-asset/primevue/overlaypanel/overlaypanel.min.js');
|
generateJSsInclude('vendor/npm-asset/primevue/overlaypanel/overlaypanel.min.js');
|
||||||
generateJSsInclude('vendor/npm-asset/primevue/datatable/datatable.min.js');
|
generateJSsInclude('vendor/npm-asset/primevue/datatable/datatable.min.js');
|
||||||
|
generateJSsInclude('vendor/npm-asset/primevue/fileupload/fileupload.min.js');
|
||||||
|
generateJSsInclude('vendor/npm-asset/primevue/tabview/tabview.min.js');
|
||||||
|
generateJSsInclude('vendor/npm-asset/primevue/tabpanel/tabpanel.min.js');
|
||||||
// TODO check ob notwendig
|
// TODO check ob notwendig
|
||||||
generateJSsInclude('vendor/npm-asset/primevue/toast/toast.min.js');
|
generateJSsInclude('vendor/npm-asset/primevue/toast/toast.min.js');
|
||||||
generateJSsInclude('vendor/npm-asset/primevue/toastservice/toastservice.min.js');
|
generateJSsInclude('vendor/npm-asset/primevue/toastservice/toastservice.min.js');
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (C) 2025 fhcomplete.org
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export default {
|
||||||
|
|
||||||
|
isBerechtigt(berechtigung_kurzbz, art, oe_kurzbz, kostenstelle_id) {
|
||||||
|
return {
|
||||||
|
method: 'post',
|
||||||
|
url: '/api/frontend/v1/Permission/isBerechtigt',
|
||||||
|
params: { berechtigung_kurzbz, art, oe_kurzbz, kostenstelle_id }
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
@@ -39,6 +39,7 @@ import studiengang from "./studiengang.js";
|
|||||||
import menu from "./menu.js";
|
import menu from "./menu.js";
|
||||||
import dashboard from "./dashboard.js";
|
import dashboard from "./dashboard.js";
|
||||||
import authinfo from "./authinfo.js";
|
import authinfo from "./authinfo.js";
|
||||||
|
import permission from "./permission.js";
|
||||||
import vertraege from "./vertraege.js";
|
import vertraege from "./vertraege.js";
|
||||||
import studium from "./studium.js";
|
import studium from "./studium.js";
|
||||||
import language from "./language.js";
|
import language from "./language.js";
|
||||||
@@ -65,10 +66,10 @@ export default {
|
|||||||
addons,
|
addons,
|
||||||
messages,
|
messages,
|
||||||
vorlagen,
|
vorlagen,
|
||||||
addons,
|
|
||||||
studiengang,
|
studiengang,
|
||||||
menu,
|
menu,
|
||||||
authinfo,
|
authinfo,
|
||||||
|
permission,
|
||||||
vertraege,
|
vertraege,
|
||||||
studium,
|
studium,
|
||||||
language
|
language
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
export default {
|
||||||
|
isBerechtigt: function(berechtigung_kurzbz, art, oe_kurzbz, kostenstelle_id) {
|
||||||
|
var url = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router
|
||||||
|
+ '/api/frontend/v1/Permission/isBerechtigt';
|
||||||
|
var payload = {
|
||||||
|
"berechtigung_kurzbz": berechtigung_kurzbz,
|
||||||
|
"art": art,
|
||||||
|
"oe_kurzbz": oe_kurzbz,
|
||||||
|
"kostenstelle_id": kostenstelle_id
|
||||||
|
};
|
||||||
|
return axios.post(url, payload, {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -433,7 +433,6 @@ export default {
|
|||||||
:label="$p.t('wawi/ausgegebenam')"
|
:label="$p.t('wawi/ausgegebenam')"
|
||||||
name="ausgegebenam"
|
name="ausgegebenam"
|
||||||
v-model="formData.ausgegebenam"
|
v-model="formData.ausgegebenam"
|
||||||
model-type="yyyy-MM-dd"
|
|
||||||
auto-apply
|
auto-apply
|
||||||
:enable-time-picker="false"
|
:enable-time-picker="false"
|
||||||
text-input
|
text-input
|
||||||
@@ -450,7 +449,6 @@ export default {
|
|||||||
:label="$p.t('wawi/retouram')"
|
:label="$p.t('wawi/retouram')"
|
||||||
name="retouram"
|
name="retouram"
|
||||||
v-model="formData.retouram"
|
v-model="formData.retouram"
|
||||||
model-type="yyyy-MM-dd"
|
|
||||||
auto-apply
|
auto-apply
|
||||||
:enable-time-picker="false"
|
:enable-time-picker="false"
|
||||||
text-input
|
text-input
|
||||||
|
|||||||
@@ -551,7 +551,6 @@ export default {
|
|||||||
container-class="mb-3 col-3"
|
container-class="mb-3 col-3"
|
||||||
type="DatePicker"
|
type="DatePicker"
|
||||||
v-model="formData.datum_von"
|
v-model="formData.datum_von"
|
||||||
model-type="yyyy-MM-dd"
|
|
||||||
name="datum_von"
|
name="datum_von"
|
||||||
:label="$p.t('ui/from') + ' *'"
|
:label="$p.t('ui/from') + ' *'"
|
||||||
auto-apply
|
auto-apply
|
||||||
@@ -567,7 +566,6 @@ export default {
|
|||||||
container-class="mb-3 col-3"
|
container-class="mb-3 col-3"
|
||||||
type="DatePicker"
|
type="DatePicker"
|
||||||
v-model="formData.datum_bis"
|
v-model="formData.datum_bis"
|
||||||
model-type="yyyy-MM-dd"
|
|
||||||
name="datum_bis"
|
name="datum_bis"
|
||||||
:label="$p.t('global/bis')"
|
:label="$p.t('global/bis')"
|
||||||
auto-apply
|
auto-apply
|
||||||
|
|||||||
-1
@@ -470,7 +470,6 @@ export default {
|
|||||||
:label="$p.t('admission', 'anmeldundRtAm')"
|
:label="$p.t('admission', 'anmeldundRtAm')"
|
||||||
type="DatePicker"
|
type="DatePicker"
|
||||||
v-model="formData.anmeldedatum"
|
v-model="formData.anmeldedatum"
|
||||||
model-type="yyyy-MM-dd"
|
|
||||||
auto-apply
|
auto-apply
|
||||||
:enable-time-picker="false"
|
:enable-time-picker="false"
|
||||||
text-input
|
text-input
|
||||||
|
|||||||
@@ -293,7 +293,6 @@ export default {
|
|||||||
:label="$p.t('person', 'geburtsdatum')"
|
:label="$p.t('person', 'geburtsdatum')"
|
||||||
type="DatePicker"
|
type="DatePicker"
|
||||||
v-model="data.gebdatum"
|
v-model="data.gebdatum"
|
||||||
model-type="yyyy-MM-dd"
|
|
||||||
name="gebdatum"
|
name="gebdatum"
|
||||||
:clearable="false"
|
:clearable="false"
|
||||||
no-today
|
no-today
|
||||||
|
|||||||
@@ -103,7 +103,6 @@ export default {
|
|||||||
<form-input
|
<form-input
|
||||||
type="DatePicker"
|
type="DatePicker"
|
||||||
v-model="formData.nachgereicht_am"
|
v-model="formData.nachgereicht_am"
|
||||||
model-type="yyyy-MM-dd"
|
|
||||||
name="nachgereicht_am"
|
name="nachgereicht_am"
|
||||||
:label="$p.t('dokumente/nachreichungAm')"
|
:label="$p.t('dokumente/nachreichungAm')"
|
||||||
auto-apply
|
auto-apply
|
||||||
|
|||||||
@@ -467,7 +467,6 @@ export default {
|
|||||||
:label="$p.t('ui', 'von')"
|
:label="$p.t('ui', 'von')"
|
||||||
type="DatePicker"
|
type="DatePicker"
|
||||||
v-model="formData.von"
|
v-model="formData.von"
|
||||||
model-type="yyyy-MM-dd"
|
|
||||||
auto-apply
|
auto-apply
|
||||||
:enable-time-picker="false"
|
:enable-time-picker="false"
|
||||||
text-input
|
text-input
|
||||||
@@ -502,7 +501,6 @@ export default {
|
|||||||
:label="$p.t('global', 'bis')"
|
:label="$p.t('global', 'bis')"
|
||||||
type="DatePicker"
|
type="DatePicker"
|
||||||
v-model="formData.bis"
|
v-model="formData.bis"
|
||||||
model-type="yyyy-MM-dd"
|
|
||||||
auto-apply
|
auto-apply
|
||||||
:enable-time-picker="false"
|
:enable-time-picker="false"
|
||||||
text-input
|
text-input
|
||||||
|
|||||||
@@ -276,7 +276,6 @@ export default{
|
|||||||
container-class="mb-3"
|
container-class="mb-3"
|
||||||
type="DatePicker"
|
type="DatePicker"
|
||||||
v-model="formData.datum"
|
v-model="formData.datum"
|
||||||
model-type="yyyy-MM-dd"
|
|
||||||
name="datum"
|
name="datum"
|
||||||
:label="$p.t('global/datum')"
|
:label="$p.t('global/datum')"
|
||||||
auto-apply
|
auto-apply
|
||||||
@@ -292,7 +291,6 @@ export default{
|
|||||||
container-class="mb-3"
|
container-class="mb-3"
|
||||||
type="DatePicker"
|
type="DatePicker"
|
||||||
v-model="formData.bestaetigtam"
|
v-model="formData.bestaetigtam"
|
||||||
model-type="yyyy-MM-dd"
|
|
||||||
name="bestaetigtam"
|
name="bestaetigtam"
|
||||||
:label="$p.t('lehre/bestaetigt_am')"
|
:label="$p.t('lehre/bestaetigt_am')"
|
||||||
auto-apply
|
auto-apply
|
||||||
@@ -308,14 +306,13 @@ export default{
|
|||||||
container-class="mb-3"
|
container-class="mb-3"
|
||||||
type="DatePicker"
|
type="DatePicker"
|
||||||
v-model="formData.bewerbung_abgeschicktamum"
|
v-model="formData.bewerbung_abgeschicktamum"
|
||||||
model-type="yyyy-MM-dd HH:mm:ss"
|
|
||||||
name="bewerbung_abgeschicktamum"
|
name="bewerbung_abgeschicktamum"
|
||||||
:label="$p.t('lehre/bewerbung_abgeschickt_am')"
|
:label="$p.t('lehre/bewerbung_abgeschickt_am')"
|
||||||
auto-apply
|
auto-apply
|
||||||
:enable-time-picker="true"
|
:enable-time-picker="false"
|
||||||
format="dd.MM.yyyy HH:mm:ss"
|
format="dd.MM.yyyy"
|
||||||
text-input
|
text-input
|
||||||
preview-format="dd.MM.yyyy HH:mm:ss"
|
preview-format="dd.MM.yyyy"
|
||||||
:teleport="true"
|
:teleport="true"
|
||||||
:disabled="bisLocked || !hasPrestudentstatusPermission"
|
:disabled="bisLocked || !hasPrestudentstatusPermission"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -285,7 +285,6 @@ export default {
|
|||||||
uid="stv-list-new-gebdatum"
|
uid="stv-list-new-gebdatum"
|
||||||
name="gebdatum"
|
name="gebdatum"
|
||||||
v-model="formDataPerson['gebdatum']"
|
v-model="formDataPerson['gebdatum']"
|
||||||
model-type="yyyy-MM-dd"
|
|
||||||
:disabled="!!person"
|
:disabled="!!person"
|
||||||
@update:model-value="loadSuggestions"
|
@update:model-value="loadSuggestions"
|
||||||
text-input
|
text-input
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import FormInput from '../Form/Input.js';
|
|||||||
import ApiUdf from '../../api/udf.js';
|
import ApiUdf from '../../api/udf.js';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'CoreUdfCmpt',
|
|
||||||
components: {
|
components: {
|
||||||
CoreFetchCmpt,
|
CoreFetchCmpt,
|
||||||
FormInput
|
FormInput
|
||||||
@@ -27,8 +26,7 @@ export default {
|
|||||||
// The values as associative array
|
// The values as associative array
|
||||||
modelValue: Object,
|
modelValue: Object,
|
||||||
// Show only fields with a name that exists in the filter
|
// Show only fields with a name that exists in the filter
|
||||||
filter: [String, Array],
|
filter: [String, Array]
|
||||||
readonly: true
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -37,13 +35,6 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
isPkValid() {
|
|
||||||
// If the provided pk is _not_ valid
|
|
||||||
return !Object.keys(this.pk).every(key => !this.pk[key]);
|
|
||||||
},
|
|
||||||
getReadonly() {
|
|
||||||
return this.readonly;
|
|
||||||
},
|
|
||||||
filterArray() {
|
filterArray() {
|
||||||
if (!this.filter || Array.isArray(this.filter))
|
if (!this.filter || Array.isArray(this.filter))
|
||||||
return this.filter;
|
return this.filter;
|
||||||
@@ -70,10 +61,6 @@ export default {
|
|||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
pk(n, o) {
|
pk(n, o) {
|
||||||
|
|
||||||
// If the provided pk is _not_ valid
|
|
||||||
if (Object.keys(n).every(key => !n[key])) return;
|
|
||||||
|
|
||||||
if (!this.$refs.fetch)
|
if (!this.$refs.fetch)
|
||||||
return; // NOTE(chris): no initial load yet
|
return; // NOTE(chris): no initial load yet
|
||||||
|
|
||||||
@@ -137,7 +124,6 @@ export default {
|
|||||||
template: `
|
template: `
|
||||||
<div class="core-udf row">
|
<div class="core-udf row">
|
||||||
<core-fetch-cmpt
|
<core-fetch-cmpt
|
||||||
v-if="isPkValid"
|
|
||||||
ref="fetch"
|
ref="fetch"
|
||||||
:api-function="loadF"
|
:api-function="loadF"
|
||||||
:api-function-parameters="{ ciModel, pk }"
|
:api-function-parameters="{ ciModel, pk }"
|
||||||
@@ -152,7 +138,7 @@ export default {
|
|||||||
:type="field.type"
|
:type="field.type"
|
||||||
:multiple="field.multiple"
|
:multiple="field.multiple"
|
||||||
:title="field.description"
|
:title="field.description"
|
||||||
:disabled="field.disabled || getReadonly"
|
:disabled="field.disabled"
|
||||||
:clearable="field.clearable"
|
:clearable="field.clearable"
|
||||||
:auto-apply="field.autoApply"
|
:auto-apply="field.autoApply"
|
||||||
:enable-time-picker="field.enableTimePicker"
|
:enable-time-picker="field.enableTimePicker"
|
||||||
@@ -166,4 +152,4 @@ export default {
|
|||||||
</template>
|
</template>
|
||||||
</core-fetch-cmpt>
|
</core-fetch-cmpt>
|
||||||
</div>`
|
</div>`
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2017 fhcomplete.org
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as
|
||||||
|
* published by the Free Software Foundation; either version 2 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
*
|
||||||
|
* Authors: Harald Bamberger <[email protected]>,
|
||||||
|
*
|
||||||
|
* Beschreibung:
|
||||||
|
* Permissions f. DV erstellen und bearbeiten bzw. korrigieren, Gehaelter
|
||||||
|
*/
|
||||||
|
if (! defined('DB_NAME')) exit('No direct script access allowed');
|
||||||
|
|
||||||
|
// Add permission: basis/gehaelter
|
||||||
|
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'basis/gehaelter';"))
|
||||||
|
{
|
||||||
|
if($db->db_num_rows($result) == 0)
|
||||||
|
{
|
||||||
|
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('basis/gehaelter', 'Zugriff auf gehaelter');";
|
||||||
|
|
||||||
|
if(!$db->db_query($qry))
|
||||||
|
{
|
||||||
|
echo '<strong>system.tbl_berechtigung '.$db->db_last_error().'</strong><br>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo 'system.tbl_berechtigung: Added permission "basis/gehaelter"<br>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -27580,6 +27580,26 @@ array(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
array(
|
||||||
|
'app' => 'personalverwaltung',
|
||||||
|
'category' => 'person',
|
||||||
|
'phrase' => 'weiterbildung',
|
||||||
|
'insertvon' => 'system',
|
||||||
|
'phrases' => array(
|
||||||
|
array(
|
||||||
|
'sprache' => 'German',
|
||||||
|
'text' => 'Weiterbildung',
|
||||||
|
'description' => '',
|
||||||
|
'insertvon' => 'system'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'sprache' => 'English',
|
||||||
|
'text' => 'Training',
|
||||||
|
'description' => '',
|
||||||
|
'insertvon' => 'system'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
array(
|
array(
|
||||||
'app' => 'personalverwaltung',
|
'app' => 'personalverwaltung',
|
||||||
'category' => 'person',
|
'category' => 'person',
|
||||||
|
|||||||
Reference in New Issue
Block a user