/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleParams.java

https://gitlab.com/skylabase/incubator-fineract · Java · 481 lines · 370 code · 74 blank · 37 comment · 2 complexity · 187c95098ffd2c1df7ef63bcc7b86301 MD5 · raw file

  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing,
  13. * software distributed under the License is distributed on an
  14. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15. * KIND, either express or implied. See the License for the
  16. * specific language governing permissions and limitations
  17. * under the License.
  18. */
  19. package org.apache.fineract.portfolio.loanaccount.loanschedule.data;
  20. import java.util.ArrayList;
  21. import java.util.Collection;
  22. import java.util.HashMap;
  23. import java.util.List;
  24. import java.util.Map;
  25. import java.util.TreeMap;
  26. import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
  27. import org.apache.fineract.organisation.monetary.domain.Money;
  28. import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
  29. import org.apache.fineract.portfolio.loanaccount.domain.transactionprocessor.LoanRepaymentScheduleTransactionProcessor;
  30. import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.RecalculationDetail;
  31. import org.joda.time.LocalDate;
  32. public class LoanScheduleParams {
  33. // Actual period Number as per the schedule
  34. private int periodNumber;
  35. // Actual period Number plus interest only repayments
  36. private int instalmentNumber;
  37. private LocalDate periodStartDate;
  38. private LocalDate actualRepaymentDate;
  39. // variables for cumulative totals
  40. private Money totalCumulativePrincipal;
  41. private Money totalCumulativeInterest;
  42. private Money totalFeeChargesCharged;
  43. private Money totalPenaltyChargesCharged;
  44. private Money totalRepaymentExpected;
  45. private Money totalOutstandingInterestPaymentDueToGrace;
  46. // early payments will be added here and as per the selected strategy
  47. // action will be performed on this value
  48. private Money reducePrincipal;
  49. // principal changes will be added along with date(after applying rest)
  50. // from when these amounts will effect the outstanding balance for
  51. // interest calculation
  52. private final Map<LocalDate, Money> principalPortionMap;
  53. // compounding(principal) amounts will be added along with
  54. // date(after applying compounding frequency)
  55. // from when these amounts will effect the outstanding balance for
  56. // interest calculation
  57. private final Map<LocalDate, Money> latePaymentMap;
  58. // compounding(interest/Fee) amounts will be added along with
  59. // date(after applying compounding frequency)
  60. // from when these amounts will effect the outstanding balance for
  61. // interest calculation
  62. private final Map<LocalDate, Money> compoundingMap;
  63. private final Map<LocalDate, Map<LocalDate, Money>> compoundingDateVariations = new HashMap<>();
  64. private Money unCompoundedAmount;
  65. private Money compoundedInLastInstallment;
  66. public Money getCompoundedInLastInstallment() {
  67. return this.compoundedInLastInstallment;
  68. }
  69. public void setCompoundedInLastInstallment(Money compoundedInLastInstallment) {
  70. this.compoundedInLastInstallment = compoundedInLastInstallment;
  71. }
  72. // disbursement map for tranche details(will added to outstanding
  73. // balance as per the start date)
  74. private final Map<LocalDate, Money> disburseDetailMap;
  75. private Money principalToBeScheduled;
  76. private Money outstandingBalance;
  77. // total outstanding balance as per rest for interest calculation.
  78. private Money outstandingBalanceAsPerRest;
  79. private final List<LoanRepaymentScheduleInstallment> installments;
  80. private final Collection<RecalculationDetail> recalculationDetails;
  81. private final LoanRepaymentScheduleTransactionProcessor loanRepaymentScheduleTransactionProcessor;
  82. private final LocalDate scheduleTillDate;
  83. private final boolean partialUpdate;
  84. private int loanTermInDays;
  85. private final MonetaryCurrency currency;
  86. private final boolean applyInterestRecalculation;
  87. private LoanScheduleParams(final int periodNumber, final int instalmentNumber, int loanTermInDays, LocalDate periodStartDate,
  88. final LocalDate actualRepaymentDate, final Money totalCumulativePrincipal, final Money totalCumulativeInterest,
  89. final Money totalFeeChargesCharged, final Money totalPenaltyChargesCharged, final Money totalRepaymentExpected,
  90. Money totalOutstandingInterestPaymentDueToGrace, final Money reducePrincipal, final Map<LocalDate, Money> principalPortionMap,
  91. final Map<LocalDate, Money> latePaymentMap, final Map<LocalDate, Money> compoundingMap, final Money unCompoundedAmount,
  92. final Map<LocalDate, Money> disburseDetailMap, Money principalToBeScheduled, final Money outstandingBalance,
  93. final Money outstandingBalanceAsPerRest, final List<LoanRepaymentScheduleInstallment> installments,
  94. final Collection<RecalculationDetail> recalculationDetails,
  95. final LoanRepaymentScheduleTransactionProcessor loanRepaymentScheduleTransactionProcessor, final LocalDate scheduleTillDate,
  96. final boolean partialUpdate, final MonetaryCurrency currency, final boolean applyInterestRecalculation) {
  97. this.periodNumber = periodNumber;
  98. this.instalmentNumber = instalmentNumber;
  99. this.loanTermInDays = loanTermInDays;
  100. this.periodStartDate = periodStartDate;
  101. this.actualRepaymentDate = actualRepaymentDate;
  102. this.totalCumulativePrincipal = totalCumulativePrincipal;
  103. this.totalCumulativeInterest = totalCumulativeInterest;
  104. this.totalFeeChargesCharged = totalFeeChargesCharged;
  105. this.totalPenaltyChargesCharged = totalPenaltyChargesCharged;
  106. this.totalRepaymentExpected = totalRepaymentExpected;
  107. this.totalOutstandingInterestPaymentDueToGrace = totalOutstandingInterestPaymentDueToGrace;
  108. this.reducePrincipal = reducePrincipal;
  109. this.principalPortionMap = principalPortionMap;
  110. this.latePaymentMap = latePaymentMap;
  111. this.compoundingMap = compoundingMap;
  112. this.unCompoundedAmount = unCompoundedAmount;
  113. this.disburseDetailMap = disburseDetailMap;
  114. this.principalToBeScheduled = principalToBeScheduled;
  115. this.outstandingBalance = outstandingBalance;
  116. this.outstandingBalanceAsPerRest = outstandingBalanceAsPerRest;
  117. this.installments = installments;
  118. this.recalculationDetails = recalculationDetails;
  119. this.loanRepaymentScheduleTransactionProcessor = loanRepaymentScheduleTransactionProcessor;
  120. this.scheduleTillDate = scheduleTillDate;
  121. this.partialUpdate = partialUpdate;
  122. this.currency = currency;
  123. this.applyInterestRecalculation = applyInterestRecalculation;
  124. if (this.currency != null) {
  125. this.compoundedInLastInstallment = Money.zero(this.currency);
  126. }
  127. }
  128. public static LoanScheduleParams createLoanScheduleParamsForPartialUpdate(final int periodNumber, final int instalmentNumber,
  129. int loanTermInDays, LocalDate periodStartDate, final LocalDate actualRepaymentDate, final Money totalCumulativePrincipal,
  130. final Money totalCumulativeInterest, final Money totalFeeChargesCharged, final Money totalPenaltyChargesCharged,
  131. final Money totalRepaymentExpected, Money totalOutstandingInterestPaymentDueToGrace, final Money reducePrincipal,
  132. final Map<LocalDate, Money> principalPortionMap, final Map<LocalDate, Money> latePaymentMap,
  133. final Map<LocalDate, Money> compoundingMap, Money unCompoundedAmount, final Map<LocalDate, Money> disburseDetailMap,
  134. final Money principalToBeScheduled, final Money outstandingBalance, final Money outstandingBalanceAsPerRest,
  135. final List<LoanRepaymentScheduleInstallment> installments, final Collection<RecalculationDetail> recalculationDetails,
  136. final LoanRepaymentScheduleTransactionProcessor loanRepaymentScheduleTransactionProcessor, final LocalDate scheduleTillDate,
  137. final MonetaryCurrency currency, final boolean applyInterestRecalculation) {
  138. final boolean partialUpdate = true;
  139. return new LoanScheduleParams(periodNumber, instalmentNumber, loanTermInDays, periodStartDate, actualRepaymentDate,
  140. totalCumulativePrincipal, totalCumulativeInterest, totalFeeChargesCharged, totalPenaltyChargesCharged,
  141. totalRepaymentExpected, totalOutstandingInterestPaymentDueToGrace, reducePrincipal, principalPortionMap, latePaymentMap,
  142. compoundingMap, unCompoundedAmount, disburseDetailMap, principalToBeScheduled, outstandingBalance,
  143. outstandingBalanceAsPerRest, installments, recalculationDetails, loanRepaymentScheduleTransactionProcessor,
  144. scheduleTillDate, partialUpdate, currency, applyInterestRecalculation);
  145. }
  146. public static LoanScheduleParams createLoanScheduleParamsForCompleteUpdate(final Collection<RecalculationDetail> recalculationDetails,
  147. final LoanRepaymentScheduleTransactionProcessor loanRepaymentScheduleTransactionProcessor, final LocalDate scheduleTillDate,
  148. final boolean applyInterestRecalculation) {
  149. final int periodNumber = 1;
  150. final int instalmentNumber = 1;
  151. final LocalDate periodStartDate = null;
  152. final LocalDate actualRepaymentDate = null;
  153. final Money totalCumulativePrincipal = null;
  154. final Money totalCumulativeInterest = null;
  155. final Money totalFeeChargesCharged = null;
  156. final Money totalPenaltyChargesCharged = null;
  157. final Money totalRepaymentExpected = null;
  158. final Money reducePrincipal = null;
  159. final Map<LocalDate, Money> principalPortionMap = null;
  160. final Map<LocalDate, Money> latePaymentMap = null;
  161. final Map<LocalDate, Money> compoundingMap = null;
  162. final Map<LocalDate, Money> disburseDetailMap = null;
  163. final Money principalToBeScheduled = null;
  164. final Money outstandingBalance = null;
  165. final Money outstandingBalanceAsPerRest = null;
  166. final List<LoanRepaymentScheduleInstallment> installments = null;
  167. final boolean partialUpdate = false;
  168. final int loanTermInDays = 0;
  169. final Money totalOutstandingInterestPaymentDueToGrace = null;
  170. final MonetaryCurrency currency = null;
  171. final Money unCompoundedAmount = null;
  172. return new LoanScheduleParams(periodNumber, instalmentNumber, loanTermInDays, periodStartDate, actualRepaymentDate,
  173. totalCumulativePrincipal, totalCumulativeInterest, totalFeeChargesCharged, totalPenaltyChargesCharged,
  174. totalRepaymentExpected, totalOutstandingInterestPaymentDueToGrace, reducePrincipal, principalPortionMap, latePaymentMap,
  175. compoundingMap, unCompoundedAmount, disburseDetailMap, principalToBeScheduled, outstandingBalance,
  176. outstandingBalanceAsPerRest, installments, recalculationDetails, loanRepaymentScheduleTransactionProcessor,
  177. scheduleTillDate, partialUpdate, currency, applyInterestRecalculation);
  178. }
  179. public static LoanScheduleParams createLoanScheduleParams(final MonetaryCurrency currency, final Money chargesDueAtTimeOfDisbursement,
  180. final LocalDate periodStartDate, final Money principalToBeScheduled) {
  181. final int loanTermInDays = 0;
  182. final int periodNumber = 1;
  183. final int instalmentNumber = 1;
  184. final Money totalCumulativePrincipal = Money.zero(currency);
  185. final Money totalCumulativeInterest = Money.zero(currency);
  186. final Money totalOutstandingInterestPaymentDueToGrace = Money.zero(currency);
  187. final LocalDate actualRepaymentDate = periodStartDate;
  188. final Money totalFeeChargesCharged = chargesDueAtTimeOfDisbursement;
  189. final Money totalPenaltyChargesCharged = Money.zero(currency);
  190. final Money totalRepaymentExpected = chargesDueAtTimeOfDisbursement;
  191. final Money reducePrincipal = Money.zero(currency);
  192. final Map<LocalDate, Money> principalPortionMap = new HashMap<>();
  193. final Map<LocalDate, Money> latePaymentMap = new HashMap<>();
  194. final Map<LocalDate, Money> compoundingMap = new TreeMap<>();
  195. final Map<LocalDate, Money> disburseDetailMap = new TreeMap<>();
  196. final Money outstandingBalance = principalToBeScheduled;
  197. final Money outstandingBalanceAsPerRest = principalToBeScheduled;
  198. final List<LoanRepaymentScheduleInstallment> installments = new ArrayList<>();
  199. final boolean partialUpdate = false;
  200. final Collection<RecalculationDetail> recalculationDetails = null;
  201. final LoanRepaymentScheduleTransactionProcessor loanRepaymentScheduleTransactionProcessor = null;
  202. final LocalDate scheduleTillDate = null;
  203. final boolean applyInterestRecalculation = false;
  204. final Money unCompoundedAmount = Money.zero(currency);
  205. return new LoanScheduleParams(periodNumber, instalmentNumber, loanTermInDays, periodStartDate, actualRepaymentDate,
  206. totalCumulativePrincipal, totalCumulativeInterest, totalFeeChargesCharged, totalPenaltyChargesCharged,
  207. totalRepaymentExpected, totalOutstandingInterestPaymentDueToGrace, reducePrincipal, principalPortionMap, latePaymentMap,
  208. compoundingMap, unCompoundedAmount, disburseDetailMap, principalToBeScheduled, outstandingBalance,
  209. outstandingBalanceAsPerRest, installments, recalculationDetails, loanRepaymentScheduleTransactionProcessor,
  210. scheduleTillDate, partialUpdate, currency, applyInterestRecalculation);
  211. }
  212. public static LoanScheduleParams createLoanScheduleParams(final MonetaryCurrency currency, final Money chargesDueAtTimeOfDisbursement,
  213. final LocalDate periodStartDate, final Money principalToBeScheduled, final LoanScheduleParams loanScheduleParams) {
  214. final int loanTermInDays = 0;
  215. final int periodNumber = 1;
  216. final int instalmentNumber = 1;
  217. final Money totalCumulativePrincipal = Money.zero(currency);
  218. final Money totalCumulativeInterest = Money.zero(currency);
  219. final Money totalOutstandingInterestPaymentDueToGrace = Money.zero(currency);
  220. final LocalDate actualRepaymentDate = periodStartDate;
  221. final Money totalFeeChargesCharged = chargesDueAtTimeOfDisbursement;
  222. final Money totalPenaltyChargesCharged = Money.zero(currency);
  223. final Money totalRepaymentExpected = chargesDueAtTimeOfDisbursement;
  224. final Money reducePrincipal = Money.zero(currency);
  225. final Map<LocalDate, Money> principalPortionMap = new HashMap<>();
  226. final Map<LocalDate, Money> latePaymentMap = new HashMap<>();
  227. final Map<LocalDate, Money> compoundingMap = new TreeMap<>();
  228. final Map<LocalDate, Money> disburseDetailMap = new TreeMap<>();
  229. final Money outstandingBalance = principalToBeScheduled;
  230. final Money outstandingBalanceAsPerRest = principalToBeScheduled;
  231. final List<LoanRepaymentScheduleInstallment> installments = new ArrayList<>();
  232. final boolean partialUpdate = false;
  233. final Collection<RecalculationDetail> recalculationDetails = loanScheduleParams.recalculationDetails;
  234. final LoanRepaymentScheduleTransactionProcessor loanRepaymentScheduleTransactionProcessor = loanScheduleParams.loanRepaymentScheduleTransactionProcessor;
  235. final LocalDate scheduleTillDate = loanScheduleParams.scheduleTillDate;
  236. final boolean applyInterestRecalculation = loanScheduleParams.applyInterestRecalculation;
  237. final Money unCompoundedAmount = Money.zero(currency);
  238. return new LoanScheduleParams(periodNumber, instalmentNumber, loanTermInDays, periodStartDate, actualRepaymentDate,
  239. totalCumulativePrincipal, totalCumulativeInterest, totalFeeChargesCharged, totalPenaltyChargesCharged,
  240. totalRepaymentExpected, totalOutstandingInterestPaymentDueToGrace, reducePrincipal, principalPortionMap, latePaymentMap,
  241. compoundingMap, unCompoundedAmount, disburseDetailMap, principalToBeScheduled, outstandingBalance,
  242. outstandingBalanceAsPerRest, installments, recalculationDetails, loanRepaymentScheduleTransactionProcessor,
  243. scheduleTillDate, partialUpdate, currency, applyInterestRecalculation);
  244. }
  245. public int getPeriodNumber() {
  246. return this.periodNumber;
  247. }
  248. public int getInstalmentNumber() {
  249. return this.instalmentNumber;
  250. }
  251. public LocalDate getActualRepaymentDate() {
  252. return this.actualRepaymentDate;
  253. }
  254. public Money getTotalCumulativePrincipal() {
  255. return this.totalCumulativePrincipal;
  256. }
  257. public void addTotalCumulativePrincipal(final Money totalCumulativePrincipal) {
  258. this.totalCumulativePrincipal = this.totalCumulativePrincipal.plus(totalCumulativePrincipal);
  259. }
  260. public Money getTotalCumulativeInterest() {
  261. return this.totalCumulativeInterest;
  262. }
  263. public void addTotalCumulativeInterest(final Money totalCumulativeInterest) {
  264. this.totalCumulativeInterest = this.totalCumulativeInterest.plus(totalCumulativeInterest);
  265. }
  266. public Money getTotalFeeChargesCharged() {
  267. return this.totalFeeChargesCharged;
  268. }
  269. public void addTotalFeeChargesCharged(final Money totalFeeChargesCharged) {
  270. this.totalFeeChargesCharged = this.totalFeeChargesCharged.plus(totalFeeChargesCharged);
  271. }
  272. public Money getTotalPenaltyChargesCharged() {
  273. return this.totalPenaltyChargesCharged;
  274. }
  275. public void addTotalPenaltyChargesCharged(final Money totalPenaltyChargesCharged) {
  276. this.totalPenaltyChargesCharged = this.totalPenaltyChargesCharged.plus(totalPenaltyChargesCharged);
  277. }
  278. public Money getTotalRepaymentExpected() {
  279. return this.totalRepaymentExpected;
  280. }
  281. public void addTotalRepaymentExpected(final Money totalRepaymentExpected) {
  282. this.totalRepaymentExpected = this.totalRepaymentExpected.plus(totalRepaymentExpected);
  283. }
  284. public Money getReducePrincipal() {
  285. return this.reducePrincipal;
  286. }
  287. public Map<LocalDate, Money> getPrincipalPortionMap() {
  288. return this.principalPortionMap;
  289. }
  290. public Map<LocalDate, Money> getLatePaymentMap() {
  291. return this.latePaymentMap;
  292. }
  293. public Map<LocalDate, Money> getCompoundingMap() {
  294. return this.compoundingMap;
  295. }
  296. public Map<LocalDate, Money> getDisburseDetailMap() {
  297. return this.disburseDetailMap;
  298. }
  299. public Money getOutstandingBalance() {
  300. return this.outstandingBalance;
  301. }
  302. public Money getOutstandingBalanceAsPerRest() {
  303. return this.outstandingBalanceAsPerRest;
  304. }
  305. public List<LoanRepaymentScheduleInstallment> getInstallments() {
  306. return this.installments;
  307. }
  308. public Collection<RecalculationDetail> getRecalculationDetails() {
  309. return this.recalculationDetails;
  310. }
  311. public LoanRepaymentScheduleTransactionProcessor getLoanRepaymentScheduleTransactionProcessor() {
  312. return this.loanRepaymentScheduleTransactionProcessor;
  313. }
  314. public LocalDate getScheduleTillDate() {
  315. return this.scheduleTillDate;
  316. }
  317. public boolean isPartialUpdate() {
  318. return this.partialUpdate;
  319. }
  320. public LocalDate getPeriodStartDate() {
  321. return this.periodStartDate;
  322. }
  323. public Money getPrincipalToBeScheduled() {
  324. return this.principalToBeScheduled;
  325. }
  326. public void setPeriodNumber(int periodNumber) {
  327. this.periodNumber = periodNumber;
  328. }
  329. public void incrementPeriodNumber() {
  330. this.periodNumber++;
  331. }
  332. public void incrementInstalmentNumber() {
  333. this.instalmentNumber++;
  334. }
  335. public void setPeriodStartDate(LocalDate periodStartDate) {
  336. this.periodStartDate = periodStartDate;
  337. }
  338. public void setActualRepaymentDate(LocalDate actualRepaymentDate) {
  339. this.actualRepaymentDate = actualRepaymentDate;
  340. }
  341. public void setReducePrincipal(Money reducePrincipal) {
  342. this.reducePrincipal = reducePrincipal;
  343. }
  344. public void addReducePrincipal(Money reducePrincipal) {
  345. this.reducePrincipal = this.reducePrincipal.plus(reducePrincipal);
  346. }
  347. public void reduceReducePrincipal(Money reducePrincipal) {
  348. this.reducePrincipal = this.reducePrincipal.minus(reducePrincipal);
  349. }
  350. public void setPrincipalToBeScheduled(Money principalToBeScheduled) {
  351. this.principalToBeScheduled = principalToBeScheduled;
  352. }
  353. public void addPrincipalToBeScheduled(Money principalToBeScheduled) {
  354. this.principalToBeScheduled = this.principalToBeScheduled.plus(principalToBeScheduled);
  355. }
  356. public void setOutstandingBalance(Money outstandingBalance) {
  357. this.outstandingBalance = outstandingBalance;
  358. }
  359. public void addOutstandingBalance(Money outstandingBalance) {
  360. this.outstandingBalance = this.outstandingBalance.plus(outstandingBalance);
  361. }
  362. public void reduceOutstandingBalance(Money outstandingBalance) {
  363. this.outstandingBalance = this.outstandingBalance.minus(outstandingBalance);
  364. }
  365. public void setOutstandingBalanceAsPerRest(Money outstandingBalanceAsPerRest) {
  366. this.outstandingBalanceAsPerRest = outstandingBalanceAsPerRest;
  367. }
  368. public void addOutstandingBalanceAsPerRest(Money outstandingBalanceAsPerRest) {
  369. this.outstandingBalanceAsPerRest = this.outstandingBalanceAsPerRest.plus(outstandingBalanceAsPerRest);
  370. }
  371. public void reduceOutstandingBalanceAsPerRest(Money outstandingBalanceAsPerRest) {
  372. this.outstandingBalanceAsPerRest = this.outstandingBalanceAsPerRest.minus(outstandingBalanceAsPerRest);
  373. }
  374. public int getLoanTermInDays() {
  375. return this.loanTermInDays;
  376. }
  377. public void addLoanTermInDays(int loanTermInDays) {
  378. this.loanTermInDays += loanTermInDays;
  379. }
  380. public Money getTotalOutstandingInterestPaymentDueToGrace() {
  381. return this.totalOutstandingInterestPaymentDueToGrace;
  382. }
  383. public void setTotalOutstandingInterestPaymentDueToGrace(Money totalOutstandingInterestPaymentDueToGrace) {
  384. this.totalOutstandingInterestPaymentDueToGrace = totalOutstandingInterestPaymentDueToGrace;
  385. }
  386. public Map<LocalDate, Map<LocalDate, Money>> getCompoundingDateVariations() {
  387. return this.compoundingDateVariations;
  388. }
  389. public MonetaryCurrency getCurrency() {
  390. return this.currency;
  391. }
  392. public boolean applyInterestRecalculation() {
  393. return this.applyInterestRecalculation;
  394. }
  395. public Money getUnCompoundedAmount() {
  396. return this.unCompoundedAmount;
  397. }
  398. public void addUnCompoundedAmount(Money unCompoundedAmount) {
  399. this.unCompoundedAmount = this.unCompoundedAmount.plus(unCompoundedAmount);
  400. }
  401. public void minusUnCompoundedAmount(Money unCompoundedAmount) {
  402. this.unCompoundedAmount = this.unCompoundedAmount.minus(unCompoundedAmount);
  403. }
  404. public void setUnCompoundedAmount(Money unCompoundedAmount) {
  405. this.unCompoundedAmount = unCompoundedAmount;
  406. }
  407. }