From 99892c7ce746ea020af202a7fb4de2f5a20b765f Mon Sep 17 00:00:00 2001 From: Saurabh Date: Sun, 26 Jun 2016 22:32:05 +0530 Subject: [PATCH 1/2] [fix] provision to convert group to ledger and vice versa --- erpnext/accounts/doctype/account/account.js | 2 +- erpnext/patches.txt | 1 + .../v7_0/set_is_group_for_warehouse.py | 6 ++ erpnext/stock/doctype/warehouse/warehouse.js | 48 +++++++++---- .../stock/doctype/warehouse/warehouse.json | 57 +++++++-------- erpnext/stock/doctype/warehouse/warehouse.py | 71 ++++++++++++++++--- 6 files changed, 134 insertions(+), 51 deletions(-) create mode 100644 erpnext/patches/v7_0/set_is_group_for_warehouse.py diff --git a/erpnext/accounts/doctype/account/account.js b/erpnext/accounts/doctype/account/account.js index 9364b59f95..c3a01b941b 100644 --- a/erpnext/accounts/doctype/account/account.js +++ b/erpnext/accounts/doctype/account/account.js @@ -63,7 +63,7 @@ cur_frm.cscript.add_toolbar_buttons = function(doc) { frappe.set_route("query-report", "General Ledger"); }, __("View")); - cur_frm.add_custom_button(__('Group to Group'), + cur_frm.add_custom_button(__('Non-Group to Group'), function() { cur_frm.cscript.convert_to_group(); }, 'icon-retweet', 'btn-default') } } diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 0af9713b86..bcbe2dabf9 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -281,3 +281,4 @@ erpnext.patches.v7_0.convert_timelogbatch_to_timesheet erpnext.patches.v7_0.convert_timelog_to_timesheet erpnext.patches.v7_0.move_timelogbatch_from_salesinvoiceitem_to_salesinvoicetimesheet erpnext.patches.v7_0.remove_doctypes_and_reports +erpnext.patches.v7_0.set_is_group_for_warehouse diff --git a/erpnext/patches/v7_0/set_is_group_for_warehouse.py b/erpnext/patches/v7_0/set_is_group_for_warehouse.py new file mode 100644 index 0000000000..d74b97b4e1 --- /dev/null +++ b/erpnext/patches/v7_0/set_is_group_for_warehouse.py @@ -0,0 +1,6 @@ +import frappe + +def execute(): + frappe.reload_doc("stock", "doctype", "warehouse") + + frappe.db.sql("""update tabWarehouse set is_group = if (is_group="Yes", 1, 0)""") \ No newline at end of file diff --git a/erpnext/stock/doctype/warehouse/warehouse.js b/erpnext/stock/doctype/warehouse/warehouse.js index b7a3a34c6d..5983014855 100644 --- a/erpnext/stock/doctype/warehouse/warehouse.js +++ b/erpnext/stock/doctype/warehouse/warehouse.js @@ -9,29 +9,35 @@ frappe.ui.form.on("Warehouse", { frm.add_custom_button(__("Stock Balance"), function() { frappe.set_route("query-report", "Stock Balance", {"warehouse": frm.doc.name}); }); - if(frm.doc.__onload && frm.doc.__onload.account) { - frm.add_custom_button(__("General Ledger"), function() { - frappe.route_options = { - "account": frm.doc.__onload.account, - "company": frm.doc.company - } - frappe.set_route("query-report", "General Ledger"); - }); - } - + + if (cint(frm.doc.is_group) == 1) { + frm.add_custom_button(__('Group to Non-Group'), + function() { convert_to_group_or_ledger(frm); }, 'icon-retweet', 'btn-default') + } else if (cint(frm.doc.is_group) == 0) { + if(frm.doc.__onload && frm.doc.__onload.account) { + frm.add_custom_button(__("General Ledger"), function() { + frappe.route_options = { + "account": frm.doc.__onload.account, + "company": frm.doc.company + } + frappe.set_route("query-report", "General Ledger"); + }); + } + + frm.add_custom_button(__('Non-Group to Group'), + function() { convert_to_group_or_ledger(frm); }, 'icon-retweet', 'btn-default') + } + frm.fields_dict['parent_warehouse'].get_query = function(doc) { return { filters: { - "is_group": "Yes", + "is_group": 1, } } } } }); - - - cur_frm.set_query("create_account_under", function() { return { filters: { @@ -40,3 +46,17 @@ cur_frm.set_query("create_account_under", function() { } } }) + +function convert_to_group_or_ledger(frm){ + frappe.call({ + method:"erpnext.stock.doctype.warehouse.warehouse.convert_to_group_or_ledger", + args: { + docname: frm.doc.name, + is_group: frm.doc.is_group + }, + callback: function(){ + frm.refresh(); + } + + }) +} \ No newline at end of file diff --git a/erpnext/stock/doctype/warehouse/warehouse.json b/erpnext/stock/doctype/warehouse/warehouse.json index 1a3a97f1ff..a32ec1f93e 100644 --- a/erpnext/stock/doctype/warehouse/warehouse.json +++ b/erpnext/stock/doctype/warehouse/warehouse.json @@ -35,6 +35,33 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "default": "1", + "fieldname": "is_group", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 1, + "label": "Is Group", + "length": 0, + "no_copy": 0, + "options": "", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_on_submit": 0, "bold": 0, @@ -473,32 +500,6 @@ "set_only_once": 0, "unique": 0 }, - { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "fieldname": "is_group", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 1, - "label": "Has Child Node", - "length": 0, - "no_copy": 0, - "options": "\nYes\nNo", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, { "allow_on_submit": 0, "bold": 0, @@ -587,8 +588,8 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2016-06-25 18:21:05.175172", - "modified_by": "Administrator", + "modified": "2016-06-26 17:39:16.856800", + "modified_by": "s@s.com", "module": "Stock", "name": "Warehouse", "owner": "Administrator", diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py index ed68065626..0ceaeda23c 100644 --- a/erpnext/stock/doctype/warehouse/warehouse.py +++ b/erpnext/stock/doctype/warehouse/warehouse.py @@ -60,7 +60,7 @@ class Warehouse(NestedSet): 'account_name': self.warehouse_name, 'parent_account': self.parent_warehouse if self.parent_warehouse \ else self.create_account_under, - 'is_group': 1 if self.is_group=="Yes" else 0 , + 'is_group': self.is_group, 'company':self.company, "account_type": "Stock", "warehouse": self.name, @@ -113,14 +113,21 @@ class Warehouse(NestedSet): if warehouse_account: frappe.delete_doc("Account", warehouse_account) - if frappe.db.sql("""select name from `tabStock Ledger Entry` - where warehouse = %s""", self.name): + if self.check_sle_exists(): throw(_("Warehouse can not be deleted as stock ledger entry exists for this warehouse.")) - if frappe.db.sql("""select name from `tabWarehouse` where parent_warehouse = %s""", self.name): + if self.check_if_child_exists(): throw(_("Child warehouse exists for this warehouse. You can not delete this warehouse.")) self.update_nsm_model() + + def check_if_sle_exists(self): + return frappe.db.sql("""select name from `tabStock Ledger Entry` + where warehouse = %s""", self.name) + + def check_if_child_exists(self): + return frappe.db.sql("""select name from `tabWarehouse` + where parent_warehouse = %s""", self.name) def before_rename(self, olddn, newdn, merge=False): # Add company abbr if not provided @@ -159,9 +166,19 @@ class Warehouse(NestedSet): from erpnext.setup.doctype.company.company import get_name_with_abbr return get_name_with_abbr(dn, self.company) - def get_account(self, warehouse): - return frappe.db.get_value("Account", {"account_type": "Stock", - "warehouse": warehouse, "company": self.company, "is_group": 0}) + def get_account(self, warehouse=None): + filters = { + "account_type": "Warehouse", + "company": self.company, + "is_group": self.is_group + } + + if warehouse: + filters.update({"warehouse": warehouse}) + else: + filters.update({"account_name": self.warehouse_name}) + + return frappe.db.get_value("Account", filters) def after_rename(self, olddn, newdn, merge=False): if merge: @@ -181,6 +198,38 @@ class Warehouse(NestedSet): frappe.db.set_value("Stock Settings", None, "allow_negative_stock", existing_allow_negative_stock) frappe.db.auto_commit_on_many_writes = 0 + + def convert_to_group_or_ledger(self): + if self.is_group: + self.convert_to_ledger() + else: + self.convert_to_group() + + def convert_to_ledger(self): + if self.check_if_child_exists(): + frappe.throw(_("Warehouses with child nodes cannot be converted to ledger")) + elif self.check_if_sle_exists(): + throw(_("Warehouses with existing transaction can not be converted to ledger.")) + else: + account_name = self.get_account() + if account_name: + frappe.get_doc("Account", account_name).convert_group_to_ledger() + + self.is_group = 0 + self.save() + return 1 + + def convert_to_group(self): + if self.check_if_sle_exists(): + throw(_("Warehouses with existing transaction can not be converted to group.")) + else: + account_name = self.get_account(self.name) + if account_name: + frappe.get_doc("Account", account_name).convert_ledger_to_group() + + self.is_group = 1 + self.save() + return 1 @frappe.whitelist() def get_children(): @@ -195,7 +244,7 @@ def get_children(): parent = "" warehouses = frappe.db.sql("""select name as value, - if(is_group='Yes', 1, 0) as expandable + is_group as expandable from `tab{doctype}` where docstatus < 2 and ifnull(`{parent_field}`,'') = %s and `company` = %s @@ -229,3 +278,9 @@ def add_node(): }) doc.save() + +@frappe.whitelist() +def convert_to_group_or_ledger(): + args = frappe.form_dict + return frappe.get_doc("Warehouse", args.docname).convert_to_group_or_ledger() + \ No newline at end of file From 93d68ac0c248044587f4ec08c0ae306d37ea3309 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Sun, 26 Jun 2016 22:50:11 +0530 Subject: [PATCH 2/2] [fixes] change is group to check box --- erpnext/accounts/doctype/account/account.py | 4 ++-- .../v7_0/create_warehouse_nestedset.py | 4 ++-- .../v7_0/set_is_group_for_warehouse.py | 4 ++-- erpnext/public/js/queries.js | 2 +- erpnext/setup/doctype/company/company.py | 10 +++++----- erpnext/stock/doctype/item/item.js | 6 +++--- .../test_stock_reconciliation.py | 2 +- .../stock/doctype/warehouse/test_records.json | 20 +++++++++---------- .../stock/doctype/warehouse/test_warehouse.py | 4 ++-- erpnext/stock/doctype/warehouse/warehouse.js | 2 ++ erpnext/stock/doctype/warehouse/warehouse.py | 14 ++++++++----- .../stock/doctype/warehouse/warehouse_tree.js | 6 ++++++ erpnext/stock/utils.py | 4 ++-- 13 files changed, 47 insertions(+), 35 deletions(-) diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py index 95209288dc..cc86159fbb 100644 --- a/erpnext/accounts/doctype/account/account.py +++ b/erpnext/accounts/doctype/account/account.py @@ -95,7 +95,7 @@ class Account(Document): if self.check_gle_exists(): throw(_("Account with existing transaction cannot be converted to ledger")) elif self.is_group: - if self.account_type: + if self.account_type and not self.flags.exclude_account_type_check: throw(_("Cannot covert to Group because Account Type is selected.")) elif self.check_if_child_exists(): throw(_("Account with child nodes cannot be set as ledger")) @@ -139,7 +139,7 @@ class Account(Document): def convert_ledger_to_group(self): if self.check_gle_exists(): throw(_("Account with existing transaction can not be converted to group.")) - elif self.account_type: + elif self.account_type and not self.flags.exclude_account_type_check: throw(_("Cannot covert to Group because Account Type is selected.")) else: self.is_group = 1 diff --git a/erpnext/patches/v7_0/create_warehouse_nestedset.py b/erpnext/patches/v7_0/create_warehouse_nestedset.py index 80dbf2ec1c..aaccfb9667 100644 --- a/erpnext/patches/v7_0/create_warehouse_nestedset.py +++ b/erpnext/patches/v7_0/create_warehouse_nestedset.py @@ -15,7 +15,7 @@ def execute(): def set_parent_to_warehouses(warehouse, company): warehouse = frappe.get_doc("Warehouse", warehouse.name) - warehouse.is_group = "Yes" if warehouse.is_group == "Yes" else "No" + warehouse.is_group = warehouse.is_group if not warehouse.parent_warehouse and warehouse.name != "{0} - {1}".format(_("All Warehouses"), company.abbr): warehouse.parent_warehouse = "{0} - {1}".format(_("All Warehouses"), company.abbr) @@ -42,7 +42,7 @@ def create_default_warehouse_group(company): frappe.get_doc({ "doctype": "Warehouse", "warehouse_name": _("All Warehouses"), - "is_group": "Yes", + "is_group": 1, "company": company.name, "parent_warehouse": "" }).insert(ignore_permissions=True) \ No newline at end of file diff --git a/erpnext/patches/v7_0/set_is_group_for_warehouse.py b/erpnext/patches/v7_0/set_is_group_for_warehouse.py index d74b97b4e1..d3aca216cb 100644 --- a/erpnext/patches/v7_0/set_is_group_for_warehouse.py +++ b/erpnext/patches/v7_0/set_is_group_for_warehouse.py @@ -2,5 +2,5 @@ import frappe def execute(): frappe.reload_doc("stock", "doctype", "warehouse") - - frappe.db.sql("""update tabWarehouse set is_group = if (is_group="Yes", 1, 0)""") \ No newline at end of file + frappe.db.sql("""update tabWarehouse + set is_group = if ((ifnull(is_group, "No") = "Yes" or ifnull(is_group, 0) = 1), 1, 0)""") \ No newline at end of file diff --git a/erpnext/public/js/queries.js b/erpnext/public/js/queries.js index acc0409038..c1f09a5103 100644 --- a/erpnext/public/js/queries.js +++ b/erpnext/public/js/queries.js @@ -73,7 +73,7 @@ $.extend(erpnext.queries, { return { filters: [ ["Warehouse", "company", "in", ["", cstr(doc.company)]], - ["Warehouse", "is_group", "=", "No"] + ["Warehouse", "is_group", "=",0] ] } diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py index 7d8829731d..6b66324554 100644 --- a/erpnext/setup/doctype/company/company.py +++ b/erpnext/setup/doctype/company/company.py @@ -88,10 +88,10 @@ class Company(Document): def create_default_warehouses(self): for wh_detail in [ - {"warehouse_name": _("All Warehouses"), "is_group": "Yes"}, - {"warehouse_name": _("Stores"), "is_group": "No"}, - {"warehouse_name": _("Work In Progress"), "is_group": "No"}, - {"warehouse_name": _("Finished Goods"), "is_group": "No"}]: + {"warehouse_name": _("All Warehouses"), "is_group": 1}, + {"warehouse_name": _("Stores"), "is_group": 0}, + {"warehouse_name": _("Work In Progress"), "is_group": 0}, + {"warehouse_name": _("Finished Goods"), "is_group": 0}]: if not frappe.db.exists("Warehouse", "{0} - {1}".format(wh_detail["warehouse_name"], self.abbr)): stock_group = frappe.db.get_value("Account", {"account_type": "Stock", @@ -103,7 +103,7 @@ class Company(Document): "is_group": wh_detail["is_group"], "company": self.name, "parent_warehouse": "{0} - {1}".format(_("All Warehouses"), self.abbr) \ - if wh_detail["is_group"] == "No" else "", + if not wh_detail["is_group"] else "", "create_account_under": stock_group }) warehouse.flags.ignore_permissions = True diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js index f35fa58508..5bb00614c6 100644 --- a/erpnext/stock/doctype/item/item.js +++ b/erpnext/stock/doctype/item/item.js @@ -163,13 +163,13 @@ $.extend(erpnext.item, { frm.fields_dict['default_warehouse'].get_query = function(doc) { return { - filters: { "is_group": "No" } + filters: { "is_group": 0 } } } frm.fields_dict.reorder_levels.grid.get_field("warehouse_group").get_query = function(doc, cdt, cdn) { return { - filters: { "is_group": "Yes" } + filters: { "is_group": 1 } } } @@ -177,7 +177,7 @@ $.extend(erpnext.item, { var d = locals[cdt][cdn]; return { filters: { - "is_group": "No", + "is_group": 0, "parent_warehouse": d.warehouse_group } } diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py index 9cc27b7e20..f9629a1ff2 100644 --- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py +++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py @@ -117,7 +117,7 @@ def set_valuation_method(item_code, valuation_method): frappe.db.set_value("Item", item_code, "valuation_method", valuation_method) for warehouse in frappe.get_all("Warehouse", filters={"company": "_Test Company"}, fields=["name", "is_group"]): - if warehouse.is_group == "No": + if not warehouse.is_group: update_entries_after({ "item_code": item_code, "warehouse": warehouse.name diff --git a/erpnext/stock/doctype/warehouse/test_records.json b/erpnext/stock/doctype/warehouse/test_records.json index c1dad5cfd0..4dd9f6b46a 100644 --- a/erpnext/stock/doctype/warehouse/test_records.json +++ b/erpnext/stock/doctype/warehouse/test_records.json @@ -4,67 +4,67 @@ "create_account_under": "Stock Assets - _TC", "doctype": "Warehouse", "warehouse_name": "_Test Warehouse", - "is_group": "No" + "is_group": 0 }, { "company": "_Test Company", "create_account_under": "Stock Assets - _TC", "doctype": "Warehouse", "warehouse_name": "_Test Warehouse", - "is_group": "No" + "is_group": 0 }, { "company": "_Test Company", "create_account_under": "Fixed Assets - _TC", "doctype": "Warehouse", "warehouse_name": "_Test Warehouse 1", - "is_group": "No" + "is_group": 0 }, { "company": "_Test Company", "create_account_under": "Fixed Assets - _TC", "doctype": "Warehouse", "warehouse_name": "_Test Warehouse 2", - "is_group": "No" + "is_group": 0 }, { "company": "_Test Company", "create_account_under": "Stock Assets - _TC", "doctype": "Warehouse", "warehouse_name": "_Test Rejected Warehouse", - "is_group": "No" + "is_group": 0 }, { "company": "_Test Company 1", "create_account_under": "Stock Assets - _TC1", "doctype": "Warehouse", "warehouse_name": "_Test Warehouse 2", - "is_group": "No" + "is_group": 0 }, { "company": "_Test Company", "doctype": "Warehouse", "warehouse_name": "_Test Warehouse No Account", - "is_group": "No" + "is_group": 0 }, { "company": "_Test Company", "doctype": "Warehouse", "warehouse_name": "_Test Warehouse Group", - "is_group": "Yes" + "is_group": 1 }, { "company": "_Test Company", "doctype": "Warehouse", "warehouse_name": "_Test Warehouse Group-C1", - "is_group": "No", + "is_group": 0, "parent_warehouse": "_Test Warehouse Group - _TC" }, { "company": "_Test Company", "doctype": "Warehouse", "warehouse_name": "_Test Warehouse Group-C2", - "is_group": "No", + "is_group": 0, "parent_warehouse": "_Test Warehouse Group - _TC" } ] diff --git a/erpnext/stock/doctype/warehouse/test_warehouse.py b/erpnext/stock/doctype/warehouse/test_warehouse.py index b6eaa13602..223258430f 100644 --- a/erpnext/stock/doctype/warehouse/test_warehouse.py +++ b/erpnext/stock/doctype/warehouse/test_warehouse.py @@ -10,7 +10,7 @@ test_records = frappe.get_test_records('Warehouse') class TestWarehouse(unittest.TestCase): def test_parent_warehouse(self): parent_warehouse = frappe.get_doc("Warehouse", "_Test Warehouse Group - _TC") - self.assertEquals(parent_warehouse.is_group, "Yes") + self.assertEquals(parent_warehouse.is_group, 1) def test_warehouse_hierarchy(self): p_warehouse = frappe.get_doc("Warehouse", "_Test Warehouse Group - _TC") @@ -20,6 +20,6 @@ class TestWarehouse(unittest.TestCase): for child_warehouse in child_warehouses: self.assertEquals(p_warehouse.name, child_warehouse.parent_warehouse) - self.assertEquals(child_warehouse.is_group, "No") + self.assertEquals(child_warehouse.is_group, 0) diff --git a/erpnext/stock/doctype/warehouse/warehouse.js b/erpnext/stock/doctype/warehouse/warehouse.js index 5983014855..8b1b679fb6 100644 --- a/erpnext/stock/doctype/warehouse/warehouse.js +++ b/erpnext/stock/doctype/warehouse/warehouse.js @@ -27,6 +27,8 @@ frappe.ui.form.on("Warehouse", { frm.add_custom_button(__('Non-Group to Group'), function() { convert_to_group_or_ledger(frm); }, 'icon-retweet', 'btn-default') } + + cur_frm.toggle_enable(['is_group', 'company'], false); frm.fields_dict['parent_warehouse'].get_query = function(doc) { return { diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py index 0ceaeda23c..3b50f30674 100644 --- a/erpnext/stock/doctype/warehouse/warehouse.py +++ b/erpnext/stock/doctype/warehouse/warehouse.py @@ -50,7 +50,7 @@ class Warehouse(NestedSet): def create_account_head(self): if cint(frappe.defaults.get_global_default("auto_accounting_for_stock")): - if not self.get_account(self.name): + if not self.get_account(): if self.get("__islocal") or not frappe.db.get_value( "Stock Ledger Entry", {"warehouse": self.name}): @@ -168,7 +168,7 @@ class Warehouse(NestedSet): def get_account(self, warehouse=None): filters = { - "account_type": "Warehouse", + "account_type": "Stock", "company": self.company, "is_group": self.is_group } @@ -213,7 +213,9 @@ class Warehouse(NestedSet): else: account_name = self.get_account() if account_name: - frappe.get_doc("Account", account_name).convert_group_to_ledger() + doc = frappe.get_doc("Account", account_name) + doc.warehouse = self.name + doc.convert_group_to_ledger() self.is_group = 0 self.save() @@ -225,8 +227,10 @@ class Warehouse(NestedSet): else: account_name = self.get_account(self.name) if account_name: - frappe.get_doc("Account", account_name).convert_ledger_to_group() - + doc = frappe.get_doc("Account", account_name) + doc.flags.exclude_account_type_check = True + doc.convert_ledger_to_group() + self.is_group = 1 self.save() return 1 diff --git a/erpnext/stock/doctype/warehouse/warehouse_tree.js b/erpnext/stock/doctype/warehouse/warehouse_tree.js index 03614931a5..9069160b41 100644 --- a/erpnext/stock/doctype/warehouse/warehouse_tree.js +++ b/erpnext/stock/doctype/warehouse/warehouse_tree.js @@ -10,6 +10,12 @@ frappe.treeview_settings['Warehouse'] = { label: __("Company"), default: frappe.defaults.get_default('company') ? frappe.defaults.get_default('company'): "" }], + fields:[ + {fieldtype:'Data', fieldname: 'name_field', + label:__('New Warehouse Name'), reqd:true}, + {fieldtype:'Check', fieldname:'is_group', label:__('Group Node'), + description: __("Further nodes can be only created under 'Group' type nodes")} + ], onrender: function(node) { if (node.data && node.data.balance!==undefined) { $('' diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py index 51d82a6dcc..6797f8e04b 100644 --- a/erpnext/stock/utils.py +++ b/erpnext/stock/utils.py @@ -18,7 +18,7 @@ def get_stock_value_on(warehouse=None, posting_date=None, item_code=None): lft, rgt, is_group = frappe.db.get_value("Warehouse", warehouse, ["lft", "rgt", "is_group"]) - if is_group == "Yes": + if is_group: values.extend([lft, rgt]) condition += "and exists (\ select name from `tabWarehouse` wh where wh.name = sle.warehouse\ @@ -189,6 +189,6 @@ def validate_warehouse_company(warehouse, company): InvalidWarehouseCompany) def is_group_warehouse(warehouse): - if frappe.db.get_value("Warehouse", warehouse, "is_group") == "Yes": + if frappe.db.get_value("Warehouse", warehouse, "is_group"): frappe.throw(_("Group node warehouse is not allowed to select for transactions")) \ No newline at end of file