killbill-aplcache
Changes
invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceFormatter.java 6(+6 -0)
invoice/src/test/java/org/killbill/billing/invoice/generator/TestDefaultInvoiceGenerator.java 3(+2 -1)
Details
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/api/user/DefaultInvoiceUserApi.java b/invoice/src/main/java/org/killbill/billing/invoice/api/user/DefaultInvoiceUserApi.java
index 29ef612..5adc2b2 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/api/user/DefaultInvoiceUserApi.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/api/user/DefaultInvoiceUserApi.java
@@ -46,6 +46,7 @@ import org.killbill.billing.invoice.api.InvoiceApiException;
import org.killbill.billing.invoice.api.InvoiceApiHelper;
import org.killbill.billing.invoice.api.InvoiceItem;
import org.killbill.billing.invoice.api.InvoiceItemType;
+import org.killbill.billing.invoice.api.InvoiceStatus;
import org.killbill.billing.invoice.api.InvoiceUserApi;
import org.killbill.billing.invoice.api.WithAccountLock;
import org.killbill.billing.invoice.dao.InvoiceDao;
@@ -283,7 +284,7 @@ public class DefaultInvoiceUserApi implements InvoiceUserApi {
if (invoiceIdForExternalCharge == null) {
final Currency currency = charge.getCurrency();
if (newInvoicesForExternalCharges.get(currency) == null) {
- final Invoice newInvoiceForExternalCharge = new DefaultInvoice(accountId, effectiveDate, effectiveDate, currency);
+ final Invoice newInvoiceForExternalCharge = new DefaultInvoice(accountId, effectiveDate, effectiveDate, currency, InvoiceStatus.DRAFT);
newInvoicesForExternalCharges.put(currency, newInvoiceForExternalCharge);
}
invoiceForExternalCharge = newInvoicesForExternalCharges.get(currency);
@@ -347,7 +348,7 @@ public class DefaultInvoiceUserApi implements InvoiceUserApi {
// Create an invoice for that credit if it doesn't exist
final Invoice invoiceForCredit;
if (invoiceId == null) {
- invoiceForCredit = new DefaultInvoice(accountId, effectiveDate, effectiveDate, currency);
+ invoiceForCredit = new DefaultInvoice(accountId, effectiveDate, effectiveDate, currency, InvoiceStatus.DRAFT);
} else {
invoiceForCredit = getInvoiceAndCheckCurrency(invoiceId, currency, context);
}
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceModelDao.java b/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceModelDao.java
index 0316d8d..b25388d 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceModelDao.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/dao/InvoiceModelDao.java
@@ -27,6 +27,7 @@ import org.joda.time.LocalDate;
import org.killbill.billing.catalog.api.Currency;
import org.killbill.billing.invoice.api.Invoice;
+import org.killbill.billing.invoice.api.InvoiceStatus;
import org.killbill.billing.util.UUIDs;
import org.killbill.billing.util.dao.TableName;
import org.killbill.billing.util.entity.dao.EntityModelDao;
@@ -40,6 +41,7 @@ public class InvoiceModelDao extends EntityModelDaoBase implements EntityModelDa
private LocalDate targetDate;
private Currency currency;
private boolean migrated;
+ private InvoiceStatus status;
// Not in the database, for convenience only
private List<InvoiceItemModelDao> invoiceItems = new LinkedList<InvoiceItemModelDao>();
@@ -52,7 +54,7 @@ public class InvoiceModelDao extends EntityModelDaoBase implements EntityModelDa
public InvoiceModelDao(final UUID id, @Nullable final DateTime createdDate, final UUID accountId,
@Nullable final Integer invoiceNumber, final LocalDate invoiceDate, final LocalDate targetDate,
- final Currency currency, final boolean migrated) {
+ final Currency currency, final boolean migrated, final InvoiceStatus status) {
super(id, createdDate, createdDate);
this.accountId = accountId;
this.invoiceNumber = invoiceNumber;
@@ -61,19 +63,24 @@ public class InvoiceModelDao extends EntityModelDaoBase implements EntityModelDa
this.currency = currency;
this.migrated = migrated;
this.isWrittenOff = false;
+ this.status = status;
}
public InvoiceModelDao(final UUID accountId, final LocalDate invoiceDate, final LocalDate targetDate, final Currency currency, final boolean migrated) {
- this(UUIDs.randomUUID(), null, accountId, null, invoiceDate, targetDate, currency, migrated);
+ this(UUIDs.randomUUID(), null, accountId, null, invoiceDate, targetDate, currency, migrated, InvoiceStatus.COMMITTED);
+ }
+
+ public InvoiceModelDao(final UUID accountId, final LocalDate invoiceDate, final LocalDate targetDate, final Currency currency, final boolean migrated, final InvoiceStatus status) {
+ this(UUIDs.randomUUID(), null, accountId, null, invoiceDate, targetDate, currency, migrated, status);
}
public InvoiceModelDao(final UUID accountId, final LocalDate invoiceDate, final LocalDate targetDate, final Currency currency) {
- this(UUIDs.randomUUID(), null, accountId, null, invoiceDate, targetDate, currency, false);
+ this(UUIDs.randomUUID(), null, accountId, null, invoiceDate, targetDate, currency, false, InvoiceStatus.COMMITTED);
}
public InvoiceModelDao(final Invoice invoice) {
this(invoice.getId(), invoice.getCreatedDate(), invoice.getAccountId(), invoice.getInvoiceNumber(), invoice.getInvoiceDate(),
- invoice.getTargetDate(), invoice.getCurrency(), invoice.isMigrationInvoice());
+ invoice.getTargetDate(), invoice.getCurrency(), invoice.isMigrationInvoice(), invoice.getStatus());
}
public void addInvoiceItems(final List<InvoiceItemModelDao> invoiceItems) {
@@ -168,6 +175,14 @@ public class InvoiceModelDao extends EntityModelDaoBase implements EntityModelDa
this.isWrittenOff = isWrittenOff;
}
+ public InvoiceStatus getStatus() {
+ return status;
+ }
+
+ public void setStatus(final InvoiceStatus status) {
+ this.status = status;
+ }
+
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
@@ -178,6 +193,7 @@ public class InvoiceModelDao extends EntityModelDaoBase implements EntityModelDa
sb.append(", targetDate=").append(targetDate);
sb.append(", currency=").append(currency);
sb.append(", migrated=").append(migrated);
+ sb.append(", status=").append(status);
sb.append('}');
return sb.toString();
}
@@ -214,6 +230,9 @@ public class InvoiceModelDao extends EntityModelDaoBase implements EntityModelDa
if (targetDate != null ? !targetDate.equals(that.targetDate) : that.targetDate != null) {
return false;
}
+ if (status != null ? !status.equals(that.status) : that.status != null) {
+ return false;
+ }
return true;
}
@@ -227,6 +246,7 @@ public class InvoiceModelDao extends EntityModelDaoBase implements EntityModelDa
result = 31 * result + (targetDate != null ? targetDate.hashCode() : 0);
result = 31 * result + (currency != null ? currency.hashCode() : 0);
result = 31 * result + (migrated ? 1 : 0);
+ result = 31 * result + (status != null ? status.hashCode() : 0);
return result;
}
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 514e368..640936d 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
@@ -32,6 +32,7 @@ import org.killbill.billing.entity.EntityBase;
import org.killbill.billing.invoice.api.Invoice;
import org.killbill.billing.invoice.api.InvoiceItem;
import org.killbill.billing.invoice.api.InvoicePayment;
+import org.killbill.billing.invoice.api.InvoiceStatus;
import org.killbill.billing.invoice.calculator.InvoiceCalculatorUtils;
import org.killbill.billing.invoice.dao.InvoiceItemModelDao;
import org.killbill.billing.invoice.dao.InvoiceModelDao;
@@ -54,17 +55,21 @@ public class DefaultInvoice extends EntityBase implements Invoice, Cloneable {
private final boolean isWrittenOff;
private final Currency processedCurrency;
-
+ private final InvoiceStatus status;
// Used to create a new invoice
public DefaultInvoice(final UUID accountId, final LocalDate invoiceDate, final LocalDate targetDate, final Currency currency) {
- this(UUIDs.randomUUID(), accountId, null, invoiceDate, targetDate, currency, false);
+ this(UUIDs.randomUUID(), accountId, null, invoiceDate, targetDate, currency, false, InvoiceStatus.COMMITTED);
+ }
+
+ public DefaultInvoice(final UUID accountId, final LocalDate invoiceDate, final LocalDate targetDate, final Currency currency, final InvoiceStatus status) {
+ this(UUIDs.randomUUID(), accountId, null, invoiceDate, targetDate, currency, false, status);
}
public DefaultInvoice(final UUID invoiceId, final UUID accountId, @Nullable final Integer invoiceNumber, final LocalDate invoiceDate,
- final LocalDate targetDate, final Currency currency, final boolean isMigrationInvoice) {
- this(invoiceId, null, accountId, invoiceNumber, invoiceDate, targetDate, currency, currency, isMigrationInvoice, false);
+ final LocalDate targetDate, final Currency currency, final boolean isMigrationInvoice, final InvoiceStatus status) {
+ this(invoiceId, null, accountId, invoiceNumber, invoiceDate, targetDate, currency, currency, isMigrationInvoice, false, status);
}
@@ -72,7 +77,8 @@ public class DefaultInvoice extends EntityBase implements Invoice, Cloneable {
public DefaultInvoice(final InvoiceModelDao invoiceModelDao) {
this(invoiceModelDao.getId(), invoiceModelDao.getCreatedDate(), invoiceModelDao.getAccountId(),
invoiceModelDao.getInvoiceNumber(), invoiceModelDao.getInvoiceDate(), invoiceModelDao.getTargetDate(),
- invoiceModelDao.getCurrency(), invoiceModelDao.getProcessedCurrency(), invoiceModelDao.isMigrated(), invoiceModelDao.isWrittenOff());
+ invoiceModelDao.getCurrency(), invoiceModelDao.getProcessedCurrency(), invoiceModelDao.isMigrated(),
+ invoiceModelDao.isWrittenOff(), invoiceModelDao.getStatus());
addInvoiceItems(Collections2.transform(invoiceModelDao.getInvoiceItems(), new Function<InvoiceItemModelDao, InvoiceItem>() {
@Override
public InvoiceItem apply(final InvoiceItemModelDao input) {
@@ -90,7 +96,7 @@ public class DefaultInvoice extends EntityBase implements Invoice, Cloneable {
private DefaultInvoice(final UUID invoiceId, @Nullable final DateTime createdDate, final UUID accountId,
@Nullable final Integer invoiceNumber, final LocalDate invoiceDate,
final LocalDate targetDate, final Currency currency, final Currency processedCurrency,
- final boolean isMigrationInvoice, final boolean isWrittenOff) {
+ final boolean isMigrationInvoice, final boolean isWrittenOff, final InvoiceStatus status) {
super(invoiceId, createdDate, createdDate);
this.accountId = accountId;
this.invoiceNumber = invoiceNumber;
@@ -102,13 +108,14 @@ public class DefaultInvoice extends EntityBase implements Invoice, Cloneable {
this.isWrittenOff = isWrittenOff;
this.invoiceItems = new ArrayList<InvoiceItem>();
this.payments = new ArrayList<InvoicePayment>();
+ this.status = status;
}
// Semi deep copy where we copy the lists but not the elements in the lists since they are immutables.
@Override
public Object clone() {
- final Invoice clonedInvoice = new DefaultInvoice(getId(), getCreatedDate(), getAccountId(), getInvoiceNumber(), getInvoiceDate(), getTargetDate(), getCurrency(), getProcessedCurrency(), isMigrationInvoice(), isWrittenOff());
+ final Invoice clonedInvoice = new DefaultInvoice(getId(), getCreatedDate(), getAccountId(), getInvoiceNumber(), getInvoiceDate(), getTargetDate(), getCurrency(), getProcessedCurrency(), isMigrationInvoice(), isWrittenOff(), getStatus());
clonedInvoice.getInvoiceItems().addAll(getInvoiceItems());
clonedInvoice.getPayments().addAll(getPayments());
return clonedInvoice;
@@ -239,8 +246,13 @@ public class DefaultInvoice extends EntityBase implements Invoice, Cloneable {
}
@Override
+ public InvoiceStatus getStatus() {
+ return status;
+ }
+
+ @Override
public String toString() {
- return "DefaultInvoice [items=" + invoiceItems + ", payments=" + payments + ", id=" + id + ", accountId=" + accountId + ", invoiceDate=" + invoiceDate + ", targetDate=" + targetDate + ", currency=" + currency + ", amountPaid=" + getPaidAmount() + "]";
+ return "DefaultInvoice [items=" + invoiceItems + ", payments=" + payments + ", id=" + id + ", accountId=" + accountId + ", invoiceDate=" + invoiceDate + ", targetDate=" + targetDate + ", currency=" + currency + ", amountPaid=" + getPaidAmount() + ", Status=" + status + "]";
}
}
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 7ebb8d2..70afdec 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
@@ -44,6 +44,7 @@ import org.killbill.billing.invoice.api.Invoice;
import org.killbill.billing.invoice.api.InvoiceItem;
import org.killbill.billing.invoice.api.InvoiceItemType;
import org.killbill.billing.invoice.api.InvoicePayment;
+import org.killbill.billing.invoice.api.InvoiceStatus;
import org.killbill.billing.invoice.api.formatters.InvoiceFormatter;
import org.killbill.billing.invoice.api.formatters.ResourceBundleFactory;
import org.killbill.billing.invoice.model.CreditAdjInvoiceItem;
@@ -341,6 +342,11 @@ public class DefaultInvoiceFormatter implements InvoiceFormatter {
return invoice.getUpdatedDate();
}
+ @Override
+ public InvoiceStatus getStatus() {
+ return invoice.getStatus();
+ }
+
// Expose the fields for children classes. This is useful for further customization of the invoices
@SuppressWarnings("UnusedDeclaration")
diff --git a/invoice/src/main/resources/org/killbill/billing/invoice/dao/InvoiceSqlDao.sql.stg b/invoice/src/main/resources/org/killbill/billing/invoice/dao/InvoiceSqlDao.sql.stg
index 8daa8b1..6bfdcf3 100644
--- a/invoice/src/main/resources/org/killbill/billing/invoice/dao/InvoiceSqlDao.sql.stg
+++ b/invoice/src/main/resources/org/killbill/billing/invoice/dao/InvoiceSqlDao.sql.stg
@@ -7,6 +7,7 @@ tableFields(prefix) ::= <<
, <prefix>invoice_date
, <prefix>target_date
, <prefix>currency
+, <prefix>status
, <prefix>migrated
, <prefix>created_by
, <prefix>created_date
@@ -17,6 +18,7 @@ tableValues() ::= <<
, :invoiceDate
, :targetDate
, :currency
+, :status
, :migrated
, :createdBy
, :createdDate
diff --git a/invoice/src/main/resources/org/killbill/billing/invoice/ddl.sql b/invoice/src/main/resources/org/killbill/billing/invoice/ddl.sql
index 1a3907c..39e567e 100644
--- a/invoice/src/main/resources/org/killbill/billing/invoice/ddl.sql
+++ b/invoice/src/main/resources/org/killbill/billing/invoice/ddl.sql
@@ -40,6 +40,7 @@ CREATE TABLE invoices (
invoice_date date NOT NULL,
target_date date NOT NULL,
currency varchar(3) NOT NULL,
+ status varchar(15) NOT NULL,
migrated bool NOT NULL,
created_by varchar(50) NOT NULL,
created_date datetime NOT NULL,
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/generator/TestDefaultInvoiceGenerator.java b/invoice/src/test/java/org/killbill/billing/invoice/generator/TestDefaultInvoiceGenerator.java
index 4b8be24..19778f5 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/generator/TestDefaultInvoiceGenerator.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/generator/TestDefaultInvoiceGenerator.java
@@ -53,6 +53,7 @@ import org.killbill.billing.invoice.api.InvoiceApiException;
import org.killbill.billing.invoice.api.InvoiceItem;
import org.killbill.billing.invoice.api.InvoiceItemType;
import org.killbill.billing.invoice.api.InvoicePaymentType;
+import org.killbill.billing.invoice.api.InvoiceStatus;
import org.killbill.billing.invoice.model.DefaultInvoice;
import org.killbill.billing.invoice.model.DefaultInvoicePayment;
import org.killbill.billing.invoice.model.FixedPriceInvoiceItem;
@@ -960,7 +961,7 @@ public class TestDefaultInvoiceGenerator extends InvoiceTestSuiteNoDB {
final LocalDate targetDate = new LocalDate(2013, 10, 30);
- final Invoice existingInvoice = new DefaultInvoice(UUID.randomUUID(), accountId, null, clock.getUTCToday(), targetDate, currency, false);
+ final Invoice existingInvoice = new DefaultInvoice(UUID.randomUUID(), accountId, null, clock.getUTCToday(), targetDate, currency, false, InvoiceStatus.COMMITTED);
// Set the existing recurring invoice item 2013/06/15 - 2013/07/15
final LocalDate startDate = new LocalDate(2013, 06, 15);
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/template/formatters/TestDefaultInvoiceFormatter.java b/invoice/src/test/java/org/killbill/billing/invoice/template/formatters/TestDefaultInvoiceFormatter.java
index 725d6d7..a6a5359 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/template/formatters/TestDefaultInvoiceFormatter.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/template/formatters/TestDefaultInvoiceFormatter.java
@@ -33,6 +33,7 @@ import org.killbill.billing.invoice.api.Invoice;
import org.killbill.billing.invoice.api.InvoiceItem;
import org.killbill.billing.invoice.api.InvoiceItemType;
import org.killbill.billing.invoice.api.InvoicePaymentType;
+import org.killbill.billing.invoice.api.InvoiceStatus;
import org.killbill.billing.invoice.api.formatters.InvoiceFormatter;
import org.killbill.billing.invoice.api.formatters.ResourceBundleFactory.ResourceBundleType;
import org.killbill.billing.invoice.dao.InvoiceModelDao;
@@ -81,7 +82,7 @@ public class TestDefaultInvoiceFormatter extends InvoiceTestSuiteNoDB {
fixedItem.getStartDate(), fixedItem.getAmount().negate(),
fixedItem.getCurrency());
final Invoice invoice = new DefaultInvoice(fixedItem.getInvoiceId(), fixedItem.getAccountId(), null,
- new LocalDate(), new LocalDate(), Currency.USD, false);
+ new LocalDate(), new LocalDate(), Currency.USD, false, InvoiceStatus.COMMITTED);
invoice.addInvoiceItem(fixedItem);
invoice.addInvoiceItem(creditBalanceAdjInvoiceItem);
invoice.addInvoiceItem(creditBalanceAdjInvoiceItem2);
@@ -128,7 +129,7 @@ public class TestDefaultInvoiceFormatter extends InvoiceTestSuiteNoDB {
final RefundAdjInvoiceItem refundAdjInvoiceItem = new RefundAdjInvoiceItem(fixedItem.getInvoiceId(), fixedItem.getAccountId(),
fixedItem.getStartDate(), BigDecimal.ONE.negate(), fixedItem.getCurrency());
final DefaultInvoice invoice = new DefaultInvoice(fixedItem.getInvoiceId(), fixedItem.getAccountId(), null,
- new LocalDate(), new LocalDate(), Currency.USD, false);
+ new LocalDate(), new LocalDate(), Currency.USD, false, InvoiceStatus.COMMITTED);
invoice.addInvoiceItem(fixedItem);
invoice.addInvoiceItem(repairAdjInvoiceItem);
invoice.addInvoiceItem(creditBalanceAdjInvoiceItem);
@@ -392,7 +393,7 @@ public class TestDefaultInvoiceFormatter extends InvoiceTestSuiteNoDB {
@Test(groups = "fast")
public void testProcessedCurrencyDoesNotExist() throws Exception {
- final Invoice invoice = new DefaultInvoice(UUID.randomUUID(), UUID.randomUUID(), new Integer(234), new LocalDate(), new LocalDate(), Currency.USD, false);
+ final Invoice invoice = new DefaultInvoice(UUID.randomUUID(), UUID.randomUUID(), new Integer(234), new LocalDate(), new LocalDate(), Currency.USD, false, InvoiceStatus.COMMITTED);
checkOutput(invoice,
"{{#invoice.processedCurrency}}" +
@@ -412,7 +413,7 @@ public class TestDefaultInvoiceFormatter extends InvoiceTestSuiteNoDB {
UUID.randomUUID().toString(), UUID.randomUUID().toString(),
new LocalDate(), new BigDecimal("1499.95"), Currency.BRL);
- final Invoice invoice = new DefaultInvoice(UUID.randomUUID(), UUID.randomUUID(), new Integer(234), new LocalDate(), new LocalDate(), Currency.BRL, false);
+ final Invoice invoice = new DefaultInvoice(UUID.randomUUID(), UUID.randomUUID(), new Integer(234), new LocalDate(), new LocalDate(), Currency.BRL, false, InvoiceStatus.COMMITTED);
invoice.addInvoiceItem(fixedItemBRL);
final String template = "<html>\n" +
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 639d2c9..4fa9335 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
@@ -50,10 +50,12 @@ public class InvoiceJson extends JsonBase {
private final List<InvoiceItemJson> items;
private final String bundleKeys;
private final List<CreditJson> credits;
+ private final String status;
@JsonCreator
public InvoiceJson(@JsonProperty("amount") final BigDecimal amount,
@JsonProperty("currency") final String currency,
+ @JsonProperty("status") final String status,
@JsonProperty("creditAdj") final BigDecimal creditAdj,
@JsonProperty("refundAdj") final BigDecimal refundAdj,
@JsonProperty("invoiceId") final String invoiceId,
@@ -69,6 +71,7 @@ public class InvoiceJson extends JsonBase {
super(auditLogs);
this.amount = amount;
this.currency = currency;
+ this.status = status;
this.creditAdj = creditAdj;
this.refundAdj = refundAdj;
this.invoiceId = invoiceId;
@@ -87,7 +90,7 @@ 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.getCreditedAmount(), input.getRefundedAmount(),
+ 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, toAuditLogJson(auditLogs));
}
@@ -102,6 +105,7 @@ public class InvoiceJson extends JsonBase {
}
this.amount = input.getChargedAmount();
this.currency = input.getCurrency().toString();
+ this.status = input.getStatus().toString();
this.creditAdj = input.getCreditedAmount();
this.refundAdj = input.getRefundedAmount();
this.invoiceId = input.getId().toString();
@@ -166,11 +170,16 @@ public class InvoiceJson extends JsonBase {
return credits;
}
+ public String getStatus() {
+ return status;
+ }
+
@Override
public String toString() {
return "InvoiceJson{" +
"amount=" + amount +
", currency='" + currency + '\'' +
+ ", status='" + status + '\'' +
", invoiceId='" + invoiceId + '\'' +
", invoiceDate=" + invoiceDate +
", targetDate=" + targetDate +
@@ -235,6 +244,9 @@ public class InvoiceJson extends JsonBase {
if (targetDate != null ? targetDate.compareTo(that.targetDate) != 0 : that.targetDate != null) {
return false;
}
+ if (status != null ? !status.equals(that.status) : that.status != null) {
+ return false;
+ }
return true;
}
@@ -243,6 +255,7 @@ public class InvoiceJson extends JsonBase {
public int hashCode() {
int result = amount != null ? amount.hashCode() : 0;
result = 31 * result + (currency != null ? currency.hashCode() : 0);
+ result = 31 * result + (status != null ? status.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/test/java/org/killbill/billing/jaxrs/json/TestInvoiceJsonWithBundleKeys.java b/jaxrs/src/test/java/org/killbill/billing/jaxrs/json/TestInvoiceJsonWithBundleKeys.java
index 2a38928..e473117 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
@@ -21,6 +21,7 @@ import java.util.List;
import java.util.UUID;
import org.joda.time.LocalDate;
+import org.killbill.billing.invoice.api.InvoiceStatus;
import org.mockito.Mockito;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -50,9 +51,10 @@ public class TestInvoiceJsonWithBundleKeys extends JaxrsTestSuiteNoDB {
final CreditJson creditJson = createCreditJson();
final List<CreditJson> credits = ImmutableList.<CreditJson>of(creditJson);
final List<AuditLogJson> auditLogs = createAuditLogsJson(clock.getUTCNow());
- final InvoiceJson invoiceJsonSimple = new InvoiceJson(amount, Currency.USD.toString(), creditAdj, refundAdj, invoiceId, invoiceDate,
- targetDate, invoiceNumber, balance, accountId, bundleKeys,
- credits, null, auditLogs);
+ final InvoiceJson invoiceJsonSimple = new InvoiceJson(amount, Currency.USD.toString(), InvoiceStatus.COMMITTED.toString(),
+ creditAdj, refundAdj, invoiceId, invoiceDate,
+ targetDate, invoiceNumber, balance, accountId, bundleKeys,
+ credits, null, auditLogs);
Assert.assertEquals(invoiceJsonSimple.getAmount(), amount);
Assert.assertEquals(invoiceJsonSimple.getCreditAdj(), creditAdj);
Assert.assertEquals(invoiceJsonSimple.getRefundAdj(), refundAdj);
@@ -65,6 +67,7 @@ public class TestInvoiceJsonWithBundleKeys extends JaxrsTestSuiteNoDB {
Assert.assertEquals(invoiceJsonSimple.getBundleKeys(), bundleKeys);
Assert.assertEquals(invoiceJsonSimple.getCredits(), credits);
Assert.assertEquals(invoiceJsonSimple.getAuditLogs(), auditLogs);
+ Assert.assertEquals(invoiceJsonSimple.getStatus(), InvoiceStatus.COMMITTED.toString());
final String asJson = mapper.writeValueAsString(invoiceJsonSimple);
final InvoiceJson fromJson = mapper.readValue(asJson, InvoiceJson.class);
@@ -84,6 +87,7 @@ public class TestInvoiceJsonWithBundleKeys extends JaxrsTestSuiteNoDB {
Mockito.when(invoice.getBalance()).thenReturn(BigDecimal.ZERO);
Mockito.when(invoice.getAccountId()).thenReturn(UUID.randomUUID());
Mockito.when(invoice.getCurrency()).thenReturn(Currency.MXN);
+ Mockito.when(invoice.getStatus()).thenReturn(InvoiceStatus.COMMITTED);
final String bundleKeys = UUID.randomUUID().toString();
@@ -102,6 +106,7 @@ public class TestInvoiceJsonWithBundleKeys extends JaxrsTestSuiteNoDB {
Assert.assertEquals(invoiceJson.getBundleKeys(), bundleKeys);
Assert.assertEquals(invoiceJson.getCredits(), credits);
Assert.assertNull(invoiceJson.getAuditLogs());
+ Assert.assertEquals(invoiceJson.getStatus(), InvoiceStatus.COMMITTED.toString());
}
private CreditJson createCreditJson() {
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 981e974..8bf8640 100644
--- a/payment/src/test/java/org/killbill/billing/payment/MockInvoice.java
+++ b/payment/src/test/java/org/killbill/billing/payment/MockInvoice.java
@@ -32,6 +32,7 @@ import org.killbill.billing.invoice.api.InvoiceItem;
import org.killbill.billing.invoice.api.InvoiceItemType;
import org.killbill.billing.invoice.api.InvoicePayment;
import org.killbill.billing.entity.EntityBase;
+import org.killbill.billing.invoice.api.InvoiceStatus;
public class MockInvoice extends EntityBase implements Invoice {
private final List<InvoiceItem> invoiceItems = new ArrayList<InvoiceItem>();
@@ -42,15 +43,16 @@ public class MockInvoice extends EntityBase implements Invoice {
private final LocalDate targetDate;
private final Currency currency;
private final boolean migrationInvoice;
+ private final InvoiceStatus status;
// used to create a new invoice
public MockInvoice(final UUID accountId, final LocalDate invoiceDate, final LocalDate targetDate, final Currency currency) {
- this(UUID.randomUUID(), accountId, null, invoiceDate, targetDate, currency, false);
+ this(UUID.randomUUID(), accountId, null, invoiceDate, targetDate, currency, false, InvoiceStatus.COMMITTED);
}
// used to hydrate invoice from persistence layer
public MockInvoice(final UUID invoiceId, final UUID accountId, @Nullable final Integer invoiceNumber, final LocalDate invoiceDate,
- final LocalDate targetDate, final Currency currency, final boolean isMigrationInvoice) {
+ final LocalDate targetDate, final Currency currency, final boolean isMigrationInvoice, InvoiceStatus status) {
super(invoiceId);
this.accountId = accountId;
this.invoiceNumber = invoiceNumber;
@@ -58,6 +60,7 @@ public class MockInvoice extends EntityBase implements Invoice {
this.targetDate = targetDate;
this.currency = currency;
this.migrationInvoice = isMigrationInvoice;
+ this.status = status;
}
@Override
@@ -194,8 +197,13 @@ public class MockInvoice extends EntityBase implements Invoice {
}
@Override
+ public InvoiceStatus getStatus() {
+ return status;
+ }
+
+ @Override
public String toString() {
- return "DefaultInvoice [items=" + invoiceItems + ", payments=" + payments + ", id=" + id + ", accountId=" + accountId + ", invoiceDate=" + invoiceDate + ", targetDate=" + targetDate + ", currency=" + currency + ", amountPaid=" + getPaidAmount() + "]";
+ return "DefaultInvoice [items=" + invoiceItems + ", payments=" + payments + ", id=" + id + ", accountId=" + accountId + ", invoiceDate=" + invoiceDate + ", targetDate=" + targetDate + ", currency=" + currency + ", amountPaid=" + getPaidAmount() + ", status=" + status + "]";
}
@Override