update saving product code
This commit is contained in:
+65
@@ -25,6 +25,11 @@ 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 PERIOD_FREQUENCY = "PeriodFrequency";
|
||||
public static final String INTEREST_CALCULATION_TYPE_OPTION = "InterestCalculationTypeOption";
|
||||
|
||||
// actions
|
||||
public static final String postInterestValidationOnClosure = "postInterestValidationOnClosure";
|
||||
@@ -195,6 +200,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 +209,63 @@ 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 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";
|
||||
}
|
||||
|
||||
+185
-43
@@ -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,50 @@ 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 Collection<CodeValueData> yesNoOptions;
|
||||
private final Collection<CodeValueData> accountTypeOptions;
|
||||
private final Collection<CodeValueData> customerSegmentOptions;
|
||||
private final Boolean isDormancyTrackingActive;
|
||||
private final Long daysToInactive;
|
||||
private final Long daysToDormancy;
|
||||
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 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 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;
|
||||
|
||||
// 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;
|
||||
|
||||
public static SavingsProductData template(final CurrencyData currency, final EnumOptionData interestCompoundingPeriodType,
|
||||
final EnumOptionData interestPostingPeriodType, final EnumOptionData interestCalculationType,
|
||||
@@ -121,12 +153,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 +193,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 +263,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 +325,42 @@ 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.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.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.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 +372,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 +384,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 +404,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 +447,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 +461,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 +510,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 +543,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 +564,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 +577,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 +601,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 +637,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 +685,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