fix(fournée): uniformise et corrige le traitement des décimaux

This commit is contained in:
François Poulain 2024-05-14 20:50:18 +02:00
parent 1b5630c7e9
commit bc7aba0cb5

View File

@ -10,6 +10,12 @@ import nested_admin
from . import models
def clean(d):
if d == d.to_integral():
return d.quantize(Decimal(1))
else:
return d.quantize(Decimal('1.000')).normalize()
class MyAdminSite(admin.AdminSite):
site_header = "Fournée 2.0"
@ -188,14 +194,14 @@ class FournéeAdmin(nested_admin.NestedModelAdmin):
self.message_user(
request,
f"Création d'une coulée de "
f"{pâte_manquante.normalize()} kg "
f"{clean(pâte_manquante)} kg "
f"pour la pâte {pâte_nom}.",
)
elif pâte_manquante < 0:
self.message_user(
request,
f"Attention la pâte {pâte_nom} est prévue "
f"en excès ({-pâte_manquante.normalize()} kg en trop)",
f"en excès ({-clean(pâte_manquante)} kg en trop)",
messages.WARNING,
)
@ -234,10 +240,10 @@ class FournéeAdmin(nested_admin.NestedModelAdmin):
for i in ingrédients:
quantités.append([
i,
(c.quantité / c.pâte.poids_de_base * sum(
clean(c.quantité / c.pâte.poids_de_base * sum(
c.pâte.ingrédient_set.filter(pk=i.pk)
.values_list("quantité", flat=True)
)).quantize(Decimal('1.000')).normalize(),
))
])
masse_coulée = sum(
@ -250,12 +256,12 @@ class FournéeAdmin(nested_admin.NestedModelAdmin):
problems = ""
elif masse_coulée > masse_commandée:
problems = (
f"{(masse_coulée - masse_commandée).normalize()} "
f"{clean(masse_coulée - masse_commandée)} "
"kg coulés en trop !!"
)
elif masse_coulée < masse_commandée:
problems = (
f"{(masse_commandée - masse_coulée).normalize()} "
f"{clean(masse_commandée - masse_coulée)} "
"kg coulés en moins !!"
)
extra_context["coulées"].append([problems, ingrédients, quantités])
@ -280,7 +286,7 @@ class FournéeAdmin(nested_admin.NestedModelAdmin):
[None, sum(obj.coulée_set.values_list('quantité', flat=True))]
]
for i in ingrédients:
total = sum([
total = clean(sum([
qté * qté_unit / unit
for qté, qté_unit, unit in
obj.coulée_set.filter(
@ -291,7 +297,7 @@ class FournéeAdmin(nested_admin.NestedModelAdmin):
'pâte__ingrédient__quantité',
'pâte__poids_de_base',
)
]).quantize(Decimal('1.000')).normalize()
]))
totaux.append([i, total])
extra_context["totaux_coulées"] = totaux
@ -307,22 +313,22 @@ class FournéeAdmin(nested_admin.NestedModelAdmin):
for p in pains:
if c.réservation_set.filter(pain__nom=p).exists():
tmp.append(
sum(
clean(sum(
c.réservation_set.filter(pain__nom=p).values_list(
"quantité", flat=True
)
).normalize()
))
)
else:
tmp.append("")
extra_context["divisions"].append(tmp)
totaux = [sum(obj.coulée_set.values_list('quantité', flat=True))]
for p in pains:
total = sum(
total = clean(sum(
obj.commande_set.filter(pains__nom=p).values_list(
"réservation__quantité", flat=True
)
).normalize()
))
totaux.append(total)
extra_context["totaux_divisions"] = totaux