feat: configurable action if the same purchase/selling rate is not maintained

This commit is contained in:
Rucha Mahabal
2021-03-11 17:49:32 +05:30
committed by Deepesh Garg
parent bcb7848c84
commit 52ac8484ff
3 changed files with 33 additions and 11 deletions

View File

@@ -13,6 +13,7 @@
"po_required",
"pr_required",
"maintain_same_rate",
"maintain_same_rate_action",
"allow_multiple_items",
"subcontract",
"backflush_raw_materials_of_subcontract_based_on",
@@ -89,6 +90,16 @@
{
"fieldname": "column_break_11",
"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"
}
],
"icon": "fa fa-cog",
@@ -96,7 +107,7 @@
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2020-10-13 12:00:23.276329",
"modified": "2021-03-11 17:31:21.293142",
"modified_by": "Administrator",
"module": "Buying",
"name": "Buying Settings",

View File

@@ -18,6 +18,7 @@
"dn_required",
"sales_update_frequency",
"maintain_same_sales_rate",
"maintain_same_rate_action",
"editable_price_list_rate",
"allow_multiple_items",
"allow_against_multiple_purchase_orders",
@@ -133,6 +134,16 @@
"fieldname": "hide_tax_id",
"fieldtype": "Check",
"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"
}
],
"icon": "fa fa-cog",
@@ -140,7 +151,7 @@
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2020-10-13 12:12:56.784014",
"modified": "2021-03-11 17:43:55.584040",
"modified_by": "Administrator",
"module": "Selling",
"name": "Selling Settings",

View File

@@ -120,11 +120,9 @@ class TransactionBase(StatusUpdater):
buying_doctypes = ["Purchase Order", "Purchase Invoice", "Purchase Receipt"]
if self.doctype in buying_doctypes:
to_disable = "Maintain same rate throughout Purchase cycle"
settings_page = "Buying Settings"
action = frappe.db.get_single_value("Buying Settings", "maintain_same_rate_action")
else:
to_disable = "Maintain same rate throughout Sales cycle"
settings_page = "Selling Settings"
action = frappe.db.get_single_value("Selling Settings", "maintain_same_rate_action")
for ref_dt, ref_dn_field, ref_link_field in ref_details:
for d in self.get("items"):
@@ -132,11 +130,13 @@ class TransactionBase(StatusUpdater):
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:
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))
frappe.throw(_("To allow different rates, disable the {0} checkbox in {1}.")
.format(frappe.bold(_(to_disable)),
get_link_to_form(settings_page, settings_page, frappe.bold(settings_page))))
if action == "Stop":
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):
if hasattr(self, "prev_link_mapper") and self.prev_link_mapper.get(for_doctype):