diff --git a/erpnext/accounts/doctype/loyalty_program/loyalty_program.py b/erpnext/accounts/doctype/loyalty_program/loyalty_program.py index d840304795f..2b68624f59f 100644 --- a/erpnext/accounts/doctype/loyalty_program/loyalty_program.py +++ b/erpnext/accounts/doctype/loyalty_program/loyalty_program.py @@ -38,7 +38,7 @@ def get_loyalty_details(customer, loyalty_program, expiry_date=None, company=Non @frappe.whitelist() def get_loyalty_program_details_with_points(customer, loyalty_program=None, expiry_date=None, company=None, silent=False, include_expired_entry=False, current_transaction_amount=0): lp_details = get_loyalty_program_details(customer, loyalty_program, company=company, silent=silent) - loyalty_program = frappe.get_doc("Loyalty Program", loyalty_program) + loyalty_program = frappe.get_doc("Loyalty Program", loyalty_program or lp_details.loyalty_program) lp_details.update(get_loyalty_details(customer, loyalty_program.name, expiry_date, company, include_expired_entry)) tier_spent_level = sorted([d.as_dict() for d in loyalty_program.collection_rules], 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 a16a77f1340..d7e7cd9617c 100644 --- a/erpnext/selling/page/point_of_sale/point_of_sale.js +++ b/erpnext/selling/page/point_of_sale/point_of_sale.js @@ -155,7 +155,7 @@ erpnext.pos.PointOfSale = class PointOfSale { var me = this; if (this.frm.doc.customer) { frappe.call({ - method: "erpnext.accounts.doctype.loyalty_program.loyalty_program.get_loyalty_program_details", + method: "erpnext.accounts.doctype.loyalty_program.loyalty_program.get_loyalty_program_details_with_points", args: { "customer": me.frm.doc.customer, "expiry_date": me.frm.doc.posting_date, @@ -1694,7 +1694,13 @@ class Payment { fieldtype: 'Check', label: 'Redeem Loyalty Points', fieldname: 'redeem_loyalty_points', - onchange: () => { + onchange: async function () { + if (!cint(me.dialog.get_value('redeem_loyalty_points'))) { + await Promise.all([ + me.frm.set_value('loyalty_points', 0), + me.dialog.set_value('loyalty_points', 0) + ]); + } me.update_cur_frm_value("redeem_loyalty_points", () => { frappe.flags.redeem_loyalty_points = false; me.update_loyalty_points(); @@ -1838,13 +1844,14 @@ class Payment { }); } - update_loyalty_points() { - if (this.dialog.get_value("redeem_loyalty_points")) { - this.dialog.set_value("loyalty_points", this.frm.doc.loyalty_points); - this.dialog.set_value("loyalty_amount", this.frm.doc.loyalty_amount); - this.update_payment_amount(); - this.show_paid_amount(); - } + async update_loyalty_points() { + const { loyalty_points, loyalty_amount } = this.frm.doc; + await Promise.all([ + this.dialog.set_value("loyalty_points", loyalty_points), + this.dialog.set_value("loyalty_amount", loyalty_amount) + ]); + this.update_payment_amount(); + this.show_paid_amount(); } }