feat(fournée): sépare les coulées pour une meilleur présentation des fournée complexes
This commit is contained in:
parent
438d071006
commit
8831ae1b16
@ -208,29 +208,17 @@ class FournéeAdmin(nested_admin.NestedModelAdmin):
|
|||||||
obj = self.model.objects.get(pk=object_id)
|
obj = self.model.objects.get(pk=object_id)
|
||||||
extra_context["commandes"] = obj.commande_set.all()
|
extra_context["commandes"] = obj.commande_set.all()
|
||||||
coulées = obj.coulée_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éé les tableaux coulée / ingrédient """
|
||||||
""" on créé un tableau coulée / ingrédient """
|
|
||||||
extra_context["coulées"] = []
|
extra_context["coulées"] = []
|
||||||
for c in obj.coulée_set.all():
|
for c in obj.coulée_set.all():
|
||||||
tmp = [c]
|
quantités = [c, ]
|
||||||
for i, _ in ingrédients:
|
ingrédients = c.pâte.ingrédient_set.values_list('nom', flat=True)
|
||||||
if c.pâte.ingrédient_set.filter(nom=i).exists():
|
for i in ingrédients:
|
||||||
tmp.append(
|
quantités.append((c.quantité / c.pâte.poids_de_base * sum(
|
||||||
(c.quantité / c.pâte.poids_de_base * sum(
|
|
||||||
c.pâte.ingrédient_set.filter(nom=i).values_list("quantité", flat=True)
|
c.pâte.ingrédient_set.filter(nom=i).values_list("quantité", flat=True)
|
||||||
)).quantize(Decimal('1.000')).normalize()
|
)).quantize(Decimal('1.000')).normalize())
|
||||||
)
|
|
||||||
else:
|
|
||||||
tmp.append("")
|
|
||||||
masse_coulée = sum(
|
masse_coulée = sum(
|
||||||
obj.coulée_set.filter(pâte=c.pâte).values_list(
|
obj.coulée_set.filter(pâte=c.pâte).values_list(
|
||||||
"quantité", flat=True
|
"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 !!"
|
problems = f"{(masse_coulée - masse_commandée).normalize()} kg coulés en trop !!"
|
||||||
elif masse_coulée < masse_commandée:
|
elif masse_coulée < masse_commandée:
|
||||||
problems = f"{(masse_commandée - masse_coulée).normalize()} kg coulés en moins !!"
|
problems = f"{(masse_commandée - masse_coulée).normalize()} kg coulés en moins !!"
|
||||||
extra_context["coulées"].append([problems, tmp])
|
extra_context["coulées"].append([problems, ingrédients, quantités])
|
||||||
pains = set(obj.commande_set.exclude(réservation__isnull=True).values_list("pains__nom", flat=True))
|
|
||||||
|
|
||||||
|
""" 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 = []
|
totaux = []
|
||||||
for i, _ in ingrédients:
|
for i, _ in ingrédients:
|
||||||
total = sum([
|
total = sum([
|
||||||
|
@ -27,26 +27,42 @@
|
|||||||
<th scope="col" style="text-align:center">{{ i }}</th>
|
<th scope="col" style="text-align:center">{{ i }}</th>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tr>
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Totaux</th>
|
<th>Totaux</th>
|
||||||
{% for p in totaux_coulées %}
|
{% for p in totaux_coulées %}
|
||||||
<th scope="col" style="text-align:center">{{ p }}</th>
|
<th scope="col" style="text-align:center">{{ p }}</th>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tr>
|
</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>
|
</tbody>
|
||||||
</table>
|
</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 %}
|
{% endif %}
|
||||||
{% if divisions %}
|
{% if divisions %}
|
||||||
<hr>
|
<hr>
|
||||||
|
Loading…
Reference in New Issue
Block a user