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 32e8bde..522855a 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
@@ -298,14 +298,20 @@ public class BusinessInvoiceDao extends BusinessAnalyticsDaoBase {
// Now find the "reparation" items, i.e. the ones which correspond to the repaired items
final Map<UUID, InvoiceItem> reparationInvoiceItemIdToRepairItemMappings = new LinkedHashMap<UUID, InvoiceItem>();
- for (final InvoiceItem repairedInvoiceItem : repairedInvoiceItemIdToRepairInvoiceItemMappings.values()) {
+ for (final InvoiceItem repairedInvoiceItem : allInvoiceItems) {
+ // Skip non-repaired items
+ if (!repairedInvoiceItemIdToRepairInvoiceItemMappings.keySet().contains(repairedInvoiceItem.getId())) {
+ continue;
+ }
+
InvoiceItem reparationItem = null;
for (final InvoiceItem invoiceItem : allInvoiceItems) {
// Try to find the matching "reparation" item
if (repairedInvoiceItem.getInvoiceItemType().equals(invoiceItem.getInvoiceItemType()) &&
repairedInvoiceItem.getSubscriptionId().equals(invoiceItem.getSubscriptionId()) &&
repairedInvoiceItem.getStartDate().compareTo(invoiceItem.getStartDate()) == 0 &&
- !repairedInvoiceItem.getEndDate().isBefore(invoiceItem.getEndDate())) {
+ !repairedInvoiceItem.getEndDate().isBefore(invoiceItem.getEndDate()) &&
+ !repairedInvoiceItem.getId().equals(invoiceItem.getId())) {
if (reparationItem == null) {
reparationItem = invoiceItem;
} else {