Skip to content

feat: Add invoice duplication and overdue listing routes#377

Open
HuiNeng6 wants to merge 2 commits intodavedumto:mainfrom
HuiNeng6:feat/routes-b-invoice-ops
Open

feat: Add invoice duplication and overdue listing routes#377
HuiNeng6 wants to merge 2 commits intodavedumto:mainfrom
HuiNeng6:feat/routes-b-invoice-ops

Conversation

@HuiNeng6
Copy link
Copy Markdown

Summary

This PR adds two invoice-related routes-b API endpoints.

Endpoints Added

Invoice Duplication

  • POST /api/routes-b/invoices/[id]/duplicate - Create a copy of an invoice
    • Generates fresh invoice number
    • Creates new payment link
    • Sets status to 'pending'
    • Does NOT copy dueDate, paidAt, cancelledAt

Overdue Invoices

  • GET /api/routes-b/invoices/overdue - List overdue invoices
    • Only pending invoices with past dueDate
    • Sorted by most overdue first
    • Includes daysOverdue calculation

Acceptance Criteria Met

Duplicate

✅ Returns 201 with new invoice
✅ Unique invoiceNumber and fresh paymentLink
✅ Status set to 'pending'
✅ dueDate/paidAt/cancelledAt NOT copied
✅ Returns 403 for wrong user
✅ Returns 404 for missing invoice
✅ Returns 401 for unauthenticated

Overdue

✅ Returns 200 with overdue invoices sorted
✅ Includes daysOverdue as positive integer
✅ Only includes invoices with dueDate
✅ Only includes pending invoices
✅ Returns empty array (not 404) when none overdue
✅ Returns 401 for unauthenticated

Fixes: #371
Fixes: #373

- GET /api/routes-b/analytics/invoices - invoice counts grouped by status
- GET /api/routes-b/dashboard - combined dashboard summary

Features:
- Parallel queries using Promise.all
- Default zeros for missing statuses
- Earnings summary with thisMonth filter
- Recent transactions limited to 5

Fixes: davedumto#369, davedumto#370
- POST /api/routes-b/invoices/[id]/duplicate - copy invoice with fresh number
- GET /api/routes-b/invoices/overdue - list pending invoices past due date

Features:
- Fresh invoice number generation
- daysOverdue calculation
- Proper auth and ownership validation

Fixes: davedumto#371, davedumto#373
@vercel
Copy link
Copy Markdown

vercel bot commented Mar 27, 2026

@HuiNeng6 is attempting to deploy a commit to the david's projects Team on Vercel.

A member of the Team first needs to authorize it.

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

Labels

None yet

Projects

None yet

1 participant