Class DefaultCartOperationService
- All Implemented Interfaces:
CartOperationService
- Author:
- Chad Harchar (charchar)
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final Stringprotected static final Stringprotected static final SecureRandom -
Constructor Summary
ConstructorsConstructorDescriptionDefaultCartOperationService(CartOperationServiceProviders providers, CartPricingService cartPricingService, CartItemConfigurationService<? extends CatalogItem> cartItemConfigurationService, CartItemCatalogInformationService<? extends CatalogItem> cartItemCatalogInformationService, com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils authenticationUtils, com.broadleafcommerce.common.extension.TypeFactory typeFactory, CartOperationServiceProperties properties, CartItemMergingService<com.broadleafcommerce.cart.client.domain.CartItem> cartItemMergingService, org.springframework.context.MessageSource messageSource, TaxService taxService, StaleCartPricingResultHolder staleCartPricingResultHolder) -
Method Summary
Modifier and TypeMethodDescriptioncom.broadleafcommerce.cart.client.domain.CartaddAttributeToCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull AddAttributeRequest addAttributeRequest, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adds an attribute to the providedCart.protected booleanaddCampaignCodeIfExistsOnCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String code, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated.Deprecated as of 1.8, if using OfferService 2.0, this method is not usedprotected booleanaddCampaignForCodeIfExists(String code, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated.Deprecated as of 1.8, if using OfferService 2.0, this method is not usedaddCodeToCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull AddCodeRequest codeRequest, boolean allowPriceCart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve the cart Determine if the code is valid as a campaign tracking code If so, add it to the cart as aCampaignRefDetermine 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 voidaddFreeGiftItemsToCart(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 ofFreeGiftItemsto cart, and then adds the ids of those added free gift cart items to the qualifier cart items attributes.protected voidaddItemsToFulfillmentGroup(@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.CartaddItemToCart(@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 providedCartbased on the providedAddItemRequest.protected voidaddItemToFulfillmentGroup(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, Set<String> assignedCartItemIds, com.broadleafcommerce.cart.client.domain.CartItem parentCartItem) Assigns the cart item and its dependent cart items to the fulfillment group.addManyItemsToCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull Collection<AddItemRequest> addItemRequests, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adds one or more items to the providedCart.protected booleanaddOfferCodeIfUsable(String code, boolean isForCampaign, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adds thecodetoCart.getOfferCodes()if it's usable.addOfferCodeToCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull AddCodeRequest addOfferCodeRequest, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adds an offer code to the providedCart.protected voidaddRemovedFreeGiftOfferToIgnoreList(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItemsBeingRemoved) Adds the offer id toCart'signore list inCart.getInternalAttributes()whenever a free gift item is removed, so that the free gift item will not be added again.com.broadleafcommerce.cart.client.domain.CartaddToCart(@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.CartaddUnassignedItemsToFulfillmentGroup(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart) IdentifyCartItemsthat have not been assigned to aFulfillmentGroup& add them to the relevant FulfillmentGroup.protected PaymentSummaryallocateCartTotalToPayment(@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 PaymentSummaryallocateCartTotalToPayment(@NonNull PaymentSummary paymentSummary, @NonNull javax.money.MonetaryAmount cartTotal, String lockToken, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to automatically reallocate the cart total to the cart's single payment.protected AddCodeToCartResponsebuildAddCodeToCartResponse(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String code, boolean cartWasRepriced) Builds anAddCodeToCartResponsebased on the provided cart, code, & whether or not the cart was repricedprotected AddItemRequestbuildAddItemRequest(com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem freeGiftItem) Builds anAddItemRequestfrom the givenFreeGiftItem.protected com.broadleafcommerce.order.common.domain.AdjustmentbuildAdjustment(com.broadleafcommerce.promotion.offer.client.web.context.info.Adjustment offerAdjustment) Builds anAdjustmentbased on the givenAdjustment.protected com.broadleafcommerce.order.common.domain.CampaignRefbuildCampaignRef(String code, String trackingId) Deprecated.Deprecated as of 1.8, if using OfferService 2.0, this method is not usedprotected com.broadleafcommerce.cart.client.domain.CartActionAuditbuildCartActionAuditForAccountCartUpdate(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String actionType, String userType) Builds aCartActionAuditfor cart modification if the givenCartwas modified by an account member.protected com.broadleafcommerce.cart.client.domain.CartActionAuditbuildCartActionAuditForApproverCartUpdate(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart) Builds aCartActionAuditfor cart modification if the givenCartwas modified by an account approver.protected com.broadleafcommerce.cart.client.domain.CartItembuildCartItem(@NonNull AddItemRequest addItemRequest, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, javax.money.CurrencyUnit currencyUnit, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Populates a new cart item from theAddItemRequest.buildCartItems(@NonNull Collection<AddItemRequest> addItemRequests, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, javax.money.CurrencyUnit currencyUnit, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Populates new cart items from theAddItemRequests.protected CatalogItemRequestbuildCatalogItemRequest(@NonNull AddItemRequest addItemRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to create theCatalogItemRequestand populate any additional attributes that should be passed to theCatalogProviderwhen fetching the catalog representation for adding the cart item.protected CatalogItemRequestbuildCatalogItemRequest(@NonNull UpdateItemRequest updateItemRequest, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to build theCatalogItemRequestand populate any additional attributes that should be passed to theCatalogProviderwhen fetching the catalog representation for updating the cart item.protected Collection<CatalogItemRequest>buildCatalogItemRequestsForAdd(@NonNull Collection<AddItemRequest> addItemRequests, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected Collection<CatalogItemRequest>buildCatalogItemRequestsForUpdate(@NonNull Collection<UpdateItemRequest> updateItemRequests, @NonNull Collection<com.broadleafcommerce.cart.client.domain.CartItem> cartItems, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected com.broadleafcommerce.cart.client.domain.CartItemprotected StringbuildGroupReferenceNumber(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart) Builds aFulfillmentGroup.getReferenceNumber()for a new group.protected StringbuildGroupReferenceNumber(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String fulfillmentGroupId) Builds aFulfillmentGroup.getReferenceNumber()for the given cart and group ID.buildItemAttributeChoices(@NonNull Map<String, String> requestItemAttributeChoices) protected com.broadleafcommerce.order.common.domain.OfferItemDetailbuildOfferItemDetails(com.broadleafcommerce.promotion.offer.client.web.context.info.OfferItemDetail offerItemDetail) Builds anOfferItemDetailfrom the givenOfferItemDetail.protected UpdateCartRequestbuildUpdateCartRequestWithCartActionAudit(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart) Builds anUpdateCartRequestwith aCartActionAuditif the given accountCartwas modified by an account approver.protected AddItemFailurebuildValidationFailure(@NonNull AddItemRequest addItemRequest, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Builds anAddItemFailurebased on the providedAddItemRequest&CartItemrepresenting an invalid add to cart requestbulkAddToCart(@NonNull Collection<AddItemRequest> addItemRequests, com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.order.common.domain.CustomerRef customerRef, boolean allowPriceCart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Add a list of items to the customer's current cart based on the provided untrusted information.protected javax.money.MonetaryAmountcalculateMerchandiseTotalAmountForFulfillmentItemUpdate(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem fulfillmentCartItem, @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentItem fulfillmentItem, int totalQuantity) Calculates theFulfillmentItem.getMerchandiseTotalAmount()for the cart item.protected booleancatalogItemRequestAlreadyExist(@NonNull Set<CatalogItemRequest> catalogItemRequests, @NonNull AddItemRequest addItemRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to prevent duplicateCatalogItemRequestsfrom being built based on theAddItemRequest.protected booleancatalogItemRequestAlreadyExist(@NonNull Set<CatalogItemRequest> catalogItemRequests, @NonNull UpdateItemRequest updateItemRequest, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to prevent duplicateCatalogItemRequestsfrom being built based on theCartItemandUpdateItemRequest.com.broadleafcommerce.cart.client.domain.CartcreateCart(@NonNull CartCreationRequest cartCreationRequest, com.broadleafcommerce.order.common.domain.CustomerRef customer, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected com.broadleafcommerce.cart.client.domain.CartAlertcreateCartAlert(String message) protected com.broadleafcommerce.cart.client.domain.CartItemcreateCartItem(@NonNull AddItemRequest addItemRequest, javax.money.CurrencyUnit currencyUnit) Creates aCartItembased on the providedAddItemRequestprotected com.broadleafcommerce.cart.client.domain.CartcreateEmptyCart(com.broadleafcommerce.order.common.domain.CustomerRef customer, javax.money.CurrencyUnit currencyUnit, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Creates and returns an empty, unsavedCartwith typical defaults.protected voidcreateFulfillmentGroupForItems(@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.CartcreateItemAndAddToCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull AddItemRequest addItemRequest, javax.money.CurrencyUnit currencyUnit, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Creates a new item and adds it to the providedCart.protected BulkAddToCartResponsecreateItemsAndAddToCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, Collection<AddItemRequest> addItemRequests, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Creates new items and adds them to the providedCart.protected voiddefaultCartCurrency(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, javax.money.CurrencyUnit currencyUnit) protected voiddefaultCartLocale(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected final booleandoesCartContainCampaignForCode(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String code) Deprecated.protected booleandoFulfillmentExclusionsPassForCOD(@NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) protected booleandoFulfillmentInclusionsPassForCOD(@NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) protected voiddoSoftInventoryReservationIfNecessary(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItems, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) If any of the supplied cart items have a reservation strategy of ADD_TO_CART, a soft reservation is performed.protected com.broadleafcommerce.resource.security.utils.service.AuthenticationUtilsprotected CartItemCatalogInformationService<? extends CatalogItem>protected CartItemConfigurationService<? extends CatalogItem>getCartItemIdsWithDependentItem(List<com.broadleafcommerce.cart.client.domain.CartItem> cartItems) protected CartItemMergingService<com.broadleafcommerce.cart.client.domain.CartItem>protected CartPricingServiceprotected StringgetCartTotalChangeMessage(javax.money.MonetaryAmount latestCartPrice) protected StringgetCatalogItemKeyForMissingEntities(AddItemRequest addItemRequest) Hook point to determine what the missing entities map is keyed on from theAddItemRequest.protected CheckoutPaymentMethodServiceprotected CheckoutPaymentMethodOptiongetCODCheckoutPaymentMethodOption(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected javax.money.CurrencyUnitgetCurrencyUnit(javax.money.CurrencySupplier currencySupplier, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Call utility method to determine currency.protected Supplier<com.broadleafcommerce.cart.client.domain.FulfillmentGroup>getFulfillmentGroupById(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String fulfillmentGroupId) Gets the fulfillment group by the provided ID.protected InventoryAvailabilityService<CatalogItem>protected StringgetMessage(@NonNull String errorMessage, Object... args) protected org.springframework.context.MessageSourceprotected CartOperationServiceOfferUtilsprotected PaymentProvider<PaymentSummary>protected com.broadleafcommerce.pricing.client.domain.context.PriceContextgetPriceContext(Locale locale, javax.money.CurrencyUnit currency) protected ObjectgetProductType(com.broadleafcommerce.cart.client.domain.CartItem cartItem) protected CartOperationServicePropertiesprotected CartOperationServiceProvidersprotected List<com.broadleafcommerce.order.common.domain.Adjustment>getRelatedAdjustments(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String code) protected com.broadleafcommerce.cart.client.domain.CartItemgetRequiredCartItem(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String cartItemId) Gets a cart item from the cart by its ID.protected com.broadleafcommerce.rulesengine.expression.service.SpelRuleEvaluationServiceprotected StaleCartItemsServiceprotected StaleCartPricingResultHolderprotected TaxServiceprotected com.broadleafcommerce.common.extension.TypeFactoryprotected booleanhandleCODStatusChange(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo, com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup) Handles when Collect on Delivery is selected or de-selected.protected booleanhandleDeSelectCODBeforeUpdate(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Handles when Collect on Delivery is selected or de-selected.protected booleanhandleSelectCODBeforeUpdate(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Handles when Collect on Delivery is selected.protected voidhandleSetDeselectedCODAttribute(@NonNull UpdateFulfillmentGroupRequest updateFulfillmentGroupRequest, @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fgToUpdate) Sets a temporary attribute on the fullfillment group if theCOD status attributehas gone from selected to not selected.protected booleanhasDeselectedCOD(com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup) protected List<AddItemRequest>identifyAddItemRequestsForCatalogItems(@NonNull Collection<AddItemRequest> addItemRequests, @NonNull CatalogItemList<? extends CatalogItem> catalogItemList) protected Optional<? extends CatalogItem>identifyCatalogItemForCartItem(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull CatalogItemList<? extends CatalogItem> catalogItemList) protected CatalogItemList<? extends CatalogItem>identifyCatalogItemsForAddItemRequests(@NonNull Collection<AddItemRequest> addItemRequests, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated, for removal: This API element is subject to removal in a future version.protected CatalogItemList<? extends CatalogItem>identifyCatalogItemsForAddItemRequests(@NonNull Collection<AddItemRequest> addItemRequests, com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected CatalogItemList<? extends CatalogItem>identifyCatalogItemsForUpdateItemRequest(@NonNull UpdateItemRequest updateItemRequest, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated, for removal: This API element is subject to removal in a future version.protected CatalogItemList<? extends CatalogItem>identifyCatalogItemsForUpdateItemRequest(@NonNull UpdateItemRequest updateItemRequest, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected voidinsertItems(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> itemsToAdd, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected voidinvalidateFulfillmentGroupOverride(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) protected booleanisCartItemCODFee(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) protected booleanisCartMaxTotalAllowedForCOD(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) protected booleanisCartMinTotalAllowedForCOD(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) protected booleanisItemElegibleForRemoval(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Hook point to prevent removal of cart items that should not be removed through the cart management endpoints.protected booleanisPaymentReallocationRequired(javax.money.MonetaryAmount previousCartTotal, javax.money.MonetaryAmount newCartTotal) protected booleanisUsingCollectOnDelivery(com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup) protected BulkAddToCartResponseInstantiates a newBulkAddToCartResponseusing theTypeFactory.protected com.broadleafcommerce.cart.client.domain.CartnewCart()Uses theTypeFactoryto create a newCartobject.protected CartCreationRequestprotected com.broadleafcommerce.cart.client.domain.CartPricingUses theTypeFactoryto create a newCartPricingobject.protected StringnewCartStatus(com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Determines what status should be used when creating new carts.protected booleanpopulateCartItemUpdates(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull UpdateItemRequest request) Takes the changes from theUpdateItemRequestand populates them onto theCartItem.protected booleanpopulateCartUpdatesFromUpdateItemRequest(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull UpdateItemRequest request) Takes the changes from theUpdateItemRequestand populates them onto theCart.protected com.broadleafcommerce.cart.client.domain.CartItempopulateFromRequest(@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.CartpriceCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, PriceCartRequest priceCartRequest, boolean saveCart, Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Prices cart, processes free gift offers, and saves cart with the providedPriceCartRequestifsaveCartis true.com.broadleafcommerce.cart.client.domain.CartpriceCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, PriceCartRequest priceCartRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Prices and saves the cart with the providedPriceCartRequest.com.broadleafcommerce.cart.client.domain.CartpriceCartWithCatalogPriceUpdates(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Reprice the cart, including applying the latest catalog-based prices for each of its itemsprotected List<com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem>processExistingFreeGiftItems(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> updatedCartItems, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates existing free gift items quantities and remove existing free gift items if necessary, and then return a list ofFreeGiftItemsto add to cart.protected voidprocessFreeGiftItemsForRemoval(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItemsBeingRemoved) Processes free gift items wheneverCartItemsare being removed.protected voidprocessFreeGiftOffers(com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Processes all free gift offers stored inCart.getInternalAttributes().protected voidreallocateCartTotalAmongstPayments(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull javax.money.MonetaryAmount newCartTotal, @NonNull Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) reallocateCartTotalAmongstPayments(@NonNull javax.money.MonetaryAmount newCartTotal, @NonNull List<PaymentSummary> paymentSummaries, @NonNull Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Reallocate the cart total among the cart's paymentsprotected List<PaymentSummary>reallocateCartTotalMultiplePayments(@NonNull javax.money.MonetaryAmount cartTotal, @NonNull List<PaymentSummary> paymentSummaries, Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to automatically reallocate the cart total amongst the cart's payments.com.broadleafcommerce.cart.client.domain.CartrecalculateTaxesForCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, boolean estimated, boolean actual, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated.com.broadleafcommerce.cart.client.domain.CartrecalculateTaxesForCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, boolean estimated, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Recalculates the taxes for the providedCart.protected voidremoveAssociatedFreeGiftItems(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.CartremoveAttributeFromCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String key, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Removes an attribute to the providedCart.com.broadleafcommerce.cart.client.domain.CartremoveCartItems(@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 voidremoveExistingFreeGiftItemsFromCart(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 giftCartItemsfrom cart.protected com.broadleafcommerce.cart.client.domain.CartremoveFulfillmentItemsWithoutCartItems(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart) com.broadleafcommerce.cart.client.domain.CartremoveItemFromCart(@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 providedCartmatching the provided cart item ID.protected voidremoveItemsFromFulfillmentGroup(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItems) com.broadleafcommerce.cart.client.domain.CartremoveManyItemsFromCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, Collection<String> cartItemIds, boolean price, boolean updateCart, Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Removes one or more items from the providedCartmatching the provided cart item IDs.com.broadleafcommerce.cart.client.domain.CartremoveOfferAndCampaignCodesFromCart(@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.CartremoveOfferCodeFromCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String offerCode, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Removes an offer code from the providedCart, if it exists.protected com.broadleafcommerce.cart.client.domain.CartremoveStaleCartItem(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 voidresetFulfillmentGroupReferenceNumbers(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart) protected StringresolveDefaultFulfillmentType(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Determines the defaultFulfillmentTypefor the providedCartItemprotected StringresolveTaxAddressSource(String fulfillmentType) Determines the tax address source that should be used forFulfillmentGroup.getTaxAddressSource()for the given fulfillment type.Optional<com.broadleafcommerce.cart.client.domain.Cart>retrieveCartByCartId(@NonNull String cartId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve the cart for the provided id.protected Optional<com.broadleafcommerce.cart.client.domain.Cart>retrieveCartByCartIdWithStatus(@NonNull String cartId, com.broadleafcommerce.cart.client.domain.enums.CartStatus status, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Optional<com.broadleafcommerce.cart.client.domain.Cart>retrieveCartByStatus(String customerId, String accountId, String status, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieves a customer or account cart with the provided customer ID, account ID, and status, if it exists.Optional<com.broadleafcommerce.cart.client.domain.Cart>retrieveCartByStatusAndName(String customerId, String status, String name, String accountId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieves a customer or account cart with the provided customer ID, account ID, and status, if it exists.Optional<com.broadleafcommerce.cart.client.domain.Cart>retrieveCsrCartByCartId(@NonNull String cartId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve the cart for the provided id, as long as it is CSR-owned.Optional<com.broadleafcommerce.cart.client.domain.Cart>retrieveCsrOwnedCartByCustomerIdAndApplicationId(@NonNull String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve the CSR-owned cart for the provided customer.Optional<com.broadleafcommerce.cart.client.domain.Cart>retrieveImplicitCart(String customerId, String accountId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Resolves the implicit cart for the given customer id and account id.Optional<com.broadleafcommerce.cart.client.domain.Cart>retrieveInProcessCartByCartId(@NonNull String cartId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve the cart for the provided id, as long as it is in-process.Optional<com.broadleafcommerce.cart.client.domain.Cart>retrieveInProcessCartByCustomerIdAndApplicationId(@NonNull String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve the in-process cart for the provided customer.org.springframework.data.domain.Page<com.broadleafcommerce.cart.client.domain.Cart>retrieveMyCarts(@NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer, cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Retrieves all of a customer's carts that have not been locked, archived, or submitted.Optional<com.broadleafcommerce.cart.client.domain.Cart>retrieveTestCartByCartId(@NonNull String cartId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Retrieve the cart for the provided id, as long as it is a test cart.protected com.broadleafcommerce.cart.client.domain.CartsaveCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Helper method to encapsulate saving an existing Cart.protected com.broadleafcommerce.cart.client.domain.CartsaveCart(@NonNull UpdateCartRequest updateCartRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Helper method to encapsulate saving an existing Cart.voidsetCheckoutPaymentMethodService(CheckoutPaymentMethodService checkoutPaymentMethodService) voidsetInventoryAvailabilityService(InventoryAvailabilityService<CatalogItem> inventoryAvailabilityService) voidsetOfferUtils(CartOperationServiceOfferUtils offerUtils) voidsetPaymentProvider(PaymentProvider<PaymentSummary> paymentProvider) voidsetSpelRuleEvaluationService(com.broadleafcommerce.rulesengine.expression.service.SpelRuleEvaluationService spelRuleEvaluationService) voidsetStaleCartItemsService(StaleCartItemsService staleCartItemsService) com.broadleafcommerce.cart.client.domain.CartupdateAsNamedCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull String name, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates the providedCartwith the given name.com.broadleafcommerce.cart.client.domain.CartupdateCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, boolean allowPriceCart, boolean wasCartModified, boolean invalidatePrices, Map<String, String> paymentLockTokens, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates the providedCartbased on the provided flags.protected com.broadleafcommerce.cart.client.domain.CartupdateCartAttributes(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull List<AddItemRequest> successfulAddItemRequests) Update cart attributes based on the successfulAddItemRequestscom.broadleafcommerce.cart.client.domain.CartupdateCartContactInfo(@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.CartupdateCartItem(@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.CartupdateCartStatus(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull UpdateCartStatusRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates thecart's status.com.broadleafcommerce.cart.client.domain.CartupdateContactInfoInCart(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull ContactInfoRequest contactInfoRequest, boolean price, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates the contact info for the providedCart.protected voidupdateExistingFreeGiftItem(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 giftCartItemwith the latest details from the givenFreeGiftItemand update itsAdjustment.com.broadleafcommerce.cart.client.domain.CartupdateFulfillmentGroup(@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.CartupdateFulfillmentGroupInCart(@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 existingFulfillmentGroupfor the providedCart.protected voidupdateFulfillmentItem(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Updates theFulfillmentItemcorresponding to theCartItem, keeping them in sync.com.broadleafcommerce.cart.client.domain.CartupdateItemInCart(@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 providedCartbased on the providedUpdateItemRequest.protected voidupdatesForBundleFulfillmentItems(com.broadleafcommerce.cart.client.domain.CartItem parentCartItem, com.broadleafcommerce.cart.client.domain.FulfillmentItem fulfillmentItem) protected voidvalidateCartItem(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull CatalogItemList<? extends CatalogItem> catalogItemList, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Validates that theCartItemincludes enough information to correctly represent the product or one of the product's variants.protected voidvalidateCartItemAfterUpdate(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull CatalogItemList<? extends CatalogItem> catalogItemList, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected voidvalidateCartItemBeforeUpdate(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull UpdateItemRequest updateItemRequest) Validates theCartItembeing updated againstUpdateItemRequestbefore the actual cart item update.protected voidvalidateCartStatusChangeRequest(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull UpdateCartStatusRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Takes aUpdateCartStatusRequestand validates that the targeted cart can have its status changed.protected voidvalidateCollectOnDeliverySelection(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Validates that Collect on Delivery is still applicable given the updated cart state.protected voidvalidateCollectOnDeliverySelection(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected voidvalidateFreeGiftItemForUpdate(@NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull UpdateItemRequest updateItemRequest) If the givenCartItemis a free gift item, validates that its quantity is not being changed.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.broadleafcommerce.cartoperation.service.CartOperationService
priceCart, priceCart, priceCart, priceCart, removeManyItemsFromCart, removeManyItemsFromCart, retrieveCustomerCartByStatus, updateCart
-
Field Details
-
IS_FEE_REFUNDABLE
- See Also:
-
COD_DESELECTED
- See Also:
-
SECURE_RANDOM
-
-
Constructor Details
-
DefaultCartOperationService
public DefaultCartOperationService(CartOperationServiceProviders providers, CartPricingService cartPricingService, CartItemConfigurationService<? extends CatalogItem> cartItemConfigurationService, CartItemCatalogInformationService<? extends CatalogItem> cartItemCatalogInformationService, com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils authenticationUtils, com.broadleafcommerce.common.extension.TypeFactory typeFactory, CartOperationServiceProperties properties, CartItemMergingService<com.broadleafcommerce.cart.client.domain.CartItem> cartItemMergingService, org.springframework.context.MessageSource messageSource, TaxService taxService, StaleCartPricingResultHolder staleCartPricingResultHolder)
-
-
Method Details
-
retrieveMyCarts
public org.springframework.data.domain.Page<com.broadleafcommerce.cart.client.domain.Cart> retrieveMyCarts(@NonNull @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Description copied from interface:CartOperationServiceRetrieves all of a customer's carts that have not been locked, archived, or submitted.- Specified by:
retrieveMyCartsin interfaceCartOperationService- Parameters:
customer- The customer who owns the cartsfilters- Additional RSQL filterspage- Pagination paramscontext- Additional sandbox and multitenant info- Returns:
- All of a customer's carts that have not been locked, archived, or submitted.
-
retrieveCartByCartId
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveCartByCartId(@NonNull @NonNull String cartId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceRetrieve the cart for the provided id.- Specified by:
retrieveCartByCartIdin interfaceCartOperationService- Parameters:
cartId- The id of the cart on which to perform the operation.contextInfo- Context information around sandbox and multitenant state.- Returns:
- The cart for the provided id.
-
retrieveCartByStatus
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveCartByStatus(String customerId, @Nullable String accountId, String status, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceRetrieves a customer or account cart with the provided customer ID, account ID, and status, if it exists. Customer cart will automatically be retrieved if the givenaccountIdis null.- Specified by:
retrieveCartByStatusin interfaceCartOperationService- Parameters:
customerId- the customer IDaccountId- the id of the account that theCartbelong to, null can be passed in to retrieve customerCartstatus- the statuscontextInfo- the context info- Returns:
- the cart, if it exists
-
retrieveCartByStatusAndName
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveCartByStatusAndName(String customerId, String status, @Nullable String name, @Nullable String accountId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceRetrieves a customer or account cart with the provided customer ID, account ID, and status, if it exists. Customer cart will automatically be retrieved if the givenaccountIdis null.- Specified by:
retrieveCartByStatusAndNamein interfaceCartOperationService- Parameters:
customerId- the customer IDstatus- the statusname- the name of the cart or null for a cart with no nameaccountId- the id of the account that theCartbelong to, null can be passed in to retrieve customerCartcontextInfo- the context info- Returns:
- the cart, if it exists
-
retrieveImplicitCart
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveImplicitCart(String customerId, @Nullable String accountId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceResolves the implicit cart for the given customer id and account id.Out of the box, a default/implicit cart means an
DefaultCartStatuses.IN_PROCESSwithnullname, and there should only be one default/implicit cart per user.- Specified by:
retrieveImplicitCartin interfaceCartOperationService- Parameters:
customerId- the customer IDaccountId- the id of the account that theCartbelong to, null can be passed in to retrieve customerCartcontextInfo- the context info- Returns:
- the registered customer's implicit cart
-
createCart
public com.broadleafcommerce.cart.client.domain.Cart createCart(@NonNull @NonNull CartCreationRequest cartCreationRequest, @Nullable com.broadleafcommerce.order.common.domain.CustomerRef customer, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceCreates a new, in-progressCartfor the providedCartCreationRequestandCustomerRef. TheCartCreationRequestmust containFor guest customers, this will create a new guest cart
- Specified by:
createCartin interfaceCartOperationService- Parameters:
cartCreationRequest- the cart creation requestcustomer- the customercontextInfo- the context info- Returns:
- the newly created cart
-
processFreeGiftOffers
protected void processFreeGiftOffers(com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Processes all free gift offers stored inCart.getInternalAttributes(). This will automatically add free gift cart items to cart, update existing free gift items, and remove existing free gift items, if necessary.- Parameters:
cart- theCartto process the free gift offers forcontextInfo- the contextInfo for the request
-
processExistingFreeGiftItems
protected List<com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem> processExistingFreeGiftItems(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> updatedCartItems, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates existing free gift items quantities and remove existing free gift items if necessary, and then return a list ofFreeGiftItemsto add to cart.- Parameters:
cart- theCartto process existing free gift items forupdatedCartItems- a list ofCartItemswhose quantities were updatedcontextInfo- the contextInfo for the request- Returns:
- a list of
FreeGiftItemsto 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 giftCartItemwith the latest details from the givenFreeGiftItemand update itsAdjustment.- Parameters:
existingFreeGiftItem- the existing free giftCartItemto update theFreeGiftItemdetails forfreeGift- theFreeGiftItemto update the existing free giftCartItemwithupdatedCartItems- a list ofCartItemswhose quantities were updated, used to ensure theFulfillmentItemsare updated as well
-
buildAdjustment
protected com.broadleafcommerce.order.common.domain.Adjustment buildAdjustment(com.broadleafcommerce.promotion.offer.client.web.context.info.Adjustment offerAdjustment) Builds anAdjustmentbased on the givenAdjustment.- Parameters:
offerAdjustment- theAdjustmentto build it from- Returns:
- an
Adjustmentbased on the givenAdjustment
-
buildOfferItemDetails
protected com.broadleafcommerce.order.common.domain.OfferItemDetail buildOfferItemDetails(com.broadleafcommerce.promotion.offer.client.web.context.info.OfferItemDetail offerItemDetail) Builds anOfferItemDetailfrom the givenOfferItemDetail.- Parameters:
offerItemDetail- theOfferItemDetailto build theOfferItemDetailfrom- Returns:
- an
OfferItemDetailfrom the givenOfferItemDetail
-
addFreeGiftItemsToCart
protected void addFreeGiftItemsToCart(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem> freeGiftItemsToAdd, List<com.broadleafcommerce.cart.client.domain.CartItem> updatedCartItems, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adds the list ofFreeGiftItemsto cart, and then adds the ids of those added free gift cart items to the qualifier cart items attributes.- Parameters:
cart- theCartto add theFreeGiftItemstofreeGiftItemsToAdd- a list ofFreeGiftItemsto addupdatedCartItems- a list ofCartItemswhose attributes were updated
-
removeExistingFreeGiftItemsFromCart
protected void removeExistingFreeGiftItemsFromCart(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> existingFreeGiftItemsToRemove, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Remove existing free giftCartItemsfrom cart.Before removing existing free gift
CartItems, this removes theCartItemAttributeConstants.Internal.IS_FREE_GIFT_ITEMattribute to ensure that the free gift offer is not added to the offer ignore list inaddRemovedFreeGiftOfferToIgnoreList(Cart, List).- Parameters:
cart- theCartto remove the existing free gift items fromexistingFreeGiftItemsToRemove- the existing free giftCartItemsto removecontextInfo- the contextInfo for the request- See Also:
-
buildAddItemRequest
protected AddItemRequest buildAddItemRequest(com.broadleafcommerce.promotion.offer.client.web.context.info.FreeGiftItem freeGiftItem) Builds anAddItemRequestfrom the givenFreeGiftItem.- Parameters:
freeGiftItem-FreeGiftItemto build theAddItemRequestfor- Returns:
- the
AddItemRequestfor the givenFreeGiftItem
-
updateCart
public com.broadleafcommerce.cart.client.domain.Cart updateCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, boolean allowPriceCart, boolean wasCartModified, boolean invalidatePrices, Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceUpdates the providedCartbased on the provided flags.
If the cart was not modified (wasCartModified), this will price and update the cart when the cart is not already priced (Cart.isPriced()), regardless ofinvalidatePrices. If the cart was not modified and the cart is already priced, this does nothing.
If the cart was modified, the cart will be priced if allowed (allowPriceCart) and if not already already priced or if prices should be invalidated.
Note: It is intentional that no overloaded methods are provided with default values for these parameters. Callers must consider carefully whether their operation modifies the cart or requires price invalidation.- Specified by:
updateCartin interfaceCartOperationService- Parameters:
cart- the cart to be updatedallowPriceCart- whether the cart may be pricedwasCartModified- whether the cart was actually modified by the callerinvalidatePrices- whether to invalidate prices on the cart if changes were madepaymentLockTokens- Tokens that grant this service access to act upon the payment. The presence of these tokens indicates that this execution flow owns the lock.- Returns:
- synced version of the cart with the cart service
-
buildUpdateCartRequestWithCartActionAudit
protected UpdateCartRequest buildUpdateCartRequestWithCartActionAudit(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart) Builds anUpdateCartRequestwith aCartActionAuditif the given accountCartwas modified by an account approver.- Parameters:
cart- theCartto update- Returns:
- an
UpdateCartRequestwith aCartActionAuditif the given accountCartwas modified by an account approver.
-
buildCartActionAuditForApproverCartUpdate
protected com.broadleafcommerce.cart.client.domain.CartActionAudit buildCartActionAuditForApproverCartUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart) Builds aCartActionAuditfor cart modification if the givenCartwas modified by an account approver.- Parameters:
cart- the accountCartthat was modified
-
buildCartActionAuditForAccountCartUpdate
protected com.broadleafcommerce.cart.client.domain.CartActionAudit buildCartActionAuditForAccountCartUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String actionType, String userType) Builds aCartActionAuditfor cart modification if the givenCartwas modified by an account member.- Parameters:
cart- the accountCartthat was modifiedactionType- Anaction typeuserType- Auser type
-
updateCartStatus
public com.broadleafcommerce.cart.client.domain.Cart updateCartStatus(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull UpdateCartStatusRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceUpdates thecart's status.- Specified by:
updateCartStatusin interfaceCartOperationService- Parameters:
cart- The cart to updaterequest- The status request with the status to update to, seeDefaultCartStatuses.contextInfo- Additional multitenant and sandbox info- Returns:
- The updated cart.
-
updateAsNamedCart
public com.broadleafcommerce.cart.client.domain.Cart updateAsNamedCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String name, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceUpdates the providedCartwith the given name. This method is often used when transferring or creating new carts for a registered customer who already has an implicit/default cart.Prior to 1.8.0, named carts are represented by the
DefaultCartStatuses.NAMED. After 1.8.0, named carts simply mean a cart with a name. Named carts are different from the implicit/default cart, implicit/default cart areDefaultCartStatuses.IN_PROCESSwithnullname, and there can be only one per user.- Specified by:
updateAsNamedCartin interfaceCartOperationService- Parameters:
cart- the cart to updatename- the name for the cartcontextInfo- the context info- Returns:
- the newly named cart
-
addItemToCart
public com.broadleafcommerce.cart.client.domain.Cart addItemToCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull AddItemRequest addItemRequest, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceAdds a single item to the providedCartbased on the providedAddItemRequest.- Specified by:
addItemToCartin interfaceCartOperationService- Parameters:
cart- the cartaddItemRequest- the request to add an itemprice- whether or not to re-price the cartcontextInfo- the context info- Returns:
- the cart with item added
-
updateItemInCart
public com.broadleafcommerce.cart.client.domain.Cart updateItemInCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull UpdateItemRequest updateItemRequest, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceUpdates a single item in the providedCartbased on the providedUpdateItemRequest.- Specified by:
updateItemInCartin interfaceCartOperationService- Parameters:
cart- the cartupdateItemRequest- the request to update an itemprice- whether or not to re-price the cartcontextInfo- the context info- Returns:
- the cart with item updated
-
identifyCatalogItemForCartItem
protected Optional<? extends CatalogItem> identifyCatalogItemForCartItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull CatalogItemList<? extends CatalogItem> catalogItemList) Attempts to identify theCartItem'srelatedCatalogItemfrom the providedCatalogItemList.By default, this identifies the catalog item by the product ID.
- Parameters:
cartItem- TheCartItemwhoseCatalogItemwe're attempting to find.catalogItemList- TheCatalogItemListthat we expect to contain theCartItem'sCatalogItem.- Returns:
- the
CartItem'srelatedCatalogItem.
-
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:CartOperationServiceRemoves a single item from the providedCartmatching the provided cart item ID.- Specified by:
removeItemFromCartin interfaceCartOperationService- Parameters:
cart- the cartcartItemId- the cart item IDprice- whether or not to re-price the cartcontextInfo- the context info- Returns:
- the cart without the provided item
-
addManyItemsToCart
public BulkAddToCartResponse addManyItemsToCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull Collection<AddItemRequest> addItemRequests, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceAdds one or more items to the providedCart.- Specified by:
addManyItemsToCartin interfaceCartOperationService- Parameters:
cart- the cartaddItemRequests- the add item requestsprice- whether or not to re-price the cartcontextInfo- the context info- Returns:
- a response with the cart and any item failures
-
removeManyItemsFromCart
public com.broadleafcommerce.cart.client.domain.Cart removeManyItemsFromCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, Collection<String> cartItemIds, boolean price, boolean updateCart, Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceRemoves one or more items from the providedCartmatching the provided cart item IDs.- Specified by:
removeManyItemsFromCartin interfaceCartOperationService- Parameters:
cart- the cartcartItemIds- the cart item IDsprice- whether or not to re-price the cartupdateCart- whether or not to updateCartpricing and save the cart after the removalpaymentLockTokens- Tokens that grant this service access to act upon the payment. The presence of these tokens indicates that this execution flow owns the lock.contextInfo- the context info- Returns:
- the cart without the provided item
-
isItemElegibleForRemoval
protected boolean isItemElegibleForRemoval(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Hook point to prevent removal of cart items that should not be removed through the cart management endpoints. By default, we prevent COD fees from being removed.- Parameters:
cartItem- the cart item to be removed- Returns:
- true, if the cart item can be removed
-
processFreeGiftItemsForRemoval
protected void processFreeGiftItemsForRemoval(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItemsBeingRemoved) Processes free gift items wheneverCartItemsare being removed.- Parameters:
cart- theCartthe items are being removed fromcartItemsBeingRemoved- the list ofCartItemsbeing removed from cart
-
addRemovedFreeGiftOfferToIgnoreList
protected void addRemovedFreeGiftOfferToIgnoreList(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItemsBeingRemoved) Adds the offer id toCart'signore list inCart.getInternalAttributes()whenever a free gift item is removed, so that the free gift item will not be added again.- Parameters:
cart- theCartto add the offer id ignore list tocartItemsBeingRemoved- the list ofCartItemsbeing removed from cart- See Also:
-
removeAssociatedFreeGiftItems
protected void removeAssociatedFreeGiftItems(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItemsBeingRemoved) Removes the associated free gift item if the offer qualifier item is removed.- Parameters:
cart- theCartto remove the free gift item fromcartItemsBeingRemoved- the list ofCartItemsbeing 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:CartOperationServiceAdds an offer code to the providedCart.- Determine if the code is valid as a campaign tracking code
- If so, add it to the cart as a
CampaignRef - Determine if the code is valid as a shared code
- If so, add it to the cart
- Specified by:
addOfferCodeToCartin interfaceCartOperationService- Parameters:
cart- the cartaddOfferCodeRequest- the add offer code requestprice- whether or not to re-price the cartcontextInfo- the context info- Returns:
- An AddCodeToCartResponse describing the results of adding the offer code to the cart
-
buildAddCodeToCartResponse
protected AddCodeToCartResponse buildAddCodeToCartResponse(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String code, boolean cartWasRepriced) Builds anAddCodeToCartResponsebased on the provided cart, code, & whether or not the cart was repriced- Parameters:
cart- The updatedCart, including the code and applicable adjustments (discounts).code- The offer code that was added to the cartcartWasRepriced- Whether or not the cart was repriced after the code was added- Returns:
- An AddCodeToCartResponse describing the results of adding the offer code to the cart
-
getRelatedAdjustments
-
removeOfferCodeFromCart
public com.broadleafcommerce.cart.client.domain.Cart removeOfferCodeFromCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String offerCode, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceRemoves an offer code from the providedCart, if it exists.- Determine if the code exists as a tracking code on the cart
- If so, remove the corresponding
CampaignRef - Determine if the offer code exists on the cart
- If so, remove it
- Specified by:
removeOfferCodeFromCartin interfaceCartOperationService- Parameters:
cart- cart cartofferCode- the offer code to removeprice- whether or not to re-price the cartcontextInfo- the context info- Returns:
- the cart without the offer code
-
removeOfferAndCampaignCodesFromCart
public com.broadleafcommerce.cart.client.domain.Cart removeOfferAndCampaignCodesFromCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, List<String> codes, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceRemoves the provided offer and campaign codes from the cart and then updates the cart.- Specified by:
removeOfferAndCampaignCodesFromCartin interfaceCartOperationService- Parameters:
cart- The id of the cart on which to perform the operation.codes- The codes to remove from the cart.allowPriceCart- Whether to allow the cart to be priced after updatingcontextInfo- Context information around sandbox and multitenant state.- Returns:
- The cart with the codes removed.
-
addAttributeToCart
public com.broadleafcommerce.cart.client.domain.Cart addAttributeToCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull AddAttributeRequest addAttributeRequest, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceAdds an attribute to the providedCart.- Specified by:
addAttributeToCartin interfaceCartOperationService- Parameters:
cart- the cartaddAttributeRequest- the add attribute requestprice- whether to allow the cart to be priced after updatingcontextInfo- the context info- Returns:
- the cart with the attribute added
-
removeAttributeFromCart
public com.broadleafcommerce.cart.client.domain.Cart removeAttributeFromCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String key, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceRemoves an attribute to the providedCart.- Specified by:
removeAttributeFromCartin interfaceCartOperationService- Parameters:
cart- the cartkey- the attribute keyprice- whether to allow the cart to be priced after updatingcontextInfo- the context info- Returns:
- the cart without the attribute
-
updateContactInfoInCart
public com.broadleafcommerce.cart.client.domain.Cart updateContactInfoInCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull ContactInfoRequest contactInfoRequest, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceUpdates the contact info for the providedCart.- Specified by:
updateContactInfoInCartin interfaceCartOperationService- Parameters:
cart- the cartcontactInfoRequest- the contact info requestprice- whether to allow the cart to be priced after updatingcontextInfo- the context info- Returns:
- the cart with contact info updated
-
updateFulfillmentGroupInCart
public com.broadleafcommerce.cart.client.domain.Cart updateFulfillmentGroupInCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String referenceNumber, @NonNull @NonNull UpdateFulfillmentGroupRequest updateFulfillmentGroupRequest, boolean price, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceUpdates an existingFulfillmentGroupfor the providedCart.- Specified by:
updateFulfillmentGroupInCartin interfaceCartOperationService- Parameters:
cart- the cartreferenceNumber- the reference number of the fulfillment group to updateupdateFulfillmentGroupRequest- the fulfillment group update requestprice- whether to allow the cart to be priced after updatingcontextInfo- the context info- Returns:
- the cart with an updated fulfillment group
-
priceCart
public com.broadleafcommerce.cart.client.domain.Cart priceCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable PriceCartRequest priceCartRequest, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServicePrices and saves the cart with the providedPriceCartRequest.- Specified by:
priceCartin interfaceCartOperationService- Parameters:
cart- the cartpriceCartRequest- the price cart requestcontextInfo- the context info- Returns:
- the priced cart
-
priceCart
public com.broadleafcommerce.cart.client.domain.Cart priceCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable PriceCartRequest priceCartRequest, boolean saveCart, Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServicePrices cart, processes free gift offers, and saves cart with the providedPriceCartRequestifsaveCartis true.- Specified by:
priceCartin interfaceCartOperationService- Parameters:
cart- the cartpriceCartRequest- the price cart requestsaveCart- determines whether to save cart after pricingpaymentLockTokens- Tokens that grant this service access to act upon the payment. The presence of these tokens indicates that this execution flow owns the lock.contextInfo- the context info- Returns:
- the priced cart
-
reallocateCartTotalAmongstPayments
public List<PaymentSummary> reallocateCartTotalAmongstPayments(@NonNull @NonNull javax.money.MonetaryAmount newCartTotal, @NonNull @NonNull List<PaymentSummary> paymentSummaries, @NonNull @NonNull Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceReallocate the cart total among the cart's payments- Specified by:
reallocateCartTotalAmongstPaymentsin interfaceCartOperationServicepaymentLockTokens- Tokens that grant this service access to act upon the payment. The presence of these tokens indicates that this execution flow owns the lock.contextInfo- the context info
-
isPaymentReallocationRequired
protected boolean isPaymentReallocationRequired(@Nullable javax.money.MonetaryAmount previousCartTotal, @Nullable javax.money.MonetaryAmount newCartTotal) -
reallocateCartTotalAmongstPayments
protected void reallocateCartTotalAmongstPayments(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull javax.money.MonetaryAmount newCartTotal, @NonNull @NonNull Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
allocateCartTotalToPayment
protected PaymentSummary allocateCartTotalToPayment(@NonNull @NonNull PaymentSummary paymentSummary, @NonNull @NonNull javax.money.MonetaryAmount cartTotal, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to automatically reallocate the cart total to the cart's single payment. Note: if a payment makes use of a single-use token and a successful transaction has already been executed, then the amount cannot be changed. In that case, the payment will need to be redefined.- Parameters:
paymentSummary- A summary of the cart's single paymentcartTotal- The total price of the cartcontextInfo- the contextInfo for the request
-
allocateCartTotalToPayment
protected PaymentSummary allocateCartTotalToPayment(@NonNull @NonNull PaymentSummary paymentSummary, @NonNull @NonNull javax.money.MonetaryAmount cartTotal, @Nullable String lockToken, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to automatically reallocate the cart total to the cart's single payment. Note: if a payment makes use of a single-use token and a successful transaction has already been executed, then the amount cannot be changed. In that case, the payment will need to be redefined.- Parameters:
paymentSummary- A summary of the cart's single paymentcartTotal- The total price of the cartlockToken- the token that owns the payment lockcontextInfo- the contextInfo for the request
-
reallocateCartTotalMultiplePayments
protected List<PaymentSummary> reallocateCartTotalMultiplePayments(@NonNull @NonNull javax.money.MonetaryAmount cartTotal, @NonNull @NonNull List<PaymentSummary> paymentSummaries, @Nullable Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to automatically reallocate the cart total amongst the cart's payments. Note: if a payment makes use of a single-use token and a successful transaction has already been executed, then the amount cannot be changed. In that case, the payment will need to be redefined.- Parameters:
paymentSummaries- Summaries of the cart's paymentscartTotal- The total price of the cartpaymentLockTokens- Tokens that grant this service access to act upon the payment. The presence of these tokens indicates that this execution flow owns the lock.contextInfo- the contextInfo for the request- Returns:
- an updated list of
PaymentSummaries
-
priceCartWithCatalogPriceUpdates
public com.broadleafcommerce.cart.client.domain.Cart priceCartWithCatalogPriceUpdates(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceReprice the cart, including applying the latest catalog-based prices for each of its items- Specified by:
priceCartWithCatalogPriceUpdatesin interfaceCartOperationService- Parameters:
cart- The cart on which to perform the operation.contextInfo- the context info- Returns:
- the priced cart
-
recalculateTaxesForCart
public com.broadleafcommerce.cart.client.domain.Cart recalculateTaxesForCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, boolean estimated, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceRecalculates the taxes for the providedCart.- Specified by:
recalculateTaxesForCartin interfaceCartOperationService- Parameters:
cart- the cartestimated- hint as to whether taxes should be estimatedcontextInfo- the context info- Returns:
- the cart with taxes updated
-
recalculateTaxesForCart
@Deprecated public com.broadleafcommerce.cart.client.domain.Cart recalculateTaxesForCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, boolean estimated, boolean actual, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated.Description copied from interface:CartOperationServiceRecalculates the taxes for the providedCart.- Specified by:
recalculateTaxesForCartin interfaceCartOperationService- Parameters:
cart- the cartestimated- whether to calculate estimated taxesactual- whether to calculate actual taxescontextInfo- the context info- Returns:
- the cart with taxes updated
- See Also:
-
getCurrencyUnit
protected javax.money.CurrencyUnit getCurrencyUnit(@Nullable javax.money.CurrencySupplier currencySupplier, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Call utility method to determine currency.- Parameters:
currencySupplier- An object implementing theCurrencySupplierinterfacecontextInfo- the context info to look for currency- Returns:
- the currency to be used for the request
-
saveCart
protected com.broadleafcommerce.cart.client.domain.Cart saveCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Helper method to encapsulate saving an existing Cart.- Parameters:
cart- the cartcontextInfo- the context info- Returns:
- the saved cart
-
saveCart
protected com.broadleafcommerce.cart.client.domain.Cart saveCart(@NonNull @NonNull UpdateCartRequest updateCartRequest, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Helper method to encapsulate saving an existing Cart.- Parameters:
updateCartRequest- theUpdateCartRequestcontextInfo- 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, unsavedCartwith typical defaults.- Parameters:
customer- the customercurrencyUnit- the currency for the cartcontextInfo- the context info- Returns:
- the new empty cart
-
defaultCartLocale
protected void defaultCartLocale(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
defaultCartCurrency
protected void defaultCartCurrency(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable javax.money.CurrencyUnit currencyUnit) -
newCart
protected com.broadleafcommerce.cart.client.domain.Cart newCart()Uses theTypeFactoryto create a newCartobject.- Returns:
- the new cart
-
newCartPricing
protected com.broadleafcommerce.cart.client.domain.CartPricing newCartPricing()Uses theTypeFactoryto create a newCartPricingobject.- Returns:
- the new cart pricing
-
newCartCreationRequest
-
newCartStatus
protected String newCartStatus(@Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Determines what status should be used when creating new carts.- Parameters:
contextInfo- the context info- Returns:
- the status to be used for a new cart
-
newBulkAddToCartResponse
Instantiates a newBulkAddToCartResponseusing theTypeFactory.- Returns:
- a new bulk add to cart response
-
createItemAndAddToCart
protected com.broadleafcommerce.cart.client.domain.Cart createItemAndAddToCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull AddItemRequest addItemRequest, @Nullable javax.money.CurrencyUnit currencyUnit, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Creates a new item and adds it to the providedCart.- Parameters:
cart- the cartaddItemRequest- the add item requestcurrencyUnit- the currency for the item(s)contextInfo- the context info
-
doSoftInventoryReservationIfNecessary
protected void doSoftInventoryReservationIfNecessary(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItems, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) If any of the supplied cart items have a reservation strategy of ADD_TO_CART, a soft reservation is performed.- Parameters:
cart- The cartcartItems- The cart items to check
-
createItemsAndAddToCart
protected BulkAddToCartResponse createItemsAndAddToCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, Collection<AddItemRequest> addItemRequests, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Creates new items and adds them to the providedCart.- Parameters:
cart- the cartaddItemRequests- the add item requestcontextInfo- the context info
-
identifyCatalogItemsForUpdateItemRequest
@Deprecated(forRemoval=true) protected CatalogItemList<? extends CatalogItem> identifyCatalogItemsForUpdateItemRequest(@NonNull @NonNull UpdateItemRequest updateItemRequest, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated, for removal: This API element is subject to removal in a future version. -
identifyCatalogItemsForUpdateItemRequest
protected CatalogItemList<? extends CatalogItem> identifyCatalogItemsForUpdateItemRequest(@NonNull @NonNull UpdateItemRequest updateItemRequest, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @Nullable com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
buildCatalogItemRequestsForUpdate
protected Collection<CatalogItemRequest> buildCatalogItemRequestsForUpdate(@NonNull @NonNull Collection<UpdateItemRequest> updateItemRequests, @NonNull @NonNull Collection<com.broadleafcommerce.cart.client.domain.CartItem> cartItems, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
catalogItemRequestAlreadyExist
protected boolean catalogItemRequestAlreadyExist(@NonNull @NonNull Set<CatalogItemRequest> catalogItemRequests, @NonNull @NonNull UpdateItemRequest updateItemRequest, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to prevent duplicateCatalogItemRequestsfrom being built based on theCartItemandUpdateItemRequest.By default, we filter on the product ID.
- Parameters:
catalogItemRequests- the list of requests to pass to theCatalogProviderupdateItemRequest- theUpdateItemRequestcontaining the details for the updatecartItem- theCartItemto build theCatalogItemRequestcontextInfo- context information around sandbox and multitenant state- Returns:
- true if building a new
CatalogItemRequestwould be a duplicate of an existing request incatalogItemRequests
-
buildCatalogItemRequest
protected CatalogItemRequest buildCatalogItemRequest(@NonNull @NonNull UpdateItemRequest updateItemRequest, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to build theCatalogItemRequestand populate any additional attributes that should be passed to theCatalogProviderwhen fetching the catalog representation for updating the cart item.- Parameters:
updateItemRequest- theUpdateItemRequestcontaining the details for the updatecartItem- theCartItembeing updatedcontextInfo- context information around sandbox and multitenant state- Returns:
- the populated
CatalogItemRequestfor theUpdateItemRequest
-
addUnassignedItemsToFulfillmentGroup
protected com.broadleafcommerce.cart.client.domain.Cart addUnassignedItemsToFulfillmentGroup(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart) IdentifyCartItemsthat have not been assigned to aFulfillmentGroup& add them to the relevant FulfillmentGroup.If the fulfillment type is
FulfillmentType.VIRTUAL,CartOperationServiceProperties.getDefaultVirtualFulfillmentOptionName()will be used to identify the default fulfillment option.- Parameters:
cart- The cart whose items may need to be assigned to a fulfillment group- Returns:
- The updated cart whose items are all assigned to fulfillment groups
-
updateCartAttributes
protected com.broadleafcommerce.cart.client.domain.Cart updateCartAttributes(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull List<AddItemRequest> successfulAddItemRequests) Update cart attributes based on the successfulAddItemRequests- Parameters:
cart- The cart that was added tosuccessfulAddItemRequests- List of AddItemRequests that were successfully processed- Returns:
- The updated cart
-
updateFulfillmentItem
protected void updateFulfillmentItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Updates theFulfillmentItemcorresponding to theCartItem, keeping them in sync.- Parameters:
cart-Cartto which the items belongcartItem-CartItemwith updates to be carried over to aFulfillmentItem
-
calculateMerchandiseTotalAmountForFulfillmentItemUpdate
protected javax.money.MonetaryAmount calculateMerchandiseTotalAmountForFulfillmentItemUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem fulfillmentCartItem, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentItem fulfillmentItem, int totalQuantity) Calculates theFulfillmentItem.getMerchandiseTotalAmount()for the cart item. ThetotalQuantitydivided by theitem.getQuantity()is used to calculate the total amount for the fulfillment item when we have a bundle product with a dependent item whose quantity is greater than one. Take for example the below scenario:- bundle item quantity = 3
- bundle price = $9.99
- dependent item price = $15
- dependent item quantity = 4
- Parameters:
cart-Cartto which the items belongfulfillmentCartItem- theCartItemwhich has been updatedfulfillmentItem- theFulfillmentItemwhich we are trying to pricetotalQuantity- the total quantity of the dependent item- Returns:
- the merchandise total for the
FulfillmentItem
-
addCampaignCodeIfExistsOnCart
@Deprecated protected boolean addCampaignCodeIfExistsOnCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String code, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated.Deprecated as of 1.8, if using OfferService 2.0, this method is not used -
addCampaignForCodeIfExists
@Deprecated protected boolean addCampaignForCodeIfExists(String code, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated.Deprecated as of 1.8, if using OfferService 2.0, this method is not usedAdds acodeto theCartif it belongs to a campaign.- Parameters:
code- Code to be added that might match a campaign.cart- Cart to add thecodeto.contextInfo- the context info- Returns:
- The
CampaignRef.getCampaignTrackingId()for the added campaign.
-
populateCartItemUpdates
protected boolean populateCartItemUpdates(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull UpdateItemRequest request) Takes the changes from theUpdateItemRequestand populates them onto theCartItem.- Parameters:
cartItem- TheCartItemto be updated with changes fromrequestrequest- TheUpdateItemRequestwith changes forcartItem- Returns:
- Whether
cartItemshould 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 theUpdateItemRequestand populates them onto theCart.- Parameters:
cart- TheCartto be updated with changes fromrequestrequest- TheUpdateItemRequestwith changes forcart- Returns:
- Whether
CartItemreferenced inrequestshould be revalidated after updates are populated.
-
validateCartItemBeforeUpdate
protected void validateCartItemBeforeUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull UpdateItemRequest updateItemRequest) Validates theCartItembeing updated againstUpdateItemRequestbefore the actual cart item update.By default, the
CartItembeing updated is only being validated against free gift requirements.- Parameters:
cartItem- theCartItembeing updatedupdateItemRequest- theUpdateItemRequestcontaining the details for the update
-
validateFreeGiftItemForUpdate
protected void validateFreeGiftItemForUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull UpdateItemRequest updateItemRequest) If the givenCartItemis 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- theCartItemto validateupdateItemRequest- theUpdateItemRequestcontaining the details for the update
-
validateCartItemAfterUpdate
protected void validateCartItemAfterUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull CatalogItemList<? extends CatalogItem> catalogItemList, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
invalidateFulfillmentGroupOverride
protected void invalidateFulfillmentGroupOverride(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) -
addOfferCodeIfUsable
protected boolean addOfferCodeIfUsable(String code, boolean isForCampaign, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Adds thecodetoCart.getOfferCodes()if it's usable.- Parameters:
code- The code to be addedcart- The cart to add thecodeto- Returns:
- Whether the code was added.
- Throws:
AddCodeException- if the code cannot be added for any reason. This is usually because the code is invalid or has already been used the maximum number of times. Note that if the code matched aCampaignRef, then no exception is thrown here even if the code is not usable for the purpose of adding anOfferRefbecause it was still usable in a general sense to add the campaign.AddCodeException.getReasonType()will typically match the code'sCodeUsabilityInfo.getCodeUsabilityType()and can be used on the frontend to determine messaging.
-
buildCampaignRef
@Deprecated protected com.broadleafcommerce.order.common.domain.CampaignRef buildCampaignRef(String code, String trackingId) Deprecated.Deprecated as of 1.8, if using OfferService 2.0, this method is not used -
doesCartContainCampaignForCode
@Deprecated protected final boolean doesCartContainCampaignForCode(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String code) Deprecated.Determines whether theCartcontains aCampaignRefthat matches thecode.- Parameters:
cart- Cart with campaigns to match againstcode- Code to match with- Returns:
- Whether the cart contains a campaign for the code
-
getMessage
-
getFulfillmentGroupById
protected Supplier<com.broadleafcommerce.cart.client.domain.FulfillmentGroup> getFulfillmentGroupById(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String fulfillmentGroupId) Gets the fulfillment group by the provided ID. By default this will be the owning Cart'sIDand the index of the group inCart.getFulfillmentGroups(). You can simply provide the index for the fulfillment group to perform the operation.Example: Cart has id "12345", so the first fulfillment group has id "12345-0". If you want to find the fulfillment group, you can provide "0" to this method along with the cart to get it.
- Parameters:
cart- The cart on which to find the fulfillment groupfulfillmentGroupId- The ID for the fulfillment group to find. Usually defaults to the index of the group inCart.getFulfillmentGroups().- Returns:
- The corresponding FulfillmentGroup for the given cart and relative number.
-
getRequiredCartItem
protected com.broadleafcommerce.cart.client.domain.CartItem getRequiredCartItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull String cartItemId) Gets a cart item from the cart by its ID. Throws an error if the item could not be found.- Parameters:
cart- the cart to search the items ofcartItemId- the item ID to look for- Returns:
- the item with the given cart ID
- Throws:
com.broadleafcommerce.data.tracking.core.exception.EntityMissingException- when no item with the ID exists in the cart
-
buildCartItem
protected com.broadleafcommerce.cart.client.domain.CartItem buildCartItem(@NonNull @NonNull AddItemRequest addItemRequest, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable javax.money.CurrencyUnit currencyUnit, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Populates a new cart item from theAddItemRequest. This will populate info from theCatalogProviderto ensure that all the important catalog info is present on the item and is correct. After that population, the cart item will be validated based on the product's included products and product options.- Parameters:
addItemRequest- Request from which to populate newCartItems.cart- The cart of the newCartItemscurrencyUnit- the currency for the cart item(s)- Returns:
- Populated
CartItems. - Throws:
CartItemValidationException- Thrown if the cart item is misconfigured based on the related product's included products and product options.
-
buildCartItems
protected DefaultCartOperationService.BulkCartItemCreationResponse buildCartItems(@NonNull @NonNull Collection<AddItemRequest> addItemRequests, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable javax.money.CurrencyUnit currencyUnit, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Populates new cart items from theAddItemRequests. This will populate info from theCatalogProviderto ensure that all the important catalog info is present on the item and is correct. After that population, the cart item will be validated based on the product's included products and product options.- Parameters:
addItemRequests- Request from which to populate newCartItems.cart- The cart of the newCartItemscurrencyUnit- the currency for the cart items- Returns:
- Populated
CartItems. - Throws:
CartItemValidationException- Thrown if the cart item is misconfigured based on the related product's included products and product options.
-
buildCatalogItemRequestsForAdd
protected Collection<CatalogItemRequest> buildCatalogItemRequestsForAdd(@NonNull @NonNull Collection<AddItemRequest> addItemRequests, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
catalogItemRequestAlreadyExist
protected boolean catalogItemRequestAlreadyExist(@NonNull @NonNull Set<CatalogItemRequest> catalogItemRequests, @NonNull @NonNull AddItemRequest addItemRequest, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to prevent duplicateCatalogItemRequestsfrom being built based on theAddItemRequest.By default, we filter on the product ID.
- Parameters:
catalogItemRequests- the list of requests to pass to theCatalogProvideraddItemRequest- theAddItemRequestcontaining the details for the new cart itemcontextInfo- context information around sandbox and multitenant state- Returns:
- true if building a new
CatalogItemRequestwould be a duplicate of an existing request incatalogItemRequests
-
buildCatalogItemRequest
protected CatalogItemRequest buildCatalogItemRequest(@NonNull @NonNull AddItemRequest addItemRequest, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to create theCatalogItemRequestand populate any additional attributes that should be passed to theCatalogProviderwhen fetching the catalog representation for adding the cart item.- Parameters:
addItemRequest- theAddItemRequestcontaining the details for the new cart itemcontextInfo- context information around sandbox and multitenant state- Returns:
- the populated
CatalogItemRequestfor theAddItemRequest
-
identifyCatalogItemsForAddItemRequests
@Deprecated(forRemoval=true) protected CatalogItemList<? extends CatalogItem> identifyCatalogItemsForAddItemRequests(@NonNull @NonNull Collection<AddItemRequest> addItemRequests, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated, for removal: This API element is subject to removal in a future version. -
identifyCatalogItemsForAddItemRequests
protected CatalogItemList<? extends CatalogItem> identifyCatalogItemsForAddItemRequests(@NonNull @NonNull Collection<AddItemRequest> addItemRequests, @Nullable com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
identifyAddItemRequestsForCatalogItems
protected List<AddItemRequest> identifyAddItemRequestsForCatalogItems(@NonNull @NonNull Collection<AddItemRequest> addItemRequests, @NonNull @NonNull CatalogItemList<? extends CatalogItem> catalogItemList) Attempts to identify theAddItemRequest'srelatedCatalogItemfrom the providedCatalogItemList.By default, this identifies the catalog item by the product ID.
- Parameters:
addItemRequests- The list ofAddItemRequestswhoseCatalogItemwe're attempting to find.catalogItemList- TheCatalogItemListthat we expect to contain theCartItem'sCatalogItem.- Returns:
- the
CartItem'srelatedCatalogItem.
-
createCartItem
protected com.broadleafcommerce.cart.client.domain.CartItem createCartItem(@NonNull @NonNull AddItemRequest addItemRequest, @Nullable javax.money.CurrencyUnit currencyUnit) Creates aCartItembased on the providedAddItemRequest- Parameters:
addItemRequest- the request which contains the info to build a cart itemcurrencyUnit- the currency for the cart item- Returns:
- the newly created cart item
-
populateFromRequest
protected com.broadleafcommerce.cart.client.domain.CartItem populateFromRequest(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull AddItemRequest addItemRequest, @Nullable javax.money.CurrencyUnit currencyUnit) Populates the cart item fields based on the request.- Parameters:
cartItem- the cart item to populateaddItemRequest- the request which contains the info to build a cart itemcurrencyUnit- the currency for the cart item- Returns:
- the populated cart item
-
getProductType
@Nullable protected Object getProductType(com.broadleafcommerce.cart.client.domain.CartItem cartItem) -
buildItemAttributeChoices
-
validateCartItem
protected void validateCartItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull CatalogItemList<? extends CatalogItem> catalogItemList, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Validates that theCartItemincludes enough information to correctly represent the product or one of the product's variants.- Parameters:
cartItem- TheCartItemthat is being validatedcart- TheCartItem'sowning cartcatalogItemList- TheCatalogItemListthat should contain theCartItem'srelatedCatalogItemcontextInfo- The contextInfo for the request
-
buildValidationFailure
protected AddItemFailure buildValidationFailure(@NonNull @NonNull AddItemRequest addItemRequest, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Builds anAddItemFailurebased on the providedAddItemRequest&CartItemrepresenting an invalid add to cart request- Parameters:
addItemRequest- The request that was used to build the CartItemcartItem- The cart item that holds the validation failures- Returns:
- an AddItemFailure based on the provided AddItemRequest & CartItem
-
getCatalogItemKeyForMissingEntities
Hook point to determine what the missing entities map is keyed on from theAddItemRequest.By default, this is set to the product ID.
- Parameters:
addItemRequest- the request which contains the info to build a cart item- Returns:
- the key for the catalog item missing entities map
-
createFulfillmentGroupForItems
protected void createFulfillmentGroupForItems(@NonNull @NonNull Collection<? extends com.broadleafcommerce.cart.client.domain.CartItem> cartItems, @NonNull @NonNull String fulfillmentType, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.cart.client.domain.CartItem parentCartItem) -
resolveTaxAddressSource
Determines the tax address source that should be used forFulfillmentGroup.getTaxAddressSource()for the given fulfillment type.- Parameters:
fulfillmentType- the fulfillment type from which to determine the tax address source- Returns:
- the tax address source that should be used
-
buildGroupReferenceNumber
protected String buildGroupReferenceNumber(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart) Builds aFulfillmentGroup.getReferenceNumber()for a new group.- Parameters:
cart- Cart that owns the group- Returns:
- The new reference number
-
buildGroupReferenceNumber
protected String buildGroupReferenceNumber(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String fulfillmentGroupId) Builds aFulfillmentGroup.getReferenceNumber()for the given cart and group ID.- Parameters:
cart- Cart that owns the groupfulfillmentGroupId- ID of the fulfillment group for which to build a reference number. Usually defaults to the index of the group inCart.getFulfillmentGroups().- Returns:
- The new reference number
-
addItemsToFulfillmentGroup
protected void addItemsToFulfillmentGroup(@NonNull @NonNull Collection<? extends com.broadleafcommerce.cart.client.domain.CartItem> cartItems, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull @NonNull javax.money.CurrencyUnit expectedCurrency, @Nullable com.broadleafcommerce.cart.client.domain.CartItem parentCartItem) -
updatesForBundleFulfillmentItems
protected void updatesForBundleFulfillmentItems(com.broadleafcommerce.cart.client.domain.CartItem parentCartItem, com.broadleafcommerce.cart.client.domain.FulfillmentItem fulfillmentItem) -
insertItems
protected void insertItems(com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> itemsToAdd, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
addItemToFulfillmentGroup
protected void addItemToFulfillmentGroup(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem, Set<String> assignedCartItemIds, @Nullable com.broadleafcommerce.cart.client.domain.CartItem parentCartItem) Assigns the cart item and its dependent cart items to the fulfillment group. If the fulfillment group doesn't exist it will be created. This method doesn't create the fulfillment item for theDefaultProductType.BUNDLEitems.- Parameters:
cart- the cart whose items may need to be assigned to a fulfillment groupcartItem- the cart item for which to create add the fulfillment itemassignedCartItemIds- the set of the cart item ids for which the fulfillment item is already existsparentCartItem- the parent cart item for the specified cart item. Usually, this is the item that has the dependent cart items
-
resolveDefaultFulfillmentType
@Nullable protected String resolveDefaultFulfillmentType(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) Determines the defaultFulfillmentTypefor the providedCartItem- Parameters:
cartItem- The cart item whose default fulfillment type must be determined- Returns:
- The default fulfillment type for the provided cart item
-
removeItemsFromFulfillmentGroup
protected void removeItemsFromFulfillmentGroup(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, List<com.broadleafcommerce.cart.client.domain.CartItem> cartItems) -
getCartItemIdsWithDependentItem
-
resetFulfillmentGroupReferenceNumbers
protected void resetFulfillmentGroupReferenceNumbers(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart) -
repriceCartIfPricingIsStale
protected Optional<com.broadleafcommerce.cart.client.domain.Cart> repriceCartIfPricingIsStale(Optional<com.broadleafcommerce.cart.client.domain.Cart> optionalCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Called during cart resolution to check if the catalog prices on the cart are stale, and if so, updates those prices and resets the time since they were last changed. Also sets the values for `staleCartPricingResultHolder` for checkout validation.- Parameters:
optionalCart- Cart to be checked and pricedcontextInfo- The contextInfo for the request- Returns:
-
getCartTotalChangeMessage
-
createCartAlert
-
retrieveInProcessCartByCustomerIdAndApplicationId
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveInProcessCartByCustomerIdAndApplicationId(@NonNull @NonNull String customerId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceRetrieve the in-process cart for the provided customer.- Specified by:
retrieveInProcessCartByCustomerIdAndApplicationIdin interfaceCartOperationService- Parameters:
customerId- The id of the customer for which to perform the operation.contextInfo- Context information around sandbox and multitenant state.- Returns:
- The in-process cart for the provided customer.
-
retrieveInProcessCartByCartId
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveInProcessCartByCartId(@NonNull @NonNull String cartId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceRetrieve the cart for the provided id, as long as it is in-process.- Specified by:
retrieveInProcessCartByCartIdin interfaceCartOperationService- Parameters:
cartId- The id of the cart on which to perform the operation.contextInfo- Context information around sandbox and multitenant state.- Returns:
- The in-process cart for the provided id.
-
retrieveCsrCartByCartId
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveCsrCartByCartId(@NonNull @NonNull String cartId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceRetrieve the cart for the provided id, as long as it is CSR-owned.- Specified by:
retrieveCsrCartByCartIdin interfaceCartOperationService- Parameters:
cartId- The id of the cart on which to perform the operation.contextInfo- Context information around sandbox and multitenant state.- Returns:
- The CSR-owned cart for the provided id.
-
retrieveTestCartByCartId
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveTestCartByCartId(@NonNull @NonNull String cartId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceRetrieve the cart for the provided id, as long as it is a test cart.- Specified by:
retrieveTestCartByCartIdin interfaceCartOperationService- Parameters:
cartId- The id of the cart on which to perform the operation.contextInfo- Context information around sandbox and multitenant state.- Returns:
- The test cart for the provided id.
-
retrieveCartByCartIdWithStatus
-
retrieveCsrOwnedCartByCustomerIdAndApplicationId
public Optional<com.broadleafcommerce.cart.client.domain.Cart> retrieveCsrOwnedCartByCustomerIdAndApplicationId(@NonNull @NonNull String customerId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceRetrieve the CSR-owned cart for the provided customer.- Specified by:
retrieveCsrOwnedCartByCustomerIdAndApplicationIdin interfaceCartOperationService- Parameters:
customerId- The id of the customer for which to perform the operation.contextInfo- Context information around sandbox and multitenant state.- Returns:
- The CSR-owned cart for the provided customer.
-
addToCart
public com.broadleafcommerce.cart.client.domain.Cart addToCart(@NonNull @NonNull AddItemRequest addItemRequest, @Nullable com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.order.common.domain.CustomerRef customerRef, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceAdd an item to the customer's current cart based on the provided untrusted information. By default, this includes the following steps:- Retrieve catalog information for the item
- Check inventory
- Create item and add it to the cart (un-priced)
- Price the item and cart, using offers and price lists (optional)
- Update the cart and it's items (optional)
- Specified by:
addToCartin interfaceCartOperationService- Parameters:
addItemRequest- Add an item to the customer's current cart based on the provided untrusted information.cart- The cart to be added to. If not provided, then a new cart will be produced.customerRef- The cart's owning customer. Can be null if anonymous.allowPriceCart- Whether to allow the cart to be priced after updatingcontextInfo- Context information around sandbox and multitenant state.- Returns:
- The cart with the item added.
-
bulkAddToCart
public BulkAddToCartResponse bulkAddToCart(@NonNull @NonNull Collection<AddItemRequest> addItemRequests, @Nullable com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.order.common.domain.CustomerRef customerRef, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceAdd a list of items to the customer's current cart based on the provided untrusted information. By default, this includes the following steps:- Retrieve catalog information for the items
- Check inventory
- Create item and add it to the cart (un-priced)
- Price the item and cart, using offers and price lists (optional)
- Update the cart and it's items (optional)
- Specified by:
bulkAddToCartin interfaceCartOperationService- Parameters:
addItemRequests- Add a list of items to the customer's current cart based on the provided untrusted information.cart- The id of the cart to be added to. If not provided, then a new cart will be produced.customerRef- The cart's owning customer. Can be null if anonymous.allowPriceCart- Whether the cart should be priced after updatingcontextInfo- Context information around sandbox and multitenant state.- Returns:
- The cart with the items added.
-
updateCartItem
public com.broadleafcommerce.cart.client.domain.Cart updateCartItem(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull UpdateItemRequest updateItemRequest, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceUpdate the cart item.- Specified by:
updateCartItemin interfaceCartOperationService- Parameters:
cart- The id of the cart on which to perform the operation.updateItemRequest- The cart item to use to update the details of the current cart item.allowPriceCart- Whether to allow the cart to be priced after updatingcontextInfo- Context information around sandbox and multitenant state.- Returns:
- The cart with the updated item.
-
removeCartItems
public com.broadleafcommerce.cart.client.domain.Cart removeCartItems(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, Collection<String> cartItemIds, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceRemove items from the cart.- Specified by:
removeCartItemsin interfaceCartOperationService- Parameters:
cart- The id of the cart on which to perform the operation.cartItemIds- The ids of the cart items on which to perform the operation.allowPriceCart- Whether to allow the cart to be priced after updatingcontextInfo- Context information around sandbox and multitenant state.- Returns:
- The cart with the item removed.
-
updateCartContactInfo
public com.broadleafcommerce.cart.client.domain.Cart updateCartContactInfo(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull ContactInfoRequest contactInfoRequest, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceUpdate contact information to allow business users to contact the customer if needed.- Specified by:
updateCartContactInfoin interfaceCartOperationService- Parameters:
cart- The cart that hold the contact info.contactInfoRequest- The contact info that is to be added to the cart.allowPriceCart- Whether to allow the cart to be priced after updatingcontextInfo- Context information around sandbox and multitenant state.- Returns:
- The cart with updated contact info.
-
addCodeToCart
public AddCodeToCartResponse addCodeToCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull AddCodeRequest codeRequest, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationService- Retrieve the cart
- Determine if the code is valid as a campaign tracking code
- If so, add it to the cart as a
CampaignRef - Determine if the code is valid as a shared code
- If so, add it to the cart
- Update the cart
- Price the cart, using offers and price lists (optional)
- Update the cart and its items (optional)
- Specified by:
addCodeToCartin interfaceCartOperationService- Parameters:
cart- The id of the cart on which to perform the operation.codeRequest- The payload of the request to add a code to the cart.allowPriceCart- Whether to allow the cart to be priced after updatingcontextInfo- Context information around sandbox and multitenant state.- Returns:
- An AddCodeToCartResponse describing the results of adding the offer code to the cart
-
updateFulfillmentGroup
public com.broadleafcommerce.cart.client.domain.Cart updateFulfillmentGroup(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, String fulfillmentGroupId, @NonNull @NonNull UpdateFulfillmentGroupRequest fulfillmentGroupRequest, boolean allowPriceCart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CartOperationServiceUpdate the fulfillment group.- Specified by:
updateFulfillmentGroupin interfaceCartOperationService- Parameters:
cart- The id of the cart on which to perform the operation.fulfillmentGroupId- The id of the fulfillment group on which to perform the operation.fulfillmentGroupRequest- The fulfillment group updates to be applied to the existing fulfillment group.allowPriceCart- Whether to allow the cart to be priced after updatingcontextInfo- Context information around sandbox and multitenant state.- Returns:
- The Cart for which the updated fulfillment group is a part.
-
validateCartStatusChangeRequest
protected void validateCartStatusChangeRequest(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull UpdateCartStatusRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Takes aUpdateCartStatusRequestand validates that the targeted cart can have its status changed. By default, the only valid statuses that can be changed areDefaultCartStatuses.IN_PROCESS,DefaultCartStatuses.REJECTED, andDefaultCartStatuses.REQUIRES_APPROVAL.- Parameters:
cart- The cart to be changedrequest- The request with the details of how to change the cart statuscontextInfo- Additional sandbox and multitenant info
-
isUsingCollectOnDelivery
protected boolean isUsingCollectOnDelivery(@Nullable com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup) -
hasDeselectedCOD
protected boolean hasDeselectedCOD(@Nullable com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup) -
handleCODStatusChange
protected boolean handleCODStatusChange(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo, @Nullable com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup) Handles when Collect on Delivery is selected or de-selected. This will validate updates as to the cart as well that may cause Collect on Delivery to become invalid based on the cart price, fulfillment option, etc. If COD was de-selected, this will archive COD payments and remove Fee cart items related to COD.- Parameters:
cart- Cart to be updatedpaymentLockTokens- Lock tokens to lock payment if needing to archive any when COD is de-selectedcontextInfo- Additional sandbox or multitenant infofulfillmentGroup- The fulfillment group marked as using COD- Returns:
- Whether one or more
CartItemswere added representing a COD fee if selected or whether such items were removed because COD was de-selected. - Throws:
CODPaymentMethodNotApplicableException- When COD is selected but the update to be performed on the cart would invalidate its usage. This allows the user to change be alerted and change their mind before losing COD.
-
handleDeSelectCODBeforeUpdate
protected boolean handleDeSelectCODBeforeUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @Nullable Map<String, String> paymentLockTokens, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Handles when Collect on Delivery is selected or de-selected. This will validate updates as to the cart as well that may cause Collect on Delivery to become invalid based on the cart price, fulfillment option, etc.- Parameters:
cart- Cart to be updatedfulfillmentGroup- The fulfillment group marked as using CODpaymentLockTokens- Lock tokens to lock payment if needing to archive any when COD is de-selectedcontextInfo- Additional sandbox or multitenant info- Returns:
- Whether one or more
CartItemsrepresenting a COD fee were removed.
-
handleSelectCODBeforeUpdate
protected boolean handleSelectCODBeforeUpdate(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Handles when Collect on Delivery is selected. This will validate updates as to the cart as well that may cause Collect on Delivery to become invalid based on the cart price, fulfillment option, etc.- Parameters:
cart- Cart to be updatedfulfillmentGroup- The fulfillment group marked as using CODcontextInfo- Additional sandbox or multitenant info- Returns:
- Whether a new
CartItemwas added representing a COD fee. - Throws:
CODPaymentMethodNotApplicableException- When COD is selected but the update to be performed on the cart would invalidate its usage. This allows the user to change be alerted and change their mind before losing COD.
-
getCODCheckoutPaymentMethodOption
protected CheckoutPaymentMethodOption getCODCheckoutPaymentMethodOption(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
validateCollectOnDeliverySelection
protected void validateCollectOnDeliverySelection(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
validateCollectOnDeliverySelection
protected void validateCollectOnDeliverySelection(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Validates that Collect on Delivery is still applicable given the updated cart state.- Parameters:
cart- Cart to be updatedfulfillmentGroup- Fulfillment group marked as using CODcodCheckoutPaymentMethodOption- CODCheckoutPaymentMethodOptioncontextInfo- Additional multitenant or sandbox info.- Throws:
CODPaymentMethodNotApplicableException- When COD is no longer valid for the requested updates to the cart.
-
doFulfillmentExclusionsPassForCOD
protected boolean doFulfillmentExclusionsPassForCOD(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) -
doFulfillmentInclusionsPassForCOD
protected boolean doFulfillmentInclusionsPassForCOD(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup, @NonNull @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) -
isCartMaxTotalAllowedForCOD
protected boolean isCartMaxTotalAllowedForCOD(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) -
isCartMinTotalAllowedForCOD
protected boolean isCartMinTotalAllowedForCOD(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull CheckoutPaymentMethodOption codCheckoutPaymentMethodOption) -
buildCODFeeCartItem
protected com.broadleafcommerce.cart.client.domain.CartItem buildCODFeeCartItem(CheckoutPaymentMethodOption.FeeDto fee) -
isCartItemCODFee
protected boolean isCartItemCODFee(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem) -
handleSetDeselectedCODAttribute
protected void handleSetDeselectedCODAttribute(@NonNull @NonNull UpdateFulfillmentGroupRequest updateFulfillmentGroupRequest, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.FulfillmentGroup fgToUpdate) Sets a temporary attribute on the fullfillment group if theCOD status attributehas gone from selected to not selected. This informs the update logic later on that related payments should be archived and fee cart items for COD should be removed.- Parameters:
updateFulfillmentGroupRequest- Request to update a fulfillment groupfgToUpdate- Fulfillment group to update
-
getPriceContext
@Nullable protected com.broadleafcommerce.pricing.client.domain.context.PriceContext getPriceContext(@Nullable Locale locale, @Nullable javax.money.CurrencyUnit currency) -
getProviders
-
getCartPricingService
-
getCartItemConfigurationService
-
getCartItemCatalogInformationService
protected CartItemCatalogInformationService<? extends CatalogItem> getCartItemCatalogInformationService() -
getAuthenticationUtils
protected com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils getAuthenticationUtils() -
getTypeFactory
protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory() -
getProperties
-
getCartItemMergingService
protected CartItemMergingService<com.broadleafcommerce.cart.client.domain.CartItem> getCartItemMergingService() -
getMessageSource
protected org.springframework.context.MessageSource getMessageSource() -
getTaxService
-
getStaleCartPricingResultHolder
-
getOfferUtils
-
setOfferUtils
-
getStaleCartItemsService
-
setStaleCartItemsService
-
getPaymentProvider
-
setPaymentProvider
-
getCheckoutPaymentMethodService
-
setCheckoutPaymentMethodService
@Autowired public void setCheckoutPaymentMethodService(CheckoutPaymentMethodService checkoutPaymentMethodService) -
getSpelRuleEvaluationService
protected com.broadleafcommerce.rulesengine.expression.service.SpelRuleEvaluationService getSpelRuleEvaluationService() -
setSpelRuleEvaluationService
@Autowired public void setSpelRuleEvaluationService(com.broadleafcommerce.rulesengine.expression.service.SpelRuleEvaluationService spelRuleEvaluationService) -
setInventoryAvailabilityService
@Autowired public void setInventoryAvailabilityService(InventoryAvailabilityService<CatalogItem> inventoryAvailabilityService) -
getInventoryAvailabilityService
-