killbill-aplcache

invoice: CR for 5bf52ce and JAXRS models for new Invoice fields.

8/8/2017 3:40:55 PM

Details

diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationParentInvoice.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationParentInvoice.java
index f5c609c..52a41b5 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationParentInvoice.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationParentInvoice.java
@@ -1135,6 +1135,10 @@ public class TestIntegrationParentInvoice extends TestIntegrationBase {
         assertEquals(invoiceUserApi.getAccountBalance(childAccount.getId(), callContext).compareTo(new BigDecimal("249.95")), 0);
 
 
+        // Verify Invoice apis getParentAccountId/getParentInvoiceId
+        assertEquals(childInvoices.get(1).getParentAccountId(), parentAccount.getId());
+        assertEquals(childInvoices.get(1).getParentInvoiceId(), parentInvoice.getId());
+
         try {
             final List<PluginProperty> properties = new ArrayList<PluginProperty>();
             final PluginProperty prop1 = new PluginProperty(InvoicePaymentControlPluginApi.PROP_IPCD_INVOICE_ID, childInvoices.get(1).getId().toString(), false);
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/DefaultInvoice.java b/invoice/src/main/java/org/killbill/billing/invoice/model/DefaultInvoice.java
index fa4b200..4dcd360 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/DefaultInvoice.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/DefaultInvoice.java
@@ -284,6 +284,11 @@ public class DefaultInvoice extends EntityBase implements Invoice, Cloneable {
 
     @Override
     public UUID getParentAccountId() {
+        return parentInvoice != null ? parentInvoice.getAccountId() : null;
+    }
+
+    @Override
+    public UUID getParentInvoiceId() {
         return parentInvoice != null ? parentInvoice.getId() : null;
     }
 
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceFormatter.java b/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
index fbb2af4..f913ce3 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
@@ -352,6 +352,11 @@ public class DefaultInvoiceFormatter implements InvoiceFormatter {
         return invoice.getParentAccountId();
     }
 
+    @Override
+    public UUID getParentInvoiceId() {
+        return invoice.getParentInvoiceId();
+    }
+
     // Expose the fields for children classes. This is useful for further customization of the invoices
 
     @SuppressWarnings("UnusedDeclaration")
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceJson.java
index 90373da..36af2b2 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceJson.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceJson.java
@@ -56,6 +56,8 @@ public class InvoiceJson extends JsonBase {
     private final List<CreditJson> credits;
     private final String status;
     private final Boolean isParentInvoice;
+    private final String parentInvoiceId;
+    private final String parentAccountId;
 
     @JsonCreator
     public InvoiceJson(@JsonProperty("amount") final BigDecimal amount,
@@ -73,6 +75,8 @@ public class InvoiceJson extends JsonBase {
                        @JsonProperty("credits") final List<CreditJson> credits,
                        @JsonProperty("items") final List<InvoiceItemJson> items,
                        @JsonProperty("isParentInvoice") final Boolean isParentInvoice,
+                       @JsonProperty("parentInvoiceId") final String parentInvoiceId,
+                       @JsonProperty("parentAccountId") final String parentAccountId,
                        @JsonProperty("auditLogs") @Nullable final List<AuditLogJson> auditLogs) {
         super(auditLogs);
         this.amount = amount;
@@ -90,6 +94,8 @@ public class InvoiceJson extends JsonBase {
         this.credits = credits;
         this.items = items;
         this.isParentInvoice = isParentInvoice;
+        this.parentInvoiceId = parentInvoiceId;
+        this.parentAccountId = parentAccountId;
     }
 
     public InvoiceJson(final Invoice input) {
@@ -99,7 +105,10 @@ public class InvoiceJson extends JsonBase {
     public InvoiceJson(final Invoice input, final String bundleKeys, final List<CreditJson> credits, final List<AuditLog> auditLogs) {
         this(input.getChargedAmount(), input.getCurrency().toString(), input.getStatus().toString(), input.getCreditedAmount(), input.getRefundedAmount(),
              input.getId().toString(), input.getInvoiceDate(), input.getTargetDate(), String.valueOf(input.getInvoiceNumber()),
-             input.getBalance(), input.getAccountId().toString(), bundleKeys, credits, null, input.isParentInvoice(), toAuditLogJson(auditLogs));
+             input.getBalance(), input.getAccountId().toString(), bundleKeys, credits, null, input.isParentInvoice(),
+             input.getParentInvoiceId() != null ? input.getParentInvoiceId().toString() : null,
+             input.getParentAccountId() != null ? input.getParentAccountId().toString() : null,
+             toAuditLogJson(auditLogs));
     }
 
     public InvoiceJson(final Invoice input, final boolean withItems, final List<InvoiceItem> childItems, @Nullable final AccountAuditLogs accountAuditLogs) {
@@ -133,6 +142,9 @@ public class InvoiceJson extends JsonBase {
         this.bundleKeys = null;
         this.credits = null;
         this.isParentInvoice = input.isParentInvoice();
+        this.parentInvoiceId = input.getParentInvoiceId() != null ? input.getParentInvoiceId().toString() : null;
+        this.parentAccountId = input.getParentAccountId() != null ? input.getParentAccountId().toString() : null;
+
     }
 
     public BigDecimal getAmount() {
@@ -195,6 +207,14 @@ public class InvoiceJson extends JsonBase {
         return isParentInvoice;
     }
 
+    public String getParentInvoiceId() {
+        return parentInvoiceId;
+    }
+
+    public String getParentAccountId() {
+        return parentAccountId;
+    }
+
     @Override
     public String toString() {
         return "InvoiceJson{" +
@@ -213,6 +233,8 @@ public class InvoiceJson extends JsonBase {
                ", bundleKeys='" + bundleKeys + '\'' +
                ", credits=" + credits +
                ", isParentInvoice=" + isParentInvoice +
+               ", parentInvoiceId=" + parentInvoiceId +
+               ", parentAccountId=" + parentAccountId +
                '}';
     }
 
@@ -272,7 +294,12 @@ public class InvoiceJson extends JsonBase {
         if (isParentInvoice != null ? !isParentInvoice.equals(that.isParentInvoice) : that.isParentInvoice != null) {
             return false;
         }
-
+        if (parentInvoiceId != null ? !parentInvoiceId.equals(that.parentInvoiceId) : that.parentInvoiceId != null) {
+            return false;
+        }
+        if (parentAccountId != null ? !parentAccountId.equals(that.parentAccountId) : that.parentAccountId != null) {
+            return false;
+        }
         return true;
     }
 
@@ -293,6 +320,8 @@ public class InvoiceJson extends JsonBase {
         result = 31 * result + (bundleKeys != null ? bundleKeys.hashCode() : 0);
         result = 31 * result + (credits != null ? credits.hashCode() : 0);
         result = 31 * result + (isParentInvoice != null ? isParentInvoice.hashCode() : 0);
+        result = 31 * result + (parentInvoiceId != null ? parentInvoiceId.hashCode() : 0);
+        result = 31 * result + (parentAccountId != null ? parentAccountId.hashCode() : 0);
         return result;
     }
 }
diff --git a/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestInvoiceJsonWithBundleKeys.java b/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestInvoiceJsonWithBundleKeys.java
index 6b9a29e..5dc7791 100644
--- a/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestInvoiceJsonWithBundleKeys.java
+++ b/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestInvoiceJsonWithBundleKeys.java
@@ -54,7 +54,7 @@ public class TestInvoiceJsonWithBundleKeys extends JaxrsTestSuiteNoDB {
         final InvoiceJson invoiceJsonSimple = new InvoiceJson(amount, Currency.USD.toString(), InvoiceStatus.COMMITTED.toString(),
                                                               creditAdj, refundAdj, invoiceId, invoiceDate,
                                                               targetDate, invoiceNumber, balance, accountId, bundleKeys,
-                                                              credits, null, false, auditLogs);
+                                                              credits, null, false, null, null, auditLogs);
         Assert.assertEquals(invoiceJsonSimple.getAmount(), amount);
         Assert.assertEquals(invoiceJsonSimple.getCreditAdj(), creditAdj);
         Assert.assertEquals(invoiceJsonSimple.getRefundAdj(), refundAdj);
diff --git a/payment/src/test/java/org/killbill/billing/payment/MockInvoice.java b/payment/src/test/java/org/killbill/billing/payment/MockInvoice.java
index 916e030..eca259b 100644
--- a/payment/src/test/java/org/killbill/billing/payment/MockInvoice.java
+++ b/payment/src/test/java/org/killbill/billing/payment/MockInvoice.java
@@ -227,5 +227,10 @@ public class MockInvoice extends EntityBase implements Invoice {
     public UUID getParentAccountId() {
         return null;
     }
+
+    @Override
+    public UUID getParentInvoiceId() {
+        return null;
+    }
 }