fix: summary route and trackerService refinements

This commit is contained in:
null 2026-06-04 01:27:00 -05:00
parent 5783f80e38
commit ccdd16a626
2 changed files with 11 additions and 3 deletions

View File

@ -28,7 +28,9 @@ function buildBankTrackingSummary(db, userId, year, month) {
const effectivePendingDays = Number.isInteger(pendingDays) && pendingDays >= 0
? pendingDays : DEFAULT_PENDING_DAYS;
// Payments made in the tracker recently that may not have cleared the bank yet
// Only count manually-entered payments as pending — bank-synced payments
// (provider_sync) are already reflected in the live bank balance, so
// including them would double-deduct.
const pendingRow = effectivePendingDays > 0
? db.prepare(`
SELECT COALESCE(SUM(p.amount), 0) AS pending_total
@ -38,6 +40,7 @@ function buildBankTrackingSummary(db, userId, year, month) {
AND p.paid_date >= date('now', '-' || ? || ' days')
AND p.paid_date <= date('now')
AND b.deleted_at IS NULL
AND (p.payment_source IS NULL OR p.payment_source != 'provider_sync')
`).get(userId, effectivePendingDays)
: { pending_total: 0 };

View File

@ -24,6 +24,9 @@ function buildBankTracking(db, userId, year, month) {
const pendingDays = parseInt(settings.bank_tracking_pending_days, 10);
const days = Number.isInteger(pendingDays) && pendingDays >= 0 ? pendingDays : DEFAULT_PENDING_DAYS;
// Only count manually-entered payments as pending — bank-synced payments
// (provider_sync) are already reflected in the live bank balance, so
// including them would double-deduct.
const pendingRow = days > 0
? db.prepare(`
SELECT COALESCE(SUM(p.amount), 0) AS pending_total
@ -31,6 +34,7 @@ function buildBankTracking(db, userId, year, month) {
WHERE b.user_id = ?
AND p.paid_date >= date('now', '-' || ? || ' days')
AND p.paid_date <= date('now') AND b.deleted_at IS NULL
AND (p.payment_source IS NULL OR p.payment_source != 'provider_sync')
`).get(userId, days)
: { pending_total: 0 };
@ -445,8 +449,9 @@ function getTracker(userId, query = {}, now = new Date()) {
cashflow,
rows: bankTracking.enabled
? rows.map(r => {
// Flag recently-paid rows as pending-cleared when bank tracking is on
if (r.status === 'paid' && r.last_paid_date) {
// Only flag manually-entered payments as pending-cleared — bank-synced
// payments are already in the balance so they don't need the badge.
if (r.status === 'paid' && r.last_paid_date && r.payment_source !== 'provider_sync') {
const cutoff = new Date();
cutoff.setDate(cutoff.getDate() - bankTracking.pending_days);
const paidAt = new Date(r.last_paid_date);