feat(fournée): sépare les coulées pour une meilleur présentation des fournée complexes

This commit is contained in:
François Poulain 2024-05-12 19:20:15 +02:00
parent 438d071006
commit 8831ae1b16
2 changed files with 49 additions and 34 deletions

View File

@ -208,29 +208,17 @@ class FournéeAdmin(nested_admin.NestedModelAdmin):
obj = self.model.objects.get(pk=object_id)
extra_context["commandes"] = obj.commande_set.all()
coulées = obj.coulée_set.all()
ingrédients = sorted(
set(
coulées.values_list(
"pâte__ingrédient__nom", "pâte__ingrédient__ordre"
)
),
key=lambda x: x[1],
)
extra_context["ingrédients"] = ingrédients
""" on créé un tableau coulée / ingrédient """
""" on créé les tableaux coulée / ingrédient """
extra_context["coulées"] = []
for c in obj.coulée_set.all():
tmp = [c]
for i, _ in ingrédients:
if c.pâte.ingrédient_set.filter(nom=i).exists():
tmp.append(
(c.quantité / c.pâte.poids_de_base * sum(
c.pâte.ingrédient_set.filter(nom=i).values_list("quantité", flat=True)
)).quantize(Decimal('1.000')).normalize()
)
else:
tmp.append("")
quantités = [c, ]
ingrédients = c.pâte.ingrédient_set.values_list('nom', flat=True)
for i in ingrédients:
quantités.append((c.quantité / c.pâte.poids_de_base * sum(
c.pâte.ingrédient_set.filter(nom=i).values_list("quantité", flat=True)
)).quantize(Decimal('1.000')).normalize())
masse_coulée = sum(
obj.coulée_set.filter(pâte=c.pâte).values_list(
"quantité", flat=True
@ -243,9 +231,20 @@ class FournéeAdmin(nested_admin.NestedModelAdmin):
problems = f"{(masse_coulée - masse_commandée).normalize()} kg coulés en trop !!"
elif masse_coulée < masse_commandée:
problems = f"{(masse_commandée - masse_coulée).normalize()} kg coulés en moins !!"
extra_context["coulées"].append([problems, tmp])
pains = set(obj.commande_set.exclude(réservation__isnull=True).values_list("pains__nom", flat=True))
extra_context["coulées"].append([problems, ingrédients, quantités])
""" on créé un tableau total coulée / ingrédient """
ingrédients = sorted(
set(
coulées.values_list(
"pâte__ingrédient__nom", "pâte__ingrédient__ordre"
)
),
key=lambda x: x[1],
)
extra_context["ingrédients"] = ingrédients
pains = set(obj.commande_set.exclude(réservation__isnull=True).values_list("pains__nom", flat=True))
totaux = []
for i, _ in ingrédients:
total = sum([

View File

@ -27,26 +27,42 @@
<th scope="col" style="text-align:center">{{ i }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
<tr>
<th>Totaux</th>
{% for p in totaux_coulées %}
<th scope="col" style="text-align:center">{{ p }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for problems, coulée in coulées %}
<tr{% if problems %} style="color: var(--delete-button-hover-bg);"{% endif %}>
{% for i in coulée %}
{% if forloop.first %}<th scope="row">{% else %}<td style="text-align:center">{% endif %}
{{ i }}
{% if forloop.first %}{% if problems %} ({{ problems }}){% endif %}</th>{% else %}</td>{% endif %}
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
<p></p>
<div style="display:inline-grid">
{% for problems, ingrédients, quantités in coulées %}
<h3 style="margin-top: 2em{% if problems %}; color: var(--delete-button-hover-bg);{% endif %}">{{ quantités.0 }}{% if problems %} ({{ problems }}){% endif %}</h3>
<table>
<thead>
<tr>
<th></th>
{% for i in ingrédients %}
<th scope="col" style="text-align:center">{{ i }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
<tr>
{% for q in quantités %}
{% if forloop.first %}
<th scope="row">{{ q.pâte.nom }}</th>
{% else %}
<td style="text-align:center">{{ q }}</td>
{% endif %}
{% endfor %}
</tr>
</tbody>
</table>
{% endfor %}
</div>
{% endif %}
{% if divisions %}
<hr>