Quellcode durchsuchen

Expense model defined and ready to be reviewed along with exployee perks model

master
kj1352 vor 3 Jahren
Ursprung
Commit
4745884b62
8 geänderte Dateien mit 97 neuen und 1 gelöschten Zeilen
  1. +26
    -0
      employee/models.py
  2. +0
    -0
      expense/__init__.py
  3. +3
    -0
      expense/admin.py
  4. +6
    -0
      expense/apps.py
  5. +54
    -0
      expense/models.py
  6. +3
    -0
      expense/tests.py
  7. +3
    -0
      expense/views.py
  8. +2
    -1
      workx_backend/settings/base.py

+ 26
- 0
employee/models.py Datei anzeigen

@@ -15,3 +15,29 @@ class Employee(models.Model):

def __str__(self):
return self.employee_id


class Perk(models.Model):
employee = models.OneToOneField(Employee, on_delete=models.CASCADE)
perk_per_month = models.DecimalField(max_digits=15, decimal_places=2)

@property
def total_perk(self):
perks = self.perk_transactions.all()
total = 0
for perk in perks:
if perk.type == 'INCOME':
total += perk.amount
else:
total -= perk.amount
return total


class PerkTransaction(models.Model):
TRANSACTION_TYPE = (
("INCOME", "INCOME"),
("EXPENSE", "EXPENSE")
)
type = models.CharField(choices=TRANSACTION_TYPE, default="INCOME", max_length=10)
amount = models.DecimalField(max_digits=15, decimal_places=2)
perk = models.ForeignKey(Perk, on_delete=models.CASCADE)

+ 0
- 0
expense/__init__.py Datei anzeigen


+ 3
- 0
expense/admin.py Datei anzeigen

@@ -0,0 +1,3 @@
from django.contrib import admin

# Register your models here.

+ 6
- 0
expense/apps.py Datei anzeigen

@@ -0,0 +1,6 @@
from django.apps import AppConfig


class ExpenseConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'expense'

+ 54
- 0
expense/models.py Datei anzeigen

@@ -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

+ 3
- 0
expense/tests.py Datei anzeigen

@@ -0,0 +1,3 @@
from django.test import TestCase

# Create your tests here.

+ 3
- 0
expense/views.py Datei anzeigen

@@ -0,0 +1,3 @@
from django.shortcuts import render

# Create your views here.

+ 2
- 1
workx_backend/settings/base.py Datei anzeigen

@@ -29,7 +29,8 @@ INSTALLED_APPS = [
'employee',
'invoice',
'project',
'representative'
'representative',
'expense'
]

PASSWORDLESS_AUTH = {