Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: SQL error on fetching RM in production plan #26592

Merged
merged 2 commits into from
Jul 22, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -747,9 +747,8 @@ def get_bin_details(row, company, for_warehouse=None, all_warehouse=False):
group by item_code, warehouse
""".format(conditions=conditions), { "item_code": row['item_code'] }, as_dict=1)

def get_warehouse_list(warehouses, warehouse_list=None):
if not warehouse_list:
warehouse_list = []
def get_warehouse_list(warehouses):
warehouse_list = []

if isinstance(warehouses, str):
warehouses = json.loads(warehouses)
Expand All @@ -761,23 +760,19 @@ def get_warehouse_list(warehouses, warehouse_list=None):
else:
warehouse_list.append(row.get("warehouse"))

return warehouse_list

@frappe.whitelist()
def get_items_for_material_requests(doc, warehouses=None, get_parent_warehouse_data=None):
if isinstance(doc, str):
doc = frappe._dict(json.loads(doc))

warehouse_list = []
if warehouses:
get_warehouse_list(warehouses, warehouse_list)

if warehouse_list:
warehouses = list(set(warehouse_list))
warehouses = list(set(get_warehouse_list(warehouses)))

if doc.get("for_warehouse") and not get_parent_warehouse_data and doc.get("for_warehouse") in warehouses:
warehouses.remove(doc.get("for_warehouse"))

warehouse_list = None

doc['mr_items'] = []

po_items = doc.get('po_items') if doc.get('po_items') else doc.get('items')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from erpnext.manufacturing.doctype.production_plan.production_plan import get_sales_orders
from erpnext.stock.doctype.stock_reconciliation.test_stock_reconciliation import create_stock_reconciliation
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
from erpnext.manufacturing.doctype.production_plan.production_plan import get_items_for_material_requests
from erpnext.manufacturing.doctype.production_plan.production_plan import get_items_for_material_requests, get_warehouse_list

class TestProductionPlan(unittest.TestCase):
def setUp(self):
Expand Down Expand Up @@ -251,6 +251,27 @@ def test_production_plan_with_multi_level_bom(self):
pln.cancel()
frappe.delete_doc("Production Plan", pln.name)

def test_get_warehouse_list_group(self):
"""Check if required warehouses are returned"""
warehouse_json = '[{\"warehouse\":\"_Test Warehouse Group - _TC\"}]'

warehouses = set(get_warehouse_list(warehouse_json))
expected_warehouses = {"_Test Warehouse Group-C1 - _TC", "_Test Warehouse Group-C2 - _TC"}

missing_warehouse = expected_warehouses - warehouses

self.assertTrue(len(missing_warehouse) == 0,
msg=f"Following warehouses were expected {', '.join(missing_warehouse)}")

def test_get_warehouse_list_single(self):
warehouse_json = '[{\"warehouse\":\"_Test Scrap Warehouse - _TC\"}]'

warehouses = set(get_warehouse_list(warehouse_json))
expected_warehouses = {"_Test Scrap Warehouse - _TC", }

self.assertEqual(warehouses, expected_warehouses)


def create_production_plan(**args):
args = frappe._dict(args)

Expand Down