killbill-aplcache
Changes
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessInvoiceDao.java 37(+22 -15)
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceAdjustmentModelDao.java 2(+2 -0)
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemAdjustmentModelDao.java 2(+2 -0)
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemBaseModelDao.java 8(+7 -1)
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemCreditModelDao.java 2(+2 -0)
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemModelDao.java 2(+2 -0)
osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java 3(+3 -0)
osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoice.java 1(+1 -0)
osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoiceItem.java 1(+1 -0)
osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java 1(+1 -0)
Details
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessInvoiceDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessInvoiceDao.java
index 52432dc..d67189e 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessInvoiceDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessInvoiceDao.java
@@ -214,17 +214,19 @@ public class BusinessInvoiceDao extends BusinessAnalyticsDaoBase {
final BusinessInvoiceItemType businessInvoiceItemType;
if (isCharge(invoiceItem)) {
businessInvoiceItemType = BusinessInvoiceItemType.CHARGE;
- } else if (isAccountCreditItem(invoiceItem, otherInvoiceItemsOnInvoice)) {
+ } else if (isAccountCreditItem(invoiceItem)) {
businessInvoiceItemType = BusinessInvoiceItemType.ACCOUNT_CREDIT;
- } else if (isInvoiceItemAdjustementItem(invoiceItem)) {
+ } else if (isInvoiceItemAdjustmentItem(invoiceItem)) {
businessInvoiceItemType = BusinessInvoiceItemType.INVOICE_ITEM_ADJUSTMENT;
- } else if (isInvoiceAdjustementItem(invoiceItem, otherInvoiceItemsOnInvoice)) {
+ } else if (isInvoiceAdjustmentItem(invoiceItem, otherInvoiceItemsOnInvoice)) {
businessInvoiceItemType = BusinessInvoiceItemType.INVOICE_ADJUSTMENT;
} else {
// We don't care
return null;
}
+ final Boolean revenueRecognizable = isRevenueRecognizable(invoiceItem);
+
final Long secondInvoiceItemRecordId;
if (invoiceItem instanceof AdjustmentInvoiceItemForRepair) {
secondInvoiceItemRecordId = getInvoiceItemRecordId(((AdjustmentInvoiceItemForRepair) invoiceItem).getSecondId(), context);
@@ -236,6 +238,7 @@ public class BusinessInvoiceDao extends BusinessAnalyticsDaoBase {
accountRecordId,
invoice,
invoiceItem,
+ revenueRecognizable,
businessInvoiceItemType,
invoiceItemRecordId,
secondInvoiceItemRecordId,
@@ -247,29 +250,33 @@ public class BusinessInvoiceDao extends BusinessAnalyticsDaoBase {
reportGroup);
}
+ @VisibleForTesting
+ Boolean isRevenueRecognizable(final InvoiceItem invoiceItem) {
+ // REFUND_ADJ are recognizable because associated with a payment
+ return !InvoiceItemType.CREDIT_ADJ.equals(invoiceItem.getInvoiceItemType());
+ }
+
// Invoice adjustments
- private boolean isInvoiceAdjustementItem(final InvoiceItem invoiceItem, final Collection<InvoiceItem> otherInvoiceItemsOnInvoice) {
+ @VisibleForTesting
+ boolean isInvoiceAdjustmentItem(final InvoiceItem invoiceItem, final Collection<InvoiceItem> otherInvoiceItemsOnInvoice) {
// Either REFUND_ADJ
return InvoiceItemType.REFUND_ADJ.equals(invoiceItem.getInvoiceItemType()) ||
- // Or invoice level credit
+ // Or invoice level credit, i.e. credit adj, but NOT on its on own invoice
+ // Note: the negative credit adj items (internal generation of account level credits) doesn't figure in analytics
(InvoiceItemType.CREDIT_ADJ.equals(invoiceItem.getInvoiceItemType()) &&
- !isAccountCreditItem(invoiceItem, otherInvoiceItemsOnInvoice));
+ !(otherInvoiceItemsOnInvoice.size() == 1 &&
+ InvoiceItemType.CBA_ADJ.equals(otherInvoiceItemsOnInvoice.iterator().next().getInvoiceItemType()) &&
+ otherInvoiceItemsOnInvoice.iterator().next().getAmount().compareTo(invoiceItem.getAmount().negate()) == 0));
}
// Item adjustments
- private boolean isInvoiceItemAdjustementItem(final InvoiceItem invoiceItem) {
+ private boolean isInvoiceItemAdjustmentItem(final InvoiceItem invoiceItem) {
return InvoiceItemType.ITEM_ADJ.equals(invoiceItem.getInvoiceItemType());
}
// Account credits, used or consumed
- private boolean isAccountCreditItem(final InvoiceItem invoiceItem, final Collection<InvoiceItem> otherInvoiceItemsOnInvoice) {
- // Either CBA (positive or negative, i.e. given or consumed)
- return InvoiceItemType.CBA_ADJ.equals(invoiceItem.getInvoiceItemType()) ||
- // Or credit adj on its on own invoice (credit adj is negative, hence the CBA item)
- (InvoiceItemType.CREDIT_ADJ.equals(invoiceItem.getInvoiceItemType()) &&
- otherInvoiceItemsOnInvoice.size() == 1 &&
- InvoiceItemType.CBA_ADJ.equals(otherInvoiceItemsOnInvoice.iterator().next().getInvoiceItemType()) &&
- otherInvoiceItemsOnInvoice.iterator().next().getAmount().compareTo(invoiceItem.getAmount().negate()) == 0);
+ private boolean isAccountCreditItem(final InvoiceItem invoiceItem) {
+ return InvoiceItemType.CBA_ADJ.equals(invoiceItem.getInvoiceItemType());
}
// Regular line item (charges)
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceAdjustmentModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceAdjustmentModelDao.java
index a437645..2114226 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceAdjustmentModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceAdjustmentModelDao.java
@@ -34,6 +34,7 @@ public class BusinessInvoiceAdjustmentModelDao extends BusinessInvoiceItemBaseMo
final Long accountRecordId,
final Invoice invoice,
final InvoiceItem invoiceItem,
+ final Boolean revenueRecognizable,
final Long invoiceItemRecordId,
final Long secondInvoiceItemRecordId,
@Nullable final SubscriptionBundle bundle,
@@ -46,6 +47,7 @@ public class BusinessInvoiceAdjustmentModelDao extends BusinessInvoiceItemBaseMo
accountRecordId,
invoice,
invoiceItem,
+ revenueRecognizable,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemAdjustmentModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemAdjustmentModelDao.java
index fab5ff4..bbc2af6 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemAdjustmentModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemAdjustmentModelDao.java
@@ -34,6 +34,7 @@ public class BusinessInvoiceItemAdjustmentModelDao extends BusinessInvoiceItemBa
final Long accountRecordId,
final Invoice invoice,
final InvoiceItem invoiceItem,
+ final Boolean revenueRecognizable,
final Long invoiceItemRecordId,
final Long secondInvoiceItemRecordId,
@Nullable final SubscriptionBundle bundle,
@@ -46,6 +47,7 @@ public class BusinessInvoiceItemAdjustmentModelDao extends BusinessInvoiceItemBa
accountRecordId,
invoice,
invoiceItem,
+ revenueRecognizable,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemBaseModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemBaseModelDao.java
index 5b29b03..b04fe8d 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemBaseModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemBaseModelDao.java
@@ -81,6 +81,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
final Long accountRecordId,
final Invoice invoice,
final InvoiceItem invoiceItem,
+ final Boolean revenueRecognizable,
final BusinessInvoiceItemType businessInvoiceItemType,
final Long invoiceItemRecordId,
final Long secondInvoiceItemRecordId,
@@ -95,6 +96,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
accountRecordId,
invoice,
invoiceItem,
+ revenueRecognizable,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
@@ -108,6 +110,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
accountRecordId,
invoice,
invoiceItem,
+ revenueRecognizable,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
@@ -121,6 +124,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
accountRecordId,
invoice,
invoiceItem,
+ revenueRecognizable,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
@@ -134,6 +138,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
accountRecordId,
invoice,
invoiceItem,
+ revenueRecognizable,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
@@ -232,6 +237,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
final Long accountRecordId,
final Invoice invoice,
final InvoiceItem invoiceItem,
+ final Boolean revenueRecognizable,
final Long invoiceItemRecordId,
final Long secondInvoiceItemRecordId,
@Nullable final SubscriptionBundle bundle,
@@ -255,7 +261,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
invoice.getOriginalChargedAmount(),
invoice.getCreditAdjAmount(),
invoiceItem.getInvoiceItemType().toString(),
- null /* TODO */,
+ revenueRecognizable,
bundle == null ? null : bundle.getExternalKey(),
plan != null ? plan.getProduct().getName() : null,
plan != null ? plan.getProduct().getCatalogName() : null,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemCreditModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemCreditModelDao.java
index 1d64378..bf26129 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemCreditModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemCreditModelDao.java
@@ -34,6 +34,7 @@ public class BusinessInvoiceItemCreditModelDao extends BusinessInvoiceItemBaseMo
final Long accountRecordId,
final Invoice invoice,
final InvoiceItem invoiceItem,
+ final Boolean revenueRecognizable,
final Long invoiceItemRecordId,
final Long secondInvoiceItemRecordId,
@Nullable final SubscriptionBundle bundle,
@@ -46,6 +47,7 @@ public class BusinessInvoiceItemCreditModelDao extends BusinessInvoiceItemBaseMo
accountRecordId,
invoice,
invoiceItem,
+ revenueRecognizable,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemModelDao.java
index 3558946..1e5602a 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemModelDao.java
@@ -34,6 +34,7 @@ public class BusinessInvoiceItemModelDao extends BusinessInvoiceItemBaseModelDao
final Long accountRecordId,
final Invoice invoice,
final InvoiceItem invoiceItem,
+ final Boolean revenueRecognizable,
final Long invoiceItemRecordId,
final Long secondInvoiceItemRecordId,
@Nullable final SubscriptionBundle bundle,
@@ -46,6 +47,7 @@ public class BusinessInvoiceItemModelDao extends BusinessInvoiceItemBaseModelDao
accountRecordId,
invoice,
invoiceItem,
+ revenueRecognizable,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java
index 532c579..fd1d2a3 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java
@@ -100,6 +100,7 @@ public abstract class AnalyticsTestSuiteNoDB {
protected BlockingState blockingState;
protected Invoice invoice;
protected InvoiceItem invoiceItem;
+ protected Boolean recognizable;
protected InvoicePayment invoicePayment;
protected PaymentAttempt paymentAttempt;
protected PaymentMethod paymentMethod;
@@ -245,6 +246,8 @@ public abstract class AnalyticsTestSuiteNoDB {
Mockito.when(invoiceItem.getCreatedDate()).thenReturn(new DateTime(2016, 1, 22, 10, 56, 51, DateTimeZone.UTC));
final UUID invoiceItemId = invoiceItem.getId();
+ recognizable = false;
+
final UUID invoiceId = UUID.randomUUID();
invoicePayment = Mockito.mock(InvoicePayment.class);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoice.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoice.java
index 098b4ca..51fdbb1 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoice.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoice.java
@@ -40,6 +40,7 @@ public class TestBusinessInvoice extends AnalyticsTestSuiteNoDB {
accountRecordId,
invoice,
invoiceItem,
+ recognizable,
invoiceItemType,
invoiceItemRecordId,
secondInvoiceItemRecordId,
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoiceItem.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoiceItem.java
index 8008081..c7c2c55 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoiceItem.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoiceItem.java
@@ -30,6 +30,7 @@ public class TestBusinessInvoiceItem extends AnalyticsTestSuiteNoDB {
accountRecordId,
invoice,
invoiceItem,
+ recognizable,
invoiceItemType,
invoiceItemRecordId,
secondInvoiceItemRecordId,
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java
index db2d2d8..b741810 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java
@@ -78,6 +78,7 @@ public class TestBusinessSnapshot extends AnalyticsTestSuiteNoDB {
accountRecordId,
invoice,
invoiceItem,
+ recognizable,
invoiceItemType,
invoiceItemRecordId,
secondInvoiceItemRecordId,
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceItemModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceItemModelDao.java
index bab0f9c..1d867e8 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceItemModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceItemModelDao.java
@@ -29,6 +29,7 @@ public class TestBusinessInvoiceItemModelDao extends AnalyticsTestSuiteNoDB {
accountRecordId,
invoice,
invoiceItem,
+ recognizable,
invoiceItemRecordId,
secondInvoiceItemRecordId,
null,
@@ -53,6 +54,7 @@ public class TestBusinessInvoiceItemModelDao extends AnalyticsTestSuiteNoDB {
accountRecordId,
invoice,
invoiceItem,
+ recognizable,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessInvoiceDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessInvoiceDao.java
index 7a17fbe..9576342 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessInvoiceDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessInvoiceDao.java
@@ -49,20 +49,19 @@ public class TestBusinessInvoiceDao extends AnalyticsTestSuiteNoDB {
private final UUID invoiceId = UUID.randomUUID();
private final UUID bundleId = UUID.randomUUID();
- private OSGIKillbillDataSource osgiKillbillDataSource;
- private OSGIKillbillLogService osgiKillbillLogService;
+ private BusinessInvoiceDao invoiceDao;
@Override
@BeforeMethod
public void setUp() throws Exception {
super.setUp();
- osgiKillbillDataSource = Mockito.mock(OSGIKillbillDataSource.class);
+ final OSGIKillbillDataSource osgiKillbillDataSource = Mockito.mock(OSGIKillbillDataSource.class);
final DataSource dataSource = Mockito.mock(DataSource.class);
Mockito.when(osgiKillbillDataSource.getDataSource()).thenReturn(dataSource);
- osgiKillbillLogService = Mockito.mock(OSGIKillbillLogService.class);
+ final OSGIKillbillLogService osgiKillbillLogService = Mockito.mock(OSGIKillbillLogService.class);
Mockito.doAnswer(new Answer() {
@Override
public Object answer(final InvocationOnMock invocation) throws Throwable {
@@ -70,6 +69,37 @@ public class TestBusinessInvoiceDao extends AnalyticsTestSuiteNoDB {
return null;
}
}).when(osgiKillbillLogService).log(Mockito.anyInt(), Mockito.anyString());
+
+ invoiceDao = new BusinessInvoiceDao(osgiKillbillLogService, null, osgiKillbillDataSource, null);
+ }
+
+ @Test(groups = "fast")
+ public void testRevenueRecognizable() throws Exception {
+ // All items but CREDIT_ADJ are recognizable by default
+ Assert.assertTrue(invoiceDao.isRevenueRecognizable(createInvoiceItem(InvoiceItemType.RECURRING)
+ ));
+ Assert.assertFalse(invoiceDao.isRevenueRecognizable(createInvoiceItem(InvoiceItemType.CREDIT_ADJ)
+ ));
+ }
+
+ @Test(groups = "fast")
+ public void testInvoiceAdjustment() throws Exception {
+ Assert.assertFalse(invoiceDao.isInvoiceAdjustmentItem(createInvoiceItem(InvoiceItemType.RECURRING),
+ ImmutableList.<InvoiceItem>of()));
+ Assert.assertTrue(invoiceDao.isInvoiceAdjustmentItem(createInvoiceItem(InvoiceItemType.REFUND_ADJ),
+ ImmutableList.<InvoiceItem>of()));
+
+ final InvoiceItem creditAdj = createInvoiceItem(InvoiceItemType.CREDIT_ADJ);
+
+ // Account credit
+ Assert.assertFalse(invoiceDao.isInvoiceAdjustmentItem(creditAdj,
+ ImmutableList.<InvoiceItem>of(createInvoiceItem(InvoiceItemType.CBA_ADJ, creditAdj.getAmount().negate()))));
+
+ Assert.assertTrue(invoiceDao.isInvoiceAdjustmentItem(creditAdj,
+ ImmutableList.<InvoiceItem>of(createInvoiceItem(InvoiceItemType.CBA_ADJ, creditAdj.getAmount().negate().add(BigDecimal.ONE)))));
+ Assert.assertTrue(invoiceDao.isInvoiceAdjustmentItem(creditAdj,
+ ImmutableList.<InvoiceItem>of(createInvoiceItem(InvoiceItemType.RECURRING),
+ createInvoiceItem(InvoiceItemType.CBA_ADJ, creditAdj.getAmount().negate()))));
}
@Test(groups = "fast")
@@ -100,7 +130,6 @@ public class TestBusinessInvoiceDao extends AnalyticsTestSuiteNoDB {
final BigDecimal externalChargeAmount = BigDecimal.TEN;
final InvoiceItem externalCharge = createInvoiceItem(InvoiceItemType.EXTERNAL_CHARGE, externalChargeSubscriptionId, externalStartDate, null, externalChargeAmount, null);
- final BusinessInvoiceDao invoiceDao = new BusinessInvoiceDao(osgiKillbillLogService, null, osgiKillbillDataSource, null);
final Collection<InvoiceItem> sanitizedInvoiceItems = invoiceDao.sanitizeInvoiceItems(ImmutableList.<InvoiceItem>of(recurring1, repair1, reparation1, recurring2, repair2, reparation2, externalCharge));
Assert.assertEquals(sanitizedInvoiceItems.size(), 2 + 2 + 1);
for (final InvoiceItem invoiceItem : sanitizedInvoiceItems) {
@@ -132,6 +161,14 @@ public class TestBusinessInvoiceDao extends AnalyticsTestSuiteNoDB {
}
}
+ private InvoiceItem createInvoiceItem(final InvoiceItemType type) {
+ return createInvoiceItem(type, BigDecimal.TEN);
+ }
+
+ private InvoiceItem createInvoiceItem(final InvoiceItemType type, final BigDecimal amount) {
+ return createInvoiceItem(type, UUID.randomUUID(), new LocalDate(2013, 1, 2), new LocalDate(2013, 2, 5), amount, null);
+ }
+
private InvoiceItem createInvoiceItem(final InvoiceItemType invoiceItemType,
final UUID subscriptionId,
final LocalDate startDate,