diff --git a/frappe-setup/apply_pg_patches.py b/frappe-setup/apply_pg_patches.py index ff3beb6..ab481a2 100644 --- a/frappe-setup/apply_pg_patches.py +++ b/frappe-setup/apply_pg_patches.py @@ -21,10 +21,9 @@ Patchs inclus : 1. utilities/product.py — `ORDER BY NULL` retiré (validation de variante) 2. stock/.../item.py — get_timeline_data : CurDate() → add_to_date (heatmap fiche Item) 3. frappe_pg query_transformers — CURRENT_DATE()/CURDATE() → CURRENT_DATE (filet général) - -À FAIRE (non encore résolu) : - - Period Closing Voucher : requête GROUP BY/ORDER BY creation invalide en PG - (GroupingError) qui bloque le submit des transactions de stock/compta. À localiser. + 4. repost_item_valuation.py — get_max_period_closing_date : qb Max + ORDER BY creation → get_value(order_by=None) + 5. accounts/general_ledger.py — validate_against_pcv : get_value agrégat MAX + ORDER BY creation + → order_by=None. DÉBLOQUE le submit des transactions stock/compta (GroupingError PG). """ import re @@ -82,4 +81,25 @@ patch_file( lambda s: MARK in s, ) +# 4) repost_item_valuation — get_max_period_closing_date : qb Max(...) + ORDER BY creation +# (GroupingError PG) → get_value(..., order_by=None) +patch_file( + f"{BENCH}/erpnext/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py", + lambda s: re.sub( + r'table = frappe\.qb\.DocType\("Period Closing Voucher"\).*?return query\[0\]\[0\] if query and query\[0\]\[0\] else None', + 'return frappe.db.get_value("Period Closing Voucher", {"company": company, "docstatus": 1}, "max(period_end_date)", order_by=None)', + s, count=1, flags=re.DOTALL), + lambda s: 'max(period_end_date)", order_by=None' in s, +) + +# 5) general_ledger — validate_against_pcv : get_value avec agrégat MAX + ORDER BY creation par +# défaut (GroupingError PG) → ajout order_by=None. C'est CE patch qui débloque le submit stock/compta. +patch_file( + f"{BENCH}/erpnext/erpnext/accounts/general_ledger.py", + lambda s: s.replace( + '{"docstatus": 1, "company": company}, [{"MAX": "period_end_date"}]', + '{"docstatus": 1, "company": company}, [{"MAX": "period_end_date"}], order_by=None', 1), + lambda s: '[{"MAX": "period_end_date"}], order_by=None' in s, +) + print("DONE — redémarrer le conteneur pour recharger les workers.")