Manu 1 2 4 5 7bis sans combo année
This commit is contained in:
+19
-6
@@ -513,6 +513,8 @@ def gestion_ordres():
|
|||||||
"total_prix_net": 0.0,
|
"total_prix_net": 0.0,
|
||||||
"total_eng_brut": 0.0,
|
"total_eng_brut": 0.0,
|
||||||
"total_eng_net": 0.0,
|
"total_eng_net": 0.0,
|
||||||
|
"plus_value": r["PlusValue"],
|
||||||
|
"date_plusvalue": r["date_plusvalue"],
|
||||||
}
|
}
|
||||||
|
|
||||||
groupes_dict[isin]["pieds"].append(pied_data)
|
groupes_dict[isin]["pieds"].append(pied_data)
|
||||||
@@ -556,25 +558,36 @@ def gestion_ordres():
|
|||||||
try:
|
try:
|
||||||
with db.engine.begin() as conn:
|
with db.engine.begin() as conn:
|
||||||
for isin, groupe in groupes_dict.items():
|
for isin, groupe in groupes_dict.items():
|
||||||
# Utilisation d'une tolérance de décimales (ex: 1e-9) pour éviter les erreurs d'arrondi flottant
|
|
||||||
if abs(groupe["total_quantite"]) < 1e-9:
|
if abs(groupe["total_quantite"]) < 1e-9:
|
||||||
ordre_id = groupe["id"]
|
ordre_id = groupe["id"]
|
||||||
|
total_eng_net = groupe["total_eng_net"]
|
||||||
|
|
||||||
# 1. Sauvegarde en base de données
|
# Recherche de la date la plus grande (récente) parmi toutes les lignes (pieds) de l'ordre
|
||||||
|
max_date = max((p["date_op"] for p in groupe["pieds"] if p["date_op"] is not None), default=None)
|
||||||
|
|
||||||
|
# 1. Mise à jour de l'état des lignes dans la table ordre_pied
|
||||||
conn.execute(
|
conn.execute(
|
||||||
text(
|
text(
|
||||||
"UPDATE ordre_pied SET Etat = :nouvel_etat WHERE Id_entete ="
|
"UPDATE ordre_pied SET Etat = :nouvel_etat WHERE Id_entete = :ordre_id"
|
||||||
" :ordre_id"
|
|
||||||
),
|
),
|
||||||
{"nouvel_etat": "soldé", "ordre_id": ordre_id},
|
{"nouvel_etat": "soldé", "ordre_id": ordre_id},
|
||||||
)
|
)
|
||||||
|
|
||||||
# 2. Mise à jour immédiate en mémoire pour l'affichage dans le template
|
# 2. Mise à jour de PlusValue et date_plusvalue dans la table ordre
|
||||||
|
conn.execute(
|
||||||
|
text(
|
||||||
|
"UPDATE ordre SET PlusValue = :plus_value, date_plusvalue = :date_pv WHERE ID = :ordre_id"
|
||||||
|
),
|
||||||
|
{"plus_value": total_eng_net, "date_pv": max_date, "ordre_id": ordre_id},
|
||||||
|
)
|
||||||
|
|
||||||
|
# 3. Mise à jour immédiate en mémoire pour l'affichage dans le template
|
||||||
|
groupe["plus_value"] = total_eng_net
|
||||||
|
groupe["date_plusvalue"] = max_date
|
||||||
for pied in groupe["pieds"]:
|
for pied in groupe["pieds"]:
|
||||||
pied["etat"] = "soldé"
|
pied["etat"] = "soldé"
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# En cas d'erreur, SQLAlchemy gère le rollback automatique avec le bloc 'with connection.begin()'
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
groupes_ordres = list(groupes_dict.values())
|
groupes_ordres = list(groupes_dict.values())
|
||||||
|
|||||||
Reference in New Issue
Block a user