[fix] division by zero
This commit is contained in:
parent
8594f7de0c
commit
d0d44fa7c0
2 changed files with 32 additions and 12 deletions
|
|
@ -218,7 +218,12 @@ function in_list(list, item) {
|
|||
function remainder(numerator, denominator, precision) {
|
||||
precision = cint(precision);
|
||||
var multiplier = Math.pow(10, precision);
|
||||
var _remainder = ((numerator * multiplier) % (denominator * multiplier)) / multiplier;
|
||||
if (precision) {
|
||||
var _remainder = ((numerator * multiplier) % (denominator * multiplier)) / multiplier;
|
||||
} else {
|
||||
var _remainder = numerator % denominator;
|
||||
}
|
||||
|
||||
return flt(_remainder, precision);
|
||||
};
|
||||
|
||||
|
|
@ -226,10 +231,15 @@ function round_based_on_smallest_currency_fraction(value, currency, precision) {
|
|||
var smallest_currency_fraction_value = flt(frappe.model.get_value(":Currency",
|
||||
currency, "smallest_currency_fraction_value"))
|
||||
|
||||
var remainder_val = remainder(value, smallest_currency_fraction_value, precision);
|
||||
if(remainder_val > (smallest_currency_fraction_value / 2)) {
|
||||
return value + (smallest_currency_fraction_value - remainder_val);
|
||||
if(smallest_currency_fraction_value) {
|
||||
var remainder_val = remainder(value, smallest_currency_fraction_value, precision);
|
||||
if(remainder_val > (smallest_currency_fraction_value / 2)) {
|
||||
value += (smallest_currency_fraction_value - remainder_val);
|
||||
} else {
|
||||
value -= remainder_val;
|
||||
}
|
||||
} else {
|
||||
return value - remainder_val;
|
||||
value = Math.round(value);
|
||||
}
|
||||
return value;
|
||||
};
|
||||
|
|
@ -276,21 +276,31 @@ def rounded(num, precision=0):
|
|||
|
||||
return (num / multiplier) if precision else num
|
||||
|
||||
def remainder(numerator, denominator, precision):
|
||||
def remainder(numerator, denominator, precision=2):
|
||||
precision = cint(precision)
|
||||
multiplier = 10 ** precision
|
||||
_remainder = ((numerator * multiplier) % (denominator * multiplier)) / multiplier;
|
||||
|
||||
if precision:
|
||||
_remainder = ((numerator * multiplier) % (denominator * multiplier)) / multiplier
|
||||
else:
|
||||
_remainder = numerator % denominator
|
||||
|
||||
return flt(_remainder, precision);
|
||||
|
||||
def round_based_on_smallest_currency_fraction(value, currency, precision):
|
||||
def round_based_on_smallest_currency_fraction(value, currency, precision=2):
|
||||
smallest_currency_fraction_value = flt(frappe.db.get_value("Currency",
|
||||
currency, "smallest_currency_fraction_value"))
|
||||
|
||||
remainder_val = remainder(value, smallest_currency_fraction_value, precision)
|
||||
if remainder_val > (smallest_currency_fraction_value / 2):
|
||||
return value + (smallest_currency_fraction_value - remainder_val)
|
||||
if smallest_currency_fraction_value:
|
||||
remainder_val = remainder(value, smallest_currency_fraction_value, precision)
|
||||
if remainder_val > (smallest_currency_fraction_value / 2):
|
||||
value += smallest_currency_fraction_value - remainder_val
|
||||
else:
|
||||
value -= remainder_val
|
||||
else:
|
||||
return value - remainder_val
|
||||
value = rounded(value)
|
||||
|
||||
return flt(value, precision)
|
||||
|
||||
def encode(obj, encoding="utf-8"):
|
||||
if isinstance(obj, list):
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue