You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
193 lines
6.5 KiB
193 lines
6.5 KiB
from datetime import date
|
|
|
|
from django import forms
|
|
from django.db import models
|
|
from django.contrib.auth.models import User
|
|
from month.models import MonthField
|
|
|
|
from UGSdjangoProject import settings
|
|
|
|
|
|
class Address(models.Model):
|
|
# user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="new_spending", null=True)
|
|
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
|
|
first_name = models.CharField("Vorname", max_length=255, null=True)
|
|
surname = models.CharField("Nachname", max_length=255, null=True)
|
|
birthday: date = models.DateField("Geburtstag", null=True)
|
|
street = models.CharField("Straße", max_length=255, null=True)
|
|
number = models.CharField("Hausnummer", max_length=10, null=True)
|
|
postcode = models.CharField("Postleitzahl", max_length=5, null=True)
|
|
city = models.CharField("Stadt", max_length=100, null=True)
|
|
|
|
def __str__(self):
|
|
return f'{self.first_name} {self.surname} lives at {self.street} {self.number}, {self.postcode} {self.city}'
|
|
|
|
|
|
class Summary(models.Model):
|
|
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
|
|
text = models.TextField(max_length=2000)
|
|
|
|
def __str__(self):
|
|
return self.text
|
|
|
|
|
|
class Currency(models.Model):
|
|
title = models.CharField(max_length=3)
|
|
|
|
|
|
class NumberPresentation(models.Model):
|
|
title = models.CharField(max_length=20)
|
|
|
|
|
|
class EarningsPeriod(models.Model):
|
|
title = models.CharField(max_length=20)
|
|
|
|
|
|
class Company(models.Model):
|
|
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
|
|
title = models.CharField("Beschreibung", max_length=255, null=True)
|
|
website = models.URLField("Webseite", max_length=200, null=True)
|
|
startMonth = MonthField("Starttermin")
|
|
numberOfSalesAreas = models.IntegerField("Anzahl der Umsatzbereiche", null=True)
|
|
|
|
|
|
class SalesAreaType(models.Model):
|
|
title = models.CharField(max_length=255)
|
|
|
|
|
|
class SalesArea(models.Model):
|
|
company = models.ForeignKey(Company, on_delete=models.CASCADE,related_name='salesAreas')
|
|
number = models.IntegerField()
|
|
title = models.CharField(max_length=255)
|
|
type = models.ForeignKey(SalesAreaType, on_delete=models.RESTRICT)
|
|
used = models.BooleanField("Zur Gründungssimulation verwendet", default=True)
|
|
|
|
|
|
class PeriodTypes(models.Model):
|
|
title = models.CharField(max_length=30)
|
|
|
|
|
|
class PlanningPeriods(models.Model):
|
|
company = models.ForeignKey(Company, on_delete=models.CASCADE)
|
|
year = models.IntegerField()
|
|
periodType = models.ForeignKey(PeriodTypes, on_delete=models.RESTRICT)
|
|
|
|
|
|
class CompanyOptions(models.Model):
|
|
company = models.OneToOneField(Company, on_delete=models.CASCADE, primary_key=True, related_name='options')
|
|
currency = models.ForeignKey(Currency, on_delete=models.RESTRICT, default=1, related_name='currencys',
|
|
verbose_name="Währung")
|
|
numberPresentation = models.ForeignKey(NumberPresentation,
|
|
on_delete=models.RESTRICT,
|
|
default=1,
|
|
related_name='presentations',
|
|
verbose_name="Zahlenpräsentation")
|
|
earningsPeriod = models.ForeignKey(EarningsPeriod,
|
|
on_delete=models.RESTRICT,
|
|
default=1,
|
|
related_name='earningsPeriods',
|
|
verbose_name="Ergebnisperiode")
|
|
planingYears = models.IntegerField("Planungsjahre",default=3)
|
|
startPhaseDuration = models.IntegerField("Dauer der Anlaufphase in Monaten", default=0)
|
|
|
|
|
|
class SalesMarket(models.Model):
|
|
company = models.OneToOneField(Company, on_delete=models.CASCADE, primary_key=True, related_name='SalesMarket')
|
|
priceProhibitiv = models.IntegerField()
|
|
volumeProhibitiv = models.IntegerField()
|
|
priceQuantityDropped = models.IntegerField()
|
|
volumeQuantityDropped = models.IntegerField()
|
|
priceQuantityRaised = models.IntegerField()
|
|
volumeQuantityRaised = models.IntegerField()
|
|
priceDubious = models.IntegerField()
|
|
volumeDubious = models.IntegerField()
|
|
|
|
class SalesVolume(models.Model):
|
|
company = models.OneToOneField(Company, on_delete=models.CASCADE, primary_key=True, related_name='SalesVolumes')
|
|
month = models.IntegerField()
|
|
value = models.DecimalField(max_digits=10, decimal_places=2)
|
|
volume = models.DecimalField(max_digits=10, decimal_places=2)
|
|
|
|
|
|
class OperationalActionType(models.Model):
|
|
title = models.CharField(max_length=255)
|
|
|
|
|
|
class OperationalAction(models.Model):
|
|
company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='OperationalActions')
|
|
type = models.ForeignKey(OperationalActionType, on_delete=models.RESTRICT)
|
|
salesdependent = models.BooleanField(default=False)
|
|
month = models.IntegerField()
|
|
ammount = models.DecimalField(max_digits=10, decimal_places=2)
|
|
|
|
|
|
|
|
|
|
'''
|
|
Grundsätzloich werden die Daten für den Absatz in das Jahresfeld eingegeben
|
|
Bei eingabe in dieses Feld werden die Monatswerte überschrieben/gesetzt
|
|
|
|
Der Nutzer kann aber auch werte in die einzelnen Monate eintragen
|
|
Dies werden dann zum Jahr aufsummiert
|
|
|
|
Umsatz wir berechnet: Menge x Preis
|
|
|
|
|
|
|
|
|
|
'''
|
|
'''
|
|
class Revenue(models.Model):
|
|
unit = models.CharField(max_length=255)
|
|
value = models.DecimalField(max_digits=10, decimal_places=2)
|
|
year = models.IntegerField()
|
|
|
|
class revenueField(models.Model):
|
|
title = models.CharField(max_length=255)
|
|
# MWST Satz
|
|
# REvenue 1 : n
|
|
|
|
class SalesMarketing(models.Model):
|
|
# Revneue 1: 1 ?
|
|
|
|
|
|
class BeschaffungsItem(models.Model):
|
|
title = models.CharField(max_length=255)
|
|
price = models.DecimalField(max_digits=10, decimal_places=2)
|
|
quantityDependent = models.IntegerField() # True or False
|
|
quantity = models.IntegerField()
|
|
# Mehrfach für jedes RvenueField
|
|
|
|
class Invest(models.Model):
|
|
anschaffungsKosten=models.DecimalField(max_digits=10, decimal_places=2)
|
|
nutzungsDauer=models.IntegerField() # years
|
|
abschreibungsArt = models.CharField(max_length=255) # linear
|
|
# Nutzung pro Umsatzbereich in Prozent + nur zu Gesamtunternehmen zugehörig
|
|
|
|
'''
|
|
|
|
# Arbeitsmarkt
|
|
'''
|
|
Mitarbeiter nach kategorie
|
|
Anzahl
|
|
Brutto Kosten
|
|
Sozialkosten in Summe oder in Prozent
|
|
keine Kapazitärsplanung
|
|
'''
|
|
|
|
'''
|
|
Kapital
|
|
Einlagen und Entnahmen pro Jahr
|
|
|
|
Fremdkaptial
|
|
Einzahlung (Kreditsumme)
|
|
Tilgung
|
|
Zins
|
|
'''
|
|
|
|
'''
|
|
Staat
|
|
EtragsSteuern in Prozent vom Gewinn (ca. 30 %)
|
|
Subventionen
|
|
|
|
'''
|
|
|