Manu 1 2 4 5 7bis sans combo année

This commit is contained in:
2026-07-27 09:21:27 +02:00
parent 837368aef4
commit ba4279c3c3
+19 -6
View File
@@ -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())