def METHOD_NAME(self, policy_coupon, line_items, combo=False):
    """
    Apply discounts on given line items.
    Return line_items with the given discount_policy and
    the discounted amount assigned to each line item.
    Assumes that the discount policies and discount coupons passed as arguments are
    valid and usable.
    """
    discounted_line_items = []
    # unpack (discount_policy, dicount_coupon)
    discount_policy, coupon = policy_coupon
    applied_to_count = 0
    for line_item in line_items:
        discounted_amount = self.calculate_discounted_amount(
            discount_policy, line_item
        )
        if (
            (
                coupon
                and self.is_coupon_usable(coupon, applied_to_count)
                or discount_policy.is_automatic
            )
            and discounted_amount > 0
            and (
                not line_item.discount_policy_id
                or (combo and line_item.discounted_amount < discounted_amount)
            )
        ):
            # if the line item's assigned discount is lesser
            # than the current discount, assign the current discount to the line item
            discounted_line_items.append(
                make_ntuple(
                    item_id=line_item.item_id,
                    base_amount=line_item.base_amount,
                    line_item_id=line_item.id if line_item.id else None,
                    discount_policy_id=discount_policy.id,
                    discount_coupon_id=coupon.id if coupon else None,
                    discounted_amount=discounted_amount,
                    final_amount=line_item.base_amount - discounted_amount,
                )
            )
            applied_to_count += 1
        else:
            # Current discount is not applicable, copy over the line item as it is.
            discounted_line_items.append(line_item)
    return discounted_line_items