diff --git a/application/controllers/codex/Oehbeitrag.php b/application/controllers/codex/Oehbeitrag.php
index 9aa5e4402..7fc8f381f 100644
--- a/application/controllers/codex/Oehbeitrag.php
+++ b/application/controllers/codex/Oehbeitrag.php
@@ -107,7 +107,7 @@ class Oehbeitrag extends Auth_Controller
{
if (!$this->_checkAmount($value))
{
- $this->outputJsonError("Ungültiger $idx");
+ $this->outputJsonError("Ungültige(r) $idx");
return;
}
}
@@ -162,7 +162,7 @@ class Oehbeitrag extends Auth_Controller
private function _checkAmount($amount)
{
- return is_numeric($amount) && $amount <= 99999.99;
+ return is_numeric($amount) && (float) $amount <= 99999.99;
}
private function _checkVonBisStudiensemester($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz, $oehbeitrag_id = null)
diff --git a/public/js/codex/oehbeitrag.js b/public/js/codex/oehbeitrag.js
index 9186c1bf0..f8fc403f0 100644
--- a/public/js/codex/oehbeitrag.js
+++ b/public/js/codex/oehbeitrag.js
@@ -127,10 +127,10 @@ var Oehbeitrag = {
let bis_studiensemester_kurzbz = oehbeitrag.bis_studiensemester_kurzbz == 'null' ? 'unbeschränkt' : studiensemester_von_bis.bis_semester_with_date;
$("#input_studierendenbeitrag_"+nextOehbeitragId).parent('td').html(
- Oehbeitrag._formatDecimalGerman(oehbeitrag.studierendenbeitrag)+" "
+ Oehbeitrag._formatDecimal(oehbeitrag.studierendenbeitrag)+" "
);
$("#input_versicherung_"+nextOehbeitragId).parent('td').html(
- Oehbeitrag._formatDecimalGerman(oehbeitrag.versicherung)+" "
+ Oehbeitrag._formatDecimal(oehbeitrag.versicherung)+" "
);
$("#input_von_studiensemester_kurzbz_"+nextOehbeitragId).parent('td').html(
studiensemester_von_bis.von_semester_with_date+" "
@@ -174,6 +174,10 @@ var Oehbeitrag = {
{
let oehbeitragdata = {};
let fieldvalue = fieldelement.val();
+
+ if (inputtype != 'semester') // formal number as decimal with point separator
+ fieldvalue = Oehbeitrag._formatDecimal(fieldvalue, ".");
+
oehbeitragdata[fieldname] = fieldvalue;
FHC_AjaxClient.ajaxCallPost(
@@ -193,7 +197,7 @@ var Oehbeitrag = {
if (inputtype == 'semester')
fieldvalue = $(fieldelement).find("option:selected").text();
else
- fieldvalue = Oehbeitrag._formatDecimalGerman(fieldvalue);
+ fieldvalue = Oehbeitrag._formatDecimal(fieldvalue);
$("#confirm_"+fieldname+"_"+oehbeitrag_id).parent('td').html(
fieldvalue+" "
);
@@ -245,15 +249,6 @@ var Oehbeitrag = {
// -----------------------------------------------------------------------------------------------------------------
// (private) methods
- _renderOehbeitragTable(oehbeitraege)
- {
- for (let oehbeitragidx in oehbeitraege)
- {
- let oehbeitrag = oehbeitraege[oehbeitragidx];
-
-
- }
- },
_setUpdateEvents()
{
$(".editStudierendenbeitrag").off('click').click(
@@ -386,32 +381,31 @@ var Oehbeitrag = {
},
/**
* Formats a numeric value as a float with two decimals
- * @param sum
- * @returns {string}
+ * @param value
+ * @param decSeparator the new decimal separator
+ * @returns {string} formatted value
*/
- _formatDecimalGerman: function(sum)
+ _formatDecimal: function(value, decSeparator)
{
- var dec = null;
+ let dec = null;
+ let prevSeparator = ".";
- if(sum === null)
- dec = parseFloat(0).toFixed(2).replace(".", ",");
- else if(sum === '')
- {
- dec = ''
- }
+ if (decSeparator === ".")
+ prevSeparator = ",";
else
- {
- dec = parseFloat(sum).toFixed(2);
+ decSeparator = ",";
- dec = dec.split('.');
- var dec1 = dec[0];
- var dec2 = ',' + dec[1];
- var rgx = /(\d+)(\d{3})/;
- while (rgx.test(dec1)) {
- dec1 = dec1.replace(rgx, '$1' + '.' + '$2');
- }
- dec = dec1 + dec2;
+ dec = value.split(prevSeparator);
+ if (dec.length === 2)
+ {
+ dec = parseFloat(dec[0] + '.' + dec[1]).toFixed(2);
+ dec = dec.replace(prevSeparator, decSeparator);
}
+ else if (Math.floor(value) == value) // if integer, add zeros
+ dec = value + decSeparator + '00';
+ else
+ dec = value;
+
return dec;
},
_formatDateToGerman: function(date)