From 2a1b1537f93e5e15543e0d48fb00288d5a2293ce Mon Sep 17 00:00:00 2001 From: Saqib Date: Fri, 26 Feb 2021 16:49:28 +0530 Subject: [PATCH] fix(pos): rounded total and search fixes (#24738) --- .../selling/page/point_of_sale/pos_controller.js | 5 ++++- erpnext/selling/page/point_of_sale/pos_item_cart.js | 3 ++- .../selling/page/point_of_sale/pos_item_selector.js | 7 ++++++- erpnext/selling/page/point_of_sale/pos_payment.js | 13 ++++++++----- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/erpnext/selling/page/point_of_sale/pos_controller.js b/erpnext/selling/page/point_of_sale/pos_controller.js index 338a3ccf24..74b4bb085b 100644 --- a/erpnext/selling/page/point_of_sale/pos_controller.js +++ b/erpnext/selling/page/point_of_sale/pos_controller.js @@ -498,10 +498,11 @@ erpnext.PointOfSale.Controller = class { async on_cart_update(args) { frappe.dom.freeze(); + let item_row = undefined; try { let { field, value, item } = args; const { item_code, batch_no, serial_no, uom } = item; - let item_row = this.get_item_from_frm(item_code, batch_no, uom); + item_row = this.get_item_from_frm(item_code, batch_no, uom); const item_selected_from_selector = field === 'qty' && value === "+1" @@ -553,10 +554,12 @@ erpnext.PointOfSale.Controller = class { this.check_serial_batch_selection_needed(item_row) && this.edit_item_details_of(item_row); this.update_cart_html(item_row); } + } catch (error) { console.log(error); } finally { frappe.dom.unfreeze(); + return item_row; } } diff --git a/erpnext/selling/page/point_of_sale/pos_item_cart.js b/erpnext/selling/page/point_of_sale/pos_item_cart.js index 044e80357d..9ab9eefa30 100644 --- a/erpnext/selling/page/point_of_sale/pos_item_cart.js +++ b/erpnext/selling/page/point_of_sale/pos_item_cart.js @@ -472,7 +472,8 @@ erpnext.PointOfSale.ItemCart = class { if (!frm) frm = this.events.get_frm(); this.render_net_total(frm.doc.net_total); - this.render_grand_total(frm.doc.grand_total); + const grand_total = cint(frappe.sys_defaults.disable_rounded_total) ? frm.doc.grand_total : frm.doc.rounded_total; + this.render_grand_total(grand_total); const taxes = frm.doc.taxes.map(t => { return { diff --git a/erpnext/selling/page/point_of_sale/pos_item_selector.js b/erpnext/selling/page/point_of_sale/pos_item_selector.js index 7c116e9fa1..e0d5b73166 100644 --- a/erpnext/selling/page/point_of_sale/pos_item_selector.js +++ b/erpnext/selling/page/point_of_sale/pos_item_selector.js @@ -152,6 +152,10 @@ erpnext.PointOfSale.ItemSelector = class { this.item_group_field.toggle_label(false); } + set_search_value(value) { + $(this.search_field.$input[0]).val(value).trigger("input"); + } + bind_events() { const me = this; window.onScan = onScan; @@ -159,7 +163,7 @@ erpnext.PointOfSale.ItemSelector = class { onScan: (sScancode) => { if (this.search_field && this.$component.is(':visible')) { this.search_field.set_focus(); - $(this.search_field.$input[0]).val(sScancode).trigger("input"); + this.set_search_value(sScancode); this.barcode_scanned = true; } } @@ -178,6 +182,7 @@ erpnext.PointOfSale.ItemSelector = class { uom = uom === "undefined" ? undefined : uom; me.events.item_selected({ field: 'qty', value: "+1", item: { item_code, batch_no, serial_no, uom }}); + me.set_search_value(''); }); this.search_field.$input.on('input', (e) => { diff --git a/erpnext/selling/page/point_of_sale/pos_payment.js b/erpnext/selling/page/point_of_sale/pos_payment.js index bcbac3b4be..22a279d463 100644 --- a/erpnext/selling/page/point_of_sale/pos_payment.js +++ b/erpnext/selling/page/point_of_sale/pos_payment.js @@ -223,7 +223,8 @@ erpnext.PointOfSale.Payment = class { if (success) { title = __("Payment Received"); - if (amount >= doc.grand_total) { + const grand_total = cint(frappe.sys_defaults.disable_rounded_total) ? doc.grand_total : doc.rounded_total; + if (amount >= grand_total) { frappe.dom.unfreeze(); message = __("Payment of {0} received successfully.", [format_currency(amount, doc.currency, 0)]); this.events.submit_invoice(); @@ -243,7 +244,8 @@ erpnext.PointOfSale.Payment = class { auto_set_remaining_amount() { const doc = this.events.get_frm().doc; - const remaining_amount = doc.grand_total - doc.paid_amount; + const grand_total = cint(frappe.sys_defaults.disable_rounded_total) ? doc.grand_total : doc.rounded_total; + const remaining_amount = grand_total - doc.paid_amount; const current_value = this.selected_mode ? this.selected_mode.get_value() : undefined; if (!current_value && remaining_amount > 0 && this.selected_mode) { this.selected_mode.set_value(remaining_amount); @@ -389,7 +391,7 @@ erpnext.PointOfSale.Payment = class { } attach_cash_shortcuts(doc) { - const grand_total = doc.grand_total; + const grand_total = cint(frappe.sys_defaults.disable_rounded_total) ? doc.grand_total : doc.rounded_total; const currency = doc.currency; const shortcuts = this.get_cash_shortcuts(flt(grand_total)); @@ -499,7 +501,8 @@ erpnext.PointOfSale.Payment = class { update_totals_section(doc) { if (!doc) doc = this.events.get_frm().doc; const paid_amount = doc.paid_amount; - const remaining = doc.grand_total - doc.paid_amount; + const grand_total = cint(frappe.sys_defaults.disable_rounded_total) ? doc.grand_total : doc.rounded_total; + const remaining = grand_total - doc.paid_amount; const change = doc.change_amount || remaining <= 0 ? -1 * remaining : undefined; const currency = doc.currency; const label = change ? __('Change') : __('To Be Paid'); @@ -507,7 +510,7 @@ erpnext.PointOfSale.Payment = class { this.$totals.html( `
Grand Total
-
${format_currency(doc.grand_total, currency)}
+
${format_currency(grand_total, currency)}