From 7259064aa49315043844c5474bf26afda88b7af2 Mon Sep 17 00:00:00 2001 From: Vusumuzi Khoza Date: Tue, 2 Dec 2025 23:33:33 +0200 Subject: [PATCH] changing to banker's rounding --- .../domain/workflows/handlers/CalculateChargesHandler.java | 6 +++--- .../workflows/handlers/erp/PurchaseInvoiceHandler.java | 4 ++-- .../workflows/handlers/erp/PurchasePaymentEntryHandler.java | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/zw/qantra/tm/domain/workflows/handlers/CalculateChargesHandler.java b/src/main/java/zw/qantra/tm/domain/workflows/handlers/CalculateChargesHandler.java index 76ff75a..41f2520 100644 --- a/src/main/java/zw/qantra/tm/domain/workflows/handlers/CalculateChargesHandler.java +++ b/src/main/java/zw/qantra/tm/domain/workflows/handlers/CalculateChargesHandler.java @@ -98,14 +98,14 @@ public class CalculateChargesHandler implements HandlerInterface { chargeAmount = charge.getFlat(); }else { BigDecimal fraction = charge.getPercentageRate().divide( - new BigDecimal(100), 4, RoundingMode.CEILING); + new BigDecimal(100), 4, RoundingMode.HALF_EVEN); chargeAmount = amountToCharge.multiply(fraction) - .setScale(2, RoundingMode.CEILING); + .setScale(2, RoundingMode.HALF_EVEN); // if it's a composite charge then add the flat component as well if(charge.isComposite()) { chargeAmount = chargeAmount.add(charge.getFlat()) - .setScale(2, RoundingMode.CEILING); + .setScale(2, RoundingMode.HALF_EVEN); } } diff --git a/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchaseInvoiceHandler.java b/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchaseInvoiceHandler.java index 04d605b..814b6eb 100644 --- a/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchaseInvoiceHandler.java +++ b/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchaseInvoiceHandler.java @@ -119,9 +119,9 @@ public class PurchaseInvoiceHandler implements HandlerInterface { Provider provider = providerService.getProviderRepository() .findByClientId(transaction.getBillClientId()); BigDecimal commissionPercentage = BigDecimal.valueOf(provider.getPercentageCommission()) - .divide(BigDecimal.valueOf(100), 2, RoundingMode.CEILING); + .divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_EVEN); BigDecimal commission = transaction.getAmount().multiply(commissionPercentage) - .setScale(2, RoundingMode.CEILING); + .setScale(2, RoundingMode.HALF_EVEN); BigDecimal amount = transaction.getAmount().subtract(commission); PurchaseTaxDto purchaseTaxDto = PurchaseTaxDto.builder() diff --git a/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchasePaymentEntryHandler.java b/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchasePaymentEntryHandler.java index bf066e9..e9266e8 100644 --- a/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchasePaymentEntryHandler.java +++ b/src/main/java/zw/qantra/tm/domain/workflows/handlers/erp/PurchasePaymentEntryHandler.java @@ -110,9 +110,9 @@ public class PurchasePaymentEntryHandler implements HandlerInterface { Provider provider = providerService.getProviderRepository() .findByClientId(transaction.getBillClientId()); BigDecimal commissionPercentage = BigDecimal.valueOf(provider.getPercentageCommission()) - .divide(BigDecimal.valueOf(100), 2, RoundingMode.CEILING); + .divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_EVEN); BigDecimal commission = transaction.getAmount().multiply(commissionPercentage) - .setScale(2, RoundingMode.CEILING); + .setScale(2, RoundingMode.HALF_EVEN); BigDecimal amount = transaction.getAmount().subtract(commission); PaymentReferenceDto paymentReferenceDto = PaymentReferenceDto.builder()