diff --git a/UGSdjangoProject/UGSdjangoProject/settings.py b/UGSdjangoProject/UGSdjangoProject/settings.py index cecc496..da917b4 100644 --- a/UGSdjangoProject/UGSdjangoProject/settings.py +++ b/UGSdjangoProject/UGSdjangoProject/settings.py @@ -36,6 +36,7 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', 'ugssim.apps.UgssimConfig', + 'django_extensions', ] MIDDLEWARE = [ diff --git a/UGSdjangoProject/static/main.js b/UGSdjangoProject/static/main.js index e6cb02a..ef2dc80 100644 --- a/UGSdjangoProject/static/main.js +++ b/UGSdjangoProject/static/main.js @@ -14,7 +14,7 @@ function convertToJsonDict(form) { return formData; } -const saveAddress = (htmlform) => { +const savePlanningparameter = (htmlform) => { let headers = { 'X-Requested-With': 'XMLHttpRequest', diff --git a/UGSdjangoProject/ugssim/fixtures/databaseinit.json b/UGSdjangoProject/ugssim/fixtures/databaseinit.json new file mode 100644 index 0000000..5b04127 --- /dev/null +++ b/UGSdjangoProject/ugssim/fixtures/databaseinit.json @@ -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" + } + } +] \ No newline at end of file diff --git a/UGSdjangoProject/ugssim/form.py b/UGSdjangoProject/ugssim/form.py index 4a0d20a..fd281df 100644 --- a/UGSdjangoProject/ugssim/form.py +++ b/UGSdjangoProject/ugssim/form.py @@ -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)'}) diff --git a/UGSdjangoProject/ugssim/migrations/0001_initial.py b/UGSdjangoProject/ugssim/migrations/0001_initial.py index 3c908df..19bd49d 100644 --- a/UGSdjangoProject/ugssim/migrations/0001_initial.py +++ b/UGSdjangoProject/ugssim/migrations/0001_initial.py @@ -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)), + ], + ), ] diff --git a/UGSdjangoProject/ugssim/migrations/0001_initial.py.org b/UGSdjangoProject/ugssim/migrations/0001_initial.py.org deleted file mode 100644 index 84d29ce..0000000 --- a/UGSdjangoProject/ugssim/migrations/0001_initial.py.org +++ /dev/null @@ -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()), - ], - ), - ] diff --git a/UGSdjangoProject/ugssim/migrations/0002_allgemeinesdata_remove_address_vorname_and_more.py b/UGSdjangoProject/ugssim/migrations/0002_allgemeinesdata_remove_address_vorname_and_more.py deleted file mode 100644 index 3b7a5cf..0000000 --- a/UGSdjangoProject/ugssim/migrations/0002_allgemeinesdata_remove_address_vorname_and_more.py +++ /dev/null @@ -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'), - ), - ] diff --git a/UGSdjangoProject/ugssim/migrations/0002_remove_address_id_alter_address_user.py b/UGSdjangoProject/ugssim/migrations/0002_remove_address_id_alter_address_user.py new file mode 100644 index 0000000..63ecbf1 --- /dev/null +++ b/UGSdjangoProject/ugssim/migrations/0002_remove_address_id_alter_address_user.py @@ -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), + ), + ] diff --git a/UGSdjangoProject/ugssim/migrations/0002_salesarea_salesareatype_summary_companydata_and_more.py.org b/UGSdjangoProject/ugssim/migrations/0002_salesarea_salesareatype_summary_companydata_and_more.py.org deleted file mode 100644 index a6cc1c0..0000000 --- a/UGSdjangoProject/ugssim/migrations/0002_salesarea_salesareatype_summary_companydata_and_more.py.org +++ /dev/null @@ -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'), - ), - ] diff --git a/UGSdjangoProject/ugssim/migrations/0003_alter_address_postleitzahl_alter_address_street.py.org b/UGSdjangoProject/ugssim/migrations/0003_alter_address_postleitzahl_alter_address_street.py.org deleted file mode 100644 index c386746..0000000 --- a/UGSdjangoProject/ugssim/migrations/0003_alter_address_postleitzahl_alter_address_street.py.org +++ /dev/null @@ -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), - ), - ] diff --git a/UGSdjangoProject/ugssim/migrations/0003_commondata_delete_allgemeinesdata_and_more.py b/UGSdjangoProject/ugssim/migrations/0003_commondata_delete_allgemeinesdata_and_more.py new file mode 100644 index 0000000..11aca64 --- /dev/null +++ b/UGSdjangoProject/ugssim/migrations/0003_commondata_delete_allgemeinesdata_and_more.py @@ -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), + ), + ] diff --git a/UGSdjangoProject/ugssim/migrations/0003_remove_address_geburtstag_remove_address_hausnummer_and_more.py b/UGSdjangoProject/ugssim/migrations/0003_remove_address_geburtstag_remove_address_hausnummer_and_more.py deleted file mode 100644 index 9282e1d..0000000 --- a/UGSdjangoProject/ugssim/migrations/0003_remove_address_geburtstag_remove_address_hausnummer_and_more.py +++ /dev/null @@ -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'), - ), - ] diff --git a/UGSdjangoProject/ugssim/migrations/0004_alter_commondata_currency_and_more.py b/UGSdjangoProject/ugssim/migrations/0004_alter_commondata_currency_and_more.py new file mode 100644 index 0000000..6d4a711 --- /dev/null +++ b/UGSdjangoProject/ugssim/migrations/0004_alter_commondata_currency_and_more.py @@ -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'), + ), + ] diff --git a/UGSdjangoProject/ugssim/migrations/0004_summary_user.py b/UGSdjangoProject/ugssim/migrations/0004_summary_user.py deleted file mode 100644 index 693cdcc..0000000 --- a/UGSdjangoProject/ugssim/migrations/0004_summary_user.py +++ /dev/null @@ -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, - ), - ] diff --git a/UGSdjangoProject/ugssim/migrations/0005_company_currency_earningsperiod_numberpresentation_and_more.py b/UGSdjangoProject/ugssim/migrations/0005_company_currency_earningsperiod_numberpresentation_and_more.py new file mode 100644 index 0000000..96513ab --- /dev/null +++ b/UGSdjangoProject/ugssim/migrations/0005_company_currency_earningsperiod_numberpresentation_and_more.py @@ -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, + ), + ] diff --git a/UGSdjangoProject/ugssim/models.py b/UGSdjangoProject/ugssim/models.py index 9320cab..5924852 100644 --- a/UGSdjangoProject/ugssim/models.py +++ b/UGSdjangoProject/ugssim/models.py @@ -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) + + ''' diff --git a/UGSdjangoProject/ugssim/templates/planungsparameter/planungsparameter.html b/UGSdjangoProject/ugssim/templates/planungsparameter/planungsparameter.html index 121517b..b3c259a 100644 --- a/UGSdjangoProject/ugssim/templates/planungsparameter/planungsparameter.html +++ b/UGSdjangoProject/ugssim/templates/planungsparameter/planungsparameter.html @@ -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 %}
- {% endfor %} + + + + {% endfor %} + {% endblock content %} diff --git a/UGSdjangoProject/ugssim/templates/ugssim/navigation.html b/UGSdjangoProject/ugssim/templates/ugssim/navigation.html index a3654ec..df2ee80 100644 --- a/UGSdjangoProject/ugssim/templates/ugssim/navigation.html +++ b/UGSdjangoProject/ugssim/templates/ugssim/navigation.html @@ -13,6 +13,16 @@