Fix floating-point issue on bills (Fix #31)

This commit is contained in:
fnux 2020-05-08 11:13:11 +02:00
commit 74e2168529
2 changed files with 8 additions and 1 deletions

View file

@ -494,6 +494,10 @@ class BillRecord():
else:
self.one_time_price = 0
# Set decimal context for amount computations.
# XXX: understand why we need +1 here.
decimal.getcontext().prec = AMOUNT_DECIMALS + 1
@property
def recurring_count(self):
# Compute billing delta.
@ -531,7 +535,7 @@ class BillRecord():
(_, days_in_month) = monthrange(
self.bill.starting_date.year,
self.bill.starting_date.month)
return days / days_in_month
return round(days / days_in_month, AMOUNT_DECIMALS)
elif self.recurring_period == RecurringPeriod.PER_WEEK:
weeks = ceil(billed_delta / timedelta(week=1))
return weeks