Compare commits
2 Commits
065ee38f58
...
374da7c644
Author | SHA1 | Date | |
---|---|---|---|
374da7c644 | |||
5d1d9ee5ad |
@ -176,11 +176,12 @@ class FournéeAdmin(nested_admin.NestedModelAdmin):
|
||||
|
||||
"""Pour chaque pâte on regarde si les coulées sont complètes.
|
||||
Si elles ne le sont pas, on ajoute ce qui manque."""
|
||||
for pâte_id, pâte_nom, pâte_ordre in (
|
||||
for pâte_id, pâte_nom, pâte_ordre, poids_préféré in (
|
||||
obj.commande_set.values_list(
|
||||
"réservation__pain__pâte",
|
||||
"réservation__pain__pâte__nom",
|
||||
"réservation__pain__pâte__ordre"
|
||||
"réservation__pain__pâte__ordre",
|
||||
"réservation__pain__pâte__poids_préféré",
|
||||
)
|
||||
.order_by("réservation__pain__pâte")
|
||||
.distinct()
|
||||
@ -193,17 +194,21 @@ class FournéeAdmin(nested_admin.NestedModelAdmin):
|
||||
)
|
||||
pâte_manquante = somme_commandée - somme_coulée
|
||||
if pâte_manquante > 0:
|
||||
obj.coulée_set.create(
|
||||
pâte_id=pâte_id,
|
||||
quantité=pâte_manquante,
|
||||
ordre=pâte_ordre
|
||||
)
|
||||
self.message_user(
|
||||
request,
|
||||
f"Création d'une coulée de "
|
||||
f"{clean(pâte_manquante)} kg "
|
||||
f"pour la pâte {pâte_nom}.",
|
||||
)
|
||||
for à_couler in models.Recette.découpe(
|
||||
pâte_manquante,
|
||||
poids_préféré,
|
||||
):
|
||||
obj.coulée_set.create(
|
||||
pâte_id=pâte_id,
|
||||
quantité=à_couler,
|
||||
ordre=pâte_ordre
|
||||
)
|
||||
self.message_user(
|
||||
request,
|
||||
f"Création d'une coulée de "
|
||||
f"{clean(à_couler)} kg "
|
||||
f"pour la pâte {pâte_nom}.",
|
||||
)
|
||||
elif pâte_manquante < 0:
|
||||
self.message_user(
|
||||
request,
|
||||
|
17
fournée/core/migrations/0018_recette_poids_préféré.py
Normal file
17
fournée/core/migrations/0018_recette_poids_préféré.py
Normal file
@ -0,0 +1,17 @@
|
||||
# Generated by Django 4.2.13 on 2024-06-07 08:33
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("core", "0017_alter_document_nom"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="recette",
|
||||
name="poids_préféré",
|
||||
field=models.DecimalField(decimal_places=3, default=0, max_digits=6),
|
||||
),
|
||||
]
|
@ -80,11 +80,27 @@ class Recette(models.Model):
|
||||
|
||||
nom = models.CharField(max_length=64)
|
||||
poids_de_base = models.DecimalField(max_digits=6, decimal_places=3)
|
||||
poids_préféré = models.DecimalField(
|
||||
default=0, max_digits=6, decimal_places=3
|
||||
)
|
||||
ordre = models.SmallIntegerField(default=0)
|
||||
|
||||
def __str__(self):
|
||||
return self.nom
|
||||
|
||||
@staticmethod
|
||||
def découpe(quantité, préféré):
|
||||
if not préféré:
|
||||
return [quantité]
|
||||
q, r = divmod(quantité, préféré)
|
||||
if not q:
|
||||
return [r]
|
||||
if r/préféré > 0.5:
|
||||
return [préféré]*int(q) + [r]
|
||||
else :
|
||||
ret = [préféré]*int(q)
|
||||
ret[-1] += r
|
||||
return ret
|
||||
|
||||
class Pain(models.Model):
|
||||
class Meta:
|
||||
|
@ -15,8 +15,7 @@ def submit_row_tag(parser, token):
|
||||
|
||||
@register.simple_tag
|
||||
def emballe(quantité, fourniture):
|
||||
quotient = quantité // fourniture.conditionnement
|
||||
reste = quantité % fourniture.conditionnement
|
||||
quotient, reste = divmod(quantité, fourniture.conditionnement)
|
||||
if not reste and quotient == 1:
|
||||
return f"{quotient} {fourniture.emballage}"
|
||||
if not reste and quotient > 1:
|
||||
|
Loading…
x
Reference in New Issue
Block a user