diff --git a/backend/order/models.py b/backend/order/models.py index ea67986..09648ff 100644 --- a/backend/order/models.py +++ b/backend/order/models.py @@ -74,17 +74,25 @@ class OrderModel(models.Model): super().save(*args, **kwargs) + def discount_list(self): + items_with_discount = self.items.filter(product__discount__gt=0) + discount_amount_dict = {f'{item.product}': item.product.discount for item in items_with_discount} + + if self.discount_code: + + if self.discount_code.is_valid(): + discount_amount_dict['discount_code_discount'] = 10 + else: + self.discount = None + self.save() + + return discount_amount_dict + def discount(self): - pass # total_with_item_discount = sum(item.total_with_discount() for item in self.items.all()) - # if self.discount_code: - # if not self.discount_code.is_valid(): - # raise DiscountNotAvailableError('این کد تخفیف دیگر معتبر نیست') - # discount_percent = self.discount_code.percent - # return total_with_item_discount * ((100 - discount_percent) / 100) - # return total_with_item_discount - - + # return total_with_item_discount * ((100 - discount_percent) / 100) + # discount_percent = self.discount_code.percent + pass def tax(self): return self.total_without_tax() * 0.2 diff --git a/backend/order/serializers.py b/backend/order/serializers.py index 5b1b340..17329b2 100644 --- a/backend/order/serializers.py +++ b/backend/order/serializers.py @@ -1,7 +1,7 @@ from rest_framework import serializers from .models import OrderItemModel, OrderModel, DiscountCode from product.serializers import ProductVariantSerialzier - +from account.serializers import UserAddressSerializer class DiscountCodeSerializer(serializers.ModelSerializer): class Meta: model = DiscountCode @@ -20,11 +20,44 @@ class OrderItemSerailzier(serializers.ModelSerializer): class CartSerializer(serializers.ModelSerializer): items = OrderItemSerailzier(many=True) + discount = serializers.SerializerMethodField() + cart_total = serializers.SerializerMethodField() + tax = serializers.SerializerMethodField() + final_price = serializers.SerializerMethodField() + discount_code = serializers.SerializerMethodField() class Meta: model = OrderModel - fields = ['address', 'created_at', 'is_paid', 'status', 'discount_code', 'items'] + fields = [ 'discount_code', 'items', 'cart_total', 'discount', 'tax', 'final_price'] + def get_discount_code(self, obj): + return obj.discount_code.code if obj.discount_code else None + + def get_discount(self, obj): + return [ + { + 'product_name': 'iphone 13', + 'dicount': '20%', + 'discount_amount': '100,000 تومان' + }, + { + 'product_name': 'iphone 12', + 'dicount': '10%', + 'discount_amount': '50,000 تومان' + }, + ] + + def get_tax(self, obj): + return 1000 + + def get_cart_total(self, obj): + return 10000 + + def get_final_price(self, obj): + return 8000 + + + class OrderSerializer(serializers.ModelSerializer): count = serializers.SerializerMethodField() images = serializers.SerializerMethodField()