From d4359faa3153cf9b0bd8f3e02c73407699976b4b Mon Sep 17 00:00:00 2001 From: Jay Parikh Date: Thu, 1 Feb 2018 04:26:24 -0800 Subject: [PATCH] Enable/Disable Discount in POS using POS Profile #11748 --- .../doctype/pos_profile/pos_profile.json | 32 ++++++++++++++- .../doctype/sales_invoice/sales_invoice.py | 3 +- .../page/point_of_sale/point_of_sale.js | 40 ++++++++++++++----- 3 files changed, 62 insertions(+), 13 deletions(-) diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.json b/erpnext/accounts/doctype/pos_profile/pos_profile.json index 2cb8e1024a..ed3de07140 100644 --- a/erpnext/accounts/doctype/pos_profile/pos_profile.json +++ b/erpnext/accounts/doctype/pos_profile/pos_profile.json @@ -254,6 +254,36 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "allow_user_to_edit_discount", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Allow user to edit Discount", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_bulk_edit": 0, "allow_on_submit": 0, @@ -1476,7 +1506,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2018-01-03 17:30:45.198147", + "modified": "2018-01-31 19:33:11.765731", "modified_by": "Administrator", "module": "Accounts", "name": "POS Profile", diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index f37fe6114c..2af30e1956 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -249,7 +249,8 @@ class SalesInvoice(SellingController): if pos: return { "print_format": pos.get("print_format_for_online"), - "allow_edit_rate": pos.get("allow_user_to_edit_rate") + "allow_edit_rate": pos.get("allow_user_to_edit_rate"), + "allow_edit_discount": pos.get("allow_user_to_edit_discount") } def update_time_sheet(self, sales_invoice): 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 f5bc6c2499..bfbb6ad405 100644 --- a/erpnext/selling/page/point_of_sale/point_of_sale.js +++ b/erpnext/selling/page/point_of_sale/point_of_sale.js @@ -464,6 +464,7 @@ erpnext.pos.PointOfSale = class PointOfSale { if (r.message) { this.frm.meta.default_print_format = r.message.print_format || 'POS Invoice'; this.frm.allow_edit_rate = r.message.allow_edit_rate; + this.frm.allow_edit_discount = r.message.allow_edit_discount; } } @@ -553,9 +554,9 @@ class POSCart {
${this.get_taxes_and_totals()}
-
- ${this.get_discount_amount()} -
+
`+ + (!this.frm.allow_edit_discount ? `` : `${this.get_discount_amount()}`)+ + `
${this.get_grand_total()}
@@ -714,6 +715,21 @@ class POSCart { this.customer_field.set_value(this.frm.doc.customer); } + disable_numpad_control() { + if(!this.frm.allow_edit_rate && !this.frm.allow_edit_discount) { + return ['Rate', 'Disc']; + } + if(!this.frm.allow_edit_rate || !this.frm.allow_edit_discount) { + if(!this.frm.allow_edit_rate) { + return ['Rate']; + } else { + return ['Disc']; + } + } else { + return []; + } + } + make_numpad() { this.numpad = new NumberPad({ button_array: [ @@ -728,7 +744,7 @@ class POSCart { disable_highlight: ['Qty', 'Disc', 'Rate', 'Pay'], reset_btns: ['Qty', 'Disc', 'Rate', 'Pay'], del_btn: 'Del', - disable_btns: !this.frm.allow_edit_rate ? ['Rate']: [], + disable_btns: this.disable_numpad_control(), wrapper: this.wrapper.find('.number-pad-container'), onclick: (btn_value) => { // on click @@ -1300,13 +1316,15 @@ class NumberPad { this.set_class(); - this.disable_btns.forEach((btn) => { - const $btn = this.get_btn(btn); - $btn.prop("disabled", true) - $btn.hover(() => { - $btn.css('cursor','not-allowed'); - }) - }) + if(this.disable_btns) { + this.disable_btns.forEach((btn) => { + const $btn = this.get_btn(btn); + $btn.prop("disabled", true) + $btn.hover(() => { + $btn.css('cursor','not-allowed'); + }) + }) + } } set_class() {