Add total deposit calculation to Rental model

This commit is contained in:
2025-10-30 15:00:20 +01:00
parent 5d2a052c1e
commit 8ff3905657
3 changed files with 13 additions and 13 deletions

View File

@@ -93,15 +93,10 @@ class RentalAdmin(admin.ModelAdmin):
obj.author = request.user obj.author = request.user
super().save_model(request, obj, form, change) super().save_model(request, obj, form, change)
@admin.display(description="Kaution (EUR)") @admin.display(description="Kaution insgesamt")
def total_disposit(self, obj): def total_disposit(self, obj):
total_disposit = 0 total_disposit = obj.calc_total_deposit()
return f"{total_disposit}"
if not obj.intern:
for elem in obj.rentalitems.all():
total_disposit += elem.deposit
return f"{total_disposit}"
@admin.register(RentalItem) @admin.register(RentalItem)

View File

@@ -111,3 +111,12 @@ class Rental(models.Model):
if self.date_start > self.date_end: if self.date_start > self.date_end:
raise ValidationError("Das Abholdatum muss vor dem Rückgabedatum liegen.") raise ValidationError("Das Abholdatum muss vor dem Rückgabedatum liegen.")
def calc_total_deposit(self) -> int:
total_deposit = 0
if not self.intern:
for item in self.rentalitems.all():
total_deposit += item.deposit
return total_deposit

View File

@@ -27,12 +27,7 @@ def generate_rental_pdf(rental: Rental) -> bool:
}, },
) )
total_deposit = 0
for i, item in enumerate(rental.rentalitems.all(), start=1): for i, item in enumerate(rental.rentalitems.all(), start=1):
if not rental.intern:
total_deposit += item.deposit
data.update( data.update(
{ {
f"Produkt Row{i}": item.name, f"Produkt Row{i}": item.name,
@@ -41,6 +36,7 @@ def generate_rental_pdf(rental: Rental) -> bool:
}, },
) )
total_deposit = rental.calc_total_deposit()
data.update({"Gesamtkaution": str(total_deposit)}) data.update({"Gesamtkaution": str(total_deposit)})
# Write data in pdf # Write data in pdf