[Fix] Item group missing in the POS profile
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.js b/erpnext/accounts/doctype/pos_profile/pos_profile.js
index bbbab73..c1aa0c3 100755
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.js
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.js
@@ -26,30 +26,6 @@
});
});
-frappe.ui.form.on("POS Profile", {
- setup: function(frm) {
- frm.trigger("get_query_for_groups")
- },
-
- get_query_for_groups: function(frm) {
- frm.fields_dict['item_groups'].grid.get_field('item_group').get_query = function(frm, cdt, cdn) {
- return{
- filters: {
- 'is_group': 0
- }
- }
- }
-
- frm.fields_dict['customer_groups'].grid.get_field('customer_group').get_query = function(frm, cdt, cdn) {
- return{
- filters: {
- 'is_group': 0
- }
- }
- }
- }
-})
-
// Income Account
// --------------------------------
cur_frm.fields_dict['income_account'].get_query = function(doc,cdt,cdn) {
diff --git a/erpnext/accounts/doctype/sales_invoice/pos.py b/erpnext/accounts/doctype/sales_invoice/pos.py
index 4e4ad78..75d98c5 100644
--- a/erpnext/accounts/doctype/sales_invoice/pos.py
+++ b/erpnext/accounts/doctype/sales_invoice/pos.py
@@ -115,9 +115,9 @@
item_groups = []
if pos_profile.get('item_groups'):
# Get items based on the item groups defined in the POS profile
-
- cond = "item_group in (%s)"%(', '.join(['%s']*len(pos_profile.get('item_groups'))))
- item_groups = [d.item_group for d in pos_profile.get('item_groups')]
+ for d in pos_profile.get('item_groups'):
+ item_groups.extend(get_child_nodes('Item Group', d.item_group))
+ cond = "item_group in (%s)"%(', '.join(['%s']*len(item_groups)))
return frappe.db.sql("""
select
@@ -135,14 +135,19 @@
customer_groups = []
if pos_profile.get('customer_groups'):
# Get customers based on the customer groups defined in the POS profile
-
- cond = "customer_group in (%s)"%(', '.join(['%s']*len(pos_profile.get('customer_groups'))))
- customer_groups = [d.customer_group for d in pos_profile.get('customer_groups')]
+ for d in pos_profile.get('customer_groups'):
+ customer_groups.extend(get_child_nodes('Customer Group', d.customer_group))
+ cond = "customer_group in (%s)"%(', '.join(['%s']*len(customer_groups)))
return frappe.db.sql(""" select name, customer_name, customer_group,
territory from tabCustomer where disabled = 0
and {cond}""".format(cond=cond), tuple(customer_groups), as_dict=1) or {}
+def get_child_nodes(group_type, root):
+ lft, rgt = frappe.db.get_value(group_type, root, ["lft", "rgt"])
+ return frappe.db.sql_list(""" Select name from `tab{tab}` where
+ lft >= {lft} and rgt <= {rgt}""".format(tab=group_type, lft=lft, rgt=rgt))
+
def get_serial_no_data(pos_profile, company):
# get itemwise serial no data
# example {'Nokia Lumia 1020': {'SN0001': 'Pune'}}
@@ -240,8 +245,7 @@
for docs in doc_list:
for name, doc in docs.items():
- if not frappe.db.exists('Sales Invoice',
- {'offline_pos_name': name, 'docstatus': ("<", "2")}):
+ if not frappe.db.exists('Sales Invoice', {'offline_pos_name': name}):
validate_records(doc)
si_doc = frappe.new_doc('Sales Invoice')
si_doc.offline_pos_name = name
@@ -286,6 +290,7 @@
try:
si_doc.insert()
si_doc.submit()
+ frappe.db.commit()
except Exception, e:
if frappe.message_log: frappe.message_log.pop()
frappe.db.rollback()