From 7a7556e8a9bf0219d2992cb43e2f31f660f48fe2 Mon Sep 17 00:00:00 2001 From: Suherdy Yacob Date: Fri, 29 May 2026 16:37:33 +0700 Subject: [PATCH] fix: add optional chaining to prevent runtime errors when accessing reward properties in pos_order.js --- static/src/app/models/pos_order.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/static/src/app/models/pos_order.js b/static/src/app/models/pos_order.js index d9a0361..736f978 100644 --- a/static/src/app/models/pos_order.js +++ b/static/src/app/models/pos_order.js @@ -309,10 +309,10 @@ patch(PosOrder.prototype, { // Separate cheapest product reward lines from others const cheapestRewardLines = rewardLines.filter( - line => line.reward_id && line.reward_id.reward_product_applicability === 'cheapest' + line => line.reward_id?.reward_product_applicability === 'cheapest' ); const otherRewardLines = rewardLines.filter( - line => !(line.reward_id && line.reward_id.reward_product_applicability === 'cheapest') + line => line.reward_id?.reward_product_applicability !== 'cheapest' ); // If there are cheapest reward lines, handle them separately. @@ -378,8 +378,8 @@ patch(PosOrder.prototype, { reward_identifier_code: line.reward_identifier_code, }; if ( - claimedReward.reward.program_id?.program_type === "gift_card" || - claimedReward.reward.program_id?.program_type === "ewallet" + claimedReward.reward?.program_id?.program_type === "gift_card" || + claimedReward.reward?.program_id?.program_type === "ewallet" ) { paymentRewards.push(claimedReward); } else if (claimedReward.reward.reward_type === "product") { @@ -423,17 +423,17 @@ patch(PosOrder.prototype, { continue; } if ( - claimedReward.reward.program_id?.program_type === "coupons" && + claimedReward.reward?.program_id?.program_type === "coupons" && this.lines.find( - (rewardline) => rewardline.reward_id?.id === claimedReward.reward.id + (rewardline) => rewardline.reward_id?.id === claimedReward.reward?.id ) ) { continue; } if ( - claimedReward.reward.reward_product_ids?.length === 1 && + claimedReward.reward?.reward_product_ids?.length === 1 && allRewardsMerged.filter( - (reward) => reward.reward.program_id?.id === claimedReward.reward.program_id?.id + (reward) => reward.reward?.program_id?.id === claimedReward.reward?.program_id?.id ).length === 1 ) { delete claimedReward.args["quantity"];