Skip to content

Commit

Permalink
Merge pull request #36057 from frappe/mergify/bp/version-14-hotfix/pr…
Browse files Browse the repository at this point in the history
…-36001

fix: accepted warehouse and rejected warehouse can't be same (backport #36001)
  • Loading branch information
rohitwaghchaure authored Jul 10, 2023
2 parents 573183c + e55a264 commit 16943ac
Show file tree
Hide file tree
Showing 9 changed files with 49 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -547,6 +547,7 @@
"depends_on": "update_stock",
"fieldname": "rejected_warehouse",
"fieldtype": "Link",
"ignore_user_permissions": 1,
"label": "Rejected Warehouse",
"no_copy": 1,
"options": "Warehouse",
Expand Down Expand Up @@ -1573,7 +1574,7 @@
"idx": 204,
"is_submittable": 1,
"links": [],
"modified": "2023-04-29 12:57:50.832598",
"modified": "2023-07-04 17:23:59.145031",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Purchase Invoice",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,7 @@
{
"fieldname": "rejected_warehouse",
"fieldtype": "Link",
"ignore_user_permissions": 1,
"label": "Rejected Warehouse",
"options": "Warehouse"
},
Expand Down Expand Up @@ -881,7 +882,7 @@
"idx": 1,
"istable": 1,
"links": [],
"modified": "2023-07-02 18:39:41.495723",
"modified": "2023-07-04 17:22:21.501152",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Purchase Invoice Item",
Expand Down
17 changes: 11 additions & 6 deletions erpnext/controllers/buying_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -410,18 +410,23 @@ def validate_purchase_return(self):
# validate rate with ref PR

def validate_rejected_warehouse(self):
for d in self.get("items"):
if flt(d.rejected_qty) and not d.rejected_warehouse:
for item in self.get("items"):
if flt(item.rejected_qty) and not item.rejected_warehouse:
if self.rejected_warehouse:
d.rejected_warehouse = self.rejected_warehouse
item.rejected_warehouse = self.rejected_warehouse

if not d.rejected_warehouse:
if not item.rejected_warehouse:
frappe.throw(
_("Row #{0}: Rejected Warehouse is mandatory against rejected Item {1}").format(
d.idx, d.item_code
_("Row #{0}: Rejected Warehouse is mandatory for the rejected Item {1}").format(
item.idx, item.item_code
)
)

if item.get("rejected_warehouse") and (item.get("rejected_warehouse") == item.get("warehouse")):
frappe.throw(
_("Row #{0}: Accepted Warehouse and Rejected Warehouse cannot be same").format(item.idx)
)

# validate accepted and rejected qty
def validate_accepted_rejected_qty(self):
for d in self.get("items"):
Expand Down
5 changes: 3 additions & 2 deletions erpnext/stock/doctype/purchase_receipt/purchase_receipt.json
Original file line number Diff line number Diff line change
Expand Up @@ -437,6 +437,7 @@
{
"fieldname": "rejected_warehouse",
"fieldtype": "Link",
"ignore_user_permissions": 1,
"label": "Rejected Warehouse",
"no_copy": 1,
"oldfieldname": "rejected_warehouse",
Expand Down Expand Up @@ -1239,7 +1240,7 @@
"idx": 261,
"is_submittable": 1,
"links": [],
"modified": "2023-05-07 20:18:25.458185",
"modified": "2023-07-04 17:24:17.025390",
"modified_by": "Administrator",
"module": "Stock",
"name": "Purchase Receipt",
Expand Down Expand Up @@ -1308,4 +1309,4 @@
"timeline_field": "supplier",
"title_field": "title",
"track_changes": 1
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,15 @@ def test_serial_no_supplier(self):
pr.cancel()
self.assertFalse(frappe.db.get_value("Serial No", pr_row_1_serial_no, "warehouse"))

def test_rejected_warehouse_filter(self):
pr = frappe.copy_doc(test_records[0])
pr.get("items")[0].item_code = "_Test Serialized Item With Series"
pr.get("items")[0].qty = 3
pr.get("items")[0].rejected_qty = 2
pr.get("items")[0].received_qty = 5
pr.get("items")[0].rejected_warehouse = pr.get("items")[0].warehouse
self.assertRaises(frappe.ValidationError, pr.save)

def test_rejected_serial_no(self):
pr = frappe.copy_doc(test_records[0])
pr.get("items")[0].item_code = "_Test Serialized Item With Series"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -495,6 +495,7 @@
{
"fieldname": "rejected_warehouse",
"fieldtype": "Link",
"ignore_user_permissions": 1,
"label": "Rejected Warehouse",
"no_copy": 1,
"oldfieldname": "rejected_warehouse",
Expand Down Expand Up @@ -1022,7 +1023,7 @@
"idx": 1,
"istable": 1,
"links": [],
"modified": "2023-07-02 18:40:48.152637",
"modified": "2023-07-04 17:22:02.830029",
"modified_by": "Administrator",
"module": "Stock",
"name": "Purchase Receipt Item",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@
"description": "Sets 'Rejected Warehouse' in each row of the Items table.",
"fieldname": "rejected_warehouse",
"fieldtype": "Link",
"ignore_user_permissions": 1,
"label": "Rejected Warehouse",
"no_copy": 1,
"options": "Warehouse",
Expand Down Expand Up @@ -629,7 +630,7 @@
"in_create": 1,
"is_submittable": 1,
"links": [],
"modified": "2022-11-16 14:18:57.001239",
"modified": "2023-07-06 18:44:16.171842",
"modified_by": "Administrator",
"module": "Subcontracting",
"name": "Subcontracting Receipt",
Expand Down Expand Up @@ -698,4 +699,4 @@
"timeline_field": "supplier",
"title_field": "title",
"track_changes": 1
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -190,13 +190,23 @@ def calculate_items_qty_and_amount(self):
self.total = total_amount

def validate_rejected_warehouse(self):
if not self.rejected_warehouse:
for item in self.items:
if item.rejected_qty:
for item in self.items:
if flt(item.rejected_qty) and not item.rejected_warehouse:
if self.rejected_warehouse:
item.rejected_warehouse = self.rejected_warehouse

if not item.rejected_warehouse:
frappe.throw(
_("Rejected Warehouse is mandatory against rejected Item {0}").format(item.item_code)
_("Row #{0}: Rejected Warehouse is mandatory for the rejected Item {1}").format(
item.idx, item.item_code
)
)

if item.get("rejected_warehouse") and (item.get("rejected_warehouse") == item.get("warehouse")):
frappe.throw(
_("Row #{0}: Accepted Warehouse and Rejected Warehouse cannot be same").format(item.idx)
)

def validate_available_qty_for_consumption(self):
for item in self.get("supplied_items"):
precision = item.precision("consumed_qty")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,7 @@
"depends_on": "eval: !parent.is_return",
"fieldname": "rejected_warehouse",
"fieldtype": "Link",
"ignore_user_permissions": 1,
"label": "Rejected Warehouse",
"no_copy": 1,
"options": "Warehouse",
Expand Down Expand Up @@ -476,7 +477,7 @@
"idx": 1,
"istable": 1,
"links": [],
"modified": "2022-11-16 14:21:26.125815",
"modified": "2023-07-06 18:44:45.599761",
"modified_by": "Administrator",
"module": "Subcontracting",
"name": "Subcontracting Receipt Item",
Expand All @@ -487,4 +488,4 @@
"sort_field": "modified",
"sort_order": "DESC",
"states": []
}
}

0 comments on commit 16943ac

Please sign in to comment.