add saving button and iban/bic has no whitespace
This commit is contained in:
@@ -36,6 +36,7 @@ class BankDataAdmin(admin.ModelAdmin):
|
||||
"name",
|
||||
"iban",
|
||||
"bic",
|
||||
"is_disabled",
|
||||
]
|
||||
|
||||
ordering = ["name"]
|
||||
|
||||
@@ -22,10 +22,14 @@ class BankDataForm(forms.ModelForm):
|
||||
|
||||
|
||||
class BillCreateForm(forms.ModelForm):
|
||||
resolution_text = forms.CharField(max_length=128)
|
||||
# bank data
|
||||
name_text = forms.CharField(max_length=128)
|
||||
iban_text = forms.CharField(max_length=34)
|
||||
bic_text = forms.CharField(max_length=11)
|
||||
saving = forms.BooleanField()
|
||||
|
||||
# resolution
|
||||
resolution_text = forms.CharField(max_length=128)
|
||||
|
||||
class Meta:
|
||||
model = Bill
|
||||
@@ -45,7 +49,6 @@ class BillCreateForm(forms.ModelForm):
|
||||
]
|
||||
|
||||
labels = {
|
||||
"bill_creator": "Verantwortliche:r für die Einreichung",
|
||||
"date": "Rechnungsdatum",
|
||||
"invoice": "Rechnungsaussteller",
|
||||
"amount": "Betrag (EUR)",
|
||||
@@ -88,6 +91,7 @@ class BillCreateForm(forms.ModelForm):
|
||||
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["saving"].initial = True
|
||||
|
||||
self.fields["name_text"].label = "Kontoinhaber:in"
|
||||
self.fields["name_text"].required = False
|
||||
@@ -98,6 +102,9 @@ class BillCreateForm(forms.ModelForm):
|
||||
self.fields["bic_text"].label = "BIC"
|
||||
self.fields["bic_text"].required = False
|
||||
|
||||
self.fields["saving"].label = "Bankdaten speichern."
|
||||
self.fields["saving"].required = False
|
||||
|
||||
# resolution fields
|
||||
self.fields["resolution_text"].label = "Beschlussnummer"
|
||||
self.fields["resolution_text"].required = False
|
||||
@@ -111,6 +118,7 @@ class BillCreateForm(forms.ModelForm):
|
||||
payer = cleaned_data.get("payer")
|
||||
name = cleaned_data.get("name_text")
|
||||
iban = cleaned_data.get("iban_text")
|
||||
saving = cleaned_data.get("saving")
|
||||
|
||||
only_digital = cleaned_data.get("only_digital")
|
||||
file_field = cleaned_data.get("file_field")
|
||||
@@ -134,13 +142,13 @@ class BillCreateForm(forms.ModelForm):
|
||||
)
|
||||
"""
|
||||
|
||||
if payer == "M":
|
||||
if payer == Bill.Payer.ME:
|
||||
if name == "" or iban == "":
|
||||
raise ValidationError(
|
||||
f"Bankdaten unvollständig (Kontoinhaber: {name}, IBAN: {iban})."
|
||||
)
|
||||
|
||||
if payer == "V":
|
||||
if payer == Bill.Payer.VEREIN or saving is not True:
|
||||
cleaned_data["name_text"] = ""
|
||||
cleaned_data["iban_text"] = ""
|
||||
cleaned_data["bic_text"] = ""
|
||||
|
||||
@@ -25,6 +25,13 @@ class BankData(models.Model):
|
||||
def __str__(self):
|
||||
return f"{self.name} - {self.iban}"
|
||||
|
||||
def clean(self):
|
||||
if self.iban:
|
||||
self.iban = self.iban.replace(" ", "")
|
||||
|
||||
if self.bic:
|
||||
self.bic = self.bic.replace(" ", "")
|
||||
|
||||
|
||||
class Resolution(models.Model):
|
||||
id = models.CharField(
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||
from django.db.models import Q
|
||||
from django.shortcuts import redirect
|
||||
from django.urls import reverse, reverse_lazy
|
||||
from django.views.generic import ListView, TemplateView
|
||||
@@ -25,14 +26,15 @@ class BillCreateView(LoginRequiredMixin, CreateView):
|
||||
resolution = form.cleaned_data["resolution_text"]
|
||||
if resolution != "":
|
||||
obj, created = Resolution.objects.get_or_create(
|
||||
id=resolution, defaults={"name": resolution}
|
||||
id=resolution,
|
||||
defaults={"name": resolution},
|
||||
)
|
||||
form.instance.resolution = obj
|
||||
|
||||
# get or create bankdata object
|
||||
name = form.cleaned_data["name_text"]
|
||||
iban = form.cleaned_data["iban_text"]
|
||||
bic = form.cleaned_data["bic_text"]
|
||||
iban = form.cleaned_data["iban_text"].replace(" ", "")
|
||||
bic = form.cleaned_data["bic_text"].replace(" ", "")
|
||||
if name != "" and iban != "" and bic != "":
|
||||
obj, created = BankData.objects.get_or_create(
|
||||
name=name,
|
||||
@@ -42,6 +44,14 @@ class BillCreateView(LoginRequiredMixin, CreateView):
|
||||
)
|
||||
form.instance.bankdata = obj
|
||||
|
||||
# disable old bank data
|
||||
qs = BankData.objects.filter(
|
||||
~Q(id=obj.id)
|
||||
& Q(bankdata_creator=obj.bankdata_creator)
|
||||
& Q(is_disabled=False)
|
||||
)
|
||||
qs.update(is_disabled=True)
|
||||
|
||||
add_log_action(self.request, form, "finance", "bill", True)
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
@@ -29,10 +29,7 @@
|
||||
{% include "baseform/text.html" with field=form.bic_text %}
|
||||
</div>
|
||||
<div class="col-span-full">
|
||||
<label>
|
||||
<input type="checkbox">
|
||||
<span>Bankdaten speichern.</span>
|
||||
</label>
|
||||
{% include "baseform/checkbox.html" with field=form.saving %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user