Class DefaultCartOperationService
- All Implemented Interfaces:
CartOperationService
- Author:
- Chad Harchar (charchar)
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
-
Field Summary
Modifier and TypeFieldDescriptionprotected static final String
protected static final String
protected static final SecureRandom
-
Constructor Summary
ConstructorDescriptionDefaultCartOperationService
(CartOperationServiceProviders providers, CartPricingService cartPricingService, CartItemConfigurationService<? extends CatalogItem> cartItemConfigurationService, CartItemCatalogInformationService<? extends CatalogItem> cartItemCatalogInformationService, com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils authenticationUtils, com.broadleafcommerce.common.extension.TypeFactory typeFactory, CartOperationServiceProperties properties, CartItemMergingService<com.broadleafcommerce.cart.client.domain.CartItem> cartItemMergingService, org.springframework.context.MessageSource messageSource, TaxService taxService, StaleCartPricingResultHolder staleCartPricingResultHolder) -
Method Summary
Modifier and TypeMethodDescriptioncom.broadleafcommerce.cart.client.domain.Cart
addAttributeToCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull AddAttributeRequest addAttributeRequest, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adds an attribute to the providedCart
.protected boolean
addCampaignCodeIfExistsOnCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String code, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated.Deprecated as of 1.8, if using OfferService 2.0, this method is not usedprotected boolean
addCampaignForCodeIfExists
(String code, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated.Deprecated as of 1.8, if using OfferService 2.0, this method is not usedaddCodeToCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull AddCodeRequest codeRequest, boolean allowPriceCart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve the cart Determine if the code is valid as a campaign tracking code If so, add it to the cart as aCampaignRef
Determine if the code is valid as a shared code If so, add it to the cart Update the cart Price the cart, using offers and price lists (optional) Update the cart and its items (optional)protected void
addFreeGiftItemsToCart
(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem> freeGiftItemsToAdd, List<com.broadleafcommerce.cart.client.domain.CartItem> updatedCartItems, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adds the list ofFreeGiftItems
to cart, and then adds the ids of those added free gift cart items to the qualifier cart items attributes.protected void
addItemsToFulfillmentGroup
(@NonNull Collection<? extends com.broadleafcommerce.cart.client.domain.CartItem> cartItems, @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull javax.money.CurrencyUnit expectedCurrency, com.broadleafcommerce.cart.client.domain.CartItem parentCartItem) com.broadleafcommerce.cart.client.domain.Cart
addItemToCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull AddItemRequest addItemRequest, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adds a single item to the providedCart
based on the providedAddItemRequest
.protected void
addItemToFulfillmentGroup
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, Set<String> assignedCartItemIds, com.broadleafcommerce.cart.client.domain.CartItem parentCartItem) Assigns the cart item and its dependent cart items to the fulfillment group.addManyItemsToCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull Collection<AddItemRequest> addItemRequests, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adds one or more items to the providedCart
.protected boolean
addOfferCodeIfUsable
(String code, boolean isForCampaign, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adds thecode
toCart.getOfferCodes()
if it's usable.addOfferCodeToCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull AddCodeRequest addOfferCodeRequest, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adds an offer code to the providedCart
.protected void
addRemovedFreeGiftOfferToIgnoreList
(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItemsBeingRemoved) Adds the offer id toCart's
ignore list inCart.getInternalAttributes()
whenever a free gift item is removed, so that the free gift item will not be added again.com.broadleafcommerce.cart.client.domain.Cart
addToCart
(@NonNull AddItemRequest addItemRequest, com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.order.common.domain.CustomerRef customerRef, boolean allowPriceCart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Add an item to the customer's current cart based on the provided untrusted information.protected com.broadleafcommerce.cart.client.domain.Cart
addUnassignedItemsToFulfillmentGroup
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart) IdentifyCartItems
that have not been assigned to aFulfillmentGroup
& add them to the relevant FulfillmentGroup.protected PaymentSummary
allocateCartTotalToPayment
(@NonNull PaymentSummary paymentSummary, @NonNull javax.money.MonetaryAmount cartTotal, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to automatically reallocate the cart total to the cart's single payment.protected PaymentSummary
allocateCartTotalToPayment
(@NonNull PaymentSummary paymentSummary, @NonNull javax.money.MonetaryAmount cartTotal, String lockToken, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to automatically reallocate the cart total to the cart's single payment.protected AddCodeToCartResponse
buildAddCodeToCartResponse
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String code, boolean cartWasRepriced) Builds anAddCodeToCartResponse
based on the provided cart, code, & whether or not the cart was repricedprotected AddItemRequest
buildAddItemRequest
(com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem freeGiftItem) Builds anAddItemRequest
from the givenFreeGiftItem
.protected com.broadleafcommerce.order.common.domain.Adjustment
buildAdjustment
(com.broadleafcommerce.promotion.offer.client.web.context.info.Adjustment offerAdjustment) Builds anAdjustment
based on the givenAdjustment
.protected com.broadleafcommerce.order.common.domain.CampaignRef
buildCampaignRef
(String code, String trackingId) Deprecated.Deprecated as of 1.8, if using OfferService 2.0, this method is not usedprotected com.broadleafcommerce.cart.client.domain.CartActionAudit
buildCartActionAuditForAccountCartUpdate
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String actionType, String userType) Builds aCartActionAudit
for cart modification if the givenCart
was modified by an account member.protected com.broadleafcommerce.cart.client.domain.CartActionAudit
buildCartActionAuditForApproverCartUpdate
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart) Builds aCartActionAudit
for cart modification if the givenCart
was modified by an account approver.protected com.broadleafcommerce.cart.client.domain.CartItem
buildCartItem
(@NonNull AddItemRequest addItemRequest, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, javax.money.CurrencyUnit currencyUnit, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Populates a new cart item from theAddItemRequest
.buildCartItems
(@NonNull Collection<AddItemRequest> addItemRequests, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, javax.money.CurrencyUnit currencyUnit, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Populates new cart items from theAddItemRequests
.protected CatalogItemRequest
buildCatalogItemRequest
(@NonNull AddItemRequest addItemRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to create theCatalogItemRequest
and populate any additional attributes that should be passed to theCatalogProvider
when fetching the catalog representation for adding the cart item.protected CatalogItemRequest
buildCatalogItemRequest
(@NonNull UpdateItemRequest updateItemRequest, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to build theCatalogItemRequest
and populate any additional attributes that should be passed to theCatalogProvider
when fetching the catalog representation for updating the cart item.protected Collection<CatalogItemRequest>
buildCatalogItemRequestsForAdd
(@NonNull Collection<AddItemRequest> addItemRequests, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected Collection<CatalogItemRequest>
buildCatalogItemRequestsForUpdate
(@NonNull Collection<UpdateItemRequest> updateItemRequests, @NonNull Collection<com.broadleafcommerce.cart.client.domain.CartItem> cartItems, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected com.broadleafcommerce.cart.client.domain.CartItem
protected String
buildGroupReferenceNumber
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart) Builds aFulfillmentGroup.getReferenceNumber()
for a new group.protected String
buildGroupReferenceNumber
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String fulfillmentGroupId) Builds aFulfillmentGroup.getReferenceNumber()
for the given cart and group ID.buildItemAttributeChoices
(@NonNull Map<String, String> requestItemAttributeChoices) protected com.broadleafcommerce.order.common.domain.OfferItemDetail
buildOfferItemDetails
(com.broadleafcommerce.promotion.offer.client.web.context.info.OfferItemDetail offerItemDetail) Builds anOfferItemDetail
from the givenOfferItemDetail
.protected UpdateCartRequest
buildUpdateCartRequestWithCartActionAudit
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart) Builds anUpdateCartRequest
with aCartActionAudit
if the given accountCart
was modified by an account approver.protected AddItemFailure
buildValidationFailure
(@NonNull AddItemRequest addItemRequest, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Builds anAddItemFailure
based on the providedAddItemRequest
&CartItem
representing an invalid add to cart requestbulkAddToCart
(@NonNull Collection<AddItemRequest> addItemRequests, com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.order.common.domain.CustomerRef customerRef, boolean allowPriceCart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Add a list of items to the customer's current cart based on the provided untrusted information.protected javax.money.MonetaryAmount
calculateMerchandiseTotalAmountForFulfillmentItemUpdate
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem fulfillmentCartItem, @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentItem fulfillmentItem, int totalQuantity) Calculates theFulfillmentItem.getMerchandiseTotalAmount()
for the cart item.protected boolean
catalogItemRequestAlreadyExist
(@NonNull Set<CatalogItemRequest> catalogItemRequests, @NonNull AddItemRequest addItemRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to prevent duplicateCatalogItemRequests
from being built based on theAddItemRequest
.protected boolean
catalogItemRequestAlreadyExist
(@NonNull Set<CatalogItemRequest> catalogItemRequests, @NonNull UpdateItemRequest updateItemRequest, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to prevent duplicateCatalogItemRequests
from being built based on theCartItem
andUpdateItemRequest
.com.broadleafcommerce.cart.client.domain.Cart
createCart
(@NonNull CartCreationRequest cartCreationRequest, com.broadleafcommerce.order.common.domain.CustomerRef customer, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected com.broadleafcommerce.cart.client.domain.CartAlert
createCartAlert
(String message) protected com.broadleafcommerce.cart.client.domain.CartItem
createCartItem
(@NonNull AddItemRequest addItemRequest, javax.money.CurrencyUnit currencyUnit) Creates aCartItem
based on the providedAddItemRequest
protected com.broadleafcommerce.cart.client.domain.Cart
createEmptyCart
(com.broadleafcommerce.order.common.domain.CustomerRef customer, javax.money.CurrencyUnit currencyUnit, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Creates and returns an empty, unsavedCart
with typical defaults.protected void
createFulfillmentGroupForItems
(@NonNull Collection<? extends com.broadleafcommerce.cart.client.domain.CartItem> cartItems, @NonNull String fulfillmentType, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.cart.client.domain.CartItem parentCartItem) protected com.broadleafcommerce.cart.client.domain.Cart
createItemAndAddToCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull AddItemRequest addItemRequest, javax.money.CurrencyUnit currencyUnit, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Creates a new item and adds it to the providedCart
.protected BulkAddToCartResponse
createItemsAndAddToCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, Collection<AddItemRequest> addItemRequests, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Creates new items and adds them to the providedCart
.protected void
defaultCartCurrency
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, javax.money.CurrencyUnit currencyUnit) protected void
defaultCartLocale
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected final boolean
doesCartContainCampaignForCode
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String code) Deprecated.protected boolean
doFulfillmentExclusionsPassForCOD
(@NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) protected boolean
doFulfillmentInclusionsPassForCOD
(@NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) protected void
doSoftInventoryReservationIfNecessary
(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItems, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) If any of the supplied cart items have a reservation strategy of ADD_TO_CART, a soft reservation is performed.protected com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils
protected CartItemCatalogInformationService<? extends CatalogItem>
protected CartItemConfigurationService<? extends CatalogItem>
getCartItemIdsWithDependentItem
(List<com.broadleafcommerce.cart.client.domain.CartItem> cartItems) protected CartItemMergingService<com.broadleafcommerce.cart.client.domain.CartItem>
protected CartPricingService
protected String
getCartTotalChangeMessage
(javax.money.MonetaryAmount latestCartPrice) protected String
getCatalogItemKeyForMissingEntities
(AddItemRequest addItemRequest) Hook point to determine what the missing entities map is keyed on from theAddItemRequest
.protected CheckoutPaymentMethodService
protected CheckoutPaymentMethodOption
getCODCheckoutPaymentMethodOption
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected javax.money.CurrencyUnit
getCurrencyUnit
(javax.money.CurrencySupplier currencySupplier, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Call utility method to determine currency.protected Supplier<com.broadleafcommerce.cart.client.domain.FulfillmentGroup>
getFulfillmentGroupById
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String fulfillmentGroupId) Gets the fulfillment group by the provided ID.protected InventoryAvailabilityService<CatalogItem>
protected String
getMessage
(@NonNull String errorMessage, Object... args) protected org.springframework.context.MessageSource
protected CartOperationServiceOfferUtils
protected PaymentProvider<PaymentSummary>
protected com.broadleafcommerce.pricing.client.domain.context.PriceContext
getPriceContext
(Locale locale, javax.money.CurrencyUnit currency) protected Object
getProductType
(com.broadleafcommerce.cart.client.domain.CartItem cartItem) protected CartOperationServiceProperties
protected CartOperationServiceProviders
protected List<com.broadleafcommerce.order.common.domain.Adjustment>
getRelatedAdjustments
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String code) protected com.broadleafcommerce.cart.client.domain.CartItem
getRequiredCartItem
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String cartItemId) Gets a cart item from the cart by its ID.protected com.broadleafcommerce.rulesengine.expression.service.SpelRuleEvaluationService
protected StaleCartItemsService
protected StaleCartPricingResultHolder
protected TaxService
protected com.broadleafcommerce.common.extension.TypeFactory
protected boolean
handleCODStatusChange
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo, com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup) Handles when Collect on Delivery is selected or de-selected.protected boolean
handleDeSelectCODBeforeUpdate
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Handles when Collect on Delivery is selected or de-selected.protected boolean
handleSelectCODBeforeUpdate
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Handles when Collect on Delivery is selected.protected void
handleSetDeselectedCODAttribute
(@NonNull UpdateFulfillmentGroupRequest updateFulfillmentGroupRequest, @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fgToUpdate) Sets a temporary attribute on the fullfillment group if theCOD status attribute
has gone from selected to not selected.protected boolean
hasDeselectedCOD
(com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup) protected List<AddItemRequest>
identifyAddItemRequestsForCatalogItems
(@NonNull Collection<AddItemRequest> addItemRequests, @NonNull CatalogItemList<? extends CatalogItem> catalogItemList) protected Optional<? extends CatalogItem>
identifyCatalogItemForCartItem
(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull CatalogItemList<? extends CatalogItem> catalogItemList) protected CatalogItemList<? extends CatalogItem>
identifyCatalogItemsForAddItemRequests
(@NonNull Collection<AddItemRequest> addItemRequests, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated, for removal: This API element is subject to removal in a future version.protected CatalogItemList<? extends CatalogItem>
identifyCatalogItemsForAddItemRequests
(@NonNull Collection<AddItemRequest> addItemRequests, com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected CatalogItemList<? extends CatalogItem>
identifyCatalogItemsForUpdateItemRequest
(@NonNull UpdateItemRequest updateItemRequest, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated, for removal: This API element is subject to removal in a future version.protected CatalogItemList<? extends CatalogItem>
identifyCatalogItemsForUpdateItemRequest
(@NonNull UpdateItemRequest updateItemRequest, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected void
insertItems
(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> itemsToAdd, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected void
invalidateFulfillmentGroupOverride
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) protected boolean
isCartItemCODFee
(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) protected boolean
isCartMaxTotalAllowedForCOD
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) protected boolean
isCartMinTotalAllowedForCOD
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) protected boolean
isItemElegibleForRemoval
(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Hook point to prevent removal of cart items that should not be removed through the cart management endpoints.protected boolean
isPaymentReallocationRequired
(javax.money.MonetaryAmount previousCartTotal, javax.money.MonetaryAmount newCartTotal) protected boolean
isUsingCollectOnDelivery
(com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup) protected BulkAddToCartResponse
Instantiates a newBulkAddToCartResponse
using theTypeFactory
.protected com.broadleafcommerce.cart.client.domain.Cart
newCart()
Uses theTypeFactory
to create a newCart
object.protected CartCreationRequest
protected com.broadleafcommerce.cart.client.domain.CartPricing
Uses theTypeFactory
to create a newCartPricing
object.protected String
newCartStatus
(com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Determines what status should be used when creating new carts.protected boolean
populateCartItemUpdates
(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull UpdateItemRequest request) Takes the changes from theUpdateItemRequest
and populates them onto theCartItem
.protected boolean
populateCartUpdatesFromUpdateItemRequest
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull UpdateItemRequest request) Takes the changes from theUpdateItemRequest
and populates them onto theCart
.protected com.broadleafcommerce.cart.client.domain.CartItem
populateFromRequest
(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull AddItemRequest addItemRequest, javax.money.CurrencyUnit currencyUnit) Populates the cart item fields based on the request.com.broadleafcommerce.cart.client.domain.Cart
priceCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, PriceCartRequest priceCartRequest, boolean saveCart, Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Prices cart, processes free gift offers, and saves cart with the providedPriceCartRequest
ifsaveCart
is true.com.broadleafcommerce.cart.client.domain.Cart
priceCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, PriceCartRequest priceCartRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Prices and saves the cart with the providedPriceCartRequest
.com.broadleafcommerce.cart.client.domain.Cart
priceCartWithCatalogPriceUpdates
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Reprice the cart, including applying the latest catalog-based prices for each of its itemsprotected List<com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem>
processExistingFreeGiftItems
(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> updatedCartItems, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates existing free gift items quantities and remove existing free gift items if necessary, and then return a list ofFreeGiftItems
to add to cart.protected void
processFreeGiftItemsForRemoval
(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItemsBeingRemoved) Processes free gift items wheneverCartItems
are being removed.protected void
processFreeGiftOffers
(com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Processes all free gift offers stored inCart.getInternalAttributes()
.protected void
reallocateCartTotalAmongstPayments
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull javax.money.MonetaryAmount newCartTotal, @NonNull Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) reallocateCartTotalAmongstPayments
(@NonNull javax.money.MonetaryAmount newCartTotal, @NonNull List<PaymentSummary> paymentSummaries, @NonNull Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Reallocate the cart total among the cart's paymentsprotected List<PaymentSummary>
reallocateCartTotalMultiplePayments
(@NonNull javax.money.MonetaryAmount cartTotal, @NonNull List<PaymentSummary> paymentSummaries, Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to automatically reallocate the cart total amongst the cart's payments.com.broadleafcommerce.cart.client.domain.Cart
recalculateTaxesForCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, boolean estimated, boolean actual, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated.com.broadleafcommerce.cart.client.domain.Cart
recalculateTaxesForCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, boolean estimated, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Recalculates the taxes for the providedCart
.protected void
removeAssociatedFreeGiftItems
(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItemsBeingRemoved) Removes the associated free gift item if the offer qualifier item is removed.com.broadleafcommerce.cart.client.domain.Cart
removeAttributeFromCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String key, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Removes an attribute to the providedCart
.com.broadleafcommerce.cart.client.domain.Cart
removeCartItems
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, Collection<String> cartItemIds, boolean allowPriceCart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Remove items from the cart.protected void
removeExistingFreeGiftItemsFromCart
(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> existingFreeGiftItemsToRemove, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Remove existing free giftCartItems
from cart.protected com.broadleafcommerce.cart.client.domain.Cart
removeFulfillmentItemsWithoutCartItems
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart) com.broadleafcommerce.cart.client.domain.Cart
removeItemFromCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String cartItemId, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Removes a single item from the providedCart
matching the provided cart item ID.protected void
removeItemsFromFulfillmentGroup
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItems) com.broadleafcommerce.cart.client.domain.Cart
removeManyItemsFromCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, Collection<String> cartItemIds, boolean price, boolean updateCart, Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Removes one or more items from the providedCart
matching the provided cart item IDs.com.broadleafcommerce.cart.client.domain.Cart
removeOfferAndCampaignCodesFromCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, List<String> codes, boolean allowPriceCart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Removes the provided offer and campaign codes from the cart and then updates the cart.com.broadleafcommerce.cart.client.domain.Cart
removeOfferCodeFromCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String offerCode, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Removes an offer code from the providedCart
, if it exists.protected com.broadleafcommerce.cart.client.domain.Cart
removeStaleCartItem
(com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.cart.client.domain.CartItem cartItem, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected Optional<com.broadleafcommerce.cart.client.domain.Cart>
repriceCartIfPricingIsStale
(Optional<com.broadleafcommerce.cart.client.domain.Cart> optionalCart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Called during cart resolution to check if the catalog prices on the cart are stale, and if so, updates those prices and resets the time since they were last changed.protected void
resetFulfillmentGroupReferenceNumbers
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart) protected String
resolveDefaultFulfillmentType
(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Determines the defaultFulfillmentType
for the providedCartItem
protected String
resolveTaxAddressSource
(String fulfillmentType) Determines the tax address source that should be used forFulfillmentGroup.getTaxAddressSource()
for the given fulfillment type.Optional<com.broadleafcommerce.cart.client.domain.Cart>
retrieveCartByCartId
(@NonNull String cartId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve the cart for the provided id.protected Optional<com.broadleafcommerce.cart.client.domain.Cart>
retrieveCartByCartIdWithStatus
(@NonNull String cartId, com.broadleafcommerce.cart.client.domain.enums.CartStatus status, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Optional<com.broadleafcommerce.cart.client.domain.Cart>
retrieveCartByStatus
(String customerId, String accountId, String status, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieves a customer or account cart with the provided customer ID, account ID, and status, if it exists.Optional<com.broadleafcommerce.cart.client.domain.Cart>
retrieveCartByStatusAndName
(String customerId, String status, String name, String accountId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieves a customer or account cart with the provided customer ID, account ID, and status, if it exists.Optional<com.broadleafcommerce.cart.client.domain.Cart>
retrieveCsrCartByCartId
(@NonNull String cartId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve the cart for the provided id, as long as it is CSR-owned.Optional<com.broadleafcommerce.cart.client.domain.Cart>
retrieveCsrOwnedCartByCustomerIdAndApplicationId
(@NonNull String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve the CSR-owned cart for the provided customer.Optional<com.broadleafcommerce.cart.client.domain.Cart>
retrieveImplicitCart
(String customerId, String accountId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Resolves the implicit cart for the given customer id and account id.Optional<com.broadleafcommerce.cart.client.domain.Cart>
retrieveInProcessCartByCartId
(@NonNull String cartId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve the cart for the provided id, as long as it is in-process.Optional<com.broadleafcommerce.cart.client.domain.Cart>
retrieveInProcessCartByCustomerIdAndApplicationId
(@NonNull String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve the in-process cart for the provided customer.org.springframework.data.domain.Page<com.broadleafcommerce.cart.client.domain.Cart>
retrieveMyCarts
(@NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer, cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Retrieves all of a customer's carts that have not been locked, archived, or submitted.Optional<com.broadleafcommerce.cart.client.domain.Cart>
retrieveTestCartByCartId
(@NonNull String cartId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve the cart for the provided id, as long as it is a test cart.protected com.broadleafcommerce.cart.client.domain.Cart
saveCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Helper method to encapsulate saving an existing Cart.protected com.broadleafcommerce.cart.client.domain.Cart
saveCart
(@NonNull UpdateCartRequest updateCartRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Helper method to encapsulate saving an existing Cart.void
setCheckoutPaymentMethodService
(CheckoutPaymentMethodService checkoutPaymentMethodService) void
setInventoryAvailabilityService
(InventoryAvailabilityService<CatalogItem> inventoryAvailabilityService) void
setOfferUtils
(CartOperationServiceOfferUtils offerUtils) void
setPaymentProvider
(PaymentProvider<PaymentSummary> paymentProvider) void
setSpelRuleEvaluationService
(com.broadleafcommerce.rulesengine.expression.service.SpelRuleEvaluationService spelRuleEvaluationService) void
setStaleCartItemsService
(StaleCartItemsService staleCartItemsService) com.broadleafcommerce.cart.client.domain.Cart
updateAsNamedCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String name, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates the providedCart
with the given name.com.broadleafcommerce.cart.client.domain.Cart
updateCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, boolean allowPriceCart, boolean wasCartModified, boolean invalidatePrices, Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates the providedCart
based on the provided flags.protected com.broadleafcommerce.cart.client.domain.Cart
updateCartAttributes
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull List<AddItemRequest> successfulAddItemRequests) Update cart attributes based on the successfulAddItemRequests
com.broadleafcommerce.cart.client.domain.Cart
updateCartContactInfo
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull ContactInfoRequest contactInfoRequest, boolean allowPriceCart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Update contact information to allow business users to contact the customer if needed.com.broadleafcommerce.cart.client.domain.Cart
updateCartItem
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull UpdateItemRequest updateItemRequest, boolean allowPriceCart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Update the cart item.com.broadleafcommerce.cart.client.domain.Cart
updateCartStatus
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull UpdateCartStatusRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates thecart's status
.com.broadleafcommerce.cart.client.domain.Cart
updateContactInfoInCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull ContactInfoRequest contactInfoRequest, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates the contact info for the providedCart
.protected void
updateExistingFreeGiftItem
(com.broadleafcommerce.cart.client.domain.CartItem existingFreeGiftItem, com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem freeGift, List<com.broadleafcommerce.cart.client.domain.CartItem> updatedCartItems) Updates existing free giftCartItem
with the latest details from the givenFreeGiftItem
and update itsAdjustment
.com.broadleafcommerce.cart.client.domain.Cart
updateFulfillmentGroup
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String fulfillmentGroupId, @NonNull UpdateFulfillmentGroupRequest fulfillmentGroupRequest, boolean allowPriceCart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Update the fulfillment group.com.broadleafcommerce.cart.client.domain.Cart
updateFulfillmentGroupInCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String referenceNumber, @NonNull UpdateFulfillmentGroupRequest updateFulfillmentGroupRequest, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates an existingFulfillmentGroup
for the providedCart
.protected void
updateFulfillmentItem
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Updates theFulfillmentItem
corresponding to theCartItem
, keeping them in sync.com.broadleafcommerce.cart.client.domain.Cart
updateItemInCart
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull UpdateItemRequest updateItemRequest, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates a single item in the providedCart
based on the providedUpdateItemRequest
.protected void
updatesForBundleFulfillmentItems
(com.broadleafcommerce.cart.client.domain.CartItem parentCartItem, com.broadleafcommerce.cart.client.domain.FulfillmentItem fulfillmentItem) protected void
validateCartItem
(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull CatalogItemList<? extends CatalogItem> catalogItemList, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Validates that theCartItem
includes enough information to correctly represent the product or one of the product's variants.protected void
validateCartItemAfterUpdate
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull CatalogItemList<? extends CatalogItem> catalogItemList, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected void
validateCartItemBeforeUpdate
(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull UpdateItemRequest updateItemRequest) Validates theCartItem
being updated againstUpdateItemRequest
before the actual cart item update.protected void
validateCartStatusChangeRequest
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull UpdateCartStatusRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Takes aUpdateCartStatusRequest
and validates that the targeted cart can have its status changed.protected void
validateCollectOnDeliverySelection
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Validates that Collect on Delivery is still applicable given the updated cart state.protected void
validateCollectOnDeliverySelection
(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected void
validateFreeGiftItemForUpdate
(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull UpdateItemRequest updateItemRequest) If the givenCartItem
is a free gift item, validates that its quantity is not being changed.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.broadleafcommerce.cartoperation.service.CartOperationService
priceCart, priceCart, priceCart, priceCart, removeManyItemsFromCart, removeManyItemsFromCart, retrieveCustomerCartByStatus, updateCart
-
Field Details
-
IS_FEE_REFUNDABLE
- See Also:
-
COD_DESELECTED
- See Also:
-
SECURE_RANDOM
-
-
Constructor Details
-
DefaultCartOperationService
public DefaultCartOperationService(CartOperationServiceProviders providers, CartPricingService cartPricingService, CartItemConfigurationService<? extends CatalogItem> cartItemConfigurationService, CartItemCatalogInformationService<? extends CatalogItem> cartItemCatalogInformationService, com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils authenticationUtils, com.broadleafcommerce.common.extension.TypeFactory typeFactory, CartOperationServiceProperties properties, CartItemMergingService<com.broadleafcommerce.cart.client.domain.CartItem> cartItemMergingService, org.springframework.context.MessageSource messageSource, TaxService taxService, StaleCartPricingResultHolder staleCartPricingResultHolder)
-
-
Method Details
-
retrieveMyCarts
public org.springframework.data.domain.Page<com.broadleafcommerce.cart.client.domain.Cart> retrieveMyCarts(@NonNull @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Description copied from interface:CartOperationService
Retrieves all of a customer's carts that have not been locked, archived, or submitted.- Specified by:
retrieveMyCarts
in interfaceCartOperationService
- Parameters:
customer
- The customer who owns the cartsfilters
- Additional RSQL filterspage
- Pagination paramscontext
- Additional sandbox and multitenant info- Returns:
- All of a customer's carts that have not been locked, archived, or submitted.
-
retrieveCartByCartId
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveCartByCartId(@NonNull @NonNull String cartId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Retrieve the cart for the provided id.- Specified by:
retrieveCartByCartId
in interfaceCartOperationService
- Parameters:
cartId
- The id of the cart on which to perform the operation.contextInfo
- Context information around sandbox and multitenant state.- Returns:
- The cart for the provided id.
-
retrieveCartByStatus
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveCartByStatus(String customerId, @Nullable String accountId, String status, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Retrieves a customer or account cart with the provided customer ID, account ID, and status, if it exists. Customer cart will automatically be retrieved if the givenaccountId
is null.- Specified by:
retrieveCartByStatus
in interfaceCartOperationService
- Parameters:
customerId
- the customer IDaccountId
- the id of the account that theCart
belong to, null can be passed in to retrieve customerCart
status
- the statuscontextInfo
- the context info- Returns:
- the cart, if it exists
-
retrieveCartByStatusAndName
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveCartByStatusAndName(String customerId, String status, @Nullable String name, @Nullable String accountId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Retrieves a customer or account cart with the provided customer ID, account ID, and status, if it exists. Customer cart will automatically be retrieved if the givenaccountId
is null.- Specified by:
retrieveCartByStatusAndName
in interfaceCartOperationService
- Parameters:
customerId
- the customer IDstatus
- the statusname
- the name of the cart or null for a cart with no nameaccountId
- the id of the account that theCart
belong to, null can be passed in to retrieve customerCart
contextInfo
- the context info- Returns:
- the cart, if it exists
-
retrieveImplicitCart
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveImplicitCart(String customerId, @Nullable String accountId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Resolves the implicit cart for the given customer id and account id.Out of the box, a default/implicit cart means an
DefaultCartStatuses.IN_PROCESS
withnull
name, and there should only be one default/implicit cart per user.- Specified by:
retrieveImplicitCart
in interfaceCartOperationService
- Parameters:
customerId
- the customer IDaccountId
- the id of the account that theCart
belong to, null can be passed in to retrieve customerCart
contextInfo
- the context info- Returns:
- the registered customer's implicit cart
-
createCart
public com.broadleafcommerce.cart.client.domain.Cart createCart(@NonNull @NonNull CartCreationRequest cartCreationRequest, @Nullable com.broadleafcommerce.order.common.domain.CustomerRef customer, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Creates a new, in-progressCart
for the providedCartCreationRequest
andCustomerRef
. TheCartCreationRequest
must containFor guest customers, this will create a new guest cart
- Specified by:
createCart
in interfaceCartOperationService
- Parameters:
cartCreationRequest
- the cart creation requestcustomer
- the customercontextInfo
- the context info- Returns:
- the newly created cart
-
processFreeGiftOffers
protected void processFreeGiftOffers(com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Processes all free gift offers stored inCart.getInternalAttributes()
. This will automatically add free gift cart items to cart, update existing free gift items, and remove existing free gift items, if necessary.- Parameters:
cart
- theCart
to process the free gift offers forcontextInfo
- the contextInfo for the request
-
processExistingFreeGiftItems
protected List<com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem> processExistingFreeGiftItems(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> updatedCartItems, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates existing free gift items quantities and remove existing free gift items if necessary, and then return a list ofFreeGiftItems
to add to cart.- Parameters:
cart
- theCart
to process existing free gift items forupdatedCartItems
- a list ofCartItems
whose quantities were updatedcontextInfo
- the contextInfo for the request- Returns:
- a list of
FreeGiftItems
to add to cart
-
updateExistingFreeGiftItem
protected void updateExistingFreeGiftItem(com.broadleafcommerce.cart.client.domain.CartItem existingFreeGiftItem, com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem freeGift, List<com.broadleafcommerce.cart.client.domain.CartItem> updatedCartItems) Updates existing free giftCartItem
with the latest details from the givenFreeGiftItem
and update itsAdjustment
.- Parameters:
existingFreeGiftItem
- the existing free giftCartItem
to update theFreeGiftItem
details forfreeGift
- theFreeGiftItem
to update the existing free giftCartItem
withupdatedCartItems
- a list ofCartItems
whose quantities were updated, used to ensure theFulfillmentItems
are updated as well
-
buildAdjustment
protected com.broadleafcommerce.order.common.domain.Adjustment buildAdjustment(com.broadleafcommerce.promotion.offer.client.web.context.info.Adjustment offerAdjustment) Builds anAdjustment
based on the givenAdjustment
.- Parameters:
offerAdjustment
- theAdjustment
to build it from- Returns:
- an
Adjustment
based on the givenAdjustment
-
buildOfferItemDetails
protected com.broadleafcommerce.order.common.domain.OfferItemDetail buildOfferItemDetails(com.broadleafcommerce.promotion.offer.client.web.context.info.OfferItemDetail offerItemDetail) Builds anOfferItemDetail
from the givenOfferItemDetail
.- Parameters:
offerItemDetail
- theOfferItemDetail
to build theOfferItemDetail
from- Returns:
- an
OfferItemDetail
from the givenOfferItemDetail
-
addFreeGiftItemsToCart
protected void addFreeGiftItemsToCart(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem> freeGiftItemsToAdd, List<com.broadleafcommerce.cart.client.domain.CartItem> updatedCartItems, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adds the list ofFreeGiftItems
to cart, and then adds the ids of those added free gift cart items to the qualifier cart items attributes.- Parameters:
cart
- theCart
to add theFreeGiftItems
tofreeGiftItemsToAdd
- a list ofFreeGiftItems
to addupdatedCartItems
- a list ofCartItems
whose attributes were updated
-
removeExistingFreeGiftItemsFromCart
protected void removeExistingFreeGiftItemsFromCart(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> existingFreeGiftItemsToRemove, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Remove existing free giftCartItems
from cart.Before removing existing free gift
CartItems
, this removes theCartItemAttributeConstants.Internal.IS_FREE_GIFT_ITEM
attribute to ensure that the free gift offer is not added to the offer ignore list inaddRemovedFreeGiftOfferToIgnoreList(Cart, List)
.- Parameters:
cart
- theCart
to remove the existing free gift items fromexistingFreeGiftItemsToRemove
- the existing free giftCartItems
to removecontextInfo
- the contextInfo for the request- See Also:
-
buildAddItemRequest
protected AddItemRequest buildAddItemRequest(com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem freeGiftItem) Builds anAddItemRequest
from the givenFreeGiftItem
.- Parameters:
freeGiftItem
-FreeGiftItem
to build theAddItemRequest
for- Returns:
- the
AddItemRequest
for the givenFreeGiftItem
-
updateCart
public com.broadleafcommerce.cart.client.domain.Cart updateCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, boolean allowPriceCart, boolean wasCartModified, boolean invalidatePrices, Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Updates the providedCart
based on the provided flags.
If the cart was not modified (wasCartModified
), this will price and update the cart when the cart is not already priced (Cart.isPriced()
), regardless ofinvalidatePrices
. If the cart was not modified and the cart is already priced, this does nothing.
If the cart was modified, the cart will be priced if allowed (allowPriceCart
) and if not already already priced or if prices should be invalidated.
Note: It is intentional that no overloaded methods are provided with default values for these parameters. Callers must consider carefully whether their operation modifies the cart or requires price invalidation.- Specified by:
updateCart
in interfaceCartOperationService
- Parameters:
cart
- the cart to be updatedallowPriceCart
- whether the cart may be pricedwasCartModified
- whether the cart was actually modified by the callerinvalidatePrices
- whether to invalidate prices on the cart if changes were madepaymentLockTokens
- Tokens that grant this service access to act upon the payment. The presence of these tokens indicates that this execution flow owns the lock.- Returns:
- synced version of the cart with the cart service
-
buildUpdateCartRequestWithCartActionAudit
protected UpdateCartRequest buildUpdateCartRequestWithCartActionAudit(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart) Builds anUpdateCartRequest
with aCartActionAudit
if the given accountCart
was modified by an account approver.- Parameters:
cart
- theCart
to update- Returns:
- an
UpdateCartRequest
with aCartActionAudit
if the given accountCart
was modified by an account approver.
-
buildCartActionAuditForApproverCartUpdate
protected com.broadleafcommerce.cart.client.domain.CartActionAudit buildCartActionAuditForApproverCartUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart) Builds aCartActionAudit
for cart modification if the givenCart
was modified by an account approver.- Parameters:
cart
- the accountCart
that was modified
-
buildCartActionAuditForAccountCartUpdate
protected com.broadleafcommerce.cart.client.domain.CartActionAudit buildCartActionAuditForAccountCartUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String actionType, String userType) Builds aCartActionAudit
for cart modification if the givenCart
was modified by an account member.- Parameters:
cart
- the accountCart
that was modifiedactionType
- Anaction type
userType
- Auser type
-
updateCartStatus
public com.broadleafcommerce.cart.client.domain.Cart updateCartStatus(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull UpdateCartStatusRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Updates thecart's status
.- Specified by:
updateCartStatus
in interfaceCartOperationService
- Parameters:
cart
- The cart to updaterequest
- The status request with the status to update to, seeDefaultCartStatuses
.contextInfo
- Additional multitenant and sandbox info- Returns:
- The updated cart.
-
updateAsNamedCart
public com.broadleafcommerce.cart.client.domain.Cart updateAsNamedCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String name, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Updates the providedCart
with the given name. This method is often used when transferring or creating new carts for a registered customer who already has an implicit/default cart.Prior to 1.8.0, named carts are represented by the
DefaultCartStatuses.NAMED
. After 1.8.0, named carts simply mean a cart with a name. Named carts are different from the implicit/default cart, implicit/default cart areDefaultCartStatuses.IN_PROCESS
withnull
name, and there can be only one per user.- Specified by:
updateAsNamedCart
in interfaceCartOperationService
- Parameters:
cart
- the cart to updatename
- the name for the cartcontextInfo
- the context info- Returns:
- the newly named cart
-
addItemToCart
public com.broadleafcommerce.cart.client.domain.Cart addItemToCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull AddItemRequest addItemRequest, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Adds a single item to the providedCart
based on the providedAddItemRequest
.- Specified by:
addItemToCart
in interfaceCartOperationService
- Parameters:
cart
- the cartaddItemRequest
- the request to add an itemprice
- whether or not to re-price the cartcontextInfo
- the context info- Returns:
- the cart with item added
-
updateItemInCart
public com.broadleafcommerce.cart.client.domain.Cart updateItemInCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull UpdateItemRequest updateItemRequest, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Updates a single item in the providedCart
based on the providedUpdateItemRequest
.- Specified by:
updateItemInCart
in interfaceCartOperationService
- Parameters:
cart
- the cartupdateItemRequest
- the request to update an itemprice
- whether or not to re-price the cartcontextInfo
- the context info- Returns:
- the cart with item updated
-
identifyCatalogItemForCartItem
protected Optional<? extends CatalogItem> identifyCatalogItemForCartItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull CatalogItemList<? extends CatalogItem> catalogItemList) Attempts to identify theCartItem's
relatedCatalogItem
from the providedCatalogItemList
.By default, this identifies the catalog item by the product ID.
- Parameters:
cartItem
- TheCartItem
whoseCatalogItem
we're attempting to find.catalogItemList
- TheCatalogItemList
that we expect to contain theCartItem's
CatalogItem
.- Returns:
- the
CartItem's
relatedCatalogItem
.
-
removeStaleCartItem
protected com.broadleafcommerce.cart.client.domain.Cart removeStaleCartItem(com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.cart.client.domain.CartItem cartItem, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
removeItemFromCart
public com.broadleafcommerce.cart.client.domain.Cart removeItemFromCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String cartItemId, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Removes a single item from the providedCart
matching the provided cart item ID.- Specified by:
removeItemFromCart
in interfaceCartOperationService
- Parameters:
cart
- the cartcartItemId
- the cart item IDprice
- whether or not to re-price the cartcontextInfo
- the context info- Returns:
- the cart without the provided item
-
addManyItemsToCart
public BulkAddToCartResponse addManyItemsToCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull Collection<AddItemRequest> addItemRequests, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Adds one or more items to the providedCart
.- Specified by:
addManyItemsToCart
in interfaceCartOperationService
- Parameters:
cart
- the cartaddItemRequests
- the add item requestsprice
- whether or not to re-price the cartcontextInfo
- the context info- Returns:
- a response with the cart and any item failures
-
removeManyItemsFromCart
public com.broadleafcommerce.cart.client.domain.Cart removeManyItemsFromCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, Collection<String> cartItemIds, boolean price, boolean updateCart, Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Removes one or more items from the providedCart
matching the provided cart item IDs.- Specified by:
removeManyItemsFromCart
in interfaceCartOperationService
- Parameters:
cart
- the cartcartItemIds
- the cart item IDsprice
- whether or not to re-price the cartupdateCart
- whether or not to updateCart
pricing and save the cart after the removalpaymentLockTokens
- Tokens that grant this service access to act upon the payment. The presence of these tokens indicates that this execution flow owns the lock.contextInfo
- the context info- Returns:
- the cart without the provided item
-
isItemElegibleForRemoval
protected boolean isItemElegibleForRemoval(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Hook point to prevent removal of cart items that should not be removed through the cart management endpoints. By default, we prevent COD fees from being removed.- Parameters:
cartItem
- the cart item to be removed- Returns:
- true, if the cart item can be removed
-
processFreeGiftItemsForRemoval
protected void processFreeGiftItemsForRemoval(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItemsBeingRemoved) Processes free gift items wheneverCartItems
are being removed.- Parameters:
cart
- theCart
the items are being removed fromcartItemsBeingRemoved
- the list ofCartItems
being removed from cart
-
addRemovedFreeGiftOfferToIgnoreList
protected void addRemovedFreeGiftOfferToIgnoreList(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItemsBeingRemoved) Adds the offer id toCart's
ignore list inCart.getInternalAttributes()
whenever a free gift item is removed, so that the free gift item will not be added again.- Parameters:
cart
- theCart
to add the offer id ignore list tocartItemsBeingRemoved
- the list ofCartItems
being removed from cart- See Also:
-
removeAssociatedFreeGiftItems
protected void removeAssociatedFreeGiftItems(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItemsBeingRemoved) Removes the associated free gift item if the offer qualifier item is removed.- Parameters:
cart
- theCart
to remove the free gift item fromcartItemsBeingRemoved
- the list ofCartItems
being removed from cart
-
addOfferCodeToCart
public AddCodeToCartResponse addOfferCodeToCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull AddCodeRequest addOfferCodeRequest, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Adds an offer code to the providedCart
.- Determine if the code is valid as a campaign tracking code
- If so, add it to the cart as a
CampaignRef
- Determine if the code is valid as a shared code
- If so, add it to the cart
- Specified by:
addOfferCodeToCart
in interfaceCartOperationService
- Parameters:
cart
- the cartaddOfferCodeRequest
- the add offer code requestprice
- whether or not to re-price the cartcontextInfo
- the context info- Returns:
- An AddCodeToCartResponse describing the results of adding the offer code to the cart
-
buildAddCodeToCartResponse
protected AddCodeToCartResponse buildAddCodeToCartResponse(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String code, boolean cartWasRepriced) Builds anAddCodeToCartResponse
based on the provided cart, code, & whether or not the cart was repriced- Parameters:
cart
- The updatedCart
, including the code and applicable adjustments (discounts).code
- The offer code that was added to the cartcartWasRepriced
- Whether or not the cart was repriced after the code was added- Returns:
- An AddCodeToCartResponse describing the results of adding the offer code to the cart
-
getRelatedAdjustments
-
removeOfferCodeFromCart
public com.broadleafcommerce.cart.client.domain.Cart removeOfferCodeFromCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String offerCode, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Removes an offer code from the providedCart
, if it exists.- Determine if the code exists as a tracking code on the cart
- If so, remove the corresponding
CampaignRef
- Determine if the offer code exists on the cart
- If so, remove it
- Specified by:
removeOfferCodeFromCart
in interfaceCartOperationService
- Parameters:
cart
- cart cartofferCode
- the offer code to removeprice
- whether or not to re-price the cartcontextInfo
- the context info- Returns:
- the cart without the offer code
-
removeOfferAndCampaignCodesFromCart
public com.broadleafcommerce.cart.client.domain.Cart removeOfferAndCampaignCodesFromCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, List<String> codes, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Removes the provided offer and campaign codes from the cart and then updates the cart.- Specified by:
removeOfferAndCampaignCodesFromCart
in interfaceCartOperationService
- Parameters:
cart
- The id of the cart on which to perform the operation.codes
- The codes to remove from the cart.allowPriceCart
- Whether to allow the cart to be priced after updatingcontextInfo
- Context information around sandbox and multitenant state.- Returns:
- The cart with the codes removed.
-
addAttributeToCart
public com.broadleafcommerce.cart.client.domain.Cart addAttributeToCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull AddAttributeRequest addAttributeRequest, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Adds an attribute to the providedCart
.- Specified by:
addAttributeToCart
in interfaceCartOperationService
- Parameters:
cart
- the cartaddAttributeRequest
- the add attribute requestprice
- whether to allow the cart to be priced after updatingcontextInfo
- the context info- Returns:
- the cart with the attribute added
-
removeAttributeFromCart
public com.broadleafcommerce.cart.client.domain.Cart removeAttributeFromCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String key, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Removes an attribute to the providedCart
.- Specified by:
removeAttributeFromCart
in interfaceCartOperationService
- Parameters:
cart
- the cartkey
- the attribute keyprice
- whether to allow the cart to be priced after updatingcontextInfo
- the context info- Returns:
- the cart without the attribute
-
updateContactInfoInCart
public com.broadleafcommerce.cart.client.domain.Cart updateContactInfoInCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull ContactInfoRequest contactInfoRequest, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Updates the contact info for the providedCart
.- Specified by:
updateContactInfoInCart
in interfaceCartOperationService
- Parameters:
cart
- the cartcontactInfoRequest
- the contact info requestprice
- whether to allow the cart to be priced after updatingcontextInfo
- the context info- Returns:
- the cart with contact info updated
-
updateFulfillmentGroupInCart
public com.broadleafcommerce.cart.client.domain.Cart updateFulfillmentGroupInCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String referenceNumber, @NonNull @NonNull UpdateFulfillmentGroupRequest updateFulfillmentGroupRequest, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Updates an existingFulfillmentGroup
for the providedCart
.- Specified by:
updateFulfillmentGroupInCart
in interfaceCartOperationService
- Parameters:
cart
- the cartreferenceNumber
- the reference number of the fulfillment group to updateupdateFulfillmentGroupRequest
- the fulfillment group update requestprice
- whether to allow the cart to be priced after updatingcontextInfo
- the context info- Returns:
- the cart with an updated fulfillment group
-
priceCart
public com.broadleafcommerce.cart.client.domain.Cart priceCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable PriceCartRequest priceCartRequest, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Prices and saves the cart with the providedPriceCartRequest
.- Specified by:
priceCart
in interfaceCartOperationService
- Parameters:
cart
- the cartpriceCartRequest
- the price cart requestcontextInfo
- the context info- Returns:
- the priced cart
-
priceCart
public com.broadleafcommerce.cart.client.domain.Cart priceCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable PriceCartRequest priceCartRequest, boolean saveCart, Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Prices cart, processes free gift offers, and saves cart with the providedPriceCartRequest
ifsaveCart
is true.- Specified by:
priceCart
in interfaceCartOperationService
- Parameters:
cart
- the cartpriceCartRequest
- the price cart requestsaveCart
- determines whether to save cart after pricingpaymentLockTokens
- Tokens that grant this service access to act upon the payment. The presence of these tokens indicates that this execution flow owns the lock.contextInfo
- the context info- Returns:
- the priced cart
-
reallocateCartTotalAmongstPayments
public List<PaymentSummary> reallocateCartTotalAmongstPayments(@NonNull @NonNull javax.money.MonetaryAmount newCartTotal, @NonNull @NonNull List<PaymentSummary> paymentSummaries, @NonNull @NonNull Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Reallocate the cart total among the cart's payments- Specified by:
reallocateCartTotalAmongstPayments
in interfaceCartOperationService
paymentLockTokens
- Tokens that grant this service access to act upon the payment. The presence of these tokens indicates that this execution flow owns the lock.contextInfo
- the context info
-
isPaymentReallocationRequired
protected boolean isPaymentReallocationRequired(@Nullable javax.money.MonetaryAmount previousCartTotal, @Nullable javax.money.MonetaryAmount newCartTotal) -
reallocateCartTotalAmongstPayments
protected void reallocateCartTotalAmongstPayments(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull javax.money.MonetaryAmount newCartTotal, @NonNull @NonNull Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
allocateCartTotalToPayment
protected PaymentSummary allocateCartTotalToPayment(@NonNull @NonNull PaymentSummary paymentSummary, @NonNull @NonNull javax.money.MonetaryAmount cartTotal, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to automatically reallocate the cart total to the cart's single payment. Note: if a payment makes use of a single-use token and a successful transaction has already been executed, then the amount cannot be changed. In that case, the payment will need to be redefined.- Parameters:
paymentSummary
- A summary of the cart's single paymentcartTotal
- The total price of the cartcontextInfo
- the contextInfo for the request
-
allocateCartTotalToPayment
protected PaymentSummary allocateCartTotalToPayment(@NonNull @NonNull PaymentSummary paymentSummary, @NonNull @NonNull javax.money.MonetaryAmount cartTotal, @Nullable String lockToken, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to automatically reallocate the cart total to the cart's single payment. Note: if a payment makes use of a single-use token and a successful transaction has already been executed, then the amount cannot be changed. In that case, the payment will need to be redefined.- Parameters:
paymentSummary
- A summary of the cart's single paymentcartTotal
- The total price of the cartlockToken
- the token that owns the payment lockcontextInfo
- the contextInfo for the request
-
reallocateCartTotalMultiplePayments
protected List<PaymentSummary> reallocateCartTotalMultiplePayments(@NonNull @NonNull javax.money.MonetaryAmount cartTotal, @NonNull @NonNull List<PaymentSummary> paymentSummaries, @Nullable Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to automatically reallocate the cart total amongst the cart's payments. Note: if a payment makes use of a single-use token and a successful transaction has already been executed, then the amount cannot be changed. In that case, the payment will need to be redefined.- Parameters:
paymentSummaries
- Summaries of the cart's paymentscartTotal
- The total price of the cartpaymentLockTokens
- Tokens that grant this service access to act upon the payment. The presence of these tokens indicates that this execution flow owns the lock.contextInfo
- the contextInfo for the request- Returns:
- an updated list of
PaymentSummaries
-
priceCartWithCatalogPriceUpdates
public com.broadleafcommerce.cart.client.domain.Cart priceCartWithCatalogPriceUpdates(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Reprice the cart, including applying the latest catalog-based prices for each of its items- Specified by:
priceCartWithCatalogPriceUpdates
in interfaceCartOperationService
- Parameters:
cart
- The cart on which to perform the operation.contextInfo
- the context info- Returns:
- the priced cart
-
recalculateTaxesForCart
public com.broadleafcommerce.cart.client.domain.Cart recalculateTaxesForCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, boolean estimated, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Recalculates the taxes for the providedCart
.- Specified by:
recalculateTaxesForCart
in interfaceCartOperationService
- Parameters:
cart
- the cartestimated
- hint as to whether taxes should be estimatedcontextInfo
- the context info- Returns:
- the cart with taxes updated
-
recalculateTaxesForCart
@Deprecated public com.broadleafcommerce.cart.client.domain.Cart recalculateTaxesForCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, boolean estimated, boolean actual, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated.Description copied from interface:CartOperationService
Recalculates the taxes for the providedCart
.- Specified by:
recalculateTaxesForCart
in interfaceCartOperationService
- Parameters:
cart
- the cartestimated
- whether to calculate estimated taxesactual
- whether to calculate actual taxescontextInfo
- the context info- Returns:
- the cart with taxes updated
- See Also:
-
getCurrencyUnit
protected javax.money.CurrencyUnit getCurrencyUnit(@Nullable javax.money.CurrencySupplier currencySupplier, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Call utility method to determine currency.- Parameters:
currencySupplier
- An object implementing theCurrencySupplier
interfacecontextInfo
- the context info to look for currency- Returns:
- the currency to be used for the request
-
saveCart
protected com.broadleafcommerce.cart.client.domain.Cart saveCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Helper method to encapsulate saving an existing Cart.- Parameters:
cart
- the cartcontextInfo
- the context info- Returns:
- the saved cart
-
saveCart
protected com.broadleafcommerce.cart.client.domain.Cart saveCart(@NonNull @NonNull UpdateCartRequest updateCartRequest, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Helper method to encapsulate saving an existing Cart.- Parameters:
updateCartRequest
- theUpdateCartRequest
contextInfo
- the context info- Returns:
- the saved cart
-
removeFulfillmentItemsWithoutCartItems
protected com.broadleafcommerce.cart.client.domain.Cart removeFulfillmentItemsWithoutCartItems(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart) -
createEmptyCart
protected com.broadleafcommerce.cart.client.domain.Cart createEmptyCart(@Nullable com.broadleafcommerce.order.common.domain.CustomerRef customer, @Nullable javax.money.CurrencyUnit currencyUnit, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Creates and returns an empty, unsavedCart
with typical defaults.- Parameters:
customer
- the customercurrencyUnit
- the currency for the cartcontextInfo
- the context info- Returns:
- the new empty cart
-
defaultCartLocale
protected void defaultCartLocale(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
defaultCartCurrency
protected void defaultCartCurrency(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable javax.money.CurrencyUnit currencyUnit) -
newCart
protected com.broadleafcommerce.cart.client.domain.Cart newCart()Uses theTypeFactory
to create a newCart
object.- Returns:
- the new cart
-
newCartPricing
protected com.broadleafcommerce.cart.client.domain.CartPricing newCartPricing()Uses theTypeFactory
to create a newCartPricing
object.- Returns:
- the new cart pricing
-
newCartCreationRequest
-
newCartStatus
protected String newCartStatus(@Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Determines what status should be used when creating new carts.- Parameters:
contextInfo
- the context info- Returns:
- the status to be used for a new cart
-
newBulkAddToCartResponse
Instantiates a newBulkAddToCartResponse
using theTypeFactory
.- Returns:
- a new bulk add to cart response
-
createItemAndAddToCart
protected com.broadleafcommerce.cart.client.domain.Cart createItemAndAddToCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull AddItemRequest addItemRequest, @Nullable javax.money.CurrencyUnit currencyUnit, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Creates a new item and adds it to the providedCart
.- Parameters:
cart
- the cartaddItemRequest
- the add item requestcurrencyUnit
- the currency for the item(s)contextInfo
- the context info
-
doSoftInventoryReservationIfNecessary
protected void doSoftInventoryReservationIfNecessary(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItems, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) If any of the supplied cart items have a reservation strategy of ADD_TO_CART, a soft reservation is performed.- Parameters:
cart
- The cartcartItems
- The cart items to check
-
createItemsAndAddToCart
protected BulkAddToCartResponse createItemsAndAddToCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, Collection<AddItemRequest> addItemRequests, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Creates new items and adds them to the providedCart
.- Parameters:
cart
- the cartaddItemRequests
- the add item requestcontextInfo
- the context info
-
identifyCatalogItemsForUpdateItemRequest
@Deprecated(forRemoval=true) protected CatalogItemList<? extends CatalogItem> identifyCatalogItemsForUpdateItemRequest(@NonNull @NonNull UpdateItemRequest updateItemRequest, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated, for removal: This API element is subject to removal in a future version. -
identifyCatalogItemsForUpdateItemRequest
protected CatalogItemList<? extends CatalogItem> identifyCatalogItemsForUpdateItemRequest(@NonNull @NonNull UpdateItemRequest updateItemRequest, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @Nullable com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
buildCatalogItemRequestsForUpdate
protected Collection<CatalogItemRequest> buildCatalogItemRequestsForUpdate(@NonNull @NonNull Collection<UpdateItemRequest> updateItemRequests, @NonNull @NonNull Collection<com.broadleafcommerce.cart.client.domain.CartItem> cartItems, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
catalogItemRequestAlreadyExist
protected boolean catalogItemRequestAlreadyExist(@NonNull @NonNull Set<CatalogItemRequest> catalogItemRequests, @NonNull @NonNull UpdateItemRequest updateItemRequest, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to prevent duplicateCatalogItemRequests
from being built based on theCartItem
andUpdateItemRequest
.By default, we filter on the product ID.
- Parameters:
catalogItemRequests
- the list of requests to pass to theCatalogProvider
updateItemRequest
- theUpdateItemRequest
containing the details for the updatecartItem
- theCartItem
to build theCatalogItemRequest
contextInfo
- context information around sandbox and multitenant state- Returns:
- true if building a new
CatalogItemRequest
would be a duplicate of an existing request incatalogItemRequests
-
buildCatalogItemRequest
protected CatalogItemRequest buildCatalogItemRequest(@NonNull @NonNull UpdateItemRequest updateItemRequest, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to build theCatalogItemRequest
and populate any additional attributes that should be passed to theCatalogProvider
when fetching the catalog representation for updating the cart item.- Parameters:
updateItemRequest
- theUpdateItemRequest
containing the details for the updatecartItem
- theCartItem
being updatedcontextInfo
- context information around sandbox and multitenant state- Returns:
- the populated
CatalogItemRequest
for theUpdateItemRequest
-
addUnassignedItemsToFulfillmentGroup
protected com.broadleafcommerce.cart.client.domain.Cart addUnassignedItemsToFulfillmentGroup(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart) IdentifyCartItems
that have not been assigned to aFulfillmentGroup
& add them to the relevant FulfillmentGroup.If the fulfillment type is
FulfillmentType.VIRTUAL
,CartOperationServiceProperties.getDefaultVirtualFulfillmentOptionName()
will be used to identify the default fulfillment option.- Parameters:
cart
- The cart whose items may need to be assigned to a fulfillment group- Returns:
- The updated cart whose items are all assigned to fulfillment groups
-
updateCartAttributes
protected com.broadleafcommerce.cart.client.domain.Cart updateCartAttributes(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull List<AddItemRequest> successfulAddItemRequests) Update cart attributes based on the successfulAddItemRequests
- Parameters:
cart
- The cart that was added tosuccessfulAddItemRequests
- List of AddItemRequests that were successfully processed- Returns:
- The updated cart
-
updateFulfillmentItem
protected void updateFulfillmentItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Updates theFulfillmentItem
corresponding to theCartItem
, keeping them in sync.- Parameters:
cart
-Cart
to which the items belongcartItem
-CartItem
with updates to be carried over to aFulfillmentItem
-
calculateMerchandiseTotalAmountForFulfillmentItemUpdate
protected javax.money.MonetaryAmount calculateMerchandiseTotalAmountForFulfillmentItemUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem fulfillmentCartItem, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentItem fulfillmentItem, int totalQuantity) Calculates theFulfillmentItem.getMerchandiseTotalAmount()
for the cart item. ThetotalQuantity
divided by theitem.getQuantity()
is used to calculate the total amount for the fulfillment item when we have a bundle product with a dependent item whose quantity is greater than one. Take for example the below scenario:- bundle item quantity = 3
- bundle price = $9.99
- dependent item price = $15
- dependent item quantity = 4
- Parameters:
cart
-Cart
to which the items belongfulfillmentCartItem
- theCartItem
which has been updatedfulfillmentItem
- theFulfillmentItem
which we are trying to pricetotalQuantity
- the total quantity of the dependent item- Returns:
- the merchandise total for the
FulfillmentItem
-
addCampaignCodeIfExistsOnCart
@Deprecated protected boolean addCampaignCodeIfExistsOnCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String code, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated.Deprecated as of 1.8, if using OfferService 2.0, this method is not used -
addCampaignForCodeIfExists
@Deprecated protected boolean addCampaignForCodeIfExists(String code, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated.Deprecated as of 1.8, if using OfferService 2.0, this method is not usedAdds acode
to theCart
if it belongs to a campaign.- Parameters:
code
- Code to be added that might match a campaign.cart
- Cart to add thecode
to.contextInfo
- the context info- Returns:
- The
CampaignRef.getCampaignTrackingId()
for the added campaign.
-
populateCartItemUpdates
protected boolean populateCartItemUpdates(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull UpdateItemRequest request) Takes the changes from theUpdateItemRequest
and populates them onto theCartItem
.- Parameters:
cartItem
- TheCartItem
to be updated with changes fromrequest
request
- TheUpdateItemRequest
with changes forcartItem
- Returns:
- Whether
cartItem
should be revalidated after updates are populated.
-
populateCartUpdatesFromUpdateItemRequest
protected boolean populateCartUpdatesFromUpdateItemRequest(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull UpdateItemRequest request) Takes the changes from theUpdateItemRequest
and populates them onto theCart
.- Parameters:
cart
- TheCart
to be updated with changes fromrequest
request
- TheUpdateItemRequest
with changes forcart
- Returns:
- Whether
CartItem
referenced inrequest
should be revalidated after updates are populated.
-
validateCartItemBeforeUpdate
protected void validateCartItemBeforeUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull UpdateItemRequest updateItemRequest) Validates theCartItem
being updated againstUpdateItemRequest
before the actual cart item update.By default, the
CartItem
being updated is only being validated against free gift requirements.- Parameters:
cartItem
- theCartItem
being updatedupdateItemRequest
- theUpdateItemRequest
containing the details for the update
-
validateFreeGiftItemForUpdate
protected void validateFreeGiftItemForUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull UpdateItemRequest updateItemRequest) If the givenCartItem
is a free gift item, validates that its quantity is not being changed.By default, the quantity of a free gift item can only be changed by the system. This is because free gift items have their own specific behaviors, and the details of free gift items should only be modified by the system internally.
- Parameters:
cartItem
- theCartItem
to validateupdateItemRequest
- theUpdateItemRequest
containing the details for the update
-
validateCartItemAfterUpdate
protected void validateCartItemAfterUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull CatalogItemList<? extends CatalogItem> catalogItemList, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
invalidateFulfillmentGroupOverride
protected void invalidateFulfillmentGroupOverride(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) -
addOfferCodeIfUsable
protected boolean addOfferCodeIfUsable(String code, boolean isForCampaign, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adds thecode
toCart.getOfferCodes()
if it's usable.- Parameters:
code
- The code to be addedcart
- The cart to add thecode
to- Returns:
- Whether the code was added.
- Throws:
AddCodeException
- if the code cannot be added for any reason. This is usually because the code is invalid or has already been used the maximum number of times. Note that if the code matched aCampaignRef
, then no exception is thrown here even if the code is not usable for the purpose of adding anOfferRef
because it was still usable in a general sense to add the campaign.AddCodeException.getReasonType()
will typically match the code'sCodeUsabilityInfo.getCodeUsabilityType()
and can be used on the frontend to determine messaging.
-
buildCampaignRef
@Deprecated protected com.broadleafcommerce.order.common.domain.CampaignRef buildCampaignRef(String code, String trackingId) Deprecated.Deprecated as of 1.8, if using OfferService 2.0, this method is not used -
doesCartContainCampaignForCode
@Deprecated protected final boolean doesCartContainCampaignForCode(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String code) Deprecated.Determines whether theCart
contains aCampaignRef
that matches thecode
.- Parameters:
cart
- Cart with campaigns to match againstcode
- Code to match with- Returns:
- Whether the cart contains a campaign for the code
-
getMessage
-
getFulfillmentGroupById
protected Supplier<com.broadleafcommerce.cart.client.domain.FulfillmentGroup> getFulfillmentGroupById(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String fulfillmentGroupId) Gets the fulfillment group by the provided ID. By default this will be the owning Cart'sID
and the index of the group inCart.getFulfillmentGroups()
. You can simply provide the index for the fulfillment group to perform the operation.Example: Cart has id "12345", so the first fulfillment group has id "12345-0". If you want to find the fulfillment group, you can provide "0" to this method along with the cart to get it.
- Parameters:
cart
- The cart on which to find the fulfillment groupfulfillmentGroupId
- The ID for the fulfillment group to find. Usually defaults to the index of the group inCart.getFulfillmentGroups()
.- Returns:
- The corresponding FulfillmentGroup for the given cart and relative number.
-
getRequiredCartItem
protected com.broadleafcommerce.cart.client.domain.CartItem getRequiredCartItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String cartItemId) Gets a cart item from the cart by its ID. Throws an error if the item could not be found.- Parameters:
cart
- the cart to search the items ofcartItemId
- the item ID to look for- Returns:
- the item with the given cart ID
- Throws:
com.broadleafcommerce.data.tracking.core.exception.EntityMissingException
- when no item with the ID exists in the cart
-
buildCartItem
protected com.broadleafcommerce.cart.client.domain.CartItem buildCartItem(@NonNull @NonNull AddItemRequest addItemRequest, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable javax.money.CurrencyUnit currencyUnit, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Populates a new cart item from theAddItemRequest
. This will populate info from theCatalogProvider
to ensure that all the important catalog info is present on the item and is correct. After that population, the cart item will be validated based on the product's included products and product options.- Parameters:
addItemRequest
- Request from which to populate newCartItems
.cart
- The cart of the newCartItems
currencyUnit
- the currency for the cart item(s)- Returns:
- Populated
CartItems
. - Throws:
CartItemValidationException
- Thrown if the cart item is misconfigured based on the related product's included products and product options.
-
buildCartItems
protected DefaultCartOperationService.BulkCartItemCreationResponse buildCartItems(@NonNull @NonNull Collection<AddItemRequest> addItemRequests, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable javax.money.CurrencyUnit currencyUnit, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Populates new cart items from theAddItemRequests
. This will populate info from theCatalogProvider
to ensure that all the important catalog info is present on the item and is correct. After that population, the cart item will be validated based on the product's included products and product options.- Parameters:
addItemRequests
- Request from which to populate newCartItems
.cart
- The cart of the newCartItems
currencyUnit
- the currency for the cart items- Returns:
- Populated
CartItems
. - Throws:
CartItemValidationException
- Thrown if the cart item is misconfigured based on the related product's included products and product options.
-
buildCatalogItemRequestsForAdd
protected Collection<CatalogItemRequest> buildCatalogItemRequestsForAdd(@NonNull @NonNull Collection<AddItemRequest> addItemRequests, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
catalogItemRequestAlreadyExist
protected boolean catalogItemRequestAlreadyExist(@NonNull @NonNull Set<CatalogItemRequest> catalogItemRequests, @NonNull @NonNull AddItemRequest addItemRequest, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to prevent duplicateCatalogItemRequests
from being built based on theAddItemRequest
.By default, we filter on the product ID.
- Parameters:
catalogItemRequests
- the list of requests to pass to theCatalogProvider
addItemRequest
- theAddItemRequest
containing the details for the new cart itemcontextInfo
- context information around sandbox and multitenant state- Returns:
- true if building a new
CatalogItemRequest
would be a duplicate of an existing request incatalogItemRequests
-
buildCatalogItemRequest
protected CatalogItemRequest buildCatalogItemRequest(@NonNull @NonNull AddItemRequest addItemRequest, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to create theCatalogItemRequest
and populate any additional attributes that should be passed to theCatalogProvider
when fetching the catalog representation for adding the cart item.- Parameters:
addItemRequest
- theAddItemRequest
containing the details for the new cart itemcontextInfo
- context information around sandbox and multitenant state- Returns:
- the populated
CatalogItemRequest
for theAddItemRequest
-
identifyCatalogItemsForAddItemRequests
@Deprecated(forRemoval=true) protected CatalogItemList<? extends CatalogItem> identifyCatalogItemsForAddItemRequests(@NonNull @NonNull Collection<AddItemRequest> addItemRequests, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated, for removal: This API element is subject to removal in a future version. -
identifyCatalogItemsForAddItemRequests
protected CatalogItemList<? extends CatalogItem> identifyCatalogItemsForAddItemRequests(@NonNull @NonNull Collection<AddItemRequest> addItemRequests, @Nullable com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
identifyAddItemRequestsForCatalogItems
protected List<AddItemRequest> identifyAddItemRequestsForCatalogItems(@NonNull @NonNull Collection<AddItemRequest> addItemRequests, @NonNull @NonNull CatalogItemList<? extends CatalogItem> catalogItemList) Attempts to identify theAddItemRequest's
relatedCatalogItem
from the providedCatalogItemList
.By default, this identifies the catalog item by the product ID.
- Parameters:
addItemRequests
- The list ofAddItemRequests
whoseCatalogItem
we're attempting to find.catalogItemList
- TheCatalogItemList
that we expect to contain theCartItem's
CatalogItem
.- Returns:
- the
CartItem's
relatedCatalogItem
.
-
createCartItem
protected com.broadleafcommerce.cart.client.domain.CartItem createCartItem(@NonNull @NonNull AddItemRequest addItemRequest, @Nullable javax.money.CurrencyUnit currencyUnit) Creates aCartItem
based on the providedAddItemRequest
- Parameters:
addItemRequest
- the request which contains the info to build a cart itemcurrencyUnit
- the currency for the cart item- Returns:
- the newly created cart item
-
populateFromRequest
protected com.broadleafcommerce.cart.client.domain.CartItem populateFromRequest(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull AddItemRequest addItemRequest, @Nullable javax.money.CurrencyUnit currencyUnit) Populates the cart item fields based on the request.- Parameters:
cartItem
- the cart item to populateaddItemRequest
- the request which contains the info to build a cart itemcurrencyUnit
- the currency for the cart item- Returns:
- the populated cart item
-
getProductType
@Nullable protected Object getProductType(com.broadleafcommerce.cart.client.domain.CartItem cartItem) -
buildItemAttributeChoices
-
validateCartItem
protected void validateCartItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull CatalogItemList<? extends CatalogItem> catalogItemList, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Validates that theCartItem
includes enough information to correctly represent the product or one of the product's variants.- Parameters:
cartItem
- TheCartItem
that is being validatedcart
- TheCartItem's
owning cartcatalogItemList
- TheCatalogItemList
that should contain theCartItem's
relatedCatalogItem
contextInfo
- The contextInfo for the request
-
buildValidationFailure
protected AddItemFailure buildValidationFailure(@NonNull @NonNull AddItemRequest addItemRequest, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Builds anAddItemFailure
based on the providedAddItemRequest
&CartItem
representing an invalid add to cart request- Parameters:
addItemRequest
- The request that was used to build the CartItemcartItem
- The cart item that holds the validation failures- Returns:
- an AddItemFailure based on the provided AddItemRequest & CartItem
-
getCatalogItemKeyForMissingEntities
Hook point to determine what the missing entities map is keyed on from theAddItemRequest
.By default, this is set to the product ID.
- Parameters:
addItemRequest
- the request which contains the info to build a cart item- Returns:
- the key for the catalog item missing entities map
-
createFulfillmentGroupForItems
protected void createFulfillmentGroupForItems(@NonNull @NonNull Collection<? extends com.broadleafcommerce.cart.client.domain.CartItem> cartItems, @NonNull @NonNull String fulfillmentType, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.cart.client.domain.CartItem parentCartItem) -
resolveTaxAddressSource
Determines the tax address source that should be used forFulfillmentGroup.getTaxAddressSource()
for the given fulfillment type.- Parameters:
fulfillmentType
- the fulfillment type from which to determine the tax address source- Returns:
- the tax address source that should be used
-
buildGroupReferenceNumber
protected String buildGroupReferenceNumber(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart) Builds aFulfillmentGroup.getReferenceNumber()
for a new group.- Parameters:
cart
- Cart that owns the group- Returns:
- The new reference number
-
buildGroupReferenceNumber
protected String buildGroupReferenceNumber(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String fulfillmentGroupId) Builds aFulfillmentGroup.getReferenceNumber()
for the given cart and group ID.- Parameters:
cart
- Cart that owns the groupfulfillmentGroupId
- ID of the fulfillment group for which to build a reference number. Usually defaults to the index of the group inCart.getFulfillmentGroups()
.- Returns:
- The new reference number
-
addItemsToFulfillmentGroup
protected void addItemsToFulfillmentGroup(@NonNull @NonNull Collection<? extends com.broadleafcommerce.cart.client.domain.CartItem> cartItems, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull @NonNull javax.money.CurrencyUnit expectedCurrency, @Nullable com.broadleafcommerce.cart.client.domain.CartItem parentCartItem) -
updatesForBundleFulfillmentItems
protected void updatesForBundleFulfillmentItems(com.broadleafcommerce.cart.client.domain.CartItem parentCartItem, com.broadleafcommerce.cart.client.domain.FulfillmentItem fulfillmentItem) -
insertItems
protected void insertItems(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> itemsToAdd, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
addItemToFulfillmentGroup
protected void addItemToFulfillmentGroup(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, Set<String> assignedCartItemIds, @Nullable com.broadleafcommerce.cart.client.domain.CartItem parentCartItem) Assigns the cart item and its dependent cart items to the fulfillment group. If the fulfillment group doesn't exist it will be created. This method doesn't create the fulfillment item for theDefaultProductType.BUNDLE
items.- Parameters:
cart
- the cart whose items may need to be assigned to a fulfillment groupcartItem
- the cart item for which to create add the fulfillment itemassignedCartItemIds
- the set of the cart item ids for which the fulfillment item is already existsparentCartItem
- the parent cart item for the specified cart item. Usually, this is the item that has the dependent cart items
-
resolveDefaultFulfillmentType
@Nullable protected String resolveDefaultFulfillmentType(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Determines the defaultFulfillmentType
for the providedCartItem
- Parameters:
cartItem
- The cart item whose default fulfillment type must be determined- Returns:
- The default fulfillment type for the provided cart item
-
removeItemsFromFulfillmentGroup
protected void removeItemsFromFulfillmentGroup(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItems) -
getCartItemIdsWithDependentItem
-
resetFulfillmentGroupReferenceNumbers
protected void resetFulfillmentGroupReferenceNumbers(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart) -
repriceCartIfPricingIsStale
protected Optional<com.broadleafcommerce.cart.client.domain.Cart> repriceCartIfPricingIsStale(Optional<com.broadleafcommerce.cart.client.domain.Cart> optionalCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Called during cart resolution to check if the catalog prices on the cart are stale, and if so, updates those prices and resets the time since they were last changed. Also sets the values for `staleCartPricingResultHolder` for checkout validation.- Parameters:
optionalCart
- Cart to be checked and pricedcontextInfo
- The contextInfo for the request- Returns:
-
getCartTotalChangeMessage
-
createCartAlert
-
retrieveInProcessCartByCustomerIdAndApplicationId
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveInProcessCartByCustomerIdAndApplicationId(@NonNull @NonNull String customerId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Retrieve the in-process cart for the provided customer.- Specified by:
retrieveInProcessCartByCustomerIdAndApplicationId
in interfaceCartOperationService
- Parameters:
customerId
- The id of the customer for which to perform the operation.contextInfo
- Context information around sandbox and multitenant state.- Returns:
- The in-process cart for the provided customer.
-
retrieveInProcessCartByCartId
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveInProcessCartByCartId(@NonNull @NonNull String cartId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Retrieve the cart for the provided id, as long as it is in-process.- Specified by:
retrieveInProcessCartByCartId
in interfaceCartOperationService
- Parameters:
cartId
- The id of the cart on which to perform the operation.contextInfo
- Context information around sandbox and multitenant state.- Returns:
- The in-process cart for the provided id.
-
retrieveCsrCartByCartId
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveCsrCartByCartId(@NonNull @NonNull String cartId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Retrieve the cart for the provided id, as long as it is CSR-owned.- Specified by:
retrieveCsrCartByCartId
in interfaceCartOperationService
- Parameters:
cartId
- The id of the cart on which to perform the operation.contextInfo
- Context information around sandbox and multitenant state.- Returns:
- The CSR-owned cart for the provided id.
-
retrieveTestCartByCartId
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveTestCartByCartId(@NonNull @NonNull String cartId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Retrieve the cart for the provided id, as long as it is a test cart.- Specified by:
retrieveTestCartByCartId
in interfaceCartOperationService
- Parameters:
cartId
- The id of the cart on which to perform the operation.contextInfo
- Context information around sandbox and multitenant state.- Returns:
- The test cart for the provided id.
-
retrieveCartByCartIdWithStatus
-
retrieveCsrOwnedCartByCustomerIdAndApplicationId
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveCsrOwnedCartByCustomerIdAndApplicationId(@NonNull @NonNull String customerId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Retrieve the CSR-owned cart for the provided customer.- Specified by:
retrieveCsrOwnedCartByCustomerIdAndApplicationId
in interfaceCartOperationService
- Parameters:
customerId
- The id of the customer for which to perform the operation.contextInfo
- Context information around sandbox and multitenant state.- Returns:
- The CSR-owned cart for the provided customer.
-
addToCart
public com.broadleafcommerce.cart.client.domain.Cart addToCart(@NonNull @NonNull AddItemRequest addItemRequest, @Nullable com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.order.common.domain.CustomerRef customerRef, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Add an item to the customer's current cart based on the provided untrusted information. By default, this includes the following steps:- Retrieve catalog information for the item
- Check inventory
- Create item and add it to the cart (un-priced)
- Price the item and cart, using offers and price lists (optional)
- Update the cart and it's items (optional)
- Specified by:
addToCart
in interfaceCartOperationService
- Parameters:
addItemRequest
- Add an item to the customer's current cart based on the provided untrusted information.cart
- The cart to be added to. If not provided, then a new cart will be produced.customerRef
- The cart's owning customer. Can be null if anonymous.allowPriceCart
- Whether to allow the cart to be priced after updatingcontextInfo
- Context information around sandbox and multitenant state.- Returns:
- The cart with the item added.
-
bulkAddToCart
public BulkAddToCartResponse bulkAddToCart(@NonNull @NonNull Collection<AddItemRequest> addItemRequests, @Nullable com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.order.common.domain.CustomerRef customerRef, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Add a list of items to the customer's current cart based on the provided untrusted information. By default, this includes the following steps:- Retrieve catalog information for the items
- Check inventory
- Create item and add it to the cart (un-priced)
- Price the item and cart, using offers and price lists (optional)
- Update the cart and it's items (optional)
- Specified by:
bulkAddToCart
in interfaceCartOperationService
- Parameters:
addItemRequests
- Add a list of items to the customer's current cart based on the provided untrusted information.cart
- The id of the cart to be added to. If not provided, then a new cart will be produced.customerRef
- The cart's owning customer. Can be null if anonymous.allowPriceCart
- Whether the cart should be priced after updatingcontextInfo
- Context information around sandbox and multitenant state.- Returns:
- The cart with the items added.
-
updateCartItem
public com.broadleafcommerce.cart.client.domain.Cart updateCartItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull UpdateItemRequest updateItemRequest, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Update the cart item.- Specified by:
updateCartItem
in interfaceCartOperationService
- Parameters:
cart
- The id of the cart on which to perform the operation.updateItemRequest
- The cart item to use to update the details of the current cart item.allowPriceCart
- Whether to allow the cart to be priced after updatingcontextInfo
- Context information around sandbox and multitenant state.- Returns:
- The cart with the updated item.
-
removeCartItems
public com.broadleafcommerce.cart.client.domain.Cart removeCartItems(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, Collection<String> cartItemIds, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Remove items from the cart.- Specified by:
removeCartItems
in interfaceCartOperationService
- Parameters:
cart
- The id of the cart on which to perform the operation.cartItemIds
- The ids of the cart items on which to perform the operation.allowPriceCart
- Whether to allow the cart to be priced after updatingcontextInfo
- Context information around sandbox and multitenant state.- Returns:
- The cart with the item removed.
-
updateCartContactInfo
public com.broadleafcommerce.cart.client.domain.Cart updateCartContactInfo(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull ContactInfoRequest contactInfoRequest, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Update contact information to allow business users to contact the customer if needed.- Specified by:
updateCartContactInfo
in interfaceCartOperationService
- Parameters:
cart
- The cart that hold the contact info.contactInfoRequest
- The contact info that is to be added to the cart.allowPriceCart
- Whether to allow the cart to be priced after updatingcontextInfo
- Context information around sandbox and multitenant state.- Returns:
- The cart with updated contact info.
-
addCodeToCart
public AddCodeToCartResponse addCodeToCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull AddCodeRequest codeRequest, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
- Retrieve the cart
- Determine if the code is valid as a campaign tracking code
- If so, add it to the cart as a
CampaignRef
- Determine if the code is valid as a shared code
- If so, add it to the cart
- Update the cart
- Price the cart, using offers and price lists (optional)
- Update the cart and its items (optional)
- Specified by:
addCodeToCart
in interfaceCartOperationService
- Parameters:
cart
- The id of the cart on which to perform the operation.codeRequest
- The payload of the request to add a code to the cart.allowPriceCart
- Whether to allow the cart to be priced after updatingcontextInfo
- Context information around sandbox and multitenant state.- Returns:
- An AddCodeToCartResponse describing the results of adding the offer code to the cart
-
updateFulfillmentGroup
public com.broadleafcommerce.cart.client.domain.Cart updateFulfillmentGroup(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String fulfillmentGroupId, @NonNull @NonNull UpdateFulfillmentGroupRequest fulfillmentGroupRequest, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService
Update the fulfillment group.- Specified by:
updateFulfillmentGroup
in interfaceCartOperationService
- Parameters:
cart
- The id of the cart on which to perform the operation.fulfillmentGroupId
- The id of the fulfillment group on which to perform the operation.fulfillmentGroupRequest
- The fulfillment group updates to be applied to the existing fulfillment group.allowPriceCart
- Whether to allow the cart to be priced after updatingcontextInfo
- Context information around sandbox and multitenant state.- Returns:
- The Cart for which the updated fulfillment group is a part.
-
validateCartStatusChangeRequest
protected void validateCartStatusChangeRequest(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull UpdateCartStatusRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Takes aUpdateCartStatusRequest
and validates that the targeted cart can have its status changed. By default, the only valid statuses that can be changed areDefaultCartStatuses.IN_PROCESS
,DefaultCartStatuses.REJECTED
, andDefaultCartStatuses.REQUIRES_APPROVAL
.- Parameters:
cart
- The cart to be changedrequest
- The request with the details of how to change the cart statuscontextInfo
- Additional sandbox and multitenant info
-
isUsingCollectOnDelivery
protected boolean isUsingCollectOnDelivery(@Nullable com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup) -
hasDeselectedCOD
protected boolean hasDeselectedCOD(@Nullable com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup) -
handleCODStatusChange
protected boolean handleCODStatusChange(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo, @Nullable com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup) Handles when Collect on Delivery is selected or de-selected. This will validate updates as to the cart as well that may cause Collect on Delivery to become invalid based on the cart price, fulfillment option, etc. If COD was de-selected, this will archive COD payments and remove Fee cart items related to COD.- Parameters:
cart
- Cart to be updatedpaymentLockTokens
- Lock tokens to lock payment if needing to archive any when COD is de-selectedcontextInfo
- Additional sandbox or multitenant infofulfillmentGroup
- The fulfillment group marked as using COD- Returns:
- Whether one or more
CartItems
were added representing a COD fee if selected or whether such items were removed because COD was de-selected. - Throws:
CODPaymentMethodNotApplicableException
- When COD is selected but the update to be performed on the cart would invalidate its usage. This allows the user to change be alerted and change their mind before losing COD.
-
handleDeSelectCODBeforeUpdate
protected boolean handleDeSelectCODBeforeUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @Nullable Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Handles when Collect on Delivery is selected or de-selected. This will validate updates as to the cart as well that may cause Collect on Delivery to become invalid based on the cart price, fulfillment option, etc.- Parameters:
cart
- Cart to be updatedfulfillmentGroup
- The fulfillment group marked as using CODpaymentLockTokens
- Lock tokens to lock payment if needing to archive any when COD is de-selectedcontextInfo
- Additional sandbox or multitenant info- Returns:
- Whether one or more
CartItems
representing a COD fee were removed.
-
handleSelectCODBeforeUpdate
protected boolean handleSelectCODBeforeUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Handles when Collect on Delivery is selected. This will validate updates as to the cart as well that may cause Collect on Delivery to become invalid based on the cart price, fulfillment option, etc.- Parameters:
cart
- Cart to be updatedfulfillmentGroup
- The fulfillment group marked as using CODcontextInfo
- Additional sandbox or multitenant info- Returns:
- Whether a new
CartItem
was added representing a COD fee. - Throws:
CODPaymentMethodNotApplicableException
- When COD is selected but the update to be performed on the cart would invalidate its usage. This allows the user to change be alerted and change their mind before losing COD.
-
getCODCheckoutPaymentMethodOption
protected CheckoutPaymentMethodOption getCODCheckoutPaymentMethodOption(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
validateCollectOnDeliverySelection
protected void validateCollectOnDeliverySelection(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
validateCollectOnDeliverySelection
protected void validateCollectOnDeliverySelection(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Validates that Collect on Delivery is still applicable given the updated cart state.- Parameters:
cart
- Cart to be updatedfulfillmentGroup
- Fulfillment group marked as using CODcodCheckoutPaymentMethodOption
- CODCheckoutPaymentMethodOption
contextInfo
- Additional multitenant or sandbox info.- Throws:
CODPaymentMethodNotApplicableException
- When COD is no longer valid for the requested updates to the cart.
-
doFulfillmentExclusionsPassForCOD
protected boolean doFulfillmentExclusionsPassForCOD(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) -
doFulfillmentInclusionsPassForCOD
protected boolean doFulfillmentInclusionsPassForCOD(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) -
isCartMaxTotalAllowedForCOD
protected boolean isCartMaxTotalAllowedForCOD(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) -
isCartMinTotalAllowedForCOD
protected boolean isCartMinTotalAllowedForCOD(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) -
buildCODFeeCartItem
protected com.broadleafcommerce.cart.client.domain.CartItem buildCODFeeCartItem(CheckoutPaymentMethodOption.FeeDto fee) -
isCartItemCODFee
protected boolean isCartItemCODFee(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) -
handleSetDeselectedCODAttribute
protected void handleSetDeselectedCODAttribute(@NonNull @NonNull UpdateFulfillmentGroupRequest updateFulfillmentGroupRequest, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fgToUpdate) Sets a temporary attribute on the fullfillment group if theCOD status attribute
has gone from selected to not selected. This informs the update logic later on that related payments should be archived and fee cart items for COD should be removed.- Parameters:
updateFulfillmentGroupRequest
- Request to update a fulfillment groupfgToUpdate
- Fulfillment group to update
-
getPriceContext
@Nullable protected com.broadleafcommerce.pricing.client.domain.context.PriceContext getPriceContext(@Nullable Locale locale, @Nullable javax.money.CurrencyUnit currency) -
getProviders
-
getCartPricingService
-
getCartItemConfigurationService
-
getCartItemCatalogInformationService
protected CartItemCatalogInformationService<? extends CatalogItem> getCartItemCatalogInformationService() -
getAuthenticationUtils
protected com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils getAuthenticationUtils() -
getTypeFactory
protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory() -
getProperties
-
getCartItemMergingService
protected CartItemMergingService<com.broadleafcommerce.cart.client.domain.CartItem> getCartItemMergingService() -
getMessageSource
protected org.springframework.context.MessageSource getMessageSource() -
getTaxService
-
getStaleCartPricingResultHolder
-
getOfferUtils
-
setOfferUtils
-
getStaleCartItemsService
-
setStaleCartItemsService
-
getPaymentProvider
-
setPaymentProvider
-
getCheckoutPaymentMethodService
-
setCheckoutPaymentMethodService
@Autowired public void setCheckoutPaymentMethodService(CheckoutPaymentMethodService checkoutPaymentMethodService) -
getSpelRuleEvaluationService
protected com.broadleafcommerce.rulesengine.expression.service.SpelRuleEvaluationService getSpelRuleEvaluationService() -
setSpelRuleEvaluationService
@Autowired public void setSpelRuleEvaluationService(com.broadleafcommerce.rulesengine.expression.service.SpelRuleEvaluationService spelRuleEvaluationService) -
setInventoryAvailabilityService
@Autowired public void setInventoryAvailabilityService(InventoryAvailabilityService<CatalogItem> inventoryAvailabilityService) -
getInventoryAvailabilityService
-