fix payday

This commit is contained in:
JCEEE
2026-09-21 08:54:37 +01:00
parent a8c674f8b3
commit 67b5eff06b
+16 -14
View File
@@ -155,16 +155,19 @@ export async function evaluateFam(pb: any, famId: string) {
} }
const achieved = cfg.criteriaValue > 0 && current >= Number(cfg.criteriaValue); const achieved = cfg.criteriaValue > 0 && current >= Number(cfg.criteriaValue);
const memberReward = existingRewards.find((r: any) => r.memberId === m.id); const memberReward = existingRewards.find((r: any) => r.memberId === m.id);
if (memberReward && !achieved) { if (memberReward && !achieved) {
if (memberReward.status !== 'claimed') { // Payday-gated (e.g. pocket money) and member-requested rewards
try { // persist across week rollover until the parent issues them —
await pb.collection('rewards').delete(memberReward.id); // deleting them here gave parents only a payday-day window.
} catch {} if (memberReward.status !== 'claimed' && memberReward.status !== 'requested' && memberReward.claimable !== 'payday') {
} try {
continue; await pb.collection('rewards').delete(memberReward.id);
} catch {}
} }
continue;
}
if (memberReward) continue; if (memberReward) continue;
@@ -197,11 +200,10 @@ export async function evaluateFam(pb: any, famId: string) {
if (!achieved && existingRewards.length > 0) { if (!achieved && existingRewards.length > 0) {
for (const r of existingRewards) { for (const r of existingRewards) {
if (r.status !== 'claimed') { if (r.status === 'claimed' || r.status === 'requested' || r.claimable === 'payday') continue;
try { try {
await pb.collection('rewards').delete(r.id); await pb.collection('rewards').delete(r.id);
} catch {} } catch {}
}
} }
continue; continue;
} }
@@ -245,7 +247,7 @@ export async function evaluateFam(pb: any, famId: string) {
if (existingRewards.length > 0) { if (existingRewards.length > 0) {
const existing = existingRewards[0]; const existing = existingRewards[0];
const stillValid = winner && existing.memberId === winner.memberId && winner.current > 0; const stillValid = winner && existing.memberId === winner.memberId && winner.current > 0;
if (!stillValid && existing.status !== 'claimed') { if (!stillValid && existing.status !== 'claimed' && existing.status !== 'requested' && existing.claimable !== 'payday') {
try { try {
await pb.collection('rewards').delete(existing.id); await pb.collection('rewards').delete(existing.id);
} catch {} } catch {}