diff --git a/fet2020/finance/admin.py b/fet2020/finance/admin.py index d60c794b..a59d9e2b 100644 --- a/fet2020/finance/admin.py +++ b/fet2020/finance/admin.py @@ -15,12 +15,11 @@ from .forms import ( BankDataAdminForm, BillAdminForm, BillInlineForm, - FeeAdminForm, ResolutionAdminForm, WirefAdminForm, ) -from .models import BankData, Bill, Fee, Resolution, Wiref -from .utils import generate_fee_pdf, generate_pdf +from .models import BankData, Bill, Resolution, Wiref +from .utils import generate_pdf logger = logging.getLogger(__name__) @@ -381,150 +380,150 @@ class BillAdmin(admin.ModelAdmin): ) -@admin.register(Fee) -class FeeAdmin(admin.ModelAdmin): - form = FeeAdminForm - model = Fee +# @admin.register(Fee) +# class FeeAdmin(admin.ModelAdmin): +# form = FeeAdminForm +# model = Fee - list_display = ["id", "amount", "job", "fix_name_desc", "status_colored"] +# list_display = ["id", "amount", "job", "fix_name_desc", "status_colored"] - list_filter = ["status"] - show_facets = admin.ShowFacets.ALWAYS - ordering = ["-id"] +# list_filter = ["status"] +# show_facets = admin.ShowFacets.ALWAYS +# ordering = ["-id"] - readonly_fields = [ - "address", - "get_qrcode", - ] - fieldsets = ( - ( - None, - { - "fields": ( - "fee_creator", - "bankdata", - "address", - "get_qrcode", - ), - }, - ), - ( - "Tätigkeit", - { - "fields": ( - "job", - "date_start", - "date_end", - "amount", - ), - }, - ), - ( - "Sonstiges", - { - "fields": ( - "comment", - "status", - "file_field", - ), - }, - ), - ) +# readonly_fields = [ +# "address", +# "get_qrcode", +# ] +# fieldsets = ( +# ( +# None, +# { +# "fields": ( +# "fee_creator", +# "bankdata", +# "address", +# "get_qrcode", +# ), +# }, +# ), +# ( +# "Tätigkeit", +# { +# "fields": ( +# "job", +# "date_start", +# "date_end", +# "amount", +# ), +# }, +# ), +# ( +# "Sonstiges", +# { +# "fields": ( +# "comment", +# "status", +# "file_field", +# ), +# }, +# ), +# ) - def add_view(self, request, form_url="", extra_context=None): - extra_context = extra_context or {} - extra_context["help_text"] = "Fette Schriften sind Pflichtfelder." - return super().add_view( - request, - form_url, - extra_context=extra_context, - ) +# def add_view(self, request, form_url="", extra_context=None): +# extra_context = extra_context or {} +# extra_context["help_text"] = "Fette Schriften sind Pflichtfelder." +# return super().add_view( +# request, +# form_url, +# extra_context=extra_context, +# ) - def change_view(self, request, object_id, form_url="", extra_context=None): - extra_context = extra_context or {} - extra_context["help_text"] = "Fette Schriften sind Pflichtfelder." - extra_context["generate_fee_pdf"] = True - return super().change_view( - request, - object_id, - form_url, - extra_context=extra_context, - ) +# def change_view(self, request, object_id, form_url="", extra_context=None): +# extra_context = extra_context or {} +# extra_context["help_text"] = "Fette Schriften sind Pflichtfelder." +# extra_context["generate_fee_pdf"] = True +# return super().change_view( +# request, +# object_id, +# form_url, +# extra_context=extra_context, +# ) - def response_change(self, request, obj): - if "_generate_fee_pdf" in request.POST: - if generate_fee_pdf(obj): - self.message_user( - request, - "Neue Honorarnote wurde generiert.", - messages.SUCCESS, - ) - else: - self.message_user( - request, - ( - "Das PDF-Dokument konnte nicht generiert werden, da der Status nicht auf " - "'Eingereicht' gesetzt ist." - ), - messages.WARNING, - ) - return HttpResponseRedirect(".") - return super().response_change(request, obj) +# def response_change(self, request, obj): +# if "_generate_fee_pdf" in request.POST: +# if generate_fee_pdf(obj): +# self.message_user( +# request, +# "Neue Honorarnote wurde generiert.", +# messages.SUCCESS, +# ) +# else: +# self.message_user( +# request, +# ( +# "Das PDF-Dokument konnte nicht generiert werden, da der Status nicht auf " +# "'Eingereicht' gesetzt ist." +# ), +# messages.WARNING, +# ) +# return HttpResponseRedirect(".") +# return super().response_change(request, obj) - def save_model(self, request, obj, form, change): - # set status to submitted, if a file exists and status is opened. - if ( - change - and obj.file_field - and obj.status == Fee.Status.SUBMITTED - and "_generate_fee_pdf" not in request.POST - ): - obj.status = Fee.Status.APPROVED - super().save_model(request, obj, form, change) +# def save_model(self, request, obj, form, change): +# # set status to submitted, if a file exists and status is opened. +# if ( +# change +# and obj.file_field +# and obj.status == Fee.Status.SUBMITTED +# and "_generate_fee_pdf" not in request.POST +# ): +# obj.status = Fee.Status.APPROVED +# super().save_model(request, obj, form, change) - @admin.display(description="Adresse") - def address(self, obj): - return obj.bankdata.address +# @admin.display(description="Adresse") +# def address(self, obj): +# return obj.bankdata.address - @admin.display(description="QR Code") - def get_qrcode(self, obj): - # QR Code is only set if status is approved. - if obj.status != Fee.Status.APPROVED: - return "-" +# @admin.display(description="QR Code") +# def get_qrcode(self, obj): +# # QR Code is only set if status is approved. +# if obj.status != Fee.Status.APPROVED: +# return "-" - try: - qrcode = helpers.make_epc_qr( - name=obj.bankdata.name, - iban=obj.bankdata.iban, - amount=obj.amount, - text=f"Honorarnote Nr.{obj.id}", - bic=obj.bankdata.bic, - encoding="utf-8", - ) - except Exception: - return "Daten für QR Code ungültig" +# try: +# qrcode = helpers.make_epc_qr( +# name=obj.bankdata.name, +# iban=obj.bankdata.iban, +# amount=obj.amount, +# text=f"Honorarnote Nr.{obj.id}", +# bic=obj.bankdata.bic, +# encoding="utf-8", +# ) +# except Exception: +# return "Daten für QR Code ungültig" - uri = qrcode.png_data_uri(scale=3.0) - return format_html('', uri) +# uri = qrcode.png_data_uri(scale=3.0) +# return format_html('', uri) - @admin.display(description="Name") - def fix_name_desc(self, obj): - return obj.bankdata.name +# @admin.display(description="Name") +# def fix_name_desc(self, obj): +# return obj.bankdata.name - @admin.display(description="Status") - def status_colored(self, obj): - # TODO: if there is a status without color, set nothing. - colors = { - Fee.Status.SUBMITTED: "red", - Fee.Status.APPROVED: "darkorange", - Fee.Status.PAYOUT: "green", - Fee.Status.CLEARED: "DarkMagenta", - } - return format_html( - '{status}', - color=colors[obj.status], - status=obj.get_status_display(), - ) +# @admin.display(description="Status") +# def status_colored(self, obj): +# # TODO: if there is a status without color, set nothing. +# colors = { +# Fee.Status.SUBMITTED: "red", +# Fee.Status.APPROVED: "darkorange", +# Fee.Status.PAYOUT: "green", +# Fee.Status.CLEARED: "DarkMagenta", +# } +# return format_html( +# '{status}', +# color=colors[obj.status], +# status=obj.get_status_display(), +# ) @admin.register(Resolution) diff --git a/fet2020/finance/forms.py b/fet2020/finance/forms.py index 7a5e671b..3761c2a8 100644 --- a/fet2020/finance/forms.py +++ b/fet2020/finance/forms.py @@ -9,7 +9,7 @@ from django.forms import DateInput from members.models import Member -from .models import BankData, Bill, Fee, Resolution, Wiref +from .models import BankData, Bill, Resolution, Wiref class DateInput(DateInput): @@ -283,169 +283,169 @@ class BillUpdateForm(forms.ModelForm): return get_cleaned_data(super().clean()) -class FeeCreateForm(forms.ModelForm): - # Bank data - name_text = forms.CharField(required=True, label="Kontoinhaber:in", initial="", max_length=128) - iban_text = forms.CharField(required=True, label="IBAN", initial="", max_length=34) - bic_text = forms.CharField(required=True, label="BIC", initial="", max_length=11) - address_text = forms.CharField( - required=True, widget=forms.Textarea, label="Adresse", initial="" - ) - saving = forms.BooleanField( - required=False, - label="Bankdaten für die nächsten Rechnungen speichern.", - initial=False, - ) +# class FeeCreateForm(forms.ModelForm): +# # Bank data +# name_text = forms.CharField(required=True, label="Kontoinhaber:in", initial="", max_length=128) +# iban_text = forms.CharField(required=True, label="IBAN", initial="", max_length=34) +# bic_text = forms.CharField(required=True, label="BIC", initial="", max_length=11) +# address_text = forms.CharField( +# required=True, widget=forms.Textarea, label="Adresse", initial="" +# ) +# saving = forms.BooleanField( +# required=False, +# label="Bankdaten für die nächsten Rechnungen speichern.", +# initial=False, +# ) - # Conformation - conformation = forms.BooleanField( - required=True, - label=( - "Hiermit bestätige ich, dass mir die relevanten rechtlichen und steuerlichen " - "Bestimmungen im Zusammenhang mit Honorarnoten bekannt sind. Ich verpflichte " - "mich, diese in Übereinstimmung mit den geltenden steuerlichen Vorschriften " - "ordnungsgemäß zu melden." - ), - initial=False, - ) +# # Conformation +# conformation = forms.BooleanField( +# required=True, +# label=( +# "Hiermit bestätige ich, dass mir die relevanten rechtlichen und steuerlichen " +# "Bestimmungen im Zusammenhang mit Honorarnoten bekannt sind. Ich verpflichte " +# "mich, diese in Übereinstimmung mit den geltenden steuerlichen Vorschriften " +# "ordnungsgemäß zu melden." +# ), +# initial=False, +# ) - class Meta: - model = Fee +# class Meta: +# model = Fee - fields = [ - "fee_creator", - "job", - "date_start", - "date_end", - "amount", - "comment", - ] +# fields = [ +# "fee_creator", +# "job", +# "date_start", +# "date_end", +# "amount", +# "comment", +# ] - help_texts = { - "date_end": "Bei einer leeren Eingabe Eingabe wird automatisch das Startdatum gesetzt." - } +# help_texts = { +# "date_end": "Bei einer leeren Eingabe Eingabe wird automatisch das Startdatum gesetzt." +# } - labels = { - "job": "Tätigkeitsbeschreibung", - } +# labels = { +# "job": "Tätigkeitsbeschreibung", +# } - widgets = { - "date_start": DateInput(format=("%Y-%m-%d")), - "date_end": DateInput(format=("%Y-%m-%d")), - } +# widgets = { +# "date_start": DateInput(format=("%Y-%m-%d")), +# "date_end": DateInput(format=("%Y-%m-%d")), +# } - def __init__(self, *args, **kwargs): - user = kwargs.pop("user") if "user" in kwargs else None +# def __init__(self, *args, **kwargs): +# user = kwargs.pop("user") if "user" in kwargs else None - super().__init__(*args, **kwargs) # to get the self.fields set +# super().__init__(*args, **kwargs) # to get the self.fields set - member = Member.objects.get(username=user.username) - self.fields["fee_creator"].initial = member - self.fields["fee_creator"].disabled = True - self.fields["fee_creator"].required = True +# member = Member.objects.get(username=user.username) +# self.fields["fee_creator"].initial = member +# self.fields["fee_creator"].disabled = True +# self.fields["fee_creator"].required = True - self.fields["date_end"].required = False +# self.fields["date_end"].required = False - self.fields["address_text"].placeholder = "Straße\nPLZ und Ort" +# self.fields["address_text"].placeholder = "Straße\nPLZ und Ort" - # Bank data fields - bank_data = BankData.objects.filter( - Q(bankdata_creator=member) & Q(is_disabled=False), - ).first() - if bank_data: - self.fields["name_text"].initial = bank_data.name - self.fields["iban_text"].initial = bank_data.iban - self.fields["bic_text"].initial = bank_data.bic - self.fields["address_text"].initial = bank_data.address - self.fields["saving"].initial = True +# # Bank data fields +# bank_data = BankData.objects.filter( +# Q(bankdata_creator=member) & Q(is_disabled=False), +# ).first() +# if bank_data: +# self.fields["name_text"].initial = bank_data.name +# self.fields["iban_text"].initial = bank_data.iban +# self.fields["bic_text"].initial = bank_data.bic +# self.fields["address_text"].initial = bank_data.address +# self.fields["saving"].initial = True -class FeeUpdateForm(forms.ModelForm): - # Bank data - name_text = forms.CharField(required=False, label="Kontoinhaber:in", initial="", max_length=128) - iban_text = forms.CharField(required=False, label="IBAN", initial="", max_length=34) - bic_text = forms.CharField(required=False, label="BIC", initial="", max_length=11) - address_text = forms.CharField( - required=False, widget=forms.Textarea, label="Adresse", initial="" - ) - saving = forms.BooleanField( - required=False, - label="Bankdaten für die nächsten Rechnungen speichern.", - initial=False, - ) +# class FeeUpdateForm(forms.ModelForm): +# # Bank data +# name_text = forms.CharField(required=False, label="Kontoinhaber:in", initial="", max_length=128) +# iban_text = forms.CharField(required=False, label="IBAN", initial="", max_length=34) +# bic_text = forms.CharField(required=False, label="BIC", initial="", max_length=11) +# address_text = forms.CharField( +# required=False, widget=forms.Textarea, label="Adresse", initial="" +# ) +# saving = forms.BooleanField( +# required=False, +# label="Bankdaten für die nächsten Rechnungen speichern.", +# initial=False, +# ) - class Meta: - model = Fee +# class Meta: +# model = Fee - fields = [ - "fee_creator", - "job", - "date_start", - "date_end", - "amount", - "status", - "comment", - ] +# fields = [ +# "fee_creator", +# "job", +# "date_start", +# "date_end", +# "amount", +# "status", +# "comment", +# ] - labels = { - "job": "Tätigkeitsbeschreibung", - } +# labels = { +# "job": "Tätigkeitsbeschreibung", +# } - widgets = { - "date_start": DateInput(format=("%Y-%m-%d")), - "date_end": DateInput(format=("%Y-%m-%d")), - } +# widgets = { +# "date_start": DateInput(format=("%Y-%m-%d")), +# "date_end": DateInput(format=("%Y-%m-%d")), +# } - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) # to get the self.fields set +# def __init__(self, *args, **kwargs): +# super().__init__(*args, **kwargs) # to get the self.fields set - self.fields["fee_creator"].initial = kwargs["instance"].fee_creator - self.fields["fee_creator"].disabled = True - self.fields["fee_creator"].required = True +# self.fields["fee_creator"].initial = kwargs["instance"].fee_creator +# self.fields["fee_creator"].disabled = True +# self.fields["fee_creator"].required = True - self.fields["status"].disabled = True +# self.fields["status"].disabled = True - # Config for textarea of job. Calc rows for a better view. - if (rows := kwargs["instance"].job.count("\n") + 1) < 3: - rows = 3 - self.fields["job"].rows = rows - self.fields["job"].disabled = True +# # Config for textarea of job. Calc rows for a better view. +# if (rows := kwargs["instance"].job.count("\n") + 1) < 3: +# rows = 3 +# self.fields["job"].rows = rows +# self.fields["job"].disabled = True - self.fields["date_start"].disabled = True - self.fields["date_end"].disabled = True - self.fields["amount"].disabled = True +# self.fields["date_start"].disabled = True +# self.fields["date_end"].disabled = True +# self.fields["amount"].disabled = True - # Bank data fields - if kwargs["instance"].bankdata: - self.fields["name_text"].initial = kwargs["instance"].bankdata.name - self.fields["name_text"].required = True +# # Bank data fields +# if kwargs["instance"].bankdata: +# self.fields["name_text"].initial = kwargs["instance"].bankdata.name +# self.fields["name_text"].required = True - self.fields["iban_text"].initial = kwargs["instance"].bankdata.iban - self.fields["iban_text"].required = True +# self.fields["iban_text"].initial = kwargs["instance"].bankdata.iban +# self.fields["iban_text"].required = True - self.fields["bic_text"].initial = kwargs["instance"].bankdata.bic - self.fields["bic_text"].required = True +# self.fields["bic_text"].initial = kwargs["instance"].bankdata.bic +# self.fields["bic_text"].required = True - self.fields["address_text"].initial = kwargs["instance"].bankdata.address +# self.fields["address_text"].initial = kwargs["instance"].bankdata.address - self.fields["saving"].initial = not kwargs["instance"].bankdata.is_disabled +# self.fields["saving"].initial = not kwargs["instance"].bankdata.is_disabled - self.fields["name_text"].disabled = True - self.fields["iban_text"].disabled = True - self.fields["bic_text"].disabled = True - self.fields["address_text"].disabled = True +# self.fields["name_text"].disabled = True +# self.fields["iban_text"].disabled = True +# self.fields["bic_text"].disabled = True +# self.fields["address_text"].disabled = True - self.fields["saving"].disabled = True +# self.fields["saving"].disabled = True - # Config for textarea of comment. Calc rows for a better view. - rows = kwargs["instance"].comment.count("\n") + 1 - self.fields["comment"].rows = rows +# # Config for textarea of comment. Calc rows for a better view. +# rows = kwargs["instance"].comment.count("\n") + 1 +# self.fields["comment"].rows = rows - # Comment disabled when bill is cleared or finished - if kwargs["instance"].status != Bill.Status.SUBMITTED: - self.fields["comment"].disabled = True +# # Comment disabled when bill is cleared or finished +# if kwargs["instance"].status != Bill.Status.SUBMITTED: +# self.fields["comment"].disabled = True - self.fields["comment"].autofocus = True +# self.fields["comment"].autofocus = True class ResolutionCreateForm(forms.ModelForm): @@ -603,26 +603,26 @@ class BillAdminForm(forms.ModelForm): self.fields["wiref"].queryset = qs.order_by("-wiref_id") -class FeeAdminForm(forms.ModelForm): - class Meta: - model = Fee +# class FeeAdminForm(forms.ModelForm): +# class Meta: +# model = Fee - fields = "__all__" +# fields = "__all__" - help_texts = { - "date_end": "Bei einer leeren Eingabe Eingabe wird automatisch das Startdatum gesetzt." - } +# help_texts = { +# "date_end": "Bei einer leeren Eingabe Eingabe wird automatisch das Startdatum gesetzt." +# } - widgets = { - "date": DateInput(format=("%Y-%m-%d")), - } +# widgets = { +# "date": DateInput(format=("%Y-%m-%d")), +# } - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) +# def __init__(self, *args, **kwargs): +# super().__init__(*args, **kwargs) - self.fields["bankdata"].required = True +# self.fields["bankdata"].required = True - self.fields["date_end"].required = False +# self.fields["date_end"].required = False class ResolutionAdminForm(forms.ModelForm): diff --git a/fet2020/finance/models.py b/fet2020/finance/models.py index 0651d4c5..56e9daf3 100644 --- a/fet2020/finance/models.py +++ b/fet2020/finance/models.py @@ -1,5 +1,3 @@ -from pathlib import Path - from django.core.validators import FileExtensionValidator, ValidationError from django.db import models from django.urls import reverse @@ -40,69 +38,69 @@ class BankData(models.Model): self.bic = self.bic.replace(" ", "") -class Fee(models.Model): - fee_creator = models.ForeignKey( - Member, - on_delete=models.PROTECT, - blank=True, - null=True, - verbose_name="Verantwortliche:r", - ) +# class Fee(models.Model): +# fee_creator = models.ForeignKey( +# Member, +# on_delete=models.PROTECT, +# blank=True, +# null=True, +# verbose_name="Verantwortliche:r", +# ) - bankdata = models.ForeignKey( - BankData, - on_delete=models.SET_NULL, - blank=True, - null=True, - verbose_name="Bankdaten", - ) +# bankdata = models.ForeignKey( +# BankData, +# on_delete=models.SET_NULL, +# blank=True, +# null=True, +# verbose_name="Bankdaten", +# ) - job = models.TextField(verbose_name="Tätigkeit") - date_start = models.DateField(verbose_name="Start der Tätigkeit") - date_end = models.DateField(verbose_name="Ende der Tätigkeit") - amount = models.DecimalField(max_digits=7, decimal_places=2, verbose_name="Betrag (EUR)") +# job = models.TextField(verbose_name="Tätigkeit") +# date_start = models.DateField(verbose_name="Start der Tätigkeit") +# date_end = models.DateField(verbose_name="Ende der Tätigkeit") +# amount = models.DecimalField(max_digits=7, decimal_places=2, verbose_name="Betrag (EUR)") - class Status(models.TextChoices): - SUBMITTED = "S", "Eingereicht" - APPROVED = "A", "Für Überweisung freigegeben" - PAYOUT = "P", "Ausbezahlt" - CLEARED = "C", "An Dekanat verrechnet" +# class Status(models.TextChoices): +# SUBMITTED = "S", "Eingereicht" +# APPROVED = "A", "Für Überweisung freigegeben" +# PAYOUT = "P", "Ausbezahlt" +# CLEARED = "C", "An Dekanat verrechnet" - status = models.CharField( - max_length=1, - choices=Status.choices, - default=Status.SUBMITTED, - verbose_name="Status", - ) +# status = models.CharField( +# max_length=1, +# choices=Status.choices, +# default=Status.SUBMITTED, +# verbose_name="Status", +# ) - date_created = models.DateTimeField(auto_now_add=True) +# date_created = models.DateTimeField(auto_now_add=True) - file_field = models.FileField( - upload_to="uploads/finance/fee/", - validators=[FileExtensionValidator(["pdf"])], - blank=True, - null=True, - verbose_name="Honorarnote", - ) +# file_field = models.FileField( +# upload_to="uploads/finance/fee/", +# validators=[FileExtensionValidator(["pdf"])], +# blank=True, +# null=True, +# verbose_name="Honorarnote", +# ) - comment = models.TextField(blank=True, default="", verbose_name="Kommentar") +# comment = models.TextField(blank=True, default="", verbose_name="Kommentar") - class Meta: - verbose_name = "Honorar" - verbose_name_plural = "Honorare" +# class Meta: +# verbose_name = "Honorar" +# verbose_name_plural = "Honorare" - def __str__(self): - return f"Honorar #{self.id} / {self.job}" +# def __str__(self): +# return f"Honorar #{self.id} / {self.job}" - def save(self, *args, **kwargs): - if not self.date_end: - self.date_end = self.date_start +# def save(self, *args, **kwargs): +# if not self.date_end: +# self.date_end = self.date_start - super().save(*args, **kwargs) +# super().save(*args, **kwargs) - @property - def filename(self): - return Path(self.file_field.name).name +# @property +# def filename(self): +# return Path(self.file_field.name).name class Resolution(models.Model): diff --git a/fet2020/finance/urls.py b/fet2020/finance/urls.py index 637e3204..21ecd0d9 100644 --- a/fet2020/finance/urls.py +++ b/fet2020/finance/urls.py @@ -6,9 +6,6 @@ from .views import ( BillCreateView, BillListView, BillUpdateView, - FeeCreateDoneView, - FeeCreateView, - FeeUpdateView, ResolutionCreateView, ResolutionDetailView, ResolutionListView, @@ -27,14 +24,14 @@ urlpatterns = [ BillCreateDoneView.as_view(), name="bill_create_done", ), - # Fee views - path("create-fee/", FeeCreateView.as_view(), name="fee_create"), - path( - "create-fee//done/", - FeeCreateDoneView.as_view(), - name="fee_create_done", - ), - path("fee//", FeeUpdateView.as_view(), name="fee_update"), + # # Fee views + # path("create-fee/", FeeCreateView.as_view(), name="fee_create"), + # path( + # "create-fee//done/", + # FeeCreateDoneView.as_view(), + # name="fee_create_done", + # ), + # path("fee//", FeeUpdateView.as_view(), name="fee_update"), # Resolution views path("create-resolution/", ResolutionCreateView.as_view(), name="resolution_create"), path("resolutions/", ResolutionListView.as_view(), name="resolution_list"), diff --git a/fet2020/finance/utils.py b/fet2020/finance/utils.py index 6211348a..832198cf 100644 --- a/fet2020/finance/utils.py +++ b/fet2020/finance/utils.py @@ -6,7 +6,7 @@ from django.core.files import File from pypdf import PdfReader, PdfWriter from pypdf.constants import FieldDictionaryAttributes as FA # noqa: N814 -from .models import Bill, Fee, Wiref +from .models import Bill, Wiref def generate_pdf(wiref): @@ -82,56 +82,56 @@ def generate_pdf(wiref): return True -def generate_fee_pdf(fee: Fee): - if not fee or fee.status != Fee.Status.SUBMITTED: - return False +# def generate_fee_pdf(fee: Fee): +# if not fee or fee.status != Fee.Status.SUBMITTED: +# return False - # Get data for pdf - data = {} - data.update( - { - "Full_Name": fee.bankdata.name, - "Adresse": fee.bankdata.address, - # Change to the correct date format - "Date": str(fee.date_created.strftime("%d.%m.%Y")), - "Honorarnoten-Nummer": str(fee.pk), - "Taetigkeit_1": fee.job, - # Change to the correct date format - "Date_1": str(fee.date_start.strftime("%d.%m.%Y")), - # Change to the correct date format - "Date_2": str(fee.date_end.strftime("%d.%m.%Y")), - # Replace decimal separator from '.' to ',' - "EUR_1": str(fee.amount).replace(".", ","), - "IBAN": fee.bankdata.iban, - "BIC": fee.bankdata.bic, - }, - ) +# # Get data for pdf +# data = {} +# data.update( +# { +# "Full_Name": fee.bankdata.name, +# "Adresse": fee.bankdata.address, +# # Change to the correct date format +# "Date": str(fee.date_created.strftime("%d.%m.%Y")), +# "Honorarnoten-Nummer": str(fee.pk), +# "Taetigkeit_1": fee.job, +# # Change to the correct date format +# "Date_1": str(fee.date_start.strftime("%d.%m.%Y")), +# # Change to the correct date format +# "Date_2": str(fee.date_end.strftime("%d.%m.%Y")), +# # Replace decimal separator from '.' to ',' +# "EUR_1": str(fee.amount).replace(".", ","), +# "IBAN": fee.bankdata.iban, +# "BIC": fee.bankdata.bic, +# }, +# ) - # Add mail only if a fet user create the fee - if fee.fee_creator: - mail = fee.fee_creator.mailaccount - data.update( - { - "Email": mail, - }, - ) +# # Add mail only if a fet user create the fee +# if fee.fee_creator: +# mail = fee.fee_creator.mailaccount +# data.update( +# { +# "Email": mail, +# }, +# ) - # Write data in pdf - pdf_path = Path(Path(__file__).parent) / "static/fee/Honorarnote-Vorlage.pdf" - reader = PdfReader(pdf_path) - writer = PdfWriter() - writer.append(reader) +# # Write data in pdf +# pdf_path = Path(Path(__file__).parent) / "static/fee/Honorarnote-Vorlage.pdf" +# reader = PdfReader(pdf_path) +# writer = PdfWriter() +# writer.append(reader) - writer.update_page_form_field_values( - writer.pages[0], - data, - ) +# writer.update_page_form_field_values( +# writer.pages[0], +# data, +# ) - with io.BytesIO() as bytes_stream: - writer.write(bytes_stream) +# with io.BytesIO() as bytes_stream: +# writer.write(bytes_stream) - # Save pdf in fee - fee_name = f"Honorarnote-{fee.pk}.pdf" - fee.file_field.save(fee_name, File(bytes_stream, fee_name)) +# # Save pdf in fee +# fee_name = f"Honorarnote-{fee.pk}.pdf" +# fee.file_field.save(fee_name, File(bytes_stream, fee_name)) - return True +# return True diff --git a/fet2020/finance/views.py b/fet2020/finance/views.py index 5fef41b5..80ae92a9 100644 --- a/fet2020/finance/views.py +++ b/fet2020/finance/views.py @@ -1,5 +1,5 @@ from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin -from django.db.models import CharField, F, Q, Value +from django.db.models import CharField, Q, Value from django.shortcuts import redirect from django.urls import reverse, reverse_lazy from django.views.generic import ListView, TemplateView @@ -12,12 +12,10 @@ from posts.models import FetMeeting from .forms import ( BillCreateForm, BillUpdateForm, - FeeCreateForm, - FeeUpdateForm, ResolutionCreateForm, ResolutionUpdateForm, ) -from .models import BankData, Bill, Fee, Resolution +from .models import BankData, Bill, Resolution def set_bankdata( @@ -91,26 +89,26 @@ class BillListView(LoginRequiredMixin, ListView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["fee_status"] = Fee.Status + # context["fee_status"] = Fee.Status context["bill_status"] = Bill.Status return context def get_queryset(self): - qs1 = ( - Fee.objects.filter(fee_creator__username=self.request.user) - .values("amount", "status", "id") - .annotate( - date=F("date_start"), purpose=F("job"), model=Value("FEE", output_field=CharField()) - ) - ) - qs2 = ( + # qs1 = ( + # Fee.objects.filter(fee_creator__username=self.request.user) + # .values("amount", "status", "id") + # .annotate( + # date=F("date_start"), purpose=F("job"), model=Value("FEE", output_field=CharField()) + # ) + # ) + qs = ( Bill.objects.filter(bill_creator__username=self.request.user) .values("amount", "status", "id", "date", "purpose") .annotate(model=Value("BILL", output_field=CharField())) ) - qs = qs1.union(qs2, all=True) + # qs = qs1.union(qs2, all=True) return qs.order_by("-date", "purpose") @@ -148,55 +146,55 @@ class BillUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView): return redirect("finance:bill_list") -class FeeCreateView(LoginRequiredMixin, CreateView): - form_class = FeeCreateForm - model = Fee - template_name = "finance/fee/create.html" +# class FeeCreateView(LoginRequiredMixin, CreateView): +# form_class = FeeCreateForm +# model = Fee +# template_name = "finance/fee/create.html" - def form_valid(self, form): - # Get or create bankdata object. - creator = form.cleaned_data["fee_creator"] - name = form.cleaned_data["name_text"] - iban = form.cleaned_data["iban_text"] - bic = form.cleaned_data["bic_text"] - address = form.cleaned_data["address_text"] - saving = form.cleaned_data["saving"] - form.instance.bankdata = set_bankdata(creator, name, iban, bic, saving, address) +# def form_valid(self, form): +# # Get or create bankdata object. +# creator = form.cleaned_data["fee_creator"] +# name = form.cleaned_data["name_text"] +# iban = form.cleaned_data["iban_text"] +# bic = form.cleaned_data["bic_text"] +# address = form.cleaned_data["address_text"] +# saving = form.cleaned_data["saving"] +# form.instance.bankdata = set_bankdata(creator, name, iban, bic, saving, address) - add_log_action(self.request, form, "finance", "fee", True) - return super().form_valid(form) +# add_log_action(self.request, form, "finance", "fee", True) +# return super().form_valid(form) - def get_form_kwargs(self): - kwargs = super().get_form_kwargs() +# def get_form_kwargs(self): +# kwargs = super().get_form_kwargs() - # Request user for fee creator. - kwargs["user"] = self.request.user - return kwargs +# # Request user for fee creator. +# kwargs["user"] = self.request.user +# return kwargs - def get_success_url(self): - return reverse("finance:fee_create_done", kwargs={"pk": self.object.pk}) +# def get_success_url(self): +# return reverse("finance:fee_create_done", kwargs={"pk": self.object.pk}) -class FeeCreateDoneView(LoginRequiredMixin, TemplateView): - template_name = "finance/fee/create_done.html" +# class FeeCreateDoneView(LoginRequiredMixin, TemplateView): +# template_name = "finance/fee/create_done.html" -class FeeUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView): - form_class = FeeUpdateForm - model = Fee - success_url = reverse_lazy("finance:bill_list") - template_name = "finance/fee/update.html" +# class FeeUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView): +# form_class = FeeUpdateForm +# model = Fee +# success_url = reverse_lazy("finance:bill_list") +# template_name = "finance/fee/update.html" - def form_valid(self, form): - add_log_action(self.request, form, "finance", "fee", False) - return super().form_valid(form) +# def form_valid(self, form): +# add_log_action(self.request, form, "finance", "fee", False) +# return super().form_valid(form) - # Call fee if it's only yours. - def test_func(self): - return self.get_object().fee_creator.username == self.request.user.username +# # Call fee if it's only yours. +# def test_func(self): +# return self.get_object().fee_creator.username == self.request.user.username - def handle_no_permission(self): - return redirect("finance:bill_list") +# def handle_no_permission(self): +# return redirect("finance:bill_list") class ResolutionCreateView(LoginRequiredMixin, CreateView): diff --git a/fet2020/templates/admin/submit_line.html b/fet2020/templates/admin/submit_line.html index 3073b497..ec1e5bda 100644 --- a/fet2020/templates/admin/submit_line.html +++ b/fet2020/templates/admin/submit_line.html @@ -7,6 +7,5 @@ {% translate 'Close' %} {% endif %} {% if generate_pdf %}{% endif %} - {% if generate_fee_pdf %}{% endif %} {{ block.super }} {% endblock submit-row %} diff --git a/fet2020/templates/finance/index.html b/fet2020/templates/finance/index.html index 0836fbbf..99003e69 100644 --- a/fet2020/templates/finance/index.html +++ b/fet2020/templates/finance/index.html @@ -39,23 +39,11 @@ {% elif result.status == bill_status.FINISHED %} {{ bill_status.FINISHED.label }} {% endif %} - {% elif result.model == "FEE" %} - {% if result.status == fee_status.SUBMITTED %} - {{ fee_status.SUBMITTED.label }} - {% elif result.status == fee_status.APPROVED %} - {{ fee_status.APPROVED.label }} - {% elif result.status == fee_status.PAYOUT %} - {{ fee_status.PAYOUT.label }} - {% elif result.status == fee_status.CLEARED %} - {{ fee_status.CLEARED.label }} - {% endif %} {% endif %} {% if result.model == "BILL" %} - {% elif result.model == "FEE" %} - {% endif %} diff --git a/fet2020/templates/home.html b/fet2020/templates/home.html index 27742107..ee9563f8 100644 --- a/fet2020/templates/home.html +++ b/fet2020/templates/home.html @@ -49,12 +49,6 @@ Neue Rechnung einreichen -
  • - - - Neue Honorarnote einreichen - -