Systematic file-by-file audit of demo-backup against dev to find any remaining instances of the same silent-drop pattern from the earlier merge (git's 3-way auto-resolve keeping demo-backup's side wherever it had independently touched nearby lines, even when dev's side was a genuine, unrelated addition). Restored: - clients.module.ts: missing ClientFamilyMemberChildDialogComponent registration (component existed but was never wired in) - client-family-member-dialog: full children-management flow (checkbox, form array, child dialog integration, view/edit summary blocks) - edit-client: FIR-exception flow for inaccessible old mobile numbers, and a hardened detectSensitiveFieldChanges() (null-guard, phone-digit normalization, dirty-checked comparisons to avoid false-positive Verify-Contact-Change prompts) - shell.component.ts: withdrawal-review URL matcher extended to cover the Share Withdrawal Request review route - fiu.component.html: AML alert status filter and monthly CTR reports table UI (backing logic already existed unused in the .ts) - Shares module: Passbook tab (component existed but had no route or tab link), running-balance/resolution columns on the transactions tab, subscript-sizing fixes and a pill-style filter-bar redesign on Share Holders - Savings/Share product accounting steps: Payment-Channel-to-Fund- Source mapping section, and Share Reference account restructuring - pending-client-edits: email status badges + "View Email" button (dialog component existed but nothing on this list triggered it) Everything else that still differs from dev was individually verified as either demo-backup's own independent work (Investment/Loan Origination/NPA/RBI-OSS modules, the Approval Center tab-nav redesign, AML/compliance review features, bank-name rebrand in demo seed data) or purely cosmetic formatting differences — left untouched.
81 lines
3.3 KiB
HTML
81 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="tab-container mat-typography">
|
|
<div class="m-b-10">
|
|
<h3>{{ 'labels.heading.All Transactions' | translate }}</h3>
|
|
</div>
|
|
|
|
<div class="mat-elevation-z1 m-b-25">
|
|
<table mat-table [dataSource]="dataSource">
|
|
<ng-container matColumnDef="transactionDate">
|
|
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Transaction Date' | translate }}</th>
|
|
<td mat-cell *matCellDef="let transaction">{{ transaction.purchasedDate | dateFormat }}</td>
|
|
</ng-container>
|
|
|
|
<ng-container matColumnDef="transactionType">
|
|
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Transaction Type' | translate }}</th>
|
|
<td mat-cell *matCellDef="let transaction">
|
|
{{ transaction.type.value }}
|
|
{{ transaction.type.value !== 'Charge Payment' ? '(' + transaction.status.value + ')' : '' }}
|
|
</td>
|
|
</ng-container>
|
|
|
|
<ng-container matColumnDef="totalShares">
|
|
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Total Shares' | translate }}</th>
|
|
<td mat-cell *matCellDef="let transaction">{{ transaction.numberOfShares }}</td>
|
|
</ng-container>
|
|
|
|
<ng-container matColumnDef="purchasedOrRedeemedPrice">
|
|
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Purhcased/Redeemed Price' | translate }}</th>
|
|
<td mat-cell *matCellDef="let transaction">
|
|
{{ shareAccountData.currency.displaySymbol }} {{ transaction.purchasedPrice }}
|
|
</td>
|
|
</ng-container>
|
|
|
|
<ng-container matColumnDef="chargeAmount">
|
|
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Charge Amount' | translate }}</th>
|
|
<td mat-cell *matCellDef="let transaction">
|
|
{{ shareAccountData.currency.displaySymbol }} {{
|
|
transaction.type.value === 'Charge Payment' ? transaction.amount : transaction.chargeAmount
|
|
}}
|
|
</td>
|
|
</ng-container>
|
|
|
|
<ng-container matColumnDef="amountRecievedOrReturned">
|
|
<th mat-header-cell *matHeaderCellDef>{{ 'labels.inputs.Amount Recieved/Returned' | translate }}</th>
|
|
<td mat-cell *matCellDef="let transaction">
|
|
{{ shareAccountData.currency.displaySymbol }} {{ transaction.amount }}
|
|
</td>
|
|
</ng-container>
|
|
|
|
<ng-container matColumnDef="runningBalance">
|
|
<th mat-header-cell *matHeaderCellDef>Share Balance</th>
|
|
<td mat-cell *matCellDef="let transaction">{{ transaction.runningBalance }}</td>
|
|
</ng-container>
|
|
|
|
<ng-container matColumnDef="resolutionMeeting">
|
|
<th mat-header-cell *matHeaderCellDef>Resolution No. / Meeting Date</th>
|
|
<td mat-cell *matCellDef="let transaction">
|
|
@if (transaction.type.value === 'Redeem') {
|
|
{{ transaction.resolutionNumber || '—' }}
|
|
@if (transaction.meetingDate) {
|
|
({{ transaction.meetingDate | dateFormat }})
|
|
}
|
|
} @else {
|
|
—
|
|
}
|
|
</td>
|
|
</ng-container>
|
|
|
|
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
|
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
|
</table>
|
|
</div>
|
|
</div>
|