Files
cbsnexora/src/app/clients/clients-view/client-actions/close-client/close-client.component.html
T
AdityaandClaude Opus 4.7 325228c514 feat: letter-mgmt module + digital UPI/IMPS/ATM-POS reports + header redesign
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>
2026-05-19 10:09:06 +05:30

85 lines
3.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="ca-root">
<!-- HERO -->
<div class="ca-hero">
<div class="ca-hero-icon"><fa-icon icon="times-circle"></fa-icon></div>
<div class="ca-hero-text">
<div class="ca-hero-eyebrow">Client Action</div>
<h2 class="ca-hero-title">{{ 'labels.heading.Close Client' | translate }}</h2>
<p class="ca-hero-sub">
Closing the client moves them to a <strong>Closed</strong> state. Outstanding loans or active savings must be
settled or transferred before closure is permitted.
</p>
</div>
</div>
<form [formGroup]="closeClientForm" (ngSubmit)="submit()" class="ca-card">
<div class="ca-card-body">
<div class="ca-form-row">
<mat-form-field appearance="outline" (click)="closureDatePicker.open()">
<mat-label>{{ 'labels.inputs.Closed On Date' | translate }}</mat-label>
<input
matInput
[min]="minDate"
[max]="maxDate"
[matDatepicker]="closureDatePicker"
required
formControlName="closureDate"
/>
<mat-datepicker-toggle matSuffix [for]="closureDatePicker"></mat-datepicker-toggle>
<mat-datepicker #closureDatePicker></mat-datepicker>
@if (closeClientForm.controls.closureDate.hasError('required')) {
<mat-error>
{{ 'labels.inputs.Closed On 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.Closure Reason' | translate }}</mat-label>
<mat-select formControlName="closureReasonId">
@for (reason of closureData; track reason) {
<mat-option [value]="reason.id">{{ reason.name }}</mat-option>
}
</mat-select>
@if (closeClientForm.controls.closureReasonId.hasError('required')) {
<mat-error>
{{ 'labels.inputs.Closure Reason' | translate }} {{ 'labels.commons.is' | translate }}
<strong>{{ 'labels.commons.required' | translate }}</strong>
</mat-error>
}
</mat-form-field>
</div>
<div class="ca-notice">
<fa-icon icon="exclamation-triangle"></fa-icon>
<span>
This action is <strong>irreversible</strong>. Once closed, the client cannot transact or open new accounts.
Use <em>Reactivate</em> only if the closure was made in error.
</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]="!closeClientForm.valid">
<fa-icon icon="check"></fa-icon>
<span>{{ 'labels.buttons.Confirm' | translate }}</span>
</button>
</div>
</form>
</div>