Class DefaultCartOperationService

    • Method Summary

      All Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      com.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 provided Cart.
      protected boolean addCampaignForCodeIfExists​(String code, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Adds a code to the Cart if it belongs to a campaign.
      AddCodeToCartResponse addCodeToCart​(@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 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)
      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 of FreeGiftItems 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)
      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 provided Cart based on the provided AddItemRequest.
      protected void addItemToFulfillmentGroup​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      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.
      BulkAddToCartResponse 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 provided Cart.
      protected boolean addOfferCodeIfUsable​(String code, boolean isForCampaign, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Adds the code to Cart.getOfferCodes() if it's usable.
      AddCodeToCartResponse 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 provided Cart.
      protected void addRemovedFreeGiftOfferToIgnoreList​(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItemsBeingRemoved)
      Adds the offer id to Cart's ignore list in Cart.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)
      Identify CartItems that have not been assigned to a FulfillmentGroup & 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 AddCodeToCartResponse buildAddCodeToCartResponse​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String code, boolean cartWasRepriced)
      Builds an AddCodeToCartResponse based on the provided cart, code, & whether or not the cart was repriced
      protected AddItemRequest buildAddItemRequest​(com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem freeGiftItem)
      Builds an AddItemRequest from the given FreeGiftItem.
      protected com.broadleafcommerce.order.common.domain.Adjustment buildAdjustment​(com.broadleafcommerce.promotion.offer.client.web.context.info.Adjustment offerAdjustment)
      Builds an Adjustment based on the given Adjustment.
      protected com.broadleafcommerce.order.common.domain.CampaignRef buildCampaignRef​(String code, String trackingId)  
      protected com.broadleafcommerce.cart.client.domain.CartItem buildCartItem​(@NonNull AddItemRequest addItemRequest, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      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 the AddItemRequest.
      protected DefaultCartOperationService.BulkCartItemCreationResponse buildCartItems​(@NonNull Collection<AddItemRequest> addItemRequests, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      protected DefaultCartOperationService.BulkCartItemCreationResponse 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 the AddItemRequests.
      protected String buildGroupReferenceNumber​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart)
      Builds a FulfillmentGroup.getReferenceNumber() for a new group.
      protected String buildGroupReferenceNumber​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String fulfillmentGroupId)
      Builds a FulfillmentGroup.getReferenceNumber() for the given cart and group ID.
      protected com.broadleafcommerce.cart.client.domain.ConfigError buildInventoryUnavailableError()  
      protected Map<String,​com.broadleafcommerce.order.common.domain.AttributeChoiceValue> 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 an OfferItemDetail from the given OfferItemDetail.
      protected AddItemFailure buildValidationFailure​(@NonNull AddItemRequest addItemRequest, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      Builds an AddItemFailure based on the provided AddItemRequest & CartItem representing an invalid add to cart request
      BulkAddToCartResponse bulkAddToCart​(@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 int calculateDependentItemsQuantityWithSameSku​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem dependentCartItem, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, int parentQuantity)  
      protected int calculateItemsQuantityWithSameSku​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart)  
      protected int calculateItemsQuantityWithSameSku​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, int parentItemQuantity)  
      protected void checkDependentItemInternalInventoryAvailability​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull Product product, @NonNull com.broadleafcommerce.cart.client.domain.CartItem dependantCartItem, @NonNull Product dependentProduct)
      Checks the inventory-related fields in the catalog data to determine whether or not the dependent item is available.
      protected void checkInternalInventoryAvailability​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull Product product, @NonNull List<Product> products)
      Checks the inventory-related fields in the catalog data to determine whether or not the item is available.
      protected void checkInventoryAvailability​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull Product product, @NonNull List<Product> products, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Checks the inventory of the cart item.
      protected void checkInventoryAvailability​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull Product product, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      protected void checkQuantityWithinThreshold​(com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.cart.client.domain.CartItem cartItem, Product product)
      Checks if the quantity of the item fits within the threshold.
      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)
      Creates a new, in-progress Cart for the provided CartCreationRequest and CustomerRef.
      protected com.broadleafcommerce.cart.client.domain.CartAlert createCartAlert​(String message)  
      protected com.broadleafcommerce.cart.client.domain.CartItem createCartItem​(@NonNull AddItemRequest addItemRequest)
      protected com.broadleafcommerce.cart.client.domain.CartItem createCartItem​(@NonNull AddItemRequest addItemRequest, javax.money.CurrencyUnit currencyUnit)
      Creates a CartItem based on the provided AddItemRequest
      protected com.broadleafcommerce.cart.client.domain.Cart createEmptyCart​(com.broadleafcommerce.order.common.domain.CustomerRef customer, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      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, unsaved Cart 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)
      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, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      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 provided Cart.
      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 provided Cart.
      protected void defaultCartCurrency​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, javax.money.CurrencyUnit currencyUnit)  
      protected void defaultCartCurrency​(com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      protected void defaultCartLocale​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)  
      protected String determineDependentItemKey​(@NonNull Product product, @NonNull com.broadleafcommerce.cart.client.domain.CartItem dependantCartItem)
      Determines the item key for the dependent cart item.
      protected String determineInventoryCheckStrategy​(@NonNull Product product, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem)  
      protected boolean doesCartContainCampaignForCode​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String code)
      Determines whether the Cart contains a CampaignRef that matches the code.
      protected com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils getAuthenticationUtils()  
      protected CartItemConfigurationService getCartItemConfigurationService()  
      protected Map<String,​com.broadleafcommerce.cart.client.domain.CartItem> getCartItemIdsWithDependentItem​(List<com.broadleafcommerce.cart.client.domain.CartItem> cartItems)  
      protected CartItemMergingService<com.broadleafcommerce.cart.client.domain.CartItem> getCartItemMergingService()  
      protected CartItemProductService getCartItemProductService()  
      protected CartPricingService getCartPricingService()  
      protected String getCartTotalChangeMessage​(javax.money.MonetaryAmount latestCartPrice)  
      protected javax.money.CurrencyUnit getCurrencyUnit​(PriceCartRequest priceCartRequest, 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 String getMessage​(@NonNull String errorMessage, Object... args)  
      protected org.springframework.context.MessageSource getMessageSource()  
      protected CartOperationServiceOfferUtils getOfferUtils()  
      protected PaymentProvider<PaymentSummary> getPaymentProvider()  
      protected String getPricingChangeMessage​(javax.money.MonetaryAmount oldCartPrice, javax.money.MonetaryAmount latestCartPrice)  
      protected Object getProductType​(com.broadleafcommerce.cart.client.domain.CartItem cartItem)  
      protected CartOperationServiceProperties getProperties()  
      protected CartOperationServiceProviders getProviders()  
      protected List<com.broadleafcommerce.order.common.domain.Adjustment> getRelatedAdjustments​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String code)  
      protected Map<String,​Integer> getRequestedQuantitiesPerSku​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull Product product)
      protected Map<String,​Integer> getRequestedQuantitiesPerSku​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull Product product, @NonNull List<Product> products)  
      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 StaleCartItemsService getStaleCartItemsService()  
      protected StaleCartPricingResultHolder getStaleCartPricingResultHolder()  
      protected TaxService getTaxService()  
      protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()  
      protected void invalidateFulfillmentGroupOverride​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem)  
      protected boolean isPaymentReallocationRequired​(javax.money.MonetaryAmount previousCartTotal, javax.money.MonetaryAmount newCartTotal)  
      protected BulkAddToCartResponse newBulkAddToCartResponse()
      Instantiates a new BulkAddToCartResponse using the TypeFactory.
      protected com.broadleafcommerce.cart.client.domain.Cart newCart()
      Uses the TypeFactory to create a new Cart object.
      protected CartCreationRequest newCartCreationRequest()  
      protected com.broadleafcommerce.cart.client.domain.CartPricing newCartPricing()
      Uses the TypeFactory to create a new CartPricing 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 the UpdateItemRequest and populates them onto the CartItem.
      protected boolean populateCartUpdatesFromUpdateItemRequest​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull UpdateItemRequest request)
      Takes the changes from the UpdateItemRequest and populates them onto the Cart.
      protected com.broadleafcommerce.cart.client.domain.CartItem populateFromRequest​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull AddItemRequest addItemRequest)
      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, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Prices cart, processes free gift offers, and saves cart with the provided PriceCartRequest if saveCart 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 provided PriceCartRequest.
      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 items
      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, 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 of FreeGiftItems 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 whenever CartItems 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 in Cart.getInternalAttributes().
      protected void reallocateCartTotalAmongstPayments​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull javax.money.MonetaryAmount newCartTotal, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)  
      protected void reallocateCartTotalAmongstPayments​(@NonNull List<PaymentSummary> paymentSummaries, @NonNull javax.money.MonetaryAmount cartTotal, 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)
      Recalculates the taxes for the provided Cart.
      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 provided Cart.
      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 gift CartItems 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 provided Cart 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, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Removes one or more items from the provided Cart 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 provided Cart, 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 default FulfillmentType for the provided CartItem
      protected String resolveTaxAddressSource​(String fulfillmentType)
      Determines the tax address source that should be used for FulfillmentGroup.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> 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> retrieveCustomerCartByStatus​(String customerId, String status, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Retrieves a cart with the provided customer ID and status, if it exists
      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.
      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.
      void setOfferUtils​(CartOperationServiceOfferUtils offerUtils)  
      void setPaymentProvider​(PaymentProvider<PaymentSummary> paymentProvider)  
      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 provided Cart with the DefaultCartStatuses.NAMED.
      com.broadleafcommerce.cart.client.domain.Cart updateCart​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, boolean allowPriceCart, boolean wasCartModified, boolean invalidatePrices, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Updates the provided Cart 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 successful AddItemRequests
      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 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 provided Cart.
      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 gift CartItem with the latest details from the given FreeGiftItem and update its Adjustment.
      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 existing FulfillmentGroup for the provided Cart.
      protected void updateFulfillmentItem​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      Updates the FulfillmentItem corresponding to the CartItem, 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 provided Cart based on the provided UpdateItemRequest.
      protected void validateCartItem​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull Product product, @NonNull List<Product> products, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Validates that the CartItem includes enough information to correctly represent the product or one of the product's variants.
      protected void validateCartItem​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull Product product, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      protected void validateCartItemAfterUpdate​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull Product product, @NonNull List<Product> products, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)  
      protected void validateCartItemAfterUpdate​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull Product product, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      protected void validateCartItemBeforeUpdate​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull UpdateItemRequest updateItemRequest)
      Validates the CartItem being updated against UpdateItemRequest before the actual cart item update.
      protected void validateFreeGiftItemForUpdate​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull UpdateItemRequest updateItemRequest)
      If the given CartItem is a free gift item, validates that its quantity is not being changed.
      protected void verifySkuAvailability​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull Product product, @NonNull List<Product> products, @NonNull Map<String,​Boolean> availabilityMap)  
      protected void verifySkuAvailability​(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull Product product, @NonNull Map<String,​Boolean> availabilityMap)
    • Method Detail

      • 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 interface CartOperationService
        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.
      • retrieveCustomerCartByStatus

        public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveCustomerCartByStatus​(String customerId,
                                                                                                    String status,
                                                                                                    @Nullable
                                                                                                    com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: CartOperationService
        Retrieves a cart with the provided customer ID and status, if it exists
        Specified by:
        retrieveCustomerCartByStatus in interface CartOperationService
        Parameters:
        customerId - the customer ID
        status - the status
        contextInfo - the context info
        Returns:
        the cart, if it exists
      • 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-progress Cart for the provided CartCreationRequest and CustomerRef. The CartCreationRequest must contain

        For guest customers, this will create a new guest cart

        Specified by:
        createCart in interface CartOperationService
        Parameters:
        cartCreationRequest - the cart creation request
        customer - the customer
        contextInfo - 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 in Cart.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 - the Cart to process the free gift offers for
        contextInfo - 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 of FreeGiftItems to add to cart.
        Parameters:
        cart - the Cart to process existing free gift items for
        updatedCartItems - a list of CartItems whose quantities were updated
        contextInfo - 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 gift CartItem with the latest details from the given FreeGiftItem and update its Adjustment.
        Parameters:
        existingFreeGiftItem - the existing free gift CartItem to update the FreeGiftItem details for
        freeGift - the FreeGiftItem to update the existing free gift CartItem with
        updatedCartItems - a list of CartItems whose quantities were updated, used to ensure the FulfillmentItems are updated as well
      • buildAdjustment

        protected com.broadleafcommerce.order.common.domain.Adjustment buildAdjustment​(com.broadleafcommerce.promotion.offer.client.web.context.info.Adjustment offerAdjustment)
        Builds an Adjustment based on the given Adjustment.
        Parameters:
        offerAdjustment - the Adjustment to build it from
        Returns:
        an Adjustment based on the given Adjustment
      • buildOfferItemDetails

        protected com.broadleafcommerce.order.common.domain.OfferItemDetail buildOfferItemDetails​(com.broadleafcommerce.promotion.offer.client.web.context.info.OfferItemDetail offerItemDetail)
        Builds an OfferItemDetail from the given OfferItemDetail.
        Parameters:
        offerItemDetail - the OfferItemDetail to build the OfferItemDetail from
        Returns:
        an OfferItemDetail from the given OfferItemDetail
      • 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 of FreeGiftItems to cart, and then adds the ids of those added free gift cart items to the qualifier cart items attributes.
        Parameters:
        cart - the Cart to add the FreeGiftItems to
        freeGiftItemsToAdd - a list of FreeGiftItems to add
        updatedCartItems - a list of CartItems whose attributes were updated
      • buildAddItemRequest

        protected AddItemRequest buildAddItemRequest​(com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem freeGiftItem)
        Builds an AddItemRequest from the given FreeGiftItem.
        Parameters:
        freeGiftItem - FreeGiftItem to build the AddItemRequest for
        Returns:
        the AddItemRequest for the given FreeGiftItem
      • updateCart

        public com.broadleafcommerce.cart.client.domain.Cart updateCart​(@NonNull
                                                                        @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                                        boolean allowPriceCart,
                                                                        boolean wasCartModified,
                                                                        boolean invalidatePrices,
                                                                        @Nullable
                                                                        com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: CartOperationService
        Updates the provided Cart 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 of invalidatePrices. 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 interface CartOperationService
        Parameters:
        cart - the cart to be updated
        allowPriceCart - whether the cart may be priced
        wasCartModified - whether the cart was actually modified by the caller
        invalidatePrices - whether to invalidate prices on the cart if changes were made
        Returns:
        synced version of the cart with the cart service
      • 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 provided Cart with the DefaultCartStatuses.NAMED. This method is often used when transferring or creating new carts for a registered customer who already has an in-progress cart.
        Specified by:
        updateAsNamedCart in interface CartOperationService
        Parameters:
        cart - the cart to update
        name - the name for the cart
        contextInfo - 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 provided Cart based on the provided AddItemRequest.
        Specified by:
        addItemToCart in interface CartOperationService
        Parameters:
        cart - the cart
        addItemRequest - the request to add an item
        price - whether or not to re-price the cart
        contextInfo - 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 provided Cart based on the provided UpdateItemRequest.
        Specified by:
        updateItemInCart in interface CartOperationService
        Parameters:
        cart - the cart
        updateItemRequest - the request to update an item
        price - whether or not to re-price the cart
        contextInfo - the context info
        Returns:
        the cart with item updated
      • 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 provided Cart matching the provided cart item ID.
        Specified by:
        removeItemFromCart in interface CartOperationService
        Parameters:
        cart - the cart
        cartItemId - the cart item ID
        price - whether or not to re-price the cart
        contextInfo - 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 provided Cart.
        Specified by:
        addManyItemsToCart in interface CartOperationService
        Parameters:
        cart - the cart
        addItemRequests - the add item requests
        price - whether or not to re-price the cart
        contextInfo - 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,
                                                                                     @Nullable
                                                                                     com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: CartOperationService
        Removes one or more items from the provided Cart matching the provided cart item IDs.
        Specified by:
        removeManyItemsFromCart in interface CartOperationService
        Parameters:
        cart - the cart
        cartItemIds - the cart item IDs
        price - whether or not to re-price the cart
        updateCart - whether or not to update Cart pricing and save the cart after the removal
        contextInfo - the context info
        Returns:
        the cart without the provided item
      • processFreeGiftItemsForRemoval

        protected void processFreeGiftItemsForRemoval​(com.broadleafcommerce.cart.client.domain.Cart cart,
                                                      List<com.broadleafcommerce.cart.client.domain.CartItem> cartItemsBeingRemoved)
        Processes free gift items whenever CartItems are being removed.
        Parameters:
        cart - the Cart the items are being removed from
        cartItemsBeingRemoved - the list of CartItems 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 to Cart's ignore list in Cart.getInternalAttributes() whenever a free gift item is removed, so that the free gift item will not be added again.
        Parameters:
        cart - the Cart to add the offer id ignore list to
        cartItemsBeingRemoved - the list of CartItems being removed from cart
        See Also:
        CartAttributeConstants.Internal.OFFER_IDS_TO_IGNORE
      • 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 - the Cart to remove the free gift item from
        cartItemsBeingRemoved - the list of CartItems 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 provided Cart.
        1. Determine if the code is valid as a campaign tracking code
        2. If so, add it to the cart as a CampaignRef
        3. Determine if the code is valid as a shared code
        4. If so, add it to the cart
        Specified by:
        addOfferCodeToCart in interface CartOperationService
        Parameters:
        cart - the cart
        addOfferCodeRequest - the add offer code request
        price - whether or not to re-price the cart
        contextInfo - 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 an AddCodeToCartResponse based on the provided cart, code, & whether or not the cart was repriced
        Parameters:
        cart - The updated Cart, including the code and applicable adjustments (discounts).
        code - The offer code that was added to the cart
        cartWasRepriced - 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

        protected List<com.broadleafcommerce.order.common.domain.Adjustment> getRelatedAdjustments​(@NonNull
                                                                                                   @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                                                                   @NonNull
                                                                                                   @NonNull String code)
      • 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 provided Cart, if it exists.
        1. Determine if the code exists as a tracking code on the cart
        2. If so, remove the corresponding CampaignRef
        3. Determine if the offer code exists on the cart
        4. If so, remove it
        Specified by:
        removeOfferCodeFromCart in interface CartOperationService
        Parameters:
        cart - cart cart
        offerCode - the offer code to remove
        price - whether or not to re-price the cart
        contextInfo - 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 interface CartOperationService
        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 updating
        contextInfo - 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 provided Cart.
        Specified by:
        addAttributeToCart in interface CartOperationService
        Parameters:
        cart - the cart
        addAttributeRequest - the add attribute request
        price - whether to allow the cart to be priced after updating
        contextInfo - 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 provided Cart.
        Specified by:
        removeAttributeFromCart in interface CartOperationService
        Parameters:
        cart - the cart
        key - the attribute key
        price - whether to allow the cart to be priced after updating
        contextInfo - 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 provided Cart.
        Specified by:
        updateContactInfoInCart in interface CartOperationService
        Parameters:
        cart - the cart
        contactInfoRequest - the contact info request
        price - whether to allow the cart to be priced after updating
        contextInfo - 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 existing FulfillmentGroup for the provided Cart.
        Specified by:
        updateFulfillmentGroupInCart in interface CartOperationService
        Parameters:
        cart - the cart
        referenceNumber - the reference number of the fulfillment group to update
        updateFulfillmentGroupRequest - the fulfillment group update request
        price - whether to allow the cart to be priced after updating
        contextInfo - 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 provided PriceCartRequest.
        Specified by:
        priceCart in interface CartOperationService
        Parameters:
        cart - the cart
        priceCartRequest - the price cart request
        contextInfo - 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,
                                                                       @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 provided PriceCartRequest if saveCart is true.
        Specified by:
        priceCart in interface CartOperationService
        Parameters:
        cart - the cart
        priceCartRequest - the price cart request
        saveCart - determines whether to save cart after pricing
        contextInfo - the context info
        Returns:
        the priced cart
      • 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,
                                                          @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 payment
        cartTotal - The total price of the cart
        contextInfo - the contextInfo for the request
      • reallocateCartTotalAmongstPayments

        protected void reallocateCartTotalAmongstPayments​(@NonNull
                                                          @NonNull List<PaymentSummary> paymentSummaries,
                                                          @NonNull
                                                          @NonNull javax.money.MonetaryAmount cartTotal,
                                                          @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 payments
        cartTotal - The total price of the cart
        contextInfo - the contextInfo for the request
      • 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 interface CartOperationService
        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,
                                                                                     boolean actual,
                                                                                     @Nullable
                                                                                     com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: CartOperationService
        Recalculates the taxes for the provided Cart.
        Specified by:
        recalculateTaxesForCart in interface CartOperationService
        Parameters:
        cart - the cart
        estimated - whether to calculate estimated taxes
        actual - whether to calculate actual taxes
        contextInfo - the context info
        Returns:
        the cart with taxes updated
      • getCurrencyUnit

        protected javax.money.CurrencyUnit getCurrencyUnit​(@Nullable
                                                           PriceCartRequest priceCartRequest,
                                                           @Nullable
                                                           com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Call utility method to determine currency.
        Parameters:
        priceCartRequest - the price cart request to look for currency
        contextInfo - 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 cart
        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, unsaved Cart with typical defaults.
        Parameters:
        customer - the customer
        currencyUnit - the currency for the cart
        contextInfo - the context info
        Returns:
        the new empty cart
      • createEmptyCart

        @Deprecated
        protected com.broadleafcommerce.cart.client.domain.Cart createEmptyCart​(@Nullable
                                                                                com.broadleafcommerce.order.common.domain.CustomerRef customer,
                                                                                @Nullable
                                                                                com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Creates and returns an empty, unsaved Cart with typical defaults.
        Parameters:
        customer - the customer
        contextInfo - 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)
      • defaultCartCurrency

        @Deprecated
        protected void defaultCartCurrency​(com.broadleafcommerce.cart.client.domain.Cart cart,
                                           @Nullable
                                           com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      • newCart

        protected com.broadleafcommerce.cart.client.domain.Cart newCart()
        Uses the TypeFactory to create a new Cart object.
        Returns:
        the new cart
      • newCartPricing

        protected com.broadleafcommerce.cart.client.domain.CartPricing newCartPricing()
        Uses the TypeFactory to create a new CartPricing object.
        Returns:
        the new cart pricing
      • 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
      • 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 provided Cart.
        Parameters:
        cart - the cart
        addItemRequest - the add item request
        currencyUnit - the currency for the item(s)
        contextInfo - the context info
      • createItemAndAddToCart

        @Deprecated
        protected com.broadleafcommerce.cart.client.domain.Cart createItemAndAddToCart​(@NonNull
                                                                                       @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                                                       @NonNull
                                                                                       @NonNull AddItemRequest addItemRequest,
                                                                                       @Nullable
                                                                                       com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Creates a new item and adds it to the provided Cart.
        Parameters:
        cart - the cart
        addItemRequest - the add item request
        contextInfo - the context info
      • 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 provided Cart.
        Parameters:
        cart - the cart
        addItemRequests - the add item request
        contextInfo - the context info
      • addUnassignedItemsToFulfillmentGroup

        protected com.broadleafcommerce.cart.client.domain.Cart addUnassignedItemsToFulfillmentGroup​(@NonNull
                                                                                                     @NonNull com.broadleafcommerce.cart.client.domain.Cart cart)
        Identify CartItems that have not been assigned to a FulfillmentGroup & 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 successful AddItemRequests
        Parameters:
        cart - The cart that was added to
        successfulAddItemRequests - 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 the FulfillmentItem corresponding to the CartItem, keeping them in sync.
        Parameters:
        cart - Cart to which the items belong
        cartItem - CartItem with updates to be carried over to a FulfillmentItem
      • populateCartItemUpdates

        protected boolean populateCartItemUpdates​(@NonNull
                                                  @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                                  @NonNull
                                                  @NonNull UpdateItemRequest request)
        Takes the changes from the UpdateItemRequest and populates them onto the CartItem.
        Parameters:
        cartItem - The CartItem to be updated with changes from request
        request - The UpdateItemRequest with changes for cartItem
        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 the UpdateItemRequest and populates them onto the Cart.
        Parameters:
        cart - The Cart to be updated with changes from request
        request - The UpdateItemRequest with changes for cart
        Returns:
        Whether CartItem referenced in request 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 the CartItem being updated against UpdateItemRequest before the actual cart item update.

        By default, the CartItem being updated is only being validated against free gift requirements.

        Parameters:
        cartItem - the CartItem being updated
        updateItemRequest - the UpdateItemRequest 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 given CartItem 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 - the CartItem to validate
        updateItemRequest - the UpdateItemRequest 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 Product product,
                                                   @NonNull
                                                   @NonNull List<Product> products,
                                                   @Nullable
                                                   com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      • validateCartItemAfterUpdate

        @Deprecated
        protected void validateCartItemAfterUpdate​(@NonNull
                                                   @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                   @NonNull
                                                   @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                                   @NonNull
                                                   @NonNull Product product,
                                                   @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)
      • addCampaignForCodeIfExists

        protected boolean addCampaignForCodeIfExists​(String code,
                                                     @NonNull
                                                     @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                     @Nullable
                                                     com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Adds a code to the Cart if it belongs to a campaign.
        Parameters:
        code - Code to be added that might match a campaign.
        cart - Cart to add the code to.
        contextInfo - the context info
        Returns:
        The CampaignRef.getCampaignTrackingId() for the added campaign.
      • 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 the code to Cart.getOfferCodes() if it's usable.
        Parameters:
        code - The code to be added
        isForCampaign - Whether the code was used to add a CampaignRef to the cart
        cart - The cart to add the code 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 a CampaignRef, then no exception is thrown here even if the code is not usable for the purpose of adding an OfferRef because it was still usable in a general sense to add the campaign. AddCodeException.getReasonType() will typically match the code's CodeUsabilityInfo.getCodeUsabilityType() and can be used on the frontend to determine messaging.
      • buildCampaignRef

        protected com.broadleafcommerce.order.common.domain.CampaignRef buildCampaignRef​(String code,
                                                                                         String trackingId)
      • doesCartContainCampaignForCode

        protected final boolean doesCartContainCampaignForCode​(@NonNull
                                                               @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                               String code)
        Determines whether the Cart contains a CampaignRef that matches the code.
        Parameters:
        cart - Cart with campaigns to match against
        code - Code to match with
        Returns:
        Whether the cart contains a campaign for the code
      • getMessage

        protected String getMessage​(@NonNull
                                    @NonNull String errorMessage,
                                    @Nullable
                                    Object... args)
      • 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's ID and the index of the group in Cart.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 group
        fulfillmentGroupId - The ID for the fulfillment group to find. Usually defaults to the index of the group in Cart.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 of
        cartItemId - 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 the AddItemRequest. This will populate info from the CatalogProvider 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 new CartItems.
        cart - The cart of the new CartItems
        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.
      • buildCartItem

        @Deprecated
        protected com.broadleafcommerce.cart.client.domain.CartItem buildCartItem​(@NonNull
                                                                                  @NonNull AddItemRequest addItemRequest,
                                                                                  @NonNull
                                                                                  @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                                                  @Nullable
                                                                                  com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Populates a new cart item from the AddItemRequest. This will populate info from the CatalogProvider 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 new CartItems.
        cart - The cart of the new CartItems
        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 the AddItemRequests. This will populate info from the CatalogProvider 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 new CartItems.
        cart - The cart of the new CartItems
        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.
      • buildCartItems

        @Deprecated
        protected DefaultCartOperationService.BulkCartItemCreationResponse buildCartItems​(@NonNull
                                                                                          @NonNull Collection<AddItemRequest> addItemRequests,
                                                                                          @NonNull
                                                                                          @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                                                          @Nullable
                                                                                          com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Populates new cart items from the AddItemRequests. This will populate info from the CatalogProvider 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 new CartItems.
        cart - The cart of the new CartItems
        Returns:
        Populated CartItems.
        Throws:
        CartItemValidationException - Thrown if the cart item is misconfigured based on the related product's included products and product options.
      • createCartItem

        protected com.broadleafcommerce.cart.client.domain.CartItem createCartItem​(@NonNull
                                                                                   @NonNull AddItemRequest addItemRequest,
                                                                                   @Nullable
                                                                                   javax.money.CurrencyUnit currencyUnit)
        Creates a CartItem based on the provided AddItemRequest
        Parameters:
        addItemRequest - the request which contains the info to build a cart item
        currencyUnit - 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 populate
        addItemRequest - the request which contains the info to build a cart item
        currencyUnit - the currency for the cart item
        Returns:
        the populated cart item
      • getProductType

        @Nullable
        protected Object getProductType​(com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      • populateFromRequest

        @Deprecated
        protected com.broadleafcommerce.cart.client.domain.CartItem populateFromRequest​(@NonNull
                                                                                        @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                                                                        @NonNull
                                                                                        @NonNull AddItemRequest addItemRequest)
        Populates the cart item fields based on the request.
        Parameters:
        cartItem -
        addItemRequest - the request which contains the info to build a cart item
        Returns:
        the current cart
      • buildItemAttributeChoices

        protected Map<String,​com.broadleafcommerce.order.common.domain.AttributeChoiceValue> buildItemAttributeChoices​(@NonNull
                                                                                                                             @NonNull Map<String,​String> requestItemAttributeChoices)
      • validateCartItem

        protected void validateCartItem​(@NonNull
                                        @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                        @NonNull
                                        @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                        @NonNull
                                        @NonNull Product product,
                                        @NonNull
                                        @NonNull List<Product> products,
                                        @Nullable
                                        com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Validates that the CartItem includes enough information to correctly represent the product or one of the product's variants.
        Parameters:
        cartItem - The CartItem that is being validated
        cart - The CartItem's owning cart
        product - The product that this CartItem is intended to represent
        contextInfo - The contextInfo for the request
      • validateCartItem

        @Deprecated
        protected void validateCartItem​(@NonNull
                                        @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                        @NonNull
                                        @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                        @NonNull
                                        @NonNull Product product,
                                        @Nullable
                                        com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      • checkInventoryAvailability

        protected void checkInventoryAvailability​(@NonNull
                                                  @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                                  @NonNull
                                                  @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                  @NonNull
                                                  @NonNull Product product,
                                                  @NonNull
                                                  @NonNull List<Product> products,
                                                  @Nullable
                                                  com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Checks the inventory of the cart item. First, it will check the catalog-based inventory details, and if it passes that check it will make a call to the inventory provider to check availability with the external inventory system.
        Parameters:
        cartItem - The cart item whose inventory is being checked
        cart - The cart for this cart item
        product - The product that this CartItem is intended to represent
        products - The list of products identified for this request
        contextInfo - Context information about sandboxing and multitenant state
      • checkQuantityWithinThreshold

        protected void checkQuantityWithinThreshold​(com.broadleafcommerce.cart.client.domain.Cart cart,
                                                    com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                                    Product product)
        Checks if the quantity of the item fits within the threshold.
        Parameters:
        cart - The cart for this cart item
        cartItem - The cart item whose quantity is being validated
        product - The product that this CartItem is intended to represent
      • checkInternalInventoryAvailability

        protected void checkInternalInventoryAvailability​(@NonNull
                                                          @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                                          @NonNull
                                                          @NonNull Product product,
                                                          @NonNull
                                                          @NonNull List<Product> products)
        Checks the inventory-related fields in the catalog data to determine whether or not the item is available.
        Parameters:
        cartItem - The cart item whose inventory is being checked
        product - The product that this CartItem is intended to represent
        products - The list of products identified for this request
      • checkDependentItemInternalInventoryAvailability

        protected void checkDependentItemInternalInventoryAvailability​(@NonNull
                                                                       @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                                                       @NonNull
                                                                       @NonNull Product product,
                                                                       @NonNull
                                                                       @NonNull com.broadleafcommerce.cart.client.domain.CartItem dependantCartItem,
                                                                       @NonNull
                                                                       @NonNull Product dependentProduct)
        Checks the inventory-related fields in the catalog data to determine whether or not the dependent item is available.
        Parameters:
        cartItem - The cart item whose inventory is being checked
        product - The product that this CartItem is intended to represent
        dependantCartItem - The dependent cart item whose inventory is being checked
        dependentProduct - The product that this dependent CartItem is intended to represent
      • determineDependentItemKey

        protected String determineDependentItemKey​(@NonNull
                                                   @NonNull Product product,
                                                   @NonNull
                                                   @NonNull com.broadleafcommerce.cart.client.domain.CartItem dependantCartItem)
        Determines the item key for the dependent cart item.
        Parameters:
        product - The product of the parent cart item
        dependantCartItem - The dependent cart item whose item key is being determined
        Returns:
        the item key for the dependent item
      • checkInventoryAvailability

        @Deprecated
        protected void checkInventoryAvailability​(@NonNull
                                                  @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                                  @NonNull
                                                  @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                  @NonNull
                                                  @NonNull Product product,
                                                  @Nullable
                                                  com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      • getRequestedQuantitiesPerSku

        protected Map<String,​Integer> getRequestedQuantitiesPerSku​(@NonNull
                                                                         @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                                                         @NonNull
                                                                         @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                                         @NonNull
                                                                         @NonNull Product product,
                                                                         @NonNull
                                                                         @NonNull List<Product> products)
      • determineInventoryCheckStrategy

        protected String determineInventoryCheckStrategy​(@NonNull
                                                         @NonNull Product product,
                                                         @NonNull
                                                         @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      • calculateItemsQuantityWithSameSku

        protected int calculateItemsQuantityWithSameSku​(@NonNull
                                                        @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                                        @NonNull
                                                        @NonNull com.broadleafcommerce.cart.client.domain.Cart cart)
      • calculateItemsQuantityWithSameSku

        protected int calculateItemsQuantityWithSameSku​(@NonNull
                                                        @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                                        @NonNull
                                                        @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                        int parentItemQuantity)
      • calculateDependentItemsQuantityWithSameSku

        protected int calculateDependentItemsQuantityWithSameSku​(@NonNull
                                                                 @NonNull com.broadleafcommerce.cart.client.domain.CartItem dependentCartItem,
                                                                 @NonNull
                                                                 @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                                                 int parentQuantity)
      • verifySkuAvailability

        protected void verifySkuAvailability​(@NonNull
                                             @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                             @NonNull
                                             @NonNull Product product,
                                             @NonNull
                                             @NonNull List<Product> products,
                                             @NonNull
                                             @NonNull Map<String,​Boolean> availabilityMap)
      • buildInventoryUnavailableError

        protected com.broadleafcommerce.cart.client.domain.ConfigError buildInventoryUnavailableError()
      • buildValidationFailure

        protected AddItemFailure buildValidationFailure​(@NonNull
                                                        @NonNull AddItemRequest addItemRequest,
                                                        @NonNull
                                                        @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem)
        Builds an AddItemFailure based on the provided AddItemRequest & CartItem representing an invalid add to cart request
        Parameters:
        addItemRequest - The request that was used to build the CartItem
        cartItem - The cart item that holds the validation failures
        Returns:
        an AddItemFailure based on the provided AddItemRequest & CartItem
      • 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

        protected String resolveTaxAddressSource​(String fulfillmentType)
        Determines the tax address source that should be used for FulfillmentGroup.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 a FulfillmentGroup.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 a FulfillmentGroup.getReferenceNumber() for the given cart and group ID.
        Parameters:
        cart - Cart that owns the group
        fulfillmentGroupId - ID of the fulfillment group for which to build a reference number. Usually defaults to the index of the group in Cart.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)
      • 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 the DefaultProductType.BUNDLE items.
        Parameters:
        cart - the cart whose items may need to be assigned to a fulfillment group
        cartItem - the cart item for which to create add the fulfillment item
        assignedCartItemIds - the set of the cart item ids for which the fulfillment item is already exists
        parentCartItem - 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 default FulfillmentType for the provided CartItem
        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

        protected Map<String,​com.broadleafcommerce.cart.client.domain.CartItem> getCartItemIdsWithDependentItem​(List<com.broadleafcommerce.cart.client.domain.CartItem> cartItems)
      • 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 priced
        contextInfo - The contextInfo for the request
        Returns:
      • getPricingChangeMessage

        protected String getPricingChangeMessage​(javax.money.MonetaryAmount oldCartPrice,
                                                 javax.money.MonetaryAmount latestCartPrice)
      • getCartTotalChangeMessage

        protected String getCartTotalChangeMessage​(javax.money.MonetaryAmount latestCartPrice)
      • createCartAlert

        protected com.broadleafcommerce.cart.client.domain.CartAlert createCartAlert​(String message)
      • 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 interface CartOperationService
        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 interface CartOperationService
        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 interface CartOperationService
        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 interface CartOperationService
        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

        protected Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveCartByCartIdWithStatus​(@NonNull
                                                                                                         @NonNull String cartId,
                                                                                                         com.broadleafcommerce.cart.client.domain.enums.CartStatus status,
                                                                                                         @Nullable
                                                                                                         com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      • 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 interface CartOperationService
        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:
        1. Retrieve catalog information for the item
        2. Check inventory
        3. Create item and add it to the cart (un-priced)
        4. Price the item and cart, using offers and price lists (optional)
        5. Update the cart and it's items (optional)
        Specified by:
        addToCart in interface CartOperationService
        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 updating
        contextInfo - 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:
        1. Retrieve catalog information for the items
        2. Check inventory
        3. Create item and add it to the cart (un-priced)
        4. Price the item and cart, using offers and price lists (optional)
        5. Update the cart and it's items (optional)
        Specified by:
        bulkAddToCart in interface CartOperationService
        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 updating
        contextInfo - 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 interface CartOperationService
        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 updating
        contextInfo - 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 interface CartOperationService
        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 updating
        contextInfo - 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 interface CartOperationService
        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 updating
        contextInfo - 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
        1. Retrieve the cart
        2. Determine if the code is valid as a campaign tracking code
        3. If so, add it to the cart as a CampaignRef
        4. Determine if the code is valid as a shared code
        5. If so, add it to the cart
        6. Update the cart
        7. Price the cart, using offers and price lists (optional)
        8. Update the cart and its items (optional)
        Specified by:
        addCodeToCart in interface CartOperationService
        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 updating
        contextInfo - 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 interface CartOperationService
        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 updating
        contextInfo - Context information around sandbox and multitenant state.
        Returns:
        The Cart for which the updated fulfillment group is a part.
      • getAuthenticationUtils

        protected com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils getAuthenticationUtils()
      • getTypeFactory

        protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()
      • getCartItemMergingService

        protected CartItemMergingService<com.broadleafcommerce.cart.client.domain.CartItem> getCartItemMergingService()
      • getMessageSource

        protected org.springframework.context.MessageSource getMessageSource()
      • getTaxService

        protected TaxService getTaxService()
      • setStaleCartItemsService

        @Autowired
        public void setStaleCartItemsService​(StaleCartItemsService staleCartItemsService)