fix: Role to override maintain same rate check in transactions (#25193)
* feat: configurable action if the same purchase/selling rate is not maintained * fix: Role to override maintain same rate check in transactions Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
This commit is contained in:
parent
ca412d37c8
commit
b717420842
@ -13,6 +13,8 @@
|
|||||||
"po_required",
|
"po_required",
|
||||||
"pr_required",
|
"pr_required",
|
||||||
"maintain_same_rate",
|
"maintain_same_rate",
|
||||||
|
"maintain_same_rate_action",
|
||||||
|
"role_to_override_stop_action",
|
||||||
"allow_multiple_items",
|
"allow_multiple_items",
|
||||||
"subcontract",
|
"subcontract",
|
||||||
"backflush_raw_materials_of_subcontract_based_on",
|
"backflush_raw_materials_of_subcontract_based_on",
|
||||||
@ -89,6 +91,23 @@
|
|||||||
{
|
{
|
||||||
"fieldname": "column_break_11",
|
"fieldname": "column_break_11",
|
||||||
"fieldtype": "Column Break"
|
"fieldtype": "Column Break"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "Stop",
|
||||||
|
"depends_on": "maintain_same_rate",
|
||||||
|
"description": "Configure the action to stop the transaction or just warn if the same rate is not maintained.",
|
||||||
|
"fieldname": "maintain_same_rate_action",
|
||||||
|
"fieldtype": "Select",
|
||||||
|
"label": "Action If Same Rate is Not Maintained",
|
||||||
|
"mandatory_depends_on": "maintain_same_rate",
|
||||||
|
"options": "Stop\nWarn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"depends_on": "eval:doc.maintain_same_rate_action == 'Stop'",
|
||||||
|
"fieldname": "role_to_override_stop_action",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Role Allowed to Override Stop Action",
|
||||||
|
"options": "Role"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"icon": "fa fa-cog",
|
"icon": "fa fa-cog",
|
||||||
@ -96,7 +115,7 @@
|
|||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"issingle": 1,
|
"issingle": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2021-03-02 17:34:04.190677",
|
"modified": "2021-04-04 20:01:44.087066",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Buying",
|
"module": "Buying",
|
||||||
"name": "Buying Settings",
|
"name": "Buying Settings",
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
"dn_required",
|
"dn_required",
|
||||||
"sales_update_frequency",
|
"sales_update_frequency",
|
||||||
"maintain_same_sales_rate",
|
"maintain_same_sales_rate",
|
||||||
|
"maintain_same_rate_action",
|
||||||
|
"role_to_override_stop_action",
|
||||||
"editable_price_list_rate",
|
"editable_price_list_rate",
|
||||||
"allow_multiple_items",
|
"allow_multiple_items",
|
||||||
"allow_against_multiple_purchase_orders",
|
"allow_against_multiple_purchase_orders",
|
||||||
@ -133,6 +135,23 @@
|
|||||||
"fieldname": "hide_tax_id",
|
"fieldname": "hide_tax_id",
|
||||||
"fieldtype": "Check",
|
"fieldtype": "Check",
|
||||||
"label": "Hide Customer's Tax ID from Sales Transactions"
|
"label": "Hide Customer's Tax ID from Sales Transactions"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "Stop",
|
||||||
|
"depends_on": "maintain_same_sales_rate",
|
||||||
|
"description": "Configure the action to stop the transaction or just warn if the same rate is not maintained.",
|
||||||
|
"fieldname": "maintain_same_rate_action",
|
||||||
|
"fieldtype": "Select",
|
||||||
|
"label": "Action If Same Rate is Not Maintained",
|
||||||
|
"mandatory_depends_on": "maintain_same_sales_rate",
|
||||||
|
"options": "Stop\nWarn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"depends_on": "eval: doc.maintain_same_rate_action == 'Stop'",
|
||||||
|
"fieldname": "role_to_override_stop_action",
|
||||||
|
"fieldtype": "Link",
|
||||||
|
"label": "Role Allowed to Override Stop Action",
|
||||||
|
"options": "Role"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"icon": "fa fa-cog",
|
"icon": "fa fa-cog",
|
||||||
@ -140,7 +159,7 @@
|
|||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"issingle": 1,
|
"issingle": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2021-03-02 17:35:53.603607",
|
"modified": "2021-04-04 20:18:12.814624",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Selling",
|
"module": "Selling",
|
||||||
"name": "Selling Settings",
|
"name": "Selling Settings",
|
||||||
|
@ -120,11 +120,11 @@ class TransactionBase(StatusUpdater):
|
|||||||
buying_doctypes = ["Purchase Order", "Purchase Invoice", "Purchase Receipt"]
|
buying_doctypes = ["Purchase Order", "Purchase Invoice", "Purchase Receipt"]
|
||||||
|
|
||||||
if self.doctype in buying_doctypes:
|
if self.doctype in buying_doctypes:
|
||||||
to_disable = "Maintain same rate throughout Purchase cycle"
|
action = frappe.db.get_single_value("Buying Settings", "maintain_same_rate_action")
|
||||||
settings_page = "Buying Settings"
|
settings_doc = "Buying Settings"
|
||||||
else:
|
else:
|
||||||
to_disable = "Maintain same rate throughout Sales cycle"
|
action = frappe.db.get_single_value("Selling Settings", "maintain_same_rate_action")
|
||||||
settings_page = "Selling Settings"
|
settings_doc = "Selling Settings"
|
||||||
|
|
||||||
for ref_dt, ref_dn_field, ref_link_field in ref_details:
|
for ref_dt, ref_dn_field, ref_link_field in ref_details:
|
||||||
for d in self.get("items"):
|
for d in self.get("items"):
|
||||||
@ -132,11 +132,16 @@ class TransactionBase(StatusUpdater):
|
|||||||
ref_rate = frappe.db.get_value(ref_dt + " Item", d.get(ref_link_field), "rate")
|
ref_rate = frappe.db.get_value(ref_dt + " Item", d.get(ref_link_field), "rate")
|
||||||
|
|
||||||
if abs(flt(d.rate - ref_rate, d.precision("rate"))) >= .01:
|
if abs(flt(d.rate - ref_rate, d.precision("rate"))) >= .01:
|
||||||
frappe.msgprint(_("Row #{0}: Rate must be same as {1}: {2} ({3} / {4}) ")
|
if action == "Stop":
|
||||||
.format(d.idx, ref_dt, d.get(ref_dn_field), d.rate, ref_rate))
|
role_allowed_to_override = frappe.db.get_single_value(settings_doc, 'role_to_override_stop_action')
|
||||||
frappe.throw(_("To allow different rates, disable the {0} checkbox in {1}.")
|
|
||||||
.format(frappe.bold(_(to_disable)),
|
if role_allowed_to_override not in frappe.get_roles():
|
||||||
get_link_to_form(settings_page, settings_page, frappe.bold(settings_page))))
|
frappe.throw(_("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))
|
||||||
|
else:
|
||||||
|
frappe.msgprint(_("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), title=_("Warning"), indicator="orange")
|
||||||
|
|
||||||
|
|
||||||
def get_link_filters(self, for_doctype):
|
def get_link_filters(self, for_doctype):
|
||||||
if hasattr(self, "prev_link_mapper") and self.prev_link_mapper.get(for_doctype):
|
if hasattr(self, "prev_link_mapper") and self.prev_link_mapper.get(for_doctype):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user