|
|
@@ -0,0 +1,54 @@ |
|
|
|
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 |