fix: add optional chaining to prevent runtime errors when accessing reward properties in pos_order.js

This commit is contained in:
Suherdy Yacob 2026-05-29 16:37:33 +07:00
parent dfd52fe1cc
commit 7a7556e8a9

View File

@ -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"];