48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
from django.db import models
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from waffles.models import Event, UserProfile
|
|
|
|
|
|
class Debt(models.Model):
|
|
"""
|
|
The total debt owed by debtor to debtee.
|
|
|
|
If system is consistent this will be the sum of calculation.amount
|
|
and settlement.amount
|
|
"""
|
|
amount = models.BigIntegerField(verbose_name=_("Amount owed"))
|
|
debtor = models.ForeignKey(UserProfile, related_name="debtor", verbose_name=_("Debtor"))
|
|
debtee = models.ForeignKey(UserProfile, related_name="debtee", verbose_name=_("Debtee"))
|
|
|
|
class Meta:
|
|
verbose_name = _('Total debt')
|
|
verbose_name_plural = _('Total debts')
|
|
|
|
|
|
class Calculation(models.Model):
|
|
"""
|
|
This is a single calculation of debt from an event.
|
|
"""
|
|
debt = models.ForeignKey(Debt, verbose_name=_("Connected debt"))
|
|
event = models.ForeignKey(Event, _("Connected event"))
|
|
amount = models.IntegerField(verbose_name=_("Amount owed"))
|
|
date = models.DateTimeField(verbose_name=_("Date integrated"))
|
|
|
|
class Meta:
|
|
verbose_name = _('Calculation')
|
|
verbose_name_plural = _('Calculations')
|
|
|
|
|
|
class Settlement(models.Model):
|
|
"""
|
|
When part of or a whole debt is settled in 'cash'
|
|
"""
|
|
debt = models.ForeignKey(Debt, verbose_name=_("Connected debt"))
|
|
date = models.DateField(verbose_name=_("Date made"))
|
|
amount = models.IntegerField(verbose_name=_("Amount owed"))
|
|
|
|
class Meta:
|
|
verbose_name = _('Cash settlement')
|
|
verbose_name_plural = _('Cash settlements')
|