Class DefaultSubscriptionBillingEventGeneratorService
java.lang.Object
com.broadleafcommerce.subscription.job.service.impl.DefaultSubscriptionBillingEventGeneratorService
- All Implemented Interfaces:
SubscriptionBillingEventGeneratorService
public class DefaultSubscriptionBillingEventGeneratorService
extends Object
implements SubscriptionBillingEventGeneratorService
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringprotected SubscriptionNextBillDateServiceprotected com.broadleafcommerce.common.extension.TypeFactory -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected BigDecimaladjustmentAmountFromBillingEventItems(List<BillingEventItemWithTaxDetails> billingEventItemTaxDetails) Sum of all the BillingEventItems unit price per quantity including the BillingEventItemAdjustments amountprotected SubscriptionadoptNextStatusForSubscription(Subscription subscription, Date billDate, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adopt subscriptionNextStatus as subscriptionStatus and handle the status changeprotected SubscriptionPeriodbuildSubscriptionPeriod(Subscription subscription, SubscriptionNextPeriodBillingEventGenerationRequest request) protected BigDecimalcalculateAdjustmentAmount(String adjustmentType, BigDecimal subtotal, BigDecimal adjustmentAmount, javax.money.CurrencyUnit currencyUnit) CalculateSubscriptionItemAdjustment.getAdjustmentAmount()based on theSubscriptionItemAdjustment.getSubscriptionAdjustmentType()()}protected BigDecimalcalculateProratedPrice(@NonNull BigDecimal basePrice, @NonNull javax.money.CurrencyUnit currency, @NonNull Long numberOfDaysInShortenedPeriod, @NonNull Long numberOfDaysInFullPeriod) protected BillingEventconstructBillingEventDomain(@NonNull Subscription subscription, @NonNull SubscriptionPeriod subscriptionPeriod, SubscriptionNextPeriodBillingEventGenerationRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected BillingEventDTOconstructBillingEventDTO(@NonNull SubscriptionWithItemsAndAdjustments subscriptionWithItemsAndAdjustments, @NonNull SubscriptionPeriod subscriptionPeriod, SubscriptionNextPeriodBillingEventGenerationRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected List<BillingEventAdjustment>createBillingEventAdjustments(@NonNull SubscriptionWithItemsAndAdjustments subscriptionWithItemsAndAdjustments, @NonNull List<BillingEventItemWithTaxDetails> billingEventItemTaxDetails, @NonNull SubscriptionPeriod subscriptionPeriod, SubscriptionNextPeriodBillingEventGenerationRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected BillingEventItemcreateBillingEventItem(@NonNull Subscription subscription, @NonNull SubscriptionItem subscriptionItem, @NonNull SubscriptionPeriod subscriptionPeriod, SubscriptionNextPeriodBillingEventGenerationRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected BillingEventItemAdjustmentcreateBillingEventItemAdjustment(@NonNull Subscription subscription, @NonNull SubscriptionItem subscriptionItem, @NonNull SubscriptionPeriod subscriptionPeriod, @NonNull SubscriptionItemAdjustment subscriptionItemAdjustment, SubscriptionNextPeriodBillingEventGenerationRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected List<BillingEventItemAdjustment>createBillingEventItemAdjustments(@NonNull Subscription subscription, @NonNull SubscriptionPeriod subscriptionPeriod, @NonNull SubscriptionItem subscriptionItem, SubscriptionNextPeriodBillingEventGenerationRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected List<BillingEventItemWithTaxDetails>createBillingEventItemWithTaxDetailsList(@NonNull SubscriptionWithItemsAndAdjustments subscriptionWithItemsAndAdjustments, @NonNull SubscriptionPeriod subscriptionPeriod, SubscriptionNextPeriodBillingEventGenerationRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected BillingEventPaymentWithTransactioncreateBillingEventPaymentWithTransaction(@NonNull Subscription subscription, SubscriptionNextPeriodBillingEventGenerationRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected BigDecimaldetermineAdjustmentAmount(@NonNull Subscription subscription, @NonNull List<BillingEventItemWithTaxDetails> billingEventItemTaxDetails, @NonNull SubscriptionAdjustment subscriptionAdjustment, @NonNull SubscriptionPeriod subscriptionPeriod) protected DatedetermineBillDate(@NonNull Subscription subscription, @NonNull SubscriptionPeriod subscriptionPeriod) Identifies the bill date for the subscription period.protected BigDecimaldetermineBillingEventItemUnitPrice(@NonNull Subscription subscription, @NonNull SubscriptionItem subscriptionItem, @NonNull SubscriptionPeriod subscriptionPeriod) protected BigDecimaldetermineItemAdjustmentUnitAmount(@NonNull Subscription subscription, @NonNull SubscriptionItem subscriptionItem, @NonNull SubscriptionItemAdjustment subscriptionItemAdjustment, @NonNull SubscriptionPeriod subscriptionPeriod) protected LongdetermineNumberOfDaysInFullPeriod(@NonNull Instant periodStartDate, @NonNull Instant typicalPeriodEndDate, String customerTimezone) protected LongdetermineNumberOfDaysInShortenedPeriod(@NonNull Instant shortenedPeriodStartDate, @NonNull Instant shortenedPeriodEndDate, String customerTimezone) protected DatedeterminePeriodStartDate(@NonNull Subscription subscription, @NonNull Date subscriptionBillDate) Identifies the subscription period start date.protected DatedetermineTypicalPeriodEndDate(@NonNull Subscription subscription, @NonNull Date periodStartDate) Identifies the subscription period end date by calculating the next bill date, then subtracting 1 nanosecond so that the end of the period occurs immediately before the next bill date.org.apache.commons.lang3.tuple.Pair<SubscriptionWithItemsAndAdjustments,List<BillingEvent>> generateBillingEventsForNextSubscriptionPeriod(@NonNull SubscriptionWithItemsAndAdjustments subWithItemsAndAdjustments, SubscriptionNextPeriodBillingEventGenerationRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) CreatebillingEventDTOsto process charges if neededprotected DategetBillDate(SubscriptionPeriod subscriptionPeriod, SubscriptionNextPeriodBillingEventGenerationRequest request) protected DategetBillingCycleEndDate(SubscriptionPeriod subscriptionPeriod, SubscriptionNextPeriodBillingEventGenerationRequest request) protected DategetBillingCycleStartDate(SubscriptionPeriod subscriptionPeriod, SubscriptionNextPeriodBillingEventGenerationRequest request) protected BillingEventPricingService<BillingEventDTO,BillingEvent, BillingEventAdjustment, BillingEventItemWithTaxDetails, BillingEventPaymentWithTransaction> protected javax.money.CurrencyUnitgetCurrency(@NonNull Subscription subscription, @NonNull SubscriptionItem subscriptionItem) Hook point to determine the currency to use for pricing calculations.protected DategetNextBillDateForShortenedPeriod(@NonNull Subscription subscription, @NonNull SubscriptionPeriod subscriptionPeriod) protected DategetNextBillDateForShortenedPeriodForCustomReason(Subscription subscription, SubscriptionPeriod subscriptionPeriod) protected com.broadleafcommerce.data.tracking.core.context.ContextInfogetOnlyTenantContextInfo(com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Clones providedcontextInfowithout application.protected StringgetOrderId(Subscription subscription, SubscriptionNextPeriodBillingEventGenerationRequest request) protected StringgetOrderRef(Subscription subscription, SubscriptionNextPeriodBillingEventGenerationRequest request) protected StringgetOrderSource(Subscription subscription, SubscriptionNextPeriodBillingEventGenerationRequest request) protected StringgetSourceId(Subscription subscription, SubscriptionNextPeriodBillingEventGenerationRequest request) protected SubscriptionBillingPropertiesprotected SubscriptionNextBillDateServiceprotected SubscriptionService<Subscription,SubscriptionWithItems> protected com.broadleafcommerce.common.extension.TypeFactoryprotected booleanhasReachedEndOfTerms(@NonNull Subscription subscription, SubscriptionPeriod subscriptionPeriod) Determines if the subscription's end of terms occurs on or before the providedperiodStartDate.protected booleanhasReachedScheduledStatusChange(@NonNull Subscription subscription, @NonNull SubscriptionPeriod subscriptionPeriod) Determines if a scheduled subscription status change is due on or before the providedperiodStartDate.protected booleanisAdjustmentEligibleForSubscriptionPeriod(Integer subscriptionNextPeriod, Integer adjustmentBeginPeriod, Integer adjustmentEndPeriod) Check if theSubscription.getNextPeriod()is between Adjustment begin and end period.protected booleanisNextStatusChangeDue(Subscription subscription, Date billDate) protected booleanisPeriodShortenedByEndOfTerms(@NonNull Subscription subscription, Date calculatedPeriodEndDate) protected booleanisPeriodShortenedByScheduledStatusChange(@NonNull Subscription subscription, Date calculatedPeriodEndDate) protected booleanisZeroDollarBillingEventPayment(Subscription subscription, BillingEventDTO billingEventDTO) Returns true if thepayment totalis equal to zeroprotected SubscriptionPeriodpopulateShortenedPeriodDetails(@NonNull Subscription subscription, @NonNull SubscriptionPeriod subscriptionPeriod, @NonNull Date periodStartDate, Date typicalPeriodEndDate) protected SubscriptionPeriodpopulateShortenedPeriodDetails(@NonNull Subscription subscription, @NonNull String shortenedPeriodReason, @NonNull SubscriptionPeriod subscriptionPeriod, @NonNull Date periodStartDate, @NonNull Date shortenedPeriodEndDate, @NonNull Date typicalPeriodEndDate) protected SubscriptionprepareSubscriptionForNextBilling(Subscription subscription, SubscriptionPeriod subscriptionPeriod) Sets the billing fields on theSubscriptionto prepare it for the next billing cyclevoidprocessSubscriptionsAndSaveRecords(String subscriptionJobId, SubscriptionWithItemsAndAdjustments subWithItemsAndAdjustments, Date billDate, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adopt the next status for subscription and createbillingEventDTOsto process charges if neededprotected SubscriptionrecordSubscriptionPeriod(@NonNull Subscription subscription, @NonNull SubscriptionPeriod subscriptionPeriod) voidsetBillingEventPricingService(BillingEventPricingService<BillingEventDTO, BillingEvent, BillingEventAdjustment, BillingEventItemWithTaxDetails, BillingEventPaymentWithTransaction> billingEventPricingService) voidsetBillingEventService(BillingEventService<BillingEvent, BillingEventDTO, CreateBillingEventRequest> billingEventService) voidsetSubscriptionBillingProperties(SubscriptionBillingProperties subscriptionBillingProperties) voidsetSubscriptionItemAdjustmentService(SubscriptionItemAdjustmentService<SubscriptionItemAdjustment> subscriptionItemAdjustmentService) voidsetSubscriptionNextBillDateService(SubscriptionNextBillDateService subscriptionNextBillDateService) voidsetSubscriptionService(SubscriptionService<Subscription, SubscriptionWithItems> subscriptionService) voidsetTypeFactory(com.broadleafcommerce.common.extension.TypeFactory typeFactory) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.broadleafcommerce.subscription.job.service.SubscriptionBillingEventGeneratorService
generateBillingEventsForNextSubscriptionPeriod, processSubscriptionsAndSaveRecords
-
Field Details
-
SUBSCRIPTION_RENEWAL
- See Also:
-
subscriptionNextBillDateService
-
typeFactory
protected com.broadleafcommerce.common.extension.TypeFactory typeFactory
-
-
Constructor Details
-
DefaultSubscriptionBillingEventGeneratorService
public DefaultSubscriptionBillingEventGeneratorService()
-
-
Method Details
-
processSubscriptionsAndSaveRecords
@Transactional public void processSubscriptionsAndSaveRecords(String subscriptionJobId, SubscriptionWithItemsAndAdjustments subWithItemsAndAdjustments, Date billDate, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:SubscriptionBillingEventGeneratorServiceAdopt the next status for subscription and createbillingEventDTOsto process charges if needed- Specified by:
processSubscriptionsAndSaveRecordsin interfaceSubscriptionBillingEventGeneratorService- Parameters:
subscriptionJobId- subscription job idsubWithItemsAndAdjustments- subscription with items and adjustments to processbillDate- bill date of this runcontextInfo- context information around multi-tenant state
-
generateBillingEventsForNextSubscriptionPeriod
@Transactional public org.apache.commons.lang3.tuple.Pair<SubscriptionWithItemsAndAdjustments,List<BillingEvent>> generateBillingEventsForNextSubscriptionPeriod(@NonNull @NonNull SubscriptionWithItemsAndAdjustments subWithItemsAndAdjustments, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:SubscriptionBillingEventGeneratorServiceCreatebillingEventDTOsto process charges if neededNote that the subscription being processed here does not get advanced into the next period. That is expected to be handled after successful payment processing of the generated billing events, see
BillingProcessingResultHandler.- Specified by:
generateBillingEventsForNextSubscriptionPeriodin interfaceSubscriptionBillingEventGeneratorService- Parameters:
subWithItemsAndAdjustments- subscription with items and adjustments to processrequest- Request object describing the context around the request to generate a BillingEventcontextInfo- context information around multi-tenant state- Returns:
- The updated
SubscriptionWithItemsAndAdjustments
-
buildSubscriptionPeriod
protected SubscriptionPeriod buildSubscriptionPeriod(Subscription subscription, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request) -
determinePeriodStartDate
protected Date determinePeriodStartDate(@NonNull @NonNull Subscription subscription, @NonNull @NonNull Date subscriptionBillDate) Identifies the subscription period start date.- Parameters:
subscription- The subscription whose period end date is being calculatedsubscriptionBillDate- The subscription's bill date, which serves as the boundary between two periods.- Returns:
- the subscription's period start date
-
determineTypicalPeriodEndDate
@Nullable protected Date determineTypicalPeriodEndDate(@NonNull @NonNull Subscription subscription, @NonNull @NonNull Date periodStartDate) Identifies the subscription period end date by calculating the next bill date, then subtracting 1 nanosecond so that the end of the period occurs immediately before the next bill date.- Parameters:
subscription- The subscription whose period end date is being calculatedperiodStartDate- The date describing the beginning of the period.- Returns:
- The subscription's period end date. Null if a next bill date cannot be identified.
-
populateShortenedPeriodDetails
protected SubscriptionPeriod populateShortenedPeriodDetails(@NonNull @NonNull Subscription subscription, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod, @NonNull @NonNull Date periodStartDate, @Nullable Date typicalPeriodEndDate) -
isPeriodShortenedByEndOfTerms
protected boolean isPeriodShortenedByEndOfTerms(@NonNull @NonNull Subscription subscription, @Nullable Date calculatedPeriodEndDate) -
isPeriodShortenedByScheduledStatusChange
protected boolean isPeriodShortenedByScheduledStatusChange(@NonNull @NonNull Subscription subscription, @Nullable Date calculatedPeriodEndDate) -
populateShortenedPeriodDetails
protected SubscriptionPeriod populateShortenedPeriodDetails(@NonNull @NonNull Subscription subscription, @NonNull @NonNull String shortenedPeriodReason, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod, @NonNull @NonNull Date periodStartDate, @NonNull @NonNull Date shortenedPeriodEndDate, @NonNull @NonNull Date typicalPeriodEndDate) -
determineNumberOfDaysInShortenedPeriod
-
determineNumberOfDaysInFullPeriod
-
determineBillDate
protected Date determineBillDate(@NonNull @NonNull Subscription subscription, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod) Identifies the bill date for the subscription period. For prepaid subscriptions, this is equal to the period start date. For postpaid subscriptions, the bill date should be the day after the period end date.- Parameters:
subscription- The subscription whose period bill date is being calculatedsubscriptionPeriod- The subscription period definition containing the subscription start & end dates- Returns:
- The bill date for the subscription period
-
adoptNextStatusForSubscription
protected Subscription adoptNextStatusForSubscription(Subscription subscription, Date billDate, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adopt subscriptionNextStatus as subscriptionStatus and handle the status change -
isNextStatusChangeDue
-
hasReachedScheduledStatusChange
protected boolean hasReachedScheduledStatusChange(@NonNull @NonNull Subscription subscription, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod) Determines if a scheduled subscription status change is due on or before the providedperiodStartDate. Note: In all out-of-box scenarios, scheduled subscription status changes are applied on a subscription bill date as the subscription transitions from one period to the next.- Parameters:
subscription- theSubscriptionbeing processedsubscriptionPeriod- the subscription bill date that's being considered- Returns:
- Whether the subscription has a scheduled status change that is due to be applied
-
hasReachedEndOfTerms
protected boolean hasReachedEndOfTerms(@NonNull @NonNull Subscription subscription, SubscriptionPeriod subscriptionPeriod) Determines if the subscription's end of terms occurs on or before the providedperiodStartDate. Note: In all out-of-box scenarios, scheduled subscription status changes are applied on a subscription bill date as the subscription transitions from one period to the next.- Parameters:
subscription- theSubscriptionbeing processedsubscriptionPeriod- the subscription bill date that's being considered- Returns:
- Whether the subscription has a scheduled status change that is due to be applied
-
constructBillingEventDTO
protected BillingEventDTO constructBillingEventDTO(@NonNull @NonNull SubscriptionWithItemsAndAdjustments subscriptionWithItemsAndAdjustments, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
constructBillingEventDomain
protected BillingEvent constructBillingEventDomain(@NonNull @NonNull Subscription subscription, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
getBillingCycleStartDate
protected Date getBillingCycleStartDate(SubscriptionPeriod subscriptionPeriod, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request) -
getBillingCycleEndDate
protected Date getBillingCycleEndDate(SubscriptionPeriod subscriptionPeriod, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request) -
getBillDate
protected Date getBillDate(SubscriptionPeriod subscriptionPeriod, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request) -
getSourceId
protected String getSourceId(Subscription subscription, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request) -
getOrderSource
protected String getOrderSource(Subscription subscription, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request) -
getOrderRef
protected String getOrderRef(Subscription subscription, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request) -
getOrderId
@Nullable protected String getOrderId(Subscription subscription, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request) -
createBillingEventItemWithTaxDetailsList
protected List<BillingEventItemWithTaxDetails> createBillingEventItemWithTaxDetailsList(@NonNull @NonNull SubscriptionWithItemsAndAdjustments subscriptionWithItemsAndAdjustments, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
createBillingEventItemAdjustments
protected List<BillingEventItemAdjustment> createBillingEventItemAdjustments(@NonNull @NonNull Subscription subscription, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod, @NonNull @NonNull SubscriptionItem subscriptionItem, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
createBillingEventItemAdjustment
protected BillingEventItemAdjustment createBillingEventItemAdjustment(@NonNull @NonNull Subscription subscription, @NonNull @NonNull SubscriptionItem subscriptionItem, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod, @NonNull @NonNull SubscriptionItemAdjustment subscriptionItemAdjustment, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
determineItemAdjustmentUnitAmount
protected BigDecimal determineItemAdjustmentUnitAmount(@NonNull @NonNull Subscription subscription, @NonNull @NonNull SubscriptionItem subscriptionItem, @NonNull @NonNull SubscriptionItemAdjustment subscriptionItemAdjustment, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod) -
createBillingEventPaymentWithTransaction
protected BillingEventPaymentWithTransaction createBillingEventPaymentWithTransaction(@NonNull @NonNull Subscription subscription, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
createBillingEventItem
protected BillingEventItem createBillingEventItem(@NonNull @NonNull Subscription subscription, @NonNull @NonNull SubscriptionItem subscriptionItem, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
determineBillingEventItemUnitPrice
protected BigDecimal determineBillingEventItemUnitPrice(@NonNull @NonNull Subscription subscription, @NonNull @NonNull SubscriptionItem subscriptionItem, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod) -
createBillingEventAdjustments
protected List<BillingEventAdjustment> createBillingEventAdjustments(@NonNull @NonNull SubscriptionWithItemsAndAdjustments subscriptionWithItemsAndAdjustments, @NonNull @NonNull List<BillingEventItemWithTaxDetails> billingEventItemTaxDetails, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod, @Nullable SubscriptionNextPeriodBillingEventGenerationRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
determineAdjustmentAmount
protected BigDecimal determineAdjustmentAmount(@NonNull @NonNull Subscription subscription, @NonNull @NonNull List<BillingEventItemWithTaxDetails> billingEventItemTaxDetails, @NonNull @NonNull SubscriptionAdjustment subscriptionAdjustment, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod) -
getCurrency
protected javax.money.CurrencyUnit getCurrency(@NonNull @NonNull Subscription subscription, @NonNull @NonNull SubscriptionItem subscriptionItem) Hook point to determine the currency to use for pricing calculations. This is useful for rare cases where theSubscriptionItemcurrency is not the same as theSubscriptioncurrency.- Parameters:
subscription- theSubscriptionbeing processedsubscriptionItem- theSubscriptionItembeing processed- Returns:
- the currency to use for pricing calculations
-
calculateProratedPrice
protected BigDecimal calculateProratedPrice(@NonNull @NonNull BigDecimal basePrice, @NonNull @NonNull javax.money.CurrencyUnit currency, @NonNull @NonNull Long numberOfDaysInShortenedPeriod, @NonNull @NonNull Long numberOfDaysInFullPeriod) -
isAdjustmentEligibleForSubscriptionPeriod
protected boolean isAdjustmentEligibleForSubscriptionPeriod(@Nullable Integer subscriptionNextPeriod, @Nullable Integer adjustmentBeginPeriod, @Nullable Integer adjustmentEndPeriod) Check if theSubscription.getNextPeriod()is between Adjustment begin and end period. -
calculateAdjustmentAmount
protected BigDecimal calculateAdjustmentAmount(String adjustmentType, BigDecimal subtotal, BigDecimal adjustmentAmount, javax.money.CurrencyUnit currencyUnit) CalculateSubscriptionItemAdjustment.getAdjustmentAmount()based on theSubscriptionItemAdjustment.getSubscriptionAdjustmentType()()} -
adjustmentAmountFromBillingEventItems
protected BigDecimal adjustmentAmountFromBillingEventItems(List<BillingEventItemWithTaxDetails> billingEventItemTaxDetails) Sum of all the BillingEventItems unit price per quantity including the BillingEventItemAdjustments amount -
prepareSubscriptionForNextBilling
protected Subscription prepareSubscriptionForNextBilling(Subscription subscription, SubscriptionPeriod subscriptionPeriod) Sets the billing fields on theSubscriptionto prepare it for the next billing cycle -
getNextBillDateForShortenedPeriod
protected Date getNextBillDateForShortenedPeriod(@NonNull @NonNull Subscription subscription, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod) -
getNextBillDateForShortenedPeriodForCustomReason
protected Date getNextBillDateForShortenedPeriodForCustomReason(Subscription subscription, SubscriptionPeriod subscriptionPeriod) -
recordSubscriptionPeriod
protected Subscription recordSubscriptionPeriod(@NonNull @NonNull Subscription subscription, @NonNull @NonNull SubscriptionPeriod subscriptionPeriod) -
isZeroDollarBillingEventPayment
protected boolean isZeroDollarBillingEventPayment(Subscription subscription, @Nullable BillingEventDTO billingEventDTO) Returns true if thepayment totalis equal to zero -
getOnlyTenantContextInfo
@Nullable protected com.broadleafcommerce.data.tracking.core.context.ContextInfo getOnlyTenantContextInfo(@Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Clones providedcontextInfowithout application. -
setBillingEventService
@Autowired public void setBillingEventService(BillingEventService<BillingEvent, BillingEventDTO, CreateBillingEventRequest> billingEventService) -
getBillingEventService
protected BillingEventService<BillingEvent,BillingEventDTO, getBillingEventService()CreateBillingEventRequest> -
setSubscriptionItemAdjustmentService
@Autowired public void setSubscriptionItemAdjustmentService(SubscriptionItemAdjustmentService<SubscriptionItemAdjustment> subscriptionItemAdjustmentService) -
getSubscriptionItemAdjustmentService
protected SubscriptionItemAdjustmentService<SubscriptionItemAdjustment> getSubscriptionItemAdjustmentService() -
setBillingEventPricingService
@Autowired public void setBillingEventPricingService(BillingEventPricingService<BillingEventDTO, BillingEvent, BillingEventAdjustment, BillingEventItemWithTaxDetails, BillingEventPaymentWithTransaction> billingEventPricingService) -
getBillingEventPricingService
protected BillingEventPricingService<BillingEventDTO,BillingEvent, getBillingEventPricingService()BillingEventAdjustment, BillingEventItemWithTaxDetails, BillingEventPaymentWithTransaction> -
setSubscriptionService
@Autowired public void setSubscriptionService(SubscriptionService<Subscription, SubscriptionWithItems> subscriptionService) -
getSubscriptionService
-
setSubscriptionNextBillDateService
@Autowired public void setSubscriptionNextBillDateService(SubscriptionNextBillDateService subscriptionNextBillDateService) -
getSubscriptionNextBillDateService
-
setTypeFactory
@Autowired public void setTypeFactory(com.broadleafcommerce.common.extension.TypeFactory typeFactory) -
getTypeFactory
protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory() -
getSubscriptionBillingProperties
-
setSubscriptionBillingProperties
@Autowired public void setSubscriptionBillingProperties(SubscriptionBillingProperties subscriptionBillingProperties)
-