django-refunds/refunding/models.py

70 lines
2 KiB
Python
Raw Normal View History

import datetime
from django.db import models
from django.conf import settings
2016-06-04 01:24:40 +02:00
from django.db.models import Sum
2016-06-04 14:52:08 +02:00
import logging
logger = logging.getLogger(__name__)
AUTH_USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User')
class Refund(models.Model):
2016-10-27 09:35:44 +02:00
class Meta:
verbose_name = 'remboursement'
verbose_name_plural = 'remboursements'
title = models.CharField(max_length=100, verbose_name='titre')
date = models.DateField(default=datetime.date.today)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
user = models.ForeignKey(
AUTH_USER_MODEL,
2016-06-04 03:44:41 +02:00
on_delete=models.PROTECT,
2016-10-27 09:35:44 +02:00
null=True,
verbose_name='utilisateur'
)
2016-06-04 01:55:27 +02:00
def eur_value(self) -> float:
2016-06-04 03:44:41 +02:00
value_sum = self.payment_set.all().aggregate(Sum('value')).get('value__sum')
if value_sum:
return value_sum / 100
else:
return 0
2016-06-04 01:24:40 +02:00
def __str__(self) -> str:
2016-10-27 09:35:44 +02:00
return "{0} le {1} pour {2:.2f}".format(self.title, self.date, self.eur_value())
2016-06-04 01:24:40 +02:00
class Payment(models.Model):
2016-10-27 09:35:44 +02:00
class Meta:
verbose_name = 'paiement'
verbose_name_plural = 'paiements'
title = models.CharField(max_length=100, verbose_name='titre')
date = models.DateField(default=datetime.date.today)
2016-10-27 09:35:44 +02:00
value = models.IntegerField(verbose_name='valeur')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
user = models.ForeignKey(
AUTH_USER_MODEL,
2016-10-27 09:35:44 +02:00
on_delete=models.PROTECT,
verbose_name='utilisateur'
)
refund = models.ForeignKey(
Refund,
on_delete=models.SET_NULL,
null=True,
2016-10-27 09:35:44 +02:00
blank=True,
verbose_name='remboursement'
)
2016-06-04 01:24:40 +02:00
def __str__(self) -> str:
2016-10-27 09:35:44 +02:00
s = '{0} le {1} pour {2:.2f}'.format(self.title, self.date, self.value / 100)
2016-06-04 14:52:08 +02:00
logger.error(s)
return s
2016-06-04 01:24:40 +02:00
def eur_value(self) -> float:
return self.value / 100