Newer
Older
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 django.utils.translation import ugettext_lazy as _
from .forms import SimpleBookingForm, CheckBookingForm, CompleteBookingForm, CostCenterForm, AccountForm
@permission_required('fibu.request_booking')
if request.method == 'POST':
if 'booking-id' in request.POST:
booking_id = request.POST['booking-id']
booking = get_object_or_404(Booking, pk=booking_id)
if 'cancel' in request.POST:
booking.delete()
print('Eintrag gelöscht')
return redirect('fibu_index')
Booking.objects.filter(id=booking_id).update(status=3)
return redirect('fibu_index')
elif 'submit-invoice' in request.POST:
Booking.objects.filter(id=booking_id).update(status=4)
return redirect('fibu_index')
if form.is_valid():
description = form.cleaned_data['description']
planned_amount = form.cleaned_data['planned_amount']
justification = form.cleaned_data['justification']
booking = Booking(description=description, planned_amount=planned_amount, contact=request.user,
justification=justification)
messages.success(request, _("The request was successfully submitted."))
return redirect('fibu_index')
bookings = Booking.objects.filter(contact=request.user).order_by('status')

Frank Poetzsch-Heffter
committed
context = {'bookings': bookings, 'form': form}
return render(request, 'fibu/index.html', context)
@permission_required('fibu.request_booking')
def user_edit(request, pk):
booking = get_object_or_404(Booking, pk=pk)
form = SimpleBookingForm(instance=booking)
if form.is_valid():
form.save()
messages.success(request, _("The changes were succesfully applied."))
return redirect(reverse('fibu_index'))
return render(request, 'fibu/booking/edit.html', context)
@permission_required('fibu.check_booking')
def check(request):
if request.method == 'POST':
if 'booking-id' in request.POST:
booking_id = request.POST['booking-id']
if 'allow' in request.POST:
if "account" in request.POST:
account = request.POST['account']
Booking.objects.filter(id=booking_id).update(status=2, account=account)
messages.success(request, _("The request was accepted."))
messages.error(request, _("Please select a booking account to create a reqest."))
Booking.objects.filter(id=booking_id).update(status=1)
messages.success(request, _("The request was rejected."))
booking_list = Booking.objects.filter(status=0).order_by('submission_date')
bookings = BookingFilter(request.GET, queryset=booking_list)
form = CheckBookingForm()
return render(request, 'fibu/booking/check.html', {'filter': bookings, 'form': form})
@permission_required('fibu.manage_booking')
def booking(request, is_archive=""):
is_archive = is_archive == "archive"
if is_archive:

Frank Poetzsch-Heffter
committed
bookings = Booking.objects.filter(status=5).order_by('-status')
else:
bookings = Booking.objects.filter(status__lt=5).order_by('-status')
context = {'bookings': bookings, 'is_archive': is_archive}
return render(request, 'fibu/booking/index.html', context)
@permission_required('fibu.manage_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 = CompleteBookingForm(request.POST, request.FILES, instance=booking)
if form.is_valid():
form.save()
messages.success(request, _("The changes were successfully applied."))
context = {'form': form}
return render(request, template, context)

Frank Poetzsch-Heffter
committed
@login_required
@permission_required('fibu.manage_booking')

Frank Poetzsch-Heffter
committed
def new_booking(request):

Frank Poetzsch-Heffter
committed
template = 'fibu/booking/new.html'
if request.method == 'POST':

Frank Poetzsch-Heffter
committed
if form.is_valid():
form.save()
messages.success(request, _("The booking was successfully created."))

Frank Poetzsch-Heffter
committed
context = {'form': form}
return render(request, template, context)
@permission_required('fibu.manage_costcenter')
def cost_centers(request):
form = CostCenterForm()
if 'id' in request.POST and 'cancel' in request.POST:
cost_center_id = request.POST['id']
messages.success(request, _("The cost center was successfully deleted."))
return redirect('fibu_cost_centers')
form = CostCenterForm(request.POST)
messages.success(request, _("The cost center was successfully created."))
return redirect('fibu_cost_centers')
context = {'cost_centers': cost_centers, 'form': form}
return render(request, 'fibu/cost_center/index.html', context)
@login_required
@permission_required('fibu.manage_costcenter')
def cost_center_edit(request, pk):
cost_center = get_object_or_404(CostCenter, pk=pk)
form = CostCenterForm(instance=cost_center)
if request.method == 'POST':
form = CostCenterForm(request.POST, instance=cost_center)
if form.is_valid():
form.save()
messages.success(request, _("The changes were successfully applied."))
return redirect(reverse('fibu_cost_centers'))
context = {'form': form}
return render(request, 'fibu/cost_center/edit.html', context)
@login_required
@permission_required('fibu.manage_account')
def account(request):
if request.method == 'POST':
if 'account-id' in request.POST and 'cancel' in request.POST:
account_id = request.POST['id']
account = Account.objects.get(id=account_id)
messages.success(request, _("The booking account was successfully deleted."))
else:
if form.is_valid():
messages.success(request, _("The booking account was successfully created."))
return redirect('fibu_accounts')
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, pk):
account = get_object_or_404(Account, pk=pk)
if request.method == 'POST':
form = AccountForm(request.POST, instance=account)
if form.is_valid():
form.save()
messages.success(request, _("The changes were successfully applied."))
return redirect(reverse('account'))
context = {'form': form}
return render(request, 'fibu/account/edit.html', context)
@login_required
@permission_required('fibu.manage_booking')

Frank Poetzsch-Heffter
committed
def reports(request):
return render(request, 'fibu/reports/index.html')

Frank Poetzsch-Heffter
committed
@login_required
@permission_required('fibu.manage_booking')

Frank Poetzsch-Heffter
committed
def expenses(request):
account_rests = {}
accounts = Account.objects.filter(cost_center=cost_center)
# update saldo
for account in accounts:
saldo = Booking.objects.filter(account=account).aggregate(Sum('amount'))
saldo = saldo['amount__sum']

Frank Poetzsch-Heffter
committed
try:
rest = account.budget - saldo
except:
try:
Account.objects.filter(id=account.id).update(saldo=saldo, rest=rest)
except:
Account.objects.filter(id=account.id).update(saldo=0, rest=account.budget)
Account.objects.filter(cost_center=cost_center).order_by('-income'))
context = {'cost_center_accounts': cost_center_accounts, 'account_rests': account_rests}

Frank Poetzsch-Heffter
committed
return render(request, 'fibu/reports/expenses.html', context)