From 8d1b599d5fa09a9e6e05179ae5acfe9a877284a7 Mon Sep 17 00:00:00 2001 From: diptanilsaha Date: Tue, 5 Aug 2025 15:09:55 +0530 Subject: [PATCH] refactor(pos): disable grand total to default mode of payment --- .../page/point_of_sale/pos_controller.js | 1 + .../selling/page/point_of_sale/pos_payment.js | 31 ++++++++++--------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/erpnext/selling/page/point_of_sale/pos_controller.js b/erpnext/selling/page/point_of_sale/pos_controller.js index 6905292420b..5e3218a67a2 100644 --- a/erpnext/selling/page/point_of_sale/pos_controller.js +++ b/erpnext/selling/page/point_of_sale/pos_controller.js @@ -421,6 +421,7 @@ erpnext.PointOfSale.Controller = class { init_payments() { this.payment = new erpnext.PointOfSale.Payment({ wrapper: this.$components_wrapper, + settings: this.settings, events: { get_frm: () => this.frm || {}, diff --git a/erpnext/selling/page/point_of_sale/pos_payment.js b/erpnext/selling/page/point_of_sale/pos_payment.js index b47c25e20bb..59f293a96b0 100644 --- a/erpnext/selling/page/point_of_sale/pos_payment.js +++ b/erpnext/selling/page/point_of_sale/pos_payment.js @@ -1,8 +1,9 @@ /* eslint-disable no-unused-vars */ erpnext.PointOfSale.Payment = class { - constructor({ events, wrapper }) { + constructor({ events, settings, wrapper }) { this.wrapper = wrapper; this.events = events; + this.disable_grand_total_to_default_mop = settings.disable_grand_total_to_default_mop; this.init_component(); } @@ -341,10 +342,11 @@ erpnext.PointOfSale.Payment = class { } render_payment_section() { + this.remove_grand_total_from_default_mop(); this.render_payment_mode_dom(); this.make_invoice_fields_control(); this.update_totals_section(); - this.unset_grand_total_to_default_mop(); + this.focus_on_default_mop(); } after_render() { @@ -446,7 +448,19 @@ erpnext.PointOfSale.Payment = class { this.attach_cash_shortcuts(doc); } + remove_grand_total_from_default_mop() { + if (!this.disable_grand_total_to_default_mop) return; + const doc = this.events.get_frm().doc; + const payments = doc.payments; + payments.forEach((p) => { + if (p.default) { + frappe.model.set_value(p.doctype, p.name, "amount", 0); + } + }); + } + focus_on_default_mop() { + if (this.disable_grand_total_to_default_mop) return; const doc = this.events.get_frm().doc; const payments = doc.payments; payments.forEach((p) => { @@ -629,19 +643,6 @@ erpnext.PointOfSale.Payment = class { .toLowerCase(); } - async unset_grand_total_to_default_mop() { - const doc = this.events.get_frm().doc; - let r = await frappe.db.get_value( - "POS Profile", - doc.pos_profile, - "disable_grand_total_to_default_mop" - ); - - if (!r.message.disable_grand_total_to_default_mop) { - this.focus_on_default_mop(); - } - } - validate_reqd_invoice_fields() { const doc = this.events.get_frm().doc; let validation_flag = true;