fix: include subscription and manual membership programs in loyalty multi-level eligibility checks

This commit is contained in:
Suherdy Yacob 2026-06-08 17:02:04 +07:00
parent e229c11b70
commit 0dfe27fadb

View File

@ -36,7 +36,7 @@ patch(PosOrder.prototype, {
// Custom Logic for Multi-Level Membership. // Custom Logic for Multi-Level Membership.
// Guard against recursive calls triggered when filtering all programs below. // Guard against recursive calls triggered when filtering all programs below.
if (program.multi_level_membership && !_checkingMultiLevel) { if ((program.multi_level_membership || program.manual_membership || program.program_type === 'subscription') && !_checkingMultiLevel) {
const partner = this.getPartner(); const partner = this.getPartner();
const membershipId = (partner && partner.membership_level_id) const membershipId = (partner && partner.membership_level_id)
? resolveManyToOneId(partner.membership_level_id) ? resolveManyToOneId(partner.membership_level_id)
@ -47,7 +47,7 @@ patch(PosOrder.prototype, {
// Only allow them when the partner actually holds an active loyalty card // Only allow them when the partner actually holds an active loyalty card
// for this program — whether it's a replacement tier (Direksi) or // for this program — whether it's a replacement tier (Direksi) or
// an add-on subscription (e.g. Makan Pagi Gratis). // an add-on subscription (e.g. Makan Pagi Gratis).
if (program.manual_membership) { if (program.manual_membership || program.program_type === 'subscription') {
if (!partner) return false; if (!partner) return false;
const card = this.models["loyalty.card"].find( const card = this.models["loyalty.card"].find(
(c) => (c.partner_id?.id === partner.id || resolveManyToOneId(c.partner_id) === partner.id) && (c) => (c.partner_id?.id === partner.id || resolveManyToOneId(c.partner_id) === partner.id) &&