clean up cart and add order_id filed to order

This commit is contained in:
Parsa Nazer
2025-03-27 22:17:03 +03:30
parent 5ed57605fc
commit a4ea17d816
4 changed files with 52 additions and 33 deletions
+25 -27
View File
@@ -44,6 +44,7 @@ class OrderModel(models.Model):
('CANCELED', 'لغو شده'),
('REFUNDED', 'مرجوع شده'),
]
order_id = models.PositiveIntegerField(unique=True, null=True, blank=True, verbose_name='شماره سفارش')
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='orders', verbose_name='کاربر')
address = models.ForeignKey(UserAddressModel, on_delete=models.SET_NULL, related_name='orders', null=True, verbose_name='ادرس')
created_at = jmodels.jDateField(blank=True, null=True, verbose_name="تاریخ ثبت سفارش")
@@ -54,7 +55,6 @@ class OrderModel(models.Model):
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='کل سبد خرید')
# bank_records = models.ManyToManyField(Bank, max_length=100, verbose_name='رکورد بانکی', null=True, blank=True)
def __str__(self):
return f'سفارش: {self.id + 1000}'
@@ -66,39 +66,32 @@ class OrderModel(models.Model):
def save(self, *args, **kwargs):
try:
push_object = PushSubscription.objects.get(user=self.user)
except:
print('object not found')
try:
push_object.send_notif(f'سفارش شما به {self.get_status_display()} تغییر کرد', f'سفارش شما به {self.get_status_display()} تغییر کرد', ProductImageModel.objects.all().first().image.url)
except:
print('didnt send')
if not self.pk:
last_instance = self.__class__.objects.order_by("pk").last()
self.order_id = (last_instance.pk + 1001) if last_instance else 1001
super().save(*args, **kwargs)
# def discount(self):
# # total_with_item_discount = sum(item.total_with_discount() for item in self.items.all())
# # discount_percent = self.discount_code.percent
# # return total_with_item_discount * ((100 - discount_percent) / 100)
# pass
def cal_discount(self):
# total_with_item_discount = sum(item.total_with_discount() for item in self.items.all())
# discount_percent = self.discount_code.percent
# return total_with_item_discount * ((100 - discount_percent) / 100)
pass
# def tax(self):
# return self.total_without_tax() * 0.2
def cal_tax(self):
return self.total_without_tax() * 0.2
# def total(self):
# pass
# return self.total_with_discount() + self.tax()
def cal_total(self):
pass
return self.total_with_discount() + self.tax()
# def final_price(self):
# pass
def cal_final_price(self):
pass
# def submit_cart(self):
# pass
@@ -108,15 +101,20 @@ class OrderItemModel(models.Model):
quantity = models.PositiveSmallIntegerField(verbose_name="تعداد")
price = models.PositiveIntegerField(verbose_name='قیمت', default=0)
product = models.ForeignKey(ProductVariant, on_delete=models.PROTECT, verbose_name="محصول")
discount = models.SmallIntegerField(default=0, verbose_name='تخفیف')
class Meta:
verbose_name = 'ایتم سبد خرید'
verbose_name_plural = 'ایتم های سبد خرید'
def total(self):
return self.quantity * self.product.price
# def total(self):
# return self.quantity * self.product.price
# def total_with_discount(self):
# return self.quantity * self.product.get_toman_price_after_discount()
def update_fields(self):
pass
def total_with_discount(self):
return self.quantity * self.product.get_toman_price_after_discount()
def __str__(self):
return f'({self.product}) - ({self.order.user})'