fix: summary route and trackerService refinements
This commit is contained in:
parent
5783f80e38
commit
ccdd16a626
|
|
@ -28,7 +28,9 @@ function buildBankTrackingSummary(db, userId, year, month) {
|
||||||
const effectivePendingDays = Number.isInteger(pendingDays) && pendingDays >= 0
|
const effectivePendingDays = Number.isInteger(pendingDays) && pendingDays >= 0
|
||||||
? pendingDays : DEFAULT_PENDING_DAYS;
|
? 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
|
const pendingRow = effectivePendingDays > 0
|
||||||
? db.prepare(`
|
? db.prepare(`
|
||||||
SELECT COALESCE(SUM(p.amount), 0) AS pending_total
|
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', '-' || ? || ' days')
|
||||||
AND p.paid_date <= date('now')
|
AND p.paid_date <= date('now')
|
||||||
AND b.deleted_at IS NULL
|
AND b.deleted_at IS NULL
|
||||||
|
AND (p.payment_source IS NULL OR p.payment_source != 'provider_sync')
|
||||||
`).get(userId, effectivePendingDays)
|
`).get(userId, effectivePendingDays)
|
||||||
: { pending_total: 0 };
|
: { pending_total: 0 };
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,9 @@ function buildBankTracking(db, userId, year, month) {
|
||||||
const pendingDays = parseInt(settings.bank_tracking_pending_days, 10);
|
const pendingDays = parseInt(settings.bank_tracking_pending_days, 10);
|
||||||
const days = Number.isInteger(pendingDays) && pendingDays >= 0 ? pendingDays : DEFAULT_PENDING_DAYS;
|
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
|
const pendingRow = days > 0
|
||||||
? db.prepare(`
|
? db.prepare(`
|
||||||
SELECT COALESCE(SUM(p.amount), 0) AS pending_total
|
SELECT COALESCE(SUM(p.amount), 0) AS pending_total
|
||||||
|
|
@ -31,6 +34,7 @@ function buildBankTracking(db, userId, year, month) {
|
||||||
WHERE b.user_id = ?
|
WHERE b.user_id = ?
|
||||||
AND p.paid_date >= date('now', '-' || ? || ' days')
|
AND p.paid_date >= date('now', '-' || ? || ' days')
|
||||||
AND p.paid_date <= date('now') AND b.deleted_at IS NULL
|
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)
|
`).get(userId, days)
|
||||||
: { pending_total: 0 };
|
: { pending_total: 0 };
|
||||||
|
|
||||||
|
|
@ -445,8 +449,9 @@ function getTracker(userId, query = {}, now = new Date()) {
|
||||||
cashflow,
|
cashflow,
|
||||||
rows: bankTracking.enabled
|
rows: bankTracking.enabled
|
||||||
? rows.map(r => {
|
? rows.map(r => {
|
||||||
// Flag recently-paid rows as pending-cleared when bank tracking is on
|
// Only flag manually-entered payments as pending-cleared — bank-synced
|
||||||
if (r.status === 'paid' && r.last_paid_date) {
|
// 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();
|
const cutoff = new Date();
|
||||||
cutoff.setDate(cutoff.getDate() - bankTracking.pending_days);
|
cutoff.setDate(cutoff.getDate() - bankTracking.pending_days);
|
||||||
const paidAt = new Date(r.last_paid_date);
|
const paidAt = new Date(r.last_paid_date);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue