killbill-memoizeit
Changes
invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalUsageInArrear.java 13(+0 -13)
Details
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/generator/InvoiceWithMetadata.java b/invoice/src/main/java/org/killbill/billing/invoice/generator/InvoiceWithMetadata.java
index ecb7c41..9425e0c 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/generator/InvoiceWithMetadata.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/generator/InvoiceWithMetadata.java
@@ -44,7 +44,6 @@ public class InvoiceWithMetadata {
this.invoice = originalInvoice;
this.perSubscriptionFutureNotificationDates = perSubscriptionFutureNotificationDates;
build();
- removeMarkerUsageItems();
}
public DefaultInvoice getInvoice() {
@@ -66,6 +65,9 @@ public class InvoiceWithMetadata {
tmp.resetNextRecurringDate();
}
}
+ if (invoice != null && invoice.getInvoiceItems().isEmpty()) {
+ invoice = null;
+ }
}
private boolean hasItemsForSubscription(final UUID subscriptionId, final InvoiceItemType invoiceItemType) {
@@ -78,32 +80,6 @@ public class InvoiceWithMetadata {
});
}
- protected void removeMarkerUsageItems() {
- if (invoice != null) {
- final Iterator<InvoiceItem> it = invoice.getInvoiceItems().iterator();
- while (it.hasNext()) {
- final InvoiceItem item = it.next();
- if (isMarkerUsageItem(item)) {
- it.remove();
- }
- }
- if (invoice.getInvoiceItems().isEmpty()) {
- invoice = null;
- }
- }
- }
-
- //
- // $0 Usage item with no detail section
- // ($0 Usage item *with* detail section are valid items in case of tiers defined with $0 amount)
- //
- private boolean isMarkerUsageItem(final InvoiceItem item) {
- return item.getInvoiceItemType() == InvoiceItemType.USAGE &&
- item.getItemDetails() == null &&
- item.getAmount().compareTo(BigDecimal.ZERO) == 0;
- }
-
-
public static class SubscriptionFutureNotificationDates {
private final BillingMode recurringBillingMode;
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalUsageInArrear.java b/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalUsageInArrear.java
index e4c0e08..f119913 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalUsageInArrear.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalUsageInArrear.java
@@ -170,19 +170,6 @@ public abstract class ContiguousIntervalUsageInArrear {
}
final List<InvoiceItem> result = Lists.newLinkedList();
-
- // We start by generating 'marker' USAGE items with $0 that will allow to correctly insert the next notification for when there is no USAGE to bill.
- // Those will be removed by the invoicing code later so as to not end up with superfluous $0 items
- LocalDate prevDate = null;
- for (final LocalDate curDate : transitionTimes) {
- if (prevDate != null) {
- final InvoiceItem item = new UsageInvoiceItem(invoiceId, accountId, getBundleId(), getSubscriptionId(), getProductName(), getPlanName(),
- getPhaseName(), usage.getName(), prevDate, curDate, BigDecimal.ZERO, getCurrency());
- result.add(item);
- }
- prevDate = curDate;
- }
-
final List<RolledUpUsage> allUsage = getRolledUpUsage();
// Each RolledUpUsage 'ru' is for a specific time period and across all units
for (final RolledUpUsage ru : allUsage) {
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalCapacityInArrear.java b/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalCapacityInArrear.java
index bd4d5db..a87decb 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalCapacityInArrear.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalCapacityInArrear.java
@@ -213,15 +213,9 @@ public class TestContiguousIntervalCapacityInArrear extends TestUsageInArrearBas
invoiceItems.add(ii2);
final UsageInArrearItemsAndNextNotificationDate usageResult = intervalCapacityInArrear.computeMissingItemsAndNextNotificationDate(invoiceItems);
- final List<InvoiceItem> rawResults = usageResult.getInvoiceItems();
- assertEquals(rawResults.size(), 4);
+ final List<InvoiceItem> result = usageResult.getInvoiceItems();
+ assertEquals(result.size(), 2);
- final List<InvoiceItem> result = ImmutableList.copyOf(Iterables.filter(rawResults, new Predicate<InvoiceItem>() {
- @Override
- public boolean apply(final InvoiceItem input) {
- return input.getAmount().compareTo(BigDecimal.ZERO) > 0;
- }
- }));
assertEquals(result.get(0).getAmount().compareTo(new BigDecimal("9.0")), 0, String.format("%s != 9.0", result.get(0).getAmount()));
assertEquals(result.get(0).getCurrency(), Currency.BTC);
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalConsumableInArrear.java b/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalConsumableInArrear.java
index 87642cc..be5c8de 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalConsumableInArrear.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalConsumableInArrear.java
@@ -378,15 +378,9 @@ public class TestContiguousIntervalConsumableInArrear extends TestUsageInArrearB
invoiceItems.add(ii2);
final UsageInArrearItemsAndNextNotificationDate usageResult = intervalConsumableInArrear.computeMissingItemsAndNextNotificationDate(invoiceItems);
- final List<InvoiceItem> rawResults = usageResult.getInvoiceItems();
- assertEquals(rawResults.size(), 4);
+ final List<InvoiceItem> result = usageResult.getInvoiceItems();
+ assertEquals(result.size(), 2);
- final List<InvoiceItem> result = ImmutableList.copyOf(Iterables.filter(rawResults, new Predicate<InvoiceItem>() {
- @Override
- public boolean apply(final InvoiceItem input) {
- return input.getAmount().compareTo(BigDecimal.ZERO) > 0;
- }
- }));
// Invoiced for 1 BTC and used 130 + 271 = 401 => 5 blocks => 5 BTC so remaining piece should be 4 BTC
assertEquals(result.get(0).getAmount().compareTo(new BigDecimal("4.0")), 0, String.format("%s != 4.0", result.get(0).getAmount()));