new fields for order model and update cart serialzier
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 5.1.2 on 2025-03-11 18:52
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('order', '0012_rename_name_discountcode_code'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='ordermodel',
|
||||||
|
name='cart_total',
|
||||||
|
field=models.BigIntegerField(blank=True, null=True, verbose_name='کل سبد خرید'),
|
||||||
|
),
|
||||||
|
]
|
||||||
+13
-5
@@ -50,6 +50,12 @@ class OrderModel(models.Model):
|
|||||||
is_paid = models.BooleanField(default=False, verbose_name="وضعیت پرداخت")
|
is_paid = models.BooleanField(default=False, verbose_name="وضعیت پرداخت")
|
||||||
discount_code = models.ForeignKey(DiscountCode, on_delete=models.PROTECT, null=True, blank=True, verbose_name="کدتخفیف")
|
discount_code = models.ForeignKey(DiscountCode, on_delete=models.PROTECT, null=True, blank=True, verbose_name="کدتخفیف")
|
||||||
status = models.CharField(max_length=20, choices=STATUS_CHOICES, verbose_name="وضعیت سفارش")
|
status = models.CharField(max_length=20, choices=STATUS_CHOICES, verbose_name="وضعیت سفارش")
|
||||||
|
discount = models.BigIntegerField(null=True, blank=True, verbose_name='کل تخقیف')
|
||||||
|
tax = models.BigIntegerField(null=True, blank=True, verbose_name='مالیات')
|
||||||
|
final_price = models.BigIntegerField(null=True, blank=True, verbose_name='قیمت نهایی')
|
||||||
|
cart_total = models.BigIntegerField(null=True, blank=True, verbose_name='کل سبد خرید')
|
||||||
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'سفارش: {self.id}'
|
return f'سفارش: {self.id}'
|
||||||
|
|
||||||
@@ -58,9 +64,6 @@ class OrderModel(models.Model):
|
|||||||
verbose_name_plural = 'سفارشات'
|
verbose_name_plural = 'سفارشات'
|
||||||
|
|
||||||
|
|
||||||
# def total_without_tax(self):
|
|
||||||
# return sum(item.total() for item in self.items.all())
|
|
||||||
|
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
try:
|
try:
|
||||||
@@ -76,7 +79,7 @@ class OrderModel(models.Model):
|
|||||||
|
|
||||||
def discount_list(self):
|
def discount_list(self):
|
||||||
items_with_discount = self.items.filter(product__discount__gt=0)
|
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}
|
discount_amount_dict = [{'product_name': f'{item.product}', 'discount': f'{item.product.discount}', 'discount_amount': ''} for item in items_with_discount]
|
||||||
|
|
||||||
if self.discount_code:
|
if self.discount_code:
|
||||||
|
|
||||||
@@ -90,9 +93,11 @@ class OrderModel(models.Model):
|
|||||||
|
|
||||||
def discount(self):
|
def discount(self):
|
||||||
# total_with_item_discount = sum(item.total_with_discount() for item in self.items.all())
|
# total_with_item_discount = sum(item.total_with_discount() for item in self.items.all())
|
||||||
# return total_with_item_discount * ((100 - discount_percent) / 100)
|
|
||||||
# discount_percent = self.discount_code.percent
|
# discount_percent = self.discount_code.percent
|
||||||
|
# return total_with_item_discount * ((100 - discount_percent) / 100)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def tax(self):
|
def tax(self):
|
||||||
return self.total_without_tax() * 0.2
|
return self.total_without_tax() * 0.2
|
||||||
|
|
||||||
@@ -101,9 +106,12 @@ class OrderModel(models.Model):
|
|||||||
pass
|
pass
|
||||||
# return self.total_with_discount() + self.tax()
|
# return self.total_with_discount() + self.tax()
|
||||||
|
|
||||||
|
|
||||||
def final_price(self):
|
def final_price(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def submit_cart(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,20 +20,27 @@ class OrderItemSerailzier(serializers.ModelSerializer):
|
|||||||
|
|
||||||
class CartSerializer(serializers.ModelSerializer):
|
class CartSerializer(serializers.ModelSerializer):
|
||||||
items = OrderItemSerailzier(many=True)
|
items = OrderItemSerailzier(many=True)
|
||||||
discount = serializers.SerializerMethodField()
|
product_discount = serializers.SerializerMethodField()
|
||||||
cart_total = serializers.SerializerMethodField()
|
cart_total = serializers.SerializerMethodField()
|
||||||
tax = serializers.SerializerMethodField()
|
tax = serializers.SerializerMethodField()
|
||||||
final_price = serializers.SerializerMethodField()
|
final_price = serializers.SerializerMethodField()
|
||||||
discount_code = serializers.SerializerMethodField()
|
discount_code = serializers.SerializerMethodField()
|
||||||
class Meta:
|
class Meta:
|
||||||
model = OrderModel
|
model = OrderModel
|
||||||
fields = [ 'discount_code', 'items', 'cart_total', 'discount', 'tax', 'final_price']
|
fields = [ 'discount_code', 'items', 'cart_total', 'product_discount', 'tax', 'final_price']
|
||||||
|
|
||||||
|
|
||||||
def get_discount_code(self, obj):
|
def get_discount_code(self, obj):
|
||||||
return obj.discount_code.code if obj.discount_code else None
|
if obj.discount_code:
|
||||||
|
return {
|
||||||
|
'code': obj.discount_code.code,
|
||||||
|
'persent': obj.discount_code.percent,
|
||||||
|
'amount': '100,000 تومان'
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
def get_discount(self, obj):
|
def get_product_discount(self, obj):
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
'product_name': 'iphone 13',
|
'product_name': 'iphone 13',
|
||||||
@@ -47,6 +54,9 @@ class CartSerializer(serializers.ModelSerializer):
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def get_tax(self, obj):
|
def get_tax(self, obj):
|
||||||
return 1000
|
return 1000
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user