@Override public Collection<Plan> findPlans(final Product product, final BillingPeriod period) { final List<Plan> result = new ArrayList<Plan>(plans.size()); for (final Plan cur : getPlans()) { if (cur.getProduct().equals(product) && (cur.getRecurringBillingPeriod() != null && cur.getRecurringBillingPeriod().equals(period))) { result.add(cur); } } return result; }
@Override public BillingPeriod getLastActiveBillingPeriod() { 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) return currentPlan.getRecurringBillingPeriod(); } }
private void checkChangePlan(final DefaultSubscriptionBase subscription, final String expProduct, final ProductCategory expCategory, final BillingPeriod expBillingPeriod, final PhaseType expPhase) { final Plan currentPlan = subscription.getCurrentPlan(); assertNotNull(currentPlan); assertEquals(currentPlan.getProduct().getName(), expProduct); assertEquals(currentPlan.getProduct().getCategory(), expCategory); assertEquals(currentPlan.getRecurringBillingPeriod(), expBillingPeriod); final PlanPhase currentPhase = subscription.getCurrentPhase(); assertNotNull(currentPhase); assertEquals(currentPhase.getPhaseType(), expPhase); }
final BillingPeriod billingPeriod = getLastActivePlan().getRecurringBillingPeriod(); DateTime proposedDate = chargedThroughDate; while (proposedDate.isAfter(clock.getUTCNow())) {
@Test(groups = "fast") public void testChangeSubscriptionWithPolicy() throws Exception { final SubscriptionBase subscription = testUtil.createSubscription(bundle, "Shotgun", BillingPeriod.ANNUAL, PriceListSet.DEFAULT_PRICELIST_NAME); try { final PlanPhaseSpecifier planPhaseSpecifier = new PlanPhaseSpecifier("Pistol", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME); subscription.changePlanWithPolicy(new DefaultEntitlementSpecifier(planPhaseSpecifier), BillingActionPolicy.ILLEGAL, callContext); Assert.fail("Call changePlanWithPolicy should have failed"); } catch (final SubscriptionBaseError error) { assertTrue(true); assertEquals(subscriptionInternalApi.getSubscriptionFromId(subscription.getId(), internalCallContext).getCurrentPlan().getRecurringBillingPeriod(), BillingPeriod.ANNUAL); } // Assume the call takes less than a second final PlanPhaseSpecifier planPhaseSpecifier = new PlanPhaseSpecifier("Pistol", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME); assertEquals(DefaultClock.truncateMs(subscription.changePlanWithPolicy(new DefaultEntitlementSpecifier(planPhaseSpecifier), BillingActionPolicy.IMMEDIATE, callContext)), DefaultClock.truncateMs(clock.getUTCNow())); assertEquals(subscriptionInternalApi.getSubscriptionFromId(subscription.getId(), internalCallContext).getCurrentPlan().getRecurringBillingPeriod(), BillingPeriod.MONTHLY); }
@Test(groups = "slow") public void testCreateWithInitialPhase() throws SubscriptionBaseApiException { final DateTime init = clock.getUTCNow(); final String productName = "Shotgun"; final BillingPeriod term = BillingPeriod.MONTHLY; final String planSetName = PriceListSet.DEFAULT_PRICELIST_NAME; final DefaultSubscriptionBase subscription = testUtil.createSubscription(bundle, productName, term, planSetName, PhaseType.EVERGREEN, null); assertNotNull(subscription); assertEquals(subscription.getBundleExternalKey(), bundle.getExternalKey()); testUtil.assertDateWithin(subscription.getStartDate(), init, clock.getUTCNow()); testUtil.assertDateWithin(subscription.getBundleStartDate(), init, clock.getUTCNow()); final Plan currentPlan = subscription.getCurrentPlan(); assertNotNull(currentPlan); assertEquals(currentPlan.getProduct().getName(), productName); assertEquals(currentPlan.getProduct().getCategory(), ProductCategory.BASE); assertEquals(currentPlan.getRecurringBillingPeriod(), BillingPeriod.MONTHLY); final PlanPhase currentPhase = subscription.getCurrentPhase(); assertNotNull(currentPhase); assertEquals(currentPhase.getPhaseType(), PhaseType.EVERGREEN); assertListenerStatus(); }
cur.getCurrentPlan().getProduct().getName(), cur.getCurrentPhase().getPhaseType(), cur.getCurrentPlan().getRecurringBillingPeriod(), cur.getCurrentPriceList().getName(), reason); result.add(status);
assertEquals(currentPlan.getProduct().getName(), productName); assertEquals(currentPlan.getProduct().getCategory(), ProductCategory.BASE); assertEquals(currentPlan.getRecurringBillingPeriod(), BillingPeriod.MONTHLY);
assertEquals(m.group(1), plan.getName()); assertEquals(overriddenPlan.getProduct().getName(), plan.getProduct().getName()); assertEquals(overriddenPlan.getRecurringBillingPeriod(), plan.getRecurringBillingPeriod()); if (plan.getEffectiveDateForExistingSubscriptions() != null) { assertEquals(overriddenPlan.getEffectiveDateForExistingSubscriptions().compareTo(plan.getEffectiveDateForExistingSubscriptions()), 0);
assertEquals(m.group(1), plan.getName()); assertEquals(overriddenPlan.getProduct().getName(), plan.getProduct().getName()); assertEquals(overriddenPlan.getRecurringBillingPeriod(), plan.getRecurringBillingPeriod()); if (plan.getEffectiveDateForExistingSubscriptions() != null) { assertEquals(overriddenPlan.getEffectiveDateForExistingSubscriptions().compareTo(plan.getEffectiveDateForExistingSubscriptions()), 0);
assertEquals(overriddenPlan.getRecurringBillingPeriod(), plan.getRecurringBillingPeriod()); if (plan.getEffectiveDateForExistingSubscriptions() != null) { assertEquals(overriddenPlan.getEffectiveDateForExistingSubscriptions().compareTo(plan.getEffectiveDateForExistingSubscriptions()), 0);
assertEquals(overriddenPlan.getRecurringBillingPeriod(), plan.getRecurringBillingPeriod()); if (plan.getEffectiveDateForExistingSubscriptions() != null) { assertEquals(overriddenPlan.getEffectiveDateForExistingSubscriptions().compareTo(plan.getEffectiveDateForExistingSubscriptions()), 0);
assertEquals(currentPlan.getProduct().getName(), "Assault-Rifle"); assertEquals(currentPlan.getProduct().getCategory(), ProductCategory.BASE); assertEquals(currentPlan.getRecurringBillingPeriod(), BillingPeriod.ANNUAL);
assertEquals(aoCurrentPlan.getProduct().getName(), aoProduct); assertEquals(aoCurrentPlan.getProduct().getCategory(), ProductCategory.ADD_ON); assertEquals(aoCurrentPlan.getRecurringBillingPeriod(), aoTerm); assertEquals(aoCurrentPlan.getProduct().getName(), aoProduct); assertEquals(aoCurrentPlan.getProduct().getCategory(), ProductCategory.ADD_ON); assertEquals(aoCurrentPlan.getRecurringBillingPeriod(), aoTerm);
assertEquals(currentPlan.getProduct().getName(), "Assault-Rifle"); assertEquals(currentPlan.getProduct().getCategory(), ProductCategory.BASE); assertEquals(currentPlan.getRecurringBillingPeriod(), BillingPeriod.ANNUAL); assertEquals(currentPlan.getProduct().getName(), "Pistol"); assertEquals(currentPlan.getProduct().getCategory(), ProductCategory.BASE); assertEquals(currentPlan.getRecurringBillingPeriod(), BillingPeriod.ANNUAL); assertEquals(currentPlan.getProduct().getName(), "Pistol"); assertEquals(currentPlan.getProduct().getCategory(), ProductCategory.BASE); assertEquals(currentPlan.getRecurringBillingPeriod(), BillingPeriod.ANNUAL);
assertEquals(currentPlan.getProduct().getName(), "Assault-Rifle"); assertEquals(currentPlan.getProduct().getCategory(), ProductCategory.BASE); assertEquals(currentPlan.getRecurringBillingPeriod(), BillingPeriod.ANNUAL);
final Plan plan = catalog.findCurrentPlan(from.getPlanName()); inFromProduct = plan.getProduct(); inFromBillingPeriod = plan.getRecurringBillingPeriod(); inFromProductCategory = plan.getProduct().getCategory(); inFromPriceList = catalog.findCurrentPricelist(plan.getPriceListName()); final Plan plan = catalog.findCurrentPlan(to.getPlanName()); inToProduct = plan.getProduct(); inToBillingPeriod = plan.getRecurringBillingPeriod(); inToProductCategory = plan.getProduct().getCategory(); inToPriceList = catalog.findCurrentPricelist(plan.getPriceListName());
protected boolean satisfiesCase(final PlanSpecifier planPhase, final StaticCatalog c) throws CatalogApiException { final Product product; final BillingPeriod billingPeriod; final ProductCategory productCategory; final PriceList priceList; if (planPhase.getPlanName() != null) { final Plan plan = c.findCurrentPlan(planPhase.getPlanName()); product = plan.getProduct(); billingPeriod = plan.getRecurringBillingPeriod(); productCategory = plan.getProduct().getCategory(); priceList = c.findCurrentPricelist(plan.getPriceListName()); } else { product = c.findCurrentProduct(planPhase.getProductName()); billingPeriod = planPhase.getBillingPeriod(); productCategory = product.getCategory(); priceList = getPriceList() != null ? c.findCurrentPricelist(planPhase.getPriceListName()) : null; } return (getProduct() == null || getProduct().equals(product)) && (getProductCategory() == null || getProductCategory().equals(productCategory)) && (getBillingPeriod() == null || getBillingPeriod().equals(billingPeriod)) && (getPriceList() == null || getPriceList().equals(priceList)); }
public PlanJson(final Plan plan) throws CurrencyValueNull { final List<PhaseJson> phases = new LinkedList<PhaseJson>(); for (final PlanPhase phase : plan.getAllPhases()) { final PhaseJson phaseJson = new PhaseJson(phase); phases.add(phaseJson); } this.name = plan.getName(); this.prettyName = plan.getPrettyName(); this.billingPeriod = plan.getRecurringBillingPeriod(); this.phases = phases; }
private void checkChangePlan(final DefaultSubscriptionBase subscription, final String expProduct, final ProductCategory expCategory, final BillingPeriod expBillingPeriod, final PhaseType expPhase) { final Plan currentPlan = subscription.getCurrentPlan(); assertNotNull(currentPlan); assertEquals(currentPlan.getProduct().getName(), expProduct); assertEquals(currentPlan.getProduct().getCategory(), expCategory); assertEquals(currentPlan.getRecurringBillingPeriod(), expBillingPeriod); final PlanPhase currentPhase = subscription.getCurrentPhase(); assertNotNull(currentPhase); assertEquals(currentPhase.getPhaseType(), expPhase); }