Remove LineCalculator.getItemTotalGrossAmount() to prevent confusion
This commit is contained in:
@@ -123,7 +123,7 @@ public class TransactionCalculator implements IAbsoluteValueProvider {
|
|||||||
BigDecimal res = BigDecimal.ZERO;
|
BigDecimal res = BigDecimal.ZERO;
|
||||||
for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) {
|
for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) {
|
||||||
LineCalculator lc = new LineCalculator(currentItem);
|
LineCalculator lc = new LineCalculator(currentItem);
|
||||||
res = res.add(lc.getItemTotalGrossAmount());
|
res = res.add(lc.getItemTotalNetAmount());
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,61 +1,63 @@
|
|||||||
package org.mustangproject.ZUGFeRD;
|
package org.mustangproject.ZUGFeRD;
|
||||||
|
|
||||||
|
import static java.math.BigDecimal.TEN;
|
||||||
|
import static java.math.BigDecimal.valueOf;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
public class LineCalculatorTest {
|
public class LineCalculatorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLineCalculator() {
|
public void testLineCalculator_simpleAmounts_resultInValidVATAmount() {
|
||||||
final IZUGFeRDExportableProduct product = new IZUGFeRDExportableProductImpl().setVatPercent(BigDecimal.valueOf(16));
|
final IZUGFeRDExportableProduct product = new IZUGFeRDExportableProductImpl().setVatPercent(valueOf(16));
|
||||||
final IZUGFeRDExportableItem currentItem = new IZUGFeRDExportableItemImpl().setPrice(BigDecimal.valueOf(78.35))
|
final IZUGFeRDExportableItem currentItem = new IZUGFeRDExportableItemImpl().setPrice(valueOf(100))
|
||||||
.setQuantity(BigDecimal.valueOf(11))
|
.setQuantity(TEN)
|
||||||
.setProduct(product);
|
.setProduct(product);
|
||||||
|
|
||||||
final LineCalculator calculator = new LineCalculator(currentItem);
|
final LineCalculator calculator = new LineCalculator(currentItem);
|
||||||
|
|
||||||
assertEquals(BigDecimal.valueOf(78.35), calculator.getPrice().stripTrailingZeros());
|
assertEquals(valueOf(100).stripTrailingZeros(), calculator.getPrice().stripTrailingZeros());
|
||||||
assertEquals(BigDecimal.valueOf(861.85), calculator.getItemTotalNetAmount().stripTrailingZeros());
|
assertEquals(valueOf(1000).stripTrailingZeros(), calculator.getItemTotalNetAmount().stripTrailingZeros());
|
||||||
assertEquals(BigDecimal.valueOf(861.85), calculator.getItemTotalGrossAmount().stripTrailingZeros());
|
assertEquals(valueOf(160).stripTrailingZeros(), calculator.getItemTotalVATAmount().stripTrailingZeros());
|
||||||
assertEquals(BigDecimal.valueOf(137.896), calculator.getItemTotalVATAmount().stripTrailingZeros());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLineCalculatorInclusiveAllowance() {
|
public void testLineCalculatorInclusiveAllowance() {
|
||||||
final IZUGFeRDExportableProduct product = new IZUGFeRDExportableProductImpl().setVatPercent(BigDecimal.valueOf(16));
|
//This test failed with previous implementation. By rounding the totalVATAmount to 2 decimal places the result became wrong
|
||||||
final IZUGFeRDAllowanceCharge allowance = new IZUGFeRDAllowanceChargeImpl()
|
final IZUGFeRDExportableProduct product = new IZUGFeRDExportableProductImpl().setVatPercent(valueOf(16));
|
||||||
.setTotalAmount(BigDecimal.valueOf(14.8730));
|
// 10 % discount on each item
|
||||||
final IZUGFeRDExportableItem currentItem = new IZUGFeRDExportableItemImpl().setPrice(BigDecimal.valueOf(148.73))
|
final IZUGFeRDAllowanceCharge allowance = new IZUGFeRDAllowanceChargeImpl().setTotalAmount(valueOf(14.8730));
|
||||||
.setQuantity(BigDecimal.valueOf(12))
|
|
||||||
|
final IZUGFeRDExportableItem currentItem = new IZUGFeRDExportableItemImpl().setPrice(valueOf(148.73))
|
||||||
|
.setQuantity(valueOf(12))
|
||||||
.setItemAllowances(new IZUGFeRDAllowanceCharge[] { allowance })
|
.setItemAllowances(new IZUGFeRDAllowanceCharge[] { allowance })
|
||||||
.setProduct(product);
|
.setProduct(product);
|
||||||
|
|
||||||
final LineCalculator calculator = new LineCalculator(currentItem);
|
final LineCalculator calculator = new LineCalculator(currentItem);
|
||||||
|
|
||||||
assertEquals(BigDecimal.valueOf(133.857), calculator.getPrice().stripTrailingZeros());
|
assertEquals(valueOf(133.857).stripTrailingZeros(), calculator.getPrice().stripTrailingZeros());
|
||||||
assertEquals(BigDecimal.valueOf(1606.28), calculator.getItemTotalNetAmount().stripTrailingZeros());
|
assertEquals(valueOf(1606.28).stripTrailingZeros(), calculator.getItemTotalNetAmount().stripTrailingZeros());
|
||||||
assertEquals(BigDecimal.valueOf(1606.28), calculator.getItemTotalGrossAmount().stripTrailingZeros());
|
assertEquals(valueOf(257.0048).stripTrailingZeros(), calculator.getItemTotalVATAmount().stripTrailingZeros());
|
||||||
assertEquals(BigDecimal.valueOf(257.0048), calculator.getItemTotalVATAmount().stripTrailingZeros());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLineCalculatorInclusiveAllowanceAndCharge() {
|
public void testLineCalculatorInclusiveAllowanceAndCharge() {
|
||||||
final IZUGFeRDExportableProduct product = new IZUGFeRDExportableProductImpl().setVatPercent(BigDecimal.valueOf(16));
|
final IZUGFeRDExportableProduct product = new IZUGFeRDExportableProductImpl().setVatPercent(valueOf(16));
|
||||||
final IZUGFeRDAllowanceCharge allowance = new IZUGFeRDAllowanceChargeImpl()
|
// 10 % discount on each item
|
||||||
.setTotalAmount(BigDecimal.valueOf(14.8730));
|
final IZUGFeRDAllowanceCharge allowance = new IZUGFeRDAllowanceChargeImpl().setTotalAmount(valueOf(14.873));
|
||||||
final IZUGFeRDAllowanceCharge charge = new IZUGFeRDAllowanceChargeImpl()
|
// 20 % charge
|
||||||
.setTotalAmount(BigDecimal.valueOf(14.8730));
|
final IZUGFeRDAllowanceCharge charge = new IZUGFeRDAllowanceChargeImpl().setTotalAmount(valueOf(29.746));
|
||||||
final IZUGFeRDExportableItem currentItem = new IZUGFeRDExportableItemImpl().setPrice(BigDecimal.valueOf(148.73))
|
final IZUGFeRDExportableItem currentItem = new IZUGFeRDExportableItemImpl().setPrice(valueOf(148.73))
|
||||||
.setQuantity(BigDecimal.valueOf(12))
|
.setQuantity(valueOf(12))
|
||||||
.setItemAllowances(new IZUGFeRDAllowanceCharge[] { allowance })
|
.setItemAllowances(new IZUGFeRDAllowanceCharge[] { allowance })
|
||||||
.setItemCharges(new IZUGFeRDAllowanceCharge[] { charge })
|
.setItemCharges(new IZUGFeRDAllowanceCharge[] { charge })
|
||||||
.setProduct(product);
|
.setProduct(product);
|
||||||
|
|
||||||
final LineCalculator calculator = new LineCalculator(currentItem);
|
final LineCalculator calculator = new LineCalculator(currentItem);
|
||||||
|
|
||||||
assertEquals(BigDecimal.valueOf(148.73), calculator.getPrice().stripTrailingZeros());
|
assertEquals(valueOf(163.603).stripTrailingZeros(), calculator.getPrice().stripTrailingZeros());
|
||||||
assertEquals(BigDecimal.valueOf(1784.76), calculator.getItemTotalNetAmount().stripTrailingZeros());
|
assertEquals(valueOf(1963.24).stripTrailingZeros(), calculator.getItemTotalNetAmount().stripTrailingZeros());
|
||||||
assertEquals(BigDecimal.valueOf(1784.76), calculator.getItemTotalGrossAmount().stripTrailingZeros());
|
assertEquals(valueOf(314.1184).stripTrailingZeros(), calculator.getItemTotalVATAmount().stripTrailingZeros());
|
||||||
assertEquals(BigDecimal.valueOf(285.5616), calculator.getItemTotalVATAmount().stripTrailingZeros());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user