DDS: agent collection entry screen, per-agent GL account, maturity auto close
The Daily Transaction Entry screen no longer composes a Party Tran. An agent records their own round elsewhere; this screen reads back what they wrote down, shows what it adds up to, and settles the day once a clerk has counted the cash against it. Nothing is typed here and nothing is edited - what settles is what the entries say, to the rupee. Agent Master now asks which ledger account the agent's collections pass through, one agent to an account, and offers only the accounts that can carry them. The DDS scheme product is kept out of the agent's own savings list for the same reason the server refuses it: debits are blocked on those accounts, so commission paid into one would go in and never come out. The DDS product carries a Maturity Auto Close setting, asked as Yes/No to match the Auto Interest Post question directly above it, and Batch Processing offers the run that applies it. Also: the report viewer stops printing two money columns ungrouped and stops totalling a column that holds a word, and an agent's birth date cannot be picked later than eighteen years ago. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
57a61b3057
commit
e2eff9914f
@@ -0,0 +1,79 @@
|
||||
<!--
|
||||
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/.
|
||||
-->
|
||||
|
||||
<h2 mat-dialog-title>Pay out {{ data.partyCode }}</h2>
|
||||
|
||||
<mat-dialog-content>
|
||||
<!-- What is being paid and to whom, stated once at the top so the officer confirms against the
|
||||
customer in front of them rather than against a row they clicked a moment ago. -->
|
||||
<div class="po-summary">
|
||||
<div class="po-summary__row">
|
||||
<span class="po-summary__label">Customer</span>
|
||||
<span class="po-summary__value">{{ data.partyName }}</span>
|
||||
</div>
|
||||
<div class="po-summary__row">
|
||||
<span class="po-summary__label">Matured on</span>
|
||||
<span class="po-summary__value">{{ data.maturityDate | dateFormat }}</span>
|
||||
</div>
|
||||
<div class="po-summary__row po-summary__row--amount">
|
||||
<span class="po-summary__label">Amount payable</span>
|
||||
<span class="po-summary__value">{{ data.currentBalance | number: '1.2-2' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (loading) {
|
||||
<mat-progress-bar mode="indeterminate"></mat-progress-bar>
|
||||
} @else {
|
||||
<p class="po-question">Where should this go?</p>
|
||||
|
||||
<mat-radio-group [(ngModel)]="destination" class="po-choices">
|
||||
<mat-radio-button value="own" [disabled]="ownAccounts.length === 0" class="po-choice">
|
||||
<span class="po-choice__title">Into another account of theirs here</span>
|
||||
@if (ownAccounts.length === 0) {
|
||||
<span class="po-choice__note">{{ data.partyName }} has no other savings account at this bank</span>
|
||||
} @else {
|
||||
<span class="po-choice__note">Moved across today</span>
|
||||
}
|
||||
</mat-radio-button>
|
||||
|
||||
@if (destination === 'own' && ownAccounts.length > 0) {
|
||||
<mat-form-field appearance="outline" class="po-account">
|
||||
<mat-label>Account</mat-label>
|
||||
<mat-select [(ngModel)]="selectedAccountNo" panelWidth="min(28rem, 90vw)">
|
||||
@for (account of ownAccounts; track account.id) {
|
||||
<mat-option [value]="account.accountNo">
|
||||
{{ account.accountNo }} · {{ account.productName }}
|
||||
</mat-option>
|
||||
}
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
}
|
||||
|
||||
<mat-radio-button value="other" class="po-choice">
|
||||
<span class="po-choice__title">To an account at another bank</span>
|
||||
<span class="po-choice__note">
|
||||
Held in Matured Deposits Payable, then sent by NEFT or IMPS from Fund Transfers
|
||||
</span>
|
||||
</mat-radio-button>
|
||||
</mat-radio-group>
|
||||
|
||||
@if (destination === 'other') {
|
||||
<!-- Said plainly, because the officer will be asked by the customer when the money arrives. -->
|
||||
<div class="po-callout">
|
||||
The money comes off {{ data.partyCode }} today and sits in the bank's Matured Deposits Payable
|
||||
account until the transfer is made from Fund Transfers — so it is accounted for the whole
|
||||
time, and a failed transfer loses nothing.
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</mat-dialog-content>
|
||||
|
||||
<mat-dialog-actions align="end">
|
||||
<button mat-stroked-button mat-dialog-close>Cancel</button>
|
||||
<button mat-raised-button color="primary" [disabled]="!canPayOut" (click)="payOut()">Pay out</button>
|
||||
</mat-dialog-actions>
|
||||
Reference in New Issue
Block a user