fix payday

This commit is contained in:
JCEEE
2026-09-21 08:54:37 +01:00
parent a8c674f8b3
commit 67b5eff06b
+6 -4
View File
@@ -158,7 +158,10 @@ export async function evaluateFam(pb: any, famId: string) {
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
// persist across week rollover until the parent issues them —
// deleting them here gave parents only a payday-day window.
if (memberReward.status !== 'claimed' && memberReward.status !== 'requested' && memberReward.claimable !== 'payday') {
try { try {
await pb.collection('rewards').delete(memberReward.id); await pb.collection('rewards').delete(memberReward.id);
} catch {} } catch {}
@@ -197,12 +200,11 @@ 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 {}