diff --git a/schoolapps/fibu/admin.py b/schoolapps/fibu/admin.py index fc3ab8581a9502ffc2a06512bd242bec7d71ac5d..9f16fa184564f6a7a31fcaec3458e6e16b26c43c 100644 --- a/schoolapps/fibu/admin.py +++ b/schoolapps/fibu/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from .models import Costcenter, Account, Booking +from .models import CostCenter, Account, Booking -admin.site.register(Costcenter) +admin.site.register(CostCenter) admin.site.register(Account) admin.site.register(Booking) diff --git a/schoolapps/fibu/forms.py b/schoolapps/fibu/forms.py index 1ffcf66e2b17ee2a4d0cbb7701b08cd1e3c95ae1..9a4854092ee7068770b0275eee4f3b3ab6887471 100644 --- a/schoolapps/fibu/forms.py +++ b/schoolapps/fibu/forms.py @@ -1,11 +1,11 @@ from django import forms -from django.contrib.auth.models import User +from django.utils import timezone from material import Layout, Row, Fieldset -from .models import YEARS, Booking, Costcenter, Account, status_choices +from .models import Booking, CostCenter, Account -class BookingForm(forms.ModelForm): +class SimpleBookingForm(forms.ModelForm): description = forms.CharField(label='Beschreibung – Was soll angeschafft werden?') planned_amount = forms.IntegerField( label='Erwarteter Betrag – Welcher Betrag ist erforderlich?', help_text="in Euro, ohne Komma") @@ -19,34 +19,22 @@ class BookingForm(forms.ModelForm): class CheckBookingForm(forms.ModelForm): - account = forms.ModelChoiceField(Account.objects.filter().order_by('costcenter','name')) + account = forms.ModelChoiceField(Account.objects.filter().order_by('cost_center', 'name')) + class Meta: model = Booking - fields = ['account',] - - -class BookBookingForm(forms.ModelForm): - accounts = Account.objects.filter().order_by('costcenter', 'name') - user = User.objects.filter() - description = forms.CharField(label='Beschreibung') - planned_amount = forms.IntegerField(label='Erwarteter Betrag (ganze Euro)') - justification = forms.CharField(label='Begründung', required=False) - account = forms.ModelChoiceField(queryset=accounts, label='Buchungskonto') - contact = forms.ModelChoiceField(queryset=user, label='Kontakt') - invoice_date = forms.DateField(label='Rechnungsdatum') - invoice_number = forms.CharField(label='Rechnungsnummer') - firma = forms.CharField(label='Firma') - amount = forms.DecimalField(max_digits=9, decimal_places=2, label='Betrag') - submission_date = forms.DateField(label='Bearbeitungsdatum') - payout_number = forms.IntegerField(label='Auszahlungsnummer') - booking_date = forms.DateField(label='Buchungsdatum') - maturity = forms.DateField(label='Fälligkeit') - upload = forms.FileField(label='Scan der Rechnung', required=False) - status = forms.ChoiceField(choices=status_choices, label='Status') + fields = ['account', ] + + +class CompleteBookingForm(forms.ModelForm): + accounts = Account.objects.filter().order_by('cost_center', 'name') + account = forms.ModelChoiceField(queryset=accounts) + submission_date = forms.DateField(label='Bearbeitungsdatum', initial=timezone.now()) layout = Layout(Fieldset("Allgemeines", - Row('description', 'justification', 'contact'), - Row('account', 'status', 'planned_amount') + Row('description', 'justification'), + Row("contact", "planned_amount"), + Row('account', 'status') ), Fieldset('Details', Row('firma', 'invoice_number', 'amount'), @@ -63,18 +51,12 @@ class BookBookingForm(forms.ModelForm): class CostCenterForm(forms.ModelForm): - name = forms.CharField(max_length=30, label='Kostenstelle') - year = forms.ChoiceField(choices=YEARS, label='Jahr') - - layout = Layout(Row('name', 'year')) - class Meta: - model = Costcenter + model = CostCenter fields = ['id', 'name', 'year'] class AccountForm(forms.ModelForm): class Meta: model = Account - fields = ['id', 'name', 'costcenter', 'income', 'budget'] - + fields = ['id', 'name', 'cost_center', 'income', 'budget'] diff --git a/schoolapps/fibu/migrations/0001_initial.py b/schoolapps/fibu/migrations/0001_initial.py index a7b4bd27f9bbadc299c3eb4b241a9a7a546837b7..acff540c447b1c52a06949b1e1a9b78d20edded1 100644 --- a/schoolapps/fibu/migrations/0001_initial.py +++ b/schoolapps/fibu/migrations/0001_initial.py @@ -29,11 +29,12 @@ class Migration(migrations.Migration): }, ), migrations.CreateModel( - name='Costcenter', + name='CostCenter', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=30)), - ('year', models.IntegerField(choices=[(2020, '2020'), (2021, '2021'), (2022, '2022'), (2023, '2023')], default=2019, verbose_name='Jahr')), + ('year', models.IntegerField(choices=[(2020, '2020'), (2021, '2021'), (2022, '2022'), (2023, '2023')], + default=2019, verbose_name='Jahr')), ], options={ 'permissions': [('manage_costcenter', 'Can manage costcenter')], @@ -66,6 +67,6 @@ class Migration(migrations.Migration): migrations.AddField( model_name='account', name='costcenter', - field=models.ForeignKey(default='', on_delete=django.db.models.deletion.CASCADE, to='fibu.Costcenter'), + field=models.ForeignKey(default='', on_delete=django.db.models.deletion.CASCADE, to='fibu.CostCenter'), ), ] diff --git a/schoolapps/fibu/migrations/0002_auto_20191228_1357.py b/schoolapps/fibu/migrations/0002_auto_20191228_1357.py index 5150e026da01c053de864175fe6914e006ef4742..50c6c27ac779af2362fd1a5ca6372f0ea76f7694 100644 --- a/schoolapps/fibu/migrations/0002_auto_20191228_1357.py +++ b/schoolapps/fibu/migrations/0002_auto_20191228_1357.py @@ -36,7 +36,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='account', name='costcenter', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='fibu.Costcenter', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='fibu.CostCenter', verbose_name='Kostenstelle'), ), migrations.AlterField( diff --git a/schoolapps/fibu/models.py b/schoolapps/fibu/models.py index 43f1bf01c207c8d55b979bc797d4241a52b0d0b4..8611ca69c7738929db51b8cd97a02da7f8c5cb5e 100644 --- a/schoolapps/fibu/models.py +++ b/schoolapps/fibu/models.py @@ -28,7 +28,7 @@ status_list = [ status_choices = [(x, val.name) for x, val in enumerate(status_list)] -class Costcenter(models.Model): +class CostCenter(models.Model): # Kostenstellen z.B. Schulträger-konsumtiv, Schulträger-investiv, Elternverein, ... name = models.CharField(max_length=30, blank=False, verbose_name="Kostenstelle") year = models.IntegerField(default=timezone.now().year, choices=YEARS, blank=False, verbose_name="Jahr") @@ -47,7 +47,7 @@ class Costcenter(models.Model): class Account(models.Model): # Buchungskonten, z.B. Fachschaften, Sekretariat, Schulleiter, Kopieren, Tafelnutzung name = models.CharField(max_length=20, blank=False, verbose_name="Buchungskonto") - costcenter = models.ForeignKey(to=Costcenter, on_delete=models.CASCADE, blank=False, verbose_name="Kostenstelle") + cost_center = models.ForeignKey(to=CostCenter, on_delete=models.CASCADE, blank=False, verbose_name="Kostenstelle") income = models.BooleanField(default=False, verbose_name="Einnahmekonto") # True, wenn es sich um ein Einnahmekonto handelt budget = models.IntegerField(default=0, verbose_name="Budget") @@ -55,7 +55,7 @@ class Account(models.Model): rest = models.DecimalField(max_digits=9, decimal_places=2, default=0.00) def __str__(self): - return "{}: {}".format(self.costcenter, self.name) + return "{}: {}".format(self.cost_center, self.name) class Meta: verbose_name = "Buchungskonto" @@ -66,21 +66,30 @@ class Account(models.Model): class Booking(models.Model): - account = models.ForeignKey(to=Account, on_delete=models.SET_NULL, blank=True, null=True) + # General information + account = models.ForeignKey(to=Account, on_delete=models.SET_NULL, blank=True, null=True, + verbose_name="Buchungskonto") contact = models.ForeignKey(to=User, related_name='bookings', on_delete=models.SET_NULL , verbose_name="Erstellt von", blank=True, null=True) - invoice_date = models.DateField(default=date.today) - invoice_number = models.CharField(max_length=20, default='0') - firma = models.CharField(max_length=30, default='') - description = models.CharField(max_length=50) - amount = models.DecimalField(max_digits=9, decimal_places=2, default=0.00) - planned_amount = models.IntegerField() - submission_date = models.DateField(default=date.today) - justification = models.CharField(max_length=2000, blank=True, null=True) - payout_number = models.IntegerField(default=0) - booking_date = models.DateField(default=date.today) - maturity = models.DateField(default=date.today) - upload = models.FileField(upload_to='uploads/fibu/%Y/', default=None, blank=True, null=True) + description = models.CharField(max_length=50, verbose_name="Beschreibung") + justification = models.CharField(max_length=2000, blank=True, null=True, verbose_name="Begründung") + planned_amount = models.IntegerField(verbose_name="Erwarteter Betrag", help_text="ganze Euro") + + # Details + invoice_date = models.DateField(blank=True, null=True, verbose_name="Rechnungsdatum") + invoice_number = models.CharField(max_length=20, blank=True, null=True, verbose_name="Rechnungsnummer") + firma = models.CharField(max_length=30, blank=True, null=True, verbose_name="Firma") + amount = models.DecimalField(max_digits=9, decimal_places=2, default=0.00, verbose_name="Betrag") + payout_number = models.IntegerField(blank=True, null=True, verbose_name="Auszahlungsnummer") + + submission_date = models.DateField(blank=True, null=True, verbose_name="Bearbeitungsdatum") + booking_date = models.DateField(default=date.today, verbose_name="Buchungsdatum") + maturity = models.DateField(blank=True, null=True, verbose_name="Fälligkeit") + + upload = models.FileField(upload_to='uploads/fibu/%Y/', default=None, blank=True, null=True, + verbose_name="Scan der Rechnung") + + # Meta information status = models.IntegerField(default=0, choices=status_choices, verbose_name="Status") def get_status(self): diff --git a/schoolapps/fibu/templates/fibu/account/edit.html b/schoolapps/fibu/templates/fibu/account/edit.html index c977c32d404c283ecce1b4be8f6a96dcfc806e69..185d5f80fdc5ac53d3c5c824c21717a7f7578e6c 100644 --- a/schoolapps/fibu/templates/fibu/account/edit.html +++ b/schoolapps/fibu/templates/fibu/account/edit.html @@ -13,7 +13,7 @@ <button type="submit" class="waves-effect waves-light btn green"> <i class="material-icons left">save</i> Änderungen übernehmen </button> - <a href="{% url 'account' %}" class="waves-effect waves-light btn red"> + <a href="{% url 'fibu_accounts' %}" class="waves-effect waves-light btn red"> <i class="material-icons left">cancel</i> Abbrechen </a> </span> diff --git a/schoolapps/fibu/templates/fibu/account/index.html b/schoolapps/fibu/templates/fibu/account/index.html index 712f6546cb04f1d1506ed4e3e8f3e04dfc6a4c8f..b12b41f7025d30f4b8f2971cafc268f095351e7d 100755 --- a/schoolapps/fibu/templates/fibu/account/index.html +++ b/schoolapps/fibu/templates/fibu/account/index.html @@ -46,7 +46,7 @@ {% for account in accounts %} <tr> <td>{{ account.name }}</td> - <td>{{ account.costcenter }}</td> + <td>{{ account.cost_center }}</td> {% if account.income %} <td class="green-text right-align">{{ account.budget }} €</td> <td></td> @@ -55,7 +55,7 @@ <td class="red-text right-align">{{ account.budget }} €</td> {% endif %} <td class="right-align"> - <a href="{% url 'account_edit' account.id %}" + <a href="{% url 'fibu_accounts_edit' account.id %}" class="waves-effect waves-light btn-flat btn-flat-medium left" title="Bearbeiten"> <i class="material-icons center green-text">create</i> </a> diff --git a/schoolapps/fibu/templates/fibu/booking/book.html b/schoolapps/fibu/templates/fibu/booking/book.html index 898e3584a9961ee899d7b5945e50e9d6fe472462..0f44c48c719451b596ccf484d9ef90ba84a70b25 100644 --- a/schoolapps/fibu/templates/fibu/booking/book.html +++ b/schoolapps/fibu/templates/fibu/booking/book.html @@ -13,7 +13,7 @@ <button type="submit" class="waves-effect waves-light btn green"> <i class="material-icons left">save</i> Änderungen übernehmen </button> - <a href="{% url 'booking' %}" class="waves-effect waves-light btn red"> + <a href="{% url 'fibu_bookings' %}" class="waves-effect waves-light btn red"> <i class="material-icons left">cancel</i> Abbrechen </a> </span> diff --git a/schoolapps/fibu/templates/fibu/booking/index.html b/schoolapps/fibu/templates/fibu/booking/index.html index 7a843f8c3b9a66d694275ff4bce520995d1bab8f..3ad4fd6ebf9f6ae4ae26f842a3d5d285aa7e1381 100755 --- a/schoolapps/fibu/templates/fibu/booking/index.html +++ b/schoolapps/fibu/templates/fibu/booking/index.html @@ -4,12 +4,13 @@ <main> <div class="right"> {% if is_archive %} - <a href="{% url 'booking' %}" class="waves-effect waves-light btn grey">Zur aktuellen Übersicht</a> + <a href="{% url 'fibu_bookings' %}" class="waves-effect waves-light btn grey">Zur aktuellen Übersicht</a> {% else %} - <a href="{% url 'booking' "archive" %}" class="waves-effect waves-light btn grey">Zum Archiv</a> + <a href="{% url 'fibu_bookings_archive' "archive" %}" class="waves-effect waves-light btn grey">Zum Archiv + </a> {% endif %} - <a href="{% url 'new_booking' %}" class="waves-effect waves-light btn green">Neue Buchung anlegen</a> + <a href="{% url 'fibu_bookings_new' %}" class="waves-effect waves-light btn green">Neue Buchung anlegen</a> </div> <h4>{% if is_archive %}Buchungsarchiv{% else %}Aktuelle Buchungen{% endif %}</h4> @@ -29,7 +30,7 @@ {% for booking in bookings %} <tr> <td> - <a href="{% url "booking_book" booking.id %}">{{ booking.description }}</a> + <a href="{% url "fibu_bookings_edit" booking.id %}">{{ booking.description }}</a> </td> <td class="right-align">{{ booking.planned_amount }} €</td> <td class="right-align">{{ booking.amount }} €</td> @@ -42,10 +43,10 @@ </td> <td> <span class="left"> - <a class="waves-effect waves-light btn-flat btn-flat-medium green-text" title="Bearbeiten" - href="{% url "booking_book" booking.id %}"> - <i class="material-icons">edit</i> - </a> + <a class="waves-effect waves-light btn-flat btn-flat-medium green-text" title="Bearbeiten" + href="{% url "fibu_bookings_edit" booking.id %}"> + <i class="material-icons">edit</i> + </a> </span> {% if booking.status < 2 %} <form method="POST" class="left"> diff --git a/schoolapps/fibu/templates/fibu/booking/new.html b/schoolapps/fibu/templates/fibu/booking/new.html index ae676269c72a44ee544fdaa1972178ef3cdf2bd1..d79cdd2595c1950ee2ec505e0dd8923be165fbdb 100644 --- a/schoolapps/fibu/templates/fibu/booking/new.html +++ b/schoolapps/fibu/templates/fibu/booking/new.html @@ -2,7 +2,6 @@ {% load material_form %} <main> - <h4>Neue Buchung</h4> <form method="POST"> @@ -14,11 +13,11 @@ <button type="submit" class="waves-effect waves-light btn green"> <i class="material-icons left">save</i> Buchung anlegen </button> - <a href="{% url 'booking' %}" class="waves-effect waves-light btn red"> + <a href="{% url 'fibu_bookings' %}" class="waves-effect waves-light btn red"> <i class="material-icons left">cancel</i> Abbrechen </a> </span> </form> - </main> + {% include 'partials/footer.html' %} diff --git a/schoolapps/fibu/templates/fibu/index.html b/schoolapps/fibu/templates/fibu/index.html index 51d38be8e185381e8f4aaf21582808f92216a4f0..3eca9a5d3ba7980a266d30c79d0f0661f0141d15 100755 --- a/schoolapps/fibu/templates/fibu/index.html +++ b/schoolapps/fibu/templates/fibu/index.html @@ -67,7 +67,7 @@ {# Edit #} {% if booking.status == 0 %} - <form action="{% url 'booking_edit' booking.id %}" class="right"> + <form action="{% url 'fibu_bookings_user_edit' booking.id %}" class="right"> {% csrf_token %} <input type="hidden" value="{{ booking.id }}" name="booking-id"> <button type="submit" name="edit" diff --git a/schoolapps/fibu/templates/fibu/reports/expenses.html b/schoolapps/fibu/templates/fibu/reports/expenses.html index 74d5083aefba79c32e9879127b8850c65fca631f..c35fb8ec1d032c9ad8f1943005f1b0f02d1eda9b 100755 --- a/schoolapps/fibu/templates/fibu/reports/expenses.html +++ b/schoolapps/fibu/templates/fibu/reports/expenses.html @@ -2,39 +2,35 @@ {% load material_form %} <main> - - {% block content %} - <h4>Schlussrechnung</h4> <div class="collection"> - {% for costcenter, accounts in costcenter_accounts.items %} - <h5 class="collection-item">{{ costcenter }}</h5> + {% for cost_center, accounts in cost_center_accounts.items %} + <h5 class="collection-item">{{ cost_center }}</h5> - <div class="collection"> - <div class="row"> - <span class="col s5 m5 white-text grey">Buchungskonto</span> - <span class="col s2 m2 white-text grey right-align">Budget</span> - <span class="col s1 m1 white-text grey right-align">Einnahmen</span> - <span class="col s1 m1 white-text grey right-align">Ausgaben</span> - <span class="col s1 m1 white-text grey right-align">Reste</span> - </div> - {% for account in accounts %} - <div class="collection-item row"> - <span class="col s5 m5">{{ account.name }}</span> - <span class="col s2 m2 right-align">{{ account.budget }} €</span> - <span class="col s1 m1 right-align"> - {% if account.income %}{{ account.saldo }} €{% endif %} - </span> - <span class="col s1 m1 right-align"> - {% if not account.income %}{{ account.saldo }} €{% endif %} - </span> - <span class="col s1 m1 right-align">{{ account.rest }} €</span> + <div class="collection"> + <div class="row"> + <span class="col s5 m5 white-text grey">Buchungskonto</span> + <span class="col s2 m2 white-text grey right-align">Budget</span> + <span class="col s1 m1 white-text grey right-align">Einnahmen</span> + <span class="col s1 m1 white-text grey right-align">Ausgaben</span> + <span class="col s1 m1 white-text grey right-align">Reste</span> </div> - {% endfor %} - </div> + {% for account in accounts %} + <div class="collection-item row"> + <span class="col s5 m5">{{ account.name }}</span> + <span class="col s2 m2 right-align">{{ account.budget }} €</span> + <span class="col s1 m1 right-align"> + {% if account.income %}{{ account.saldo }} €{% endif %} + </span> + <span class="col s1 m1 right-align"> + {% if not account.income %}{{ account.saldo }} €{% endif %} + </span> + <span class="col s1 m1 right-align">{{ account.rest }} €</span> + </div> + {% endfor %} + </div> {% endfor %} </div> - {% endblock %} </main> {% include 'partials/footer.html' %} diff --git a/schoolapps/fibu/templates/fibu/reports/index.html b/schoolapps/fibu/templates/fibu/reports/index.html index 4b45b41eb79962d02ee16eb2733d2ffde85144b0..5399308743095cfc65dfe4b93de840618b9a16e4 100755 --- a/schoolapps/fibu/templates/fibu/reports/index.html +++ b/schoolapps/fibu/templates/fibu/reports/index.html @@ -2,15 +2,10 @@ {% load material_form %} <main> - - {% block content %} - <h4>Berichte</h4> - <div class="collection"> - <a href="reports/expenses" class="collection-item">Ausgaben</a> - </div> - - {% endblock %} + <div class="collection"> + <a href="{% url "fibu_reports_expenses" %}" class="collection-item">Ausgaben</a> + </div> </main> {% include 'partials/footer.html' %} diff --git a/schoolapps/fibu/urls.py b/schoolapps/fibu/urls.py index 733c7f7b46fb072ce459647bfd219a1f256cf620..42d8911ac49f9eca2867a53769ce15dc159d033b 100755 --- a/schoolapps/fibu/urls.py +++ b/schoolapps/fibu/urls.py @@ -4,18 +4,16 @@ from . import views urlpatterns = [ path('', views.index, name='fibu_index'), - path('bookings/check', views.check, name='booking_check'), - path('bookings/edit/<int:id>', views.edit, name='booking_edit'), - path('bookings/new', views.new_booking, name='new_booking'), - path('bookings/', views.booking, name='booking'), - path('bookings/<str:is_archive>', views.booking, name='booking'), - path('bookings/book/<int:id>', views.book, name='booking_book'), - path('costcenter', views.cost_centers, name='fibu_cost_centers'), - path('costcenter/edit/<int:id>', views.cost_center_edit, name='fibu_cost_centers_edit'), - path('account', views.account, name='account'), - path('account/edit/<int:id>', views.account_edit, name='account_edit'), - path('reports', views.reports, name='reports'), - path('reports/expenses', views.expenses, name='expenses'), - # path('make_booking', views.make_booking, name='fibu_make_booking'), - # path('edit/<int:id>', views.edit, name='booking_edit'), + path('<int:pk>/', views.user_edit, name='fibu_bookings_user_edit'), + path('bookings/check/', views.check, name='fibu_bookings_check'), + path('bookings/new/', views.new_booking, name='fibu_bookings_new'), + path('bookings/', views.booking, name='fibu_bookings'), + path('bookings/<str:is_archive>/', views.booking, name='fibu_bookings_archive'), + path('bookings/<int:pk>/edit/', views.book, name='fibu_bookings_edit'), + path('costcenters/', views.cost_centers, name='fibu_cost_centers'), + path('costcenters/edit/<int:pk>/', views.cost_center_edit, name='fibu_cost_centers_edit'), + path('accounts/', views.account, name='fibu_accounts'), + path('accounts/<int:pk>/', views.account_edit, name='fibu_accounts_edit'), + path('reports/', views.reports, name='fibu_reports'), + path('reports/expenses/', views.expenses, name='fibu_reports_expenses'), ] diff --git a/schoolapps/fibu/views.py b/schoolapps/fibu/views.py index 01047ee50c94a8f665483d5f620db52333881fe4..ea3c3afcc38ce7b70949c2d8e5fdfde15ae7b514 100644 --- a/schoolapps/fibu/views.py +++ b/schoolapps/fibu/views.py @@ -3,9 +3,9 @@ from django.contrib.auth.decorators import login_required, permission_required from django.db.models import Sum from django.urls import reverse from django.shortcuts import render, redirect, get_object_or_404 -from .models import Booking, Costcenter, Account +from .models import Booking, CostCenter, Account from .filters import BookingFilter -from .forms import BookingForm, CheckBookingForm, BookBookingForm, CostCenterForm, AccountForm +from .forms import SimpleBookingForm, CheckBookingForm, CompleteBookingForm, CostCenterForm, AccountForm @login_required @@ -29,11 +29,11 @@ def index(request): Booking.objects.filter(id=booking_id).update(status=4) return redirect('fibu_index') - form = BookingForm(instance=booking) + form = SimpleBookingForm(instance=booking) else: - form = BookingForm(request.POST) + form = SimpleBookingForm(request.POST) else: - form = BookingForm() + form = SimpleBookingForm() if form.is_valid(): description = form.cleaned_data['description'] @@ -55,12 +55,12 @@ def index(request): @login_required @permission_required('fibu.request_booking') -def edit(request, id): - booking = get_object_or_404(Booking, id=id) - form = BookingForm(instance=booking) +def user_edit(request, pk): + booking = get_object_or_404(Booking, pk=pk) + form = SimpleBookingForm(instance=booking) if request.method == 'POST': - form = BookingForm(request.POST, instance=booking) + form = SimpleBookingForm(request.POST, instance=booking) if form.is_valid(): form.save() @@ -109,16 +109,16 @@ def booking(request, is_archive=""): @login_required @permission_required('fibu.manage_booking') -def book(request, id): - booking = get_object_or_404(Booking, id=id) - form = BookBookingForm(instance=booking) +def book(request, pk): + booking = get_object_or_404(Booking, pk=pk) + form = CompleteBookingForm(instance=booking) template = 'fibu/booking/book.html' if request.method == 'POST': - form = BookBookingForm(request.POST, request.FILES, instance=booking) + form = CompleteBookingForm(request.POST, request.FILES, instance=booking) if form.is_valid(): form.save() messages.success(request, "Die Änderungen an der Buchung wurden erfolgreich übernommen.") - return redirect(reverse('booking')) + return redirect(reverse('fibu_bookings')) context = {'form': form} return render(request, template, context) @@ -126,15 +126,15 @@ def book(request, id): @login_required @permission_required('fibu.manage_booking') def new_booking(request): - form = BookBookingForm() + form = CompleteBookingForm() template = 'fibu/booking/new.html' if request.method == 'POST': - form = BookBookingForm(request.POST, request.FILES) + form = CompleteBookingForm(request.POST, request.FILES) if form.is_valid(): form.save() messages.success(request, "Die Buchung wurde erfolgreich angelegt.") - return redirect(reverse('booking')) + return redirect(reverse('fibu_bookings')) context = {'form': form} return render(request, template, context) @@ -147,7 +147,7 @@ def cost_centers(request): if request.method == 'POST': if 'id' in request.POST and 'cancel' in request.POST: cost_center_id = request.POST['id'] - cost_center = Costcenter.objects.get(id=cost_center_id) + cost_center = CostCenter.objects.get(id=cost_center_id) cost_center.delete() messages.success(request, "Die Kostenstelle wurde erfolgreich gelöscht.") @@ -161,7 +161,7 @@ def cost_centers(request): messages.success(request, "Die Kostenstelle wurde erfolgreich angelegt.") return redirect('fibu_cost_centers') - cost_centers = Costcenter.objects.filter() + cost_centers = CostCenter.objects.filter() context = {'cost_centers': cost_centers, 'form': form} return render(request, 'fibu/cost_center/index.html', context) @@ -169,8 +169,8 @@ def cost_centers(request): @login_required @permission_required('fibu.manage_costcenter') -def cost_center_edit(request, id): - cost_center = get_object_or_404(Costcenter, id=id) +def cost_center_edit(request, pk): + cost_center = get_object_or_404(CostCenter, pk=pk) form = CostCenterForm(instance=cost_center) if request.method == 'POST': @@ -209,15 +209,15 @@ def account(request): messages.success(request, "Das Buchungskonto wurde erfolgreich angelegt.") return redirect('account') - accounts = Account.objects.filter().order_by('costcenter','-income','name') + accounts = Account.objects.filter().order_by('cost_center', '-income', 'name') context = {'accounts': accounts, 'form': form} return render(request, 'fibu/account/index.html', context) @login_required @permission_required('fibu.manage_account') -def account_edit(request, id): - account = get_object_or_404(Account, id=id) +def account_edit(request, pk): + account = get_object_or_404(Account, pk=pk) form = AccountForm(instance=account) if request.method == 'POST': @@ -242,11 +242,11 @@ def reports(request): @login_required @permission_required('fibu.manage_booking') def expenses(request): - cost_centers = Costcenter.objects.filter() + cost_centers = CostCenter.objects.filter() cost_center_accounts = {} account_rests = {} for cost_center in cost_centers: - accounts = Account.objects.filter(costcenter=cost_center) + accounts = Account.objects.filter(cost_center=cost_center) # update saldo for account in accounts: saldo = Booking.objects.filter(account=account).aggregate(Sum('amount')) @@ -261,6 +261,6 @@ def expenses(request): Account.objects.filter(id=account.id).update(saldo=0, rest=account.budget) cost_center_accounts[cost_center.name] = list( - Account.objects.filter(costcenter=cost_center).order_by('-income')) - context = {'costcenter_accounts': cost_center_accounts, 'account_rests': account_rests} + Account.objects.filter(cost_center=cost_center).order_by('-income')) + context = {'cost_center_accounts': cost_center_accounts, 'account_rests': account_rests} return render(request, 'fibu/reports/expenses.html', context) diff --git a/schoolapps/templates/partials/header.html b/schoolapps/templates/partials/header.html index acb31c18ce813b0c503970460f20543a30903f62..a0c320fd86156d421695a267b7582ebd839b7063 100755 --- a/schoolapps/templates/partials/header.html +++ b/schoolapps/templates/partials/header.html @@ -186,7 +186,7 @@ </li> {% endif %} {% if perms.fibu.request_booking or perms.fibu.manage_booking or perms.fibu.manage_costcenter or perms.fibu.manage.account %} - <li class="bold url-fibu_index url-booking-check url-booking_book"> + <li class="bold url-fibu_index url-fibu_bookings_user_edit"> <a class="collapsible-header waves-effect waves-primary" href="{% url 'fibu_index' %}"><i class="material-icons">euro_symbol</i> Finanzen @@ -194,31 +194,31 @@ <div class="collapsible-body"> <ul> {% if perms.fibu.check_booking %} - <li class="url-booking_check"> - <a href="{% url 'booking_check' %}"><i class="material-icons">done_all</i>Anträge + <li class="url-fibu_bookings_check"> + <a href="{% url 'fibu_bookings_check' %}"><i class="material-icons">done_all</i>Anträge prüfen </a> </li> {% endif %} {% if perms.fibu.manage_booking %} - <li class="url-booking url-booking_book url-new_booking"> - <a href="{% url 'booking' 0 %}"><i class="material-icons">receipt</i>Buchungen + <li class="url-fibu_bookings url-fibu_bookings_edit url-fibu_bookings_new"> + <a href="{% url 'fibu_bookings' %}"><i class="material-icons">receipt</i>Buchungen </a> </li> {% endif %} {% if perms.fibu.manage_costcenter %} - <li class="url-fibu_cost_centers"> + <li class="url-fibu_cost_centers url-fibu_cost_centers_edit"> <a href="{% url 'fibu_cost_centers' %}"><i class="material-icons">done</i>Kostenstellen </a> </li> - <li class="url-account"> - <a href="{% url 'account' %}"><i class="material-icons">done</i>Buchungskonten + <li class="url-fibu_accounts url-fibu_accounts_edit"> + <a href="{% url 'fibu_accounts' %}"><i class="material-icons">done</i>Buchungskonten </a> </li> {% endif %} {% if perms.fibu.manage_booking %} - <li class="url-reports url-expenses"> - <a href="{% url 'reports' %}"><i class="material-icons">list</i>Berichte</a> + <li class="url-fibu_reports url-fibu_reports_expenses"> + <a href="{% url 'fibu_reports' %}"><i class="material-icons">list</i>Berichte</a> </li> {% endif %} </ul>