diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php
index 46d342971..7f13e0da4 100644
--- a/cis/private/profile/zeitsperre_resturlaub.php
+++ b/cis/private/profile/zeitsperre_resturlaub.php
@@ -79,7 +79,21 @@ else if (defined('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS') && CIS_ZEITAUFZEICHNUNG_GE
else
$gesperrt_bis = '2015-08-31';
-//echo $gesperrt_bis;
+$todayDate = new DateTime();
+$today = strtotime($todayDate->format('Y-m-d'));
+
+//MaxDatum für BisFeld berechnen: Default 2 Jahre, über Config veränderbar
+$maxPeriodeBisDatum = '+2 years';
+
+if (defined('CIS_MAXTIME_ENDEDATUM') && CIS_MAXTIME_ENDEDATUM != '') {
+ $maxPeriodeBisDatum = CIS_MAXTIME_ENDEDATUM;
+}
+$maxBisDatum = strtotime($maxPeriodeBisDatum, $today);
+
+$maxBisDatumDate = new DateTime($maxBisDatum);
+$maxInterval = $todayDate->diff($maxBisDatumDate);
+$diffTageMax = $maxInterval->days;
+echo "";
//Stundentabelleholen
if(! $result_stunde=$db->db_query("SELECT * FROM lehre.tbl_stunde ORDER BY stunde"))
@@ -96,7 +110,7 @@ $num_rows_stunde=$db->db_num_rows($result_stunde);
-
+
@@ -204,65 +218,65 @@ function berechnen()
function checkdatum()
{
- if(document.getElementById('vondatum').value.length<10)
+ if (document.getElementById('vondatum').value.length < 10)
{
alert('t('zeitsperre/vonDatumIstUngueltigNullenAngeben');?>');
return false;
}
- if(document.getElementById('bisdatum').value.length<10)
+ if (document.getElementById('bisdatum').value.length < 10)
{
alert('t('zeitsperre/bisDatumIstUngueltigNullenAngeben');?>');
return false;
}
- var Datum, Tag, Monat,Jahr,vonDatum,bisDatum, diff;
+ var Datum, Tag, Monat, Jahr, vonDatum, bisDatum, diff, diffmax;
- Datum=document.getElementById('vondatum').value;
- Tag=Datum.substring(0,2);
- Monat=Datum.substring(3,5);
- if (parseInt(Monat,10)<1 || parseInt(Monat,10)>12)
- {
- alert('t('zeitsperre/vonDatumMonat');?>'+ document.getElementById('vondatum').value+ ' t('zeitsperre/istNichtRichtig');?>.');
+ Datum = document.getElementById('vondatum').value;
+ Tag = Datum.substring(0, 2);
+ Monat = Datum.substring(3, 5);
+ if (parseInt(Monat, 10) < 1 || parseInt(Monat, 10) > 12)
+ {
+ alert('t('zeitsperre/vonDatumMonat');?>' + document.getElementById('vondatum').value + ' t('zeitsperre/istNichtRichtig');?>.');
document.getElementById('vondatum').focus();
- return false;
- }
+ return false;
+ }
- Jahr=Datum.substring(6,10);
+ Jahr = Datum.substring(6, 10);
- vonDatum=Jahr+''+Monat+''+Tag;
+ vonDatum = Jahr + '' + Monat + '' + Tag;
- Datum=document.getElementById('bisdatum').value;
- Tag=Datum.substring(0,2);
- Monat=Datum.substring(3,5);
- if (parseInt(Monat,10)<1 || parseInt(Monat,10)>12)
- {
- alert('t('zeitsperre/bisDatumMonat');?>'+ document.getElementById('bisdatum').value+ ' t('zeitsperre/istNichtRichtig');?>.');
+ Datum = document.getElementById('bisdatum').value;
+ Tag = Datum.substring(0, 2);
+ Monat = Datum.substring(3, 5);
+ if (parseInt(Monat, 10) < 1 || parseInt(Monat, 10) > 12) {
+ alert('t('zeitsperre/bisDatumMonat');?>' + document.getElementById('bisdatum').value + ' t('zeitsperre/istNichtRichtig');?>.');
document.getElementById('bisdatum').focus();
- return false;
- }
+ return false;
+ }
- Jahr=Datum.substring(6,10);
+ Jahr = Datum.substring(6, 10);
+ bisDatum = Jahr + '' + Monat + '' + Tag;
- bisDatum=Jahr+''+Monat+''+Tag;
+ diff = bisDatum - vonDatum;
+ diffmax = $("#maxdiff").val();
- diff=bisDatum-vonDatum;
-
- if (vonDatum>bisDatum)
- {
- alert('t('zeitsperre/vonDatum');?> '+ document.getElementById('vondatum').value+ ' t('zeitsperre/istGroesserAlsBisDatum');?> '+document.getElementById('bisdatum').value);
+ if (vonDatum > bisDatum) {
+ alert('t('zeitsperre/vonDatum');?> ' + document.getElementById('vondatum').value + ' t('zeitsperre/istGroesserAlsBisDatum');?> ' + document.getElementById('bisdatum').value);
document.getElementById('vondatum').focus();
- return false;
- }
- else if (diff>14)
- {
- Check = confirm('t('zeitaufzeichnung/zeitraumAuffallendHoch');?>');
+ return false;
+ } else if (diff > 14 && diff < diffmax) {
+ Check = confirm('t('zeitaufzeichnung/zeitraumAuffallendHoch');?>');
document.getElementById('bisdatum').focus();
- if (Check == false)
- return false;
- else
- return true;
- }
+ if (Check == false)
+ return false;
+ else
+ return true;
+ } else if (diff >= diffmax){
+ alert('t('zeitsperre/bisDatumGroesserMax');?> ');
+ document.getElementById('bisdatum').focus();
+ return false;
+ }
return true;
}
@@ -445,7 +459,8 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_
$date=explode('.',$_POST['bisdatum']);
if (@checkdate($date[1], $date[0], $date[2]))
{
- $bisdatum=$date[2].$date[1].$date[0];
+ $bisdatum=$date[2].$date[1].$date[0];
+ $bisdatum_iso = $date[2].'-'.$date[1].'-'.$date[0];
}
else
{
@@ -464,6 +479,15 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_
$error_msg .= $p->t('zeitsperre/vonDatumGroesserAlsBisDatum').'! ';
}
+ //check if bis-Datum > MaxDatum
+ $bis = new DateTime($bisdatum);
+
+ if (strtotime($bis->format('Y-m-d')) > $maxBisDatum)
+ {
+ $error=true;
+ $error_msg .= $p->t('zeitsperre/bisDatumGroesserMax',date('d.m.Y', $maxBisDatum)).' ';
+ }
+
//von-datum pruefen TODO
if($vondatum_iso < $gesperrt_bis && in_array($_POST['zeitsperretyp_kurzbz'],$typen_arr))
{
diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php
index 27e0a9a70..a2d61dbcb 100644
--- a/config/cis.config-default.inc.php
+++ b/config/cis.config-default.inc.php
@@ -294,5 +294,7 @@ define ('DEFAULT_ALLIN_DIENSTVERTRAG',[111]);
//Echter Dienstvertrag
define ('DEFAULT_ECHTER_DIENSTVERTRAG',[103,111]);
+//Max-Ende-Datum für Zeitsperren (Aktuelles Datum + angegebenes Intervall
+define('CIS_MAXTIME_ENDEDATUM', '+2 years');
?>
diff --git a/locale/de-AT/zeitsperre.php b/locale/de-AT/zeitsperre.php
index 463c092cf..c3acd00d0 100644
--- a/locale/de-AT/zeitsperre.php
+++ b/locale/de-AT/zeitsperre.php
@@ -26,6 +26,7 @@ $this->phrasen['zeitsperre/vonDatumMonat']='Von-Datum Monat';
$this->phrasen['zeitsperre/bisDatumMonat']='Bis-Datum Monat';
$this->phrasen['zeitsperre/istGroesserAlsBisDatum']='ist größer als das Bis-Datum';
$this->phrasen['zeitsperre/vonDatum']='Von-Datum';
+$this->phrasen['zeitsperre/bisDatumGroesserMax']='Datumswert liegt zu weit in der Zukunft, nicht zulässig!';
$this->phrasen['zeitsperre/resturlaubstage']='Resturlaubstage';
$this->phrasen['zeitsperre/aktuellerStand']='aktueller Stand';
diff --git a/locale/en-US/zeitsperre.php b/locale/en-US/zeitsperre.php
index 44123529f..5f54250b8 100644
--- a/locale/en-US/zeitsperre.php
+++ b/locale/en-US/zeitsperre.php
@@ -26,6 +26,7 @@ $this->phrasen['zeitsperre/vonDatumMonat']='From-date month';
$this->phrasen['zeitsperre/bisDatumMonat']='To-date month';
$this->phrasen['zeitsperre/istGroesserAlsBisDatum']='is later than To-date';
$this->phrasen['zeitsperre/vonDatum']='From-date';
+$this->phrasen['zeitsperre/bisDatumGroesserMax']='Date value is too far in the future, action not permitted';
$this->phrasen['zeitsperre/resturlaubstage']='Carry-over days';
$this->phrasen['zeitsperre/aktuellerStand']='Available vacation';