Correct and simplify calculation

In the test case with allowance the VAT amount was calculated 1 ct too high.
This commit is contained in:
Sebastian Sieber
2020-11-17 18:07:16 +01:00
parent 5a5f8272b2
commit 4ba099c86d
2 changed files with 63 additions and 7 deletions

View File

@@ -7,7 +7,6 @@ import java.math.BigDecimal;
* @see TransactionCalculator
*/
public class LineCalculator {
private BigDecimal totalGross;
private BigDecimal price;
private BigDecimal priceGross;
private BigDecimal itemTotalNetAmount;
@@ -27,16 +26,12 @@ public class LineCalculator {
addCharge(charge.getTotalAmount(currentItem));
}
}
BigDecimal multiplicator = currentItem.getProduct().getVATPercent().divide(new BigDecimal(100))
.add(new BigDecimal(1));
BigDecimal multiplicator = currentItem.getProduct().getVATPercent().divide(BigDecimal.valueOf(100));
priceGross = currentItem.getPrice(); // see https://github.com/ZUGFeRD/mustangproject/issues/159
price = priceGross.subtract(allowance).add(charge);
totalGross = currentItem.getQuantity().multiply(getPrice()).divide(currentItem.getBasisQuantity())
.multiply(multiplicator);
itemTotalNetAmount = currentItem.getQuantity().multiply(getPrice()).divide(currentItem.getBasisQuantity())
.setScale(2, BigDecimal.ROUND_HALF_UP);
itemTotalVATAmount = totalGross.subtract(itemTotalNetAmount);
itemTotalVATAmount = itemTotalNetAmount.multiply(multiplicator);
}