Files
ibapp-backend/core/apps/finance/models/income.py
2025-11-07 12:17:57 +05:00

57 lines
2.3 KiB
Python

from django.db import models
from core.apps.shared.models import BaseModel
from core.apps.finance.models import CashTransaction, PaymentType, TypeIncome
from core.apps.counterparty.models import Counterparty
from core.apps.accounts.models import User
class Income(BaseModel):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='incomes', null=True)
cash_transaction = models.ForeignKey(
CashTransaction, on_delete=models.CASCADE, related_name='incomes'
)
payment_type = models.ForeignKey(PaymentType, on_delete=models.CASCADE, related_name='incomes')
project_folder = models.ForeignKey(
'projects.ProjectFolder', on_delete=models.SET_NULL, related_name='incomes', null=True, blank=True
)
project = models.ForeignKey(
'projects.Project', on_delete=models.SET_NULL, related_name='incomes', null=True, blank=True
)
counterparty = models.ForeignKey(
Counterparty, on_delete=models.SET_NULL, related_name='incomes', null=True, blank=True
)
type_income = models.ForeignKey(
TypeIncome, on_delete=models.SET_NULL, related_name='incomes', null=True, blank=True
)
currency = models.CharField(choices=[('uzs', 'uzs'),('usd', 'usd')], max_length=3)
price = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
exchange_rate = models.PositiveBigIntegerField(default=0, null=True, blank=True)
date = models.DateField(null=True, blank=True)
comment = models.TextField(null=True, blank=True)
file = models.FileField(upload_to='finance/income/file/', null=True, blank=True)
audit = models.CharField(
max_length=20, choices=[('CHECKED', 'tekshirildi'),('PROCESS', 'jarayonda')],
null=True, blank=True
)
is_deleted = models.BooleanField(default=False)
def __str__(self):
return f'{self.cash_transaction} kassa uchun kirim {self.price}'
class Meta:
verbose_name = 'kirim'
verbose_name_plural = 'kirimlar'
class DeletedIncome(BaseModel):
income = models.ForeignKey(Income, on_delete=models.CASCADE, related_name='deleted_incomes')
comment = models.CharField(max_length=200)
def __str__(self):
return f'{self.income} is deleted'
class Meta:
verbose_name = "O'chirilgan kirim"
verbose_name_plural = "O'chirilgan kirimlar"