diff --git a/src/app/current-accounts/current-account-stepper/current-account-details-step/current-account-details-step.component.html b/src/app/current-accounts/current-account-stepper/current-account-details-step/current-account-details-step.component.html index 68adf30a0..cc480140b 100644 --- a/src/app/current-accounts/current-account-stepper/current-account-details-step/current-account-details-step.component.html +++ b/src/app/current-accounts/current-account-stepper/current-account-details-step/current-account-details-step.component.html @@ -74,12 +74,20 @@
Account Type - + + @for (opt of accountTypeOptions; track opt) { + {{ opt }} + } + Customer Segment - + + @for (opt of customerSegmentOptions; track opt) { + {{ opt }} + } + diff --git a/src/app/current-accounts/current-account-stepper/current-account-details-step/current-account-details-step.component.ts b/src/app/current-accounts/current-account-stepper/current-account-details-step/current-account-details-step.component.ts index 8f1523d0e..205a267cc 100644 --- a/src/app/current-accounts/current-account-stepper/current-account-details-step/current-account-details-step.component.ts +++ b/src/app/current-accounts/current-account-stepper/current-account-details-step/current-account-details-step.component.ts @@ -116,6 +116,10 @@ export class CurrentAccountDetailsStepComponent implements OnInit { /** Local copy of product template for displaying classification info */ productTemplate: any = null; + accountTypeOptions: string[] = []; + customerSegmentOptions: string[] = []; + selectedAccountType: string | null = null; + selectedCustomerSegment: string | null = null; constructor() { this.createCurrentAccountDetailsForm(); @@ -192,6 +196,10 @@ export class CurrentAccountDetailsStepComponent implements OnInit { } } this.productTemplate = response; + this.accountTypeOptions = this.extractOptions(response.accountTypeOptions, response.accountType); + this.customerSegmentOptions = this.extractOptions(response.customerSegmentOptions, response.customerSegment); + this.selectedAccountType = response.accountType ?? null; + this.selectedCustomerSegment = response.customerSegment ?? null; this.currentAccountProductTemplate.emit(response); this.fieldOfficerData = response.fieldOfficerOptions; this.currentAccountProductSelected = true; @@ -215,6 +223,13 @@ export class CurrentAccountDetailsStepComponent implements OnInit { /** * Formats template dates into the current CBS date format. */ + private extractOptions(options: any[], fallback?: string): string[] { + if (Array.isArray(options) && options.length > 0) { + return options.map((o: any) => o.value ?? o.name ?? o); + } + return fallback ? [fallback] : []; + } + formatTemplateDate(value: any): string { if (!value) { return ''; diff --git a/src/app/deposits/recurring-deposits/recurring-deposits-account-stepper/recurring-deposits-account-details-step/recurring-deposits-account-details-step.component.html b/src/app/deposits/recurring-deposits/recurring-deposits-account-stepper/recurring-deposits-account-details-step/recurring-deposits-account-details-step.component.html index 186f2f076..30b71d413 100644 --- a/src/app/deposits/recurring-deposits/recurring-deposits-account-stepper/recurring-deposits-account-details-step/recurring-deposits-account-details-step.component.html +++ b/src/app/deposits/recurring-deposits/recurring-deposits-account-stepper/recurring-deposits-account-details-step/recurring-deposits-account-details-step.component.html @@ -74,12 +74,20 @@
Account Type - + + @for (opt of accountTypeOptions; track opt) { + {{ opt }} + } + Customer Segment - + + @for (opt of customerSegmentOptions; track opt) { + {{ opt }} + } + diff --git a/src/app/deposits/recurring-deposits/recurring-deposits-account-stepper/recurring-deposits-account-details-step/recurring-deposits-account-details-step.component.ts b/src/app/deposits/recurring-deposits/recurring-deposits-account-stepper/recurring-deposits-account-details-step/recurring-deposits-account-details-step.component.ts index 50fb89362..6c484b099 100644 --- a/src/app/deposits/recurring-deposits/recurring-deposits-account-stepper/recurring-deposits-account-details-step/recurring-deposits-account-details-step.component.ts +++ b/src/app/deposits/recurring-deposits/recurring-deposits-account-stepper/recurring-deposits-account-details-step/recurring-deposits-account-details-step.component.ts @@ -8,7 +8,7 @@ /** Angular Imports */ import { Component, OnInit, Input, Output, EventEmitter, inject, ChangeDetectorRef } from '@angular/core'; -import { UntypedFormGroup, UntypedFormBuilder, Validators } from '@angular/forms'; +import { UntypedFormGroup, UntypedFormBuilder, Validators, FormsModule } from '@angular/forms'; import { SettingsService } from 'app/settings/settings.service'; import { Dates } from 'app/core/utils/dates'; @@ -33,7 +33,8 @@ import { IntroducerSearchComponent } from 'app/shared/introducer-search/introduc MatStepperPrevious, FaIconComponent, MatStepperNext, - IntroducerSearchComponent + IntroducerSearchComponent, + FormsModule ] }) export class RecurringDepositsAccountDetailsStepComponent implements OnInit { @@ -69,6 +70,10 @@ export class RecurringDepositsAccountDetailsStepComponent implements OnInit { /** Local copy of product template for displaying classification info */ productTemplate: any = null; + accountTypeOptions: string[] = []; + customerSegmentOptions: string[] = []; + selectedAccountType: string | null = null; + selectedCustomerSegment: string | null = null; constructor() { this.createRecurringDepositsAccountDetailsForm(); @@ -140,6 +145,10 @@ export class RecurringDepositsAccountDetailsStepComponent implements OnInit { } } this.productTemplate = response; + this.accountTypeOptions = this.extractOptions(response.accountTypeOptions, response.accountType); + this.customerSegmentOptions = this.extractOptions(response.customerSegmentOptions, response.customerSegment); + this.selectedAccountType = response.accountType ?? null; + this.selectedCustomerSegment = response.customerSegment ?? null; this.recurringDepositsAccountProductTemplate.emit(response); this.fieldOfficerData = response.fieldOfficerOptions; this.isProductSelected = true; @@ -173,6 +182,13 @@ export class RecurringDepositsAccountDetailsStepComponent implements OnInit { * Formats template dates into the current CBS date format. * Handles backend date arrays like [2026, 4, 20] as well as strings and Date objects. */ + private extractOptions(options: any[], fallback?: string): string[] { + if (Array.isArray(options) && options.length > 0) { + return options.map((o: any) => o.value ?? o.name ?? o); + } + return fallback ? [fallback] : []; + } + formatTemplateDate(value: any): string { if (!value) { return ''; diff --git a/src/app/savings/savings-account-stepper/savings-account-details-step/savings-account-details-step.component.html b/src/app/savings/savings-account-stepper/savings-account-details-step/savings-account-details-step.component.html index 4bce9f33d..8bf0e988a 100644 --- a/src/app/savings/savings-account-stepper/savings-account-details-step/savings-account-details-step.component.html +++ b/src/app/savings/savings-account-stepper/savings-account-details-step/savings-account-details-step.component.html @@ -78,12 +78,20 @@
Account Type - + + @for (opt of accountTypeOptions; track opt) { + {{ opt }} + } + Customer Segment - + + @for (opt of customerSegmentOptions; track opt) { + {{ opt }} + } + diff --git a/src/app/savings/savings-account-stepper/savings-account-details-step/savings-account-details-step.component.ts b/src/app/savings/savings-account-stepper/savings-account-details-step/savings-account-details-step.component.ts index 7bdaefa68..f4af5679d 100644 --- a/src/app/savings/savings-account-stepper/savings-account-details-step/savings-account-details-step.component.ts +++ b/src/app/savings/savings-account-stepper/savings-account-details-step/savings-account-details-step.component.ts @@ -8,7 +8,7 @@ /** Angular Imports */ import { Component, OnInit, Input, Output, EventEmitter, inject, ChangeDetectorRef } from '@angular/core'; -import { UntypedFormGroup, UntypedFormBuilder, Validators, ReactiveFormsModule } from '@angular/forms'; +import { UntypedFormGroup, UntypedFormBuilder, Validators, ReactiveFormsModule, FormsModule } from '@angular/forms'; import { Dates } from 'app/core/utils/dates'; import { SettingsService } from 'app/settings/settings.service'; @@ -31,7 +31,8 @@ import { IntroducerSearchComponent } from 'app/shared/introducer-search/introduc MatStepperPrevious, FaIconComponent, MatStepperNext, - IntroducerSearchComponent + IntroducerSearchComponent, + FormsModule ] }) export class SavingsAccountDetailsStepComponent implements OnInit { @@ -67,6 +68,10 @@ export class SavingsAccountDetailsStepComponent implements OnInit { /** Local copy of product template for displaying classification info */ productTemplate: any = null; + accountTypeOptions: string[] = []; + customerSegmentOptions: string[] = []; + selectedAccountType: string | null = null; + selectedCustomerSegment: string | null = null; /** * Sets share account details form. @@ -127,6 +132,10 @@ export class SavingsAccountDetailsStepComponent implements OnInit { .getSavingsAccountTemplate(entityId, productId, this.savingsAccountTemplate.groupId ? true : false) .subscribe((response: any) => { this.productTemplate = response; + this.accountTypeOptions = this.extractOptions(response.accountTypeOptions, response.accountType); + this.customerSegmentOptions = this.extractOptions(response.customerSegmentOptions, response.customerSegment); + this.selectedAccountType = response.accountType ?? null; + this.selectedCustomerSegment = response.customerSegment ?? null; this.savingsAccountProductTemplate.emit(response); this.fieldOfficerData = response.fieldOfficerOptions; this.savingsProductSelected = true; @@ -145,6 +154,13 @@ export class SavingsAccountDetailsStepComponent implements OnInit { * Formats template dates into the current CBS date format. * Handles backend date arrays like [2026, 4, 20] as well as strings and Date objects. */ + private extractOptions(options: any[], fallback?: string): string[] { + if (Array.isArray(options) && options.length > 0) { + return options.map((o: any) => o.value ?? o.name ?? o); + } + return fallback ? [fallback] : []; + } + formatTemplateDate(value: any): string { if (!value) { return ''; diff --git a/src/environments/.env.ts b/src/environments/.env.ts index 77fd662d8..6dc70b65f 100644 --- a/src/environments/.env.ts +++ b/src/environments/.env.ts @@ -5,13 +5,12 @@ * 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/. */ - // IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN! /* tslint:disable */ export default { 'mifos_x': { 'version': '260427', - 'hash': '5fb25edc' + 'hash': '65345f99' }, 'allow_switching_backend_instance': true };