feat: add waitlist module, quick payment/transaction edit, and catering fee deduction from professor share

This commit is contained in:
2026-08-23 23:00:02 +03:30
parent e3b51a1629
commit 53fce86ad5
21 changed files with 609 additions and 16 deletions
@@ -103,7 +103,9 @@ const getClassReport = async (classId) => {
revenue: revenue.actualReceivedRevenue,
sessionDurationHours,
sessionsCount: sessionCounts.held,
extraExpensePerSession: cls.extraExpensePerSession
extraExpensePerSession: cls.extraExpensePerSession,
serviceFeePerPerson: cls.serviceFeePerPerson,
studentsCount: (cls.students || []).length
});
const netProfit = calculateNetProfit({
@@ -185,7 +187,9 @@ const getSessionReport = async (sessionId) => {
revenue: sessionIncome,
payoutHourlyRate: cls.payoutHourlyRate,
sessionDurationHours,
sessionsCount: 1
sessionsCount: 1,
serviceFeePerPerson: (cls.serviceFeePerPerson || 0) / (plannedSessions || 1),
studentsCount
});
const sessionExtraExpense = calculateExtraExpenses({
extraExpensePerSession: cls.extraExpensePerSession,
@@ -308,7 +312,9 @@ const getRangeReport = async (query = {}) => {
revenue: receivedInRange,
sessionDurationHours,
sessionsCount: sessionsHeldInRange,
extraExpensePerSession: cls.extraExpensePerSession
extraExpensePerSession: cls.extraExpensePerSession,
serviceFeePerPerson: cls.serviceFeePerPerson,
studentsCount: (cls.students || []).length
});
return {
@@ -509,6 +515,7 @@ const getAnalytics = async (query = {}) => {
payoutPercentage: cls.payoutPercentage,
payoutHourlyRate: cls.payoutHourlyRate,
extraExpensePerSession: cls.extraExpensePerSession,
serviceFeePerPerson: cls.serviceFeePerPerson,
sessionDurationHours: resolveSessionDurationHours(cls),
studentsCount,
plannedSessions,
@@ -610,7 +617,9 @@ const getAnalytics = async (query = {}) => {
revenue: received,
sessionDurationHours: profile.sessionDurationHours,
sessionsCount: held,
extraExpensePerSession: profile.extraExpensePerSession
extraExpensePerSession: profile.extraExpensePerSession,
serviceFeePerPerson: profile.serviceFeePerPerson,
studentsCount: profile.studentsCount
});
total += payout.totalPayout;
}
@@ -670,7 +679,9 @@ const getAnalytics = async (query = {}) => {
revenue: profile.actualReceivedRevenue,
sessionDurationHours: profile.sessionDurationHours,
sessionsCount: profile.heldSessions,
extraExpensePerSession: profile.extraExpensePerSession
extraExpensePerSession: profile.extraExpensePerSession,
serviceFeePerPerson: profile.serviceFeePerPerson,
studentsCount: profile.studentsCount
});
totalProfessorPayoutsAllTime += payout.totalPayout;