Skip to content
Snippets Groups Projects
Commit 2214a86d authored by Tom Teichler's avatar Tom Teichler :beers:
Browse files

Update Invoice if person changes

parent ac70f7f0
No related branches found
No related tags found
1 merge request!17Update Invoice if person changes
......@@ -32,3 +32,14 @@ class EnablePledge(BooleanPreference):
verbose_name = _("Enable pledged payments")
default = False
required = False
@site_preferences_registry.register
class UpdateOnPersonChange(BooleanPreference):
"""Update Invoices if person data changes."""
section = payments
name = "update_on_person_change"
verbose_name = _("Update Invoices if person data changes")
default = True
required = False
from django.db.models.signals import pre_save
from django.dispatch import receiver
from aleksis.core.util.core_helpers import get_site_preferences
from aleksis.core.models import Person
from ..models.invoice import Invoice
def provider_factory(variant, payment=None):
from djp_sepa.providers import DirectDebitProvider, PaymentPledgeProvider # noqa
from payments.paypal import PaypalProvider # noqa
......@@ -41,3 +49,18 @@ def provider_factory(variant, payment=None):
)
return KeyError("Provider not found or not configured for client.")
@receiver(post_save, sender=Person)
def update_on_person_change(sender, **kwargs):
if Invoice.objects.filter(person=sender, status__in=("waiting", "input", "preauth")).exists() and get_site_preferences()["payments__update_on_person_change"]:
Invoice.objects.filter(person=sender).update(
billing_email=person.email,
billing_first_name=person.first_name,
billing_last_name=person.last_name,
billing_address_1=f"{person.street} {person.housenumber}",
billing_postcode=person.postal_code,
billing_city=person.place,
)
else:
pass
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment