feat(cashier): add end-of-day report, my work, and cashier updates
This commit is contained in:
@@ -65,6 +65,19 @@ export class ClosingCashReportComponent implements OnInit {
|
||||
*/
|
||||
openingBalance: number | null = null;
|
||||
closingBalance: number | null = null;
|
||||
|
||||
/**
|
||||
* The day's own cash legs, which is what a cashier reconciles against the drawer.
|
||||
*
|
||||
* A cashier carries no balance: they draw from the vault in the morning and hand back at close.
|
||||
* The cumulative opening/closing figures answer a question nobody at the counter asks, and one
|
||||
* carrying years of history answers it with a number that cannot be counted against anything on
|
||||
* the desk.
|
||||
*/
|
||||
todayVaultIn: number | null = null;
|
||||
todaySettledOut: number | null = null;
|
||||
todayInterCashierIn: number | null = null;
|
||||
todayInterCashierOut: number | null = null;
|
||||
/** Every leg of the day's cash movement, which is wider than deposits less withdrawals. */
|
||||
cashMovement: number | null = null;
|
||||
/** Whether the figures above are one cashier's drawer or the whole branch's counter work. */
|
||||
@@ -95,6 +108,29 @@ export class ClosingCashReportComponent implements OnInit {
|
||||
selectedTellerId: number | null = null;
|
||||
selectedCashierId: number | null = null;
|
||||
|
||||
/**
|
||||
* What should be in the drawer at the end of the day, from the day's own legs.
|
||||
*
|
||||
* Drawn from the vault, plus anything taken over the counter and from another cashier, less what
|
||||
* went back out. This is the figure a cashier counts against — it does not carry a balance
|
||||
* forward, because a cashier does not.
|
||||
*/
|
||||
get expectedInDrawer(): number {
|
||||
return (
|
||||
Number(this.todayVaultIn ?? 0) +
|
||||
Number(this.todayInterCashierIn ?? 0) +
|
||||
Number(this.depositTotalWithDd ?? 0) -
|
||||
Number(this.withdrawalTotal ?? 0) -
|
||||
Number(this.todaySettledOut ?? 0) -
|
||||
Number(this.todayInterCashierOut ?? 0)
|
||||
);
|
||||
}
|
||||
|
||||
/** True when any of the day's own legs carries a figure, so the panel is worth showing. */
|
||||
get hasTodayLegs(): boolean {
|
||||
return this.todayVaultIn !== null;
|
||||
}
|
||||
|
||||
get noteRows(): any[] {
|
||||
return this.rows.filter((r) => r.kind !== 'coin');
|
||||
}
|
||||
@@ -122,8 +158,35 @@ export class ClosingCashReportComponent implements OnInit {
|
||||
return this.noteRows.reduce((s, r) => s + Number(r.withdrawalAmount ?? 0), 0);
|
||||
}
|
||||
|
||||
get noteVaultInCount(): number {
|
||||
return this.noteRows.reduce((s, r) => s + Number(r.vaultInCount ?? 0), 0);
|
||||
}
|
||||
|
||||
get noteVaultInAmount(): number {
|
||||
return this.noteRows.reduce((s, r) => s + Number(r.vaultInAmount ?? 0), 0);
|
||||
}
|
||||
|
||||
get noteSettledOutCount(): number {
|
||||
return this.noteRows.reduce((s, r) => s + Number(r.settledOutCount ?? 0), 0);
|
||||
}
|
||||
|
||||
get noteSettledOutAmount(): number {
|
||||
return this.noteRows.reduce((s, r) => s + Number(r.settledOutAmount ?? 0), 0);
|
||||
}
|
||||
|
||||
get noteNetCount(): number {
|
||||
return this.noteVaultInCount + this.noteDepositCount - this.noteWithdrawalCount - this.noteSettledOutCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* What is left in the drawer in notes: everything that came in, less everything that went out.
|
||||
*
|
||||
* Was deposits minus withdrawals, which is the counter's movement rather than the drawer's
|
||||
* contents — it left out the cash drawn from the vault, so a teller holding a ₹500 note saw a net
|
||||
* of zero and had nothing to count against.
|
||||
*/
|
||||
get noteNetAmount(): number {
|
||||
return this.noteDepositAmount - this.noteWithdrawalAmount;
|
||||
return this.noteVaultInAmount + this.noteDepositAmount - this.noteWithdrawalAmount - this.noteSettledOutAmount;
|
||||
}
|
||||
get coinRows(): any[] {
|
||||
return this.rows.filter((r) => r.kind === 'coin');
|
||||
@@ -160,6 +223,10 @@ export class ClosingCashReportComponent implements OnInit {
|
||||
this.openingBalance = res?.openingBalance == null ? null : Number(res.openingBalance);
|
||||
this.closingBalance = res?.closingBalance == null ? null : Number(res.closingBalance);
|
||||
this.cashMovement = res?.cashMovement == null ? null : Number(res.cashMovement);
|
||||
this.todayVaultIn = res?.todayVaultIn == null ? null : Number(res.todayVaultIn);
|
||||
this.todaySettledOut = res?.todaySettledOut == null ? null : Number(res.todaySettledOut);
|
||||
this.todayInterCashierIn = res?.todayInterCashierIn == null ? null : Number(res.todayInterCashierIn);
|
||||
this.todayInterCashierOut = res?.todayInterCashierOut == null ? null : Number(res.todayInterCashierOut);
|
||||
this.loading = false;
|
||||
this.loaded = true;
|
||||
},
|
||||
@@ -176,6 +243,10 @@ export class ClosingCashReportComponent implements OnInit {
|
||||
this.openingBalance = null;
|
||||
this.closingBalance = null;
|
||||
this.cashMovement = null;
|
||||
this.todayVaultIn = null;
|
||||
this.todaySettledOut = null;
|
||||
this.todayInterCashierIn = null;
|
||||
this.todayInterCashierOut = null;
|
||||
this.loading = false;
|
||||
this.loaded = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user