diff --git a/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalCapacityUsageInArrear.java b/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalCapacityUsageInArrear.java
index ed2236c..474c5b3 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalCapacityUsageInArrear.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalCapacityUsageInArrear.java
@@ -128,4 +128,16 @@ public class ContiguousIntervalCapacityUsageInArrear extends ContiguousIntervalU
Preconditions.checkState(false, "Could not find tier for usage " + usage.getName() + "matching with data = " + joiner.join(roUnits));
return null;
}
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder("ContiguousIntervalCapacityUsageInArrear{");
+ sb.append("transitionTimes=").append(transitionTimes);
+ sb.append(", billingEvents=").append(billingEvents);
+ sb.append(", rawSubscriptionUsage=").append(rawSubscriptionUsage);
+ sb.append(", rawUsageStartDate=").append(rawUsageStartDate);
+ sb.append('}');
+ return sb.toString();
+ }
+
}
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 e828849..dd21aed 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
@@ -97,7 +97,7 @@ public abstract class ContiguousIntervalUsageInArrear {
this.accountId = accountId;
this.invoiceId = invoiceId;
this.unitTypes = usage.getUsageType() == UsageType.CAPACITY ? getCapacityInArrearUnitTypes(usage) : getConsumableInArrearUnitTypes(usage);
- this.rawSubscriptionUsage = rawSubscriptionUsage;
+ this.rawSubscriptionUsage = filterInputRawUsage(rawSubscriptionUsage);
this.targetDate = targetDate;
this.rawUsageStartDate = rawUsageStartDate;
this.internalTenantContext = internalTenantContext;
@@ -107,6 +107,7 @@ public abstract class ContiguousIntervalUsageInArrear {
this.usageDetailMode = usageDetailMode;
}
+
/**
* Builds the transitionTimes associated to that usage section. Those are determined based on billing events for when to start and when to stop,
* the per usage billingPeriod and finally the targetDate.
@@ -345,6 +346,16 @@ public abstract class ContiguousIntervalUsageInArrear {
}
}
+ private List<RawUsage> filterInputRawUsage(final List<RawUsage> rawSubscriptionUsage) {
+ final Iterable<RawUsage> filteredList = Iterables.filter(rawSubscriptionUsage, new Predicate<RawUsage>() {
+ @Override
+ public boolean apply(final RawUsage input) {
+ return unitTypes.contains(input.getUnitType());
+ }
+ });
+ return ImmutableList.copyOf(filteredList);
+ }
+
/**
* @param filteredUsageForInterval the list of invoiceItem to consider
* @return the price amount that was already billed for that period and usage section (across unitTypes)
@@ -419,16 +430,6 @@ public abstract class ContiguousIntervalUsageInArrear {
return billingEvents.get(0).getCurrency();
}
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder("ContiguousIntervalConsumableInArrear{");
- sb.append("transitionTimes=").append(transitionTimes);
- sb.append(", billingEvents=").append(billingEvents);
- sb.append(", rawSubscriptionUsage=").append(rawSubscriptionUsage);
- sb.append(", rawUsageStartDate=").append(rawUsageStartDate);
- sb.append('}');
- return sb.toString();
- }
public class UsageInArrearItemsAndNextNotificationDate {