Changeset - 2e5a8e366890
[Not reviewed]
0 1 0
Christopher Neugebauer - 8 years ago 2016-09-14 23:08:57
chrisjrn@gmail.com
First pass at allowing manual invoices.
1 file changed with 32 insertions and 1 deletions:
0 comments (0 inline, 0 general)
registrasion/controllers/invoice.py
Show inline comments
...
 
@@ -72,6 +72,38 @@ class InvoiceController(ForId, object):
 
            value = condition.price
 
        return value
 

	
 
    @classmethod
 
    @transaction.atomic
 
    def manual_invoice(cls, user, due_delta, description_price_pairs):
 
        ''' Generates an invoice for arbitrary items, not held in a user's
 
        cart.
 

	
 
        Arguments:
 
            user (User): The user the invoice is being generated for.
 
            due_delta (datetime.timedelta): The length until the invoice is
 
                due.
 
            description_price_pairs ([(str, long or Decimal), ...]): A list of
 
                pairs. Each pair consists of the description for each line item
 
                and the price for that line item. The price will be cast to
 
                Decimal.
 

	
 
        Returns:
 
            an Invoice.
 
        '''
 

	
 
        line_items = []
 
        for description, price in description_price_pairs:
 
            line_item = commerce.LineItem(
 
                description=description,
 
                quantity=1,
 
                price=Decimal(price),
 
                product=None,
 
            )
 
            line_items.append(line_item)
 

	
 
        min_due_time = timezone.now() + due_delta
 
        return cls._generate(user, None, min_due_time, line_items)
 

	
 
    @classmethod
 
    @transaction.atomic
 
    def _generate_from_cart(cls, cart):
...
 
@@ -129,7 +161,6 @@ class InvoiceController(ForId, object):
 

	
 
        # Generate the invoice
 

	
 
        user = cart.user
 
        min_due_time = cart.reservation_duration + cart.time_last_updated
 

	
 
        return cls._generate(cart.user, cart, min_due_time, line_items)
0 comments (0 inline, 0 general)