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 // Separate cheapest product reward lines from others
const cheapestRewardLines = rewardLines.filter( 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( 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. // If there are cheapest reward lines, handle them separately.
@ -378,8 +378,8 @@ patch(PosOrder.prototype, {
reward_identifier_code: line.reward_identifier_code, reward_identifier_code: line.reward_identifier_code,
}; };
if ( if (
claimedReward.reward.program_id?.program_type === "gift_card" || claimedReward.reward?.program_id?.program_type === "gift_card" ||
claimedReward.reward.program_id?.program_type === "ewallet" claimedReward.reward?.program_id?.program_type === "ewallet"
) { ) {
paymentRewards.push(claimedReward); paymentRewards.push(claimedReward);
} else if (claimedReward.reward.reward_type === "product") { } else if (claimedReward.reward.reward_type === "product") {
@ -423,17 +423,17 @@ patch(PosOrder.prototype, {
continue; continue;
} }
if ( if (
claimedReward.reward.program_id?.program_type === "coupons" && claimedReward.reward?.program_id?.program_type === "coupons" &&
this.lines.find( this.lines.find(
(rewardline) => rewardline.reward_id?.id === claimedReward.reward.id (rewardline) => rewardline.reward_id?.id === claimedReward.reward?.id
) )
) { ) {
continue; continue;
} }
if ( if (
claimedReward.reward.reward_product_ids?.length === 1 && claimedReward.reward?.reward_product_ids?.length === 1 &&
allRewardsMerged.filter( 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 ).length === 1
) { ) {
delete claimedReward.args["quantity"]; delete claimedReward.args["quantity"];