From a6465f50f2a479888e010fcf625d52e80c8e4531 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Sat, 24 Sep 2011 17:38:55 +0200 Subject: Correct cost and fnap financing (closes #634) --- ishtar/ishtar_base/models.py | 23 ++++++++++++++++++++--- ishtar/templates/dashboard_operation.html | 2 +- 2 files changed, 21 insertions(+), 4 deletions(-) (limited to 'ishtar') diff --git a/ishtar/ishtar_base/models.py b/ishtar/ishtar_base/models.py index 67dad81b7..6921b3284 100644 --- a/ishtar/ishtar_base/models.py +++ b/ishtar/ishtar_base/models.py @@ -29,7 +29,7 @@ from django.utils.safestring import SafeUnicode, mark_safe from django.core.urlresolvers import reverse, NoReverseMatch from django.db.utils import DatabaseError from django.db.models import Q, Max, Count, Sum, Avg -from django.db.models.signals import m2m_changed +from django.db.models.signals import m2m_changed, post_save from django.contrib.auth.models import User from django.contrib.gis.db import models @@ -868,7 +868,7 @@ class OperationDashboard: .values('department__pk', 'operation__year')\ .annotate(number=Count('operation'), area=Sum('operation__surface'), - fnap=Sum('operation__fnap_financing'), + fnap=Sum('operation__fnap_cost'), cost=Sum('operation__cost'))\ .order_by('operation__year') dct_years = {} @@ -1363,7 +1363,9 @@ class Operation(BaseHistorizedItem, OwnPerms): TABLE_COLS = ['code_patriarche'] + TABLE_COLS code_dracar = models.CharField(u"Code DRACAR", max_length=10, null=True, blank=True) - fnap_financing = models.FloatField(u"Financement FNAP", + fnap_financing = models.FloatField(u"Financement FNAP (%)", + blank=True, null=True) + fnap_cost = models.IntegerField(u"Financement FNAP (€)", blank=True, null=True) zoning_prescription = models.NullBooleanField( _(u"Prescription on zoning"), blank=True, null=True) @@ -1468,6 +1470,21 @@ class Operation(BaseHistorizedItem, OwnPerms): return {'date':item.history_date, 'user':IshtarUser.objects.get(pk=item.history_modifier_id)} +def operation_post_save(sender, **kwargs): + if not kwargs['instance']: + return + operation = kwargs['instance'] + if operation.fnap_financing and operation.cost: + fnap_cost = int(float(operation.cost)/100*operation.fnap_financing) + if not operation.fnap_cost or operation.fnap_cost != fnap_cost: + operation.fnap_cost = fnap_cost + operation.save() + elif operation.fnap_cost and operation.cost: + fnap_percent = float(operation.fnap_cost)*100/operation.cost + operation.fnap_financing = fnap_percent + operation.save() +post_save.connect(operation_post_save, sender=Operation) + class OperationByDepartment(models.Model): ''' Database view: don't forget to create it diff --git a/ishtar/templates/dashboard_operation.html b/ishtar/templates/dashboard_operation.html index 71d9563d2..28f1dd9c6 100644 --- a/ishtar/templates/dashboard_operation.html +++ b/ishtar/templates/dashboard_operation.html @@ -471,7 +471,7 @@ {%for yr in dashboard.years %}{%trans "Nb."%}{%trans "Cost"%}{%trans "FNAP cost"%}{% endfor %}{%trans "Nb."%}{%trans "Cost"%}{%trans "FNAP cost"%} - {% for lbl, years in dashboard.survey.effective_by_dpt %} + {% for lbl, years in dashboard.excavation.effective_by_dpt %} {{lbl}}{%for nb, area, cost, fnap in years %}{{nb}}{{cost}}{{fnap}}{% endfor %} -- cgit v1.2.3