+
+
{{ DailyDepositSchemeProduct.name }}
+
+
+
+
{{ 'labels.inputs.Details' | translate }}
+
+
+
+ {{ 'labels.inputs.Short Name' | translate }}:
+ {{ DailyDepositSchemeProduct.shortName }}
+
+
+ @if (DailyDepositSchemeProduct.description) {
+
+ {{ 'labels.inputs.Description' | translate }}:
+ {{ DailyDepositSchemeProduct.description }}
+
+ }
+
+
+ @if (
+ DailyDepositSchemeProduct.accountType ||
+ DailyDepositSchemeProduct.customerSegment ||
+ DailyDepositSchemeProduct.glAccountId ||
+ DailyDepositSchemeProduct.effectiveTo ||
+ DailyDepositSchemeProduct.introducerRequired !== undefined ||
+ DailyDepositSchemeProduct.shareLinkingEnabled !== undefined
+ ) {
+
Product Classification
+
+
+ @if (DailyDepositSchemeProduct.accountType) {
+
+ Account Type:
+ {{ DailyDepositSchemeProduct.accountType }}
+
+ }
+
+ @if (DailyDepositSchemeProduct.glAccountId) {
+
+ GL Account (Liability):
+ {{ getGlAccountName(DailyDepositSchemeProduct.glAccountId) }}
+
+ }
+
+ @if (DailyDepositSchemeProduct.effectiveTo) {
+
+ Effective To:
+ {{ DailyDepositSchemeProduct.effectiveTo | dateFormat }}
+
+ }
+
+ @if (DailyDepositSchemeProduct.endDate) {
+
+ End Date:
+ {{ DailyDepositSchemeProduct.endDate | dateFormat }}
+
+ }
+
+ @if (DailyDepositSchemeProduct.introducerRequired !== undefined) {
+
+ Introducer Required:
+ {{
+ DailyDepositSchemeProduct.introducerRequired === true ||
+ DailyDepositSchemeProduct.introducerRequired === 'Yes'
+ ? 'Yes'
+ : 'No'
+ }}
+
+ }
+
+ @if (DailyDepositSchemeProduct.shareLinkingEnabled !== undefined) {
+
+ Deposit Account Link:
+ {{ DailyDepositSchemeProduct.shareLinkingEnabled | yesNo }}
+
+ }
+ }
+
+
+
{{ 'labels.inputs.Currency' | translate }}
+
+
+
+ {{ 'labels.inputs.Currency' | translate }}:
+ {{
+ DailyDepositSchemeProduct.currencyCode
+ | find: DailyDepositSchemeProductsTemplate.currencyOptions : 'code' : 'name'
+ }}
+
+
+
+ {{ 'labels.inputs.Decimal Places' | translate }}:
+ {{ DailyDepositSchemeProduct.digitsAfterDecimal }}
+
+
+ @if (DailyDepositSchemeProduct.dormancyAlert !== undefined) {
+
+ Dormancy Alert:
+ {{ DailyDepositSchemeProduct.dormancyAlert | yesNo }}
+
+ }
+
+ @if (DailyDepositSchemeProduct.nominationFacility !== undefined) {
+
+ Nomination Facility:
+ {{ DailyDepositSchemeProduct.nominationFacility | yesNo }}
+
+ }
+
+ @if (DailyDepositSchemeProduct.autoDebitFacility !== undefined) {
+
+ Auto Debit Facility:
+ {{ DailyDepositSchemeProduct.autoDebitFacility | yesNo }}
+
+ }
+
+ @if (
+ DailyDepositSchemeProduct.minDepositAmount !== undefined || DailyDepositSchemeProduct.maxDepositAmount !== undefined
+ ) {
+
+
Deposit Amount
+
+
+ @if (DailyDepositSchemeProduct.minDepositAmount !== undefined) {
+
+ Minimum:
+ {{ DailyDepositSchemeProduct.minDepositAmount }}
+
+ }
+
+ @if (DailyDepositSchemeProduct.maxDepositAmount !== undefined) {
+
+ Maximum:
+ {{ DailyDepositSchemeProduct.maxDepositAmount }}
+
+ }
+ }
+
+
+
{{ 'labels.inputs.Terms' | translate }}
+
+
+
+ {{ 'labels.inputs.Nominal Annual Interest Rate' | translate }} (%):
+ {{ DailyDepositSchemeProduct.nominalAnnualInterestRate | formatNumber }} %
+
+
+
+ {{ 'labels.inputs.Interest Compounding Period' | translate }}:
+ {{
+ DailyDepositSchemeProduct.interestCompoundingPeriodType
+ | find: DailyDepositSchemeProductsTemplate.interestCompoundingPeriodTypeOptions : 'id' : 'value'
+ }}
+
+
+
+ {{ 'labels.inputs.Interest Posting Period' | translate }}:
+ {{
+ DailyDepositSchemeProduct.interestPostingPeriodType
+ | find: DailyDepositSchemeProductsTemplate.interestPostingPeriodTypeOptions : 'id' : 'value'
+ }}
+
+
+ @if (DailyDepositSchemeProduct.interestCalculateSelector) {
+
+ {{ 'labels.inputs.Interest Calculation Type' | translate }}:
+ {{
+ DailyDepositSchemeProduct.interestCalculateSelector
+ | find: DailyDepositSchemeProductsTemplate.interestCalculationTypeOption : 'id' : 'value'
+ }}
+
+ }
+
+
+ {{ 'labels.inputs.Interest Calculated using' | translate }}:
+ {{
+ DailyDepositSchemeProduct.interestCalculationType
+ | find: DailyDepositSchemeProductsTemplate.interestCalculationTypeOptions : 'id' : 'value'
+ | translateKey: 'catalogs'
+ }}
+
+
+
+ {{ 'labels.inputs.Days in Year' | translate }}:
+ {{
+ DailyDepositSchemeProduct.interestCalculationDaysInYearType
+ | find: DailyDepositSchemeProductsTemplate.interestCalculationDaysInYearTypeOptions : 'id' : 'value'
+ }}
+
+
+ @if (DailyDepositSchemeProduct.effectiveDate) {
+
+ Effective Date:
+ {{ DailyDepositSchemeProduct.effectiveDate | dateFormat }}
+
+ }
+
+ @if (DailyDepositSchemeProduct.averagePeriod) {
+
+ Average Period:
+ {{ DailyDepositSchemeProduct.averagePeriod }}
+
+ }
+
+
+ Auto Interest Post:
+ {{ DailyDepositSchemeProduct.autoPost | yesNo }}
+
+
+ @if (
+ DailyDepositSchemeProduct.frequencyFixDay !== undefined &&
+ DailyDepositSchemeProduct.frequencyFixDay !== null &&
+ DailyDepositSchemeProduct.frequencyFixDay !== ''
+ ) {
+
+ Frequency (Fix Day):
+ {{ DailyDepositSchemeProduct.frequencyFixDay }}
+
+ }
+
+ @if (DailyDepositSchemeProduct.lastInterestDate) {
+
+ Last Interest Date:
+ {{ DailyDepositSchemeProduct.lastInterestDate | dateFormat }}
+
+ }
+
+
+
{{ 'labels.heading.Settings' | translate }}
+
+
+
+ Loan Facility:
+ {{ DailyDepositSchemeProduct.loanFacility | yesNo }}
+
+
+
+ Premature Withdrawal:
+ {{ DailyDepositSchemeProduct.prematureWithdrawalOption | yesNo }}
+
+
+
+ Tenure Flexibility:
+ {{ DailyDepositSchemeProduct.tenureFlexibility | yesNo }}
+
+
+
+ Lien Marked:
+ {{ DailyDepositSchemeProduct.lienMarked | yesNo }}
+
+
+
+ {{ 'labels.inputs.Apply Withdrawal Fee for Transfers' | translate }}:
+ {{ DailyDepositSchemeProduct.withdrawalFeeForTransfers | yesNo }}
+
+
+
+ Enable Lock-in Period:
+ {{ DailyDepositSchemeProduct.enableLockinPeriod | yesNo }}
+
+
+ @if (DailyDepositSchemeProduct.enableLockinPeriod && DailyDepositSchemeProduct.lockinPeriodFrequency) {
+
+ Lock-in Period:
+
+ {{ DailyDepositSchemeProduct.lockinPeriodFrequency }}
+ {{ getLockinPeriodFrequencyTypeLabel(DailyDepositSchemeProduct.lockinPeriodFrequencyType) }}
+
+
+ }
+
+
+ Maturity Instructions:
+ {{ DailyDepositSchemeProduct.maturityInstructions | yesNo }}
+
+
+
+ Credit Maturity Proceeds:
+ {{ DailyDepositSchemeProduct.creditMaturityProceeds | yesNo }}
+
+
+
+ Penalty Grace Period (Missed Installments):
+ {{ DailyDepositSchemeProduct.penaltyGracePeriodMissedInstallments | yesNo }}
+
+
+
+ Panel Request Applicable:
+ {{ DailyDepositSchemeProduct.panelRequestApplicable | yesNo }}
+
+
+
+ No Penalty (Nominee / Heir Closure):
+ {{ DailyDepositSchemeProduct.noPenaltyNomineeHeirClosure | yesNo }}
+
+
+
+ Deceased Settlement:
+ {{ DailyDepositSchemeProduct.deceasedSettlement | yesNo }}
+
+
+
+ Allow Debit Txn After Due Date:
+ {{ DailyDepositSchemeProduct.allowDebitTxnAfterDueDate | yesNo }}
+
+
+
+ Account Closed with Zero Balance in Day Closing:
+ {{ DailyDepositSchemeProduct.accountClosedZeroBalanceInDayClosing | yesNo }}
+
+
+ @if (DailyDepositSchemeProduct.minBalanceForInterestCalculation) {
+
+ Min Balance for Interest Calculation:
+ {{ DailyDepositSchemeProduct.minBalanceForInterestCalculation | formatNumber }}
+
+ }
+
+
+ @if (DailyDepositSchemeProduct.rdSlabs?.length) {
+
+
{{ 'labels.heading.Interest Rate Charts' | translate }}
+
+
+
+
+
+ | Sr. |
+ {{ slab.srNo }} |
+
+
+ Particular |
+ {{ slab.description }} |
+
+
+ From |
+ {{ slab.fromPeriod }} |
+
+
+ To |
+ {{ slab.toPeriod ?? '—' }} |
+
+
+ Period |
+ {{ slab.periodTypeLabel }} |
+
+
+ Rate (%) |
+
+ {{ slab.annualInterestRate }}
+ |
+
+
+
+
+
+ }
+
+
+ @if (DailyDepositSchemeProduct.charges?.length) {
+
+
{{ 'labels.inputs.Charges' | translate }}
+
+
+
+ | {{ 'labels.inputs.Name' | translate }} |
+ {{ charge.name + ', ' + charge.currency.displaySymbol }} |
+
+
+ {{ 'labels.inputs.Type' | translate }} |
+ {{ charge.chargeCalculationType.value }} |
+
+
+ {{ 'labels.inputs.Amount' | translate }} |
+ {{ charge.amount | formatNumber }} |
+
+
+ {{ 'labels.inputs.Collected On' | translate }} |
+ {{ charge.chargeTimeType.value }} |
+
+
+
+
+
+ }
+
+
+
{{ 'labels.heading.Accounting' | translate }}
+
+
+ @if (isCashOrAccrualAccounting()) {
+
+
+
+
+
Assets
+
+ Savings Reference Account
+ {{
+ formatGlAccountById(
+ DailyDepositSchemeProduct.savingsReferenceAccountId,
+ DailyDepositSchemeProductsTemplate?.accountingMappingOptions.assetAccountOptions
+ )
+ }}
+
+ @if (isAccrualAccounting()) {
+
+ Fees Receivable Account
+ {{
+ formatGlAccountById(
+ DailyDepositSchemeProduct.feesReceivableAccountId,
+ DailyDepositSchemeProductsTemplate?.accountingMappingOptions.assetAccountOptions
+ )
+ }}
+
+
+ Penalties Receivable Account
+ {{
+ formatGlAccountById(
+ DailyDepositSchemeProduct.penaltiesReceivableAccountId,
+ DailyDepositSchemeProductsTemplate?.accountingMappingOptions.assetAccountOptions
+ )
+ }}
+
+ }
+
+
+
+
Liabilities
+
+ Savings Control Account
+ {{
+ formatGlAccountById(
+ DailyDepositSchemeProduct.savingsControlAccountId,
+ DailyDepositSchemeProductsTemplate?.accountingMappingOptions.liabilityAccountOptions
+ )
+ }}
+
+
+ Transfers In Suspense Account
+ {{
+ formatGlAccountById(
+ DailyDepositSchemeProduct.transfersInSuspenseAccountId,
+ DailyDepositSchemeProductsTemplate?.accountingMappingOptions.liabilityAccountOptions
+ )
+ }}
+
+ @if (isAccrualAccounting()) {
+
+ Interest Payable Account
+ {{
+ formatGlAccountById(
+ DailyDepositSchemeProduct.interestPayableAccountId,
+ DailyDepositSchemeProductsTemplate?.accountingMappingOptions.liabilityAccountOptions
+ )
+ }}
+
+ }
+
+
+
+
Expenses
+
+ Interest on Savings Account
+ {{
+ formatGlAccountById(
+ DailyDepositSchemeProduct.interestOnSavingsAccountId,
+ DailyDepositSchemeProductsTemplate?.accountingMappingOptions.expenseAccountOptions
+ )
+ }}
+
+
+
+
+
Income
+
+ Income from Fees
+ {{
+ formatGlAccountById(
+ DailyDepositSchemeProduct.incomeFromFeeAccountId,
+ DailyDepositSchemeProductsTemplate?.accountingMappingOptions.incomeAccountOptions
+ )
+ }}
+
+
+ Income from Penalties
+ {{
+ formatGlAccountById(
+ DailyDepositSchemeProduct.incomeFromPenaltyAccountId,
+ DailyDepositSchemeProductsTemplate?.accountingMappingOptions.incomeAccountOptions
+ )
+ }}
+
+
+
+ }
+
+
+ @if (DailyDepositSchemeProduct.otherGlMappings) {
+
+
+
+ @if (DailyDepositSchemeProduct.otherGlMappings.assets?.length) {
+
+
+ | Asset Account |
+ {{ row.accountName }} |
+
+
+ GL Account |
+
+ {{
+ formatGlAccountByCode(
+ row.glCode,
+ DailyDepositSchemeProductsTemplate?.accountingMappingOptions.assetAccountOptions
+ )
+ }}
+ |
+
+
+
+
+ }
+
+ @if (DailyDepositSchemeProduct.otherGlMappings.liabilities?.length) {
+
+
+ | Liability Account |
+ {{ row.accountName }} |
+
+
+ GL Account |
+
+ {{
+ formatGlAccountByCode(
+ row.glCode,
+ DailyDepositSchemeProductsTemplate?.accountingMappingOptions.liabilityAccountOptions
+ )
+ }}
+ |
+
+
+
+
+ }
+
+ @if (DailyDepositSchemeProduct.otherGlMappings.expenses?.length) {
+
+
+ | Expense Account |
+ {{ row.accountName }} |
+
+
+ GL Account |
+
+ {{
+ formatGlAccountByCode(
+ row.glCode,
+ DailyDepositSchemeProductsTemplate?.accountingMappingOptions.expenseAccountOptions
+ )
+ }}
+ |
+
+
+
+
+ }
+
+ @if (DailyDepositSchemeProduct.otherGlMappings.income?.length) {
+
+
+ | Income Account |
+ {{ row.accountName }} |
+
+
+ GL Account |
+
+ {{
+ formatGlAccountByCode(
+ row.glCode,
+ DailyDepositSchemeProductsTemplate?.accountingMappingOptions.incomeAccountOptions
+ )
+ }}
+ |
+
+
+
+
+ }
+
+ }
+
+
+ @if (
+ DailyDepositSchemeProduct.advancedAccountingRules &&
+ (DailyDepositSchemeProduct.paymentChannelToFundSourceMappings?.length ||
+ DailyDepositSchemeProduct.feeToIncomeAccountMappings?.length ||
+ DailyDepositSchemeProduct.penaltyToIncomeAccountMappings?.length)
+ ) {
+
+
{{ 'labels.heading.Advanced Accounting Rules' | translate }}
+
+
+ @if (DailyDepositSchemeProduct.paymentChannelToFundSourceMappings?.length) {
+
+
{{ 'labels.heading.Fund Sources for Payment Channels' | translate }}
+
+
+ | {{ 'labels.inputs.Payment Type' | translate }} |
+
+ {{ item.paymentTypeId | find: DailyDepositSchemeProductsTemplate.paymentTypeOptions : 'id' : 'name' }}
+ |
+
+
+ {{ 'labels.inputs.Fund Source' | translate }} |
+
+ {{
+ item.fundSourceAccountId
+ | find
+ : DailyDepositSchemeProductsTemplate?.accountingMappingOptions.assetAccountOptions
+ : 'id'
+ : 'name'
+ }}
+ |
+
+
+
+
+
+ }
+
+ @if (DailyDepositSchemeProduct.feeToIncomeAccountMappings?.length) {
+
+
{{ 'labels.heading.Fees to Specific Income Accounts' | translate }}
+
+
+ | {{ 'labels.inputs.Fees' | translate }} |
+
+ {{ item.chargeId | find: DailyDepositSchemeProductsTemplate.chargeOptions : 'id' : 'name' }}
+ |
+
+
+ {{ 'labels.inputs.Income Account' | translate }} |
+
+ {{
+ item.incomeAccountId
+ | find
+ : DailyDepositSchemeProductsTemplate?.accountingMappingOptions.incomeAccountOptions
+ : 'id'
+ : 'name'
+ }}
+ |
+
+
+
+
+
+ }
+
+ @if (DailyDepositSchemeProduct.penaltyToIncomeAccountMappings?.length) {
+
+
{{ 'labels.heading.Penalties to Specific Income Accounts' | translate }}
+
+
+ | {{ 'labels.inputs.Penalty' | translate }} |
+
+ {{ item.chargeId | find: DailyDepositSchemeProductsTemplate.penaltyOptions : 'id' : 'name' }}
+ |
+
+
+ {{ 'labels.inputs.Income Account' | translate }} |
+
+ {{
+ item.incomeAccountId
+ | find
+ : DailyDepositSchemeProductsTemplate?.accountingMappingOptions.incomeAccountOptions
+ : 'id'
+ : 'name'
+ }}
+ |
+
+
+
+
+
+ }
+
+ }
+
diff --git a/src/app/products/daily-deposit-scheme-products/daily-deposit-scheme-product-stepper/daily-deposit-scheme-product-preview-step/daily-deposit-scheme-product-preview-step.component.scss b/src/app/products/daily-deposit-scheme-products/daily-deposit-scheme-product-stepper/daily-deposit-scheme-product-preview-step/daily-deposit-scheme-product-preview-step.component.scss
new file mode 100644
index 000000000..33a0e1852
--- /dev/null
+++ b/src/app/products/daily-deposit-scheme-products/daily-deposit-scheme-product-stepper/daily-deposit-scheme-product-preview-step/daily-deposit-scheme-product-preview-step.component.scss
@@ -0,0 +1,131 @@
+/**
+ * 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/.
+ */
+
+@use 'assets/styles/colours' as *;
+
+.mat-h3 {
+ margin-top: 10px !important;
+ font-weight: 300;
+ color: $status-approved;
+}
+
+.mat-elevation-z1 {
+ margin: 1em 0 1.5em;
+}
+
+h2,
+h3,
+h4 {
+ margin: 0;
+ font-weight: 500;
+}
+
+table {
+ width: 100%;
+}
+
+span {
+ margin: 0.5em 0;
+}
+
+mat-divider {
+ margin: 0 0 0.5em;
+}
+
+/* ── GL mapping summary (same as savings product preview) ── */
+.spa-gl-summary,
+.spa-other-gl-summary {
+ display: flex;
+ flex-direction: column;
+ gap: 0.9rem;
+ margin-top: 1.25rem;
+}
+
+.spa-gl-summary__header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0.25rem 0 0.5rem;
+}
+
+.spa-gl-section {
+ display: flex;
+ flex-direction: column;
+ gap: 0.75rem;
+ padding: 1rem 1.15rem;
+ border: 1px solid #e3e7f2;
+ border-radius: 12px;
+ background: #fff;
+
+ h5 {
+ font-size: 0.9rem;
+ font-weight: 700;
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+ color: #91a0bc;
+ }
+}
+
+.spa-gl-row {
+ display: grid;
+ grid-template-columns: minmax(220px, 40%) 1fr;
+ gap: 1rem;
+ align-items: baseline;
+ padding: 0.2rem 0;
+}
+
+.spa-gl-row__label {
+ color: #1f2f4a;
+ font-weight: 500;
+}
+
+.spa-gl-row__value {
+ color: #101828;
+ font-weight: 600;
+ word-break: break-word;
+}
+
+.spa-other-gl-table {
+ margin-top: 0.5rem;
+ margin-bottom: 0.75rem;
+ table-layout: fixed;
+ width: 100%;
+
+ &:first-of-type {
+ margin-top: 0.25rem;
+ }
+
+ th.mat-mdc-header-cell,
+ td.mat-mdc-cell {
+ padding-left: 1.25rem;
+ padding-right: 1.25rem;
+ }
+
+ th.mat-mdc-header-cell:first-child,
+ td.mat-mdc-cell:first-child {
+ width: 38%;
+ }
+
+ th.mat-mdc-header-cell:last-child,
+ td.mat-mdc-cell:last-child {
+ width: 62%;
+ word-break: break-word;
+ }
+}
+
+.spa-other-gl-summary .mat-elevation-z1 {
+ border-radius: 10px;
+ overflow: hidden;
+}
+
+@media (width <= 768px) {
+ .spa-gl-row {
+ grid-template-columns: 1fr;
+ gap: 0.35rem;
+ }
+}
diff --git a/src/app/products/daily-deposit-scheme-products/daily-deposit-scheme-product-stepper/daily-deposit-scheme-product-preview-step/daily-deposit-scheme-product-preview-step.component.ts b/src/app/products/daily-deposit-scheme-products/daily-deposit-scheme-product-stepper/daily-deposit-scheme-product-preview-step/daily-deposit-scheme-product-preview-step.component.ts
new file mode 100644
index 000000000..062751880
--- /dev/null
+++ b/src/app/products/daily-deposit-scheme-products/daily-deposit-scheme-product-stepper/daily-deposit-scheme-product-preview-step/daily-deposit-scheme-product-preview-step.component.ts
@@ -0,0 +1,142 @@
+/**
+ * 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/.
+ */
+
+import { Component, OnInit, Input, Output, EventEmitter, OnChanges, SimpleChanges, inject } from '@angular/core';
+import { Accounting } from 'app/core/utils/accounting';
+import { OptionData } from 'app/shared/models/option-data.model';
+import { MatDivider } from '@angular/material/divider';
+import {
+ MatTable,
+ MatColumnDef,
+ MatHeaderCellDef,
+ MatHeaderCell,
+ MatCellDef,
+ MatCell,
+ MatHeaderRowDef,
+ MatHeaderRow,
+ MatRowDef,
+ MatRow
+} from '@angular/material/table';
+import { FaIconComponent } from '@fortawesome/angular-fontawesome';
+import { FindPipe } from '../../../../pipes/find.pipe';
+import { DateFormatPipe } from '../../../../pipes/date-format.pipe';
+import { FormatNumberPipe } from '../../../../pipes/format-number.pipe';
+import { YesnoPipe } from '../../../../pipes/yesno.pipe';
+import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
+
+@Component({
+ selector: 'mifosx-daily-deposit-scheme-product-preview-step',
+ templateUrl: './daily-deposit-scheme-product-preview-step.component.html',
+ styleUrls: ['./daily-deposit-scheme-product-preview-step.component.scss'],
+ imports: [
+ ...STANDALONE_SHARED_IMPORTS,
+ MatDivider,
+ MatTable,
+ MatColumnDef,
+ MatHeaderCellDef,
+ MatHeaderCell,
+ MatCellDef,
+ MatCell,
+ FaIconComponent,
+ MatHeaderRowDef,
+ MatHeaderRow,
+ MatRowDef,
+ MatRow,
+ FindPipe,
+ DateFormatPipe,
+ FormatNumberPipe,
+ YesnoPipe
+ ]
+})
+export class DailyDepositSchemeProductPreviewStepComponent implements OnInit, OnChanges {
+ private accounting = inject(Accounting);
+
+ @Input() DailyDepositSchemeProductsTemplate: any;
+ @Input() chartSlabsDisplayedColumns: any[] = [];
+ @Input() accountingRuleData: any;
+ @Input() DailyDepositSchemeProduct: any;
+ @Output() submitEvent = new EventEmitter();
+
+ chargesDisplayedColumns: string[] = [
+ 'name',
+ 'chargeCalculationType',
+ 'amount',
+ 'chargeTimeType'
+ ];
+ paymentFundSourceDisplayedColumns: string[] = [
+ 'paymentTypeId',
+ 'fundSourceAccountId'
+ ];
+ feesPenaltyIncomeDisplayedColumns: string[] = [
+ 'chargeId',
+ 'incomeAccountId'
+ ];
+
+ readonly rdSlabColumns = [
+ 'srNo',
+ 'description',
+ 'fromPeriod',
+ 'toPeriod',
+ 'periodTypeLabel',
+ 'annualInterestRate'
+ ];
+
+ accountingRule: OptionData | undefined;
+
+ ngOnInit() {
+ this.setCurrentValues();
+ }
+
+ ngOnChanges(_changes: SimpleChanges): void {
+ this.setCurrentValues();
+ }
+
+ setCurrentValues(): void {
+ if (this.DailyDepositSchemeProduct) {
+ this.accountingRule = this.accounting.getAccountingRuleFrom(this.DailyDepositSchemeProduct.accountingRule);
+ }
+ }
+
+ isNoneAccounting(): boolean {
+ return this.accounting.isNoneAccountingRuleId(this.DailyDepositSchemeProduct.accountingRule);
+ }
+
+ isCashOrAccrualAccounting(): boolean {
+ return this.accounting.isCashOrAccrualAccountingRuleId(this.DailyDepositSchemeProduct.accountingRule);
+ }
+
+ isAccrualAccounting(): boolean {
+ return this.accounting.isAccrualAccountingRuleId(this.DailyDepositSchemeProduct.accountingRule);
+ }
+
+ getLockinPeriodFrequencyTypeLabel(value: any): string {
+ if (!value && value !== 0) return '';
+ const options = this.DailyDepositSchemeProductsTemplate?.lockinPeriodFrequencyTypeOptions || [];
+ const found = options.find((o: any) => o.id === value);
+ return found?.value || String(value);
+ }
+
+ getGlAccountName(id: any): string {
+ if (!id) return '';
+ const accounts = this.DailyDepositSchemeProductsTemplate?.accountingMappingOptions?.liabilityAccountOptions ?? [];
+ const found = accounts.find((a: any) => a.id === id || a.id === +id);
+ return found ? `${found.name} (${found.glCode})` : String(id);
+ }
+
+ formatGlAccountById(glAccountId: number, options: any[]): string {
+ if (!glAccountId || !Array.isArray(options)) return '-';
+ const account = this.accounting.glAccountLookUp(glAccountId, options as any);
+ return account ? `(${account.glCode}) ${account.name}` : '-';
+ }
+
+ formatGlAccountByCode(glCode: string, options: any[]): string {
+ if (!glCode || !Array.isArray(options)) return glCode || '-';
+ const account = options.find((o: any) => o?.glCode === glCode);
+ return account ? `(${account.glCode}) ${account.name}` : glCode;
+ }
+}
diff --git a/src/app/products/daily-deposit-scheme-products/daily-deposit-scheme-product-stepper/daily-deposit-scheme-product-settings-step/daily-deposit-scheme-product-settings-step.component.html b/src/app/products/daily-deposit-scheme-products/daily-deposit-scheme-product-stepper/daily-deposit-scheme-product-settings-step/daily-deposit-scheme-product-settings-step.component.html
new file mode 100644
index 000000000..804ae09e9
--- /dev/null
+++ b/src/app/products/daily-deposit-scheme-products/daily-deposit-scheme-product-stepper/daily-deposit-scheme-product-settings-step/daily-deposit-scheme-product-settings-step.component.html
@@ -0,0 +1,123 @@
+
+
+