feat: unremitted per-user filtering, EOD unremitted reminders, remittance breakdown

- Filter unremitted payments by current user only (remove manager exception)
- Add PaymentScheduler with 5PM daily cron for unremitted reminders
- Add getUnremittedBreakdown service for per-collector dashboard totals
- Register PaymentScheduler in SchedulerModule
This commit is contained in:
kevin-asprec
2026-05-06 22:43:44 +08:00
parent 85aea30730
commit 7f9beaac2b
4 changed files with 130 additions and 6 deletions

View File

@@ -42,10 +42,8 @@ export class PaymentController {
@Get('unremitted')
@Roles('technician', 'collector')
async getUnremitted(@CurrentUser() user: CurrentUserPayload, @Query('all') all?: string) {
const isManager = user.roles?.some((r: string) => ['manager', 'tenant_admin', 'super_admin'].includes(r));
// Managers see all unremitted; collectors see only their own
return this.paymentService.getUnremittedPayments(user.tenantId, isManager ? null : user.sub);
async getUnremitted(@CurrentUser() user: CurrentUserPayload) {
return this.paymentService.getUnremittedPayments(user.tenantId, user.sub);
}
@Get('remittances')
@@ -80,4 +78,10 @@ export class PaymentController {
) {
return this.paymentService.rejectRemittance(user.tenantId, id, user.sub);
}
@Get('unremitted-breakdown')
@Roles('manager')
async getUnremittedBreakdown(@CurrentUser() user: CurrentUserPayload) {
return this.paymentService.getUnremittedBreakdown(user.tenantId);
}
}