update cart logic
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
from rest_framework import serializers
|
||||
from .models import OrderItemModel, OrderModel, DiscountCode
|
||||
from .models import OrderItemModel, OrderModel, DiscountCode, Cart, CartItem
|
||||
from product.serializers import ProductVariantSerialzier, AttributeValueSerialzier, ProductImageSerailizer
|
||||
from account.serializers import UserAddressSerializer
|
||||
from product.models import ProductVariant
|
||||
@@ -52,38 +52,37 @@ class OrderItemSerailzier(serializers.ModelSerializer):
|
||||
final_price = serializers.SerializerMethodField()
|
||||
discount = serializers.SerializerMethodField()
|
||||
class Meta:
|
||||
model = OrderItemModel
|
||||
exclude = ('order',)
|
||||
read_only_fields = ('order', 'product', 'discount_percent')
|
||||
model = CartItem
|
||||
exclude = ('cart',)
|
||||
read_only_fields = ('cart', 'product', 'discount_percent')
|
||||
def get_product(self, obj):
|
||||
return ProductVariantSerialzier(instance=obj.product, context={'request': self.context.get('request')}).data
|
||||
return ProductVariantSerialzier(instance=obj.product_variant, context={'request': self.context.get('request')}).data
|
||||
|
||||
def get_discount_amount(self, obj):
|
||||
discount_amount = int(obj.price * (obj.product.discount / 100))
|
||||
return f'{(discount_amount * obj.quantity):,.0f} تومان'
|
||||
return f'{obj.item_discount_amount:,.0f} تومان'
|
||||
|
||||
def get_final_price(self, obj):
|
||||
final_price = obj.price - int(obj.price * (obj.product.discount / 100))
|
||||
return f'{(final_price * obj.quantity):,.0f} تومان'
|
||||
return f'{obj.price_after_discount:,.0f} تومان'
|
||||
|
||||
def get_price(self, obj):
|
||||
return f'{(obj.price * obj.quantity):,.0f} تومان'
|
||||
return f'{obj.price_before_discount:,.0f} تومان'
|
||||
|
||||
def get_discount(self, obj):
|
||||
return obj.product.discount
|
||||
|
||||
return obj.product_variant.discount
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
class CartSerializer(serializers.ModelSerializer):
|
||||
items = OrderItemSerailzier(many=True)
|
||||
cart_total = serializers.SerializerMethodField()
|
||||
tax = serializers.SerializerMethodField()
|
||||
tax_amount = serializers.SerializerMethodField()
|
||||
final_price = serializers.SerializerMethodField()
|
||||
discount_code = serializers.SerializerMethodField()
|
||||
items_discount_amount = serializers.SerializerMethodField()
|
||||
address = UserAddressSerializer()
|
||||
class Meta:
|
||||
model = OrderModel
|
||||
fields = [ 'discount_code', 'items', 'cart_total', 'tax', 'final_price', 'address']
|
||||
model = Cart
|
||||
fields = ['items_discount_amount', 'discount_code', 'items', 'cart_total', 'tax_amount', 'final_price', 'address']
|
||||
|
||||
|
||||
def get_discount_code(self, obj):
|
||||
@@ -91,20 +90,23 @@ class CartSerializer(serializers.ModelSerializer):
|
||||
return {
|
||||
'code': f'{obj.discount_code.code}',
|
||||
'percent': obj.discount_code.percent,
|
||||
'amount': f'{10000:,.0f} تومان'
|
||||
'amount': f'{obj.discount_code_amount:,.0f} تومان'
|
||||
}
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
def get_tax(self, obj):
|
||||
return f'{1000:,.0f} تومان'
|
||||
def get_tax_amount(self, obj):
|
||||
return f'{obj.tax_amount:,.0f} تومان'
|
||||
|
||||
def get_cart_total(self, obj):
|
||||
return f'{10000:,.0f} تومان'
|
||||
return f'{obj.cart_total:,.0f} تومان'
|
||||
|
||||
def get_items_discount_amount(self, obj):
|
||||
return f'{obj.items_discount_amount:,.0f} تومان'
|
||||
|
||||
def get_final_price(self, obj):
|
||||
return f'{8000:,.0f} تومان'
|
||||
return f'{obj.final_price:,.0f} تومان'
|
||||
|
||||
|
||||
class OrderListSerializer(serializers.ModelSerializer):
|
||||
|
||||
Reference in New Issue
Block a user