from django.db import models from django.contrib.auth.models import User class Factor(models.Model): class Meta: permissions = [ ("ViewFactor", "ViewFactor"), ("DelFactor", "DelFactor"), ("EditFactor", "EditFactor"), ("AddFactor", "AddFactor") ] customer = models.ForeignKey('Customer', on_delete=models.CASCADE) create_date = models.DateTimeField(auto_now_add=True) amount = models.IntegerField() discount = models.IntegerField(null=True, blank=True) deadline = models.DateTimeField(null=True, blank=True) desc = models.CharField(max_length=100, default='') user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True) statusList = [ ('unpaid', 'unpaid'), ('paid', 'paid'), ('cancell', 'cancell'), ] pay_status = models.CharField(max_length=10, choices=statusList, default='') FactorTypeList = [ ('Nasb', 'Nasb'), ('Khadamat', 'Khadamat'), ('Garranty', 'Garranty'), ] FactorType = models.CharField(max_length=10, choices=FactorTypeList, default='') PayTypeList = [ ('naghd', 'naghd'), ('cardToCard', 'cardToCard'), ('kartKhan', 'kartKhan'), ('nesiye', 'nesiye'), ('check', 'check'), ] PayType = models.CharField(max_length=30, choices=PayTypeList, default='') # فیلد جدید برای حذف نرم is_active = models.BooleanField(default=True, null=True, blank=True) # بازنویسی متد حذف: ابطال فاکتور به جای حذف فیزیکی def delete(self, *args, **kwargs): # فاکتور باطل می‌شود اما رکوردهای انبار دست‌نخورده باقی می‌مانند! self.is_active = False self.pay_status = 'cancell' self.save() class FactorIteam(models.Model): # پیشنهاد: در آینده املای نام این کلاس را به FactorItem اصلاح کنید factor = models.ForeignKey(Factor, on_delete=models.CASCADE) product = models.ForeignKey('Product', on_delete=models.CASCADE, null=True, blank=True) product_name = models.CharField(max_length=200, default='') num = models.IntegerField() amount = models.IntegerField() garantyEsh = models.CharField(max_length=100, default='', null=True, blank=True)