mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-20 03:47:11 +00:00
Merge pull request #59162 from frappe/mergify/bp/version-15-hotfix/pr-59142
fix: validate shipping rule account company (backport #59142)
This commit is contained in:
@@ -9,10 +9,15 @@ frappe.ui.form.on("Shipping Rule", {
|
|||||||
},
|
},
|
||||||
|
|
||||||
company: function (frm) {
|
company: function (frm) {
|
||||||
|
if (frm.previous_company !== frm.doc.company) {
|
||||||
|
frm.previous_company = frm.doc.company;
|
||||||
|
frm.set_value("account", "");
|
||||||
|
}
|
||||||
erpnext.accounts.dimensions.update_dimension(frm, frm.doctype);
|
erpnext.accounts.dimensions.update_dimension(frm, frm.doctype);
|
||||||
},
|
},
|
||||||
|
|
||||||
refresh: function (frm) {
|
refresh: function (frm) {
|
||||||
|
frm.previous_company = frm.doc.company;
|
||||||
frm.set_query("account", function () {
|
frm.set_query("account", function () {
|
||||||
return {
|
return {
|
||||||
filters: {
|
filters: {
|
||||||
|
|||||||
@@ -52,10 +52,23 @@ class ShippingRule(Document):
|
|||||||
# end: auto-generated types
|
# end: auto-generated types
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
|
self.validate_account_company()
|
||||||
self.validate_from_to_values()
|
self.validate_from_to_values()
|
||||||
self.sort_shipping_rule_conditions()
|
self.sort_shipping_rule_conditions()
|
||||||
self.validate_overlapping_shipping_rule_conditions()
|
self.validate_overlapping_shipping_rule_conditions()
|
||||||
|
|
||||||
|
def validate_account_company(self):
|
||||||
|
if not self.company or not self.account:
|
||||||
|
return
|
||||||
|
|
||||||
|
if frappe.get_cached_value("Account", self.account, "company") != self.company:
|
||||||
|
throw(
|
||||||
|
_("Shipping Account {0} does not belong to Company {1}").format(
|
||||||
|
frappe.bold(self.account), frappe.bold(self.company)
|
||||||
|
),
|
||||||
|
title=_("Invalid Shipping Account"),
|
||||||
|
)
|
||||||
|
|
||||||
def validate_from_to_values(self):
|
def validate_from_to_values(self):
|
||||||
if self.calculate_based_on == "Fixed":
|
if self.calculate_based_on == "Fixed":
|
||||||
if self.conditions:
|
if self.conditions:
|
||||||
|
|||||||
@@ -15,6 +15,39 @@ test_records = frappe.get_test_records("Shipping Rule")
|
|||||||
|
|
||||||
|
|
||||||
class TestShippingRule(unittest.TestCase):
|
class TestShippingRule(unittest.TestCase):
|
||||||
|
def test_account_company_on_insert(self):
|
||||||
|
for rule_type in ("Selling", "Buying"):
|
||||||
|
with self.subTest(shipping_rule_type=rule_type):
|
||||||
|
shipping_rule = frappe.copy_doc(test_records[0])
|
||||||
|
shipping_rule.label = f"{rule_type} Delivery"
|
||||||
|
shipping_rule.shipping_rule_type = rule_type
|
||||||
|
shipping_rule.company = "_Test Company 1"
|
||||||
|
shipping_rule.cost_center = None
|
||||||
|
with self.assertRaisesRegex(frappe.ValidationError, "does not belong to Company"):
|
||||||
|
shipping_rule.insert()
|
||||||
|
|
||||||
|
def test_account_company_on_update(self):
|
||||||
|
shipping_rule = frappe.copy_doc(test_records[0])
|
||||||
|
shipping_rule.label = "Standard Delivery"
|
||||||
|
shipping_rule.insert()
|
||||||
|
shipping_rule.company = "_Test Company 1"
|
||||||
|
shipping_rule.cost_center = None
|
||||||
|
with self.assertRaisesRegex(frappe.ValidationError, "does not belong to Company"):
|
||||||
|
shipping_rule.save()
|
||||||
|
|
||||||
|
shipping_rule.reload()
|
||||||
|
shipping_rule.company = "_Test Company 1"
|
||||||
|
shipping_rule.account = "_Test Account Shipping Charges - _TC1"
|
||||||
|
shipping_rule.cost_center = None
|
||||||
|
shipping_rule.save()
|
||||||
|
shipping_rule.reload()
|
||||||
|
self.assertEqual(shipping_rule.company, "_Test Company 1")
|
||||||
|
self.assertEqual(shipping_rule.account, "_Test Account Shipping Charges - _TC1")
|
||||||
|
|
||||||
|
shipping_rule.account = "_Test Account Shipping Charges - _TC"
|
||||||
|
with self.assertRaisesRegex(frappe.ValidationError, "does not belong to Company"):
|
||||||
|
shipping_rule.save()
|
||||||
|
|
||||||
def test_from_greater_than_to(self):
|
def test_from_greater_than_to(self):
|
||||||
shipping_rule = frappe.copy_doc(test_records[0])
|
shipping_rule = frappe.copy_doc(test_records[0])
|
||||||
shipping_rule.name = test_records[0].get("name")
|
shipping_rule.name = test_records[0].get("name")
|
||||||
|
|||||||
Reference in New Issue
Block a user