from django.db import models from django.utils.translation import gettext_lazy as _ # shared from core.apps.shared.models import BaseModel # warehouse from core.apps.wherehouse.models.wherehouse import WhereHouse # products from core.apps.products.models.product import Product from core.apps.products.models.unity import Unity # projects from core.apps.projects.models import Project, ProjectFolder class Inventory(BaseModel): wherehouse = models.ForeignKey(WhereHouse, on_delete=models.CASCADE, related_name='inventories') quantity = models.PositiveIntegerField(default=0) product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='inventories') unity = models.ForeignKey(Unity, on_delete=models.SET_NULL, related_name='inventories', null=True) price = models.DecimalField(max_digits=15, decimal_places=2, default=0.00) project_folder = models.ForeignKey( ProjectFolder, on_delete=models.SET_NULL, null=True, blank=True, related_name='inventories' ) project = models.ForeignKey( Project, on_delete=models.SET_NULL, null=True, blank=True, related_name='inventories' ) is_invalid = models.BooleanField(default=False) unit_price = models.DecimalField(max_digits=15, decimal_places=2, default=0.00) received_currency = models.CharField(max_length=3, null=True, blank=True) def __str__(self): return f'{self.product} in {self.wherehouse}' def save(self, *args, **kwargs): if self.quantity == 0: self.is_invalid = True return super().save() class Meta: verbose_name = _('inventar') verbose_name_plural = _("inventarlar")