Details
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/generator/DefaultInvoiceGenerator.java b/invoice/src/main/java/org/killbill/billing/invoice/generator/DefaultInvoiceGenerator.java
index 8fa4886..5da49d2 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/generator/DefaultInvoiceGenerator.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/generator/DefaultInvoiceGenerator.java
@@ -74,7 +74,6 @@ public class DefaultInvoiceGenerator implements InvoiceGenerator {
validateTargetDate(targetDate);
final LocalDate adjustedTargetDate = adjustTargetDate(existingInvoices, targetDate);
- // STEPH ?
final LocalDate invoiceDate = events.getAccountDateAndTimeZoneContext().computeLocalDateFromFixedAccountOffset(clock.getUTCNow());
final Invoice invoice = new DefaultInvoice(account.getId(), invoiceDate, adjustedTargetDate, targetCurrency);
final UUID invoiceId = invoice.getId();
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 8baaefa..0394a5a 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
@@ -54,6 +54,8 @@ public class DefaultInvoice extends EntityBase implements Invoice, Cloneable {
private final Currency processedCurrency;
+
+
// 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);
@@ -64,22 +66,8 @@ public class DefaultInvoice extends EntityBase implements Invoice, Cloneable {
this(invoiceId, null, accountId, invoiceNumber, invoiceDate, targetDate, currency, currency, isMigrationInvoice);
}
- // Used to hydrate invoice from persistence layer
- public 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) {
- super(invoiceId, createdDate, createdDate);
- this.accountId = accountId;
- this.invoiceNumber = invoiceNumber;
- this.invoiceDate = invoiceDate;
- this.targetDate = targetDate;
- this.currency = currency;
- this.processedCurrency = processedCurrency;
- this.migrationInvoice = isMigrationInvoice;
- this.invoiceItems = new ArrayList<InvoiceItem>();
- this.payments = new ArrayList<InvoicePayment>();
- }
+ // This CTOR is used to return an existing invoice and must include everything (items, payments, tags,..)
public DefaultInvoice(final InvoiceModelDao invoiceModelDao) {
this(invoiceModelDao.getId(), invoiceModelDao.getCreatedDate(), invoiceModelDao.getAccountId(),
invoiceModelDao.getInvoiceNumber(), invoiceModelDao.getInvoiceDate(), invoiceModelDao.getTargetDate(),
@@ -98,6 +86,22 @@ 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) {
+ super(invoiceId, createdDate, createdDate);
+ this.accountId = accountId;
+ this.invoiceNumber = invoiceNumber;
+ this.invoiceDate = invoiceDate;
+ this.targetDate = targetDate;
+ this.currency = currency;
+ this.processedCurrency = processedCurrency;
+ this.migrationInvoice = isMigrationInvoice;
+ this.invoiceItems = new ArrayList<InvoiceItem>();
+ this.payments = new ArrayList<InvoicePayment>();
+ }
+
+
// Semi deep copy where we copy the lists but not the elements in the lists since they are immutables.
@Override
public Object clone() {
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 32b9b86..638f017 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
@@ -367,9 +367,10 @@ public class TestDefaultInvoiceFormatter extends InvoiceTestSuiteNoDB {
Locale.US);
}
+
@Test(groups = "fast")
public void testProcessedCurrencyExists() throws Exception {
- final Invoice invoice = new DefaultInvoice(UUID.randomUUID(), clock.getUTCNow(), UUID.randomUUID(), new Integer(234), new LocalDate(), new LocalDate(), Currency.BRL, Currency.USD, false);
+ final Invoice invoice = new DefaultInvoice(UUID.randomUUID(), UUID.randomUUID(), new Integer(234), new LocalDate(), new LocalDate(), Currency.BRL, false);
checkOutput(invoice,
"{{#invoice.processedCurrency}}" +
@@ -385,7 +386,7 @@ public class TestDefaultInvoiceFormatter extends InvoiceTestSuiteNoDB {
@Test(groups = "fast")
public void testProcessedCurrencyDoesNotExist() throws Exception {
- final Invoice invoice = new DefaultInvoice(UUID.randomUUID(), clock.getUTCNow(), UUID.randomUUID(), new Integer(234), new LocalDate(), new LocalDate(), Currency.USD, Currency.USD, false);
+ final Invoice invoice = new DefaultInvoice(UUID.randomUUID(), UUID.randomUUID(), new Integer(234), new LocalDate(), new LocalDate(), Currency.USD, false);
checkOutput(invoice,
"{{#invoice.processedCurrency}}" +
@@ -404,7 +405,8 @@ public class TestDefaultInvoiceFormatter extends InvoiceTestSuiteNoDB {
final FixedPriceInvoiceItem fixedItemBRL = new FixedPriceInvoiceItem(UUID.randomUUID(), UUID.randomUUID(), null, null,
UUID.randomUUID().toString(), UUID.randomUUID().toString(),
new LocalDate(), new BigDecimal("1499.95"), Currency.BRL);
- final Invoice invoice = new DefaultInvoice(UUID.randomUUID(), clock.getUTCNow(), UUID.randomUUID(), new Integer(234), new LocalDate(), new LocalDate(), Currency.BRL, Currency.BRL, false);
+
+ final Invoice invoice = new DefaultInvoice(UUID.randomUUID(), UUID.randomUUID(), new Integer(234), new LocalDate(), new LocalDate(), Currency.BRL, false);
invoice.addInvoiceItem(fixedItemBRL);
final String template = "<html>\n" +