def has_orders_in_current_order_round(self): """ Ignores stock products! """ return OrderProduct.objects.filter(product__supplier=self, order__order_round=get_current_order_round(), order__paid=True).exists()
def orders_round(obj): # Orders in this round current_order_round = get_current_order_round() orders = Order.objects.filter(order_round=current_order_round, user=obj, paid=True).count() return orders
def test_given_multiple_future_rounds_the_first_one_is_returned(self): # December 12 OrderRoundFactory( open_for_orders=datetime(2014, 12, 8, 0, 0, tzinfo=UTC), closed_for_orders=datetime(2014, 12, 12, 19, 0, tzinfo=UTC), collect_datetime=datetime(2014, 12, 17, 17, 30, tzinfo=UTC) ) # October 24 OrderRoundFactory( open_for_orders=datetime(2014, 11, 24, 0, 0, tzinfo=UTC), closed_for_orders=datetime(2014, 11, 28, 19, 0, tzinfo=UTC), collect_datetime=datetime(2014, 12, 3, 17, 30, tzinfo=UTC) ) # October 10 future1 = OrderRoundFactory( open_for_orders=datetime(2014, 11, 10, 0, 0, tzinfo=UTC), closed_for_orders=datetime(2014, 11, 14, 19, 0, tzinfo=UTC), collect_datetime=datetime(2014, 11, 19, 17, 30, tzinfo=UTC) ) self.mock_datetime.now.return_value = datetime(2014, 11, 1, 0, 0, tzinfo=UTC) ret = get_current_order_round() self.assertEqual(ret, future1)
def get_order_to_pay(user): cur_order_round = get_current_order_round() return Order.objects.filter(paid=False, finalized=True, order_round=cur_order_round, user=user).last()
def test_given_one_closed_order_round_it_is_returned(self): self.mock_datetime.now.return_value = datetime(2014, 11, 6, 0, 0, tzinfo=UTC) orderround = OrderRoundFactory(open_for_orders=datetime(2014, 10, 27, 0, 0, tzinfo=UTC), closed_for_orders=datetime(2014, 10, 31, 19, 0, tzinfo=UTC), collect_datetime=datetime(2014, 11, 5, 17, 30, tzinfo=UTC)) ret = get_current_order_round() self.assertEqual(ret, orderround)
def has_orders_in_current_order_round(self): """ Ignores stock products! """ return OrderProduct.objects.filter( product__supplier=self, order__order_round=get_current_order_round(), order__paid=True).exists()
def test_given_one_closed_order_round_it_is_returned(self): self.mock_datetime.now.return_value = datetime(2014, 11, 6, 0, 0, tzinfo=UTC) orderround = OrderRoundFactory( open_for_orders=datetime(2014, 10, 27, 0, 0, tzinfo=UTC), closed_for_orders=datetime(2014, 10, 31, 19, 0, tzinfo=UTC), collect_datetime=datetime(2014, 11, 5, 17, 30, tzinfo=UTC) ) ret = get_current_order_round() self.assertEqual(ret, orderround)
def get_last_paid_order(self): """ Allows us to use: VokoUser.orders.get_last_paid_order() """ try: return super(OrderManager, self).get_queryset().filter(paid=True, user=self.instance, order_round=get_current_order_round()).order_by('-pk')[0] except IndexError: return
def get_last_paid_order(self): """ Allows us to use: VokoUser.orders.get_last_paid_order() """ try: return super(OrderManager, self).get_queryset().filter( paid=True, user=self.instance, order_round=get_current_order_round()).order_by('-pk')[0] except IndexError: return
def retail_price(self): """ Return base price plus round's markup percentage, rounded up to 2 decimals. """ if self.order_round: markup = self.order_round.markup_percentage else: markup = get_current_order_round().markup_percentage total_percentage = 100 + markup new_price = (Decimal(self.base_price) / Decimal('100.0')) * Decimal(total_percentage) rounded = new_price.quantize(Decimal('.01'), rounding=ROUND_UP) return rounded
def _create_credit(self): if self.order_product.product.order_round is None: order_round = get_current_order_round() else: order_round = self.order_product.product.order_round return Balance.objects.create( user=self.order_product.order.user, type="CR", amount=self.calculate_refund(), notes="Correctie in ronde %d, %dx %s, geleverd: %s%%" % (order_round.id, self.order_product.amount, self.order_product.product.name, self.supplied_percentage))
def _create_credit(self): if self.order_product.product.order_round is None: order_round = get_current_order_round() else: order_round = self.order_product.product.order_round return Balance.objects.create(user=self.order_product.order.user, type="CR", amount=self.calculate_refund(), notes="Correctie in ronde %d, %dx %s, geleverd: %s%%" % (order_round.id, self.order_product.amount, self.order_product.product.name, self.supplied_percentage))
def get_context_data(self, **kwargs): context = super(ChooseBankView, self).get_context_data(**kwargs) cur_order_round = get_current_order_round() try: context['order'] = Order.objects.get( id=self.request.GET.get( 'order_to_pay', Order.objects.get(paid=False, finalized=True, order_round=cur_order_round, user=self.request.user).id)) except Order.DoesNotExist: pass # Warning is shown in template return context
def retail_price(self): """ Return base price plus round's markup percentage, rounded up to 2 decimals. """ if self.order_round: markup = self.order_round.markup_percentage else: markup = get_current_order_round().markup_percentage total_percentage = 100 + markup new_price = ((Decimal(self.base_price) / Decimal('100.0')) * Decimal(total_percentage)) rounded = new_price.quantize(Decimal('.01'), rounding=ROUND_UP) return rounded
def test_given_a_previous_and_a_future_order_round_the_future_round_is_returned(self): previous = OrderRoundFactory( open_for_orders=datetime(2014, 10, 27, 0, 0, tzinfo=UTC), closed_for_orders=datetime(2014, 10, 31, 19, 0, tzinfo=UTC), collect_datetime=datetime(2014, 11, 5, 17, 30, tzinfo=UTC) ) future = OrderRoundFactory( open_for_orders=datetime(2014, 11, 10, 0, 0, tzinfo=UTC), closed_for_orders=datetime(2014, 11, 14, 19, 0, tzinfo=UTC), collect_datetime=datetime(2014, 11, 19, 17, 30, tzinfo=UTC) ) self.mock_datetime.now.return_value = datetime(2014, 11, 7, 0, 0, tzinfo=UTC) ret = get_current_order_round() self.assertEqual(ret, future)
def test_given_current_and_future_order_rounds_current_is_returned(self): current = OrderRoundFactory( open_for_orders=datetime(2014, 10, 27, 0, 0, tzinfo=UTC), closed_for_orders=datetime(2014, 10, 31, 19, 0, tzinfo=UTC), collect_datetime=datetime(2014, 11, 5, 17, 30, tzinfo=UTC) ) OrderRoundFactory( open_for_orders=datetime(2014, 11, 10, 0, 0, tzinfo=UTC), closed_for_orders=datetime(2014, 11, 14, 19, 0, tzinfo=UTC), collect_datetime=datetime(2014, 11, 19, 17, 30, tzinfo=UTC) ) self.mock_datetime.now.return_value = datetime(2014, 11, 4, 0, 0, tzinfo=UTC) ret = get_current_order_round() self.assertEqual(ret, current)
def test_given_previous_and_current_order_rounds_current_is_returned(self): OrderRoundFactory(open_for_orders=datetime(2014, 10, 27, 0, 0, tzinfo=UTC), closed_for_orders=datetime(2014, 10, 31, 19, 0, tzinfo=UTC), collect_datetime=datetime(2014, 11, 5, 17, 30, tzinfo=UTC)) current = OrderRoundFactory(open_for_orders=datetime(2014, 11, 10, 0, 0, tzinfo=UTC), closed_for_orders=datetime(2014, 11, 14, 19, 0, tzinfo=UTC), collect_datetime=datetime(2014, 11, 19, 17, 30, tzinfo=UTC)) self.mock_datetime.now.return_value = datetime(2014, 11, 15, 0, 0, tzinfo=UTC) ret = get_current_order_round() self.assertEqual(ret, current)
def is_current(self): return self == get_current_order_round()
def test_given_multiple_open_order_rounds_return_first_one(self): round1 = OrderRoundFactory() round2 = OrderRoundFactory() self.assertTrue(round1.is_open) self.assertEqual(get_current_order_round(), round1)
def test_given_no_order_rounds_function_returns_none(self): ret = get_current_order_round() self.assertIsNone(ret)
def process_request(self, request): request.current_order_round = get_current_order_round()
def test_given_multiple_open_order_rounds_return_first_one(self): round1 = OrderRoundFactory() OrderRoundFactory() self.assertTrue(round1.is_open) self.assertEqual(get_current_order_round(), round1)
def test_given_multiple_future_rounds_the_first_one_is_returned(self): # December 12 OrderRoundFactory(open_for_orders=datetime(2014, 12, 8, 0, 0, tzinfo=UTC), closed_for_orders=datetime(2014, 12, 12, 19, 0, tzinfo=UTC), collect_datetime=datetime(2014, 12, 17, 17, 30, tzinfo=UTC)) # October 24 OrderRoundFactory(open_for_orders=datetime(2014, 11, 24, 0, 0, tzinfo=UTC), closed_for_orders=datetime(2014, 11, 28, 19, 0, tzinfo=UTC), collect_datetime=datetime(2014, 12, 3, 17, 30, tzinfo=UTC)) # October 10 future1 = OrderRoundFactory(open_for_orders=datetime(2014, 11, 10, 0, 0, tzinfo=UTC), closed_for_orders=datetime(2014, 11, 14, 19, 0, tzinfo=UTC), collect_datetime=datetime(2014, 11, 19, 17, 30, tzinfo=UTC)) self.mock_datetime.now.return_value = datetime(2014, 11, 1, 0, 0, tzinfo=UTC) ret = get_current_order_round() self.assertEqual(ret, future1)