From e3bc2132622b9e7bf0aff49061a0bc225a6882f2 Mon Sep 17 00:00:00 2001 From: Mangesh-Khairnar Date: Fri, 1 Nov 2019 22:35:08 +0530 Subject: [PATCH 1/3] feat: multiple company pos profile --- .../page/point_of_sale/point_of_sale.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.js b/erpnext/selling/page/point_of_sale/point_of_sale.js index d2c2d70dbe7..5b7f2415714 100644 --- a/erpnext/selling/page/point_of_sale/point_of_sale.js +++ b/erpnext/selling/page/point_of_sale/point_of_sale.js @@ -451,7 +451,7 @@ erpnext.pos.PointOfSale = class PointOfSale { change_pos_profile() { return new Promise((resolve) => { - const on_submit = ({ pos_profile, set_as_default }) => { + const on_submit = ({ company, pos_profile, set_as_default }) => { if (pos_profile) { this.pos_profile = pos_profile; } @@ -461,7 +461,7 @@ erpnext.pos.PointOfSale = class PointOfSale { method: "erpnext.accounts.doctype.pos_profile.pos_profile.set_default_profile", args: { 'pos_profile': pos_profile, - 'company': this.frm.doc.company + 'company': company } }).then(() => { this.on_change_pos_profile(); @@ -495,7 +495,19 @@ erpnext.pos.PointOfSale = class PointOfSale { } get_prompt_fields() { + var company_field = this.frm.doc.company; return [{ + fieldtype: 'Link', + label: __('Company'), + options: 'Company', + fieldname: 'company', + default: this.frm.doc.company, + reqd: 1, + onchange: function(e) { + company_field = this.value; + } + }, + { fieldtype: 'Link', label: __('POS Profile'), options: 'POS Profile', @@ -505,7 +517,7 @@ erpnext.pos.PointOfSale = class PointOfSale { return { query: 'erpnext.accounts.doctype.pos_profile.pos_profile.pos_profile_query', filters: { - company: this.frm.doc.company + company: company_field } }; } From f69b9a8c47081722f394d33af1b7b34fd2b358b2 Mon Sep 17 00:00:00 2001 From: Mangesh-Khairnar Date: Fri, 15 Nov 2019 16:54:26 +0530 Subject: [PATCH 2/3] fix: fetch default pos profile user for the company --- .../page/point_of_sale/point_of_sale.js | 74 ++++++++++--------- 1 file changed, 41 insertions(+), 33 deletions(-) diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.js b/erpnext/selling/page/point_of_sale/point_of_sale.js index 5b7f2415714..9ade4c18934 100644 --- a/erpnext/selling/page/point_of_sale/point_of_sale.js +++ b/erpnext/selling/page/point_of_sale/point_of_sale.js @@ -471,7 +471,44 @@ erpnext.pos.PointOfSale = class PointOfSale { } } - frappe.prompt(this.get_prompt_fields(), + + let me = this; + + var dialog = frappe.prompt([{ + fieldtype: 'Link', + label: __('Company'), + options: 'Company', + fieldname: 'company', + default: me.frm.doc.company, + reqd: 1, + onchange: function(e) { + me.get_default_pos_profile(this.value).then((r) => { + if (r && r.name) { + dialog.set_value('pos_profile', r.name); + } + }); + } + }, + { + fieldtype: 'Link', + label: __('POS Profile'), + options: 'POS Profile', + fieldname: 'pos_profile', + default: me.frm.doc.pos_profile, + reqd: 1, + get_query: () => { + return { + query: 'erpnext.accounts.doctype.pos_profile.pos_profile.pos_profile_query', + filters: { + company: dialog.get_value('company') + } + }; + } + }, { + fieldtype: 'Check', + label: __('Set as default'), + fieldname: 'set_as_default' + }], on_submit, __('Select POS Profile') ); @@ -494,38 +531,9 @@ erpnext.pos.PointOfSale = class PointOfSale { ]); } - get_prompt_fields() { - var company_field = this.frm.doc.company; - return [{ - fieldtype: 'Link', - label: __('Company'), - options: 'Company', - fieldname: 'company', - default: this.frm.doc.company, - reqd: 1, - onchange: function(e) { - company_field = this.value; - } - }, - { - fieldtype: 'Link', - label: __('POS Profile'), - options: 'POS Profile', - fieldname: 'pos_profile', - reqd: 1, - get_query: () => { - return { - query: 'erpnext.accounts.doctype.pos_profile.pos_profile.pos_profile_query', - filters: { - company: company_field - } - }; - } - }, { - fieldtype: 'Check', - label: __('Set as default'), - fieldname: 'set_as_default' - }]; + get_default_pos_profile(company) { + return frappe.xcall("erpnext.stock.get_item_details.get_pos_profile", + {'company': company}) } setup_company() { From c436d933038033b71baa8a648d19c0e02e793cce Mon Sep 17 00:00:00 2001 From: Mangesh-Khairnar Date: Tue, 19 Nov 2019 18:21:53 +0530 Subject: [PATCH 3/3] fix: reset pos profile when default doesn't exists --- erpnext/selling/page/point_of_sale/point_of_sale.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.js b/erpnext/selling/page/point_of_sale/point_of_sale.js index 9ade4c18934..b213a29ae7e 100644 --- a/erpnext/selling/page/point_of_sale/point_of_sale.js +++ b/erpnext/selling/page/point_of_sale/point_of_sale.js @@ -483,9 +483,7 @@ erpnext.pos.PointOfSale = class PointOfSale { reqd: 1, onchange: function(e) { me.get_default_pos_profile(this.value).then((r) => { - if (r && r.name) { - dialog.set_value('pos_profile', r.name); - } + dialog.set_value('pos_profile', (r && r.name)? r.name : ''); }); } },