letter-mgmt (new module): - Notice page: overdue loan list with filters, KPI strip, bulk actions, call disposition logging (Promise-to-Pay, Not Reachable, etc.), Speed Post dispatch dialog with consignment + post-office tracking, PDF preview + download, call-contact dialog with primary / alt / family / nominee numbers and per-contact disposition history. - Certificates: Loan Interest, Share, Balance, Form 60 (no-PAN flow), Form 15G/H (auto age-based), Hypothecation, NOC - each with shared preview dialog (six tone variants) and jsPDF generator using a common letterhead / summary-grid / signature-seal helper. digital: - IMPS module: report (P2A/P2P/Aadhaar tabs) + entry form with MMID/mobile lookup, NPCI switch resolve-to-A/C+IFSC BANL flow, sender autocomplete, hide sender field for P2P/Aadhaar, charges + 18% GST + waive checkbox, per-sender today-only history dialog. - UPI report with app-mix tab and full transaction filtering. - ATM/POS/ECOM hub with three ticket cards routing to today/status/cycle. - NEFT/RTGS entry: sender-account autocomplete, charges + GST + waive, field reorder (sender before amount), NEFT cap / RTGS floor validation, History button opening per-sender today's transactions. - NEFT/RTGS report: horizontal-bar trend leaderboard replacing tall bars. shell + theme: - Header redesigned with IBM Plex Sans 12/500 typography, 11-column grid per row, top-accent hover indicator, bordered cells via grid-gap. - Live KPI ticker below menu (CASH, TXN TODAY, CLEARING IN/OUT, NPA, CASA, CD RATIO, RBI CIRC, REPO) with marquee scroll, pause-on-hover, brand-blue gradient, amber bottom strip, pulsing red LIVE chip. - Sidebar 'KYC Management' -> 'KYC & ReKYC Management'. - Letter Mgmt / certificate menu items wired with green icon hints for items that have a working page. access-control: - MFA card layout compacted; method header inlines back button + title. icons: - Register faTruck/TruckFast, faEllipsisV/H, faCommentDots. - Add IBM Plex Sans Google Fonts import to index.html. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
98 lines
3.8 KiB
HTML
98 lines
3.8 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="ca-root">
|
|
<!-- HERO -->
|
|
<div class="ca-hero">
|
|
<div class="ca-hero-icon"><fa-icon icon="exchange"></fa-icon></div>
|
|
<div class="ca-hero-text">
|
|
<div class="ca-hero-eyebrow">Client Action</div>
|
|
<h2 class="ca-hero-title">{{ 'labels.heading.Transfer Client' | translate }}</h2>
|
|
<p class="ca-hero-sub">
|
|
Move this client to a different office or branch. The destination office will need to
|
|
<strong>accept</strong> the proposed transfer before it takes effect. The client's accounts move with them.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<form [formGroup]="transferClientForm" (ngSubmit)="submit()" class="ca-card">
|
|
<div class="ca-card-body">
|
|
<div class="ca-form-row">
|
|
<mat-form-field appearance="outline">
|
|
<mat-label>{{ 'labels.inputs.Office' | translate }}</mat-label>
|
|
<mat-select required formControlName="destinationOfficeId">
|
|
@for (office of officeData; track office) {
|
|
<mat-option [value]="office.id">{{ office.name }}</mat-option>
|
|
}
|
|
</mat-select>
|
|
@if (transferClientForm.controls.destinationOfficeId.hasError('required')) {
|
|
<mat-error>
|
|
{{ 'labels.inputs.Office' | translate }} {{ 'labels.commons.is' | translate }}
|
|
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
|
</mat-error>
|
|
}
|
|
</mat-form-field>
|
|
</div>
|
|
|
|
<div class="ca-form-row">
|
|
<mat-form-field appearance="outline" (click)="transferDatePicker.open()">
|
|
<mat-label>{{ 'labels.inputs.Transfer Date' | translate }}</mat-label>
|
|
<input
|
|
matInput
|
|
[min]="minDate"
|
|
[max]="maxDate"
|
|
[matDatepicker]="transferDatePicker"
|
|
required
|
|
formControlName="transferDate"
|
|
/>
|
|
<mat-datepicker-toggle matSuffix [for]="transferDatePicker"></mat-datepicker-toggle>
|
|
<mat-datepicker #transferDatePicker></mat-datepicker>
|
|
@if (transferClientForm.controls.transferDate.hasError('required')) {
|
|
<mat-error>
|
|
{{ 'labels.inputs.Transfer Date' | translate }} {{ 'labels.commons.is' | translate }}
|
|
<strong>{{ 'labels.commons.required' | translate }}</strong>
|
|
</mat-error>
|
|
}
|
|
</mat-form-field>
|
|
</div>
|
|
|
|
<div class="ca-form-row">
|
|
<mat-form-field appearance="outline">
|
|
<mat-label>{{ 'labels.inputs.Note' | translate }}</mat-label>
|
|
<textarea
|
|
matInput
|
|
formControlName="note"
|
|
cdkTextareaAutosize
|
|
cdkAutosizeMinRows="2"
|
|
placeholder="Optional — reason or context for the transfer"
|
|
></textarea>
|
|
</mat-form-field>
|
|
</div>
|
|
|
|
<div class="ca-notice">
|
|
<fa-icon icon="info-circle"></fa-icon>
|
|
<span>
|
|
The transfer is created as <strong>proposed</strong> until the destination office accepts it. Until then it
|
|
can be withdrawn from the client's <em>Actions → Undo Transfer</em> menu.
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ca-actions">
|
|
<button type="button" class="ca-btn ca-btn--cancel" [routerLink]="['../../']">
|
|
<fa-icon icon="times"></fa-icon>
|
|
<span>{{ 'labels.buttons.Cancel' | translate }}</span>
|
|
</button>
|
|
<button type="submit" class="ca-btn ca-btn--confirm" [disabled]="!transferClientForm.valid">
|
|
<fa-icon icon="paper-plane"></fa-icon>
|
|
<span>{{ 'labels.buttons.Confirm' | translate }}</span>
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</div>
|