cron job added if it wont work fck this
This commit is contained in:
+36
-14
@@ -215,14 +215,13 @@ class ProductDetailModel(models.Model):
|
||||
# def __str__(self):
|
||||
# return f'جزيیات محصول {self.product}'
|
||||
|
||||
|
||||
class ProductVariant(models.Model):
|
||||
product = models.ForeignKey(ProductModel, on_delete=models.CASCADE, related_name='variants', verbose_name='محصول')
|
||||
product_attributes = models.ManyToManyField(AttributeValue, verbose_name='ویژگیها', related_name='variant')
|
||||
in_stock = models.PositiveIntegerField(default=0, verbose_name='تعداد موجود')
|
||||
price = models.PositiveIntegerField(default=0, verbose_name='قیمت')
|
||||
price = models.PositiveIntegerField(verbose_name='قیمت محاسبه شده', blank=True, null=True)
|
||||
input_price = models.PositiveIntegerField(default=0, verbose_name='قیمت ورودی')
|
||||
min_price = models.PositiveIntegerField(verbose_name='قیمت کف', help_text='این قیمت برای کف قیمتی محصول در نظر گرفته میشود')
|
||||
max_price = models.PositiveIntegerField(verbose_name='قیمت سقف', help_text='این قیمت برای سقف قیمتی محصول در نظر گرفته میشود')
|
||||
currency_type = (
|
||||
('dollor', 'دلار'),
|
||||
('toman', 'تومان'),
|
||||
@@ -232,33 +231,56 @@ class ProductVariant(models.Model):
|
||||
sell = models.IntegerField(default=0, verbose_name='فروش')
|
||||
currency = models.CharField(verbose_name='نوع ارز', max_length=20, choices=currency_type)
|
||||
discount = models.SmallIntegerField(default=0, verbose_name='تخفیف')
|
||||
color = models.CharField(verbose_name='رنک', max_length=7, blank=True, null=True)
|
||||
color = models.CharField(verbose_name='رنگ', max_length=7, blank=True, null=True)
|
||||
images = models.ManyToManyField(ProductImageModel, verbose_name='عکس ها')
|
||||
video = models.FileField(upload_to='product_videos/', blank=True, null=True, verbose_name='ویدیو')
|
||||
details = models.ManyToManyField(ProductDetailModel, verbose_name='جزيیات محصول', related_name='product')
|
||||
details = models.ManyToManyField(ProductDetailModel, verbose_name='جزییات محصول', related_name='product')
|
||||
class Meta:
|
||||
verbose_name = 'تنوع محصول'
|
||||
verbose_name_plural = 'تنوعهای محصول'
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.product.name} - {', '.join(str(attr) for attr in self.product_attributes.all())}"
|
||||
|
||||
def get_toman_price(self, dollor_price=None):
|
||||
|
||||
def set_or_update_price(self, dollor_price=None):
|
||||
if not dollor_price:
|
||||
dollor_object, _ = DollorModel.objects.get_or_create(unique_filed='unique')
|
||||
dollor_price = dollor_object.price
|
||||
|
||||
dollar_to_dirham = 0.27
|
||||
if dollor_price is None:
|
||||
raise ValidationError({"dollor_price": "The 'dollor_price' must be provided in the context for dollar pricing."})
|
||||
|
||||
dollar_to_dirham = 0.27
|
||||
|
||||
if self.currency == 'toman':
|
||||
toman_price = self.price
|
||||
toman_price = self.input_price
|
||||
elif self.currency == 'dollor':
|
||||
toman_price = self.price * dollor_price
|
||||
toman_price = self.input_price * dollor_price
|
||||
elif self.currency == 'derham':
|
||||
toman_price = self.price * dollor_price * dollar_to_dirham
|
||||
toman_price = toman_price if toman_price > self.min_price else self.min_price
|
||||
return toman_price
|
||||
toman_price = self.input_price * dollor_price * dollar_to_dirham
|
||||
else:
|
||||
toman_price = self.input_price
|
||||
|
||||
self.price = max(toman_price, self.min_price)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
self.set_or_update_price()
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
def get_toman_price_after_discount(self):
|
||||
return self.get_toman_price() * ((100 - self.discount) / 100)
|
||||
return self.price * ((100 - self.discount) / 100)
|
||||
|
||||
@classmethod
|
||||
def update_all_prices(cls):
|
||||
print('calling the update all prices ')
|
||||
dollor_object, _ = DollorModel.objects.get_or_create(unique_filed='unique')
|
||||
print(dollor_object.price)
|
||||
dollor_object.update_price()
|
||||
dollor_object.save()
|
||||
dollor_price = dollor_object.price
|
||||
print(dollor_object.price)
|
||||
print('classmethod dollor price update ')
|
||||
products = cls.objects.all()
|
||||
for product in products:
|
||||
product.set_or_update_price(dollor_price=dollor_price)
|
||||
product.save()
|
||||
Reference in New Issue
Block a user