@TimedResource @POST @Path("/{subscriptionId:" + UUID_PATTERN + "}/" + BLOCK) @Consumes(APPLICATION_JSON) @ApiOperation(value = "Block a subscription", response = BlockingStateJson.class, responseContainer = "List") @ApiResponses(value = {@ApiResponse(code = 201, message = "Blocking state created successfully"), @ApiResponse(code = 400, message = "Invalid subscription id supplied"), @ApiResponse(code = 404, message = "Subscription not found")}) public Response addSubscriptionBlockingState(@PathParam(ID_PARAM_NAME) final UUID id, final BlockingStateJson json, @QueryParam(QUERY_REQUESTED_DT) final String requestedDate, @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString, @HeaderParam(HDR_CREATED_BY) final String createdBy, @HeaderParam(HDR_REASON) final String reason, @HeaderParam(HDR_COMMENT) final String comment, @javax.ws.rs.core.Context final HttpServletRequest request, @javax.ws.rs.core.Context final UriInfo uriInfo) throws SubscriptionApiException, EntitlementApiException, AccountApiException { final TenantContext tenantContext = context.createTenantContextNoAccountId(request); final Entitlement entitlement = entitlementApi.getEntitlementForId(id, tenantContext); return addBlockingState(json, entitlement.getAccountId(), id, BlockingStateType.SUBSCRIPTION, requestedDate, pluginPropertiesString, createdBy, reason, comment, request, uriInfo); }
final Account account = accountUserApi.getAccountById(entitlement.getAccountId(), callContext); final LocalDate accountToday = new LocalDate(callContext.getCreatedDate(), account.getTimeZone()); int comp = effectiveFromDate.compareTo(accountToday);
private Account getAccountFromSubscriptionJson(final SubscriptionJson entitlementJson, final CallContext callContext) throws SubscriptionApiException, AccountApiException, EntitlementApiException { final UUID accountId; if (entitlementJson.getAccountId() != null) { accountId = entitlementJson.getAccountId(); } else if (entitlementJson.getSubscriptionId() != null) { final Entitlement entitlement = entitlementApi.getEntitlementForId(entitlementJson.getSubscriptionId(), callContext); accountId = entitlement.getAccountId(); } else { final SubscriptionBundle subscriptionBundle = subscriptionApi.getSubscriptionBundle(entitlementJson.getBundleId(), callContext); accountId = subscriptionBundle.getAccountId(); } return accountUserApi.getAccountById(accountId, callContext); } }
final Invoice firstInvoice = invoiceUserApi.triggerInvoiceGeneration(createdEntitlement.getAccountId(), futureStartDate, callContext); assertListenerStatus();
@Override public Response doOperation(final CallContext ctx) throws EntitlementApiException, AccountApiException { final Entitlement current = entitlementApi.getEntitlementForId(subscriptionId, callContext); final LocalDate inputLocalDate = toLocalDate(requestedDate); final Entitlement newEntitlement; final Account account = accountUserApi.getAccountById(current.getAccountId(), callContext); final PhaseType phaseType = entitlement.getPhaseType(); final PlanPhaseSpecifier planSpec = entitlement.getPlanName() != null ? new PlanPhaseSpecifier(entitlement.getPlanName(), phaseType) : new PlanPhaseSpecifier(entitlement.getProductName(), entitlement.getBillingPeriod(), entitlement.getPriceList(), phaseType); final List<PlanPhasePriceOverride> overrides = buildPlanPhasePriceOverrides(entitlement.getPriceOverrides(), account.getCurrency(), planSpec); if (requestedDate == null && billingPolicy == null) { newEntitlement = current.changePlan(new DefaultEntitlementSpecifier(planSpec, null, overrides), pluginProperties, ctx); } else if (billingPolicy == null) { newEntitlement = current.changePlanWithDate(new DefaultEntitlementSpecifier(planSpec, null, overrides), inputLocalDate, pluginProperties, ctx); } else { newEntitlement = current.changePlanOverrideBillingPolicy(new DefaultEntitlementSpecifier(planSpec, null, overrides), null, billingPolicy, pluginProperties, ctx); } isImmediateOp = newEntitlement.getLastActiveProduct().getName().equals(entitlement.getProductName()) && newEntitlement.getLastActivePlan().getRecurringBillingPeriod() == entitlement.getBillingPeriod() && newEntitlement.getLastActivePriceList().getName().equals(entitlement.getPriceList()); return Response.status(Status.NO_CONTENT).build(); }
final Invoice dryRunInvoice1 = invoiceUserApi.triggerDryRunInvoiceGeneration(createdEntitlement.getAccountId(), futureDate, DRY_RUN_TARGET_DATE_ARG, callContext); assertEquals(dryRunInvoice1.getInvoiceItems().size(), 1); assertEquals(dryRunInvoice1.getInvoiceItems().get(0).getInvoiceItemType(), InvoiceItemType.FIXED); invoiceUserApi.triggerDryRunInvoiceGeneration(createdEntitlement.getAccountId(), futureDate.minusDays(1), dryRunSubscriptionActionArg, callContext); fail("Should fail to trigger dryRun invoice prior subscription starts"); } catch (final InvoiceApiException e) { final Invoice dryRunInvoice2 = invoiceUserApi.triggerDryRunInvoiceGeneration(createdEntitlement.getAccountId(), futureDate, dryRunSubscriptionActionArg, callContext); assertEquals(dryRunInvoice2.getInvoiceItems().size(), 1); assertEquals(dryRunInvoice2.getInvoiceItems().get(0).getInvoiceItemType(), InvoiceItemType.FIXED); final Invoice realInvoice = invoiceUserApi.triggerInvoiceGeneration(createdEntitlement.getAccountId(), futureDate, callContext); assertListenerStatus();
final Entitlement entitlement = entitlementApi.getEntitlementForId(entitlementId, callContext); assertEquals(entitlement.getAccountId(), account.getId()); assertEquals(entitlement.getExternalKey(), account.getExternalKey());
assertListenerStatus(); final Entitlement entitlement = entitlementApi.getEntitlementForId(entitlementId, callContext); assertEquals(entitlement.getAccountId(), account.getId()); assertEquals(entitlement.getExternalKey(), externalKey); assertListenerStatus(); final Entitlement entitlement2 = entitlementApi.getEntitlementForId(entitlement2Id, callContext); assertEquals(entitlement2.getAccountId(), account.getId()); assertEquals(entitlement2.getExternalKey(), externalKey);
final Entitlement baseEntitlement = entitlementApi.getEntitlementForId(baseEntitlementId, callContext); assertEquals(baseEntitlement.getAccountId(), account.getId()); assertEquals(baseEntitlement.getExternalKey(), account.getExternalKey()); assertEquals(baseEntitlement.getLastActiveProduct().getName(), "Knife"); final Entitlement anotherStandaloneEntitlement = entitlementApi.getEntitlementForId(anotherStandaloneEntitlementId, callContext); assertEquals(anotherStandaloneEntitlement.getAccountId(), account.getId()); assertEquals(anotherStandaloneEntitlement.getExternalKey(), account.getExternalKey()); assertEquals(anotherStandaloneEntitlement.getBundleId(), baseEntitlement.getBundleId());
assertListenerStatus(); final Entitlement entitlement = entitlementApi.getEntitlementForId(entitlementId, callContext); assertEquals(entitlement.getAccountId(), account.getId()); assertEquals(entitlement.getExternalKey(), account.getExternalKey()); assertEquals(entitlement2.getAccountId(), account.getId()); assertEquals(entitlement2.getExternalKey(), account.getExternalKey()); assertEquals(entitlement3.getAccountId(), account.getId()); assertEquals(entitlement3.getExternalKey(), account.getExternalKey());
final Entitlement telescopicEntitlement = entitlementApi.getEntitlementForId(telescopicEntitlementId, callContext); assertEquals(telescopicEntitlement.getAccountId(), account.getId()); assertEquals(telescopicEntitlement.getExternalKey(), account.getExternalKey());
assertEquals(telescopicEntitlement.getAccountId(), account.getId()); assertEquals(telescopicEntitlement.getExternalKey(), account.getExternalKey());