2525import java .util .List ;
2626import java .util .Map ;
2727import java .util .TreeMap ;
28+ import lombok .Getter ;
2829import org .apache .fineract .organisation .monetary .domain .MonetaryCurrency ;
2930import org .apache .fineract .organisation .monetary .domain .Money ;
3031import org .apache .fineract .portfolio .loanaccount .domain .LoanRepaymentScheduleInstallment ;
@@ -40,6 +41,8 @@ public final class LoanScheduleParams {
4041
4142 private LocalDate periodStartDate ;
4243 private LocalDate actualRepaymentDate ;
44+ @ Getter
45+ private LocalDate originalRepaymentDate ;
4346
4447 // variables for cumulative totals
4548 private Money totalCumulativePrincipal ;
@@ -100,20 +103,21 @@ public void setCompoundedInLastInstallment(Money compoundedInLastInstallment) {
100103 private final boolean applyInterestRecalculation ;
101104
102105 private LoanScheduleParams (final int periodNumber , final int instalmentNumber , int loanTermInDays , LocalDate periodStartDate ,
103- final LocalDate actualRepaymentDate , final Money totalCumulativePrincipal , final Money totalCumulativeInterest ,
104- final Money totalFeeChargesCharged , final Money totalPenaltyChargesCharged , final Money totalRepaymentExpected ,
105- Money totalOutstandingInterestPaymentDueToGrace , final Money reducePrincipal , final Map < LocalDate , Money > principalPortionMap ,
106- final Map <LocalDate , Money > latePaymentMap , final Map <LocalDate , Money > compoundingMap , final Money unCompoundedAmount ,
107- final Map <LocalDate , Money > disburseDetailMap , Money principalToBeScheduled , final Money outstandingBalance ,
108- final Money outstandingBalanceAsPerRest , final List < LoanRepaymentScheduleInstallment > installments ,
109- final Collection <RecalculationDetail > recalculationDetails ,
106+ final LocalDate actualRepaymentDate , final LocalDate originalRepaymentDate , final Money totalCumulativePrincipal ,
107+ final Money totalCumulativeInterest , final Money totalFeeChargesCharged , final Money totalPenaltyChargesCharged ,
108+ final Money totalRepaymentExpected , Money totalOutstandingInterestPaymentDueToGrace , final Money reducePrincipal ,
109+ final Map <LocalDate , Money > principalPortionMap , final Map <LocalDate , Money > latePaymentMap ,
110+ final Map <LocalDate , Money > compoundingMap , final Money unCompoundedAmount , final Map < LocalDate , Money > disburseDetailMap ,
111+ Money principalToBeScheduled , final Money outstandingBalance , final Money outstandingBalanceAsPerRest ,
112+ final List < LoanRepaymentScheduleInstallment > installments , final Collection <RecalculationDetail > recalculationDetails ,
110113 final LoanRepaymentScheduleTransactionProcessor loanRepaymentScheduleTransactionProcessor , final LocalDate scheduleTillDate ,
111114 final boolean partialUpdate , final MonetaryCurrency currency , final boolean applyInterestRecalculation ) {
112115 this .periodNumber = periodNumber ;
113116 this .instalmentNumber = instalmentNumber ;
114117 this .loanTermInDays = loanTermInDays ;
115118 this .periodStartDate = periodStartDate ;
116119 this .actualRepaymentDate = actualRepaymentDate ;
120+ this .originalRepaymentDate = originalRepaymentDate ;
117121 this .totalCumulativePrincipal = totalCumulativePrincipal ;
118122 this .totalCumulativeInterest = totalCumulativeInterest ;
119123 this .totalFeeChargesCharged = totalFeeChargesCharged ;
@@ -142,22 +146,22 @@ private LoanScheduleParams(final int periodNumber, final int instalmentNumber, i
142146 }
143147
144148 public static LoanScheduleParams createLoanScheduleParamsForPartialUpdate (final int periodNumber , final int instalmentNumber ,
145- int loanTermInDays , LocalDate periodStartDate , final LocalDate actualRepaymentDate , final Money totalCumulativePrincipal ,
146- final Money totalCumulativeInterest , final Money totalFeeChargesCharged , final Money totalPenaltyChargesCharged ,
147- final Money totalRepaymentExpected , Money totalOutstandingInterestPaymentDueToGrace , final Money reducePrincipal ,
148- final Map <LocalDate , Money > principalPortionMap , final Map <LocalDate , Money > latePaymentMap ,
149+ int loanTermInDays , LocalDate periodStartDate , final LocalDate actualRepaymentDate , final LocalDate originalRepaymentDate ,
150+ final Money totalCumulativePrincipal , final Money totalCumulativeInterest , final Money totalFeeChargesCharged ,
151+ final Money totalPenaltyChargesCharged , final Money totalRepaymentExpected , Money totalOutstandingInterestPaymentDueToGrace ,
152+ final Money reducePrincipal , final Map <LocalDate , Money > principalPortionMap , final Map <LocalDate , Money > latePaymentMap ,
149153 final Map <LocalDate , Money > compoundingMap , Money unCompoundedAmount , final Map <LocalDate , Money > disburseDetailMap ,
150154 final Money principalToBeScheduled , final Money outstandingBalance , final Money outstandingBalanceAsPerRest ,
151155 final List <LoanRepaymentScheduleInstallment > installments , final Collection <RecalculationDetail > recalculationDetails ,
152156 final LoanRepaymentScheduleTransactionProcessor loanRepaymentScheduleTransactionProcessor , final LocalDate scheduleTillDate ,
153157 final MonetaryCurrency currency , final boolean applyInterestRecalculation ) {
154158 final boolean partialUpdate = true ;
155159 return new LoanScheduleParams (periodNumber , instalmentNumber , loanTermInDays , periodStartDate , actualRepaymentDate ,
156- totalCumulativePrincipal , totalCumulativeInterest , totalFeeChargesCharged , totalPenaltyChargesCharged ,
157- totalRepaymentExpected , totalOutstandingInterestPaymentDueToGrace , reducePrincipal , principalPortionMap , latePaymentMap ,
158- compoundingMap , unCompoundedAmount , disburseDetailMap , principalToBeScheduled , outstandingBalance ,
159- outstandingBalanceAsPerRest , installments , recalculationDetails , loanRepaymentScheduleTransactionProcessor ,
160- scheduleTillDate , partialUpdate , currency , applyInterestRecalculation );
160+ originalRepaymentDate , totalCumulativePrincipal , totalCumulativeInterest , totalFeeChargesCharged ,
161+ totalPenaltyChargesCharged , totalRepaymentExpected , totalOutstandingInterestPaymentDueToGrace , reducePrincipal ,
162+ principalPortionMap , latePaymentMap , compoundingMap , unCompoundedAmount , disburseDetailMap , principalToBeScheduled ,
163+ outstandingBalance , outstandingBalanceAsPerRest , installments , recalculationDetails ,
164+ loanRepaymentScheduleTransactionProcessor , scheduleTillDate , partialUpdate , currency , applyInterestRecalculation );
161165 }
162166
163167 public static LoanScheduleParams createLoanScheduleParamsForCompleteUpdate (final Collection <RecalculationDetail > recalculationDetails ,
@@ -167,6 +171,7 @@ public static LoanScheduleParams createLoanScheduleParamsForCompleteUpdate(final
167171 final int instalmentNumber = 1 ;
168172 final LocalDate periodStartDate = null ;
169173 final LocalDate actualRepaymentDate = null ;
174+ final LocalDate originalRepaymentDate = null ;
170175 final Money totalCumulativePrincipal = null ;
171176 final Money totalCumulativeInterest = null ;
172177 final Money totalFeeChargesCharged = null ;
@@ -187,11 +192,11 @@ public static LoanScheduleParams createLoanScheduleParamsForCompleteUpdate(final
187192 final MonetaryCurrency currency = null ;
188193 final Money unCompoundedAmount = null ;
189194 return new LoanScheduleParams (periodNumber , instalmentNumber , loanTermInDays , periodStartDate , actualRepaymentDate ,
190- totalCumulativePrincipal , totalCumulativeInterest , totalFeeChargesCharged , totalPenaltyChargesCharged ,
191- totalRepaymentExpected , totalOutstandingInterestPaymentDueToGrace , reducePrincipal , principalPortionMap , latePaymentMap ,
192- compoundingMap , unCompoundedAmount , disburseDetailMap , principalToBeScheduled , outstandingBalance ,
193- outstandingBalanceAsPerRest , installments , recalculationDetails , loanRepaymentScheduleTransactionProcessor ,
194- scheduleTillDate , partialUpdate , currency , applyInterestRecalculation );
195+ originalRepaymentDate , totalCumulativePrincipal , totalCumulativeInterest , totalFeeChargesCharged ,
196+ totalPenaltyChargesCharged , totalRepaymentExpected , totalOutstandingInterestPaymentDueToGrace , reducePrincipal ,
197+ principalPortionMap , latePaymentMap , compoundingMap , unCompoundedAmount , disburseDetailMap , principalToBeScheduled ,
198+ outstandingBalance , outstandingBalanceAsPerRest , installments , recalculationDetails ,
199+ loanRepaymentScheduleTransactionProcessor , scheduleTillDate , partialUpdate , currency , applyInterestRecalculation );
195200 }
196201
197202 public static LoanScheduleParams createLoanScheduleParams (final MonetaryCurrency currency , final Money chargesDueAtTimeOfDisbursement ,
@@ -202,6 +207,7 @@ public static LoanScheduleParams createLoanScheduleParams(final MonetaryCurrency
202207 final Money totalCumulativePrincipal = Money .zero (currency );
203208 final Money totalCumulativeInterest = Money .zero (currency );
204209 final Money totalOutstandingInterestPaymentDueToGrace = Money .zero (currency );
210+ final LocalDate originalRepaymentDate = periodStartDate ;
205211 final LocalDate actualRepaymentDate = periodStartDate ;
206212 final Money totalFeeChargesCharged = chargesDueAtTimeOfDisbursement ;
207213 final Money totalPenaltyChargesCharged = Money .zero (currency );
@@ -221,11 +227,11 @@ public static LoanScheduleParams createLoanScheduleParams(final MonetaryCurrency
221227 final boolean applyInterestRecalculation = false ;
222228 final Money unCompoundedAmount = Money .zero (currency );
223229 return new LoanScheduleParams (periodNumber , instalmentNumber , loanTermInDays , periodStartDate , actualRepaymentDate ,
224- totalCumulativePrincipal , totalCumulativeInterest , totalFeeChargesCharged , totalPenaltyChargesCharged ,
225- totalRepaymentExpected , totalOutstandingInterestPaymentDueToGrace , reducePrincipal , principalPortionMap , latePaymentMap ,
226- compoundingMap , unCompoundedAmount , disburseDetailMap , principalToBeScheduled , outstandingBalance ,
227- outstandingBalanceAsPerRest , installments , recalculationDetails , loanRepaymentScheduleTransactionProcessor ,
228- scheduleTillDate , partialUpdate , currency , applyInterestRecalculation );
230+ originalRepaymentDate , totalCumulativePrincipal , totalCumulativeInterest , totalFeeChargesCharged ,
231+ totalPenaltyChargesCharged , totalRepaymentExpected , totalOutstandingInterestPaymentDueToGrace , reducePrincipal ,
232+ principalPortionMap , latePaymentMap , compoundingMap , unCompoundedAmount , disburseDetailMap , principalToBeScheduled ,
233+ outstandingBalance , outstandingBalanceAsPerRest , installments , recalculationDetails ,
234+ loanRepaymentScheduleTransactionProcessor , scheduleTillDate , partialUpdate , currency , applyInterestRecalculation );
229235 }
230236
231237 public static LoanScheduleParams createLoanScheduleParams (final MonetaryCurrency currency , final Money chargesDueAtTimeOfDisbursement ,
@@ -236,6 +242,7 @@ public static LoanScheduleParams createLoanScheduleParams(final MonetaryCurrency
236242 final Money totalCumulativePrincipal = Money .zero (currency );
237243 final Money totalCumulativeInterest = Money .zero (currency );
238244 final Money totalOutstandingInterestPaymentDueToGrace = Money .zero (currency );
245+ final LocalDate originalRepaymentDate = periodStartDate ;
239246 final LocalDate actualRepaymentDate = periodStartDate ;
240247 final Money totalFeeChargesCharged = chargesDueAtTimeOfDisbursement ;
241248 final Money totalPenaltyChargesCharged = Money .zero (currency );
@@ -255,11 +262,11 @@ public static LoanScheduleParams createLoanScheduleParams(final MonetaryCurrency
255262 final boolean applyInterestRecalculation = loanScheduleParams .applyInterestRecalculation ;
256263 final Money unCompoundedAmount = Money .zero (currency );
257264 return new LoanScheduleParams (periodNumber , instalmentNumber , loanTermInDays , periodStartDate , actualRepaymentDate ,
258- totalCumulativePrincipal , totalCumulativeInterest , totalFeeChargesCharged , totalPenaltyChargesCharged ,
259- totalRepaymentExpected , totalOutstandingInterestPaymentDueToGrace , reducePrincipal , principalPortionMap , latePaymentMap ,
260- compoundingMap , unCompoundedAmount , disburseDetailMap , principalToBeScheduled , outstandingBalance ,
261- outstandingBalanceAsPerRest , installments , recalculationDetails , loanRepaymentScheduleTransactionProcessor ,
262- scheduleTillDate , partialUpdate , currency , applyInterestRecalculation );
265+ originalRepaymentDate , totalCumulativePrincipal , totalCumulativeInterest , totalFeeChargesCharged ,
266+ totalPenaltyChargesCharged , totalRepaymentExpected , totalOutstandingInterestPaymentDueToGrace , reducePrincipal ,
267+ principalPortionMap , latePaymentMap , compoundingMap , unCompoundedAmount , disburseDetailMap , principalToBeScheduled ,
268+ outstandingBalance , outstandingBalanceAsPerRest , installments , recalculationDetails ,
269+ loanRepaymentScheduleTransactionProcessor , scheduleTillDate , partialUpdate , currency , applyInterestRecalculation );
263270 }
264271
265272 public int getPeriodNumber () {
@@ -390,6 +397,10 @@ public void setActualRepaymentDate(LocalDate actualRepaymentDate) {
390397 this .actualRepaymentDate = actualRepaymentDate ;
391398 }
392399
400+ public void setOriginalRepaymentDate (LocalDate originalRepaymentDate ) {
401+ this .originalRepaymentDate = originalRepaymentDate ;
402+ }
403+
393404 public void setReducePrincipal (Money reducePrincipal ) {
394405 this .reducePrincipal = reducePrincipal ;
395406 }
0 commit comments