diff --git a/invoice/src/main/java/org/killbill/billing/invoice/tree/SubscriptionItemTree.java b/invoice/src/main/java/org/killbill/billing/invoice/tree/SubscriptionItemTree.java
index d194140..061c6c3 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/tree/SubscriptionItemTree.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/tree/SubscriptionItemTree.java
@@ -124,9 +124,19 @@ public class SubscriptionItemTree {
Preconditions.checkState(!isBuilt);
for (final InvoiceItem item : pendingItemAdj) {
- final Item fullyAdjustedItem = root.addAdjustment(item, targetInvoiceId);
- if (fullyAdjustedItem != null) {
- existingFullyAdjustedItems.add(fullyAdjustedItem);
+
+ // if the linked item was ignore, ignore this adjustment too
+ final InvoiceItem ignoredLinkedItem = Iterables.tryFind(existingIgnoredItems, new Predicate<InvoiceItem>() {
+ @Override
+ public boolean apply(final InvoiceItem input) {
+ return input.getId().equals(item.getLinkedItemId());
+ }
+ }).orNull();
+ if (ignoredLinkedItem == null) {
+ final Item fullyAdjustedItem = root.addAdjustment(item, targetInvoiceId);
+ if (fullyAdjustedItem != null) {
+ existingFullyAdjustedItems.add(fullyAdjustedItem);
+ }
}
}
pendingItemAdj.clear();