diff --git a/application/libraries/vertragsbestandteil/AbstractBestandteil.php b/application/libraries/vertragsbestandteil/AbstractBestandteil.php index ccd05f5e2..4e1e8b9d0 100644 --- a/application/libraries/vertragsbestandteil/AbstractBestandteil.php +++ b/application/libraries/vertragsbestandteil/AbstractBestandteil.php @@ -40,7 +40,9 @@ abstract class AbstractBestandteil implements IValidation if( is_bool($new_value) && ($old_value !== $new_value) ) { $this->modifiedcolumns[$columnname] = $columnname; - } else if($old_value != $new_value) { + } else if(is_null($old_value) xor is_null($new_value)) { + $this->modifiedcolumns[$columnname] = $columnname; + } else if($old_value != $new_value) { $this->modifiedcolumns[$columnname] = $columnname; } } diff --git a/application/libraries/vertragsbestandteil/VertragsbestandteilLohnguide.php b/application/libraries/vertragsbestandteil/VertragsbestandteilLohnguide.php index 0e071f36b..71104fa91 100644 --- a/application/libraries/vertragsbestandteil/VertragsbestandteilLohnguide.php +++ b/application/libraries/vertragsbestandteil/VertragsbestandteilLohnguide.php @@ -137,19 +137,25 @@ EOTXT; return parent::__toString() . $txt; } - /* public function validate() + public function validate() { - 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.'; + $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.'; + } } return parent::validate(); - } */ + } } diff --git a/public/js/apps/Cis/Cis.js b/public/js/apps/Cis/Cis.js index 16e1a307b..a3744515e 100644 --- a/public/js/apps/Cis/Cis.js +++ b/public/js/apps/Cis/Cis.js @@ -275,11 +275,15 @@ const app = Vue.createApp({ data: () => ({ appSideMenuEntries: {}, windowWidth: 0, + isStudent: null, + isMitarbeiter: null, }), provide() { return { // provide injectable & watchable language property language: Vue.computed(() => this.$p.user_language), isMobile: Vue.computed(() => this.windowWidth < 767), + isStudent: Vue.computed(() => this.isStudent), + isMitarbeiter: Vue.computed(() => this.isMitarbeiter) } }, methods: { @@ -320,8 +324,12 @@ const app = Vue.createApp({ this.windowWidth = window.innerWidth; }, }, - created() { + async created() { this.windowWidth = window.innerWidth; + await this.$api.call(ApiAuthinfo.getAuthInfo()).then((res) => { + this.isMitarbeiter = res.data.isMitarbeiter; + this.isStudent = res.data.isStudent; + }); }, async mounted() { document.addEventListener('click', this.handleClick); diff --git a/public/js/components/Cis/Mylv/Semester/Studiengang/Lv.js b/public/js/components/Cis/Mylv/Semester/Studiengang/Lv.js index e124365d5..e12776ad1 100644 --- a/public/js/components/Cis/Mylv/Semester/Studiengang/Lv.js +++ b/public/js/components/Cis/Mylv/Semester/Studiengang/Lv.js @@ -100,7 +100,6 @@ export default { } }, openPruefungen() { - // early return if the pruefungenData is empty or not set if (!this.LvHasPruefungenInformation) return; LvPruefungen.popup({ @@ -182,6 +181,7 @@ export default { {{ grade || $p.t('lehre/noGrades') }} + @@ -201,4 +201,4 @@ export default { ` -}; \ No newline at end of file +}; diff --git a/system/dbupdate_3.4/70376_lohnguide.php b/system/dbupdate_3.4/70376_lohnguide.php index 6cf2be38e..b5e9fcce2 100644 --- a/system/dbupdate_3.4/70376_lohnguide.php +++ b/system/dbupdate_3.4/70376_lohnguide.php @@ -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 varchar(255), - kommentar_modellstelle varchar(255), + kommentar_person text, + kommentar_modellstelle text, 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,