feat: non-individual entity UI improvements — hide individual-only sections, fix legal form display, send extended fields to API

- Hide Family Members tab/section for non-individual entities in client view, create flow, and preview
- Hide Financial & Classification section for non-individual entities in personal data and preview
- Fix legal form column in clients list — fetch legalForm from client API for correct display
- Add person/business icon before client name in list rows
- Remove unsupportedNpd filter — send authorizedSignatory, additionalInfo, dateOfRegistration to API
- Add registration number format hint (mat-hint) based on constitution type
- Add spacing between verification row and constitution type dropdowns
- Reduce table cell padding and prevent action buttons from being clipped
- Add missing MPL-2.0 license headers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Aditya
2026-04-04 15:10:51 +05:30
co-authored by Claude Opus 4.6
parent ab01111424
commit b890d24bb7
522 changed files with 51991 additions and 21885 deletions
+280 -543
View File
@@ -6,552 +6,289 @@
file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<div class="container">
<mat-card>
<div class="layout-row responsive-column gap-20px">
<div class="flex-50">
<mat-nav-list>
<div #office>
<mat-list-item *mifosxHasPermission="'READ_OFFICE'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['offices']">
<mat-icon matListIcon>
<fa-icon icon="building" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Manage Offices' | translate }}
@if (arrowBooleans[0]) {
<p matLine [routerLink]="['offices']" class="menu-explanation">
{{ 'labels.text.Add new office or modify or deactivate office' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[0]) {
<fa-icon (click)="arrowBooleansToggle(0)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[0]) {
<fa-icon (click)="arrowBooleansToggle(0)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #holidays>
<mat-list-item *mifosxHasPermission="'READ_HOLIDAY'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['holidays']">
<mat-icon matListIcon>
<fa-icon icon="calendar-alt" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Manage Holidays' | translate }}
@if (arrowBooleans[1]) {
<p matLine [routerLink]="['holidays']" class="menu-explanation">
{{ 'labels.text.Define holidays for office' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[1]) {
<fa-icon (click)="arrowBooleansToggle(1)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[1]) {
<fa-icon (click)="arrowBooleansToggle(1)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #employee>
<mat-list-item *mifosxHasPermission="'READ_STAFF'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['employees']">
<mat-icon matListIcon>
<fa-icon icon="user" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Manage Employees' | translate }}
@if (arrowBooleans[2]) {
<p matLine [routerLink]="['employees']" class="menu-explanation">
{{ 'labels.text.Employee represents loan officers' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[2]) {
<fa-icon (click)="arrowBooleansToggle(2)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[2]) {
<fa-icon (click)="arrowBooleansToggle(2)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #standinginstructions>
<mat-list-item *mifosxHasPermission="'READ_STANDINGINSTRUCTION'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['standing-instructions-history']">
<mat-icon matListIcon>
<fa-icon icon="book" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Standing Instructions History' | translate }}
@if (arrowBooleans[3]) {
<p matLine [routerLink]="['standing-instructions-history']" class="menu-explanation">
{{ 'labels.text.View logged history' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[3]) {
<fa-icon (click)="arrowBooleansToggle(3)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[3]) {
<fa-icon (click)="arrowBooleansToggle(3)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #investor>
<mat-list-item *mifosxHasPermission="'READ_OFFICE'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['investors']">
<mat-icon>
<fa-icon icon="user-tie" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.text.Investors' | translate }}
@if (arrowBooleans[4]) {
<p matLine [routerLink]="['investors']" class="menu-explanation">
{{ 'labels.text.View the loan account details associated with the investors' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[4]) {
<fa-icon (click)="arrowBooleansToggle(4)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[4]) {
<fa-icon (click)="arrowBooleansToggle(4)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #fundmapping>
<mat-list-item *mifosxHasPermission="'READ_OFFICE'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['fund-mapping']">
<mat-icon matListIcon>
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Fund Mapping' | translate }}
@if (arrowBooleans[5]) {
<p matLine [routerLink]="['fund-mapping']" class="menu-explanation">
{{ 'labels.text.Bulk entry screen for mapping' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[5]) {
<fa-icon (click)="arrowBooleansToggle(5)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[5]) {
<fa-icon (click)="arrowBooleansToggle(5)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #passwordpreferences>
<mat-list-item *mifosxHasPermission="'READ_PASSWORD_VALIDATION_POLICY'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['password-preferences']">
<mat-icon>
<fa-icon icon="lock" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Password Preferences' | translate }}
@if (arrowBooleans[6]) {
<p matLine [routerLink]="['password-preferences']" class="menu-explanation">
{{ 'labels.text.The usage of stronger passwords' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[6]) {
<fa-icon (click)="arrowBooleansToggle(6)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[6]) {
<fa-icon (click)="arrowBooleansToggle(6)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #provisioning>
<mat-list-item *mifosxHasPermission="'VIEW_PROVISIONS'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['provisioning-criteria']">
<mat-icon matListIcon>
<fa-icon icon="edit" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Loan Provisioning Criteria' | translate }}
@if (arrowBooleans[7]) {
<p matLine [routerLink]="['provisioning-criteria']" class="menu-explanation">
{{ 'labels.text.Loan Provisioning Criteria Organization' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[7]) {
<fa-icon (click)="arrowBooleansToggle(7)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[7]) {
<fa-icon (click)="arrowBooleansToggle(7)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #entitydatatable>
<mat-list-item *mifosxHasPermission="'READ_ENTITY_DATATABLE_CHECK'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['entity-data-table-checks']">
<mat-icon matListIcon>
<fa-icon icon="check" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Entity Data Table Checks' | translate }}
@if (arrowBooleans[8]) {
<p matLine [routerLink]="['entity-data-table-checks']" class="menu-explanation">
{{ 'labels.text.Entity Data Table Checks Organization' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[8]) {
<fa-icon (click)="arrowBooleansToggle(8)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[8]) {
<fa-icon (click)="arrowBooleansToggle(8)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
</mat-nav-list>
</div>
<div class="flex-50">
<mat-nav-list>
<div #addEditCurrency>
<mat-list-item *mifosxHasPermission="'READ_CURRENCY'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['currencies']">
<mat-icon matListIcon>
<fa-icon icon="cogs" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Currency Configuration' | translate }}
@if (arrowBooleans[9]) {
<p matLine [routerLink]="['currencies']" class="menu-explanation">
{{ 'labels.text.Currencies available across organization' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[9]) {
<fa-icon (click)="arrowBooleansToggle(9)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[9]) {
<fa-icon (click)="arrowBooleansToggle(9)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #manageFunds>
<mat-list-item *mifosxHasPermission="'READ_FUND'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['manage-funds']">
<mat-icon matListIcon>
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Manage Funds' | translate }}
@if (arrowBooleans[10]) {
<p matLine [routerLink]="['manage-funds']" class="menu-explanation">
{{ 'labels.text.Funds are associated with loans' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[10]) {
<fa-icon (click)="arrowBooleansToggle(10)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[10]) {
<fa-icon (click)="arrowBooleansToggle(10)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #manageLoanOriginators>
<mat-list-item *mifosxHasPermission="'READ_LOAN_ORIGINATOR'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['manage-loan-originators']">
<mat-icon matListIcon>
<fa-icon icon="edit" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Manage Loan Originators' | translate }}
@if (arrowBooleans[18]) {
<p matLine [routerLink]="['manage-loan-originators']" class="menu-explanation">
{{ 'labels.text.Loan Originators are associated with loan accounts' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[18]) {
<fa-icon (click)="arrowBooleansToggle(18)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[18]) {
<fa-icon (click)="arrowBooleansToggle(18)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #bulkloan>
<mat-list-item *mifosxHasPermission="'BULKREASSIGN_LOAN'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['bulkloan']">
<mat-icon>
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Bulk Loan Reassignment' | translate }}
@if (arrowBooleans[11]) {
<p matLine [routerLink]="['bulkloan']" class="menu-explanation">
{{ 'labels.text.Easy way to reassign all the loan' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[11]) {
<fa-icon (click)="arrowBooleansToggle(11)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[11]) {
<fa-icon (click)="arrowBooleansToggle(11)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #tellers>
<mat-list-item *mifosxHasPermission="'READ_TELLER'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['tellers']">
<mat-icon>
<fa-icon icon="money-bill-alt" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Teller / Cashier Management' | translate }}
@if (arrowBooleans[12]) {
<p matLine [routerLink]="['tellers']" class="menu-explanation">
{{ 'labels.text.Manage Tellers / Cashiers' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[12]) {
<fa-icon (click)="arrowBooleansToggle(12)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[12]) {
<fa-icon (click)="arrowBooleansToggle(12)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #workingDays>
<mat-list-item *mifosxHasPermission="'READ_WORKINGDAYS'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['working-days']">
<mat-icon>
<fa-icon icon="calendar-alt" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Working Days' | translate }}
@if (arrowBooleans[13]) {
<p matLine [routerLink]="['working-days']" class="menu-explanation">
{{ 'labels.text.Working days and configure behaviour of payments' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[13]) {
<fa-icon (click)="arrowBooleansToggle(13)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[13]) {
<fa-icon (click)="arrowBooleansToggle(13)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #paymenttypes>
<mat-list-item *mifosxHasPermission="'READ_PAYMENTTYPE'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['payment-types']">
<mat-icon matListIcon>
<fa-icon icon="dollar-sign" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Payment Type' | translate }}
@if (arrowBooleans[14]) {
<p matLine [routerLink]="['payment-types']" class="menu-explanation">
{{ 'labels.text.Manage payment types' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[14]) {
<fa-icon (click)="arrowBooleansToggle(14)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[14]) {
<fa-icon (click)="arrowBooleansToggle(14)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #smscampaigns>
<mat-list-item *mifosxHasPermission="'VIEW_SMSCAMPAIGNS'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['sms-campaigns']">
<mat-icon matListIcon>
<fa-icon icon="envelope" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.SMS Campaigns' | translate }}
@if (arrowBooleans[15]) {
<p matLine [routerLink]="['sms-campaigns']" class="menu-explanation">
{{ 'labels.text.Define SMS Campaigns for Organization' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[15]) {
<fa-icon (click)="arrowBooleansToggle(15)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[15]) {
<fa-icon (click)="arrowBooleansToggle(15)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #adhocquery>
<mat-list-item *mifosxHasPermission="'VIEW_ADHOC'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['adhoc-query']">
<mat-icon matListIcon>
<fa-icon icon="chevron-right" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.AdHocQuery' | translate }}
@if (arrowBooleans[16]) {
<p matLine [routerLink]="['adhoc-query']" class="menu-explanation">
{{ 'labels.text.Define AdHocQuery for Organization' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[16]) {
<fa-icon (click)="arrowBooleansToggle(16)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[16]) {
<fa-icon (click)="arrowBooleansToggle(16)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
<div #bulkimport>
<mat-list-item *mifosxHasPermission="'VIEW_BULKIMPORT'">
<div class="menu-list-item-content">
<div class="menu-left-section" [routerLink]="['bulk-import']">
<mat-icon matListIcon>
<fa-icon icon="upload" size="sm"></fa-icon>
</mat-icon>
<div matLine>
{{ 'labels.heading.Bulk Import' | translate }}
@if (arrowBooleans[17]) {
<p matLine [routerLink]="['bulk-import']" class="menu-explanation">
{{ 'labels.text.Bulk data import using excel spreadsheet templates' | translate }}
</p>
}
</div>
</div>
<div class="menu-right-section">
@if (!arrowBooleans[17]) {
<fa-icon (click)="arrowBooleansToggle(17)" icon="arrow-down" size="md"></fa-icon>
}
@if (arrowBooleans[17]) {
<fa-icon (click)="arrowBooleansToggle(17)" icon="arrow-up" size="md"></fa-icon>
}
</div>
</div>
</mat-list-item>
</div>
</mat-nav-list>
</div>
<div class="org-container">
<!-- Page header -->
<div class="org-header">
<div class="org-header__icon">
<i class="fas fa-sitemap"></i>
</div>
</mat-card>
<div>
<h1 class="org-header__title">{{ 'labels.heading.Organization' | translate }}</h1>
<p class="org-header__sub">Manage offices, employees, currencies and other organizational settings</p>
</div>
</div>
<!-- Card Grid -->
<div class="org-grid">
<!-- Manage Offices -->
<div #office>
<a class="org-card" [routerLink]="['offices']" *mifosxHasPermission="'READ_OFFICE'">
<div class="org-card__icon org-card__icon--blue">
<i class="fas fa-building"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Manage Offices' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Add new office or modify or deactivate office' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Currency Configuration -->
<div #addEditCurrency>
<a class="org-card" [routerLink]="['currencies']" *mifosxHasPermission="'READ_CURRENCY'">
<div class="org-card__icon org-card__icon--amber">
<i class="fas fa-cogs"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Currency Configuration' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Currencies available across organization' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Manage Holidays -->
<div #holidays>
<a class="org-card" [routerLink]="['holidays']" *mifosxHasPermission="'READ_HOLIDAY'">
<div class="org-card__icon org-card__icon--green">
<i class="fas fa-calendar-alt"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Manage Holidays' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Define holidays for office' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Manage Funds -->
<div #manageFunds>
<a class="org-card" [routerLink]="['manage-funds']" *mifosxHasPermission="'READ_FUND'">
<div class="org-card__icon org-card__icon--emerald">
<i class="fas fa-money-bill-alt"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Manage Funds' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Funds are associated with loans' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Manage Employees -->
<div #employee>
<a class="org-card" [routerLink]="['employees']" *mifosxHasPermission="'READ_STAFF'">
<div class="org-card__icon org-card__icon--purple">
<i class="fas fa-user"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Manage Employees' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Employee represents loan officers' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Manage Loan Originators -->
<div #manageLoanOriginators>
<a class="org-card" [routerLink]="['manage-loan-originators']" *mifosxHasPermission="'READ_LOAN_ORIGINATOR'">
<div class="org-card__icon org-card__icon--indigo">
<i class="fas fa-edit"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Manage Loan Originators' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Loan Originators are associated with loan accounts' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Standing Instructions History -->
<div #standinginstructions>
<a class="org-card" [routerLink]="['standing-instructions-history']" *mifosxHasPermission="'READ_STANDINGINSTRUCTION'">
<div class="org-card__icon org-card__icon--slate">
<i class="fas fa-book"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Standing Instructions History' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.View logged history' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Bulk Loan Reassignment -->
<div #bulkloan>
<a class="org-card" [routerLink]="['bulkloan']" *mifosxHasPermission="'BULKREASSIGN_LOAN'">
<div class="org-card__icon org-card__icon--orange">
<i class="fas fa-money-bill-alt"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Bulk Loan Reassignment' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Easy way to reassign all the loan' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Investors -->
<div #investor>
<a class="org-card" [routerLink]="['investors']" *mifosxHasPermission="'READ_OFFICE'">
<div class="org-card__icon org-card__icon--teal">
<i class="fas fa-user-tie"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.text.Investors' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.View the loan account details associated with the investors' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Teller / Cashier Management -->
<div #tellers>
<a class="org-card" [routerLink]="['tellers']" *mifosxHasPermission="'READ_TELLER'">
<div class="org-card__icon org-card__icon--cyan">
<i class="fas fa-cash-register"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Teller / Cashier Management' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Manage Tellers / Cashiers' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Fund Mapping -->
<div #fundmapping>
<a class="org-card" [routerLink]="['fund-mapping']" *mifosxHasPermission="'READ_OFFICE'">
<div class="org-card__icon org-card__icon--rose">
<i class="fas fa-money-bill-alt"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Fund Mapping' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Bulk entry screen for mapping' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Working Days -->
<div #workingDays>
<a class="org-card" [routerLink]="['working-days']" *mifosxHasPermission="'READ_WORKINGDAYS'">
<div class="org-card__icon org-card__icon--green">
<i class="fas fa-calendar-alt"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Working Days' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Working days and configure behaviour of payments' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Password Preferences -->
<div #passwordpreferences>
<a class="org-card" [routerLink]="['password-preferences']" *mifosxHasPermission="'READ_PASSWORD_VALIDATION_POLICY'">
<div class="org-card__icon org-card__icon--red">
<i class="fas fa-lock"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Password Preferences' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.The usage of stronger passwords' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Payment Type -->
<div #paymenttypes>
<a class="org-card" [routerLink]="['payment-types']" *mifosxHasPermission="'READ_PAYMENTTYPE'">
<div class="org-card__icon org-card__icon--emerald">
<i class="fas fa-dollar-sign"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Payment Type' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Manage payment types' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Loan Provisioning Criteria -->
<div #provisioning>
<a class="org-card" [routerLink]="['provisioning-criteria']" *mifosxHasPermission="'VIEW_PROVISIONS'">
<div class="org-card__icon org-card__icon--indigo">
<i class="fas fa-edit"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Loan Provisioning Criteria' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Loan Provisioning Criteria Organization' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- SMS Campaigns -->
<div #smscampaigns>
<a class="org-card" [routerLink]="['sms-campaigns']" *mifosxHasPermission="'VIEW_SMSCAMPAIGNS'">
<div class="org-card__icon org-card__icon--purple">
<i class="fas fa-envelope"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.SMS Campaigns' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Define SMS Campaigns for Organization' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Entity Data Table Checks -->
<div #entitydatatable>
<a class="org-card" [routerLink]="['entity-data-table-checks']" *mifosxHasPermission="'READ_ENTITY_DATATABLE_CHECK'">
<div class="org-card__icon org-card__icon--slate">
<i class="fas fa-check"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Entity Data Table Checks' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Entity Data Table Checks Organization' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- AdHocQuery -->
<div #adhocquery>
<a class="org-card" [routerLink]="['adhoc-query']" *mifosxHasPermission="'VIEW_ADHOC'">
<div class="org-card__icon org-card__icon--amber">
<i class="fas fa-chevron-right"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.AdHocQuery' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Define AdHocQuery for Organization' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
<!-- Bulk Import -->
<div #bulkimport>
<a class="org-card" [routerLink]="['bulk-import']" *mifosxHasPermission="'VIEW_BULKIMPORT'">
<div class="org-card__icon org-card__icon--blue">
<i class="fas fa-upload"></i>
</div>
<div class="org-card__body">
<h3 class="org-card__title">{{ 'labels.heading.Bulk Import' | translate }}</h3>
<p class="org-card__desc">{{ 'labels.text.Bulk data import using excel spreadsheet templates' | translate }}</p>
</div>
<i class="fas fa-chevron-right org-card__arrow"></i>
</a>
</div>
</div>
</div>
<!-- Configuration Wizard Templates (unchanged) -->
<ng-template #templateOffice let-popover="popover">
<h2>{{ 'labels.heading.Manage Offices' | translate }}</h2>
<p class="mw300">{{ 'labels.text.Manage Offices page allows you to create, edit' | translate }}</p>