There are several hook points throughout the quote flow that supports easy customization for more personalized flow.
AbstractQuoteCartStatusHandler
If introducing a new quote status, a new implementation this handler should also be created
AbstractCartStatusChangeHandler#canBeReadByUser
Useful for adding custom rules on when a quote can be read
AbstractCartStatusChangeHandler#canBeUpdatedByUser
Useful for adding custom rules on when a quote can be updated
AbstractCartStatusChangeHandler#getValidOriginatingStatuses
Useful for adding custom originating statuses
AbstractCartStatusChangeHandler#validateTransitionRules
Useful for adding custom transition rules
AbstractCartStatusChangeHandler#postProcessStatusChange
Useful for adding custom post-processing changes or actions for the quote
DefaultCartOperationService#populateCartItemFromNonCatalogItemRequest
Useful for populating the CartItem
based on the NonCatalogItemDetails
that was passed through the AddItemRequest
DefaultCartOperationService#addCustomQuoteItemToFulfillmentGroup
Useful for handling custom quote items in regards to FulfillmentGroups
By default, custom quote items are not added to any FulfillmentGroup
DefaultCartOperationService#resolveDefaultFulfillmentType
Useful for determining the default fulfillment type for custom quote items in case they are added to FulfillmentGroups
By default, TO_BE_DETERMINED
is returned for custom quote items
DefaultCartOperationService#validateItemsRemovalForCustomQuoteItems
Useful for validating whether the CartItems
removal is valid based on the state of the custom quote items in the cart
By default, custom quote items cannot exist in the quote without any STANDARD
items, which can be configured at Custom Quote Items Configurations