from django.db import models from employee.models import Employee class CompanyBankAccount(models.Model): name = models.CharField(max_length=50) logo = models.ImageField(upload_to='banks', null=True, blank=True) 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_MODE = ( ("REIMBURSE", "REIMBURSE"), ("PERK", "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_MODE, default="REIMBURSE") @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) attachment = models.ImageField(upload_to='expense_item') @property def item_total(self): return self.amount * self.quantity def __str__(self): return self.name