private DefaultPlanRules toDefaultPlanRules(final PlanRules input) { final DefaultPlanRules result = new DefaultPlanRules(); result.setBillingAlignmentCase(toDefaultCaseBillingAlignments(input.getCaseBillingAlignment())); result.setCancelCase(toDefaultCaseCancelPolicys(input.getCaseCancelPolicy())); result.setChangeAlignmentCase(toDefaultCaseChangePlanAlignments(input.getCaseChangePlanAlignment())); result.setChangeCase(toDefaultCaseChangePlanPolicies(input.getCaseChangePlanPolicy())); result.setCreateAlignmentCase(toDefaultCaseCreateAlignments(input.getCaseCreateAlignment())); result.setPriceListCase(toDefaultCasePriceLists(input.getCasePriceList())); return result; }
@Override public PlanAlignmentCreate planCreateAlignment(final PlanSpecifier specifier) throws CatalogApiException { return planRules.getPlanCreateAlignment(specifier, this); }
@Override public PlanChangeResult planChange(final PlanPhaseSpecifier from, final PlanSpecifier to) throws CatalogApiException { return planRules.planChange(from, to, this); }
public PlanChangeResult planChange(final PlanPhaseSpecifier from, final PlanSpecifier to, final StaticCatalog catalog) throws CatalogApiException { final DefaultPriceList toPriceList = to.getPriceListName() != null ? (DefaultPriceList) catalog.findCurrentPricelist(to.getPriceListName()) : findPriceList(from, catalog); // If we use old scheme {product, billingPeriod, pricelist}, ensure pricelist is correct // (Pricelist may be null because if it is unspecified this is the principal use-case) final PlanSpecifier toWithPriceList = to.getPlanName() == null ? new PlanSpecifier(to.getProductName(), to.getBillingPeriod(), toPriceList.getName()) : to; final BillingActionPolicy policy = getPlanChangePolicy(from, toWithPriceList, catalog); if (policy == BillingActionPolicy.ILLEGAL) { throw new IllegalPlanChange(from, toWithPriceList); } final PlanAlignmentChange alignment = getPlanChangeAlignment(from, toWithPriceList, catalog); return new PlanChangeResult(toPriceList, policy, alignment); }
@BeforeMethod(groups = "fast") public void beforeMethod() { cat = new MockCatalog(); final DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[0]; final DefaultCaseChangePlanPolicy casePolicy = new DefaultCaseChangePlanPolicy().setPolicy(BillingActionPolicy.END_OF_TERM); final DefaultCaseChangePlanAlignment caseAlignment = new DefaultCaseChangePlanAlignment().setAlignment(PlanAlignmentChange.START_OF_SUBSCRIPTION); final DefaultCasePriceList casePriceList = new DefaultCasePriceList().setToPriceList(priceList2); cat.getPlanRules(). setChangeCase(new DefaultCaseChangePlanPolicy[]{casePolicy}). setChangeAlignmentCase(new DefaultCaseChangePlanAlignment[]{caseAlignment}). setPriceListCase(new DefaultCasePriceList[]{casePriceList}); }
inputCatalog.getPriceLists().getAllPriceLists()); if (inputCatalog.getPlanRules().getCaseChangePlanPolicy() != null) { for (final CaseChangePlanPolicy cur : inputCatalog.getPlanRules().getCaseChangePlanPolicy()) { rules.addCaseChangePlanPolicyRule(cur); if (inputCatalog.getPlanRules().getCaseChangePlanAlignment() != null) { for (final CaseChangePlanAlignment cur : inputCatalog.getPlanRules().getCaseChangePlanAlignment()) { rules.addCaseChangeAlignmentRule(cur); if (inputCatalog.getPlanRules().getCaseCancelPolicy() != null) { for (final CaseCancelPolicy cur : inputCatalog.getPlanRules().getCaseCancelPolicy()) { rules.addCaseCancelRule(cur); if (inputCatalog.getPlanRules().getCaseCreateAlignment() != null) { for (final CaseCreateAlignment cur : inputCatalog.getPlanRules().getCaseCreateAlignment()) { rules.addCaseCreateAlignmentRule(cur); if (inputCatalog.getPlanRules().getCaseBillingAlignment() != null) { for (final CaseBillingAlignment cur : inputCatalog.getPlanRules().getCaseBillingAlignment()) { rules.addCaseBillingAlignmentRule(cur); if (inputCatalog.getPlanRules().getCasePriceList() != null) { for (final CasePriceList cur : inputCatalog.getPlanRules().getCasePriceList()) { rules.addPriceListRule(cur);
public void populateRules() { setPlanRules(new DefaultPlanRules()); }
@Override public BillingAlignment billingAlignment(final PlanPhaseSpecifier planPhase) throws CatalogApiException { return planRules.getBillingAlignment(planPhase, this); }
return false; if (planRules != null ? !planRules.equals(that.planRules) : that.planRules != null) { return false;
@BeforeMethod(groups = "fast") public void beforeMethod() { cat = new MockCatalog(); final DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[0]; final DefaultCaseChangePlanPolicy casePolicy = new DefaultCaseChangePlanPolicy().setPolicy(BillingActionPolicy.END_OF_TERM); final DefaultCaseChangePlanAlignment caseAlignment = new DefaultCaseChangePlanAlignment().setAlignment(PlanAlignmentChange.START_OF_SUBSCRIPTION); final DefaultCasePriceList casePriceList = new DefaultCasePriceList().setToPriceList(priceList2); cat.getPlanRules(). setChangeCase(new DefaultCaseChangePlanPolicy[]{casePolicy}). setChangeAlignmentCase(new DefaultCaseChangePlanAlignment[]{caseAlignment}). setPriceListCase(new DefaultCasePriceList[]{casePriceList}); }
inputCatalog.getPriceLists().getAllPriceLists()); if (inputCatalog.getPlanRules().getCaseChangePlanPolicy() != null) { for (final CaseChangePlanPolicy cur : inputCatalog.getPlanRules().getCaseChangePlanPolicy()) { rules.addCaseChangePlanPolicyRule(cur); if (inputCatalog.getPlanRules().getCaseChangePlanAlignment() != null) { for (final CaseChangePlanAlignment cur : inputCatalog.getPlanRules().getCaseChangePlanAlignment()) { rules.addCaseChangeAlignmentRule(cur); if (inputCatalog.getPlanRules().getCaseCancelPolicy() != null) { for (final CaseCancelPolicy cur : inputCatalog.getPlanRules().getCaseCancelPolicy()) { rules.addCaseCancelRule(cur); if (inputCatalog.getPlanRules().getCaseCreateAlignment() != null) { for (final CaseCreateAlignment cur : inputCatalog.getPlanRules().getCaseCreateAlignment()) { rules.addCaseCreateAlignmentRule(cur); if (inputCatalog.getPlanRules().getCaseBillingAlignment() != null) { for (final CaseBillingAlignment cur : inputCatalog.getPlanRules().getCaseBillingAlignment()) { rules.addCaseBillingAlignmentRule(cur); if (inputCatalog.getPlanRules().getCasePriceList() != null) { for (final CasePriceList cur : inputCatalog.getPlanRules().getCasePriceList()) { rules.addPriceListRule(cur);
public PlanChangeResult planChange(final PlanPhaseSpecifier from, final PlanSpecifier to, final StaticCatalog catalog) throws CatalogApiException { final DefaultPriceList toPriceList = to.getPriceListName() != null ? (DefaultPriceList) catalog.findCurrentPricelist(to.getPriceListName()) : findPriceList(from, catalog); // If we use old scheme {product, billingPeriod, pricelist}, ensure pricelist is correct // (Pricelist may be null because if it is unspecified this is the principal use-case) final PlanSpecifier toWithPriceList = to.getPlanName() == null ? new PlanSpecifier(to.getProductName(), to.getBillingPeriod(), toPriceList.getName()) : to; final BillingActionPolicy policy = getPlanChangePolicy(from, toWithPriceList, catalog); if (policy == BillingActionPolicy.ILLEGAL) { throw new IllegalPlanChange(from, toWithPriceList); } final PlanAlignmentChange alignment = getPlanChangeAlignment(from, toWithPriceList, catalog); return new PlanChangeResult(toPriceList, policy, alignment); }
public void populateRules() { setPlanRules(new DefaultPlanRules()); }
@Override public BillingAlignment billingAlignment(final PlanPhaseSpecifier planPhase) throws CatalogApiException { return planRules.getBillingAlignment(planPhase, this); }
return false; if (planRules != null ? !planRules.equals(that.planRules) : that.planRules != null) { return false;
private DefaultPlanRules getSaneDefaultPlanRules(final DefaultPriceList defaultPriceList) { final DefaultCaseChangePlanPolicy[] changePolicy = new DefaultCaseChangePlanPolicy[1]; changePolicy[0] = new DefaultCaseChangePlanPolicy(); changePolicy[0].setPolicy(BillingActionPolicy.IMMEDIATE); final DefaultCaseChangePlanAlignment[] changeAlignment = new DefaultCaseChangePlanAlignment[1]; changeAlignment[0] = new DefaultCaseChangePlanAlignment(); changeAlignment[0].setAlignment(PlanAlignmentChange.START_OF_BUNDLE); final DefaultCaseCancelPolicy[] cancelPolicy = new DefaultCaseCancelPolicy[1]; cancelPolicy[0] = new DefaultCaseCancelPolicy(); cancelPolicy[0].setPolicy(BillingActionPolicy.IMMEDIATE); final DefaultCaseCreateAlignment[] createAlignment = new DefaultCaseCreateAlignment[1]; createAlignment[0] = new DefaultCaseCreateAlignment(); createAlignment[0].setAlignment(PlanAlignmentCreate.START_OF_BUNDLE); final DefaultCaseBillingAlignment[] billingAlignmentCase = new DefaultCaseBillingAlignment[1]; billingAlignmentCase[0] = new DefaultCaseBillingAlignment(); billingAlignmentCase[0].setAlignment(BillingAlignment.ACCOUNT); final DefaultCasePriceList[] priceList = new DefaultCasePriceList[1]; priceList[0] = new DefaultCasePriceList(); priceList[0].setToPriceList(defaultPriceList); return new DefaultPlanRules() .setChangeCase(changePolicy) .setChangeAlignmentCase(changeAlignment) .setCancelCase(cancelPolicy) .setCreateAlignmentCase(createAlignment) .setBillingAlignmentCase(billingAlignmentCase) .setPriceListCase(priceList); }
@Test(groups = "fast") public void testExistingPriceListIsKept() throws CatalogApiException { final DefaultProduct product1 = cat.getCurrentProduct(0); final DefaultPriceList priceList1 = cat.findCurrentPriceList(PriceListSet.DEFAULT_PRICELIST_NAME); final PlanPhaseSpecifier from = new PlanPhaseSpecifier(product1.getName(), BillingPeriod.MONTHLY, priceList1.getName(), PhaseType.EVERGREEN); final PlanSpecifier to = new PlanSpecifier(product1.getName(), BillingPeriod.ANNUAL, priceList1.getName()); PlanChangeResult result = null; try { result = cat.getPlanRules().planChange(from, to, cat); } catch (IllegalPlanChange e) { Assert.fail("We should not have triggered this error"); } catch (CatalogApiException e) { Assert.fail("", e); } Assert.assertEquals(result.getPolicy(), BillingActionPolicy.END_OF_TERM); Assert.assertEquals(result.getAlignment(), PlanAlignmentChange.START_OF_SUBSCRIPTION); Assert.assertEquals(result.getNewPriceList(), priceList1); }
@Test(groups = "fast") public void test() throws Exception { final URI uri = new URI(Resources.getResource("WeaponsHireSmall.xml").toExternalForm()); final StandaloneCatalog catalog = XMLLoader.getObjectFromUri(uri, StandaloneCatalog.class); Assert.assertNotNull(catalog); final DefaultPlanRules rules = catalog.getPlanRules(); final PlanSpecifier specifier = new PlanSpecifier("Laser-Scope", BillingPeriod.MONTHLY, "DEFAULT"); final PlanAlignmentCreate alignment = rules.getPlanCreateAlignment(specifier, catalog); Assert.assertEquals(alignment, PlanAlignmentCreate.START_OF_SUBSCRIPTION); final PlanSpecifier specifier2 = new PlanSpecifier("Extra-Ammo", BillingPeriod.MONTHLY, "DEFAULT"); final PlanAlignmentCreate alignment2 = rules.getPlanCreateAlignment(specifier2, catalog); Assert.assertEquals(alignment2, PlanAlignmentCreate.START_OF_BUNDLE); } }
private DefaultPlanRules toDefaultPlanRules(final PlanRules input) { final DefaultPlanRules result = new DefaultPlanRules(); result.setBillingAlignmentCase(toDefaultCaseBillingAlignments(input.getCaseBillingAlignment())); result.setCancelCase(toDefaultCaseCancelPolicys(input.getCaseCancelPolicy())); result.setChangeAlignmentCase(toDefaultCaseChangePlanAlignments(input.getCaseChangePlanAlignment())); result.setChangeCase(toDefaultCaseChangePlanPolicies(input.getCaseChangePlanPolicy())); result.setCreateAlignmentCase(toDefaultCaseCreateAlignments(input.getCaseCreateAlignment())); result.setPriceListCase(toDefaultCasePriceLists(input.getCasePriceList())); return result; }
@Test(groups = "fast") public void testBaseCase() throws CatalogApiException { final DefaultProduct product1 = cat.getCurrentProduct(0); final DefaultProduct product2 = cat.getCurrentProduct(1); final DefaultPriceList priceList1 = cat.findCurrentPriceList(PriceListSet.DEFAULT_PRICELIST_NAME); final DefaultPriceList priceList2 = cat.getPriceLists().getChildPriceLists()[0]; final PlanPhaseSpecifier from = new PlanPhaseSpecifier(product1.getName(), BillingPeriod.MONTHLY, priceList1.getName(), PhaseType.EVERGREEN); final PlanSpecifier to = new PlanSpecifier(product2.getName(), BillingPeriod.MONTHLY, null); PlanChangeResult result = null; try { result = cat.getPlanRules().planChange(from, to, cat); } catch (IllegalPlanChange e) { Assert.fail("We should not have triggered this error"); } catch (CatalogApiException e) { Assert.fail("", e); } Assert.assertEquals(result.getPolicy(), BillingActionPolicy.END_OF_TERM); Assert.assertEquals(result.getAlignment(), PlanAlignmentChange.START_OF_SUBSCRIPTION); Assert.assertEquals(result.getNewPriceList(), priceList2); } }