from django.db import models from core.apps.shared.models import BaseModel from core.apps.finance.models import CashTransaction, PaymentType, ExpenceType from core.apps.counterparty.models import Counterparty from core.apps.accounts.models import User class Expence(BaseModel): STATUS = ( ('CANCELLED', 'rad etildi'), ('PENDING', 'kutilmoqda'), ('CONFIRMED', 'tasdiqlangan'), ) user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='expences', null=True) cash_transaction = models.ForeignKey(CashTransaction, on_delete=models.CASCADE, related_name='expences') payment_type = models.ForeignKey(PaymentType, on_delete=models.CASCADE, related_name='expences') project_folder = models.ForeignKey( 'projects.ProjectFolder', on_delete=models.SET_NULL, related_name='expences', null=True, blank=True ) project = models.ForeignKey( 'projects.Project', on_delete=models.SET_NULL, null=True, related_name='expences', blank=True ) expence_type = models.ForeignKey( ExpenceType, on_delete=models.SET_NULL, null=True, blank=True, related_name='expences' ) counterparty = models.ForeignKey( Counterparty, on_delete=models.SET_NULL, null=True, blank=True, related_name='expences' ) party = models.ForeignKey( 'orders.Party', on_delete=models.SET_NULL, null=True, blank=True, related_name='expences' ) price = models.PositiveBigIntegerField() exchange_rate = models.PositiveBigIntegerField(default=0, null=True, blank=True) currency = models.CharField( max_length=3, choices=[('usd','usd'), ('uzs', 'uzs')] ) date = models.DateField(null=True, blank=True) comment = models.TextField(null=True, blank=True) audit = models.CharField(max_length=200, null=True, blank=True) file = models.FileField(null=True, blank=True, upload_to='finance/expence/files/') status = models.CharField(max_length=20, choices=STATUS, default='PENDING', null=True, blank=True) is_deleted = models.BooleanField(default=False) def __str__(self): return f'{self.cash_transaction} kassa uchun chiqim {self.price}' class Meta: verbose_name = 'chiqim' verbose_name_plural = 'chiqimlar' class DeletedExpence(BaseModel): expence = models.ForeignKey(Expence, on_delete=models.CASCADE, related_name='deleted_expences') comment = models.CharField(max_length=200) def __str__(self): return f'{self.expence} is deleted' class Meta: verbose_name = "O'chirilgan chiqim" verbose_name_plural = "O'chirilgan chiqim"