forked from uncloud/uncloud
Consistently use one_time_price instead of setup_fee
This commit is contained in:
parent
a40da40169
commit
11e22f5001
6 changed files with 39 additions and 19 deletions
|
|
@ -129,11 +129,15 @@ class BillRecord():
|
|||
def __init__(self, bill, order_record):
|
||||
self.bill = bill
|
||||
self.order = order_record.order
|
||||
self.setup_fee = order_record.setup_fee
|
||||
self.recurring_price = order_record.recurring_price
|
||||
self.recurring_period = order_record.recurring_period
|
||||
self.description = order_record.description
|
||||
|
||||
if self.order.starting_date > self.bill.starting_date:
|
||||
self.one_time_price = one_time_price
|
||||
else:
|
||||
self.one_time_price = 0
|
||||
|
||||
@property
|
||||
def recurring_count(self):
|
||||
# Compute billing delta.
|
||||
|
|
@ -178,17 +182,15 @@ class BillRecord():
|
|||
elif self.recurring_period == RecurringPeriod.PER_SECOND:
|
||||
seconds = ceil(billed_delta / timedelta(seconds=1))
|
||||
return Decimal(seconds)
|
||||
elif self.recurring_period == RecurringPeriod.ONE_TIME:
|
||||
return Decimal(0)
|
||||
else:
|
||||
raise Exception('Unsupported recurring period: {}.'.
|
||||
format(record.recurring_period))
|
||||
|
||||
@property
|
||||
def amount(self):
|
||||
amount = self.recurring_count * self.recurring_price
|
||||
if self.order.starting_date > self.bill.starting_date:
|
||||
amount += self.setup_fee
|
||||
|
||||
return amount
|
||||
return self.recurring_price * self.recurring_count + self.one_time_price
|
||||
|
||||
###
|
||||
# Orders.
|
||||
|
|
@ -231,22 +233,22 @@ class Order(models.Model):
|
|||
return OrderRecord.objects.filter(order=self)
|
||||
|
||||
@property
|
||||
def setup_fee(self):
|
||||
return reduce(lambda acc, record: acc + record.setup_fee, self.records, 0)
|
||||
def one_time_price(self):
|
||||
return reduce(lambda acc, record: acc + record.one_time_price, self.records, 0)
|
||||
|
||||
@property
|
||||
def recurring_price(self):
|
||||
return reduce(lambda acc, record: acc + record.recurring_price, self.records, 0)
|
||||
|
||||
def add_record(self, setup_fee, recurring_price, description):
|
||||
def add_record(self, one_time_price, recurring_price, description):
|
||||
OrderRecord.objects.create(order=self,
|
||||
setup_fee=setup_fee,
|
||||
one_time_price=one_time_price,
|
||||
recurring_price=recurring_price,
|
||||
description=description)
|
||||
|
||||
class OrderRecord(models.Model):
|
||||
order = models.ForeignKey(Order, on_delete=models.CASCADE)
|
||||
setup_fee = models.DecimalField(default=0.0,
|
||||
one_time_price = models.DecimalField(default=0.0,
|
||||
max_digits=AMOUNT_MAX_DIGITS,
|
||||
decimal_places=AMOUNT_DECIMALS,
|
||||
validators=[MinValueValidator(0)])
|
||||
|
|
@ -303,7 +305,7 @@ class Product(models.Model):
|
|||
pass # To be implemented in child.
|
||||
|
||||
@property
|
||||
def setup_fee(self):
|
||||
def one_time_price(self):
|
||||
return 0
|
||||
|
||||
@property
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue