Modelclasses für Absatzmärkte und Umsatz und Maßnahmen angelegt

master
Ulf Wagner 1 year ago
parent 45396364bf
commit 9a086f6ed5
  1. 1
      UGSdjangoProject/UGSdjangoProject/settings.py
  2. 2
      UGSdjangoProject/static/main.js
  3. 51
      UGSdjangoProject/ugssim/fixtures/databaseinit.json
  4. 37
      UGSdjangoProject/ugssim/form.py
  5. 33
      UGSdjangoProject/ugssim/migrations/0001_initial.py
  6. 26
      UGSdjangoProject/ugssim/migrations/0001_initial.py.org
  7. 65
      UGSdjangoProject/ugssim/migrations/0002_allgemeinesdata_remove_address_vorname_and_more.py
  8. 25
      UGSdjangoProject/ugssim/migrations/0002_remove_address_id_alter_address_user.py
  9. 50
      UGSdjangoProject/ugssim/migrations/0002_salesarea_salesareatype_summary_companydata_and_more.py.org
  10. 23
      UGSdjangoProject/ugssim/migrations/0003_alter_address_postleitzahl_alter_address_street.py.org
  11. 49
      UGSdjangoProject/ugssim/migrations/0003_commondata_delete_allgemeinesdata_and_more.py
  12. 54
      UGSdjangoProject/ugssim/migrations/0003_remove_address_geburtstag_remove_address_hausnummer_and_more.py
  13. 43
      UGSdjangoProject/ugssim/migrations/0004_alter_commondata_currency_and_more.py
  14. 22
      UGSdjangoProject/ugssim/migrations/0004_summary_user.py
  15. 133
      UGSdjangoProject/ugssim/migrations/0005_company_currency_earningsperiod_numberpresentation_and_more.py
  16. 94
      UGSdjangoProject/ugssim/models.py
  17. 24
      UGSdjangoProject/ugssim/templates/planungsparameter/planungsparameter.html
  18. 10
      UGSdjangoProject/ugssim/templates/ugssim/navigation.html
  19. 36
      UGSdjangoProject/ugssim/views.py

@ -36,6 +36,7 @@ INSTALLED_APPS = [
'django.contrib.messages',
'django.contrib.staticfiles',
'ugssim.apps.UgssimConfig',
'django_extensions',
]
MIDDLEWARE = [

@ -14,7 +14,7 @@ function convertToJsonDict(form) {
return formData;
}
const saveAddress = (htmlform) => {
const savePlanningparameter = (htmlform) => {
let headers = {
'X-Requested-With': 'XMLHttpRequest',

@ -0,0 +1,51 @@
[
{
"model": "ugssim.PeriodTypes",
"pk": 1,
"fields" : {
"title": "Monatlich"
}
},
{
"model": "ugssim.PeriodTypes",
"pk": 2,
"fields" : {
"title": "Quartalsweise"
}
},
{
"model": "ugssim.PeriodTypes",
"pk": 3,
"fields" : {
"title": "Jahr"
}
},
{
"model": "ugssim.SalesAreaType",
"pk": 1,
"fields" : {
"title": "Produktion"
}
},
{
"model": "ugssim.SalesAreaType",
"pk": 2,
"fields" : {
"title": "Handel"
}
},
{
"model": "ugssim.SalesAreaType",
"pk": 3,
"fields" : {
"title": "Dienstleistung"
}
},
{
"model": "ugssim.SalesAreaType",
"pk": 4,
"fields" : {
"title": "Handwerk"
}
}
]

@ -7,7 +7,11 @@ from django import forms
class UGSModelForm(forms.ModelForm):
heading = "Neuer Abschnitt"
description = "To Fill"
def __init__(self, *args, **kwargs):
super(forms.ModelForm, self).__init__(*args, **kwargs)
# 'description should be the first field
# value = self.fields.pop('description')
@ -25,6 +29,9 @@ class UGSModelForm(forms.ModelForm):
class AddressForm(UGSModelForm):
heading = "Mandantendaten"
description = ""
class Meta:
model = Address
# die ID muss hier wieder rein, weil sonst die Zuordnung nicht klappt oder die user ID muss primaery key werden
@ -36,29 +43,30 @@ class AddressForm(UGSModelForm):
'type': 'date'
}
),
#'user': forms.HiddenInput()
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Fügt onchange zu allen Formularfeldern hinzu.
for field in self.fields:
self.fields[field].widget.attrs.update({'onchange': 'saveAddress(this.form)'})
# self.fields['user'].queryset = User.objects.none()
self.fields[field].widget.attrs.update({'onchange': 'savePlanningparameter(this.form)'})
class SummaryForm(UGSModelForm):
heading = "Zusammenfassung"
description = ""
class Meta:
model = Summary
fields = '__all__'
widgets = {
'text': forms.Textarea(attrs={'rows': 10})
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Fügt onchange zu allen Formularfeldern hinzu.
for field in self.fields:
self.fields[field].widget.attrs.update({'onchange': 'saveAddress(this.form)'})
self.fields[field].widget.attrs.update({'onchange': 'savePlanningparameter(this.form)'})
class SalesAreaTypeForm(UGSModelForm):
@ -73,7 +81,24 @@ class SalesAreaForm(UGSModelForm):
fields = '__all__'
class CompanyDataForm(UGSModelForm):
class CompanyForm(UGSModelForm):
heading = "Firmendaten"
description = ""
class Meta:
model = CompanyData
model = Company
fields = '__all__'
widgets = {
'startDate': forms.DateInput(
format='%Y-%m-%m',
attrs={
'type': 'date'
}
)
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Fügt onchange zu allen Formularfeldern hinzu.
for field in self.fields:
self.fields[field].widget.attrs.update({'onchange': 'savePlanningparameter(this.form)'})

@ -1,7 +1,8 @@
# Generated by Django 5.0.1 on 2024-03-14 13:26
# Generated by Django 4.1.2 on 2024-09-16 12:13
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
@ -9,19 +10,18 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Address',
name='AllgemeinesData',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('vorname', models.CharField(max_length=255)),
('nachname', models.CharField(max_length=255)),
('geburtstag', models.DateField()),
('street', models.CharField(max_length=10)),
('hausnummer', models.CharField(max_length=255)),
('postleitzahl', models.CharField(max_length=5)),
('currency', models.CharField(max_length=3)),
('years', models.IntegerField()),
('startPhase', models.IntegerField()),
('planingPeriods', models.IntegerField()),
],
),
migrations.CreateModel(
@ -45,6 +45,7 @@ class Migration(migrations.Migration):
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('text', models.TextField(max_length=2000)),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_summary', to=settings.AUTH_USER_MODEL)),
],
),
migrations.CreateModel(
@ -55,4 +56,18 @@ class Migration(migrations.Migration):
('type', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='ugssim.salesareatype')),
],
),
migrations.CreateModel(
name='Address',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('first_name', models.CharField(max_length=255, null=True, verbose_name='Vorname')),
('surname', models.CharField(max_length=255, null=True, verbose_name='Nachname')),
('birthday', models.DateField(null=True, verbose_name='Geburtstag')),
('street', models.CharField(max_length=255, null=True, verbose_name='Straße')),
('number', models.CharField(max_length=10, null=True, verbose_name='Hausnummer')),
('postcode', models.CharField(max_length=5, null=True, verbose_name='Postleitzahl')),
('city', models.CharField(max_length=100, null=True, verbose_name='Stadt')),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
]

@ -1,26 +0,0 @@
# Generated by Django 5.0.1 on 2024-03-06 10:00
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Address',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('vorname', models.CharField(max_length=255)),
('nachname', models.CharField(max_length=255)),
('geburtstag', models.DateField()),
('street', models.CharField(max_length=255)),
('hausnummer', models.CharField(max_length=255)),
('postleitzahl', models.PositiveIntegerField()),
],
),
]

@ -1,65 +0,0 @@
# Generated by Django 4.1.2 on 2024-09-10 07:02
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('ugssim', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='AllgemeinesData',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('currency', models.CharField(max_length=3)),
('years', models.IntegerField()),
('startPhase', models.IntegerField()),
('planingPeriods', models.IntegerField()),
],
),
migrations.RemoveField(
model_name='address',
name='vorname',
),
migrations.AddField(
model_name='address',
name='first_name',
field=models.CharField(max_length=255, null=True, verbose_name='Vorname'),
),
migrations.AddField(
model_name='address',
name='user',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='new_spending', to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='address',
name='geburtstag',
field=models.DateField(null=True),
),
migrations.AlterField(
model_name='address',
name='hausnummer',
field=models.CharField(max_length=10, null=True),
),
migrations.AlterField(
model_name='address',
name='nachname',
field=models.CharField(max_length=255, null=True),
),
migrations.AlterField(
model_name='address',
name='postleitzahl',
field=models.CharField(max_length=5, null=True),
),
migrations.AlterField(
model_name='address',
name='street',
field=models.CharField(max_length=255, null=True, verbose_name='Straße'),
),
]

@ -0,0 +1,25 @@
# Generated by Django 4.1.2 on 2024-09-16 12:20
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('ugssim', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='address',
name='id',
),
migrations.AlterField(
model_name='address',
name='user',
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL),
),
]

@ -1,50 +0,0 @@
# Generated by Django 5.0.1 on 2024-03-12 16:10
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ugssim', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='SalesArea',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255)),
],
),
migrations.CreateModel(
name='SalesAreaType',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255)),
],
),
migrations.CreateModel(
name='Summary',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('text', models.TextField(max_length=2000)),
],
),
migrations.CreateModel(
name='CompanyData',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255)),
('website', models.URLField()),
('startDate', models.DateField()),
('salesArea', models.ManyToManyField(related_name='+', to='ugssim.salesarea')),
],
),
migrations.AddField(
model_name='salesarea',
name='type',
field=models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='ugssim.salesareatype'),
),
]

@ -1,23 +0,0 @@
# Generated by Django 5.0.1 on 2024-03-13 10:04
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ugssim', '0002_salesarea_salesareatype_summary_companydata_and_more'),
]
operations = [
migrations.AlterField(
model_name='address',
name='postleitzahl',
field=models.CharField(max_length=5),
),
migrations.AlterField(
model_name='address',
name='street',
field=models.CharField(max_length=10),
),
]

@ -0,0 +1,49 @@
# Generated by Django 4.1.2 on 2024-09-17 09:17
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('ugssim', '0002_remove_address_id_alter_address_user'),
]
operations = [
migrations.CreateModel(
name='CommonData',
fields=[
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL)),
('currency', models.CharField(max_length=3)),
('years', models.IntegerField()),
('startPhase', models.IntegerField()),
('planingPeriods', models.IntegerField()),
],
),
migrations.DeleteModel(
name='AllgemeinesData',
),
migrations.RemoveField(
model_name='companydata',
name='id',
),
migrations.RemoveField(
model_name='summary',
name='id',
),
migrations.AddField(
model_name='companydata',
name='user',
field=models.OneToOneField(default=1, on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL),
preserve_default=False,
),
migrations.AlterField(
model_name='summary',
name='user',
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL),
),
]

@ -1,54 +0,0 @@
# Generated by Django 4.1.2 on 2024-09-10 10:22
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ugssim', '0002_allgemeinesdata_remove_address_vorname_and_more'),
]
operations = [
migrations.RemoveField(
model_name='address',
name='geburtstag',
),
migrations.RemoveField(
model_name='address',
name='hausnummer',
),
migrations.RemoveField(
model_name='address',
name='nachname',
),
migrations.RemoveField(
model_name='address',
name='postleitzahl',
),
migrations.AddField(
model_name='address',
name='birthday',
field=models.DateField(null=True, verbose_name='Geburtstag'),
),
migrations.AddField(
model_name='address',
name='city',
field=models.CharField(max_length=100, null=True, verbose_name='Stadt'),
),
migrations.AddField(
model_name='address',
name='number',
field=models.CharField(max_length=10, null=True, verbose_name='Hausnummer'),
),
migrations.AddField(
model_name='address',
name='postcode',
field=models.CharField(max_length=5, null=True, verbose_name='Postleitzahl'),
),
migrations.AddField(
model_name='address',
name='surname',
field=models.CharField(max_length=255, null=True, verbose_name='Nachname'),
),
]

@ -0,0 +1,43 @@
# Generated by Django 4.1.2 on 2024-09-17 09:28
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ugssim', '0003_commondata_delete_allgemeinesdata_and_more'),
]
operations = [
migrations.AlterField(
model_name='commondata',
name='currency',
field=models.CharField(max_length=3, null=True),
),
migrations.AlterField(
model_name='commondata',
name='startPhase',
field=models.IntegerField(null=True, verbose_name='Startphase in Monaten'),
),
migrations.AlterField(
model_name='commondata',
name='years',
field=models.IntegerField(null=True, verbose_name='Laufzeit in Jahren'),
),
migrations.AlterField(
model_name='companydata',
name='startDate',
field=models.DateField(null=True, verbose_name='Startdatum'),
),
migrations.AlterField(
model_name='companydata',
name='title',
field=models.CharField(max_length=255, null=True, verbose_name='Beschreibung'),
),
migrations.AlterField(
model_name='companydata',
name='website',
field=models.URLField(null=True, verbose_name='Webseite'),
),
]

@ -1,22 +0,0 @@
# Generated by Django 4.1.2 on 2024-09-12 14:48
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('ugssim', '0003_remove_address_geburtstag_remove_address_hausnummer_and_more'),
]
operations = [
migrations.AddField(
model_name='summary',
name='user',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='user_summary', to=settings.AUTH_USER_MODEL),
preserve_default=False,
),
]

@ -0,0 +1,133 @@
# Generated by Django 4.1.2 on 2024-09-17 14:16
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import month.models
class Migration(migrations.Migration):
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
('ugssim', '0004_alter_commondata_currency_and_more'),
]
operations = [
migrations.CreateModel(
name='Company',
fields=[
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL)),
('title', models.CharField(max_length=255, null=True, verbose_name='Beschreibung')),
('website', models.URLField(null=True, verbose_name='Webseite')),
('startMonth', month.models.MonthField(verbose_name='Starttermin')),
('numberOfSalesAreas', models.IntegerField(null=True, verbose_name='Anzahl der Umsatzbereiche')),
],
),
migrations.CreateModel(
name='Currency',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=3)),
],
),
migrations.CreateModel(
name='EarningsPeriod',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=20)),
],
),
migrations.CreateModel(
name='NumberPresentation',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=20)),
],
),
migrations.CreateModel(
name='OperationalAction',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('salesdependent', models.BooleanField(default=False)),
('month', models.IntegerField()),
('ammount', models.DecimalField(decimal_places=2, max_digits=10)),
('company', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='OperationalActions', to='ugssim.company')),
],
),
migrations.CreateModel(
name='OperationalActionType',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255)),
],
),
migrations.CreateModel(
name='PeriodTypes',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=30)),
],
),
migrations.CreateModel(
name='PlanningPeriods',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('year', models.IntegerField()),
('company', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ugssim.company')),
('periodType', models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='ugssim.periodtypes')),
],
),
migrations.RemoveField(
model_name='companydata',
name='user',
),
migrations.AddField(
model_name='salesarea',
name='number',
field=models.IntegerField(default=1),
preserve_default=False,
),
migrations.AddField(
model_name='salesarea',
name='used',
field=models.BooleanField(default=True, verbose_name='Zur Gründungssimulation verwendet'),
),
migrations.CreateModel(
name='CompanyOptions',
fields=[
('company', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, related_name='options', serialize=False, to='ugssim.company')),
('planingYears', models.IntegerField(default=3, verbose_name='Planungsjahre')),
('startPhaseDuration', models.IntegerField(default=0, verbose_name='Dauer der Anlaufphase in Monaten')),
('currency', models.ForeignKey(default=1, on_delete=django.db.models.deletion.RESTRICT, related_name='currencys', to='ugssim.currency', verbose_name='Währung')),
('earningsPeriod', models.ForeignKey(default=1, on_delete=django.db.models.deletion.RESTRICT, related_name='earningsPeriods', to='ugssim.earningsperiod', verbose_name='Ergebnisperiode')),
('numberPresentation', models.ForeignKey(default=1, on_delete=django.db.models.deletion.RESTRICT, related_name='presentations', to='ugssim.numberpresentation', verbose_name='Zahlenpräsentation')),
],
),
migrations.CreateModel(
name='SalesVolume',
fields=[
('company', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, related_name='SalesVolumes', serialize=False, to='ugssim.company')),
('month', models.IntegerField()),
('value', models.DecimalField(decimal_places=2, max_digits=10)),
('volume', models.DecimalField(decimal_places=2, max_digits=10)),
],
),
migrations.DeleteModel(
name='CommonData',
),
migrations.DeleteModel(
name='CompanyData',
),
migrations.AddField(
model_name='operationalaction',
name='type',
field=models.ForeignKey(on_delete=django.db.models.deletion.RESTRICT, to='ugssim.operationalactiontype'),
),
migrations.AddField(
model_name='salesarea',
name='company',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='salesAreas', to='ugssim.company'),
preserve_default=False,
),
]

@ -3,13 +3,14 @@ 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
# Create your models here.
class Address(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="new_spending", null=True)
# 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)
@ -23,34 +24,103 @@ class Address(models.Model):
class Summary(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="user_summary")
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 CompanyData(models.Model):
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)
website = models.URLField(max_length=200)
startDate = models.DateField()
#salesArea = models.ManyToManyField(SalesArea, related_name='+')
class AllgemeinesData(models.Model):
currency = models.CharField(max_length=3)
years = models.IntegerField()
startPhase = models.IntegerField()
planingPeriods = models.IntegerField()
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)
'''

@ -6,6 +6,7 @@
{% for key,value in formlist.items %}
{% define value|lookup:'form' as myform %}
{% define value|lookup:'modelname' as modelname %}
{% define value|lookup:'heading' as heading %}
{% define value|lookup:'description' as description %}
<form name="form{{ modelname }}" method="post" class="form-group" action="/planungsparameter/">
{% csrf_token %}
@ -14,10 +15,14 @@
<button class="accordion-button" type="button" data-bs-toggle="collapse"
data-bs-target="#collapse{{ modelname }}"
aria-expanded="true" aria-controls="collapse{{ modelname }}">
{{ value|lookup:'heading' }}
{{ heading }}
</button>
</h2>
<div id="collapse{{ modelname }}" class="accordion-collapse collapse show"
<div id="collapse{{ modelname }}" class="accordion-collapse collapse
{% if forloop.first %}
show
{% endif %}
"
data-bs-parent="#accordionPlanning">
<div class="accordion-body">
<p>{{ description }} </p>
@ -34,11 +39,8 @@
{% if field.html_name == "user" %}
<input type="hidden" name='user' value="{{user.id}}">
{% else %}
{% if field.html_name == "description" %}
{% else %}
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
{{field }}
{% endif %}
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
{{field }}
{% endif %}
</div>
{% endfor %}
@ -46,7 +48,9 @@
</div>
</div>
</div>
</form>
{% endfor %}
</form>
{% endfor %}
</div>
{% endblock content %}

@ -13,6 +13,16 @@
<li class="nav-item">
<a class="nav-link" href="/planungsparameter/">Planungsparameter</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
aria-expanded="false">
Märkte
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="/salesmarket/">Absatzmärkte</a></li>
<li><a class="dropdown-item" href="/revenue/">Umsatz</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
aria-expanded="false">

@ -37,11 +37,12 @@ def planungsparameter(request):
"""
formlist = {}
modellist = ['Address', 'Summary'] #, 'CompanyData']
modellist = ['Address', 'Summary', 'Company']
for modelname in modellist:
modelclass = get_class(modelname)
formclass = get_class(modelname + 'Form')
if request.method == "POST":
"""
if modelname + 'Button' in request.POST:
form = formclass(request.POST)
# form.fields.pop('description')
@ -50,17 +51,19 @@ def planungsparameter(request):
form = formclass(request.POST)
else:
form = formclass()
"""
form = formclass()
else:
try:
adressdict = modelclass.objects.filter(user=request.user).values().first()
form = formclass(initial=adressdict)
dict = modelclass.objects.filter(user=request.user).values().first()
form = formclass(initial=dict)
except Exception as e:
form = formclass()
formpart = {
'modelname': modelname,
'form': form,
'heading': 'Mandatendaten',
'description': 'Dict Description'
'heading': form.heading,
'description': form.description
}
formlist.update({modelname + "form": formpart})
@ -75,12 +78,15 @@ def save_planungsparameter(request):
"""
Save the form data for planungsparameter.
:param pk:
:param request: The HTTP request object.
:return: HttpResponse object.
"""
if request.method == "POST":
if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
# Load Body
body = json.loads(request.body.decode('utf-8'))
# Form Data
@ -90,7 +96,8 @@ def save_planungsparameter(request):
# Get Classes
formclass = get_class(modelName+'Form')
modelclass = get_class(modelName)
form = formclass(data)
form_instance=User.objects.get(id=request.user.id)
form = formclass(data,instance=form_instance)
# Check User ID
user_id = request.user.id
try:
@ -100,11 +107,18 @@ def save_planungsparameter(request):
if form_user_id != user_id:
return redirect('logout')
else:
# Update Database
if form.is_valid():
form.save()
modelclass.objects.udpate_or_create(**form.cleaned_data)
return HttpResponse("Form data saved successfully.")
if modelclass.objects.filter(pk=form_user_id).exists():
# Update Database
# form.initial['user'] = 1
if form.is_valid():
for key,value in form.cleaned_data.items():
# print(key, value)
modelclass.objects.filter(pk=form_user_id).update(**{key:value})
return HttpResponse("Form data updates successfully.")
else:
if form.is_valid():
modelclass.objects.create(**form.cleaned_data)
return HttpResponse("Form data saved successfully.")
return HttpResponse("Form data NOT saved.")

Loading…
Cancel
Save