Skip to content

DB: pledge amounts net of partial refunds, refund_owed for overpaid pledges, and a stop on payment requests #89

Closed

Description

@JOY

Goal

Found by #31 (PR #88) against #30's give_rewards (DOS/DOS.Me#1538):

  1. pledge_payment and remind_pledge_payments compute amount_due as intended - received, ignoring partial refunds (the app hides the QR when <= 0).
  2. refund_due / refund_owed notice payloads are not net of refunds already made.
  3. No refund_owed notice for an overpaid paid pledge.
  4. Design gap: nothing stops payment requests on a succeeded campaign if fraud is found.

Requirements

  • amount_due = intended - (received - refunded); payloads net of refunds; refund_owed notice when a paid pledge is overpaid.
  • A moderator/admin "stop payment requests" action on a succeeded back campaign (suspend reminders and hide pay pages; audit row; public notice), reusing suspended if it fits.

Acceptance

  • pgTAP for each rule; app tests for the hidden pay page.

Follow-up of #31.

Activity

  1. JOY commented on Nov 3, 2026

    @JOY
    ContributorAuthor

    claim: executor="Claude Code" session=cc1f5a07-cb83-4bfd-ad4c-179b5485264f scope="DOS.Me supabase/migrations 20261106110000 give pledge net refunds + stop payment requests; Give app pledge pay page, admin action, notices" branch=claude/89-pledge-net-refunds,claude/give-89-pledge-net-refunds target=2026-11-05

  2. JOY commented on Nov 3, 2026

    @JOY
    ContributorAuthor

    checkpoint: session=cc1f5a07-cb83-4bfd-ad4c-179b5485264f
    PRs opened: DOS/DOS.Me#1551 (migration 20261106110000, pgTAP 76 new, all 21 give suites green in PGlite) and #91 (app, Vitest 903 passed, tsc and eslint clean).
    Next: CI and Supabase Preview, then a general and a money review.

  3. JOY commented on Nov 3, 2026

    @JOY
    ContributorAuthor

    checkpoint: session=cc1f5a07-cb83-4bfd-ad4c-179b5485264f
    Ready for PO merge (DOS.Me first): DOS/DOS.Me#1551 head cec1cef9 (Supabase Preview pass, DOS Code Review clean, pgTAP 77 new + all 21 give suites green), #91 head be9434e (Lint + Build green, Vitest 907).
    General and money reviews: no P1; P2s and most P3s fixed. No function overlap with #85 (DOS/DOS.Me#1549) or #86 (DOS/DOS.Me#1550).
    Open product question: the payment window keeps running while payment requests are stopped; extending payment_due_at on resume is a PO decision.
    Follow-ups: reconciliation waitsFor ignores refunds; payment_due/reminder notices sent before a stop still read "pay".

  4. JOY commented on Nov 3, 2026

    @JOY
    ContributorAuthor

    checkpoint: session=cc1f5a07-cb83-4bfd-ad4c-179b5485264f
    PO decision implemented: no lapse while payment requests are stopped; a resume moves the waiting pledges' deadlines and reminder days by the time stopped.
    Heads: DOS/DOS.Me#1551 e38973d3 (pgTAP 90/90, 22 give suites green, Supabase Preview pass), #91 4d32cca (Vitest 913, Lint + Build green). Money review of the delta: no P1, P2 fixed. Follow-ups in #93.

  5. JOY commented on Nov 3, 2026

    @JOY
    ContributorAuthor

    done: session=cc1f5a07-cb83-4bfd-ad4c-179b5485264f
    Merged into dev by the PO: DOS/DOS.Me#1551 at 1c65b757f4f603152321935f6682424647be7485 (migration 20261106110000_give_pledge_net_refunds_and_payment_stop), #91 at 899592f.
    Beta: Supabase Preview on oyajkbadsykigtfrpdpg for 1c65b757 completed with success (2026-11-03T16:17:57Z).
    Acceptance evidence: pgTAP give_pledge_net_refunds_and_payment_stop 90/90 (net amount_due, net refund payloads, overpaid refund_owed, stop/resume rules, no lapse while stopped, deadlines and reminder days moved on resume), all 22 give suites green; app tests for the hidden pay page (loadPledgeMoney never calls pledge_payment while stopped, paymentView, stopHoldsPledge), Vitest 913, Lint + Build green. General and money reviews: no P1, P2s fixed.
    Follow-ups: #93.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions