PyCharm Entwicklungsumgebung
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

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