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