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

Add some model stubs

parent d567ddef
No related branches found
No related tags found
No related merge requests found
Pipeline #58351 failed
from django.db import models
from django.utils.translation import gettext_lazy as _
from aleksis.core.mixins import ExtensibleModel
class Client(ExtensibleModel):
name = models.CharField(verbose_name=_("Name"))
class Meta:
constraints = [
models.UniqueConstraint(fields=["name", "site"], name="uniq_client_per_site")
]
from django.db import models
from django.utils.translation import gettext_lazy as _
from djmoney.models.fields import CurrencyField, MoneyField
from aleksis.core.mixins import ExtensibleModel
from .base import Client
class InvoiceGroup(ExtensibleModel):
name = models.CharField(verbose_name=_("Invoice group name"), max_length=255)
client = models.ForeignKey(Client, verbose_name=_("Linked client"), related_name="invoice_groups")
class Meta:
constraints = [
models.UniqueConstraint(fields=["client", "name"], name="group_uniq_per_client")
]
class Invoice(ExtensibleModel):
group = models.ForeignKey(InvoiceGroup, verbose_name=_("Invoice group"), related_name="invoices")
number = models.CharField(verbose_name=_("Invoice number"))
date = models.DateField(verbose_name=_("Invoice date"))
@property
def currency(self):
try:
return self.positions.first().net_amount_currency
except InvoicePosition.DoesNotExist:
return None
class Meta:
constraints = [
models.UniqueConstraint(fields=["group", "number"], name="number_uniq_per_group")
]
class InvoicePosition(ExtensibleModel):
invoice = models.ForeignKey(Invoice, verbose_name=_("Invoice"), related_name="positions")
description = models.TextField(verbose_name=_("Description"))
vat_rate = models.PositiveSmallIntegerField(verbose_name=_("VAT rate"), default=0)
net_amount = models.MoneyField(verbose_name=_("Net amount"))
@property
def gross_amount(self):
# FIXME turn into manager/annotation/etc.
return self.net_amount * (1 + self.vat_rate / 100)
class Meta:
# FIXME Add check constraint for currency
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