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)