|
- 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 SubCategory(models.Model):
- name = models.CharField(max_length=30)
- parent_category = models.ForeignKey(Category, on_delete=models.CASCADE)
-
- def __str__(self):
- return self.name
-
-
- class Expense(models.Model):
- title = models.CharField(max_length=50)
- sub_category = models.ForeignKey(SubCategory, 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)
- is_reimbursement = models.BooleanField(default=False)
- is_perk = models.BooleanField(default=False)
- is_approved = models.BooleanField(default=False)
-
- @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
|