Details
diff --git a/analytics/src/main/java/com/ning/billing/analytics/BusinessInvoiceRecorder.java b/analytics/src/main/java/com/ning/billing/analytics/BusinessInvoiceRecorder.java
index 599e049..b3c6996 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/BusinessInvoiceRecorder.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/BusinessInvoiceRecorder.java
@@ -83,7 +83,7 @@ public class BusinessInvoiceRecorder {
@Override
public Void inTransaction(final BusinessInvoiceSqlDao transactional, final TransactionStatus status) throws Exception {
log.info("Started rebuilding transitions for account id {}", accountId);
- deleteInvoicesAndInvoiceItemsForAccountInTransaction(transactional, accountKey);
+ deleteInvoicesAndInvoiceItemsForAccountInTransaction(transactional, accountId);
for (final Invoice invoice : invoiceApi.getInvoicesByAccount(accountId)) {
createInvoiceInTransaction(transactional, accountKey, invoice);
@@ -95,10 +95,10 @@ public class BusinessInvoiceRecorder {
});
}
- private void deleteInvoicesAndInvoiceItemsForAccountInTransaction(final BusinessInvoiceSqlDao transactional, final String accountKey) {
+ private void deleteInvoicesAndInvoiceItemsForAccountInTransaction(final BusinessInvoiceSqlDao transactional, final UUID accountId) {
// We don't use on cascade delete here as we don't want the database layer to be generic - hence we have
// to delete the invoice items manually.
- final List<BusinessInvoice> invoicesToDelete = transactional.getInvoicesForAccount(accountKey);
+ final List<BusinessInvoice> invoicesToDelete = transactional.getInvoicesForAccount(accountId.toString());
final BusinessInvoiceItemSqlDao invoiceItemSqlDao = transactional.become(BusinessInvoiceItemSqlDao.class);
for (final BusinessInvoice businessInvoice : invoicesToDelete) {
final List<BusinessInvoiceItem> invoiceItemsForInvoice = invoiceItemSqlDao.getInvoiceItemsForInvoice(businessInvoice.getInvoiceId().toString());
@@ -107,7 +107,7 @@ public class BusinessInvoiceRecorder {
}
}
- transactional.deleteInvoicesForAccount(accountKey);
+ transactional.deleteInvoicesForAccount(accountId.toString());
}
private void createInvoiceInTransaction(final BusinessInvoiceSqlDao transactional, final String accountKey, final Invoice invoice) {
diff --git a/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessInvoiceBinder.java b/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessInvoiceBinder.java
index 412f323..fa8358b 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessInvoiceBinder.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessInvoiceBinder.java
@@ -43,6 +43,12 @@ public @interface BusinessInvoiceBinder {
public void bind(final SQLStatement q, final BusinessInvoiceBinder bind, final BusinessInvoice invoice) {
q.bind("invoice_id", invoice.getInvoiceId().toString());
+ if (invoice.getInvoiceNumber() != null) {
+ q.bind("invoice_number", invoice.getInvoiceNumber());
+ } else {
+ q.bindNull("invoice_number", Types.BIGINT);
+ }
+
final DateTime dateTimeNow = new DateTime(DateTimeZone.UTC);
if (invoice.getCreatedDate() != null) {
q.bind("created_date", invoice.getCreatedDate().getMillis());
@@ -56,6 +62,7 @@ public @interface BusinessInvoiceBinder {
q.bind("updated_date", dateTimeNow.getMillis());
}
+ q.bind("account_id", invoice.getAccountId().toString());
q.bind("account_key", invoice.getAccountKey());
if (invoice.getInvoiceDate() != null) {
diff --git a/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessInvoiceMapper.java b/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessInvoiceMapper.java
index 93d727a..e6df819 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessInvoiceMapper.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessInvoiceMapper.java
@@ -33,18 +33,20 @@ public class BusinessInvoiceMapper implements ResultSetMapper<BusinessInvoice> {
@Override
public BusinessInvoice map(final int index, final ResultSet r, final StatementContext ctx) throws SQLException {
final UUID invoiceId = UUID.fromString(r.getString(1));
- final DateTime createdDate = new DateTime(r.getLong(2), DateTimeZone.UTC);
- final DateTime updatedDate = new DateTime(r.getLong(3), DateTimeZone.UTC);
- final String accountKey = r.getString(4);
- final DateTime invoiceDate = new DateTime(r.getLong(5), DateTimeZone.UTC);
- final DateTime targetDate = new DateTime(r.getLong(6), DateTimeZone.UTC);
- final Currency currency = Currency.valueOf(r.getString(7));
- final BigDecimal balance = BigDecimal.valueOf(r.getDouble(8));
- final BigDecimal amountPaid = BigDecimal.valueOf(r.getDouble(9));
- final BigDecimal amountCharged = BigDecimal.valueOf(r.getDouble(10));
- final BigDecimal amountCredited = BigDecimal.valueOf(r.getDouble(11));
+ final Integer invoiceNumber = r.getInt(2);
+ final DateTime createdDate = new DateTime(r.getLong(3), DateTimeZone.UTC);
+ final DateTime updatedDate = new DateTime(r.getLong(4), DateTimeZone.UTC);
+ final UUID accountId = UUID.fromString(r.getString(5));
+ final String accountKey = r.getString(6);
+ final DateTime invoiceDate = new DateTime(r.getLong(7), DateTimeZone.UTC);
+ final DateTime targetDate = new DateTime(r.getLong(8), DateTimeZone.UTC);
+ final Currency currency = Currency.valueOf(r.getString(9));
+ final BigDecimal balance = BigDecimal.valueOf(r.getDouble(10));
+ final BigDecimal amountPaid = BigDecimal.valueOf(r.getDouble(11));
+ final BigDecimal amountCharged = BigDecimal.valueOf(r.getDouble(12));
+ final BigDecimal amountCredited = BigDecimal.valueOf(r.getDouble(13));
- return new BusinessInvoice(accountKey, amountCharged, amountCredited, amountPaid, balance, createdDate, currency,
- invoiceDate, invoiceId, targetDate, updatedDate);
+ return new BusinessInvoice(accountId, accountKey, amountCharged, amountCredited, amountPaid, balance, createdDate, currency,
+ invoiceDate, invoiceId, invoiceNumber, targetDate, updatedDate);
}
}
diff --git a/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessInvoiceSqlDao.java b/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessInvoiceSqlDao.java
index 7348fe3..73fbb9b 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessInvoiceSqlDao.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/dao/BusinessInvoiceSqlDao.java
@@ -35,19 +35,19 @@ public interface BusinessInvoiceSqlDao extends Transactional<BusinessInvoiceSqlD
BusinessInvoice getInvoice(@Bind("invoice_id") final String invoiceId);
@SqlQuery
- List<BusinessInvoice> getInvoicesForAccount(@Bind("account_key") final String accountKey);
+ List<BusinessInvoice> getInvoicesForAccount(@Bind("account_id") final String accountId);
- @SqlUpdate
- int createInvoice(@BusinessInvoiceBinder final BusinessInvoice invoice);
+ @SqlQuery
+ List<BusinessInvoice> getInvoicesForAccountByKey(@Bind("account_key") final String accountKey);
@SqlUpdate
- int updateInvoice(@BusinessInvoiceBinder final BusinessInvoice invoice);
+ int createInvoice(@BusinessInvoiceBinder final BusinessInvoice invoice);
@SqlUpdate
int deleteInvoice(@Bind("invoice_id") final String invoiceId);
@SqlUpdate
- void deleteInvoicesForAccount(@Bind("account_key") final String accountKey);
+ void deleteInvoicesForAccount(@Bind("account_id") final String accountId);
@SqlUpdate
void test();
diff --git a/analytics/src/main/java/com/ning/billing/analytics/dao/DefaultAnalyticsDao.java b/analytics/src/main/java/com/ning/billing/analytics/dao/DefaultAnalyticsDao.java
index daac60d..edbf529 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/dao/DefaultAnalyticsDao.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/dao/DefaultAnalyticsDao.java
@@ -57,7 +57,7 @@ public class DefaultAnalyticsDao implements AnalyticsDao {
@Override
public List<BusinessInvoice> getInvoicesByKey(final String accountKey) {
- return invoiceSqlDao.getInvoicesForAccount(accountKey);
+ return invoiceSqlDao.getInvoicesForAccountByKey(accountKey);
}
@Override
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 beab7d6..cb3138a 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
@@ -28,22 +28,24 @@ import com.ning.billing.invoice.api.Invoice;
public class BusinessInvoice {
private final UUID invoiceId;
+ private final Integer invoiceNumber;
private final DateTime createdDate;
-
- private DateTime updatedDate;
- private String accountKey;
- private DateTime invoiceDate;
- private DateTime targetDate;
- private Currency currency;
- private BigDecimal balance;
- private BigDecimal amountPaid;
- private BigDecimal amountCharged;
- private BigDecimal amountCredited;
-
- public BusinessInvoice(final String accountKey, final BigDecimal amountCharged, final BigDecimal amountCredited,
+ private final DateTime updatedDate;
+ private final UUID accountId;
+ private final String accountKey;
+ private final DateTime invoiceDate;
+ private final DateTime targetDate;
+ private final Currency currency;
+ private final BigDecimal balance;
+ private final BigDecimal amountPaid;
+ private final BigDecimal amountCharged;
+ private final BigDecimal amountCredited;
+
+ public BusinessInvoice(final UUID accountId, final String accountKey, final BigDecimal amountCharged, final BigDecimal amountCredited,
final BigDecimal amountPaid, final BigDecimal balance, final DateTime createdDate,
- final Currency currency, final DateTime invoiceDate, final UUID invoiceId,
+ final Currency currency, final DateTime invoiceDate, final UUID invoiceId, final Integer invoiceNumber,
final DateTime targetDate, final DateTime updatedDate) {
+ this.accountId = accountId;
this.accountKey = accountKey;
this.amountCharged = amountCharged;
this.amountCredited = amountCredited;
@@ -53,105 +55,80 @@ public class BusinessInvoice {
this.currency = currency;
this.invoiceDate = invoiceDate;
this.invoiceId = invoiceId;
+ this.invoiceNumber = invoiceNumber;
this.targetDate = targetDate;
this.updatedDate = updatedDate;
}
public BusinessInvoice(final String accountKey, final Invoice invoice) {
- // 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(),
+ // TODO STEPH this is probably not what we want (CBA versus credit)
+ this(invoice.getAccountId(), accountKey, invoice.getChargedAmount(), invoice.getCBAAmount(), invoice.getPaidAmount(), invoice.getBalance(),
+ new DateTime(DateTimeZone.UTC), invoice.getCurrency(), invoice.getInvoiceDate(), invoice.getId(), invoice.getInvoiceNumber(), invoice.getTargetDate(),
new DateTime(DateTimeZone.UTC));
}
- public DateTime getCreatedDate() {
- return createdDate;
- }
-
- public UUID getInvoiceId() {
- return invoiceId;
+ public UUID getAccountId() {
+ return accountId;
}
public String getAccountKey() {
return accountKey;
}
- public void setAccountKey(final String accountKey) {
- this.accountKey = accountKey;
- }
-
public BigDecimal getAmountCharged() {
return amountCharged;
}
- public void setAmountCharged(final BigDecimal amountCharged) {
- this.amountCharged = amountCharged;
- }
-
public BigDecimal getAmountCredited() {
return amountCredited;
}
- public void setAmountCredited(final BigDecimal amountCredited) {
- this.amountCredited = amountCredited;
- }
-
public BigDecimal getAmountPaid() {
return amountPaid;
}
- public void setAmountPaid(final BigDecimal amountPaid) {
- this.amountPaid = amountPaid;
- }
-
public BigDecimal getBalance() {
return balance;
}
- public void setBalance(final BigDecimal balance) {
- this.balance = balance;
+ public DateTime getCreatedDate() {
+ return createdDate;
}
public Currency getCurrency() {
return currency;
}
- public void setCurrency(final Currency currency) {
- this.currency = currency;
- }
-
public DateTime getInvoiceDate() {
return invoiceDate;
}
- public void setInvoiceDate(final DateTime invoiceDate) {
- this.invoiceDate = invoiceDate;
+ public UUID getInvoiceId() {
+ return invoiceId;
}
- public DateTime getTargetDate() {
- return targetDate;
+ public Integer getInvoiceNumber() {
+ return invoiceNumber;
}
- public void setTargetDate(final DateTime targetDate) {
- this.targetDate = targetDate;
+ public DateTime getTargetDate() {
+ return targetDate;
}
public DateTime getUpdatedDate() {
return updatedDate;
}
- public void setUpdatedDate(final DateTime updatedDate) {
- this.updatedDate = updatedDate;
- }
-
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("BusinessInvoice");
- sb.append("{accountKey='").append(accountKey).append('\'');
+ sb.append("{accountId=").append(accountId);
sb.append(", invoiceId=").append(invoiceId);
+ sb.append(", invoiceNumber=").append(invoiceNumber);
sb.append(", createdDate=").append(createdDate);
sb.append(", updatedDate=").append(updatedDate);
+ sb.append(", accountKey='").append(accountKey).append('\'');
sb.append(", invoiceDate=").append(invoiceDate);
sb.append(", targetDate=").append(targetDate);
sb.append(", currency=").append(currency);
@@ -174,6 +151,9 @@ public class BusinessInvoice {
final BusinessInvoice that = (BusinessInvoice) o;
+ if (accountId != null ? !accountId.equals(that.accountId) : that.accountId != null) {
+ return false;
+ }
if (accountKey != null ? !accountKey.equals(that.accountKey) : that.accountKey != null) {
return false;
}
@@ -189,22 +169,25 @@ public class BusinessInvoice {
if (balance != null ? Rounder.round(balance) != Rounder.round(that.balance) : that.balance != null) {
return false;
}
- if (createdDate != null ? !createdDate.equals(that.createdDate) : that.createdDate != null) {
+ if (createdDate != null ? createdDate.compareTo(that.createdDate) != 0 : that.createdDate != null) {
return false;
}
if (currency != that.currency) {
return false;
}
- if (invoiceDate != null ? !invoiceDate.equals(that.invoiceDate) : that.invoiceDate != null) {
+ if (invoiceDate != null ? invoiceDate.compareTo(that.invoiceDate) != 0 : that.invoiceDate != null) {
return false;
}
if (invoiceId != null ? !invoiceId.equals(that.invoiceId) : that.invoiceId != null) {
return false;
}
- if (targetDate != null ? !targetDate.equals(that.targetDate) : that.targetDate != null) {
+ if (invoiceNumber != null ? !invoiceNumber.equals(that.invoiceNumber) : that.invoiceNumber != null) {
+ return false;
+ }
+ if (targetDate != null ? targetDate.compareTo(that.targetDate) != 0 : that.targetDate != null) {
return false;
}
- if (updatedDate != null ? !updatedDate.equals(that.updatedDate) : that.updatedDate != null) {
+ if (updatedDate != null ? updatedDate.compareTo(that.updatedDate) != 0 : that.updatedDate != null) {
return false;
}
@@ -214,8 +197,10 @@ public class BusinessInvoice {
@Override
public int hashCode() {
int result = invoiceId != null ? invoiceId.hashCode() : 0;
+ result = 31 * result + (invoiceNumber != null ? invoiceNumber.hashCode() : 0);
result = 31 * result + (createdDate != null ? createdDate.hashCode() : 0);
result = 31 * result + (updatedDate != null ? updatedDate.hashCode() : 0);
+ result = 31 * result + (accountId != null ? accountId.hashCode() : 0);
result = 31 * result + (accountKey != null ? accountKey.hashCode() : 0);
result = 31 * result + (invoiceDate != null ? invoiceDate.hashCode() : 0);
result = 31 * result + (targetDate != null ? targetDate.hashCode() : 0);
diff --git a/analytics/src/main/resources/com/ning/billing/analytics/dao/BusinessInvoiceSqlDao.sql.stg b/analytics/src/main/resources/com/ning/billing/analytics/dao/BusinessInvoiceSqlDao.sql.stg
index ed8d685..fed7d20 100644
--- a/analytics/src/main/resources/com/ning/billing/analytics/dao/BusinessInvoiceSqlDao.sql.stg
+++ b/analytics/src/main/resources/com/ning/billing/analytics/dao/BusinessInvoiceSqlDao.sql.stg
@@ -3,8 +3,10 @@ group BusinessInvoice;
getInvoice(invoice_id) ::= <<
select
invoice_id
+, invoice_number
, created_date
, updated_date
+, account_id
, account_key
, invoice_date
, target_date
@@ -19,11 +21,34 @@ limit 1
;
>>
-getInvoicesForAccount(account_key) ::= <<
+getInvoicesForAccount(account_id) ::= <<
select
invoice_id
+, invoice_number
, created_date
, updated_date
+, account_id
+, account_key
+, invoice_date
+, target_date
+, currency
+, balance
+, amount_paid
+, amount_charged
+, amount_credited
+from bin
+where account_id = :account_id
+order by created_date asc
+;
+>>
+
+getInvoicesForAccountByKey(account_key) ::= <<
+select
+ invoice_id
+, invoice_number
+, created_date
+, updated_date
+, account_id
, account_key
, invoice_date
, target_date
@@ -41,8 +66,10 @@ order by created_date asc
createInvoice() ::= <<
insert into bin (
invoice_id
+, invoice_number
, created_date
, updated_date
+, account_id
, account_key
, invoice_date
, target_date
@@ -53,8 +80,10 @@ insert into bin (
, amount_credited
) values (
:invoice_id
+, :invoice_number
, :created_date
, :updated_date
+, :account_id
, :account_key
, :invoice_date
, :target_date
@@ -69,6 +98,7 @@ insert into bin (
updateInvoice() ::= <<
update bin set
updated_date = :updated_date
+, invoice_number = :invoice_number
, account_key = :account_key
, invoice_date = :invoice_date
, target_date = :target_date
@@ -85,8 +115,8 @@ deleteInvoice(invoice_id) ::= <<
delete from bin where invoice_id = :invoice_id;
>>
-deleteInvoicesForAccount(account_key) ::= <<
-delete from bin where account_key = :account_key;
+deleteInvoicesForAccount(account_id) ::= <<
+delete from bin where account_id = :account_id;
>>
test() ::= <<
diff --git a/analytics/src/main/resources/com/ning/billing/analytics/ddl.sql b/analytics/src/main/resources/com/ning/billing/analytics/ddl.sql
index dfa45c4..09d0a0c 100644
--- a/analytics/src/main/resources/com/ning/billing/analytics/ddl.sql
+++ b/analytics/src/main/resources/com/ning/billing/analytics/ddl.sql
@@ -61,8 +61,10 @@ drop table if exists bin;
create table bin (
record_id int(11) unsigned not null auto_increment
, invoice_id char(36) not null
+, invoice_number bigint default null
, created_date bigint not null
, updated_date bigint not null
+, account_id char(36) not null
, account_key varchar(50) not null
, invoice_date bigint not null
, target_date bigint not null
diff --git a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceSqlDao.java b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceSqlDao.java
index 8373f81..b66e4ad 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceSqlDao.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/dao/TestBusinessInvoiceSqlDao.java
@@ -42,8 +42,9 @@ public class TestBusinessInvoiceSqlDao extends TestWithEmbeddedDB {
@Test(groups = "slow")
public void testCRUD() throws Exception {
final UUID invoiceId = UUID.randomUUID();
+ final UUID accountId = UUID.randomUUID();
final String accountKey = UUID.randomUUID().toString();
- final BusinessInvoice invoice = createInvoice(invoiceId, accountKey);
+ final BusinessInvoice invoice = createInvoice(accountId, invoiceId, accountKey);
// Verify initial state
Assert.assertNull(invoiceSqlDao.getInvoice(invoice.getInvoiceId().toString()));
@@ -54,43 +55,38 @@ public class TestBusinessInvoiceSqlDao extends TestWithEmbeddedDB {
// Retrieve it
Assert.assertEquals(invoiceSqlDao.getInvoice(invoice.getInvoiceId().toString()), invoice);
- Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(invoice.getAccountKey()).size(), 1);
- Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(invoice.getAccountKey()).get(0), invoice);
-
- // Update and retrieve it
- invoice.setInvoiceDate(new DateTime(DateTimeZone.UTC));
- Assert.assertEquals(invoiceSqlDao.updateInvoice(invoice), 1);
- Assert.assertEquals(invoiceSqlDao.getInvoice(invoice.getInvoiceId().toString()), invoice);
- Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(invoice.getAccountKey()).size(), 1);
- Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(invoice.getAccountKey()).get(0), invoice);
+ Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(invoice.getAccountId().toString()).size(), 1);
+ Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(invoice.getAccountId().toString()).get(0), invoice);
// Delete it
Assert.assertEquals(invoiceSqlDao.deleteInvoice(invoice.getInvoiceId().toString()), 1);
Assert.assertNull(invoiceSqlDao.getInvoice(invoice.getInvoiceId().toString()));
- Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(invoice.getAccountKey()).size(), 0);
+ Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(invoice.getAccountId().toString()).size(), 0);
}
@Test(groups = "slow")
public void testSegmentation() throws Exception {
final UUID invoiceId1 = UUID.randomUUID();
+ final UUID accountId1 = UUID.randomUUID();
final String accountKey1 = UUID.randomUUID().toString();
- final BusinessInvoice invoice1 = createInvoice(invoiceId1, accountKey1);
+ final BusinessInvoice invoice1 = createInvoice(invoiceId1, accountId1, accountKey1);
final UUID invoiceId2 = UUID.randomUUID();
+ final UUID accountId2 = UUID.randomUUID();
final String accountKey2 = UUID.randomUUID().toString();
- final BusinessInvoice invoice2 = createInvoice(invoiceId2, accountKey2);
+ final BusinessInvoice invoice2 = createInvoice(invoiceId2, accountId2, accountKey2);
// Create both invoices
Assert.assertEquals(invoiceSqlDao.createInvoice(invoice1), 1);
Assert.assertEquals(invoiceSqlDao.createInvoice(invoice2), 1);
- Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(accountKey1).size(), 1);
- Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(accountKey2).size(), 1);
+ Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(accountId1.toString()).size(), 1);
+ Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(accountId2.toString()).size(), 1);
// Remove the first invoice
Assert.assertEquals(invoiceSqlDao.deleteInvoice(invoice1.getInvoiceId().toString()), 1);
- Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(accountKey1).size(), 0);
- Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(accountKey2).size(), 1);
+ Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(accountId1.toString()).size(), 0);
+ Assert.assertEquals(invoiceSqlDao.getInvoicesForAccount(accountId2.toString()).size(), 1);
}
@Test(groups = "slow")
@@ -103,7 +99,7 @@ public class TestBusinessInvoiceSqlDao extends TestWithEmbeddedDB {
}
}
- private BusinessInvoice createInvoice(final UUID invoiceId, final String accountKey) {
+ private BusinessInvoice createInvoice(final UUID invoiceId, final UUID accountId, final String accountKey) {
final BigDecimal amountCharged = BigDecimal.ZERO;
final BigDecimal amountCredited = BigDecimal.ONE;
final BigDecimal amountPaid = BigDecimal.TEN;
@@ -114,7 +110,7 @@ public class TestBusinessInvoiceSqlDao extends TestWithEmbeddedDB {
final DateTime targetDate = new DateTime(DateTimeZone.UTC);
final DateTime updatedDate = new DateTime(DateTimeZone.UTC);
- return new BusinessInvoice(accountKey, amountCharged, amountCredited, amountPaid, balance,
- createdDate, currency, invoiceDate, invoiceId, targetDate, updatedDate);
+ return new BusinessInvoice(accountId, accountKey, amountCharged, amountCredited, amountPaid, balance,
+ createdDate, currency, invoiceDate, invoiceId, 12, targetDate, updatedDate);
}
}
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoice.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoice.java
index 869284d..9ec77f2 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoice.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessInvoice.java
@@ -30,6 +30,7 @@ import com.ning.billing.catalog.api.Currency;
public class TestBusinessInvoice extends AnalyticsTestSuite {
@Test(groups = "fast")
public void testEquals() throws Exception {
+ final UUID accountId = UUID.randomUUID();
final String accountKey = UUID.randomUUID().toString();
final BigDecimal amountCharged = BigDecimal.ZERO;
final BigDecimal amountCredited = BigDecimal.ONE;
@@ -39,13 +40,15 @@ public class TestBusinessInvoice extends AnalyticsTestSuite {
final Currency currency = Currency.MXN;
final DateTime invoiceDate = new DateTime(DateTimeZone.UTC);
final UUID invoiceId = UUID.randomUUID();
+ final Integer invoiceNumber = 15;
final DateTime targetDate = new DateTime(DateTimeZone.UTC);
final DateTime updatedDate = new DateTime(DateTimeZone.UTC);
- final BusinessInvoice invoice = new BusinessInvoice(accountKey, amountCharged, amountCredited, amountPaid, balance,
- createdDate, currency, invoiceDate, invoiceId, targetDate, updatedDate);
+ final BusinessInvoice invoice = new BusinessInvoice(accountId, accountKey, amountCharged, amountCredited, amountPaid, balance,
+ createdDate, currency, invoiceDate, invoiceId, invoiceNumber, targetDate, updatedDate);
Assert.assertSame(invoice, invoice);
Assert.assertEquals(invoice, invoice);
Assert.assertTrue(invoice.equals(invoice));
+ Assert.assertEquals(invoice.getAccountId(), accountId);
Assert.assertEquals(invoice.getAccountKey(), accountKey);
Assert.assertEquals(invoice.getAmountCharged(), amountCharged);
Assert.assertEquals(invoice.getAmountCredited(), amountCredited);
@@ -55,23 +58,12 @@ public class TestBusinessInvoice extends AnalyticsTestSuite {
Assert.assertEquals(invoice.getCurrency(), currency);
Assert.assertEquals(invoice.getInvoiceDate(), invoiceDate);
Assert.assertEquals(invoice.getInvoiceId(), invoiceId);
+ Assert.assertEquals(invoice.getInvoiceNumber(), invoiceNumber);
Assert.assertEquals(invoice.getTargetDate(), targetDate);
Assert.assertEquals(invoice.getUpdatedDate(), updatedDate);
- final BusinessInvoice otherInvoice = new BusinessInvoice(null, null, null, null, null, createdDate, null,
- null, invoiceId, null, null);
+ final BusinessInvoice otherInvoice = new BusinessInvoice(null, null, null, null, null, null, createdDate, null,
+ null, invoiceId, 0, null, null);
Assert.assertFalse(invoice.equals(otherInvoice));
-
- // Test setters
- otherInvoice.setAccountKey(accountKey);
- otherInvoice.setAmountCharged(amountCharged);
- otherInvoice.setAmountCredited(amountCredited);
- otherInvoice.setAmountPaid(amountPaid);
- otherInvoice.setBalance(balance);
- otherInvoice.setCurrency(currency);
- otherInvoice.setInvoiceDate(invoiceDate);
- otherInvoice.setTargetDate(targetDate);
- otherInvoice.setUpdatedDate(updatedDate);
- Assert.assertTrue(invoice.equals(otherInvoice));
}
}