finish payment logic

This commit is contained in:
Parsa Nazer
2025-09-23 11:25:20 +03:30
parent 4047352399
commit 0ce765c2df
6 changed files with 142 additions and 36 deletions
+38
View File
@@ -55,6 +55,11 @@ class Cart(models.Model):
def __str__(self):
return f"Cart for {self.user.email}"
def clear_cart(self):
self.items.all().delete()
self.discount_code = None
self.save()
@property
def discount_code_amount(self):
if self.discount_code:
@@ -151,6 +156,11 @@ class OrderModel(models.Model):
cart_total = models.BigIntegerField(
null=True, blank=True, verbose_name='کل سبد خرید')
cart = models.ForeignKey(Cart, on_delete=models.CASCADE, null=True, blank=True)
is_stock_rolled_back = models.BooleanField(
default=False, verbose_name="موجودی برگردانده شده")
def __str__(self):
return f'سفارش: {self.pk + 1000}'
@@ -158,6 +168,34 @@ class OrderModel(models.Model):
verbose_name = 'سفارش'
verbose_name_plural = 'سفارشات'
def rollback_stock(self):
"""
Rollback stock quantities for all items in this order
Returns True if successful, False otherwise
"""
if self.is_stock_rolled_back:
return False
# if not self.cart:
# return False
try:
# Get all cart items and rollback their stock
for order_item in self.items.all():
product = order_item.product
# Add back the quantity to stock
product.stock_quantity += order_item.quantity
product.save()
# Mark as rolled back
self.is_stock_rolled_back = True
self.save(update_fields=['is_stock_rolled_back'])
return True
except Exception as e:
# Log the error if you have logging setup
# logger.error(f"Failed to rollback stock for order {self.pk}: {e}")
return False
class OrderItemModel(models.Model):
order = models.ForeignKey(