From ffb411d9e2a0162d6cf168de504bbd990ec0e0f7 Mon Sep 17 00:00:00 2001 From: deepeshgarg007 Date: Thu, 27 Dec 2018 14:12:05 +0530 Subject: [PATCH 1/3] Validation while updating items in sales order --- erpnext/controllers/accounts_controller.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 86ceb2e4ab..56ae25e92b 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -1073,6 +1073,10 @@ def update_child_qty_rate(parent_doctype, trans_items, parent_doctype_name): data = json.loads(trans_items) for d in data: child_item = frappe.get_doc(parent_doctype + ' Item', d.get("docname")) + + if flt(d.get("qty")) < child_item.delivered_qty: + frappe.throw(_("Cannot set quantity less than delivered quantity")) + child_item.qty = flt(d.get("qty")) if child_item.billed_amt > (flt(d.get("rate")) * flt(d.get("qty"))): From 77cde832d6a180b167935f6d536fd5c14b3ac591 Mon Sep 17 00:00:00 2001 From: deepeshgarg007 Date: Thu, 27 Dec 2018 15:56:51 +0530 Subject: [PATCH 2/3] Added validation for update items in purchase order as well --- erpnext/controllers/accounts_controller.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 56ae25e92b..fe6b39dd05 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -1074,9 +1074,12 @@ def update_child_qty_rate(parent_doctype, trans_items, parent_doctype_name): for d in data: child_item = frappe.get_doc(parent_doctype + ' Item', d.get("docname")) - if flt(d.get("qty")) < child_item.delivered_qty: + if parent_doctype == "Sales Order" and flt(d.get("qty")) < child_item.delivered_qty: frappe.throw(_("Cannot set quantity less than delivered quantity")) + if parent_doctype == "Purchase Order" and flt(d.get("qty")) < child_item.received_qty: + frappe.throw(_("Cannot set quantity less than received quantity")) + child_item.qty = flt(d.get("qty")) if child_item.billed_amt > (flt(d.get("rate")) * flt(d.get("qty"))): From 318dc422bccf53211f5030a057a0150d44d2907a Mon Sep 17 00:00:00 2001 From: deepeshgarg007 Date: Tue, 1 Jan 2019 18:30:33 +0530 Subject: [PATCH 3/3] Updated test Cases for update_child_rate_qty --- erpnext/selling/doctype/sales_order/test_sales_order.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py index 65e91bc247..0eb19e3417 100644 --- a/erpnext/selling/doctype/sales_order/test_sales_order.py +++ b/erpnext/selling/doctype/sales_order/test_sales_order.py @@ -286,6 +286,9 @@ class TestSalesOrder(unittest.TestCase): self.assertEqual(get_reserved_qty(), existing_reserved_qty + 3) + trans_item = json.dumps([{'item_code' : '_Test Item', 'rate' : 200, 'qty' : 2, 'docname': so.items[0].name}]) + self.assertRaises(frappe.ValidationError, update_child_qty_rate,'Sales Order', trans_item, so.name) + def test_warehouse_user(self): frappe.permissions.add_user_permission("Warehouse", "_Test Warehouse 1 - _TC", "test@example.com") frappe.permissions.add_user_permission("Warehouse", "_Test Warehouse 2 - _TC1", "test2@example.com") @@ -760,7 +763,7 @@ def make_sales_order(**args): }) so.delivery_date = add_days(so.transaction_date, 10) - + if not args.do_not_save: so.insert() if not args.do_not_submit: