mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0a4906c5ac |
@@ -1,50 +0,0 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
||||
@@ -263,6 +263,59 @@ class ProfilLib{
|
||||
$element->mailto = "mailto:" . $element->gruppe_kurzbz . "@" . DOMAIN;
|
||||
return $element;
|
||||
}, $mailverteiler_res);
|
||||
|
||||
$this->ci->load->model("crm/Student_model", "StudentModel");
|
||||
$this->ci->StudentModel->addJoin("tbl_benutzer", "tbl_benutzer.uid = tbl_student.student_uid");
|
||||
$this->ci->StudentModel->addJoin("tbl_person", "tbl_benutzer.person_id = tbl_person.person_id");
|
||||
$this->ci->StudentModel->addJoin("tbl_studiengang", "tbl_student.studiengang_kz = tbl_studiengang.studiengang_kz");
|
||||
$this->ci->StudentModel->addSelect("matr_nr, semester, verband, gruppe, kurzbzlang");
|
||||
|
||||
$studentResult = $this->ci->StudentModel->loadWhere(["student_uid" => $uid]);
|
||||
if (isError($studentResult)) {
|
||||
return error(getData($studentResult));
|
||||
}
|
||||
|
||||
$studentResultData = getData($studentResult);
|
||||
$studentData = null;
|
||||
if (is_array($studentResultData) && count($studentResultData)) {
|
||||
$studentData = $studentResultData[0];
|
||||
}
|
||||
|
||||
if ($studentData && $studentData->matr_nr) {
|
||||
$this->ci->load->library("phrasesLib", ["profil"], "phrases");
|
||||
$standardCourseVerteiler = trim($studentData->kurzbzlang) . "_STD";
|
||||
$mailverteiler_res[] = [
|
||||
"beschreibung" => $this->ci->phrases->t('profil', 'alleStudentenVon') . " " . $standardCourseVerteiler,
|
||||
"gruppe_kurzbz" => $standardCourseVerteiler,
|
||||
"mailto" => "mailto:" . strtolower($standardCourseVerteiler) . "@" . DOMAIN,
|
||||
];
|
||||
|
||||
$semesterVerteiler = trim($studentData->kurzbzlang) . trim($studentData->semester);
|
||||
$mailverteiler_res[] = [
|
||||
"beschreibung" => $this->ci->phrases->t('profil', 'alleStudentenVon') . " " . $semesterVerteiler,
|
||||
"gruppe_kurzbz" => $semesterVerteiler,
|
||||
"mailto" => "mailto:" . strtolower($semesterVerteiler) . "@" . DOMAIN,
|
||||
];
|
||||
|
||||
if ($studentData->verband && strlen(trim($studentData->verband))) {
|
||||
$verbandVerteiler = $semesterVerteiler . trim($studentData->verband);
|
||||
$mailverteiler_res[] = [
|
||||
"beschreibung" => $this->ci->phrases->t('profil', 'alleStudentenVon') . " " . $verbandVerteiler,
|
||||
"gruppe_kurzbz" => $verbandVerteiler,
|
||||
"mailto" => "mailto:" . strtolower($verbandVerteiler) . "@" . DOMAIN,
|
||||
];
|
||||
|
||||
if ($studentData->gruppe && strlen(trim($studentData->gruppe))) {
|
||||
$gruppeVerteiler = $verbandVerteiler . trim($studentData->gruppe);
|
||||
$mailverteiler_res[] = [
|
||||
"beschreibung" => $this->ci->phrases->t('profil', 'alleStudentenVon') . " " . $gruppeVerteiler,
|
||||
"gruppe_kurzbz" => $gruppeVerteiler,
|
||||
"mailto" => "mailto:" . strtolower($gruppeVerteiler) . "@" . DOMAIN,
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $mailverteiler_res;
|
||||
}
|
||||
|
||||
|
||||
@@ -40,9 +40,7 @@ abstract class AbstractBestandteil implements IValidation
|
||||
|
||||
if( is_bool($new_value) && ($old_value !== $new_value) ) {
|
||||
$this->modifiedcolumns[$columnname] = $columnname;
|
||||
} else if(is_null($old_value) xor is_null($new_value)) {
|
||||
$this->modifiedcolumns[$columnname] = $columnname;
|
||||
} else if($old_value != $new_value) {
|
||||
} else if($old_value != $new_value) {
|
||||
$this->modifiedcolumns[$columnname] = $columnname;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,13 +15,6 @@ class GehaltsbestandteilLib
|
||||
protected $CI;
|
||||
/** @var Gehaltsbestandteil_model */
|
||||
protected $GehaltsbestandteilModel;
|
||||
/** @var Dienstverhaeltnis_model */
|
||||
protected $DienstverhaeltnisModel;
|
||||
|
||||
/**
|
||||
* @var PermissionLib
|
||||
*/
|
||||
protected $PermissionLib;
|
||||
|
||||
protected $loggedInUser;
|
||||
|
||||
@@ -31,25 +24,7 @@ class GehaltsbestandteilLib
|
||||
$this->CI = get_instance();
|
||||
$this->CI->load->model('vertragsbestandteil/Gehaltsbestandteil_model',
|
||||
'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->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)
|
||||
@@ -145,24 +120,12 @@ class GehaltsbestandteilLib
|
||||
{
|
||||
$this->setUIDtoPGSQL();
|
||||
|
||||
$dv = $this->fetchDienstverhaeltnis($gehaltsbestandteil->getDienstverhaeltnis_id());
|
||||
if($dv && $this->PermissionLib->isberechtigt('basis/gehaelter', 'd', $dv->getOe_kurzbz()))
|
||||
{
|
||||
// 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');
|
||||
}
|
||||
$ret = $this->GehaltsbestandteilModel->delete($gehaltsbestandteil->getGehaltsbestandteil_id());
|
||||
|
||||
if (isError($ret))
|
||||
{
|
||||
throw new Exception('error deleting gehaltsbestandteil');
|
||||
}
|
||||
}
|
||||
|
||||
public function endGehaltsbestandteil(Gehaltsbestandteil $gehaltsbestandteil, $enddate)
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
<?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,12 +13,10 @@ require_once __DIR__ . '/VertragsbestandteilKarenz.php';
|
||||
require_once __DIR__ . '/VertragsbestandteilLohnguide.php';
|
||||
require_once __DIR__ . '/VertragsbestandteilFactory.php';
|
||||
require_once __DIR__ . '/OverlapChecker.php';
|
||||
require_once __DIR__ . '/NoPermissionException.php';
|
||||
|
||||
use vertragsbestandteil\Dienstverhaeltnis;
|
||||
use vertragsbestandteil\Vertragsbestandteil;
|
||||
use vertragsbestandteil\VertragsbestandteilFactory;
|
||||
use vertragsbestandteil\NoPermissionException;
|
||||
|
||||
/**
|
||||
* Description of VertragsbestandteilLib
|
||||
@@ -37,8 +35,6 @@ class VertragsbestandteilLib
|
||||
protected $DienstverhaeltnisModel;
|
||||
/** @var Vertragsbestandteil_model */
|
||||
protected $VertragsbestandteilModel;
|
||||
/** @var GehaltsbestandeilModel */
|
||||
protected $GehaltbestandteilModel;
|
||||
/** @var Benutzer_model */
|
||||
protected $BenutzerModel;
|
||||
/**
|
||||
@@ -48,11 +44,6 @@ class VertragsbestandteilLib
|
||||
|
||||
protected $loggedInUser;
|
||||
|
||||
/**
|
||||
* @var PermissionLib
|
||||
*/
|
||||
protected $PermissionLib;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->loggedInUser = getAuthUID();
|
||||
@@ -63,17 +54,12 @@ class VertragsbestandteilLib
|
||||
$this->CI->load->model('vertragsbestandteil/Vertragsbestandteil_model',
|
||||
'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',
|
||||
'BenutzerModel');
|
||||
$this->BenutzerModel = $this->CI->BenutzerModel;
|
||||
$this->CI->load->library('vertragsbestandteil/GehaltsbestandteilLib',
|
||||
null, 'GehaltsbestandteilLib');
|
||||
$this->GehaltsbestandteilLib = $this->CI->GehaltsbestandteilLib;
|
||||
$this->CI->load->library('PermissionLib', null, 'PermissionLib');
|
||||
$this->PermissionLib = $this->CI->PermissionLib;
|
||||
}
|
||||
|
||||
public function handleGUIData($guidata, $employeeUID, $userUID)
|
||||
@@ -113,14 +99,9 @@ class VertragsbestandteilLib
|
||||
$vbs = $this->VertragsbestandteilModel->getVertragsbestandteile(
|
||||
$dienstverhaeltnis_id, $stichtag, $includefuture
|
||||
);
|
||||
$dv = $this->fetchDienstverhaeltnis($dienstverhaeltnis_id);
|
||||
$gbs = array();
|
||||
if($dv && $this->PermissionLib->isberechtigt('basis/gehaelter', 's', $dv->getOe_kurzbz()))
|
||||
{
|
||||
$gbs = $this->GehaltsbestandteilLib->fetchGehaltsbestandteile(
|
||||
$dienstverhaeltnis_id, $stichtag, $includefuture, $withvalorisationhistory
|
||||
);
|
||||
}
|
||||
$gbs = $this->GehaltsbestandteilLib->fetchGehaltsbestandteile(
|
||||
$dienstverhaeltnis_id, $stichtag, $includefuture, $withvalorisationhistory
|
||||
);
|
||||
|
||||
$gbsByVBid = array();
|
||||
foreach( $gbs as $gb )
|
||||
@@ -254,12 +235,8 @@ class VertragsbestandteilLib
|
||||
throw new Exception("Transaction failed");
|
||||
}
|
||||
$this->CI->db->trans_commit();
|
||||
} catch (NoPermissionException $e) {
|
||||
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)
|
||||
}
|
||||
catch (Exception $ex)
|
||||
{
|
||||
log_message('debug', "Transaction rolled back. " . $ex->getMessage());
|
||||
$this->CI->db->trans_rollback();
|
||||
@@ -337,15 +314,6 @@ class VertragsbestandteilLib
|
||||
|
||||
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(
|
||||
$vertragsbestandteil->getVertragsbestandteiltyp_kurzbz());
|
||||
|
||||
@@ -137,25 +137,19 @@ EOTXT;
|
||||
return parent::__toString() . $txt;
|
||||
}
|
||||
|
||||
public function validate()
|
||||
/* public function validate()
|
||||
{
|
||||
$value = $this->vordienstzeit;
|
||||
|
||||
if ($value === null || $value === '') {
|
||||
$result = null; // allow null value
|
||||
} else {
|
||||
$result = filter_var($value, FILTER_VALIDATE_INT, [
|
||||
'options' => [
|
||||
'min_range' => 0,
|
||||
'max_range' => 100
|
||||
]
|
||||
]);
|
||||
|
||||
if ($result === false) {
|
||||
$this->validationerrors[] = 'Vordienstjahre muss eine ganze Zahl (0 bis 100) enthalten oder leer sein.';
|
||||
}
|
||||
if( !(filter_var($this->tage, FILTER_VALIDATE_INT,
|
||||
array(
|
||||
'options' => array(
|
||||
'min_range' => 1,
|
||||
'max_range' => 50
|
||||
)
|
||||
)
|
||||
)) ) {
|
||||
$this->validationerrors[] = 'Urlaubsanspruch muss eine Tagesanzahl im Bereich 1 bis 50 sein.';
|
||||
}
|
||||
|
||||
return parent::validate();
|
||||
}
|
||||
} */
|
||||
}
|
||||
|
||||
@@ -129,15 +129,6 @@ LEFT JOIN
|
||||
array($dienstverhaeltnis_id),
|
||||
$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,
|
||||
$includefuture=false, $withvalorisationhistory=true)
|
||||
|
||||
@@ -148,9 +148,6 @@
|
||||
generateJSsInclude('vendor/npm-asset/primevue/autocomplete/autocomplete.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/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
|
||||
generateJSsInclude('vendor/npm-asset/primevue/toast/toast.min.js');
|
||||
generateJSsInclude('vendor/npm-asset/primevue/toastservice/toastservice.min.js');
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
/**
|
||||
* 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,7 +39,6 @@ import studiengang from "./studiengang.js";
|
||||
import menu from "./menu.js";
|
||||
import dashboard from "./dashboard.js";
|
||||
import authinfo from "./authinfo.js";
|
||||
import permission from "./permission.js";
|
||||
import vertraege from "./vertraege.js";
|
||||
import studium from "./studium.js";
|
||||
import language from "./language.js";
|
||||
@@ -66,10 +65,10 @@ export default {
|
||||
addons,
|
||||
messages,
|
||||
vorlagen,
|
||||
addons,
|
||||
studiengang,
|
||||
menu,
|
||||
authinfo,
|
||||
permission,
|
||||
vertraege,
|
||||
studium,
|
||||
language
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
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'
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
<?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 <harald.bamberger@technikum-wien.at>,
|
||||
*
|
||||
* 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>';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -264,8 +264,8 @@ CREATE TABLE IF NOT EXISTS hr.tbl_vertragsbestandteil_lohnguide (
|
||||
stellenbezeichnung varchar(255),
|
||||
fachrichtung_kurzbz character varying(32) NOT NULL,
|
||||
modellstelle_kurzbz character varying(32) NOT NULL,
|
||||
kommentar_person text,
|
||||
kommentar_modellstelle text,
|
||||
kommentar_person varchar(255),
|
||||
kommentar_modellstelle varchar(255),
|
||||
CONSTRAINT tbl_vertragsbestandteil_lohnguide_pk PRIMARY KEY (vertragsbestandteil_id),
|
||||
CONSTRAINT tbl_vertragsbestandteil_fk FOREIGN KEY (vertragsbestandteil_id) REFERENCES hr.tbl_vertragsbestandteil (vertragsbestandteil_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||
CONSTRAINT tbl_vertragsbestandteil_lohnguide_fachrichtung_fk FOREIGN KEY (fachrichtung_kurzbz) REFERENCES hr.tbl_lohnguide_fachrichtung (fachrichtung_kurzbz) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||
|
||||
+22
-21
@@ -27540,26 +27540,6 @@ 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(
|
||||
'app' => 'personalverwaltung',
|
||||
'category' => 'person',
|
||||
@@ -29582,7 +29562,8 @@ array(
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
), array(
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'profil',
|
||||
'phrase' => 'sem_short',
|
||||
@@ -29602,6 +29583,26 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'profil',
|
||||
'phrase' => 'alleStudentenVon',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Alle StudentInnen aus',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'All students from',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
//Profil Phrasen ende
|
||||
// LvPlan Phrasen start
|
||||
array(
|
||||
|
||||
Reference in New Issue
Block a user