Skip to content

cannelloni-58543: host can submit payout without photos via acknowledgment checkbox - #1024

Draft
snackman wants to merge 1 commit into
masterfrom
cannelloni-58543-photo-waiver
Draft

snackman wants to merge 1 commit into
masterfrom
cannelloni-58543-photo-waiver

Conversation

@snackman

Copy link
Copy Markdown
Contributor

Summary

Lets a host submit their reimbursement for payment on /payments even when the required event photos are missing — provided they tick an acknowledgment checkbox confirming they understand they're submitting without the required photos.

Receipt, attestation, payment-method and attendance gates are unchanged — only the photo gates (group / box_stack / pizza role photos and the ≥5 additional event photos, tiramisu-58530) become waivable.

Behavior

  • Host (PayoutsTab): when photos are missing, an acknowledgment Checkbox appears in the submit card. Ticking it enables Submit for review. The missing-requirements list stays visible.
  • Persisted + surfaced to admins: a new nullable payouts.photos_waived_at is stamped at submit/create when waived, and cleared on unsubmit or a photo-complete submit. The amber SubmittedForReviewBadge reads "Submitted without photos" on the by-city row, co-host chip, ledger row and review modal so reviewers know photos are missing.

Backend

  • schema.prisma: Payout.photosWaivedAt (photos_waived_at timestamptz, nullable).
  • getReimbursementReadiness gains readyToSubmitWithoutPhotos (everything except photos); readyToSubmit keeps its full meaning.
  • POST /reimbursement/submit + legacy POST /payouts: accept photosWaived; when true, skip the photo gates and gate on the non-photo requirements; stamp/clear photosWaivedAt. POST /reimbursement/unsubmit clears it.
  • Both serializePayouts emit photosWaivedAt.

Frontend

  • Payout.photosWaivedAt type (inherited by AdminPayout); ReimbursementReadiness.readyToSubmitWithoutPhotos; submitReimbursement(partyId, attested, photosWaived?).
  • SubmittedForReviewBadge photosWaivedAt prop + 4 call sites wired.
  • i18n keys payouts.photoWaiverAck / payouts.submitNeedsPhotoWaiver in all 8 locales.

DB / deploy

  • ✅ Migration already applied to prod (payouts.photos_waived_at, nullable timestamptz) — verified. Safe to merge; backend auto-deploys from master.

Verify on preview

Plan: plans/cannelloni-58543-photo-waiver.md

🤖 Generated with Claude Code

…gment checkbox

Adds a photo-waiver path to the host reimbursement submit flow. When the
required event photos (group/box_stack/pizza + the >=5 additional) are
missing, the host can tick an acknowledgment checkbox to submit anyway;
receipt, attestation, payment-method and attendance gates stay required.

Backend: new nullable `photos_waived_at` on payouts (migration applied to
prod), stamped at submit/create when `photosWaived` is set and cleared on
unsubmit/photo-complete submit. `getReimbursementReadiness` gains
`readyToSubmitWithoutPhotos`; both submit endpoints gate on it when waived.

Frontend: PayoutsTab shows the waiver Checkbox when photos are missing and
enables submit; admin /payments shows a "Submitted without photos" pill via
SubmittedForReviewBadge on the city row, co-host chip, ledger row and review
modal. i18n keys added across all 8 locales.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 16, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
rsvpizza Ready Ready Preview, Comment Jun 16, 2026 6:03pm

Request Review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant