Merge remote-tracking branch 'self-hosted/feature/merge-updates' into feature/reports-products
# Conflicts: # fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml
This commit is contained in:
+1
-1
@@ -234,7 +234,7 @@ public class ClientApiConstants {
|
||||
public static final String clientEntityName = "clients";
|
||||
|
||||
public static final Set<String> CLIENT_ACCOUNTS_DATA_PARAMETERS = new HashSet<>(
|
||||
Arrays.asList("loanAccounts", "savingsAccounts", "shareAccounts"));
|
||||
Arrays.asList("loanAccounts", "savingsAccounts", "shareAccounts", "currentAccounts"));
|
||||
|
||||
/**
|
||||
* These parameters will match the class level parameters of ClientData. Where possible, we try to get response
|
||||
|
||||
+123
@@ -292,6 +292,48 @@ public final class DepositsApiConstants {
|
||||
recurringDepositRequestData.addAll(DEPOSIT_TERM_REQUEST_DATA_PARAMETERS);
|
||||
recurringDepositRequestData.addAll(RECURRING_DETAILS_REQUEST_DATA_PARAMETERS);
|
||||
recurringDepositRequestData.add(SavingsApiConstants.minBalanceForInterestCalculationParamName);
|
||||
// Custom CBS fields — Details step
|
||||
recurringDepositRequestData.add("accountType");
|
||||
recurringDepositRequestData.add("customerSegment");
|
||||
recurringDepositRequestData.add("productCode");
|
||||
recurringDepositRequestData.add(SavingsApiConstants.glAccountIdParamName);
|
||||
recurringDepositRequestData.add("effectiveTo");
|
||||
recurringDepositRequestData.add("endDate");
|
||||
recurringDepositRequestData.add("introducerRequired");
|
||||
recurringDepositRequestData.add("shareLinkingEnabled");
|
||||
// Custom CBS fields — Currency step
|
||||
recurringDepositRequestData.add("dormancyAlert");
|
||||
recurringDepositRequestData.add(SavingsApiConstants.daysToInactiveParamName);
|
||||
recurringDepositRequestData.add(SavingsApiConstants.daysToDormancyParamName);
|
||||
recurringDepositRequestData.add(SavingsApiConstants.daysToEscheatParamName);
|
||||
recurringDepositRequestData.add("balanceSwapOption");
|
||||
recurringDepositRequestData.add("msme");
|
||||
recurringDepositRequestData.add("nominationFacility");
|
||||
recurringDepositRequestData.add("autoDebitFacility");
|
||||
// Custom CBS fields — Terms step
|
||||
recurringDepositRequestData.add("effectiveDate");
|
||||
recurringDepositRequestData.add("interestCalculateSelector");
|
||||
recurringDepositRequestData.add("averagePeriod");
|
||||
recurringDepositRequestData.add("autoPost");
|
||||
recurringDepositRequestData.add("frequencyFixDay");
|
||||
recurringDepositRequestData.add("lastInterestDate");
|
||||
// Custom CBS fields — Settings step
|
||||
recurringDepositRequestData.add("loanFacility");
|
||||
recurringDepositRequestData.add("prematureWithdrawalOption");
|
||||
recurringDepositRequestData.add("tenureFlexibility");
|
||||
recurringDepositRequestData.add("lienMarked");
|
||||
recurringDepositRequestData.add("withdrawalFeeForTransfers");
|
||||
recurringDepositRequestData.add("enableLockinPeriod");
|
||||
recurringDepositRequestData.add("maturityInstructions");
|
||||
recurringDepositRequestData.add("creditMaturityProceeds");
|
||||
recurringDepositRequestData.add("penaltyGracePeriodMissedInstallments");
|
||||
recurringDepositRequestData.add("panelRequestApplicable");
|
||||
recurringDepositRequestData.add("noPenaltyNomineeHeirClosure");
|
||||
recurringDepositRequestData.add("deceasedSettlement");
|
||||
recurringDepositRequestData.add("allowDebitTxnAfterDueDate");
|
||||
recurringDepositRequestData.add("accountClosedZeroBalanceInDayClosing");
|
||||
// Custom CBS fields — Interest rate slabs (sent inline but ignored server-side; saved separately)
|
||||
recurringDepositRequestData.add("rdSlabs");
|
||||
return recurringDepositRequestData;
|
||||
}
|
||||
|
||||
@@ -302,6 +344,49 @@ public final class DepositsApiConstants {
|
||||
recurringDepositRequestData.addAll(DEPOSIT_TERM_RESPONSE_DATA_PARAMETERS);
|
||||
recurringDepositRequestData.addAll(RECURRING_DETAILS_RESPONSE_DATA_PARAMETERS);
|
||||
recurringDepositRequestData.add(SavingsApiConstants.minBalanceForInterestCalculationParamName);
|
||||
// CBS extended fields — Options (for template=true)
|
||||
recurringDepositRequestData.add("interestCalculationTypeOption");
|
||||
recurringDepositRequestData.add("periodFrequencyOptions");
|
||||
recurringDepositRequestData.add("yesNoOptions");
|
||||
recurringDepositRequestData.add("accountTypeOptions");
|
||||
recurringDepositRequestData.add("customerSegmentOptions");
|
||||
// CBS extended fields — Details step
|
||||
recurringDepositRequestData.add("accountType");
|
||||
recurringDepositRequestData.add("customerSegment");
|
||||
recurringDepositRequestData.add("productCode");
|
||||
recurringDepositRequestData.add(SavingsApiConstants.glAccountIdParamName);
|
||||
recurringDepositRequestData.add("glAccountName");
|
||||
recurringDepositRequestData.add("effectiveDate");
|
||||
recurringDepositRequestData.add("effectiveTo");
|
||||
recurringDepositRequestData.add("endDate");
|
||||
recurringDepositRequestData.add("introducerRequired");
|
||||
recurringDepositRequestData.add("shareLinkingEnabled");
|
||||
recurringDepositRequestData.add("nominationFacility");
|
||||
recurringDepositRequestData.add("dormancyAlert");
|
||||
// CBS extended fields — Terms step
|
||||
recurringDepositRequestData.add("interestCalculateSelector");
|
||||
recurringDepositRequestData.add("averagePeriod");
|
||||
recurringDepositRequestData.add("autoPost");
|
||||
recurringDepositRequestData.add("frequencyFixDay");
|
||||
recurringDepositRequestData.add("lastInterestDate");
|
||||
// CBS extended fields — Settings step
|
||||
recurringDepositRequestData.add("enableLockinPeriod");
|
||||
recurringDepositRequestData.add("balanceFrequency");
|
||||
recurringDepositRequestData.add("accountClosedZeroBalanceInDayClosing");
|
||||
recurringDepositRequestData.add("balanceSwapOption");
|
||||
recurringDepositRequestData.add("msme");
|
||||
recurringDepositRequestData.add("autoDebitFacility");
|
||||
recurringDepositRequestData.add("loanFacility");
|
||||
recurringDepositRequestData.add("prematureWithdrawalOption");
|
||||
recurringDepositRequestData.add("tenureFlexibility");
|
||||
recurringDepositRequestData.add("lienMarked");
|
||||
recurringDepositRequestData.add("maturityInstructions");
|
||||
recurringDepositRequestData.add("creditMaturityProceeds");
|
||||
recurringDepositRequestData.add("penaltyGracePeriodMissedInstallments");
|
||||
recurringDepositRequestData.add("panelRequestApplicable");
|
||||
recurringDepositRequestData.add("noPenaltyNomineeHeirClosure");
|
||||
recurringDepositRequestData.add("deceasedSettlement");
|
||||
recurringDepositRequestData.add("allowDebitTxnAfterDueDate");
|
||||
return recurringDepositRequestData;
|
||||
}
|
||||
|
||||
@@ -371,6 +456,44 @@ 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("accountTypeOptions");
|
||||
recurringDepositResponseData.add("customerSegmentOptions");
|
||||
recurringDepositResponseData.add("productCode");
|
||||
recurringDepositResponseData.add(SavingsApiConstants.glAccountIdParamName);
|
||||
recurringDepositResponseData.add("glAccountName");
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
+105
@@ -25,6 +25,15 @@ public class SavingsApiConstants {
|
||||
public static final String SAVINGS_ACCOUNT_RESOURCE_NAME = "savingsaccount";
|
||||
public static final String SAVINGS_ACCOUNT_TRANSACTION_RESOURCE_NAME = "savingsaccount.transaction";
|
||||
public static final String SAVINGS_ACCOUNT_CHARGE_RESOURCE_NAME = "savingsaccountcharge";
|
||||
public static final String YES_NO = "YesNo";
|
||||
public static final String SAVINGS_PRODUCT_ACCOUNT_TYPE = "SavingsProductAccountType";
|
||||
public static final String SAVINGS_PRODUCT_CUSTOMER_SEGMENT = "SavingsProductCustomerSegment";
|
||||
public static final String CURRENT_PRODUCT_ACCOUNT_TYPE = "CurrentProductAccountType";
|
||||
public static final String CURRENT_PRODUCT_CUSTOMER_SEGMENT = "CurrentProductCustomerSegment";
|
||||
public static final String RD_PRODUCT_ACCOUNT_TYPE = "RecurringDepositProductAccountType";
|
||||
public static final String RD_PRODUCT_CUSTOMER_SEGMENT = "RecurringDepositProductCustomerSegment";
|
||||
public static final String PERIOD_FREQUENCY = "PeriodFrequency";
|
||||
public static final String INTEREST_CALCULATION_TYPE_OPTION = "InterestCalculationTypeOption";
|
||||
|
||||
// actions
|
||||
public static final String postInterestValidationOnClosure = "postInterestValidationOnClosure";
|
||||
@@ -195,6 +204,7 @@ public class SavingsApiConstants {
|
||||
public static final String daysToInactiveParamName = "daysToInactive";
|
||||
public static final String daysToDormancyParamName = "daysToDormancy";
|
||||
public static final String daysToEscheatParamName = "daysToEscheat";
|
||||
public static final String otherGlMappingsParamName = "otherGlMappings";
|
||||
|
||||
public static final String datatables = "datatables";
|
||||
|
||||
@@ -203,4 +213,99 @@ public class SavingsApiConstants {
|
||||
public static final String ERROR_MSG_SAVINGS_ACCOUNT_NOT_ACTIVE = "not.in.active.state";
|
||||
|
||||
public static final String accountMappingForPaymentParamName = "accountMappingForPayment";
|
||||
|
||||
// Enhanced Savings Product Fields
|
||||
public static final String accountTypeParamName = "accountType";
|
||||
public static final String customerSegmentParamName = "customerSegment";
|
||||
public static final String productCodeParamName = "productCode";
|
||||
public static final String glAccountIdParamName = "glAccountId";
|
||||
public static final String effectiveDateParamName = "effectiveDate";
|
||||
public static final String effectiveToParamName = "effectiveTo";
|
||||
public static final String endDateParamName = "endDate";
|
||||
public static final String introducerRequiredParamName = "introducerRequired";
|
||||
public static final String shareLinkingEnabledParamName = "shareLinkingEnabled";
|
||||
public static final String nominationFacilityParamName = "nominationFacility";
|
||||
public static final String dormancyAlertParamName = "dormancyAlert";
|
||||
public static final String interestCalculateSelectorParamName = "interestCalculateSelector";
|
||||
public static final String averagePeriodParamName = "averagePeriod";
|
||||
public static final String autoPostParamName = "autoPost";
|
||||
public static final String frequencyFixDayParamName = "frequencyFixDay";
|
||||
public static final String lastInterestDateParamName = "lastInterestDate";
|
||||
public static final String enableLockinPeriodParamName = "enableLockinPeriod";
|
||||
|
||||
// Complex objects
|
||||
public static final String accountFacilityConfigParamName = "accountFacilityConfig";
|
||||
public static final String accountFacilityLimitsParamName = "accountFacilityLimits";
|
||||
public static final String depositLimitKycParamName = "depositLimitKyc";
|
||||
|
||||
// Facility config fields
|
||||
public static final String atmFacilityParamName = "atmFacility";
|
||||
public static final String atmWithdrawalFacilityParamName = "atmWithdrawalFacility";
|
||||
public static final String upiFacilityParamName = "upiFacility";
|
||||
public static final String posTransactionsFacilityParamName = "posTransactionsFacility";
|
||||
public static final String chequeBookParamName = "chequeBook";
|
||||
public static final String impsFacilityParamName = "impsFacility";
|
||||
public static final String smsAlertsParamName = "smsAlerts";
|
||||
public static final String bbpsFacilityParamName = "bbpsFacility";
|
||||
public static final String insuranceCoverParamName = "insuranceCover";
|
||||
public static final String bepgFacilityParamName = "bepgFacility";
|
||||
public static final String neftFacilityParamName = "neftFacility";
|
||||
public static final String rtgsFacilityParamName = "rtgsFacility";
|
||||
public static final String interBankTotalCapFacilityParamName = "interBankTotalCapFacility";
|
||||
public static final String withdrawalFacilityParamName = "withdrawalFacility";
|
||||
public static final String depositFacilityKycParamName = "depositFacilityKyc";
|
||||
public static final String virtualDebitCardParamName = "virtualDebitCard";
|
||||
|
||||
// Limit fields
|
||||
public static final String limitTypeParamName = "limitType";
|
||||
public static final String generalLimitParamName = "generalLimit";
|
||||
public static final String minorAccountLimitParamName = "minorAccountLimit";
|
||||
public static final String smallSavingLimitParamName = "smallSavingLimit";
|
||||
|
||||
// Deposit limit KYC fields
|
||||
public static final String generalKycTypeParamName = "generalKycType";
|
||||
public static final String generalKycLimitParamName = "generalLimit";
|
||||
public static final String minorKycTypeParamName = "minorKycType";
|
||||
public static final String minorLimitParamName = "minorLimit";
|
||||
public static final String smallSavingKycTypeParamName = "smallSavingKycType";
|
||||
public static final String smallSavingKycLimitParamName = "smallSavingLimit";
|
||||
|
||||
// Additional custom fields
|
||||
public static final String balanceFrequencyParamName = "balanceFrequency";
|
||||
public static final String accountClosedZeroBalanceInDayClosingParamName = "accountClosedZeroBalanceInDayClosing";
|
||||
|
||||
// Current Product — new UI fields
|
||||
public static final String balanceSwapOptionParamName = "balanceSwapOption";
|
||||
public static final String msmeParamName = "msme";
|
||||
public static final String autoDebitFacilityParamName = "autoDebitFacility";
|
||||
public static final String avgBalanceCalcPeriodParamName = "avgBalanceCalcPeriod";
|
||||
public static final String validForPeriodParamName = "validForPeriod";
|
||||
public static final String odAccountClosedZeroBalanceInDayClosingParamName = "odAccountClosedZeroBalanceInDayClosing";
|
||||
|
||||
// Status of Account fields
|
||||
public static final String accountStatusParamName = "accountStatus";
|
||||
public static final String modeOfOperationParamName = "modeOfOperation";
|
||||
public static final String guardianClientIdParamName = "guardianClientId";
|
||||
public static final String specialCategoryParamName = "specialCategory";
|
||||
public static final String weakerSectionParamName = "weakerSection";
|
||||
public static final String guardianNameParamName = "guardianName";
|
||||
public static final String guardianCifNumberParamName = "guardianCifNumber";
|
||||
public static final String guardianRelationshipParamName = "guardianRelationship";
|
||||
public static final String minorDateOfBirthParamName = "minorDateOfBirth";
|
||||
|
||||
// Introducer fields
|
||||
public static final String introducerIdParamName = "introducerId";
|
||||
public static final String introducerNameParamName = "introducerName";
|
||||
public static final String introducerCifNumberParamName = "introducerCifNumber";
|
||||
|
||||
// Joint holders
|
||||
public static final String jointHoldersParamName = "jointHolders";
|
||||
|
||||
// Nominee
|
||||
public static final String nomineeParamName = "nominee";
|
||||
|
||||
// Deposit Account Link (DAL)
|
||||
public static final String linkedAccountIdParamName = "linkedAccountId";
|
||||
public static final String linkedAccountTypeParamName = "linkedAccountType";
|
||||
public static final String linkedAccountNoParamName = "linkedAccountNo";
|
||||
}
|
||||
|
||||
+306
-21
@@ -27,11 +27,13 @@ import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||
import org.apache.fineract.infrastructure.codes.data.CodeValueData;
|
||||
import org.apache.fineract.infrastructure.core.data.EnumOptionData;
|
||||
import org.apache.fineract.infrastructure.core.jersey.serializer.legacy.JsonLocalDateArrayFormat;
|
||||
import org.apache.fineract.infrastructure.dataqueries.data.DatatableData;
|
||||
@@ -55,6 +57,7 @@ public final class SavingsAccountData implements Serializable {
|
||||
|
||||
private final Long id;
|
||||
private final String accountNo;
|
||||
private String previewAccountNo;
|
||||
private final EnumOptionData depositType;
|
||||
private final String externalId;
|
||||
private final Long groupId;
|
||||
@@ -123,6 +126,66 @@ public final class SavingsAccountData implements Serializable {
|
||||
|
||||
private List<DatatableData> datatables = null;
|
||||
|
||||
// CBS Account fields (saved per account)
|
||||
private String cbsAccountType;
|
||||
private String accountStatus;
|
||||
private String modeOfOperation;
|
||||
private String specialCategory;
|
||||
private String weakerSection;
|
||||
private String guardianName;
|
||||
private String guardianCifNumber;
|
||||
private String guardianRelationship;
|
||||
private LocalDate minorDateOfBirth;
|
||||
private Long guardianClientId;
|
||||
private Long introducerClientId;
|
||||
private String introducerName;
|
||||
private String introducerCifNumber;
|
||||
private Map<String, Object> nomineeData;
|
||||
private Long linkedAccountId;
|
||||
private String linkedAccountType;
|
||||
private String linkedAccountNo;
|
||||
private List<java.util.Map<String, Object>> jointHolders;
|
||||
|
||||
// CBS Product fields (populated in template response from selected product)
|
||||
private String accountType;
|
||||
private String customerSegment;
|
||||
private Collection<CodeValueData> accountTypeOptions;
|
||||
private Collection<CodeValueData> customerSegmentOptions;
|
||||
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 Boolean isDormancyTrackingActiveFromProduct;
|
||||
private Long daysToInactiveFromProduct;
|
||||
private Long daysToDormancyFromProduct;
|
||||
private Long daysToEscheatFromProduct;
|
||||
private String interestCalculationTypeName;
|
||||
private Boolean enableLockinPeriod;
|
||||
private String balanceFrequency;
|
||||
private Boolean accountClosedZeroBalanceInDayClosing;
|
||||
private Boolean balanceSwapOption;
|
||||
private Boolean msme;
|
||||
private Boolean autoDebitFacility;
|
||||
private String avgBalanceCalcPeriod;
|
||||
private String validForPeriod;
|
||||
private Boolean odAccountClosedZeroBalanceInDayClosing;
|
||||
private LocalDate lastInterestDate;
|
||||
private Map<String, Object> accountFacilityConfig;
|
||||
private Collection<Map<String, Object>> accountFacilityLimits;
|
||||
private Map<String, Object> depositLimitKyc;
|
||||
// CBS Term fields
|
||||
private Integer interestCalculateSelector;
|
||||
private String averagePeriod;
|
||||
private Boolean autoPost;
|
||||
private Integer frequencyFixDay;
|
||||
// CBS dropdown options (from product)
|
||||
private Collection<EnumOptionData> interestCalculationTypeOption;
|
||||
private Collection<EnumOptionData> periodFrequencyOptions;
|
||||
|
||||
// import field
|
||||
private Long productId;
|
||||
private String locale;
|
||||
@@ -688,37 +751,41 @@ public final class SavingsAccountData implements Serializable {
|
||||
public static SavingsAccountData withTemplateOptions(final SavingsAccountData account, final SavingsAccountData template,
|
||||
final Collection<SavingsAccountTransactionData> transactions, final Collection<SavingsAccountChargeData> charges) {
|
||||
|
||||
if (template == null) {
|
||||
final Collection<SavingsProductData> productOptions = null;
|
||||
final Collection<StaffData> fieldOfficerOptions = null;
|
||||
final Collection<EnumOptionData> interestCompoundingPeriodTypeOptions = null;
|
||||
final Collection<EnumOptionData> interestPostingPeriodTypeOptions = null;
|
||||
final Collection<EnumOptionData> interestCalculationTypeOptions = null;
|
||||
final Collection<EnumOptionData> interestCalculationDaysInYearTypeOptions = null;
|
||||
final Collection<EnumOptionData> lockinPeriodFrequencyTypeOptions = null;
|
||||
final Collection<EnumOptionData> withdrawalFeeTypeOptions = null;
|
||||
final Collection<ChargeData> chargeOptions = null;
|
||||
final Collection<SavingsProductData> productOptions = template == null ? null : template.productOptions;
|
||||
final Collection<StaffData> fieldOfficerOptions = template == null ? null : template.fieldOfficerOptions;
|
||||
final Collection<EnumOptionData> interestCompoundingPeriodTypeOptions = template == null ? null
|
||||
: template.interestCompoundingPeriodTypeOptions;
|
||||
final Collection<EnumOptionData> interestPostingPeriodTypeOptions = template == null ? null
|
||||
: template.interestPostingPeriodTypeOptions;
|
||||
final Collection<EnumOptionData> interestCalculationTypeOptions = template == null ? null
|
||||
: template.interestCalculationTypeOptions;
|
||||
final Collection<EnumOptionData> interestCalculationDaysInYearTypeOptions = template == null ? null
|
||||
: template.interestCalculationDaysInYearTypeOptions;
|
||||
final Collection<EnumOptionData> lockinPeriodFrequencyTypeOptions = template == null ? null
|
||||
: template.lockinPeriodFrequencyTypeOptions;
|
||||
final Collection<EnumOptionData> withdrawalFeeTypeOptions = template == null ? null
|
||||
: template.withdrawalFeeTypeOptions;
|
||||
final Collection<ChargeData> chargeOptions = template == null ? null : template.chargeOptions;
|
||||
|
||||
return withTemplateOptions(account, productOptions, fieldOfficerOptions, interestCompoundingPeriodTypeOptions,
|
||||
interestPostingPeriodTypeOptions, interestCalculationTypeOptions, interestCalculationDaysInYearTypeOptions,
|
||||
lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, transactions, charges, chargeOptions);
|
||||
}
|
||||
|
||||
return new SavingsAccountData(account.id, account.accountNo, account.depositType, account.externalId, account.groupId,
|
||||
final SavingsAccountData result = new SavingsAccountData(account.id, account.accountNo, account.depositType, account.externalId,
|
||||
account.groupId,
|
||||
account.groupName, account.clientId, account.clientName, account.savingsProductId, account.savingsProductName,
|
||||
account.fieldOfficerId, account.fieldOfficerName, account.status, account.subStatus, account.reasonForBlock,
|
||||
account.timeline, account.currency, account.nominalAnnualInterestRate, account.interestCompoundingPeriodType,
|
||||
account.interestPostingPeriodType, account.interestCalculationType, account.interestCalculationDaysInYearType,
|
||||
account.minRequiredOpeningBalance, account.lockinPeriodFrequency, account.lockinPeriodFrequencyType,
|
||||
account.withdrawalFeeForTransfers, account.summary, transactions, template.productOptions, template.fieldOfficerOptions,
|
||||
template.interestCompoundingPeriodTypeOptions, template.interestPostingPeriodTypeOptions,
|
||||
template.interestCalculationTypeOptions, template.interestCalculationDaysInYearTypeOptions,
|
||||
template.lockinPeriodFrequencyTypeOptions, template.withdrawalFeeTypeOptions, charges, template.chargeOptions,
|
||||
account.withdrawalFeeForTransfers, account.summary, transactions, productOptions, fieldOfficerOptions,
|
||||
interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions,
|
||||
interestCalculationTypeOptions, interestCalculationDaysInYearTypeOptions,
|
||||
lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, charges, chargeOptions,
|
||||
account.allowOverdraft, account.overdraftLimit, account.minRequiredBalance, account.enforceMinRequiredBalance,
|
||||
account.maxAllowedLienLimit, account.lienAllowed, account.minBalanceForInterestCalculation, account.onHoldFunds,
|
||||
account.nominalAnnualInterestRateOverdraft, account.minOverdraftForInterestCalculation, account.withHoldTax,
|
||||
account.taxGroup, account.lastActiveTransactionDate, account.isDormancyTrackingActive, account.daysToInactive,
|
||||
account.daysToDormancy, account.daysToEscheat, account.savingsAmountOnHold);
|
||||
copyPresentationFields(result, template);
|
||||
copyPresentationFields(result, account);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static SavingsAccountData withTemplateOptions(final SavingsAccountData account,
|
||||
@@ -731,7 +798,8 @@ public final class SavingsAccountData implements Serializable {
|
||||
final Collection<SavingsAccountTransactionData> transactions, final Collection<SavingsAccountChargeData> charges,
|
||||
final Collection<ChargeData> chargeOptions) {
|
||||
|
||||
return new SavingsAccountData(account.id, account.accountNo, account.depositType, account.externalId, account.groupId,
|
||||
final SavingsAccountData result = new SavingsAccountData(account.id, account.accountNo, account.depositType, account.externalId,
|
||||
account.groupId,
|
||||
account.groupName, account.clientId, account.clientName, account.savingsProductId, account.savingsProductName,
|
||||
account.fieldOfficerId, account.fieldOfficerName, account.status, account.subStatus, account.reasonForBlock,
|
||||
account.timeline, account.currency, account.nominalAnnualInterestRate, account.interestCompoundingPeriodType,
|
||||
@@ -746,6 +814,223 @@ public final class SavingsAccountData implements Serializable {
|
||||
account.minOverdraftForInterestCalculation, account.withHoldTax, account.taxGroup, account.lastActiveTransactionDate,
|
||||
account.isDormancyTrackingActive, account.daysToInactive, account.daysToDormancy, account.daysToEscheat,
|
||||
account.savingsAmountOnHold);
|
||||
copyPresentationFields(result, account);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static void copyPresentationFields(final SavingsAccountData target, final SavingsAccountData source) {
|
||||
if (source == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (source.previewAccountNo != null) {
|
||||
target.setPreviewAccountNo(source.previewAccountNo);
|
||||
}
|
||||
if (source.cbsAccountType != null) {
|
||||
target.setCbsAccountType(source.cbsAccountType);
|
||||
}
|
||||
if (source.customerSegment != null) {
|
||||
target.setCustomerSegment(source.customerSegment);
|
||||
}
|
||||
if (source.accountStatus != null) {
|
||||
target.setAccountStatus(source.accountStatus);
|
||||
}
|
||||
if (source.modeOfOperation != null) {
|
||||
target.setModeOfOperation(source.modeOfOperation);
|
||||
}
|
||||
if (source.specialCategory != null) {
|
||||
target.setSpecialCategory(source.specialCategory);
|
||||
}
|
||||
if (source.weakerSection != null) {
|
||||
target.setWeakerSection(source.weakerSection);
|
||||
}
|
||||
if (source.guardianName != null) {
|
||||
target.setGuardianName(source.guardianName);
|
||||
}
|
||||
if (source.guardianCifNumber != null) {
|
||||
target.setGuardianCifNumber(source.guardianCifNumber);
|
||||
}
|
||||
if (source.guardianRelationship != null) {
|
||||
target.setGuardianRelationship(source.guardianRelationship);
|
||||
}
|
||||
if (source.minorDateOfBirth != null) {
|
||||
target.setMinorDateOfBirth(source.minorDateOfBirth);
|
||||
}
|
||||
if (source.guardianClientId != null) {
|
||||
target.setGuardianClientId(source.guardianClientId);
|
||||
}
|
||||
if (source.introducerClientId != null) {
|
||||
target.setIntroducerClientId(source.introducerClientId);
|
||||
}
|
||||
if (source.introducerName != null) {
|
||||
target.setIntroducerName(source.introducerName);
|
||||
}
|
||||
if (source.introducerCifNumber != null) {
|
||||
target.setIntroducerCifNumber(source.introducerCifNumber);
|
||||
}
|
||||
if (source.nomineeData != null) {
|
||||
target.setNomineeData(source.nomineeData);
|
||||
}
|
||||
if (source.linkedAccountId != null) {
|
||||
target.setLinkedAccountId(source.linkedAccountId);
|
||||
}
|
||||
if (source.linkedAccountType != null) {
|
||||
target.setLinkedAccountType(source.linkedAccountType);
|
||||
}
|
||||
if (source.linkedAccountNo != null) {
|
||||
target.setLinkedAccountNo(source.linkedAccountNo);
|
||||
}
|
||||
if (source.jointHolders != null) {
|
||||
target.setJointHolders(new ArrayList<>(source.jointHolders));
|
||||
}
|
||||
|
||||
if (source.accountType != null) {
|
||||
target.setAccountType(source.accountType);
|
||||
}
|
||||
if (source.customerSegmentOptions != null) {
|
||||
target.setCustomerSegmentOptions(source.customerSegmentOptions);
|
||||
}
|
||||
if (source.accountTypeOptions != null) {
|
||||
target.setAccountTypeOptions(source.accountTypeOptions);
|
||||
}
|
||||
if (source.productCode != null) {
|
||||
target.setProductCode(source.productCode);
|
||||
}
|
||||
if (source.effectiveDate != null) {
|
||||
target.setEffectiveDate(source.effectiveDate);
|
||||
}
|
||||
if (source.effectiveTo != null) {
|
||||
target.setEffectiveTo(source.effectiveTo);
|
||||
}
|
||||
if (source.endDate != null) {
|
||||
target.setEndDate(source.endDate);
|
||||
}
|
||||
if (source.introducerRequired != null) {
|
||||
target.setIntroducerRequired(source.introducerRequired);
|
||||
}
|
||||
if (source.shareLinkingEnabled != null) {
|
||||
target.setShareLinkingEnabled(source.shareLinkingEnabled);
|
||||
}
|
||||
if (source.nominationFacility != null) {
|
||||
target.setNominationFacility(source.nominationFacility);
|
||||
}
|
||||
if (source.dormancyAlert != null) {
|
||||
target.setDormancyAlert(source.dormancyAlert);
|
||||
}
|
||||
if (source.isDormancyTrackingActiveFromProduct != null) {
|
||||
target.setIsDormancyTrackingActiveFromProduct(source.isDormancyTrackingActiveFromProduct);
|
||||
}
|
||||
if (source.daysToInactiveFromProduct != null) {
|
||||
target.setDaysToInactiveFromProduct(source.daysToInactiveFromProduct);
|
||||
}
|
||||
if (source.daysToDormancyFromProduct != null) {
|
||||
target.setDaysToDormancyFromProduct(source.daysToDormancyFromProduct);
|
||||
}
|
||||
if (source.daysToEscheatFromProduct != null) {
|
||||
target.setDaysToEscheatFromProduct(source.daysToEscheatFromProduct);
|
||||
}
|
||||
if (source.interestCalculationTypeName != null) {
|
||||
target.setInterestCalculationTypeName(source.interestCalculationTypeName);
|
||||
}
|
||||
if (source.enableLockinPeriod != null) {
|
||||
target.setEnableLockinPeriod(source.enableLockinPeriod);
|
||||
}
|
||||
if (source.balanceFrequency != null) {
|
||||
target.setBalanceFrequency(source.balanceFrequency);
|
||||
}
|
||||
if (source.accountClosedZeroBalanceInDayClosing != null) {
|
||||
target.setAccountClosedZeroBalanceInDayClosing(source.accountClosedZeroBalanceInDayClosing);
|
||||
}
|
||||
if (source.balanceSwapOption != null) {
|
||||
target.setBalanceSwapOption(source.balanceSwapOption);
|
||||
}
|
||||
if (source.msme != null) {
|
||||
target.setMsme(source.msme);
|
||||
}
|
||||
if (source.autoDebitFacility != null) {
|
||||
target.setAutoDebitFacility(source.autoDebitFacility);
|
||||
}
|
||||
if (source.avgBalanceCalcPeriod != null) {
|
||||
target.setAvgBalanceCalcPeriod(source.avgBalanceCalcPeriod);
|
||||
}
|
||||
if (source.validForPeriod != null) {
|
||||
target.setValidForPeriod(source.validForPeriod);
|
||||
}
|
||||
if (source.odAccountClosedZeroBalanceInDayClosing != null) {
|
||||
target.setOdAccountClosedZeroBalanceInDayClosing(source.odAccountClosedZeroBalanceInDayClosing);
|
||||
}
|
||||
if (source.lastInterestDate != null) {
|
||||
target.setLastInterestDate(source.lastInterestDate);
|
||||
}
|
||||
if (source.accountFacilityConfig != null) {
|
||||
target.setAccountFacilityConfig(source.accountFacilityConfig);
|
||||
}
|
||||
if (source.accountFacilityLimits != null) {
|
||||
target.setAccountFacilityLimits(source.accountFacilityLimits);
|
||||
}
|
||||
if (source.depositLimitKyc != null) {
|
||||
target.setDepositLimitKyc(source.depositLimitKyc);
|
||||
}
|
||||
if (source.interestCalculateSelector != null) {
|
||||
target.setInterestCalculateSelector(source.interestCalculateSelector);
|
||||
}
|
||||
if (source.averagePeriod != null) {
|
||||
target.setAveragePeriod(source.averagePeriod);
|
||||
}
|
||||
if (source.autoPost != null) {
|
||||
target.setAutoPost(source.autoPost);
|
||||
}
|
||||
if (source.frequencyFixDay != null) {
|
||||
target.setFrequencyFixDay(source.frequencyFixDay);
|
||||
}
|
||||
if (source.interestCalculationTypeOption != null) {
|
||||
target.setInterestCalculationTypeOption(source.interestCalculationTypeOption);
|
||||
}
|
||||
if (source.periodFrequencyOptions != null) {
|
||||
target.setPeriodFrequencyOptions(source.periodFrequencyOptions);
|
||||
}
|
||||
if (source.productId != null) {
|
||||
target.setProductId(source.productId);
|
||||
}
|
||||
if (source.locale != null) {
|
||||
target.setLocale(source.locale);
|
||||
}
|
||||
if (source.dateFormat != null) {
|
||||
target.setDateFormat(source.dateFormat);
|
||||
}
|
||||
if (source.rowIndex != null) {
|
||||
target.setRowIndex(source.rowIndex);
|
||||
}
|
||||
if (source.submittedOnDate != null) {
|
||||
target.setSubmittedOnDate(source.submittedOnDate);
|
||||
}
|
||||
if (source.startInterestCalculationDate != null) {
|
||||
target.setStartInterestCalculationDate(source.startInterestCalculationDate);
|
||||
}
|
||||
if (source.activatedOnDate != null) {
|
||||
target.setActivatedOnDate(source.activatedOnDate);
|
||||
}
|
||||
if (source.lockedInUntilDate != null) {
|
||||
target.setLockedInUntilDate(source.lockedInUntilDate);
|
||||
}
|
||||
if (source.officeId != null) {
|
||||
target.setOfficeId(source.officeId);
|
||||
}
|
||||
if (source.clientData != null) {
|
||||
target.setClientData(source.clientData);
|
||||
}
|
||||
if (source.groupGeneralData != null) {
|
||||
target.setGroupGeneralData(source.groupGeneralData);
|
||||
}
|
||||
if (source.savingsProductData != null) {
|
||||
target.setSavingsProduct(source.savingsProductData);
|
||||
}
|
||||
if (source.savingsAccountSummaryData != null) {
|
||||
target.setSavingsAccountSummaryData(source.savingsAccountSummaryData);
|
||||
}
|
||||
if (source.lastSavingsAccountTransaction != null) {
|
||||
target.setLastSavingsAccountTransaction(source.lastSavingsAccountTransaction);
|
||||
}
|
||||
}
|
||||
|
||||
public static SavingsAccountData withClientTemplate(final Long clientId, final String clientName, final Long groupId,
|
||||
|
||||
+211
-47
@@ -29,6 +29,7 @@ import org.apache.fineract.accounting.common.AccountingRuleType;
|
||||
import org.apache.fineract.accounting.glaccount.data.GLAccountData;
|
||||
import org.apache.fineract.accounting.producttoaccountmapping.data.ChargeToGLAccountMapper;
|
||||
import org.apache.fineract.accounting.producttoaccountmapping.data.PaymentTypeToGLAccountMapper;
|
||||
import org.apache.fineract.infrastructure.codes.data.CodeValueData;
|
||||
import org.apache.fineract.infrastructure.core.data.EnumOptionData;
|
||||
import org.apache.fineract.organisation.monetary.data.CurrencyData;
|
||||
import org.apache.fineract.portfolio.charge.data.ChargeData;
|
||||
@@ -101,19 +102,62 @@ public final class SavingsProductData implements Serializable {
|
||||
private final Collection<EnumOptionData> interestCompoundingPeriodTypeOptions;
|
||||
private final Collection<EnumOptionData> interestPostingPeriodTypeOptions;
|
||||
private final Collection<EnumOptionData> interestCalculationTypeOptions;
|
||||
private final Collection<EnumOptionData> interestCalculationTypeOption;
|
||||
private final Collection<EnumOptionData> interestCalculationDaysInYearTypeOptions;
|
||||
private final Collection<EnumOptionData> lockinPeriodFrequencyTypeOptions;
|
||||
private final Collection<EnumOptionData> withdrawalFeeTypeOptions;
|
||||
private final Collection<EnumOptionData> periodFrequencyOptions;
|
||||
private final Collection<PaymentTypeData> paymentTypeOptions;
|
||||
private final Collection<EnumOptionData> accountingRuleOptions;
|
||||
private final Map<String, List<GLAccountData>> accountingMappingOptions;
|
||||
private final Collection<ChargeData> chargeOptions;
|
||||
private final Collection<ChargeData> penaltyOptions;
|
||||
private final Collection<TaxGroupData> taxGroupOptions;
|
||||
private final Boolean isDormancyTrackingActive;
|
||||
private final Long daysToInactive;
|
||||
private final Long daysToDormancy;
|
||||
private final Long daysToEscheat;
|
||||
private final Collection<CodeValueData> yesNoOptions;
|
||||
private final Collection<CodeValueData> accountTypeOptions;
|
||||
private final Collection<CodeValueData> customerSegmentOptions;
|
||||
@Getter private final Boolean isDormancyTrackingActive;
|
||||
@Getter private final Long daysToInactive;
|
||||
@Getter private final Long daysToDormancy;
|
||||
@Getter private final Long daysToEscheat;
|
||||
private final List<Map<String, Object>> otherGlMappings;
|
||||
|
||||
// Enhanced Savings Product Fields
|
||||
@Getter @Setter private String accountType;
|
||||
@Getter @Setter private String customerSegment;
|
||||
@Getter @Setter private String productCode;
|
||||
@Getter @Setter private Long glAccountId;
|
||||
@Getter @Setter private String glAccountName;
|
||||
@Getter @Setter private java.time.LocalDate effectiveDate;
|
||||
@Getter @Setter private java.time.LocalDate effectiveTo;
|
||||
@Getter @Setter private java.time.LocalDate endDate;
|
||||
@Getter @Setter private Boolean introducerRequired;
|
||||
@Getter @Setter private Boolean shareLinkingEnabled;
|
||||
@Getter @Setter private Boolean nominationFacility;
|
||||
@Getter @Setter private Boolean dormancyAlert;
|
||||
@Getter @Setter private Integer interestCalculateSelector;
|
||||
@Getter @Setter private String interestCalculationTypeName;
|
||||
@Getter @Setter private String averagePeriod;
|
||||
@Getter @Setter private Boolean autoPost;
|
||||
@Getter @Setter private Integer frequencyFixDay;
|
||||
@Getter @Setter private java.time.LocalDate lastInterestDate;
|
||||
@Getter @Setter private Boolean enableLockinPeriod;
|
||||
@Getter @Setter private String balanceFrequency;
|
||||
@Getter @Setter private Boolean accountClosedZeroBalanceInDayClosing;
|
||||
|
||||
// New current product fields
|
||||
@Getter @Setter private Boolean balanceSwapOption;
|
||||
@Getter @Setter private Boolean msme;
|
||||
@Getter @Setter private Boolean autoDebitFacility;
|
||||
@Getter @Setter private String avgBalanceCalcPeriod;
|
||||
@Getter @Setter private String validForPeriod;
|
||||
@Getter @Setter private Boolean odAccountClosedZeroBalanceInDayClosing;
|
||||
|
||||
// Complex objects wrapped as Maps/Lists so Jackson converts them into the exact JSON your UI expects
|
||||
@Getter @Setter private Map<String, Object> accountFacilityConfig;
|
||||
@Getter @Setter private Collection<Map<String, Object>> accountFacilityLimits;
|
||||
@Getter @Setter private Map<String, Object> depositLimitKyc;
|
||||
@Getter @Setter private Map<String, List<Map<String, Object>>> otherGlMappingsMap;
|
||||
|
||||
public static SavingsProductData template(final CurrencyData currency, final EnumOptionData interestCompoundingPeriodType,
|
||||
final EnumOptionData interestPostingPeriodType, final EnumOptionData interestCalculationType,
|
||||
@@ -121,12 +165,16 @@ public final class SavingsProductData implements Serializable {
|
||||
final Collection<CurrencyData> currencyOptions, final Collection<EnumOptionData> interestCompoundingPeriodTypeOptions,
|
||||
final Collection<EnumOptionData> interestPostingPeriodTypeOptions,
|
||||
final Collection<EnumOptionData> interestCalculationTypeOptions,
|
||||
final Collection<EnumOptionData> interestCalculationTypeOption,
|
||||
final Collection<EnumOptionData> interestCalculationDaysInYearTypeOptions,
|
||||
final Collection<EnumOptionData> lockinPeriodFrequencyTypeOptions, final Collection<EnumOptionData> withdrawalFeeTypeOptions,
|
||||
final Collection<PaymentTypeData> paymentTypeOptions, final Collection<EnumOptionData> accountingRuleOptions,
|
||||
final Collection<EnumOptionData> periodFrequencyOptions, final Collection<PaymentTypeData> paymentTypeOptions,
|
||||
final Collection<EnumOptionData> accountingRuleOptions,
|
||||
final Map<String, List<GLAccountData>> accountingMappingOptions, final Collection<ChargeData> chargeOptions,
|
||||
final Collection<ChargeData> penaltyOptions, final Collection<TaxGroupData> taxGroupOptions,
|
||||
final String accountMappingForPayment) {
|
||||
final Collection<CodeValueData> yesNoOptions,
|
||||
final Collection<CodeValueData> accountTypeOptions, final Collection<CodeValueData> customerSegmentOptions,
|
||||
final String accountMappingForPayment, final List<Map<String, Object>> otherGlMappings) {
|
||||
|
||||
final Long id = null;
|
||||
final String name = null;
|
||||
@@ -157,35 +205,66 @@ public final class SavingsProductData implements Serializable {
|
||||
final Long daysToInactive = null;
|
||||
final Long daysToDormancy = null;
|
||||
final Long daysToEscheat = null;
|
||||
final List<Map<String, Object>> otherGlMappingsTemplate = null;
|
||||
|
||||
return new SavingsProductData(id, name, shortName, description, currency, nominalAnnualInterestRate, interestCompoundingPeriodType,
|
||||
interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minRequiredOpeningBalance,
|
||||
lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, accountingRule, accountingMappings,
|
||||
paymentChannelToFundSourceMappings, currencyOptions, interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions,
|
||||
interestCalculationTypeOptions, interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions,
|
||||
withdrawalFeeTypeOptions, paymentTypeOptions, accountingRuleOptions, accountingMappingOptions, charges, chargeOptions,
|
||||
interestCalculationTypeOptions, interestCalculationTypeOption, interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions,
|
||||
withdrawalFeeTypeOptions, periodFrequencyOptions, paymentTypeOptions, accountingRuleOptions, accountingMappingOptions, charges, chargeOptions,
|
||||
penaltyOptions, feeToIncomeAccountMappings, penaltyToIncomeAccountMappings, allowOverdraft, overdraftLimit,
|
||||
minRequiredBalance, enforceMinRequiredBalance, maxAllowedLienLimit, lienAllowed, minBalanceForInterestCalculation,
|
||||
nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, taxGroup, taxGroupOptions,
|
||||
isDormancyTrackingActive, daysToInactive, daysToDormancy, daysToEscheat, accountMappingForPayment);
|
||||
yesNoOptions, accountTypeOptions, customerSegmentOptions, isDormancyTrackingActive, daysToInactive, daysToDormancy, daysToEscheat,
|
||||
accountMappingForPayment, otherGlMappingsTemplate);
|
||||
}
|
||||
|
||||
public static SavingsProductData template(final CurrencyData currency, final EnumOptionData interestCompoundingPeriodType,
|
||||
final EnumOptionData interestPostingPeriodType, final EnumOptionData interestCalculationType,
|
||||
final EnumOptionData interestCalculationDaysInYearType, final EnumOptionData accountingRule,
|
||||
final Collection<CurrencyData> currencyOptions, final Collection<EnumOptionData> interestCompoundingPeriodTypeOptions,
|
||||
final Collection<EnumOptionData> interestPostingPeriodTypeOptions,
|
||||
final Collection<EnumOptionData> interestCalculationTypeOptions,
|
||||
final Collection<EnumOptionData> interestCalculationTypeOption,
|
||||
final Collection<EnumOptionData> interestCalculationDaysInYearTypeOptions,
|
||||
final Collection<EnumOptionData> lockinPeriodFrequencyTypeOptions, final Collection<EnumOptionData> withdrawalFeeTypeOptions,
|
||||
final Collection<EnumOptionData> periodFrequencyOptions, final Collection<PaymentTypeData> paymentTypeOptions,
|
||||
final Collection<EnumOptionData> accountingRuleOptions,
|
||||
final Map<String, List<GLAccountData>> accountingMappingOptions, final Collection<ChargeData> chargeOptions,
|
||||
final Collection<ChargeData> penaltyOptions, final Collection<TaxGroupData> taxGroupOptions,
|
||||
final Collection<CodeValueData> yesNoOptions,
|
||||
final Collection<CodeValueData> accountTypeOptions, final Collection<CodeValueData> customerSegmentOptions,
|
||||
final String accountMappingForPayment) {
|
||||
return template(currency, interestCompoundingPeriodType, interestPostingPeriodType, interestCalculationType,
|
||||
interestCalculationDaysInYearType, accountingRule, currencyOptions, interestCompoundingPeriodTypeOptions,
|
||||
interestPostingPeriodTypeOptions, interestCalculationTypeOptions, interestCalculationTypeOption,
|
||||
interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, periodFrequencyOptions,
|
||||
paymentTypeOptions, accountingRuleOptions, accountingMappingOptions, chargeOptions, penaltyOptions, taxGroupOptions, yesNoOptions,
|
||||
accountTypeOptions, customerSegmentOptions, accountMappingForPayment, null);
|
||||
}
|
||||
|
||||
public static SavingsProductData withCharges(final SavingsProductData product, final Collection<ChargeData> charges) {
|
||||
return new SavingsProductData(product.id, product.name, product.shortName, product.description, product.currency,
|
||||
SavingsProductData newData = new SavingsProductData(product.id, product.name, product.shortName, product.description, product.currency,
|
||||
product.nominalAnnualInterestRate, product.interestCompoundingPeriodType, product.interestPostingPeriodType,
|
||||
product.interestCalculationType, product.interestCalculationDaysInYearType, product.minRequiredOpeningBalance,
|
||||
product.lockinPeriodFrequency, product.lockinPeriodFrequencyType, product.withdrawalFeeForTransfers, product.accountingRule,
|
||||
product.accountingMappings, product.paymentChannelToFundSourceMappings, product.currencyOptions,
|
||||
product.interestCompoundingPeriodTypeOptions, product.interestPostingPeriodTypeOptions,
|
||||
product.interestCalculationTypeOptions, product.interestCalculationDaysInYearTypeOptions,
|
||||
product.lockinPeriodFrequencyTypeOptions, product.withdrawalFeeTypeOptions, product.paymentTypeOptions,
|
||||
product.interestCalculationTypeOptions, product.interestCalculationTypeOption, product.interestCalculationDaysInYearTypeOptions,
|
||||
product.lockinPeriodFrequencyTypeOptions, product.withdrawalFeeTypeOptions, product.periodFrequencyOptions,
|
||||
product.paymentTypeOptions,
|
||||
product.accountingRuleOptions, product.accountingMappingOptions, charges, product.chargeOptions, product.penaltyOptions,
|
||||
product.feeToIncomeAccountMappings, product.penaltyToIncomeAccountMappings, product.allowOverdraft, product.overdraftLimit,
|
||||
product.minRequiredBalance, product.enforceMinRequiredBalance, product.maxAllowedLienLimit, product.lienAllowed,
|
||||
product.minBalanceForInterestCalculation, product.nominalAnnualInterestRateOverdraft,
|
||||
product.minOverdraftForInterestCalculation, product.withHoldTax, product.taxGroup, product.taxGroupOptions,
|
||||
product.isDormancyTrackingActive, product.daysToInactive, product.daysToDormancy, product.daysToEscheat,
|
||||
product.accountMappingForPayment);
|
||||
product.yesNoOptions, product.accountTypeOptions, product.customerSegmentOptions, product.isDormancyTrackingActive,
|
||||
product.daysToInactive,
|
||||
product.daysToDormancy, product.daysToEscheat, product.accountMappingForPayment, product.otherGlMappings);
|
||||
// Copy enhanced custom fields
|
||||
copyCustomFields(product, newData);
|
||||
return newData;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -196,27 +275,57 @@ public final class SavingsProductData implements Serializable {
|
||||
final Collection<EnumOptionData> interestCompoundingPeriodTypeOptions,
|
||||
final Collection<EnumOptionData> interestPostingPeriodTypeOptions,
|
||||
final Collection<EnumOptionData> interestCalculationTypeOptions,
|
||||
final Collection<EnumOptionData> interestCalculationTypeOption,
|
||||
final Collection<EnumOptionData> interestCalculationDaysInYearTypeOptions,
|
||||
final Collection<EnumOptionData> lockinPeriodFrequencyTypeOptions, final Collection<EnumOptionData> withdrawalFeeTypeOptions,
|
||||
final Collection<PaymentTypeData> paymentTypeOptions, final Collection<EnumOptionData> accountingRuleOptions,
|
||||
final Collection<EnumOptionData> periodFrequencyOptions, final Collection<PaymentTypeData> paymentTypeOptions,
|
||||
final Collection<EnumOptionData> accountingRuleOptions,
|
||||
final Map<String, List<GLAccountData>> accountingMappingOptions, final Collection<ChargeData> chargeOptions,
|
||||
final Collection<ChargeData> penaltyOptions, Collection<TaxGroupData> taxGroupOptions, final String accountMappingForPayment) {
|
||||
final Collection<ChargeData> penaltyOptions, Collection<TaxGroupData> taxGroupOptions,
|
||||
final Collection<CodeValueData> yesNoOptions,
|
||||
final Collection<CodeValueData> accountTypeOptions, final Collection<CodeValueData> customerSegmentOptions,
|
||||
final String accountMappingForPayment, final List<Map<String, Object>> otherGlMappings) {
|
||||
|
||||
return new SavingsProductData(existingProduct.id, existingProduct.name, existingProduct.shortName, existingProduct.description,
|
||||
SavingsProductData newData = new SavingsProductData(existingProduct.id, existingProduct.name, existingProduct.shortName, existingProduct.description,
|
||||
existingProduct.currency, existingProduct.nominalAnnualInterestRate, existingProduct.interestCompoundingPeriodType,
|
||||
existingProduct.interestPostingPeriodType, existingProduct.interestCalculationType,
|
||||
existingProduct.interestCalculationDaysInYearType, existingProduct.minRequiredOpeningBalance,
|
||||
existingProduct.lockinPeriodFrequency, existingProduct.lockinPeriodFrequencyType, existingProduct.withdrawalFeeForTransfers,
|
||||
existingProduct.accountingRule, existingProduct.accountingMappings, existingProduct.paymentChannelToFundSourceMappings,
|
||||
currencyOptions, interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions, interestCalculationTypeOptions,
|
||||
interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, paymentTypeOptions,
|
||||
accountingRuleOptions, accountingMappingOptions, existingProduct.charges, chargeOptions, penaltyOptions,
|
||||
interestCalculationTypeOption, interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions,
|
||||
periodFrequencyOptions, paymentTypeOptions, accountingRuleOptions, accountingMappingOptions, existingProduct.charges,
|
||||
chargeOptions, penaltyOptions,
|
||||
existingProduct.feeToIncomeAccountMappings, existingProduct.penaltyToIncomeAccountMappings, existingProduct.allowOverdraft,
|
||||
existingProduct.overdraftLimit, existingProduct.minRequiredBalance, existingProduct.enforceMinRequiredBalance,
|
||||
existingProduct.maxAllowedLienLimit, existingProduct.lienAllowed, existingProduct.minBalanceForInterestCalculation,
|
||||
existingProduct.nominalAnnualInterestRateOverdraft, existingProduct.minOverdraftForInterestCalculation,
|
||||
existingProduct.withHoldTax, existingProduct.taxGroup, taxGroupOptions, existingProduct.isDormancyTrackingActive,
|
||||
existingProduct.daysToInactive, existingProduct.daysToDormancy, existingProduct.daysToEscheat, accountMappingForPayment);
|
||||
existingProduct.withHoldTax, existingProduct.taxGroup, taxGroupOptions, yesNoOptions, accountTypeOptions,
|
||||
customerSegmentOptions, existingProduct.isDormancyTrackingActive, existingProduct.daysToInactive, existingProduct.daysToDormancy,
|
||||
existingProduct.daysToEscheat, accountMappingForPayment, existingProduct.otherGlMappings);
|
||||
copyCustomFields(existingProduct, newData);
|
||||
return newData;
|
||||
}
|
||||
|
||||
public static SavingsProductData withTemplate(final SavingsProductData existingProduct, final Collection<CurrencyData> currencyOptions,
|
||||
final Collection<EnumOptionData> interestCompoundingPeriodTypeOptions,
|
||||
final Collection<EnumOptionData> interestPostingPeriodTypeOptions,
|
||||
final Collection<EnumOptionData> interestCalculationTypeOptions,
|
||||
final Collection<EnumOptionData> interestCalculationTypeOption,
|
||||
final Collection<EnumOptionData> interestCalculationDaysInYearTypeOptions,
|
||||
final Collection<EnumOptionData> lockinPeriodFrequencyTypeOptions, final Collection<EnumOptionData> withdrawalFeeTypeOptions,
|
||||
final Collection<EnumOptionData> periodFrequencyOptions, final Collection<PaymentTypeData> paymentTypeOptions,
|
||||
final Collection<EnumOptionData> accountingRuleOptions,
|
||||
final Map<String, List<GLAccountData>> accountingMappingOptions, final Collection<ChargeData> chargeOptions,
|
||||
final Collection<ChargeData> penaltyOptions, Collection<TaxGroupData> taxGroupOptions,
|
||||
final Collection<CodeValueData> yesNoOptions,
|
||||
final Collection<CodeValueData> accountTypeOptions, final Collection<CodeValueData> customerSegmentOptions,
|
||||
final String accountMappingForPayment) {
|
||||
return withTemplate(existingProduct, currencyOptions, interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions,
|
||||
interestCalculationTypeOptions, interestCalculationTypeOption, interestCalculationDaysInYearTypeOptions,
|
||||
lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, periodFrequencyOptions, paymentTypeOptions, accountingRuleOptions,
|
||||
accountingMappingOptions, chargeOptions, penaltyOptions, taxGroupOptions, yesNoOptions, accountTypeOptions,
|
||||
customerSegmentOptions, accountMappingForPayment, existingProduct.otherGlMappings);
|
||||
}
|
||||
|
||||
public static SavingsProductData withAccountingDetails(final SavingsProductData existingProduct,
|
||||
@@ -228,31 +337,52 @@ public final class SavingsProductData implements Serializable {
|
||||
final Collection<EnumOptionData> interestCompoundingPeriodTypeOptions = null;
|
||||
final Collection<EnumOptionData> interestPostingPeriodTypeOptions = null;
|
||||
final Collection<EnumOptionData> interestCalculationTypeOptions = null;
|
||||
final Collection<EnumOptionData> interestCalculationTypeOption = null;
|
||||
final Collection<EnumOptionData> interestCalculationDaysInYearTypeOptions = null;
|
||||
final Collection<EnumOptionData> lockinPeriodFrequencyTypeOptions = null;
|
||||
final Collection<EnumOptionData> withdrawalFeeTypeOptions = null;
|
||||
final Collection<EnumOptionData> periodFrequencyOptions = null;
|
||||
final Collection<PaymentTypeData> paymentTypeOptions = null;
|
||||
final Collection<EnumOptionData> accountingRuleOptions = null;
|
||||
final Map<String, List<GLAccountData>> accountingMappingOptions = null;
|
||||
final Collection<ChargeData> chargeOptions = null;
|
||||
final Collection<ChargeData> penaltyOptions = null;
|
||||
|
||||
return new SavingsProductData(existingProduct.id, existingProduct.name, existingProduct.shortName, existingProduct.description,
|
||||
existingProduct.currency, existingProduct.nominalAnnualInterestRate, existingProduct.interestCompoundingPeriodType,
|
||||
existingProduct.interestPostingPeriodType, existingProduct.interestCalculationType,
|
||||
existingProduct.interestCalculationDaysInYearType, existingProduct.minRequiredOpeningBalance,
|
||||
existingProduct.lockinPeriodFrequency, existingProduct.lockinPeriodFrequencyType, existingProduct.withdrawalFeeForTransfers,
|
||||
existingProduct.accountingRule, accountingMappings, paymentChannelToFundSourceMappings, currencyOptions,
|
||||
interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions, interestCalculationTypeOptions,
|
||||
interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, paymentTypeOptions,
|
||||
accountingRuleOptions, accountingMappingOptions, existingProduct.charges, chargeOptions, penaltyOptions,
|
||||
feeToIncomeAccountMappings, penaltyToIncomeAccountMappings, existingProduct.allowOverdraft, existingProduct.overdraftLimit,
|
||||
existingProduct.minRequiredBalance, existingProduct.enforceMinRequiredBalance, existingProduct.maxAllowedLienLimit,
|
||||
existingProduct.lienAllowed, existingProduct.minBalanceForInterestCalculation,
|
||||
existingProduct.nominalAnnualInterestRateOverdraft, existingProduct.minOverdraftForInterestCalculation,
|
||||
existingProduct.withHoldTax, existingProduct.taxGroup, existingProduct.taxGroupOptions,
|
||||
existingProduct.isDormancyTrackingActive, existingProduct.daysToInactive, existingProduct.daysToDormancy,
|
||||
existingProduct.daysToEscheat, existingProduct.accountMappingForPayment);
|
||||
SavingsProductData newData = new SavingsProductData(existingProduct.id, existingProduct.name, existingProduct.shortName, existingProduct.description, existingProduct.currency, existingProduct.nominalAnnualInterestRate, existingProduct.interestCompoundingPeriodType, existingProduct.interestPostingPeriodType, existingProduct.interestCalculationType, existingProduct.interestCalculationDaysInYearType, existingProduct.minRequiredOpeningBalance, existingProduct.lockinPeriodFrequency, existingProduct.lockinPeriodFrequencyType, existingProduct.withdrawalFeeForTransfers, existingProduct.accountingRule, accountingMappings, paymentChannelToFundSourceMappings, currencyOptions, interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions, interestCalculationTypeOptions, interestCalculationTypeOption, interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions, withdrawalFeeTypeOptions, periodFrequencyOptions, paymentTypeOptions, accountingRuleOptions, accountingMappingOptions, existingProduct.charges, chargeOptions, penaltyOptions, feeToIncomeAccountMappings, penaltyToIncomeAccountMappings, existingProduct.allowOverdraft, existingProduct.overdraftLimit, existingProduct.minRequiredBalance, existingProduct.enforceMinRequiredBalance, existingProduct.maxAllowedLienLimit, existingProduct.lienAllowed, existingProduct.minBalanceForInterestCalculation, existingProduct.nominalAnnualInterestRateOverdraft, existingProduct.minOverdraftForInterestCalculation, existingProduct.withHoldTax, existingProduct.taxGroup, existingProduct.taxGroupOptions, existingProduct.yesNoOptions, existingProduct.accountTypeOptions, existingProduct.customerSegmentOptions, existingProduct.isDormancyTrackingActive, existingProduct.daysToInactive, existingProduct.daysToDormancy, existingProduct.daysToEscheat, existingProduct.accountMappingForPayment, existingProduct.otherGlMappings); copyCustomFields(existingProduct, newData); return newData;
|
||||
}
|
||||
|
||||
private static void copyCustomFields(SavingsProductData source, SavingsProductData target) {
|
||||
target.setAccountType(source.getAccountType());
|
||||
target.setCustomerSegment(source.getCustomerSegment());
|
||||
target.setProductCode(source.getProductCode());
|
||||
target.setGlAccountId(source.getGlAccountId());
|
||||
target.setGlAccountName(source.getGlAccountName());
|
||||
target.setEffectiveDate(source.getEffectiveDate());
|
||||
target.setEffectiveTo(source.getEffectiveTo());
|
||||
target.setEndDate(source.getEndDate());
|
||||
target.setIntroducerRequired(source.getIntroducerRequired());
|
||||
target.setShareLinkingEnabled(source.getShareLinkingEnabled());
|
||||
target.setNominationFacility(source.getNominationFacility());
|
||||
target.setDormancyAlert(source.getDormancyAlert());
|
||||
target.setInterestCalculateSelector(source.getInterestCalculateSelector());
|
||||
target.setInterestCalculationTypeName(source.getInterestCalculationTypeName());
|
||||
target.setAveragePeriod(source.getAveragePeriod());
|
||||
target.setAutoPost(source.getAutoPost());
|
||||
target.setFrequencyFixDay(source.getFrequencyFixDay());
|
||||
target.setLastInterestDate(source.getLastInterestDate());
|
||||
target.setEnableLockinPeriod(source.getEnableLockinPeriod());
|
||||
target.setBalanceFrequency(source.getBalanceFrequency());
|
||||
target.setAccountClosedZeroBalanceInDayClosing(source.getAccountClosedZeroBalanceInDayClosing());
|
||||
target.setBalanceSwapOption(source.getBalanceSwapOption());
|
||||
target.setMsme(source.getMsme());
|
||||
target.setAutoDebitFacility(source.getAutoDebitFacility());
|
||||
target.setAvgBalanceCalcPeriod(source.getAvgBalanceCalcPeriod());
|
||||
target.setValidForPeriod(source.getValidForPeriod());
|
||||
target.setOdAccountClosedZeroBalanceInDayClosing(source.getOdAccountClosedZeroBalanceInDayClosing());
|
||||
target.setOtherGlMappingsMap(source.getOtherGlMappingsMap());
|
||||
target.setAccountFacilityConfig(source.getAccountFacilityConfig());
|
||||
target.setAccountFacilityLimits(source.getAccountFacilityLimits());
|
||||
target.setDepositLimitKyc(source.getDepositLimitKyc());
|
||||
}
|
||||
|
||||
public static SavingsProductData instance(final Long id, final String name, final String shortName, final String description,
|
||||
@@ -264,8 +394,10 @@ public final class SavingsProductData implements Serializable {
|
||||
final BigDecimal minRequiredBalance, final boolean enforceMinRequiredBalance, final BigDecimal maxAllowedLienLimit,
|
||||
final boolean lienAllowed, final BigDecimal minBalanceForInterestCalculation,
|
||||
final BigDecimal nominalAnnualInterestRateOverdraft, final BigDecimal minOverdraftForInterestCalculation,
|
||||
final boolean withHoldTax, final TaxGroupData taxGroup, final Boolean isDormancyTrackingActive, final Long daysToInactive,
|
||||
final Long daysToDormancy, final Long daysToEscheat) {
|
||||
final boolean withHoldTax, final TaxGroupData taxGroup, final Collection<CodeValueData> yesNoOptions,
|
||||
final Collection<CodeValueData> accountTypeOptions, final Collection<CodeValueData> customerSegmentOptions,
|
||||
final Boolean isDormancyTrackingActive, final Long daysToInactive, final Long daysToDormancy, final Long daysToEscheat,
|
||||
final List<Map<String, Object>> otherGlMappings) {
|
||||
|
||||
final Map<String, Object> accountingMappings = null;
|
||||
final Collection<PaymentTypeToGLAccountMapper> paymentChannelToFundSourceMappings = null;
|
||||
@@ -274,9 +406,11 @@ public final class SavingsProductData implements Serializable {
|
||||
final Collection<EnumOptionData> interestCompoundingPeriodTypeOptions = null;
|
||||
final Collection<EnumOptionData> interestPostingPeriodTypeOptions = null;
|
||||
final Collection<EnumOptionData> interestCalculationTypeOptions = null;
|
||||
final Collection<EnumOptionData> interestCalculationTypeOption = null;
|
||||
final Collection<EnumOptionData> interestCalculationDaysInYearTypeOptions = null;
|
||||
final Collection<EnumOptionData> lockinPeriodFrequencyTypeOptions = null;
|
||||
final Collection<EnumOptionData> withdrawalFeeTypeOptions = null;
|
||||
final Collection<EnumOptionData> periodFrequencyOptions = null;
|
||||
final Collection<PaymentTypeData> paymentTypeOptions = null;
|
||||
final Collection<EnumOptionData> accountingRuleOptions = null;
|
||||
final Map<String, List<GLAccountData>> accountingMappingOptions = null;
|
||||
@@ -292,12 +426,14 @@ public final class SavingsProductData implements Serializable {
|
||||
interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minRequiredOpeningBalance,
|
||||
lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, accountingType, accountingMappings,
|
||||
paymentChannelToFundSourceMappings, currencyOptions, interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions,
|
||||
interestCalculationTypeOptions, interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions,
|
||||
withdrawalFeeTypeOptions, paymentTypeOptions, accountingRuleOptions, accountingMappingOptions, charges, chargeOptions,
|
||||
interestCalculationTypeOptions, interestCalculationTypeOption, interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions,
|
||||
withdrawalFeeTypeOptions, periodFrequencyOptions, paymentTypeOptions, accountingRuleOptions, accountingMappingOptions,
|
||||
charges, chargeOptions,
|
||||
penaltyOptions, feeToIncomeAccountMappings, penaltyToIncomeAccountMappings, allowOverdraft, overdraftLimit,
|
||||
minRequiredBalance, enforceMinRequiredBalance, maxAllowedLienLimit, lienAllowed, minBalanceForInterestCalculation,
|
||||
nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, taxGroup, taxGroupOptions,
|
||||
isDormancyTrackingActive, daysToInactive, daysToDormancy, daysToEscheat, accountMappingForPayment);
|
||||
yesNoOptions, accountTypeOptions, customerSegmentOptions, isDormancyTrackingActive, daysToInactive, daysToDormancy,
|
||||
daysToEscheat, accountMappingForPayment, otherGlMappings);
|
||||
}
|
||||
|
||||
public static SavingsProductData lookup(final Long id, final String name) {
|
||||
@@ -333,9 +469,11 @@ public final class SavingsProductData implements Serializable {
|
||||
final Collection<EnumOptionData> interestCompoundingPeriodTypeOptions = null;
|
||||
final Collection<EnumOptionData> interestPostingPeriodTypeOptions = null;
|
||||
final Collection<EnumOptionData> interestCalculationTypeOptions = null;
|
||||
final Collection<EnumOptionData> interestCalculationTypeOption = null;
|
||||
final Collection<EnumOptionData> interestCalculationDaysInYearTypeOptions = null;
|
||||
final Collection<EnumOptionData> lockinPeriodFrequencyTypeOptions = null;
|
||||
final Collection<EnumOptionData> withdrawalFeeTypeOptions = null;
|
||||
final Collection<EnumOptionData> periodFrequencyOptions = null;
|
||||
final Collection<PaymentTypeData> paymentTypeOptions = null;
|
||||
final Collection<EnumOptionData> accountingRuleOptions = null;
|
||||
final Map<String, List<GLAccountData>> accountingMappingOptions = null;
|
||||
@@ -345,22 +483,28 @@ public final class SavingsProductData implements Serializable {
|
||||
final Collection<ChargeToGLAccountMapper> feeToIncomeAccountMappings = null;
|
||||
final Collection<ChargeToGLAccountMapper> penaltyToIncomeAccountMappings = null;
|
||||
final Collection<TaxGroupData> taxGroupOptions = null;
|
||||
final Collection<CodeValueData> yesNoOptions = null;
|
||||
final Collection<CodeValueData> accountTypeOptions = null;
|
||||
final Collection<CodeValueData> customerSegmentOptions = null;
|
||||
final Boolean isDormancyTrackingActive = null;
|
||||
final Long daysToInactive = null;
|
||||
final Long daysToDormancy = null;
|
||||
final Long daysToEscheat = null;
|
||||
final String accountMappingForPayment = null;
|
||||
final List<Map<String, Object>> otherGlMappings = null;
|
||||
|
||||
return new SavingsProductData(id, name, shortName, description, currency, nominalAnnualInterestRate, interestCompoundingPeriodType,
|
||||
interestPostingPeriodType, interestCalculationType, interestCalculationDaysInYearType, minRequiredOpeningBalance,
|
||||
lockinPeriodFrequency, lockinPeriodFrequencyType, withdrawalFeeForTransfers, accountingType, accountingMappings,
|
||||
paymentChannelToFundSourceMappings, currencyOptions, interestCompoundingPeriodTypeOptions, interestPostingPeriodTypeOptions,
|
||||
interestCalculationTypeOptions, interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions,
|
||||
withdrawalFeeTypeOptions, paymentTypeOptions, accountingRuleOptions, accountingMappingOptions, charges, chargeOptions,
|
||||
interestCalculationTypeOptions, interestCalculationTypeOption, interestCalculationDaysInYearTypeOptions, lockinPeriodFrequencyTypeOptions,
|
||||
withdrawalFeeTypeOptions, periodFrequencyOptions, paymentTypeOptions, accountingRuleOptions, accountingMappingOptions, charges,
|
||||
chargeOptions,
|
||||
penaltyOptions, feeToIncomeAccountMappings, penaltyToIncomeAccountMappings, allowOverdraft, overdraftLimit,
|
||||
minRequiredBalance, enforceMinRequiredBalance, maxAllowedLienLimit, lienAllowed, minBalanceForInterestCalculation,
|
||||
nominalAnnualInterestRateOverdraft, minOverdraftForInterestCalculation, withHoldTax, taxGroup, taxGroupOptions,
|
||||
isDormancyTrackingActive, daysToInactive, daysToDormancy, daysToEscheat, accountMappingForPayment);
|
||||
yesNoOptions, accountTypeOptions, customerSegmentOptions, isDormancyTrackingActive, daysToInactive, daysToDormancy,
|
||||
daysToEscheat, accountMappingForPayment, otherGlMappings);
|
||||
}
|
||||
|
||||
public static SavingsProductData createForInterestPosting(final Long id, final EnumOptionData accountingRule) {
|
||||
@@ -388,9 +532,11 @@ public final class SavingsProductData implements Serializable {
|
||||
this.interestCompoundingPeriodTypeOptions = null;
|
||||
this.interestPostingPeriodTypeOptions = null;
|
||||
this.interestCalculationTypeOptions = null;
|
||||
this.interestCalculationTypeOption = null;
|
||||
this.interestCalculationDaysInYearTypeOptions = null;
|
||||
this.lockinPeriodFrequencyTypeOptions = null;
|
||||
this.withdrawalFeeTypeOptions = null;
|
||||
this.periodFrequencyOptions = null;
|
||||
|
||||
this.paymentTypeOptions = null;
|
||||
this.accountingMappingOptions = null;
|
||||
@@ -419,10 +565,14 @@ public final class SavingsProductData implements Serializable {
|
||||
this.taxGroup = null;
|
||||
this.withHoldTax = false;
|
||||
this.taxGroupOptions = null;
|
||||
this.yesNoOptions = null;
|
||||
this.accountTypeOptions = null;
|
||||
this.customerSegmentOptions = null;
|
||||
this.isDormancyTrackingActive = null;
|
||||
this.daysToInactive = null;
|
||||
this.daysToDormancy = null;
|
||||
this.daysToEscheat = null;
|
||||
this.otherGlMappings = null;
|
||||
this.accountMappingForPayment = null;
|
||||
}
|
||||
|
||||
@@ -436,9 +586,11 @@ public final class SavingsProductData implements Serializable {
|
||||
final Collection<CurrencyData> currencyOptions, final Collection<EnumOptionData> interestCompoundingPeriodTypeOptions,
|
||||
final Collection<EnumOptionData> interestPostingPeriodTypeOptions,
|
||||
final Collection<EnumOptionData> interestCalculationTypeOptions,
|
||||
final Collection<EnumOptionData> interestCalculationTypeOption,
|
||||
final Collection<EnumOptionData> interestCalculationDaysInYearTypeOptions,
|
||||
final Collection<EnumOptionData> lockinPeriodFrequencyTypeOptions, final Collection<EnumOptionData> withdrawalFeeTypeOptions,
|
||||
final Collection<PaymentTypeData> paymentTypeOptions, final Collection<EnumOptionData> accountingRuleOptions,
|
||||
final Collection<EnumOptionData> periodFrequencyOptions, final Collection<PaymentTypeData> paymentTypeOptions,
|
||||
final Collection<EnumOptionData> accountingRuleOptions,
|
||||
final Map<String, List<GLAccountData>> accountingMappingOptions, final Collection<ChargeData> charges,
|
||||
final Collection<ChargeData> chargeOptions, final Collection<ChargeData> penaltyOptions,
|
||||
final Collection<ChargeToGLAccountMapper> feeToIncomeAccountMappings,
|
||||
@@ -447,8 +599,10 @@ public final class SavingsProductData implements Serializable {
|
||||
final BigDecimal maxAllowedLienLimit, final boolean lienAllowed, final BigDecimal minBalanceForInterestCalculation,
|
||||
final BigDecimal nominalAnnualInterestRateOverdraft, final BigDecimal minOverdraftForInterestCalculation,
|
||||
final boolean withHoldTax, final TaxGroupData taxGroup, final Collection<TaxGroupData> taxGroupOptions,
|
||||
final Collection<CodeValueData> yesNoOptions, final Collection<CodeValueData> accountTypeOptions,
|
||||
final Collection<CodeValueData> customerSegmentOptions,
|
||||
final Boolean isDormancyTrackingActive, final Long daysToInactive, final Long daysToDormancy, final Long daysToEscheat,
|
||||
final String accountMappingForPayment) {
|
||||
final String accountMappingForPayment, final List<Map<String, Object>> otherGlMappings) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.shortName = shortName;
|
||||
@@ -469,9 +623,11 @@ public final class SavingsProductData implements Serializable {
|
||||
this.interestCompoundingPeriodTypeOptions = interestCompoundingPeriodTypeOptions;
|
||||
this.interestPostingPeriodTypeOptions = interestPostingPeriodTypeOptions;
|
||||
this.interestCalculationTypeOptions = interestCalculationTypeOptions;
|
||||
this.interestCalculationTypeOption = interestCalculationTypeOption;
|
||||
this.interestCalculationDaysInYearTypeOptions = interestCalculationDaysInYearTypeOptions;
|
||||
this.lockinPeriodFrequencyTypeOptions = lockinPeriodFrequencyTypeOptions;
|
||||
this.withdrawalFeeTypeOptions = withdrawalFeeTypeOptions;
|
||||
this.periodFrequencyOptions = periodFrequencyOptions;
|
||||
|
||||
this.paymentTypeOptions = paymentTypeOptions;
|
||||
this.accountingMappingOptions = accountingMappingOptions;
|
||||
@@ -503,11 +659,15 @@ public final class SavingsProductData implements Serializable {
|
||||
this.taxGroup = taxGroup;
|
||||
this.withHoldTax = withHoldTax;
|
||||
this.taxGroupOptions = taxGroupOptions;
|
||||
this.yesNoOptions = yesNoOptions;
|
||||
this.accountTypeOptions = accountTypeOptions;
|
||||
this.customerSegmentOptions = customerSegmentOptions;
|
||||
this.isDormancyTrackingActive = isDormancyTrackingActive;
|
||||
this.daysToInactive = daysToInactive;
|
||||
this.daysToDormancy = daysToDormancy;
|
||||
this.daysToEscheat = daysToEscheat;
|
||||
this.accountMappingForPayment = accountMappingForPayment;
|
||||
this.otherGlMappings = otherGlMappings;
|
||||
}
|
||||
|
||||
public boolean hasAccountingEnabled() {
|
||||
@@ -547,4 +707,8 @@ public final class SavingsProductData implements Serializable {
|
||||
return AccountingRuleType.ACCRUAL_PERIODIC.getValue().toString().equals(this.accountingRule.getValue());
|
||||
}
|
||||
|
||||
public List<Map<String, Object>> getOtherGlMappings() {
|
||||
return this.otherGlMappings;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user