in fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/importhandler/savings/SavingsImportHandler.java [116:269]
private SavingsAccountData readSavings(final Workbook workbook, final Row row, final List<String> statuses, final String locale,
final String dateFormat) {
String productName = ImportHandlerUtils.readAsString(SavingsConstants.PRODUCT_COL, row);
Long productId = ImportHandlerUtils.getIdByName(workbook.getSheet(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME), productName);
String fieldOfficerName = ImportHandlerUtils.readAsString(SavingsConstants.FIELD_OFFICER_NAME_COL, row);
Long fieldOfficerId = ImportHandlerUtils.getIdByName(workbook.getSheet(TemplatePopulateImportConstants.STAFF_SHEET_NAME),
fieldOfficerName);
LocalDate submittedOnDate = ImportHandlerUtils.readAsDate(SavingsConstants.SUBMITTED_ON_DATE_COL, row);
BigDecimal nominalAnnualInterestRate = null;
if (ImportHandlerUtils.readAsDouble(SavingsConstants.NOMINAL_ANNUAL_INTEREST_RATE_COL, row) != null) {
nominalAnnualInterestRate = BigDecimal
.valueOf(ImportHandlerUtils.readAsDouble(SavingsConstants.NOMINAL_ANNUAL_INTEREST_RATE_COL, row));
}
String interestCompoundingPeriodType = ImportHandlerUtils.readAsString(SavingsConstants.INTEREST_COMPOUNDING_PERIOD_COL, row);
Long interestCompoundingPeriodTypeId = null;
EnumOptionData interestCompoundingPeriodTypeEnum = null;
if (interestCompoundingPeriodType != null) {
if (interestCompoundingPeriodType.equalsIgnoreCase(DAILY)) {
interestCompoundingPeriodTypeId = 1L;
} else if (interestCompoundingPeriodType.equalsIgnoreCase(MONTHLY)) {
interestCompoundingPeriodTypeId = 4L;
} else if (interestCompoundingPeriodType.equalsIgnoreCase(QUARTERLY)) {
interestCompoundingPeriodTypeId = 5L;
} else if (interestCompoundingPeriodType.equalsIgnoreCase(SEMI_ANNUAL)) {
interestCompoundingPeriodTypeId = 6L;
} else if (interestCompoundingPeriodType.equalsIgnoreCase(ANNUALLY)) {
interestCompoundingPeriodTypeId = 7L;
}
interestCompoundingPeriodTypeEnum = new EnumOptionData(interestCompoundingPeriodTypeId, null, null);
}
String interestPostingPeriodType = ImportHandlerUtils.readAsString(SavingsConstants.INTEREST_POSTING_PERIOD_COL, row);
Long interestPostingPeriodTypeId = null;
EnumOptionData interestPostingPeriodTypeEnum = null;
if (interestPostingPeriodType != null) {
if (interestPostingPeriodType.equalsIgnoreCase(DAILY)) {
interestPostingPeriodTypeId = SavingsPostingInterestPeriodType.DAILY.getValue().longValue();
} else if (interestPostingPeriodType.equalsIgnoreCase(MONTHLY)) {
interestPostingPeriodTypeId = 4L;
} else if (interestPostingPeriodType.equalsIgnoreCase(QUARTERLY)) {
interestPostingPeriodTypeId = 5L;
} else if (interestPostingPeriodType.equalsIgnoreCase(ANNUALLY)) {
interestPostingPeriodTypeId = 7L;
} else if (interestPostingPeriodType.equalsIgnoreCase(BI_ANNUAL)) {
interestPostingPeriodTypeId = 6L;
}
interestPostingPeriodTypeEnum = new EnumOptionData(interestPostingPeriodTypeId, null, null);
}
String interestCalculationType = ImportHandlerUtils.readAsString(SavingsConstants.INTEREST_CALCULATION_COL, row);
Long interestCalculationTypeId = null;
EnumOptionData interestCalculationTypeEnum = null;
if (interestCalculationType != null) {
if (interestCalculationType.equalsIgnoreCase("Daily Balance")) {
interestCalculationTypeId = 1L;
} else if (interestCalculationType.equalsIgnoreCase("Average Daily Balance")) {
interestCalculationTypeId = 2L;
}
interestCalculationTypeEnum = new EnumOptionData(interestCalculationTypeId, null, null);
}
String interestCalculationDaysInYearType = ImportHandlerUtils.readAsString(SavingsConstants.INTEREST_CALCULATION_DAYS_IN_YEAR_COL,
row);
EnumOptionData interestCalculationDaysInYearTypeEnum = null;
Long interestCalculationDaysInYearTypeId = null;
if (interestCalculationDaysInYearType != null) {
if (interestCalculationDaysInYearType.equalsIgnoreCase("360 Days")) {
interestCalculationDaysInYearTypeId = 360L;
} else if (interestCalculationDaysInYearType.equalsIgnoreCase("365 Days")) {
interestCalculationDaysInYearTypeId = 365L;
}
interestCalculationDaysInYearTypeEnum = new EnumOptionData(interestCalculationDaysInYearTypeId, null, null);
}
BigDecimal minRequiredOpeningBalance = null;
if (ImportHandlerUtils.readAsDouble(SavingsConstants.MIN_OPENING_BALANCE_COL, row) != null) {
minRequiredOpeningBalance = BigDecimal.valueOf(ImportHandlerUtils.readAsDouble(SavingsConstants.MIN_OPENING_BALANCE_COL, row));
}
Integer lockinPeriodFrequency = ImportHandlerUtils.readAsInt(SavingsConstants.LOCKIN_PERIOD_COL, row);
String lockinPeriodFrequencyType = ImportHandlerUtils.readAsString(SavingsConstants.LOCKIN_PERIOD_FREQUENCY_COL, row);
Long lockinPeriodFrequencyTypeId = null;
EnumOptionData lockinPeriodFrequencyTypeEnum = null;
if (lockinPeriodFrequencyType != null) {
if (lockinPeriodFrequencyType.equalsIgnoreCase("Days")) {
lockinPeriodFrequencyTypeId = 0L;
} else if (lockinPeriodFrequencyType.equalsIgnoreCase("Weeks")) {
lockinPeriodFrequencyTypeId = 1L;
} else if (lockinPeriodFrequencyType.equalsIgnoreCase("Months")) {
lockinPeriodFrequencyTypeId = 2L;
} else if (lockinPeriodFrequencyType.equalsIgnoreCase("Years")) {
lockinPeriodFrequencyTypeId = 3L;
}
lockinPeriodFrequencyTypeEnum = new EnumOptionData(lockinPeriodFrequencyTypeId, null, null);
}
Boolean applyWithdrawalFeeForTransfers = ImportHandlerUtils.readAsBoolean(SavingsConstants.APPLY_WITHDRAWAL_FEE_FOR_TRANSFERS, row);
String savingsType = null;
if (ImportHandlerUtils.readAsString(SavingsConstants.SAVINGS_TYPE_COL, row) != null) {
savingsType = ImportHandlerUtils.readAsString(SavingsConstants.SAVINGS_TYPE_COL, row).toLowerCase(Locale.ENGLISH);
}
String clientOrGroupName = ImportHandlerUtils.readAsString(SavingsConstants.CLIENT_NAME_COL, row);
String externalId = ImportHandlerUtils.readAsString(SavingsConstants.EXTERNAL_ID_COL, row);
List<SavingsAccountChargeData> charges = new ArrayList<>();
Boolean allowOverdraft = ImportHandlerUtils.readAsBoolean(SavingsConstants.ALLOW_OVER_DRAFT_COL, row);
BigDecimal overdraftLimit = BigDecimal.valueOf(ImportHandlerUtils.readAsDouble(SavingsConstants.OVER_DRAFT_LIMIT_COL, row));
String charge1 = ImportHandlerUtils.readAsString(SavingsConstants.CHARGE_ID_1, row);
String charge2 = ImportHandlerUtils.readAsString(SavingsConstants.CHARGE_ID_2, row);
if (charge1 != null) {
if (ImportHandlerUtils.readAsDouble(SavingsConstants.CHARGE_AMOUNT_1, row) != null) {
charges.add(new SavingsAccountChargeData(ImportHandlerUtils.readAsLong(SavingsConstants.CHARGE_ID_1, row),
BigDecimal.valueOf(ImportHandlerUtils.readAsDouble(SavingsConstants.CHARGE_AMOUNT_1, row)),
ImportHandlerUtils.readAsDate(SavingsConstants.CHARGE_DUE_DATE_1, row)));
} else {
charges.add(new SavingsAccountChargeData(ImportHandlerUtils.readAsLong(SavingsConstants.CHARGE_ID_1, row), null,
ImportHandlerUtils.readAsDate(SavingsConstants.CHARGE_DUE_DATE_1, row)));
}
}
if (charge2 != null) {
if (ImportHandlerUtils.readAsDouble(SavingsConstants.CHARGE_AMOUNT_2, row) != null) {
charges.add(new SavingsAccountChargeData(ImportHandlerUtils.readAsLong(SavingsConstants.CHARGE_ID_2, row),
BigDecimal.valueOf(ImportHandlerUtils.readAsDouble(SavingsConstants.CHARGE_AMOUNT_2, row)),
ImportHandlerUtils.readAsDate(SavingsConstants.CHARGE_DUE_DATE_2, row)));
} else {
charges.add(new SavingsAccountChargeData(ImportHandlerUtils.readAsLong(SavingsConstants.CHARGE_ID_2, row), null,
ImportHandlerUtils.readAsDate(SavingsConstants.CHARGE_DUE_DATE_2, row)));
}
}
String status = ImportHandlerUtils.readAsString(SavingsConstants.STATUS_COL, row);
statuses.add(status);
if (savingsType != null) {
if (savingsType.equals("individual")) {
Long clientId = ImportHandlerUtils.getIdByName(workbook.getSheet(TemplatePopulateImportConstants.CLIENT_SHEET_NAME),
clientOrGroupName);
return SavingsAccountData.importInstanceIndividual(clientId, productId, fieldOfficerId, submittedOnDate,
nominalAnnualInterestRate, interestCompoundingPeriodTypeEnum, interestPostingPeriodTypeEnum,
interestCalculationTypeEnum, interestCalculationDaysInYearTypeEnum, minRequiredOpeningBalance,
lockinPeriodFrequency, lockinPeriodFrequencyTypeEnum, applyWithdrawalFeeForTransfers, row.getRowNum(), externalId,
charges, allowOverdraft, overdraftLimit, locale, dateFormat);
}
Long groupId = ImportHandlerUtils.getIdByName(workbook.getSheet(TemplatePopulateImportConstants.GROUP_SHEET_NAME),
clientOrGroupName);
return SavingsAccountData.importInstanceGroup(groupId, productId, fieldOfficerId, submittedOnDate, nominalAnnualInterestRate,
interestCompoundingPeriodTypeEnum, interestPostingPeriodTypeEnum, interestCalculationTypeEnum,
interestCalculationDaysInYearTypeEnum, minRequiredOpeningBalance, lockinPeriodFrequency, lockinPeriodFrequencyTypeEnum,
applyWithdrawalFeeForTransfers, row.getRowNum(), externalId, charges, allowOverdraft, overdraftLimit, locale,
dateFormat);
} else {
return null;
}
}