feat(cashier): add end-of-day report, my work, and cashier updates

This commit is contained in:
2026-09-08 10:38:59 +05:30
parent fbce73fd17
commit 035b11fa96
20 changed files with 3146 additions and 124 deletions
+95 -2
View File
@@ -117,6 +117,59 @@ const routes: Routes = [
import('../clerk/photo-signature/photo-signature.component').then((m) => m.PhotoSignatureComponent),
data: { title: 'Photo & Signature', breadcrumb: 'Photo & Signature' }
},
// The same register the cashier screens use, without their cash-only filter: a clerk raises
// book entries — a closure settled to savings, a share redemption, an interest posting the
// system made on their approval — and cash-only would hide exactly those.
{
path: 'received-report',
component: VoucherReportComponent,
data: {
title: 'Received Vouchers',
breadcrumb: 'Received Vouchers',
side: 'CR',
cashOnly: false,
cashiersOnly: true
}
},
{
path: 'payment-report',
component: VoucherReportComponent,
data: {
title: 'Payment Vouchers',
breadcrumb: 'Payment Vouchers',
side: 'DR',
cashOnly: false,
cashiersOnly: true
}
},
// Both sides in one list, scoped to whoever is signed in — the "what did I do today"
// question the two registers above cannot answer, because an approval raises no voucher.
{
path: 'my-work',
loadComponent: () => import('../cashier/my-work/my-work.component').then((m) => m.MyWorkComponent),
data: { title: 'My Vouchers', breadcrumb: 'My Vouchers' }
},
{
path: 'end-of-day',
loadComponent: () =>
import('../cashier/end-of-day-report/end-of-day-report.component').then((m) => m.EndOfDayReportComponent),
data: { title: 'End of the Day Report', breadcrumb: 'End of the Day Report' }
},
// The system's own postings — interest, charges, escheats, journals. Both sides in one
// list: a night's run credits and debits, and splitting it across two screens would hide
// half of it from whichever one you opened.
{
path: 'system-vouchers',
component: VoucherReportComponent,
data: {
title: 'System Vouchers',
breadcrumb: 'System Vouchers',
side: 'ALL',
cashOnly: false,
cashiersOnly: false,
systemOnly: true
}
},
{
path: 'standing-instructions',
loadComponent: () =>
@@ -172,6 +225,23 @@ const routes: Routes = [
path: 'vault-position',
component: VaultPositionComponent,
data: { title: 'Vault Position', breadcrumb: 'Vault Position' }
},
{
// The same day book the clerk and cashier read, reached from where a principal officer
// signing the day off actually looks. It carries the Officer Verification Sheet — each
// person's own credit, debit and net — which is the branch-level reading of the day, not
// a counter one.
path: 'day-book',
component: DayBookComponent,
data: { title: 'Day Book & Verification', breadcrumb: 'Day Book' }
},
// The one sheet the day is signed off on: the transaction summary, the drawer counted
// against the books, and the notes that say why it cannot be closed yet.
{
path: 'end-of-day',
loadComponent: () =>
import('./end-of-day-report/end-of-day-report.component').then((m) => m.EndOfDayReportComponent),
data: { title: 'End of the Day Report', breadcrumb: 'End of the Day Report' }
}
]
},
@@ -235,18 +305,41 @@ const routes: Routes = [
{
path: 'received-report',
component: VoucherReportComponent,
data: { title: 'Received Report', breadcrumb: 'Received Report', side: 'CR', cashOnly: true }
data: {
title: 'Received Report',
breadcrumb: 'Received Report',
side: 'CR',
cashOnly: true,
cashiersOnly: true
}
},
{
path: 'payment-report',
component: VoucherReportComponent,
data: { title: 'Payment Report', breadcrumb: 'Payment Report', side: 'DR', cashOnly: true }
data: {
title: 'Payment Report',
breadcrumb: 'Payment Report',
side: 'DR',
cashOnly: true,
cashiersOnly: true
}
},
{
path: 'my-work',
loadComponent: () => import('./my-work/my-work.component').then((m) => m.MyWorkComponent),
data: { title: 'My Vouchers', breadcrumb: 'My Vouchers' }
},
{
path: 'closing-report',
component: ClosingCashReportComponent,
data: { title: 'Closing Cash Report', breadcrumb: 'Closing Cash Report' }
},
{
path: 'end-of-day',
loadComponent: () =>
import('./end-of-day-report/end-of-day-report.component').then((m) => m.EndOfDayReportComponent),
data: { title: 'End of the Day Report', breadcrumb: 'End of the Day Report' }
},
{
path: 'excess-report',
component: ExcessTransactionReportComponent,