fix: display all item rate stop messages (backport #38289) (#38307)

fix: display all item rate stop messages (#38289)

(cherry picked from commit 3f6d80503335a33bf2bff53a19870a6cdba00044)

Co-authored-by: Devin Slauenwhite <devin.slauenwhite@gmail.com>
This commit is contained in:
mergify[bot] 2023-11-23 23:39:53 +05:30 committed by GitHub
parent 30c349b010
commit 99c1fbf9fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -98,6 +98,7 @@ class TransactionBase(StatusUpdater):
"Selling Settings", "None", ["maintain_same_rate_action", "role_to_override_stop_action"] "Selling Settings", "None", ["maintain_same_rate_action", "role_to_override_stop_action"]
) )
stop_actions = []
for ref_dt, ref_dn_field, ref_link_field in ref_details: for ref_dt, ref_dn_field, ref_link_field in ref_details:
reference_names = [d.get(ref_link_field) for d in self.get("items") if d.get(ref_link_field)] reference_names = [d.get(ref_link_field) for d in self.get("items") if d.get(ref_link_field)]
reference_details = self.get_reference_details(reference_names, ref_dt + " Item") reference_details = self.get_reference_details(reference_names, ref_dt + " Item")
@ -108,7 +109,7 @@ class TransactionBase(StatusUpdater):
if abs(flt(d.rate - ref_rate, d.precision("rate"))) >= 0.01: if abs(flt(d.rate - ref_rate, d.precision("rate"))) >= 0.01:
if action == "Stop": if action == "Stop":
if role_allowed_to_override not in frappe.get_roles(): if role_allowed_to_override not in frappe.get_roles():
frappe.throw( stop_actions.append(
_("Row #{0}: Rate must be same as {1}: {2} ({3} / {4})").format( _("Row #{0}: Rate must be same as {1}: {2} ({3} / {4})").format(
d.idx, ref_dt, d.get(ref_dn_field), d.rate, ref_rate d.idx, ref_dt, d.get(ref_dn_field), d.rate, ref_rate
) )
@ -121,6 +122,8 @@ class TransactionBase(StatusUpdater):
title=_("Warning"), title=_("Warning"),
indicator="orange", indicator="orange",
) )
if stop_actions:
frappe.throw(stop_actions, as_list=True)
def get_reference_details(self, reference_names, reference_doctype): def get_reference_details(self, reference_names, reference_doctype):
return frappe._dict( return frappe._dict(