adamsaghy commented on code in PR #3751:
URL: https://github.com/apache/fineract/pull/3751#discussion_r1505536744


##########
fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java:
##########
@@ -235,27 +235,31 @@ protected void processCreditTransaction(LoanTransaction 
loanTransaction, Transac
         if (hasNoCustomCreditAllocationRule(loanTransaction)) {
             super.processCreditTransaction(loanTransaction, 
ctx.getOverpaymentHolder(), ctx.getCurrency(), ctx.getInstallments());
         } else {
-            log.debug("Processing credit transaction with custom credit 
allocation rules");
-
             loanTransaction.resetDerivedComponents();
-            List<LoanTransactionToRepaymentScheduleMapping> 
transactionMappings = new ArrayList<>();
             final Comparator<LoanRepaymentScheduleInstallment> byDate = 
Comparator.comparing(LoanRepaymentScheduleInstallment::getDueDate);
             ctx.getInstallments().sort(byDate);
             final Money zeroMoney = Money.zero(ctx.getCurrency());
             Money transactionAmount = 
loanTransaction.getAmount(ctx.getCurrency());
-            Money amountToDistribute = MathUtil
-                    
.negativeToZero(loanTransaction.getAmount(ctx.getCurrency()).minus(ctx.getOverpaymentHolder().getMoneyObject()));
-            Money repaidAmount = 
MathUtil.negativeToZero(transactionAmount.minus(amountToDistribute));
-            loanTransaction.setOverPayments(repaidAmount);
-            
ctx.getOverpaymentHolder().setMoneyObject(ctx.getOverpaymentHolder().getMoneyObject().minus(repaidAmount));
+            Money totalOverpaid = ctx.getOverpaymentHolder().getMoneyObject();
+            Money amountToDistribute = 
MathUtil.negativeToZero(loanTransaction.getAmount(ctx.getCurrency()).minus(totalOverpaid));
+            Money overpaymentAmount = 
MathUtil.negativeToZero(transactionAmount.minus(amountToDistribute));
+            loanTransaction.setOverPayments(overpaymentAmount);
 
-            if (amountToDistribute.isGreaterThanZero()) {
+            if (transactionAmount.isGreaterThanZero()) {

Review Comment:
   This seems wrong. If the overpayment amount was higher than the Chargeback, 
we are not adding the transaction amount to the repayment schedule



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to