conditions.py 文件源码

python
阅读 27 收藏 0 点赞 0 评论 0

项目:django-oscar-bluelight 作者: thelabnyc 项目源码 文件源码
def consume_items(self, offer, basket, affected_lines):
        """
        Same as ValueCondition.consume_items, except that it returns a list of consumed items. This
        is needed for CompoundCondition to be able to correctly consume items.
        """
        applicable_lines = self.get_applicable_lines(offer, basket, most_expensive_first=True)
        applicable_line_ids = set(line.id for __, line in applicable_lines)

        value_consumed = D('0.00')
        affected_lines = list(affected_lines)
        for line, __, qty in affected_lines:
            if line.id in applicable_line_ids:
                price = self._get_unit_price(offer, line)
                value_consumed += price * qty

        to_consume = max(0, self.value - value_consumed)
        if to_consume == 0:
            return affected_lines

        for price, line in applicable_lines:
            quantity_to_consume = (to_consume / price).quantize(D(1), ROUND_UP)
            quantity_to_consume = min(line.quantity_without_discount, quantity_to_consume)
            line.consume(quantity_to_consume)
            affected_lines.append((line, 0, quantity_to_consume))
            to_consume -= price * quantity_to_consume
            if to_consume <= 0:
                break
        return affected_lines
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号