saving , current and RD account code update

This commit is contained in:
Nitesh Yadav
2026-04-22 18:15:46 +05:30
parent 05c5adb034
commit 691a3fc471
8 changed files with 27487 additions and 13413 deletions
@@ -450,6 +450,40 @@ public final class DepositsApiConstants {
recurringDepositResponseData.addAll(PRECLOSURE_RESPONSE_DATA_PARAMETERS);
recurringDepositResponseData.addAll(DEPOSIT_TERM_RESPONSE_DATA_PARAMETERS);
recurringDepositResponseData.addAll(RECURRING_DETAILS_RESPONSE_DATA_PARAMETERS);
// CBS product fields — included in template response when productId is provided
recurringDepositResponseData.add("accountType");
recurringDepositResponseData.add("customerSegment");
recurringDepositResponseData.add("productCode");
recurringDepositResponseData.add("effectiveDate");
recurringDepositResponseData.add("effectiveTo");
recurringDepositResponseData.add("endDate");
recurringDepositResponseData.add("introducerRequired");
recurringDepositResponseData.add("shareLinkingEnabled");
recurringDepositResponseData.add("nominationFacility");
recurringDepositResponseData.add("dormancyAlert");
recurringDepositResponseData.add("interestCalculateSelector");
recurringDepositResponseData.add("interestCalculationTypeName");
recurringDepositResponseData.add("averagePeriod");
recurringDepositResponseData.add("autoPost");
recurringDepositResponseData.add("frequencyFixDay");
recurringDepositResponseData.add("lastInterestDate");
recurringDepositResponseData.add("enableLockinPeriod");
recurringDepositResponseData.add("balanceFrequency");
recurringDepositResponseData.add("accountClosedZeroBalanceInDayClosing");
recurringDepositResponseData.add("balanceSwapOption");
recurringDepositResponseData.add("msme");
recurringDepositResponseData.add("autoDebitFacility");
recurringDepositResponseData.add("loanFacility");
recurringDepositResponseData.add("prematureWithdrawalOption");
recurringDepositResponseData.add("tenureFlexibility");
recurringDepositResponseData.add("lienMarked");
recurringDepositResponseData.add("maturityInstructions");
recurringDepositResponseData.add("creditMaturityProceeds");
recurringDepositResponseData.add("penaltyGracePeriodMissedInstallments");
recurringDepositResponseData.add("panelRequestApplicable");
recurringDepositResponseData.add("noPenaltyNomineeHeirClosure");
recurringDepositResponseData.add("deceasedSettlement");
recurringDepositResponseData.add("allowDebitTxnAfterDueDate");
return recurringDepositResponseData;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -140,7 +140,7 @@ public class CurrentAccountTemplateReadPlatformServiceImpl implements CurrentAcc
final Collection<EnumOptionData> withdrawalFeeTypeOptions = this.dropdownReadPlatformService.retrievewithdrawalFeeTypeOptions();
final Collection<SavingsAccountTransactionData> transactions = null;
final Collection<ChargeData> productCharges = this.chargeReadPlatformService.retrieveSavingsProductCharges(productId);
final Collection<ChargeData> productCharges = this.chargeReadPlatformService.retrieveCurrentProductCharges(productId);
final Collection<SavingsAccountChargeData> charges = fromChargesToSavingsCharges(productCharges);
final boolean feeChargesOnly = false;
@@ -170,6 +170,44 @@ public class CurrentAccountTemplateReadPlatformServiceImpl implements CurrentAcc
interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions, interestCalculationTypeOptions,
interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, transactions,
charges, chargeOptions);
// Re-apply CBS fields from full product data (withTemplateOptions creates a new object and loses setter fields)
final SavingsProductData productData = this.currentProductReadPlatformService.retrieveOne(productId);
if (productData != null) {
// Feature flags
template.setDormancyAlert(productData.getDormancyAlert() != null && productData.getDormancyAlert());
template.setBalanceSwapOption(productData.getBalanceSwapOption() != null && productData.getBalanceSwapOption());
template.setMsme(productData.getMsme() != null && productData.getMsme());
template.setNominationFacility(productData.getNominationFacility() != null && productData.getNominationFacility());
template.setAutoDebitFacility(productData.getAutoDebitFacility() != null && productData.getAutoDebitFacility());
template.setAutoPost(productData.getAutoPost() != null && productData.getAutoPost());
template.setFrequencyFixDay(productData.getFrequencyFixDay());
template.setLastInterestDate(productData.getLastInterestDate());
template.setInterestCalculateSelector(productData.getInterestCalculateSelector());
template.setAveragePeriod(productData.getAveragePeriod());
template.setAccountClosedZeroBalanceInDayClosing(
productData.getAccountClosedZeroBalanceInDayClosing() != null && productData.getAccountClosedZeroBalanceInDayClosing());
// Facility data
template.setAccountFacilityConfig(productData.getAccountFacilityConfig());
template.setAccountFacilityLimits(productData.getAccountFacilityLimits());
template.setDepositLimitKyc(productData.getDepositLimitKyc());
// Classification fields
template.setAccountType(productData.getAccountType());
template.setCustomerSegment(productData.getCustomerSegment());
template.setProductCode(productData.getProductCode());
template.setEffectiveDate(productData.getEffectiveDate());
template.setEffectiveTo(productData.getEffectiveTo());
template.setEndDate(productData.getEndDate());
template.setIntroducerRequired(productData.getIntroducerRequired());
template.setShareLinkingEnabled(productData.getShareLinkingEnabled());
// Settings fields
template.setEnableLockinPeriod(productData.getEnableLockinPeriod());
template.setBalanceFrequency(productData.getBalanceFrequency());
template.setAvgBalanceCalcPeriod(productData.getAvgBalanceCalcPeriod());
template.setValidForPeriod(productData.getValidForPeriod());
template.setOdAccountClosedZeroBalanceInDayClosing(
productData.getOdAccountClosedZeroBalanceInDayClosing() != null && productData.getOdAccountClosedZeroBalanceInDayClosing());
}
} else {
String clientName = null;
@@ -247,7 +285,22 @@ public class CurrentAccountTemplateReadPlatformServiceImpl implements CurrentAcc
sqlBuilder.append("cp.min_required_balance as minRequiredBalance, ");
sqlBuilder.append("cp.enforce_min_required_balance as enforceMinRequiredBalance, ");
sqlBuilder.append("0 as maxAllowedLienLimit, ");
sqlBuilder.append("0 as lienAllowed ");
sqlBuilder.append("0 as lienAllowed, ");
sqlBuilder.append("cp.dormancy_alert as dormancyAlert, ");
sqlBuilder.append("cp.balance_swap_option as balanceSwapOption, ");
sqlBuilder.append("cp.msme as msme, ");
sqlBuilder.append("cp.nomination_facility as nominationFacility, ");
sqlBuilder.append("cp.auto_debit_facility as autoDebitFacility, ");
sqlBuilder.append("cp.auto_post as autoPost, ");
sqlBuilder.append("cp.frequency_fix_day as frequencyFixDay, ");
sqlBuilder.append("cp.last_interest_date as lastInterestDate, ");
sqlBuilder.append("cp.interest_calculate_selector as interestCalculateSelector, ");
sqlBuilder.append("cp.average_period as averagePeriod, ");
sqlBuilder.append("cp.account_closed_zero_balance_in_day_closing as accountClosedZeroBalanceInDayClosing, ");
sqlBuilder.append("cp.is_dormancy_tracking_active as isDormancyTrackingActive, ");
sqlBuilder.append("cp.days_to_inactive as daysToInactive, ");
sqlBuilder.append("cp.days_to_dormancy as daysToDormancy, ");
sqlBuilder.append("cp.days_to_escheat as daysToEscheat ");
sqlBuilder.append("from m_current_product cp ");
sqlBuilder.append("join m_currency curr on curr.code = cp.currency_code ");
sqlBuilder.append("left join m_tax_group tg on tg.id = cp.tax_group_id ");
@@ -346,14 +399,26 @@ public class CurrentAccountTemplateReadPlatformServiceImpl implements CurrentAcc
final SavingsAccountSubStatusEnumData subStatus = null;
final String reasonForBlock = null;
final LocalDate lastActiveTransactionDate = null;
final boolean isDormancyTrackingActive = false;
final Integer daysToInactive = null;
final Integer daysToDormancy = null;
final Integer daysToEscheat = null;
final boolean isDormancyTrackingActive = rs.getBoolean("isDormancyTrackingActive");
final Integer daysToInactive = JdbcSupport.getInteger(rs, "daysToInactive");
final Integer daysToDormancy = JdbcSupport.getInteger(rs, "daysToDormancy");
final Integer daysToEscheat = JdbcSupport.getInteger(rs, "daysToEscheat");
final boolean dormancyAlert = rs.getBoolean("dormancyAlert");
final boolean balanceSwapOption = rs.getBoolean("balanceSwapOption");
final boolean msme = rs.getBoolean("msme");
final boolean nominationFacility = rs.getBoolean("nominationFacility");
final boolean autoDebitFacility = rs.getBoolean("autoDebitFacility");
final boolean autoPost = rs.getBoolean("autoPost");
final Integer frequencyFixDay = JdbcSupport.getInteger(rs, "frequencyFixDay");
final LocalDate lastInterestDate = JdbcSupport.getLocalDate(rs, "lastInterestDate");
final Integer interestCalculateSelector = JdbcSupport.getInteger(rs, "interestCalculateSelector");
final String averagePeriod = rs.getString("averagePeriod");
final boolean accountClosedZeroBalanceInDayClosing = rs.getBoolean("accountClosedZeroBalanceInDayClosing");
final SavingsAccountApplicationTimelineData timeline = SavingsAccountApplicationTimelineData.templateDefault();
final EnumOptionData depositType = null;
return SavingsAccountData.instance(null, null, depositType, null, groupId, groupName, clientId, clientName, productId,
final SavingsAccountData accountData = SavingsAccountData.instance(null, null, depositType, null, groupId, groupName, clientId, clientName, productId,
productName, fieldOfficerId, fieldOfficerName, status, subStatus, reasonForBlock, timeline, currency,
nominalAnnualIterestRate, interestCompoundingPeriodType, interestPostingPeriodType, interestCalculationType,
interestCalculationDaysInYearType, minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyType,
@@ -361,6 +426,19 @@ public class CurrentAccountTemplateReadPlatformServiceImpl implements CurrentAcc
maxAllowedLienLimit, lienAllowed, minBalanceForInterestCalculation, onHoldFunds, nominalAnnualInterestRateOverdraft,
minOverdraftForInterestCalculation, withHoldTax, taxGroupData, lastActiveTransactionDate, isDormancyTrackingActive,
daysToInactive, daysToDormancy, daysToEscheat, savingsAmountOnHold);
accountData.setDormancyAlert(dormancyAlert);
accountData.setBalanceSwapOption(balanceSwapOption);
accountData.setMsme(msme);
accountData.setNominationFacility(nominationFacility);
accountData.setAutoDebitFacility(autoDebitFacility);
accountData.setAutoPost(autoPost);
accountData.setFrequencyFixDay(frequencyFixDay);
accountData.setLastInterestDate(lastInterestDate);
accountData.setInterestCalculateSelector(interestCalculateSelector);
accountData.setAveragePeriod(averagePeriod);
accountData.setAccountClosedZeroBalanceInDayClosing(accountClosedZeroBalanceInDayClosing);
return accountData;
}
}
@@ -396,13 +396,17 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead
template = FixedDepositAccountData.withInterestChart((FixedDepositAccountData) template, accountChart);
} else if (depositAccountType.isRecurringDeposit()) {
template = RecurringDepositAccountData.withTemplateOptions((RecurringDepositAccountData) template, productOptions,
// Save CBS fields from mapper result before factory methods create new objects
final RecurringDepositAccountData rdTemplateWithCbs = (RecurringDepositAccountData) template;
template = RecurringDepositAccountData.withTemplateOptions(rdTemplateWithCbs, productOptions,
fieldOfficerOptions, interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions,
interestCalculationTypeOptions, interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions,
withdrawalFeeTypeOptions, transactions, charges, chargeOptions, preClosurePenalInterestOnTypeOptions,
periodFrequencyTypeOptions);
template = RecurringDepositAccountData.withInterestChartAndRecurringDetails((RecurringDepositAccountData) template,
accountChart, null, null);
// Re-apply CBS product fields lost during factory method object creation
((RecurringDepositAccountData) template).copyCbsFieldsFrom(rdTemplateWithCbs);
}
@@ -1475,10 +1479,33 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead
sqlBuilder.append("dptp.min_deposit_term_type_enum as minDepositTermTypeId, ");
sqlBuilder.append("dptp.max_deposit_term_type_enum as maxDepositTermTypeId, ");
sqlBuilder.append("dptp.in_multiples_of_deposit_term as inMultiplesOfDepositTerm, ");
sqlBuilder.append("dptp.in_multiples_of_deposit_term_type_enum as inMultiplesOfDepositTermTypeId ");
sqlBuilder.append("dptp.in_multiples_of_deposit_term_type_enum as inMultiplesOfDepositTermTypeId, ");
sqlBuilder.append("sa.account_type as accountType, sa.customer_segment as customerSegment, ");
sqlBuilder.append("sa.product_code as productCode, ");
sqlBuilder.append("sa.effective_date as effectiveDate, sa.effective_to as effectiveTo, sa.end_date as endDate, ");
sqlBuilder.append("sa.introducer_required as introducerRequired, sa.share_linking_enabled as shareLinkingEnabled, ");
sqlBuilder.append("sa.nomination_facility as nominationFacility, sa.dormancy_alert as dormancyAlert, ");
sqlBuilder.append("sa.interest_calculate_selector as interestCalculateSelector, ");
sqlBuilder.append("icv.code_value as interestCalculationTypeName, ");
sqlBuilder.append("sa.average_period as averagePeriod, ");
sqlBuilder.append("sa.auto_post as autoPost, sa.frequency_fix_day as frequencyFixDay, ");
sqlBuilder.append("sa.last_interest_date as lastInterestDate, sa.enable_lockin_period as enableLockinPeriod, ");
sqlBuilder.append("sa.balance_frequency as balanceFrequency, ");
sqlBuilder.append("sa.account_closed_zero_balance_in_day_closing as accountClosedZeroBalanceInDayClosing, ");
sqlBuilder.append("sa.balance_swap_option as balanceSwapOption, sa.msme as msme, ");
sqlBuilder.append("sa.auto_debit_facility as autoDebitFacility, sa.loan_facility as loanFacility, ");
sqlBuilder.append("sa.premature_withdrawal_option as prematureWithdrawalOption, sa.tenure_flexibility as tenureFlexibility, ");
sqlBuilder.append("sa.lien_marked as lienMarked, sa.maturity_instructions as maturityInstructions, ");
sqlBuilder.append("sa.credit_maturity_proceeds as creditMaturityProceeds, ");
sqlBuilder.append("sa.penalty_grace_period_missed_installments as penaltyGracePeriodMissedInstallments, ");
sqlBuilder.append("sa.panel_request_applicable as panelRequestApplicable, ");
sqlBuilder.append("sa.no_penalty_nominee_heir_closure as noPenaltyNomineeHeirClosure, ");
sqlBuilder.append("sa.deceased_settlement as deceasedSettlement, ");
sqlBuilder.append("sa.allow_debit_txn_after_due_date as allowDebitTxnAfterDueDate ");
sqlBuilder.append(this.selectTablesSql());
sqlBuilder.append("left join m_deposit_product_recurring_detail dprd on sa.id = dprd.savings_product_id ");
sqlBuilder.append("left join m_code_value icv on icv.id = sa.interest_calculate_selector ");
this.schemaSql = sqlBuilder.toString();
}
@@ -1527,12 +1554,52 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead
final BigDecimal totalOverdueAmount = null;
final Integer noOfOverdueInstallments = null;
return RecurringDepositAccountData.instance(depositAccountData, preClosurePenalApplicable, preClosurePenalInterest,
final RecurringDepositAccountData result = RecurringDepositAccountData.instance(depositAccountData,
preClosurePenalApplicable, preClosurePenalInterest,
preClosurePenalInterestOnType, minDepositTerm, maxDepositTerm, minDepositTermType, maxDepositTermType,
inMultiplesOfDepositTerm, inMultiplesOfDepositTermType, depositAmount, maturityAmount, maturityDate, depositPeriod,
depositPeriodFrequencyType, mandatoryRecommendedDepositAmount, onAccountClosureType, expectedFirstDepositOnDate,
totalOverdueAmount, noOfOverdueInstallments, isMandatoryDeposit, allowWithdrawal, adjustAdvanceTowardsFuturePayments,
isCalendarInherited);
// CBS product fields
result.setCbsProductFields(
rs.getString("accountType"),
rs.getString("customerSegment"),
rs.getString("productCode"),
JdbcSupport.getLocalDate(rs, "effectiveDate"),
JdbcSupport.getLocalDate(rs, "effectiveTo"),
JdbcSupport.getLocalDate(rs, "endDate"),
rs.getBoolean("introducerRequired"),
rs.getBoolean("shareLinkingEnabled"),
rs.getBoolean("nominationFacility"),
rs.getBoolean("dormancyAlert"),
JdbcSupport.getInteger(rs, "interestCalculateSelector"),
rs.getString("interestCalculationTypeName"),
rs.getString("averagePeriod"),
rs.getBoolean("autoPost"),
JdbcSupport.getInteger(rs, "frequencyFixDay"),
JdbcSupport.getLocalDate(rs, "lastInterestDate"),
rs.getBoolean("enableLockinPeriod"),
rs.getString("balanceFrequency"),
rs.getBoolean("accountClosedZeroBalanceInDayClosing"),
rs.getBoolean("balanceSwapOption"),
rs.getBoolean("msme"),
rs.getBoolean("autoDebitFacility"),
rs.getBoolean("loanFacility"),
rs.getBoolean("prematureWithdrawalOption"),
rs.getBoolean("tenureFlexibility"),
rs.getBoolean("lienMarked"),
rs.getBoolean("maturityInstructions"),
rs.getBoolean("creditMaturityProceeds"),
rs.getBoolean("penaltyGracePeriodMissedInstallments"),
rs.getBoolean("panelRequestApplicable"),
rs.getBoolean("noPenaltyNomineeHeirClosure"),
rs.getBoolean("deceasedSettlement"),
rs.getBoolean("allowDebitTxnAfterDueDate")
);
return result;
}
}
@@ -85,7 +85,10 @@ public class SavingsApiSetConstants extends SavingsApiConstants {
"accountType", "customerSegment", "productCode", "effectiveTo", "endDate", "introducerRequired", "shareLinkingEnabled",
"nominationFacility", "dormancyAlert", "enableLockinPeriod", "balanceFrequency",
"accountClosedZeroBalanceInDayClosing", "accountFacilityConfig", "accountFacilityLimits", "depositLimitKyc",
"interestCalculateSelector", "averagePeriod", "autoPost", "frequencyFixDay"));
"interestCalculateSelector", "averagePeriod", "autoPost", "frequencyFixDay", "lastInterestDate",
"balanceSwapOption", "msme", "autoDebitFacility", "interestCalculationTypeOption",
"effectiveDate", "isDormancyTrackingActive", "daysToInactive", "daysToDormancy", "daysToEscheat",
"avgBalanceCalcPeriod", "validForPeriod", "odAccountClosedZeroBalanceInDayClosing"));
protected static final Set<String> SAVINGS_TRANSACTION_RESPONSE_DATA_PARAMETERS = new HashSet<>(
Arrays.asList(idParamName, "accountId", accountNoParamName, "currency", "amount", dateParamName, paymentDetailDataParamName,
@@ -83,6 +83,124 @@ public final class RecurringDepositAccountData extends DepositAccountData {
private LocalDate submittedOnDate;
private Long depositPeriodFrequencyId;
// CBS product fields (populated from product template)
private String accountType;
private String customerSegment;
private String productCode;
private LocalDate effectiveDate;
private LocalDate effectiveTo;
private LocalDate endDate;
private Boolean introducerRequired;
private Boolean shareLinkingEnabled;
private Boolean nominationFacility;
private Boolean dormancyAlert;
private Integer interestCalculateSelector;
private String interestCalculationTypeName;
private String averagePeriod;
private Boolean autoPost;
private Integer frequencyFixDay;
private LocalDate lastInterestDate;
private Boolean enableLockinPeriod;
private String balanceFrequency;
private Boolean accountClosedZeroBalanceInDayClosing;
private Boolean balanceSwapOption;
private Boolean msme;
private Boolean autoDebitFacility;
private Boolean loanFacility;
private Boolean prematureWithdrawalOption;
private Boolean tenureFlexibility;
private Boolean lienMarked;
private Boolean maturityInstructions;
private Boolean creditMaturityProceeds;
private Boolean penaltyGracePeriodMissedInstallments;
private Boolean panelRequestApplicable;
private Boolean noPenaltyNomineeHeirClosure;
private Boolean deceasedSettlement;
private Boolean allowDebitTxnAfterDueDate;
public void copyCbsFieldsFrom(final RecurringDepositAccountData src) {
if (src == null) return;
this.accountType = src.accountType;
this.customerSegment = src.customerSegment;
this.productCode = src.productCode;
this.effectiveDate = src.effectiveDate;
this.effectiveTo = src.effectiveTo;
this.endDate = src.endDate;
this.introducerRequired = src.introducerRequired;
this.shareLinkingEnabled = src.shareLinkingEnabled;
this.nominationFacility = src.nominationFacility;
this.dormancyAlert = src.dormancyAlert;
this.interestCalculateSelector = src.interestCalculateSelector;
this.interestCalculationTypeName = src.interestCalculationTypeName;
this.averagePeriod = src.averagePeriod;
this.autoPost = src.autoPost;
this.frequencyFixDay = src.frequencyFixDay;
this.lastInterestDate = src.lastInterestDate;
this.enableLockinPeriod = src.enableLockinPeriod;
this.balanceFrequency = src.balanceFrequency;
this.accountClosedZeroBalanceInDayClosing = src.accountClosedZeroBalanceInDayClosing;
this.balanceSwapOption = src.balanceSwapOption;
this.msme = src.msme;
this.autoDebitFacility = src.autoDebitFacility;
this.loanFacility = src.loanFacility;
this.prematureWithdrawalOption = src.prematureWithdrawalOption;
this.tenureFlexibility = src.tenureFlexibility;
this.lienMarked = src.lienMarked;
this.maturityInstructions = src.maturityInstructions;
this.creditMaturityProceeds = src.creditMaturityProceeds;
this.penaltyGracePeriodMissedInstallments = src.penaltyGracePeriodMissedInstallments;
this.panelRequestApplicable = src.panelRequestApplicable;
this.noPenaltyNomineeHeirClosure = src.noPenaltyNomineeHeirClosure;
this.deceasedSettlement = src.deceasedSettlement;
this.allowDebitTxnAfterDueDate = src.allowDebitTxnAfterDueDate;
}
public void setCbsProductFields(String accountType, String customerSegment, String productCode,
LocalDate effectiveDate, LocalDate effectiveTo, LocalDate endDate,
Boolean introducerRequired, Boolean shareLinkingEnabled, Boolean nominationFacility, Boolean dormancyAlert,
Integer interestCalculateSelector, String interestCalculationTypeName, String averagePeriod,
Boolean autoPost, Integer frequencyFixDay, LocalDate lastInterestDate,
Boolean enableLockinPeriod, String balanceFrequency, Boolean accountClosedZeroBalanceInDayClosing,
Boolean balanceSwapOption, Boolean msme, Boolean autoDebitFacility, Boolean loanFacility,
Boolean prematureWithdrawalOption, Boolean tenureFlexibility, Boolean lienMarked,
Boolean maturityInstructions, Boolean creditMaturityProceeds, Boolean penaltyGracePeriodMissedInstallments,
Boolean panelRequestApplicable, Boolean noPenaltyNomineeHeirClosure, Boolean deceasedSettlement,
Boolean allowDebitTxnAfterDueDate) {
this.accountType = accountType;
this.customerSegment = customerSegment;
this.productCode = productCode;
this.effectiveDate = effectiveDate;
this.effectiveTo = effectiveTo;
this.endDate = endDate;
this.introducerRequired = introducerRequired;
this.shareLinkingEnabled = shareLinkingEnabled;
this.nominationFacility = nominationFacility;
this.dormancyAlert = dormancyAlert;
this.interestCalculateSelector = interestCalculateSelector;
this.interestCalculationTypeName = interestCalculationTypeName;
this.averagePeriod = averagePeriod;
this.autoPost = autoPost;
this.frequencyFixDay = frequencyFixDay;
this.lastInterestDate = lastInterestDate;
this.enableLockinPeriod = enableLockinPeriod;
this.balanceFrequency = balanceFrequency;
this.accountClosedZeroBalanceInDayClosing = accountClosedZeroBalanceInDayClosing;
this.balanceSwapOption = balanceSwapOption;
this.msme = msme;
this.autoDebitFacility = autoDebitFacility;
this.loanFacility = loanFacility;
this.prematureWithdrawalOption = prematureWithdrawalOption;
this.tenureFlexibility = tenureFlexibility;
this.lienMarked = lienMarked;
this.maturityInstructions = maturityInstructions;
this.creditMaturityProceeds = creditMaturityProceeds;
this.penaltyGracePeriodMissedInstallments = penaltyGracePeriodMissedInstallments;
this.panelRequestApplicable = panelRequestApplicable;
this.noPenaltyNomineeHeirClosure = noPenaltyNomineeHeirClosure;
this.deceasedSettlement = deceasedSettlement;
this.allowDebitTxnAfterDueDate = allowDebitTxnAfterDueDate;
}
public static RecurringDepositAccountData importInstance(Long clientId, Long productId, Long fieldOfficerId, LocalDate submittedOnDate,
EnumOptionData interestCompoundingPeriodTypeEnum, EnumOptionData interestPostingPeriodTypeEnum,
EnumOptionData interestCalculationTypeEnum, EnumOptionData interestCalculationDaysInYearTypeEnum, Integer lockinPeriodFrequency,