mirror of
https://github.com/frappe/erpnext.git
synced 2026-10-29 22:57:42 +00:00
fix(selling): normalize near-complete billing percentages
(cherry picked from commit 6cad3660a7)
# Conflicts:
# erpnext/controllers/status_updater.py
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user