killbill-memoizeit
subscription, entitlement: Enlarge the meaning of getLastActivePlan|Product|Phase …
4/21/2017 11:36:03 PM
Changes
Details
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestSubscription.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestSubscription.java
index 3d4ea4a..880c3a5 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestSubscription.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestSubscription.java
@@ -30,6 +30,7 @@ import org.killbill.billing.api.TestApiListener.NextEvent;
import org.killbill.billing.beatrix.util.InvoiceChecker.ExpectedInvoiceItemCheck;
import org.killbill.billing.catalog.api.BillingActionPolicy;
import org.killbill.billing.catalog.api.BillingPeriod;
+import org.killbill.billing.catalog.api.PlanPhase;
import org.killbill.billing.catalog.api.PlanPhaseSpecifier;
import org.killbill.billing.catalog.api.PriceListSet;
import org.killbill.billing.catalog.api.ProductCategory;
@@ -477,6 +478,9 @@ public class TestSubscription extends TestIntegrationBase {
assertEquals(createdEntitlement.getState(), EntitlementState.PENDING);
assertEquals(createdEntitlement.getEffectiveStartDate().compareTo(futureDate), 0);
assertEquals(createdEntitlement.getEffectiveEndDate(), null);
+ assertEquals(createdEntitlement.getLastActiveProduct().getName(), "Shotgun");
+ assertEquals(createdEntitlement.getLastActivePlan().getName(), "shotgun-annual");
+ assertEquals(createdEntitlement.getLastActiveProductCategory(), ProductCategory.BASE);
assertListenerStatus();
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBase.java b/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBase.java
index 54768ac..e4fd803 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBase.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBase.java
@@ -18,20 +18,12 @@
package org.killbill.billing.subscription.api.user;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.UUID;
-
-import javax.annotation.Nullable;
-
+import com.google.common.base.Preconditions;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.LocalDate;
-import org.killbill.billing.callcontext.InternalCallContext;
import org.killbill.billing.callcontext.InternalTenantContext;
import org.killbill.billing.catalog.api.BillingActionPolicy;
import org.killbill.billing.catalog.api.BillingAlignment;
@@ -68,9 +60,14 @@ import org.killbill.clock.Clock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
+import javax.annotation.Nullable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.UUID;
public class DefaultSubscriptionBase extends EntityBase implements SubscriptionBase {
@@ -309,6 +306,9 @@ public class DefaultSubscriptionBase extends EntityBase implements SubscriptionB
if (getState() == EntitlementState.CANCELLED) {
final SubscriptionBaseTransition data = getPreviousTransition();
return data.getPreviousPlan().getProduct();
+ } else if (getState() == EntitlementState.PENDING) {
+ final SubscriptionBaseTransition data = getPendingTransition();
+ return data.getNextPlan().getProduct();
} else {
final Plan currentPlan = getCurrentPlan();
// currentPlan can be null when playing with the clock (subscription created in the future)
@@ -321,6 +321,9 @@ public class DefaultSubscriptionBase extends EntityBase implements SubscriptionB
if (getState() == EntitlementState.CANCELLED) {
final SubscriptionBaseTransition data = getPreviousTransition();
return data.getPreviousPriceList();
+ } else if (getState() == EntitlementState.PENDING) {
+ final SubscriptionBaseTransition data = getPendingTransition();
+ return data.getNextPriceList();
} else {
return getCurrentPriceList();
}
@@ -331,6 +334,9 @@ public class DefaultSubscriptionBase extends EntityBase implements SubscriptionB
if (getState() == EntitlementState.CANCELLED) {
final SubscriptionBaseTransition data = getPreviousTransition();
return data.getPreviousPlan().getProduct().getCategory();
+ } else if (getState() == EntitlementState.PENDING) {
+ final SubscriptionBaseTransition data = getPendingTransition();
+ return data.getNextPlan().getProduct().getCategory();
} else {
final Plan currentPlan = getCurrentPlan();
// currentPlan can be null when playing with the clock (subscription created in the future)
@@ -343,6 +349,9 @@ public class DefaultSubscriptionBase extends EntityBase implements SubscriptionB
if (getState() == EntitlementState.CANCELLED) {
final SubscriptionBaseTransition data = getPreviousTransition();
return data.getPreviousPlan();
+ } else if (getState() == EntitlementState.PENDING) {
+ final SubscriptionBaseTransition data = getPendingTransition();
+ return data.getNextPlan();
} else {
return getCurrentPlan();
}
@@ -353,6 +362,9 @@ public class DefaultSubscriptionBase extends EntityBase implements SubscriptionB
if (getState() == EntitlementState.CANCELLED) {
final SubscriptionBaseTransition data = getPreviousTransition();
return data.getPreviousPhase();
+ } else if (getState() == EntitlementState.PENDING) {
+ final SubscriptionBaseTransition data = getPendingTransition();
+ return data.getNextPhase();
} else {
return getCurrentPhase();
}
@@ -363,6 +375,9 @@ public class DefaultSubscriptionBase extends EntityBase implements SubscriptionB
if (getState() == EntitlementState.CANCELLED) {
final SubscriptionBaseTransition data = getPreviousTransition();
return data.getPreviousPlan().getRecurringBillingPeriod();
+ } else if (getState() == EntitlementState.PENDING) {
+ final SubscriptionBaseTransition data = getPendingTransition();
+ return data.getNextPlan().getRecurringBillingPeriod();
} else {
final Plan currentPlan = getCurrentPlan();
// currentPlan can be null when playing with the clock (subscription created in the future)