diff options
-rw-r--r-- | archaeological_files/models.py | 37 | ||||
-rw-r--r-- | ishtar_common/utils_secretary.py | 25 |
2 files changed, 62 insertions, 0 deletions
diff --git a/archaeological_files/models.py b/archaeological_files/models.py index 9507a5e0b..3f9623414 100644 --- a/archaeological_files/models.py +++ b/archaeological_files/models.py @@ -44,6 +44,7 @@ from ishtar_common.utils import ( from ishtar_common.models import ( Department, GeneralType, + GlobalVar, BaseHistorizedItem, Imported, OwnPerms, @@ -1043,6 +1044,7 @@ class File( def get_dynamic_values(self, prefix, values, filtr=None): q = GenericEquipmentServiceType.objects.filter(available=True) + equipment_costs = [] for equipment_service in q.all(): pk = equipment_service.pk #if not filtr or not any( @@ -1099,6 +1101,9 @@ class File( cost_detail = {"name": cost_name} cost_detail.update(key_costs_dct[cost_name]) values[key_costs].append(InlineClass(cost_detail)) + if values[key_costs]: + equipment_costs += values[key_costs][:] + values["equipment_costs"] = equipment_costs return values @property @@ -1225,6 +1230,38 @@ class File( values["used_equipments"] = self.used_equipments values["equipments_cost_planned"] = sum([cost for _1, cost, _2, _3, _4 in self.used_equipments]) values["equipments_cost_worked"] = sum([cost for _1, _2, cost, _3, _4 in self.used_equipments]) + + values["job_cost"] = 0 + for k in ["non_permanent_ground_cost_planned", "non_permanent_cost_planned", + "permanent_ground_cost_planned", "permanent_cost_planned"]: + values["job_cost"] += values.get(k, 0) + values["job_permanent_cost"] = 0 + for k in ["permanent_ground_cost_planned", "permanent_cost_planned"]: + values["job_permanent_cost"] += values.get(k, 0) + values["job_non_permanent_cost"] = 0 + for k in ["non_permanent_ground_cost_planned", "non_permanent_cost_planned"]: + values["job_non_permanent_cost"] += values.get(k, 0) + return values + + def get_values(self, prefix="", no_values=False, filtr=None, **kwargs): + if "redevance" in filtr: + filtr.append("total_developed_surface") + if "equipments_cost_planned_tva" in filtr: + filtr.append("equipments_cost_planned") + values = super().get_values( + prefix=prefix, no_values=no_values, filtr=filtr, **kwargs) + q = GlobalVar.objects.filter(slug="taux_rap") + if q.count(): + try: + values["redevance"] = float(q.all()[0].value) * float(values.get("total_developed_surface", 0)) + except ValueError: + pass + q = GlobalVar.objects.filter(slug="taux_tva") + if q.count(): + try: + values["equipments_cost_planned_tva"] = float(q.all()[0].value) * float(values.get("equipments_cost_planned", 0)) + except ValueError: + pass return values def render_parcels(self): diff --git a/ishtar_common/utils_secretary.py b/ishtar_common/utils_secretary.py index 318f50bdc..188441120 100644 --- a/ishtar_common/utils_secretary.py +++ b/ishtar_common/utils_secretary.py @@ -36,6 +36,7 @@ def float_format(value): return "" if int(value) == value: return int(value) + value = int(value * 100)/100 return formats.localize(value, use_l10n=True) @@ -61,6 +62,27 @@ def lowerfirst_filter(value): return value[0].lower() + value[1:] if value else value +def add_filter(value1, value2): + try: + return float(value1 or 0) + float(value2 or 0) + except ValueError: + return 0 + + +def sub_filter(value1, value2): + try: + return float(value1 or 0) - float(value2 or 0) + except ValueError: + return 0 + + +def multiply_filter(value1, value2): + try: + return float(value1 or 0) * float(value2 or 0) + except ValueError: + return 0 + + RE_CAP = re.compile(r"[^-' ]+") SEP = ("un", "une", "le", "la", "les", "lez", "d", "l", "de", "des", "du", "sur", "sous", "en") @@ -137,6 +159,9 @@ class IshtarSecretaryRenderer(Renderer): self.environment.filters["number_to_words"] = number_to_words self.environment.filters["replace_line_breaks"] = replace_line_breaks self.environment.filters["splitpart"] = splitpart + self.environment.filters["multiply"] = multiply_filter + self.environment.filters["add"] = add_filter + self.environment.filters["sub"] = sub_filter def ishtar_media_loader(self, media, *args, **kwargs): res = self.fs_loader(media, *args, **kwargs) |