killbill-memoizeit

invoice: Fix issue in invoice safety bound mechanism where

11/13/2016 12:37:04 AM

Details

diff --git a/invoice/src/main/java/org/killbill/billing/invoice/generator/FixedAndRecurringInvoiceItemGenerator.java b/invoice/src/main/java/org/killbill/billing/invoice/generator/FixedAndRecurringInvoiceItemGenerator.java
index 0f22e05..6dc31d6 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/generator/FixedAndRecurringInvoiceItemGenerator.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/generator/FixedAndRecurringInvoiceItemGenerator.java
@@ -51,10 +51,12 @@ import org.killbill.billing.junction.BillingEvent;
 import org.killbill.billing.junction.BillingEventSet;
 import org.killbill.billing.util.config.definition.InvoiceConfig;
 import org.killbill.billing.util.currency.KillBillMoney;
+import org.killbill.clock.Clock;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.MoreObjects;
 import com.google.common.collect.LinkedListMultimap;
 import com.google.common.collect.Multimap;
 import com.google.inject.Inject;
@@ -69,9 +71,12 @@ public class FixedAndRecurringInvoiceItemGenerator extends InvoiceItemGenerator 
 
     private final InvoiceConfig config;
 
+    private final Clock clock;
+
     @Inject
-    public FixedAndRecurringInvoiceItemGenerator(final InvoiceConfig config) {
+    public FixedAndRecurringInvoiceItemGenerator(final InvoiceConfig config, final Clock clock) {
         this.config = config;
+        this.clock = clock;
     }
 
     public List<InvoiceItem> generateItems(final ImmutableAccountData account, final UUID invoiceId, final BillingEventSet eventSet,
@@ -431,7 +436,7 @@ public class FixedAndRecurringInvoiceItemGenerator extends InvoiceItemGenerator 
             return null;
         }
 
-        final LocalDate createdDay = internalCallContext.toLocalDate(invoiceItem.getCreatedDate());
+        final LocalDate createdDay = internalCallContext.toLocalDate(MoreObjects.firstNonNull(invoiceItem.getCreatedDate(), clock.getUTCNow()));
         createdItemsPerDayPerSubscription.put(subscriptionId, createdDay);
         return createdDay;
     }