Fixed balance. Oops

This commit is contained in:
CelineDknp committed 2019-04-07 16:52:28 +02:00
1 parent ca999a19cc
commit 8e56c19b4e
3 files changed
+15 -8

No files matched your search

+3 -4
View File
@@ -187,14 +187,13 @@ def get_payment_elements(request):
def get_payment_details(request):
consumer_id = request.GET.get("id", None)
balance = 0 # TODO balance in view to optimize
from ..consumers.models import Consumer
consumer = Consumer.objects.filter(id=consumer_id).first()
balance = consumer.get_balance()
validity = None
for elem in Invoice.objects.filter(consumer_id=consumer_id):
balance -= elem.amount
if not validity or elem.expiration > validity:
validity = elem.expiration
for elem in Payment.objects.filter(consumer_id=consumer_id):
balance += elem.amount
return balance, str(validity)
+8 -3
View File
@@ -22,12 +22,15 @@ class Consumer(models.Model):
return self.first_name + " " + self.last_name
def descript(self):
view = VirtualConsumersBalance.objects.filter(relevant_model=self.id).first()
tab = [self.id, self.last_name, self.first_name, self.get_gender_display(),
self.location, self.get_phone_number(),
self.household_size, self.water_outlet.name, view.balance, self.water_outlet.zone.name]
self.household_size, self.water_outlet.name, self.get_balance(), self.water_outlet.zone.name]
return tab
def get_balance(self):
view = VirtualConsumersBalance.objects.filter(relevant_model=self.id).first()
return view.payed - view.due
def get_phone_number(self):
return self.phone_number if self.phone_number != "0" else "Non spécifié"
@@ -61,7 +64,9 @@ class Consumer(models.Model):
class VirtualConsumersBalance(models.Model):
relevant_model = models.BigIntegerField("Id", primary_key=True)
balance = models.FloatField("Balance", null=False, default=0)
payed = models.FloatField("Total payé", null=False, default=0)
due = models.FloatField("Total dû", null=False, default=0)
class Meta:
managed = False
+4 -1
View File
@@ -45,5 +45,8 @@ CREATE OR REPLACE VIEW public.consumer_virtualtotalbalance AS
c.id AS "relevant_model",
( SELECT COALESCE(SUM(p.amount), 0)
FROM financial_payment p
WHERE p.consumer_id = c.id) AS "balance"
WHERE p.consumer_id = c.id) AS "payed",
( SELECT COALESCE(SUM(i.amount), 0)
FROM financial_invoice i
WHERE i.consumer_id = c.id) AS "due"
FROM consumers_consumer c;