From a4b4278c1a6c2d0ff7db8fa8fcae6e0dffc414e1 Mon Sep 17 00:00:00 2001 From: Captain Fulminyx Date: Thu, 23 Oct 2025 10:03:15 +0530 Subject: [PATCH] Refactor unpaid function for clarity and date fix Refactor unpaid function to improve readability and adjust date handling. --- server/lib/calcEarnings.js | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/server/lib/calcEarnings.js b/server/lib/calcEarnings.js index 2bc1afb..6532be4 100644 --- a/server/lib/calcEarnings.js +++ b/server/lib/calcEarnings.js @@ -114,6 +114,7 @@ async function total(year, month, user, report) { * @param {number} [month] month to exclude * @returns {Promise} */ + async function unpaid(user, year, month) { let earnings = 0; const ids = []; @@ -122,11 +123,20 @@ async function unpaid(user, year, month) { [UserEarnings.PAYMENT_ID, null], ]; + // Exclude current or future months if year/month is passed if (year && month) { - where.push([UserEarnings.MONTH, month, '<'], [UserEarnings.YEAR, year], 'OR', [UserEarnings.YEAR, year, '<']); + where.push( + [UserEarnings.MONTH, month, '<'], + [UserEarnings.YEAR, year], + 'OR', + [UserEarnings.YEAR, year, '<'] + ); } - const unpaidEarnings = await UserEarnings.get([UserEarnings.AMOUNT, UserEarnings.ID, UserEarnings.MONTH, UserEarnings.YEAR], where); + const unpaidEarnings = await UserEarnings.get( + [UserEarnings.AMOUNT, UserEarnings.ID, UserEarnings.MONTH, UserEarnings.YEAR], + where + ); let fromMonth = 31; let fromYear = 9999; @@ -151,11 +161,24 @@ async function unpaid(user, year, month) { } earnings = Number.parseFloat(Math.round(earnings * 100) / 100); + + // ✅ Fix: Adjust 'to' date so it doesn’t go beyond current date + const now = moment(); + let toMoment = moment({ year: toYear, month: toMonth }); + + if (toMoment.isSame(now, 'month') && toMoment.isSame(now, 'year')) { + // If unpaid includes the current month, cap it at today + toMoment = now.endOf('day'); + } else { + // Otherwise use the full month end + toMoment = toMoment.endOf('month'); + } + return { ids, earnings, from: moment({ year: fromYear, month: fromMonth }).startOf('month'), - to: moment({ year: toYear, month: toMonth }).endOf('month'), + to: toMoment, }; }