add rounding method for Toman price in ProductVariant model
This commit is contained in:
@@ -446,6 +446,10 @@ class ProductVariant(DirtyFieldsMixin, models.Model):
|
||||
except Exception:
|
||||
return 0
|
||||
|
||||
def round_toman(self, value):
|
||||
"""Round to nearest 1000 toman (e.g., 89123 -> 89000, 89500 -> 90000)"""
|
||||
return round(value / 1000) * 1000
|
||||
|
||||
def set_or_update_price(self, dollor_price=None):
|
||||
if not dollor_price:
|
||||
dollor_object, _ = DollorModel.objects.get_or_create(
|
||||
@@ -468,7 +472,8 @@ class ProductVariant(DirtyFieldsMixin, models.Model):
|
||||
|
||||
# Always recalculate Toman price using stored dollar price and current rate
|
||||
if self.price_in_dollor:
|
||||
toman_price = self.price_in_dollor * Decimal(str(dollor_price))
|
||||
# toman_price = self.price_in_dollor * Decimal(str(dollor_price))
|
||||
toman_price = Decimal(str(self.price_in_dollor)) * Decimal(str(dollor_price))
|
||||
else:
|
||||
# Fallback if price_in_dollor is not set yet
|
||||
toman_price = self.input_price
|
||||
@@ -476,7 +481,7 @@ class ProductVariant(DirtyFieldsMixin, models.Model):
|
||||
toman_price = self.input_price
|
||||
self.price_in_dollor = None
|
||||
|
||||
self.price = max(int(toman_price), self.min_price)
|
||||
self.price = max(self.round_toman(toman_price), self.min_price)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
self.set_or_update_price()
|
||||
|
||||
Reference in New Issue
Block a user