forked from uncloud/uncloud
Wire order records to bills, fix user balance
This commit is contained in:
parent
9e253d497b
commit
9e9018060e
3 changed files with 46 additions and 21 deletions
|
|
@ -33,26 +33,40 @@ class Bill(models.Model):
|
|||
valid = models.BooleanField(default=True)
|
||||
|
||||
@property
|
||||
def entries(self):
|
||||
# TODO: return list of Bill entries, extract from linked order
|
||||
# for each related order
|
||||
# for each product
|
||||
# build BillEntry
|
||||
return []
|
||||
def records(self):
|
||||
bill_records = []
|
||||
orders = Order.objects.filter(bill=self)
|
||||
for order in orders:
|
||||
for order_record in order.records:
|
||||
bill_record = BillRecord(
|
||||
self,
|
||||
order_record.setup_fee,
|
||||
order_record.recurring_price,
|
||||
order_record.recurring_period,
|
||||
order_record.description)
|
||||
bill_records.append(bill_record)
|
||||
|
||||
return bill_records
|
||||
|
||||
@property
|
||||
def total(self):
|
||||
orders = Order.objects.filter(bill=self)
|
||||
return reduce(lambda acc, order: acc + order.amount, orders, 0)
|
||||
return reduce(lambda acc, record: acc + record.amount(), self.records, 0)
|
||||
|
||||
class BillEntry():
|
||||
start_date = timezone.now()
|
||||
end_date = timezone.now()
|
||||
recurring_period = RecurringPeriod.PER_MONTH
|
||||
recurring_price = 0
|
||||
amount = 0
|
||||
description = ""
|
||||
class BillRecord():
|
||||
def __init__(self, bill, setup_fee, recurring_price, recurring_period, description):
|
||||
self.bill = bill
|
||||
self.setup_fee = setup_fee
|
||||
self.recurring_price = recurring_price
|
||||
self.recurring_period = recurring_period
|
||||
self.description = description
|
||||
|
||||
def amount(self):
|
||||
# TODO: Billing logic here!
|
||||
if self.recurring_period == RecurringPeriod.PER_MONTH:
|
||||
return self.recurring_price # TODO
|
||||
else:
|
||||
raise Exception('Unsupported recurring period: {}.'.
|
||||
format(record.recurring_period))
|
||||
|
||||
# /!\ BIG FAT WARNING /!\ #
|
||||
#
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue