Files
ibapp-backend/core/apps/finance/models/expence.py
behruz-dev 3eba00f525 fix
2025-11-12 16:15:32 +05:00

68 lines
2.8 KiB
Python

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'),
)
number = models.BigIntegerField(default=0)
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.DecimalField(max_digits=15, decimal_places=2, default=0.00)
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=20, choices=[('CHECKED', 'tekshirildi'),('PROCESS', 'jarayonda')],
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)
user = models.ForeignKey(User, on_delete=models.SET_NULL, related_name='deleted_expences', null=True)
def __str__(self):
return f'{self.expence} is deleted'
class Meta:
verbose_name = "O'chirilgan chiqim"
verbose_name_plural = "O'chirilgan chiqim"