Merge pull request #12739 from jay-parikh/hotfix
Enable/Disable Discount in POS using POS Profile #11748
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.json b/erpnext/accounts/doctype/pos_profile/pos_profile.json
index 2cb8e10..ed3de07 100644
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.json
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.json
@@ -260,6 +260,36 @@
"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,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
"fieldname": "allow_print_before_pay",
"fieldtype": "Check",
"hidden": 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 f37fe61..2af30e1 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -249,7 +249,8 @@
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 357475d..c20c6f8 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 @@
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 @@
<div class="taxes-and-totals">
${this.get_taxes_and_totals()}
</div>
- <div class="discount-amount">
- ${this.get_discount_amount()}
- </div>
+ <div class="discount-amount">`+
+ (!this.frm.allow_edit_discount ? `` : `${this.get_discount_amount()}`)+
+ `</div>
<div class="grand-total">
${this.get_grand_total()}
</div>
@@ -584,6 +585,7 @@
this.numpad && this.numpad.reset_value();
this.customer_field.set_value("");
+ this.$discount_amount.find('input:text').val('');
this.wrapper.find('.grand-total-value').text(
format_currency(this.frm.doc.grand_total, this.frm.currency));
this.wrapper.find('.rounded-total-value').text(
@@ -714,6 +716,17 @@
this.customer_field.set_value(this.frm.doc.customer);
}
+ disable_numpad_control() {
+ let disabled_btns = [];
+ if(!this.frm.allow_edit_rate) {
+ disabled_btns.push('Rate');
+ }
+ if(!this.frm.allow_edit_discount) {
+ disabled_btns.push('Disc');
+ }
+ return disabled_btns;
+ }
+
make_numpad() {
this.numpad = new NumberPad({
button_array: [
@@ -728,7 +741,7 @@
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 +1313,15 @@
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() {