from django.db import models from employee.models import Employee from client.models import Address class CompanyBankAccount(models.Model): name = models.CharField(max_length=50) logo = models.ImageField(upload_to='banks', null=True, blank=True) account_number = models.CharField(max_length=30) ifsc_code = models.CharField(max_length=30) address = models.ForeignKey(Address, on_delete=models.CASCADE) def __str__(self): return self.name class Category(models.Model): name = models.CharField(max_length=30) def __str__(self): return self.name class Expense(models.Model): PAYMENT_METHODS = ( ("RMB", "Reimburse"), ("PER", "Perk") ) title = models.CharField(max_length=50) category = models.ForeignKey(Category, on_delete=models.CASCADE) expense_id = models.CharField(max_length=15) date_of_creation = models.DateField() team_member = models.ForeignKey(Employee, on_delete=models.CASCADE) company_bank_account = models.ForeignKey(CompanyBankAccount, on_delete=models.CASCADE) repayment_mode = models.CharField(max_length=10, choices=PAYMENT_METHODS, default=PAYMENT_METHODS[0][0]) @property def expense_total(self): items = self.items.all() total = 0 for item in items: total += item.item_total return total class Item(models.Model): name = models.CharField(max_length=100) rate = models.DecimalField(max_digits=15, decimal_places=2) quantity = models.IntegerField() expense = models.ForeignKey(Expense, on_delete=models.CASCADE, related_name='items') attachment = models.ImageField(upload_to='expense_item') @property def item_total(self): return self.amount * self.quantity def __str__(self): return self.name