Skip to content
Snippets Groups Projects
Verified Commit c9de0d76 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Add invoice recipients

parent 2ce3a8e1
No related branches found
No related tags found
No related merge requests found
Pipeline #58369 failed
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.utils.translation import gettext_lazy as _
......@@ -11,3 +13,23 @@ class Client(ExtensibleModel):
constraints = [
models.UniqueConstraint(fields=["name", "site"], name="uniq_client_per_site")
]
class Subject(ExtensibleModel):
content_type = models.ForeignKey(ContetType, on_delete=models.SET_NULL)
object_id = models.PositiveIntegerField()
related = GenericForeignKey("content_type", "object_id")
def get_address(self):
if hasattr(self.related, "get_address"):
return self.related.get_address()
elif hasattr(self.related, "addressing_name") and hasattr(self.related, "street") and hasattr(self.related, "housenumber") and hasattr(self.related, "postal_code") and hasattr(self.related, "place"):
# FIXME Use proper locale-based address generation
return f"{self.related.addressing_name}\n{self.related.street} {self.related.housenumber}\n{self.related.postal_code} {self.related.place}"
@classmethod
def from_person(cls, person):
ct = ContentType.objects.get_for_model(person)
subject, created = cls.objects.get_or_create(content_type=ct, object_id=person)
return subject
......@@ -5,7 +5,7 @@ from djmoney.models.fields import CurrencyField, MoneyField
from aleksis.core.mixins import ExtensibleModel
from .base import Client
from .base import Client, Subject
class InvoiceGroup(ExtensibleModel):
......@@ -27,6 +27,7 @@ class Invoice(ExtensibleModel):
number = models.CharField(verbose_name=_("Invoice number"))
date = models.DateField(verbose_name=_("Invoice date"))
recipient = models.ForeignKey(Subject, verbose_name=_("Recipient"), on_delete=models.SET_NULL)
@property
def currency(self):
......
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