Django backend for WorkX project
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
Den här utvecklingskatalogen är arkiverad. Du kan se filer och klona katalogen, men inte öppna ärenden eller genomföra push- eller pull-förfrågningar.

65 rader
2.0 KiB

  1. from django.db import models
  2. from employee.models import Employee
  3. from client.models import Address
  4. class CompanyBankAccount(models.Model):
  5. name = models.CharField(max_length=50)
  6. logo = models.ImageField(upload_to='banks', null=True, blank=True)
  7. account_number = models.CharField(max_length=30)
  8. ifsc_code = models.CharField(max_length=30)
  9. address = models.ForeignKey(Address, on_delete=models.CASCADE)
  10. def __str__(self):
  11. return self.name
  12. class Category(models.Model):
  13. name = models.CharField(max_length=30)
  14. def __str__(self):
  15. return self.name
  16. class SubCategory(models.Model):
  17. name = models.CharField(max_length=30)
  18. parent_category = models.ForeignKey(Category, on_delete=models.CASCADE)
  19. def __str__(self):
  20. return self.name
  21. class Expense(models.Model):
  22. title = models.CharField(max_length=50)
  23. sub_category = models.ForeignKey(SubCategory, on_delete=models.CASCADE)
  24. expense_id = models.CharField(max_length=15)
  25. date_of_creation = models.DateField()
  26. team_member = models.ForeignKey(Employee, on_delete=models.CASCADE)
  27. company_bank_account = models.ForeignKey(CompanyBankAccount, on_delete=models.CASCADE)
  28. is_reimbursement = models.BooleanField(default=False)
  29. is_perk = models.BooleanField(default=False)
  30. is_approved = models.BooleanField(default=False)
  31. @property
  32. def expense_total(self):
  33. items = self.items.all()
  34. total = 0
  35. for item in items:
  36. total += item.item_total
  37. return total
  38. class Item(models.Model):
  39. name = models.CharField(max_length=100)
  40. rate = models.DecimalField(max_digits=15, decimal_places=2)
  41. quantity = models.IntegerField()
  42. expense = models.ForeignKey(Expense, on_delete=models.CASCADE, related_name='items')
  43. attachment = models.ImageField(upload_to='expense_item')
  44. @property
  45. def item_total(self):
  46. return self.amount * self.quantity
  47. def __str__(self):
  48. return self.name