fix(selling): normalize near-complete billing percentages

(cherry picked from commit 6cad3660a7)

# Conflicts:
#	erpnext/controllers/status_updater.py
This commit is contained in:
Poovetha
2026-10-23 12:24:05 +05:30
committed by pandiyan
parent a689f13ae2
commit 093486880b
+14 -1
View File
@@ -487,6 +487,11 @@ class StatusUpdater(Document):
{"detail_id": args["detail_id"]},
)
@staticmethod
def snap_full_percentage(percentage):
# Status rules require a full 100.
return 100 if flt(percentage) >= 99.999999 else percentage
def _update_percent_field_in_targets(self, args, update_modified=True):
"""Update percent field in parent transaction"""
if args.get("percent_join_field_parent"):
@@ -522,6 +527,14 @@ class StatusUpdater(Document):
where name='{name}'""".format(**args)
)
frappe.db.set_value(
args["target_parent_dt"],
{"name": args["name"], args["target_parent_field"]: [">=", 99.999999]},
args["target_parent_field"],
100,
update_modified=False,
)
# update field
if args.get("status_field"):
frappe.db.sql(
@@ -588,7 +601,7 @@ class StatusUpdater(Document):
)[0][0]
)
per_billed = safe_div(min(ref_doc_qty, billed_qty), ref_doc_qty) * 100
per_billed = self.snap_full_percentage(safe_div(min(ref_doc_qty, billed_qty), ref_doc_qty) * 100)
ref_doc = frappe.get_doc(ref_dt, ref_dn)