killbill-memoizeit

invoice: hide item adjustments of zero on invoice Don't display

9/24/2012 3:56:23 PM

Details

diff --git a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
index b6edb8d..34ceac6 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
@@ -101,10 +101,11 @@ public class DefaultInvoiceFormatter implements InvoiceFormatter {
                 invoiceItems.add(item);
             }
         }
-        if (mergedCBAItem != null) {
+        // Don't display adjustments of zero
+        if (mergedCBAItem != null && mergedCBAItem.getAmount().compareTo(BigDecimal.ZERO) != 0) {
             invoiceItems.add(mergedCBAItem);
         }
-        if (mergedInvoiceAdjustment != null) {
+        if (mergedInvoiceAdjustment != null && mergedInvoiceAdjustment.getAmount().compareTo(BigDecimal.ZERO) != 0) {
             invoiceItems.add(mergedInvoiceAdjustment);
         }
 
diff --git a/invoice/src/test/java/com/ning/billing/invoice/template/formatters/TestDefaultInvoiceFormatter.java b/invoice/src/test/java/com/ning/billing/invoice/template/formatters/TestDefaultInvoiceFormatter.java
index 0f12045..b1a6db5 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/template/formatters/TestDefaultInvoiceFormatter.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/template/formatters/TestDefaultInvoiceFormatter.java
@@ -56,6 +56,39 @@ public class TestDefaultInvoiceFormatter extends InvoiceTestSuite {
     }
 
     @Test(groups = "fast")
+    public void testIgnoreZeroAdjustments() throws Exception {
+        // Scenario: single item with payment
+        // * $10 item
+        // * $-10 CBA
+        // * $10 CBA
+        final FixedPriceInvoiceItem fixedItem = new FixedPriceInvoiceItem(UUID.randomUUID(), UUID.randomUUID(), null, null,
+                                                                          UUID.randomUUID().toString(), UUID.randomUUID().toString(),
+                                                                          new LocalDate(), BigDecimal.TEN, Currency.USD);
+        final CreditBalanceAdjInvoiceItem creditBalanceAdjInvoiceItem = new CreditBalanceAdjInvoiceItem(fixedItem.getInvoiceId(), fixedItem.getAccountId(),
+                                                                                                        fixedItem.getStartDate(), fixedItem.getAmount(),
+                                                                                                        fixedItem.getCurrency());
+        final CreditBalanceAdjInvoiceItem creditBalanceAdjInvoiceItem2 = new CreditBalanceAdjInvoiceItem(fixedItem.getInvoiceId(), fixedItem.getAccountId(),
+                                                                                                         fixedItem.getStartDate(), fixedItem.getAmount().negate(),
+                                                                                                         fixedItem.getCurrency());
+        final Invoice invoice = new DefaultInvoice(fixedItem.getInvoiceId(), fixedItem.getAccountId(), null,
+                                                   new LocalDate(), new LocalDate(), Currency.USD, false);
+        invoice.addInvoiceItem(fixedItem);
+        invoice.addInvoiceItem(creditBalanceAdjInvoiceItem);
+        invoice.addInvoiceItem(creditBalanceAdjInvoiceItem2);
+
+        // Check the scenario
+        Assert.assertEquals(invoice.getBalance().doubleValue(), 10.00);
+        Assert.assertEquals(invoice.getCBAAmount().doubleValue(), 0.00);
+
+        // Verify the merge
+        final InvoiceFormatter formatter = new DefaultInvoiceFormatter(config, invoice, Locale.US);
+        final List<InvoiceItem> invoiceItems = formatter.getInvoiceItems();
+        Assert.assertEquals(invoiceItems.size(), 1);
+        Assert.assertEquals(invoiceItems.get(0).getInvoiceItemType(), InvoiceItemType.FIXED);
+        Assert.assertEquals(invoiceItems.get(0).getAmount().doubleValue(), 10.00);
+    }
+
+    @Test(groups = "fast")
     public void testMergeItems() throws Exception {
         // Scenario: single item with payment
         // * $10 item