Problem. CustomerPayment links to a customer only, so payments cannot be applied to specific invoices or drive balances.
Recommendation. Add invoice allocation (a cpayInvId or an allocation table) so a payment reduces one or more invoice balances.
Area. Payments · Target milestone. v1.1
Competitor precedent. FreshBooks and Rocketlane collect online payments (Stripe) and reconcile them; BigTime records payments against invoices.
Touches. app/models/CustomerPayment.js, app/models/Invoice.js, app/controllers/customerpaymentcontroller.js, app/routers/router.js
Filed from the research-driven product backlog (BACKLOG.md), sourced from Perplexity deep-research across Harvest, Toggl Track, Clockify, FreshBooks, BigTime, My Hours, Rocketlane and Wrike. One issue per backlog item; the two views stay in sync.
Problem. CustomerPayment links to a customer only, so payments cannot be applied to specific invoices or drive balances.
Recommendation. Add invoice allocation (a cpayInvId or an allocation table) so a payment reduces one or more invoice balances.
Area. Payments · Target milestone. v1.1
Competitor precedent. FreshBooks and Rocketlane collect online payments (Stripe) and reconcile them; BigTime records payments against invoices.
Touches. app/models/CustomerPayment.js, app/models/Invoice.js, app/controllers/customerpaymentcontroller.js, app/routers/router.js
Filed from the research-driven product backlog (
BACKLOG.md), sourced from Perplexity deep-research across Harvest, Toggl Track, Clockify, FreshBooks, BigTime, My Hours, Rocketlane and Wrike. One issue per backlog item; the two views stay in sync.