killbill-uncached

Details

diff --git a/analytics/src/main/java/com/ning/billing/analytics/model/BusinessInvoice.java b/analytics/src/main/java/com/ning/billing/analytics/model/BusinessInvoice.java
index 7940387..beab7d6 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/model/BusinessInvoice.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/model/BusinessInvoice.java
@@ -58,7 +58,8 @@ public class BusinessInvoice {
     }
 
     public BusinessInvoice(final String accountKey, final Invoice invoice) {
-        this(accountKey, invoice.getAmountCharged(), invoice.getAmountCredited(), invoice.getPaidAmount(), invoice.getBalance(),
+        // STEPH this is probably not what we want (CBA versus credit)
+        this(accountKey, invoice.getChargedAmount(), invoice.getCBAAmount(), invoice.getPaidAmount(), invoice.getBalance(),
              new DateTime(DateTimeZone.UTC), invoice.getCurrency(), invoice.getInvoiceDate(), invoice.getId(), invoice.getTargetDate(),
              new DateTime(DateTimeZone.UTC));
     }
diff --git a/api/src/main/java/com/ning/billing/invoice/api/Invoice.java b/api/src/main/java/com/ning/billing/invoice/api/Invoice.java
index e938e89..460f962 100644
--- a/api/src/main/java/com/ning/billing/invoice/api/Invoice.java
+++ b/api/src/main/java/com/ning/billing/invoice/api/Invoice.java
@@ -62,7 +62,11 @@ public interface Invoice extends Entity {
 
     BigDecimal getCBAAmount();
 
-    BigDecimal getAdjustedAmount();
+    BigDecimal getTotalAdjAmount();
+
+    BigDecimal getCreditAdjAmount();
+
+    BigDecimal getRefundAdjAmount();
 
     BigDecimal getBalance();
 
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoice.java b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoice.java
index 6a353f1..6fd4af2 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoice.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoice.java
@@ -183,13 +183,22 @@ public class DefaultInvoice extends EntityBase implements Invoice {
     }
 
     @Override
-    public BigDecimal getAdjustedAmount() {
-        return invoiceItems.getAdjustedAmount();
+    public BigDecimal getTotalAdjAmount() {
+        return invoiceItems.getTotalAdjAmount();
     }
 
     @Override
+    public BigDecimal getCreditAdjAmount() {
+        return invoiceItems.getCreditAdjAmount();
+    }
+
+    @Override
+    public BigDecimal getRefundAdjAmount() {
+        return invoiceItems.getRefundAdjAmount();
+    }
+    @Override
     public BigDecimal getBalance() {
-        final BigDecimal balance = getChargedAmount().add(getAdjustedAmount()).subtract(getPaidAmount()).subtract(getCBAAmount());
+        final BigDecimal balance = getChargedAmount().add(getTotalAdjAmount()).subtract(getPaidAmount()).subtract(getCBAAmount());
         return balance;
     }
 
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemList.java b/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemList.java
index 2ef5222..3b495a4 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemList.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemList.java
@@ -40,10 +40,18 @@ public class InvoiceItemList extends ArrayList<InvoiceItem> {
         this.addAll(invoiceItems);
     }
 
-    public BigDecimal getAdjustedAmount() {
+    public BigDecimal getTotalAdjAmount() {
         return getAmoutForItems(InvoiceItemType.CREDIT_ADJ, InvoiceItemType.REFUND_ADJ);
     }
 
+    public BigDecimal getCreditAdjAmount() {
+        return getAmoutForItems(InvoiceItemType.CREDIT_ADJ);
+    }
+
+    public BigDecimal getRefundAdjAmount() {
+        return getAmoutForItems(InvoiceItemType.REFUND_ADJ);
+    }
+
     public BigDecimal getChargedAmount() {
         return getAmoutForItems(InvoiceItemType.RECURRING, InvoiceItemType.FIXED, InvoiceItemType.REPAIR_ADJ);
     }
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 94da33c..55a2e8f 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
@@ -130,10 +130,6 @@ public class DefaultInvoiceFormatter implements InvoiceFormatter {
         return invoice.getCBAAmount();
     }
 
-    @Override
-    public BigDecimal getAdjustedAmount() {
-        return invoice.getAdjustedAmount();
-    }
 
     @Override
     public BigDecimal getBalance() {
@@ -202,4 +198,19 @@ public class DefaultInvoiceFormatter implements InvoiceFormatter {
     protected Invoice getInvoice() {
         return invoice;
     }
+
+    @Override
+    public BigDecimal getTotalAdjAmount() {
+        return invoice.getTotalAdjAmount();
+    }
+
+    @Override
+    public BigDecimal getCreditAdjAmount() {
+        return invoice.getCreditAdjAmount();
+    }
+
+    @Override
+    public BigDecimal getRefundAdjAmount() {
+        return invoice.getRefundAdjAmount();
+    }
 }
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
index 9af0ce6..789ccc3 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
@@ -93,7 +93,9 @@ public class AccountTimelineJson {
         this.invoices = new LinkedList<InvoiceJsonWithBundleKeys>();
         for (final Invoice cur : invoices) {
             this.invoices.add(new InvoiceJsonWithBundleKeys(cur.getPaidAmount(),
-                                                            cur.getAmountCredited(),
+                                                            cur.getCBAAmount(),
+                                                            cur.getCreditAdjAmount(),
+                                                            cur.getRefundAdjAmount(),
                                                             cur.getId().toString(),
                                                             cur.getInvoiceDate(),
                                                             cur.getTargetDate(),
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonSimple.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonSimple.java
index 2cb2447..670c0c6 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonSimple.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonSimple.java
@@ -32,25 +32,31 @@ public class InvoiceJsonSimple {
     private final DateTime invoiceDate;
     private final DateTime targetDate;
     private final String invoiceNumber;
-    private final BigDecimal credit;
     private final BigDecimal balance;
+    private final BigDecimal creditAdj;
+    private final BigDecimal refundAdj;
+    private final BigDecimal cba;
     private final String accountId;
 
     public InvoiceJsonSimple() {
-        this(BigDecimal.ZERO, BigDecimal.ZERO, null, null, null, null, BigDecimal.ZERO, null);
+        this(BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO , BigDecimal.ZERO, null, null, null, null, BigDecimal.ZERO, null);
     }
 
     @JsonCreator
     public InvoiceJsonSimple(@JsonProperty("amount") final BigDecimal amount,
-                             @JsonProperty("credit") final BigDecimal credit,
-                             @JsonProperty("invoiceId") @Nullable final String invoiceId,
-                             @JsonProperty("invoiceDate") @Nullable final DateTime invoiceDate,
-                             @JsonProperty("targetDate") @Nullable final DateTime targetDate,
-                             @JsonProperty("invoiceNumber") @Nullable final String invoiceNumber,
-                             @JsonProperty("balance") final BigDecimal balance,
-                             @JsonProperty("accountId") @Nullable final String accountId) {
+            @JsonProperty("cba") final BigDecimal cba,
+            @JsonProperty("creditAdj") final BigDecimal creditAdj,
+            @JsonProperty("refundAdj") final BigDecimal refundAdj,
+            @JsonProperty("invoiceId") @Nullable final String invoiceId,
+            @JsonProperty("invoiceDate") @Nullable final DateTime invoiceDate,
+            @JsonProperty("targetDate") @Nullable final DateTime targetDate,
+            @JsonProperty("invoiceNumber") @Nullable final String invoiceNumber,
+            @JsonProperty("balance") final BigDecimal balance,
+            @JsonProperty("accountId") @Nullable final String accountId) {
         this.amount = amount;
-        this.credit = credit;
+        this.cba = cba;
+        this.creditAdj = creditAdj;
+        this.refundAdj = refundAdj;
         this.invoiceId = invoiceId;
         this.invoiceDate = invoiceDate;
         this.targetDate = targetDate;
@@ -60,16 +66,24 @@ public class InvoiceJsonSimple {
     }
 
     public InvoiceJsonSimple(final Invoice input) {
-        this(input.getAmountCharged(), input.getAmountCredited(), input.getId().toString(), input.getInvoiceDate(),
-             input.getTargetDate(), String.valueOf(input.getInvoiceNumber()), input.getBalance(), input.getAccountId().toString());
+        this(input.getChargedAmount(), input.getCBAAmount(), input.getCreditAdjAmount(), input.getRefundAdjAmount(), input.getId().toString(), input.getInvoiceDate(),
+                input.getTargetDate(), String.valueOf(input.getInvoiceNumber()), input.getBalance(), input.getAccountId().toString());
     }
 
     public BigDecimal getAmount() {
         return amount;
     }
 
-    public BigDecimal getCredit() {
-        return credit;
+    public BigDecimal getCBA() {
+        return cba;
+    }
+
+    public BigDecimal getCreditAdj() {
+        return creditAdj;
+    }
+
+    public BigDecimal getRefundAdj() {
+        return refundAdj;
     }
 
     public String getInvoiceId() {
@@ -118,8 +132,16 @@ public class InvoiceJsonSimple {
                 (balance != null && that.balance != null && balance.compareTo(that.balance) == 0))) {
             return false;
         }
-        if (!((credit == null && that.credit == null) ||
-                (credit != null && that.credit != null && credit.compareTo(that.credit) == 0))) {
+        if (!((cba == null && that.cba == null) ||
+                (cba != null && that.cba != null && cba.compareTo(that.cba) == 0))) {
+            return false;
+        }
+        if (!((creditAdj == null && that.creditAdj == null) ||
+                (creditAdj != null && that.creditAdj != null && creditAdj.compareTo(that.creditAdj) == 0))) {
+            return false;
+        }
+        if (!((refundAdj == null && that.refundAdj == null) ||
+                (refundAdj != null && that.refundAdj != null && refundAdj.compareTo(that.refundAdj) == 0))) {
             return false;
         }
         if (!((invoiceDate == null && that.invoiceDate == null) ||
@@ -143,7 +165,9 @@ public class InvoiceJsonSimple {
     @Override
     public int hashCode() {
         int result = amount != null ? amount.hashCode() : 0;
-        result = 31 * result + (credit != null ? credit.hashCode() : 0);
+        result = 31 * result + (cba != null ? cba.hashCode() : 0);
+        result = 31 * result + (creditAdj != null ? creditAdj.hashCode() : 0);
+        result = 31 * result + (refundAdj != null ? refundAdj.hashCode() : 0);
         result = 31 * result + (invoiceId != null ? invoiceId.hashCode() : 0);
         result = 31 * result + (invoiceDate != null ? invoiceDate.hashCode() : 0);
         result = 31 * result + (targetDate != null ? targetDate.hashCode() : 0);
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithBundleKeys.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithBundleKeys.java
index 67d5e6a..963e78b 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithBundleKeys.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithBundleKeys.java
@@ -34,15 +34,17 @@ public class InvoiceJsonWithBundleKeys extends InvoiceJsonSimple {
 
     @JsonCreator
     public InvoiceJsonWithBundleKeys(@JsonProperty("amount") final BigDecimal amount,
-                                     @JsonProperty("credit") final BigDecimal credit,
-                                     @JsonProperty("invoiceId") final String invoiceId,
-                                     @JsonProperty("invoiceDate") final DateTime invoiceDate,
-                                     @JsonProperty("targetDate") final DateTime targetDate,
-                                     @JsonProperty("invoiceNumber") final String invoiceNumber,
-                                     @JsonProperty("balance") final BigDecimal balance,
-                                     @JsonProperty("accountId") final String accountId,
-                                     @JsonProperty("externalBundleKeys") final String bundleKeys) {
-        super(amount, credit, invoiceId, invoiceDate, targetDate, invoiceNumber, balance, accountId);
+            @JsonProperty("cba") final BigDecimal cba,
+            @JsonProperty("creditAdj") final BigDecimal creditAdj,
+            @JsonProperty("refundAdj") final BigDecimal refundAdj,
+            @JsonProperty("invoiceId") final String invoiceId,
+            @JsonProperty("invoiceDate") final DateTime invoiceDate,
+            @JsonProperty("targetDate") final DateTime targetDate,
+            @JsonProperty("invoiceNumber") final String invoiceNumber,
+            @JsonProperty("balance") final BigDecimal balance,
+            @JsonProperty("accountId") final String accountId,
+            @JsonProperty("externalBundleKeys") final String bundleKeys) {
+        super(amount, cba, creditAdj, refundAdj, invoiceId, invoiceDate, targetDate, invoiceNumber, balance, accountId);
         this.bundleKeys = bundleKeys;
     }
 
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithItems.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithItems.java
index 6c5445e..ab26af2 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithItems.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithItems.java
@@ -33,15 +33,17 @@ public class InvoiceJsonWithItems extends InvoiceJsonSimple {
 
     @JsonCreator
     public InvoiceJsonWithItems(@JsonProperty("amount") final BigDecimal amount,
-                                @JsonProperty("credit") final BigDecimal credit,
-                                @JsonProperty("invoiceId") final String invoiceId,
-                                @JsonProperty("invoiceDate") final DateTime invoiceDate,
-                                @JsonProperty("targetDate") final DateTime targetDate,
-                                @JsonProperty("invoiceNumber") final String invoiceNumber,
-                                @JsonProperty("balance") final BigDecimal balance,
-                                @JsonProperty("accountId") final String accountId,
-                                @JsonProperty("items") final List<InvoiceItemJsonSimple> items) {
-        super(amount, credit, invoiceId, invoiceDate, targetDate, invoiceNumber, balance, accountId);
+            @JsonProperty("cba") final BigDecimal cba,
+            @JsonProperty("creditAdj") final BigDecimal creditAdj,
+            @JsonProperty("refundAdj") final BigDecimal refundAdj,
+            @JsonProperty("invoiceId") final String invoiceId,
+            @JsonProperty("invoiceDate") final DateTime invoiceDate,
+            @JsonProperty("targetDate") final DateTime targetDate,
+            @JsonProperty("invoiceNumber") final String invoiceNumber,
+            @JsonProperty("balance") final BigDecimal balance,
+            @JsonProperty("accountId") final String accountId,
+            @JsonProperty("items") final List<InvoiceItemJsonSimple> items) {
+        super(amount, cba, creditAdj, refundAdj, invoiceId, invoiceDate, targetDate, invoiceNumber, balance, accountId);
         this.items = new ArrayList<InvoiceItemJsonSimple>(items);
     }
 
diff --git a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestBundleTimelineJson.java b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestBundleTimelineJson.java
index 8e6f306..0331473 100644
--- a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestBundleTimelineJson.java
+++ b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestBundleTimelineJson.java
@@ -94,7 +94,9 @@ public class TestBundleTimelineJson {
                 "\"currency\":\"" + payment.getCurrency() + "\"," +
                 "\"status\":\"" + payment.getStatus() + "\"}]," +
                 "\"invoices\":[{\"amount\":" + invoice.getAmount() + "," +
-                "\"credit\":" + invoice.getCredit() + "," +
+                "\"cba\":" + invoice.getCBA() + "," +
+                "\"creditAdj\":" + invoice.getCreditAdj() + "," +
+                "\"refundAdj\":" + invoice.getRefundAdj() + "," +
                 "\"invoiceId\":\"" + invoice.getInvoiceId() + "\"," +
                 "\"invoiceDate\":\"" + invoice.getInvoiceDate().toDateTimeISO().toString() + "\"," +
                 "\"targetDate\":\"" + invoice.getTargetDate() + "\"," +
@@ -134,13 +136,15 @@ public class TestBundleTimelineJson {
         final UUID accountId = UUID.randomUUID();
         final UUID invoiceId = UUID.randomUUID();
         final BigDecimal invoiceAmount = BigDecimal.TEN;
-        final BigDecimal credit = BigDecimal.ONE;
+        final BigDecimal cba = BigDecimal.ONE;
+        final BigDecimal creditAdj = BigDecimal.ONE;
+        final BigDecimal refundAdj = BigDecimal.ONE;
         final DateTime invoiceDate = DefaultClock.toUTCDateTime(new DateTime(DateTimeZone.UTC));
         final DateTime targetDate = DefaultClock.toUTCDateTime(new DateTime(DateTimeZone.UTC));
         final String invoiceNumber = UUID.randomUUID().toString();
         final BigDecimal balance = BigDecimal.ZERO;
 
-        return new InvoiceJsonSimple(invoiceAmount, credit, invoiceId.toString(), invoiceDate,
+        return new InvoiceJsonSimple(invoiceAmount, cba, creditAdj, refundAdj, invoiceId.toString(), invoiceDate,
                                      targetDate, invoiceNumber, balance, accountId.toString());
     }
 
diff --git a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonSimple.java b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonSimple.java
index 64f0ac0..bd5ab0d 100644
--- a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonSimple.java
+++ b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonSimple.java
@@ -41,17 +41,21 @@ public class TestInvoiceJsonSimple {
     @Test(groups = "fast")
     public void testJson() throws Exception {
         final BigDecimal amount = BigDecimal.TEN;
-        final BigDecimal credit = BigDecimal.ONE;
+        final BigDecimal cba = BigDecimal.ONE;
+        final BigDecimal creditAdj = BigDecimal.ONE;
+        final BigDecimal refundAdj = BigDecimal.ONE;
         final String invoiceId = UUID.randomUUID().toString();
         final DateTime invoiceDate = new DateTime(DateTimeZone.UTC);
         final DateTime targetDate = new DateTime(DateTimeZone.UTC);
         final String invoiceNumber = UUID.randomUUID().toString();
         final BigDecimal balance = BigDecimal.ZERO;
         final String accountId = UUID.randomUUID().toString();
-        final InvoiceJsonSimple invoiceJsonSimple = new InvoiceJsonSimple(amount, credit, invoiceId, invoiceDate,
+        final InvoiceJsonSimple invoiceJsonSimple = new InvoiceJsonSimple(amount, cba, creditAdj, refundAdj, invoiceId, invoiceDate,
                                                                           targetDate, invoiceNumber, balance, accountId);
         Assert.assertEquals(invoiceJsonSimple.getAmount(), amount);
-        Assert.assertEquals(invoiceJsonSimple.getCredit(), credit);
+        Assert.assertEquals(invoiceJsonSimple.getCBA(), cba);
+        Assert.assertEquals(invoiceJsonSimple.getCreditAdj(), creditAdj);
+        Assert.assertEquals(invoiceJsonSimple.getRefundAdj(), refundAdj);
         Assert.assertEquals(invoiceJsonSimple.getInvoiceId(), invoiceId);
         Assert.assertEquals(invoiceJsonSimple.getInvoiceDate(), invoiceDate);
         Assert.assertEquals(invoiceJsonSimple.getTargetDate(), targetDate);
@@ -61,7 +65,9 @@ public class TestInvoiceJsonSimple {
 
         final String asJson = mapper.writeValueAsString(invoiceJsonSimple);
         Assert.assertEquals(asJson, "{\"amount\":" + invoiceJsonSimple.getAmount().toString() + "," +
-                "\"credit\":" + invoiceJsonSimple.getCredit().toString() + "," +
+                "\"cba\":" + invoiceJsonSimple.getCBA().toString() + "," +
+                "\"creditAdj\":" + invoiceJsonSimple.getCreditAdj().toString() + "," +
+                "\"refundAdj\":" + invoiceJsonSimple.getRefundAdj().toString() + "," +
                 "\"invoiceId\":\"" + invoiceJsonSimple.getInvoiceId() + "\"," +
                 "\"invoiceDate\":\"" + invoiceJsonSimple.getInvoiceDate().toDateTimeISO().toString() + "\"," +
                 "\"targetDate\":\"" + invoiceJsonSimple.getTargetDate().toDateTimeISO().toString() + "\"," +
@@ -76,8 +82,10 @@ public class TestInvoiceJsonSimple {
     @Test(groups = "fast")
     public void testFromInvoice() throws Exception {
         final Invoice invoice = Mockito.mock(Invoice.class);
-        Mockito.when(invoice.getAmountCharged()).thenReturn(BigDecimal.TEN);
-        Mockito.when(invoice.getAmountCredited()).thenReturn(BigDecimal.ONE);
+        Mockito.when(invoice.getChargedAmount()).thenReturn(BigDecimal.TEN);
+        Mockito.when(invoice.getCBAAmount()).thenReturn(BigDecimal.ONE);
+        Mockito.when(invoice.getCreditAdjAmount()).thenReturn(BigDecimal.ONE);
+        Mockito.when(invoice.getRefundAdjAmount()).thenReturn(BigDecimal.ONE);
         Mockito.when(invoice.getId()).thenReturn(UUID.randomUUID());
         Mockito.when(invoice.getInvoiceDate()).thenReturn(new DateTime(DateTimeZone.UTC));
         Mockito.when(invoice.getTargetDate()).thenReturn(new DateTime(DateTimeZone.UTC));
@@ -86,8 +94,10 @@ public class TestInvoiceJsonSimple {
         Mockito.when(invoice.getAccountId()).thenReturn(UUID.randomUUID());
 
         final InvoiceJsonSimple invoiceJsonSimple = new InvoiceJsonSimple(invoice);
-        Assert.assertEquals(invoiceJsonSimple.getAmount(), invoice.getAmountCharged());
-        Assert.assertEquals(invoiceJsonSimple.getCredit(), invoice.getAmountCredited());
+        Assert.assertEquals(invoiceJsonSimple.getAmount(), invoice.getChargedAmount());
+        Assert.assertEquals(invoiceJsonSimple.getCBA(), invoice.getCBAAmount());
+        Assert.assertEquals(invoiceJsonSimple.getCreditAdj(), invoice.getCreditAdjAmount());
+        Assert.assertEquals(invoiceJsonSimple.getRefundAdj(), invoice.getRefundAdjAmount());
         Assert.assertEquals(invoiceJsonSimple.getInvoiceId(), invoice.getId().toString());
         Assert.assertEquals(invoiceJsonSimple.getInvoiceDate(), invoice.getInvoiceDate());
         Assert.assertEquals(invoiceJsonSimple.getTargetDate(), invoice.getTargetDate());
diff --git a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithBundleKeys.java b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithBundleKeys.java
index 8603492..dd4cbad 100644
--- a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithBundleKeys.java
+++ b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithBundleKeys.java
@@ -41,7 +41,9 @@ public class TestInvoiceJsonWithBundleKeys {
     @Test(groups = "fast")
     public void testJson() throws Exception {
         final BigDecimal amount = BigDecimal.TEN;
-        final BigDecimal credit = BigDecimal.ONE;
+        final BigDecimal cba = BigDecimal.ONE;
+        final BigDecimal creditAdj = BigDecimal.ONE;
+        final BigDecimal refundAdj = BigDecimal.ONE;
         final String invoiceId = UUID.randomUUID().toString();
         final DateTime invoiceDate = new DateTime(DateTimeZone.UTC);
         final DateTime targetDate = new DateTime(DateTimeZone.UTC);
@@ -49,10 +51,12 @@ public class TestInvoiceJsonWithBundleKeys {
         final BigDecimal balance = BigDecimal.ZERO;
         final String accountId = UUID.randomUUID().toString();
         final String bundleKeys = UUID.randomUUID().toString();
-        final InvoiceJsonWithBundleKeys invoiceJsonSimple = new InvoiceJsonWithBundleKeys(amount, credit, invoiceId, invoiceDate,
+        final InvoiceJsonWithBundleKeys invoiceJsonSimple = new InvoiceJsonWithBundleKeys(amount, cba, creditAdj, refundAdj, invoiceId, invoiceDate,
                                                                                           targetDate, invoiceNumber, balance, accountId, bundleKeys);
         Assert.assertEquals(invoiceJsonSimple.getAmount(), amount);
-        Assert.assertEquals(invoiceJsonSimple.getCredit(), credit);
+        Assert.assertEquals(invoiceJsonSimple.getCBA(), cba);
+        Assert.assertEquals(invoiceJsonSimple.getCreditAdj(), creditAdj);
+        Assert.assertEquals(invoiceJsonSimple.getRefundAdj(), refundAdj);
         Assert.assertEquals(invoiceJsonSimple.getInvoiceId(), invoiceId);
         Assert.assertEquals(invoiceJsonSimple.getInvoiceDate(), invoiceDate);
         Assert.assertEquals(invoiceJsonSimple.getTargetDate(), targetDate);
@@ -63,7 +67,9 @@ public class TestInvoiceJsonWithBundleKeys {
 
         final String asJson = mapper.writeValueAsString(invoiceJsonSimple);
         Assert.assertEquals(asJson, "{\"amount\":" + invoiceJsonSimple.getAmount().toString() + "," +
-                "\"credit\":" + invoiceJsonSimple.getCredit().toString() + "," +
+                "\"cba\":" + invoiceJsonSimple.getCBA().toString() + "," +
+                "\"creditAdj\":" + invoiceJsonSimple.getCreditAdj().toString() + "," +
+                "\"refundAdj\":" + invoiceJsonSimple.getRefundAdj().toString() + "," +
                 "\"invoiceId\":\"" + invoiceJsonSimple.getInvoiceId() + "\"," +
                 "\"invoiceDate\":\"" + invoiceJsonSimple.getInvoiceDate().toDateTimeISO().toString() + "\"," +
                 "\"targetDate\":\"" + invoiceJsonSimple.getTargetDate().toDateTimeISO().toString() + "\"," +
@@ -79,8 +85,10 @@ public class TestInvoiceJsonWithBundleKeys {
     @Test(groups = "fast")
     public void testFromInvoice() throws Exception {
         final Invoice invoice = Mockito.mock(Invoice.class);
-        Mockito.when(invoice.getAmountCharged()).thenReturn(BigDecimal.TEN);
-        Mockito.when(invoice.getAmountCredited()).thenReturn(BigDecimal.ONE);
+        Mockito.when(invoice.getChargedAmount()).thenReturn(BigDecimal.TEN);
+        Mockito.when(invoice.getCBAAmount()).thenReturn(BigDecimal.ONE);
+        Mockito.when(invoice.getCreditAdjAmount()).thenReturn(BigDecimal.ONE);
+        Mockito.when(invoice.getRefundAdjAmount()).thenReturn(BigDecimal.ONE);
         Mockito.when(invoice.getId()).thenReturn(UUID.randomUUID());
         Mockito.when(invoice.getInvoiceDate()).thenReturn(new DateTime(DateTimeZone.UTC));
         Mockito.when(invoice.getTargetDate()).thenReturn(new DateTime(DateTimeZone.UTC));
@@ -91,8 +99,10 @@ public class TestInvoiceJsonWithBundleKeys {
         final String bundleKeys = UUID.randomUUID().toString();
 
         final InvoiceJsonWithBundleKeys invoiceJsonWithBundleKeys = new InvoiceJsonWithBundleKeys(invoice, bundleKeys);
-        Assert.assertEquals(invoiceJsonWithBundleKeys.getAmount(), invoice.getAmountCharged());
-        Assert.assertEquals(invoiceJsonWithBundleKeys.getCredit(), invoice.getAmountCredited());
+        Assert.assertEquals(invoiceJsonWithBundleKeys.getAmount(), invoice.getChargedAmount());
+        Assert.assertEquals(invoiceJsonWithBundleKeys.getCBA(), invoice.getCBAAmount());
+        Assert.assertEquals(invoiceJsonWithBundleKeys.getCreditAdj(), invoice.getCreditAdjAmount());
+        Assert.assertEquals(invoiceJsonWithBundleKeys.getRefundAdj(), invoice.getRefundAdjAmount());
         Assert.assertEquals(invoiceJsonWithBundleKeys.getInvoiceId(), invoice.getId().toString());
         Assert.assertEquals(invoiceJsonWithBundleKeys.getInvoiceDate(), invoice.getInvoiceDate());
         Assert.assertEquals(invoiceJsonWithBundleKeys.getTargetDate(), invoice.getTargetDate());
diff --git a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithItems.java b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithItems.java
index c7bd606..89766c0 100644
--- a/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithItems.java
+++ b/jaxrs/src/test/java/com/ning/billing/jaxrs/json/TestInvoiceJsonWithItems.java
@@ -44,7 +44,9 @@ public class TestInvoiceJsonWithItems {
     @Test(groups = "fast")
     public void testJson() throws Exception {
         final BigDecimal amount = BigDecimal.TEN;
-        final BigDecimal credit = BigDecimal.ONE;
+        final BigDecimal cba = BigDecimal.ONE;
+        final BigDecimal creditAdj = BigDecimal.ONE;
+        final BigDecimal refundAdj = BigDecimal.ONE;
         final String invoiceId = UUID.randomUUID().toString();
         final DateTime invoiceDate = new DateTime(DateTimeZone.UTC);
         final DateTime targetDate = new DateTime(DateTimeZone.UTC);
@@ -52,11 +54,13 @@ public class TestInvoiceJsonWithItems {
         final BigDecimal balance = BigDecimal.ZERO;
         final String accountId = UUID.randomUUID().toString();
         final InvoiceItemJsonSimple invoiceItemJsonSimple = createInvoiceItemJson();
-        final InvoiceJsonWithItems invoiceJsonWithItems = new InvoiceJsonWithItems(amount, credit, invoiceId, invoiceDate,
+        final InvoiceJsonWithItems invoiceJsonWithItems = new InvoiceJsonWithItems(amount, cba, creditAdj, refundAdj, invoiceId, invoiceDate,
                                                                                    targetDate, invoiceNumber, balance, accountId,
                                                                                    ImmutableList.<InvoiceItemJsonSimple>of(invoiceItemJsonSimple));
         Assert.assertEquals(invoiceJsonWithItems.getAmount(), amount);
-        Assert.assertEquals(invoiceJsonWithItems.getCredit(), credit);
+        Assert.assertEquals(invoiceJsonWithItems.getCBA(), cba);
+        Assert.assertEquals(invoiceJsonWithItems.getCreditAdj(), creditAdj);
+        Assert.assertEquals(invoiceJsonWithItems.getRefundAdj(), refundAdj);
         Assert.assertEquals(invoiceJsonWithItems.getInvoiceId(), invoiceId);
         Assert.assertEquals(invoiceJsonWithItems.getInvoiceDate(), invoiceDate);
         Assert.assertEquals(invoiceJsonWithItems.getTargetDate(), targetDate);
@@ -68,7 +72,9 @@ public class TestInvoiceJsonWithItems {
 
         final String asJson = mapper.writeValueAsString(invoiceJsonWithItems);
         Assert.assertEquals(asJson, "{\"amount\":" + invoiceJsonWithItems.getAmount().toString() + "," +
-                "\"credit\":" + invoiceJsonWithItems.getCredit().toString() + "," +
+                "\"cba\":" + invoiceJsonWithItems.getCBA().toString() + "," +
+                "\"creditAdj\":" + invoiceJsonWithItems.getCreditAdj().toString() + "," +
+                "\"refundAdj\":" + invoiceJsonWithItems.getRefundAdj().toString() + "," +
                 "\"invoiceId\":\"" + invoiceJsonWithItems.getInvoiceId() + "\"," +
                 "\"invoiceDate\":\"" + invoiceJsonWithItems.getInvoiceDate().toDateTimeISO().toString() + "\"," +
                 "\"targetDate\":\"" + invoiceJsonWithItems.getTargetDate().toDateTimeISO().toString() + "\"," +
@@ -94,8 +100,7 @@ public class TestInvoiceJsonWithItems {
     @Test(groups = "fast")
     public void testFromInvoice() throws Exception {
         final Invoice invoice = Mockito.mock(Invoice.class);
-        Mockito.when(invoice.getAmountCharged()).thenReturn(BigDecimal.TEN);
-        Mockito.when(invoice.getAmountCredited()).thenReturn(BigDecimal.ONE);
+        Mockito.when(invoice.getChargedAmount()).thenReturn(BigDecimal.TEN);
         Mockito.when(invoice.getId()).thenReturn(UUID.randomUUID());
         Mockito.when(invoice.getInvoiceDate()).thenReturn(new DateTime(DateTimeZone.UTC));
         Mockito.when(invoice.getTargetDate()).thenReturn(new DateTime(DateTimeZone.UTC));
@@ -106,8 +111,7 @@ public class TestInvoiceJsonWithItems {
         Mockito.when(invoice.getInvoiceItems()).thenReturn(ImmutableList.<InvoiceItem>of(invoiceItem));
 
         final InvoiceJsonWithItems invoiceJsonWithItems = new InvoiceJsonWithItems(invoice);
-        Assert.assertEquals(invoiceJsonWithItems.getAmount(), invoice.getAmountCharged());
-        Assert.assertEquals(invoiceJsonWithItems.getCredit(), invoice.getAmountCredited());
+        Assert.assertEquals(invoiceJsonWithItems.getAmount(), invoice.getChargedAmount());
         Assert.assertEquals(invoiceJsonWithItems.getInvoiceId(), invoice.getId().toString());
         Assert.assertEquals(invoiceJsonWithItems.getInvoiceDate(), invoice.getInvoiceDate());
         Assert.assertEquals(invoiceJsonWithItems.getTargetDate(), invoice.getTargetDate());
diff --git a/payment/src/test/java/com/ning/billing/payment/MockInvoice.java b/payment/src/test/java/com/ning/billing/payment/MockInvoice.java
index 75f5bbf..d87dfb1 100644
--- a/payment/src/test/java/com/ning/billing/payment/MockInvoice.java
+++ b/payment/src/test/java/com/ning/billing/payment/MockInvoice.java
@@ -179,7 +179,7 @@ public class MockInvoice extends EntityBase implements Invoice {
     }
 
     @Override
-    public BigDecimal getAmountCharged() {
+    public BigDecimal getChargedAmount() {
         BigDecimal result = BigDecimal.ZERO;
 
         for (final InvoiceItem i : invoiceItems) {
@@ -191,7 +191,7 @@ public class MockInvoice extends EntityBase implements Invoice {
     }
 
     @Override
-    public BigDecimal getAmountCredited() {
+    public BigDecimal getCreditAdjAmount() {
         BigDecimal result = BigDecimal.ZERO;
 
         for (final InvoiceItem i : invoiceItems) {
@@ -204,7 +204,7 @@ public class MockInvoice extends EntityBase implements Invoice {
 
     @Override
     public BigDecimal getBalance() {
-        return getAmountCharged().subtract(getPaidAmount().subtract(getAmountCredited()));
+        return getChargedAmount().subtract(getPaidAmount());
     }
 
     @Override
@@ -225,5 +225,23 @@ public class MockInvoice extends EntityBase implements Invoice {
     public String toString() {
         return "DefaultInvoice [items=" + invoiceItems + ", payments=" + payments + ", id=" + id + ", accountId=" + accountId + ", invoiceDate=" + invoiceDate + ", targetDate=" + targetDate + ", currency=" + currency + ", amountPaid=" + getPaidAmount() + ", lastPaymentAttempt=" + getLastPaymentAttempt() + "]";
     }
+
+    @Override
+    public BigDecimal getCBAAmount() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public BigDecimal getTotalAdjAmount() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public BigDecimal getRefundAdjAmount() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }
 
diff --git a/payment/src/test/java/com/ning/billing/payment/MockRecurringInvoiceItem.java b/payment/src/test/java/com/ning/billing/payment/MockRecurringInvoiceItem.java
index ef586c2..054d995 100644
--- a/payment/src/test/java/com/ning/billing/payment/MockRecurringInvoiceItem.java
+++ b/payment/src/test/java/com/ning/billing/payment/MockRecurringInvoiceItem.java
@@ -113,6 +113,7 @@ public class MockRecurringInvoiceItem extends EntityBase implements InvoiceItem 
         return bundleId;
     }
 
+    @Override
     public UUID getAccountId() {
         return accountId;
     }
@@ -158,15 +159,11 @@ public class MockRecurringInvoiceItem extends EntityBase implements InvoiceItem 
     }
 
     @Override
-    public InvoiceItem asReversingItem() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
     public String getDescription() {
         return String.format("%s from %s to %s", phaseName, startDate.toString(), endDate.toString());
     }
 
+    @Override
     public UUID getLinkedItemId() {
         return reversedItemId;
     }
@@ -175,6 +172,7 @@ public class MockRecurringInvoiceItem extends EntityBase implements InvoiceItem 
         return (reversedItemId != null);
     }
 
+    @Override
     public BigDecimal getRate() {
         return rate;
     }