diff --git a/src/app/app.module.ts b/src/app/app.module.ts index b42ed9907..f02a44e0e 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -39,6 +39,7 @@ import { AccountingModule } from './accounting/accounting.module'; import { SystemModule } from './system/system.module'; import { ProductsModule } from './products/products.module'; import { OrganizationModule } from './organization/organization.module'; +import { CashierModule } from './cashier/cashier.module'; import { TemplatesModule } from './templates/templates.module'; import { UsersModule } from './users/users.module'; import { ReportsModule } from './reports/reports.module'; @@ -143,6 +144,7 @@ export function HttpLoaderFactory(http: HttpClient) { SystemModule, ProductsModule, OrganizationModule, + CashierModule, TemplatesModule, UsersModule, NotificationsModule, diff --git a/src/app/cashier/cash-exchange-entry/cash-exchange-entry.component.html b/src/app/cashier/cash-exchange-entry/cash-exchange-entry.component.html new file mode 100644 index 000000000..4950989e4 --- /dev/null +++ b/src/app/cashier/cash-exchange-entry/cash-exchange-entry.component.html @@ -0,0 +1,160 @@ + + +
Customer gives notes/coins and takes equal-value change. Net amount must be ₹0.
+All transfers, settlements, and inter-cashier movements. Reverse any active transaction.
+| # | +Date | +From | +To | +Amount | +Note | +By | +Status | +Action | +
|---|---|---|---|---|---|---|---|---|
| {{ r.id }} | +{{ r.date }} | +{{ r.fromParty }} | +{{ r.toParty }} | +₹{{ r.amount | number: '1.2-2' }} | +{{ r.note || '—' }} | +{{ r.performedByUsername || '—' }} | ++ + {{ r.isReversed ? 'Reversed' : 'Active' }} + + | ++ @if (!r.isReversed) { + + } + | +
Cashier returns denomination-wise cash to teller / vault at end of day.
+| Denomination | +Count | +Amount | +
|---|---|---|
| Bank Notes | +||
| + {{ d.label }} + | +
+
+
+
+
+
+ |
+ ₹{{ subtotal(d) | number: '1.2-2' }} | +
| Coins | +||
| + {{ d.label }} + | +
+
+
+
+
+
+ |
+ ₹{{ subtotal(d) | number: '1.2-2' }} | +
| No active denominations. Add some in Cash Denomination. | +||
Move cash denomination-wise from one party to another (e.g. Vault → Cashier for opening).
+| Denomination | +Count | +Amount | +
|---|---|---|
| Bank Notes | +||
| + {{ d.label }} + | +
+
+
+
+
+
+ |
+ ₹{{ subtotal(d) | number: '1.2-2' }} | +
| Coins | +||
| + {{ d.label }} + | +
+
+
+
+
+
+ |
+ ₹{{ subtotal(d) | number: '1.2-2' }} | +
| No active denominations. Add some in Cash Denomination. | +||
+ Denomination-wise net cash held by a cashier as of a date (allocations − settlements − inter-cashier transfers). +
+| Denomination | +Count | +Amount | +
|---|---|---|
| + ₹{{ d.denominationValue }} + | +{{ d.count }} | +₹{{ d.amount | number: '1.2-2' }} | +
| Denomination | +Count | +Amount | +
|---|---|---|
| + ₹{{ d.denominationValue }} + | +{{ d.count }} | +₹{{ d.amount | number: '1.2-2' }} | +
Denomination-wise deposit, withdrawal and net cash position for the selected day.
+| Denomination | +Deposit Pcs | +Deposit Amt | +Withdrawal Pcs | +Withdrawal Amt | +Net Pcs | +Net Amount | +
|---|---|---|---|---|---|---|
| + ₹{{ r.denominationValue }} + | +{{ r.depositCount }} | +₹{{ r.depositAmount | number: '1.2-2' }} | +{{ r.withdrawalCount }} | +₹{{ r.withdrawalAmount | number: '1.2-2' }} | +0 ? '#16a34a' : r.netCount < 0 ? '#dc2626' : '#94a3b8'" + > + {{ r.netCount > 0 ? '+' : '' }}{{ r.netCount }} + | +0 ? '#16a34a' : r.netCount < 0 ? '#dc2626' : '#94a3b8'" + > + {{ r.netCount >= 0 ? '' : '−' }}₹{{ (r.netAmount < 0 ? -r.netAmount : r.netAmount) | number: '1.2-2' }} + | +
| Denomination | +Deposit Pcs | +Deposit Amt | +Withdrawal Pcs | +Withdrawal Amt | +Net Pcs | +Net Amount | +
|---|---|---|---|---|---|---|
| + ₹{{ r.denominationValue }} + | +{{ r.depositCount }} | +₹{{ r.depositAmount | number: '1.2-2' }} | +{{ r.withdrawalCount }} | +₹{{ r.withdrawalAmount | number: '1.2-2' }} | +0 ? '#16a34a' : r.netCount < 0 ? '#dc2626' : '#94a3b8'" + > + {{ r.netCount > 0 ? '+' : '' }}{{ r.netCount }} + | +0 ? '#16a34a' : r.netCount < 0 ? '#dc2626' : '#94a3b8'" + > + {{ r.netCount >= 0 ? '' : '−' }}₹{{ (r.netAmount < 0 ? -r.netAmount : r.netAmount) | number: '1.2-2' }} + | +
All recorded cash exchanges (notes/coins swapped at the counter).
+| # | +Date | +Amount | +Note | +By | +Recorded | +
|---|---|---|---|---|---|
| {{ e.id }} | +{{ e.exchangeDate || '—' }} | +₹{{ e.exchangeAmount | number: '1.2-2' }} | +{{ e.note || '—' }} | +{{ e.performedByUsername || '—' }} | +{{ e.createdAt || '—' }} | +
| No cash exchanges recorded yet. | +|||||
Cash transactions at or above the threshold (default ₹50,000 — CTR / AML monitoring).
+| Txn # | +Account No | +CIF | +Date | +Amount | +
|---|---|---|---|---|
| {{ r.txnId }} | +{{ r.accountNo || '—' }} | +{{ r.cifNo || '—' }} | +{{ r.txnDate || '—' }} | +₹{{ r.totalAmount | number: '1.2-2' }} | +
| No transactions at or above ₹{{ threshold | number }}. | +||||
Move denomination-wise cash between two cashiers within the same teller.
+| Denomination | +Count | +Amount | +
|---|---|---|
| Bank Notes | +||
| + {{ d.label }} + | +
+
+
+
+
+
+ |
+ ₹{{ subtotal(d) | number: '1.2-2' }} | +
| Coins | +||
| + {{ d.label }} + | +
+
+
+
+
+
+ |
+ ₹{{ subtotal(d) | number: '1.2-2' }} | +
| No active denominations. Add some in Cash Denomination. | +||
Compare physical denomination count with system expected balance. Highlights variance.
+| Denomination | +Expected | +Physical | +Variance | +
|---|---|---|---|
| + ₹{{ row.denominationValue }} + | +{{ row.expectedCount }} | +
+
+
+
+
+
+ |
+ 0 ? '#16a34a' : row.varianceCount < 0 ? '#dc2626' : '#94a3b8' + " + > + {{ row.varianceCount > 0 ? '+' : '' }}{{ row.varianceCount }} (₹{{ + row.varianceCount * row.denominationValue | number: '1.0-0' + }}) + | +
| Denomination | +Expected | +Physical | +Variance | +
|---|---|---|---|
| + ₹{{ row.denominationValue }} + | +{{ row.expectedCount }} | +
+
+
+
+
+
+ |
+ 0 ? '#16a34a' : row.varianceCount < 0 ? '#dc2626' : '#94a3b8' + " + > + {{ row.varianceCount > 0 ? '+' : '' }}{{ row.varianceCount }} (₹{{ + row.varianceCount * row.denominationValue | number: '1.0-0' + }}) + | +
| Date | +Cashier | +Expected | +Physical | +Variance | +Status | +By | +
|---|---|---|---|---|---|---|
| {{ r.reconDate }} | +{{ r.cashierName || r.cashierId }} | +₹{{ r.expectedAmount | number: '1.2-2' }} | +₹{{ r.physicalAmount | number: '1.2-2' }} | +0 ? '#16a34a' : r.variance < 0 ? '#dc2626' : '#94a3b8'"> + {{ r.variance >= 0 ? '+' : '' }}₹{{ r.variance | number: '1.2-2' }} + | ++ {{ r.status }} + | +{{ r.performedByUsername }} | +