Branch Day open/close now captures a denomination-wise count (carried forward automatically to the next day), and shows an auto-fetched EOD summary at close time -- vault + every cashier's position, a branch-total reconciliation against the book figure, and each cashier's reconciliation/settlement status and transaction count -- so closing the day no longer means separately checking Vault Position and every cashier's own screen by hand. New Vault Position screen (branch-ops menu) mirrors Cashier Position for the teller/vault. Cash Transfer now shows the vault's live per-denomination availability while counting a handout, with a client-side warning before it can be over-counted. New Organization screens for Bank Profile, Branch Profile and Clearing GL Configuration, wired into the Organization landing page and the previously-dead "Bank Profile" admin menu button. Cashier Transaction Entry: TYPE is now Receipt/Payment only (cash-only TXN TP.) on the cashier side, with no change to the clerk dashboard's own Withdrawal Slip/Cheque/Disbursement/Enter Bank Transfer/DD flow beyond adding a new Fund Transfer type alongside Disbursement for a GL credit that isn't a loan payout. Neither TYPE nor TXN TP. offers a blank placeholder option anymore -- a new row starts on a real default instead. Footer no longer polls the business-date config for cashier/clerk roles, who never have permission to read it. Disbursement & Transfer Requests: "Review" now opens the review screen as a popup instead of navigating to a separate route, refreshing the list on close; the review screen recognises the new Fund Transfer request type too, and its non-functional "+ Disbursement Review" tab-styled label is now a plain heading. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
71 lines
2.3 KiB
HTML
71 lines
2.3 KiB
HTML
<!--
|
|
Copyright since 2025 Mifos Initiative
|
|
|
|
This Source Code Form is subject to the terms of the Mozilla Public
|
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
-->
|
|
|
|
<div class="cgc-container">
|
|
<div class="cgc-header">
|
|
<button mat-stroked-button [routerLink]="['/organization']" class="cgc-back">
|
|
<i class="fas fa-arrow-left"></i> Organization
|
|
</button>
|
|
<h2 class="cgc-header__title">Clearing GL Configuration</h2>
|
|
</div>
|
|
<p class="cgc-sub">
|
|
Which GL account backs each clearing role. An unmapped role posts nowhere — map it here before that clearing channel
|
|
goes live.
|
|
</p>
|
|
|
|
@if (errorMsg) {
|
|
<div class="cgc-alert cgc-alert--error">{{ errorMsg }}</div>
|
|
}
|
|
@if (successMsg) {
|
|
<div class="cgc-alert cgc-alert--success">{{ successMsg }}</div>
|
|
}
|
|
|
|
@if (loading) {
|
|
<div class="cgc-loading">Loading…</div>
|
|
} @else {
|
|
<div class="cgc-card">
|
|
<table class="cgc-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Clearing Role</th>
|
|
<th>Description</th>
|
|
<th>Mapped GL Account</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@for (row of rows; track row.configKey) {
|
|
<tr>
|
|
<td>
|
|
<span class="cgc-key">{{ row.configKey }}</span>
|
|
</td>
|
|
<td class="cgc-desc">{{ row.description }}</td>
|
|
<td>
|
|
<mat-form-field appearance="outline" subscriptSizing="dynamic" class="cgc-select">
|
|
<mat-select
|
|
[value]="row.glAccountId"
|
|
[disabled]="savingKey === row.configKey"
|
|
(selectionChange)="onSelect(row, $event.value)"
|
|
>
|
|
<mat-option [value]="null">— Not mapped —</mat-option>
|
|
@for (o of glAccountOptions; track o.id) {
|
|
<mat-option [value]="o.id">{{ o.glCode }} · {{ o.name }}</mat-option>
|
|
}
|
|
</mat-select>
|
|
</mat-form-field>
|
|
@if (!row.glAccountId) {
|
|
<span class="cgc-unmapped">Unmapped</span>
|
|
}
|
|
</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
}
|
|
</div>
|