Class QuoteQuoteRequestedStatusHandler
- All Implemented Interfaces:
CartStatusHandler
Cart in or changing to the DefaultQuoteStatuses.QUOTE_REQUESTED status.-
Field Summary
Fields inherited from class com.broadleafcommerce.cartoperation.service.status.AbstractCartStatusChangeHandler
INACCESSIBLE_CART_STATUS, USER_AUTHENTICATION_FAILED -
Constructor Summary
ConstructorsConstructorDescriptionQuoteQuoteRequestedStatusHandler(com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils authenticationUtils, com.broadleafcommerce.common.extension.TypeFactory typeFactory, QuoteAuthUtils quoteAuthUtils, com.broadleafcommerce.cart.client.properties.QuoteProperties properties) -
Method Summary
Modifier and TypeMethodDescriptionprotected booleancanBeReadByUser(@NonNull CartStatusValidationRequest statusValidationRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Determines if the cart can be read by the currently authenticated user when the cart's current status isAbstractCartStatusChangeHandler.getStatusToHandle().protected booleancanBeTransitionedToByUser(@NonNull ChangeCartStatusRequest changeStatusRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Determines if the cart can be transitioned toAbstractCartStatusChangeHandler.getStatusToHandle()by the currently authenticated user.protected booleancanBeUpdatedByUser(@NonNull CartStatusValidationRequest statusValidationRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) IfQuoteProperties.requiresSalesRepAssignment(ContextInfo)is true, aDefaultQuoteStatuses.QUOTE_REQUESTEDquote should not be edited, must shift intoDefaultQuoteStatuses.ASSIGNEDfirst by the sales rep.protected StringgetCartActionType(ChangeCartStatusRequest cartStatusRequest) Hook point to determine the cart action type.protected StringGets the status to handle by this handlergetValidOriginatingStatuses(com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Assigned can go back to quote requested, essentially means the sales rep is un-assigned.protected ChangeCartStatusRequestpostProcessStatusChange(@NonNull ChangeCartStatusRequest changeStatusRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) By default, this erases the expiration date for this status.Methods inherited from class com.broadleafcommerce.cartoperation.service.status.quote.AbstractQuoteCartStatusHandler
addCartActionAuditUserInfo, canHandle, getProperties, getQuoteAuthUtils, isAssignedToThisQuote, isAssignedToThisQuote, isConvertingToQuoteMethods inherited from class com.broadleafcommerce.cartoperation.service.status.AbstractCartStatusChangeHandler
buildCartActionAuditToCreate, getAuthenticationUtils, getPolicyUtils, getTypeFactory, isCartOwner, isCartOwner, process, processStatusChange, setPolicyUtils, validateOriginatingStatus, validateStatusIsReadableByUser, validateStatusIsUpdatableByUser, validateStatusTransition, validateTransitionRules
-
Constructor Details
-
QuoteQuoteRequestedStatusHandler
public QuoteQuoteRequestedStatusHandler(com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils authenticationUtils, com.broadleafcommerce.common.extension.TypeFactory typeFactory, QuoteAuthUtils quoteAuthUtils, com.broadleafcommerce.cart.client.properties.QuoteProperties properties)
-
-
Method Details
-
getStatusToHandle
Description copied from class:AbstractCartStatusChangeHandlerGets the status to handle by this handler- Specified by:
getStatusToHandlein classAbstractCartStatusChangeHandler- Returns:
- the status to handle by this handler
-
getValidOriginatingStatuses
protected Set<String> getValidOriginatingStatuses(@Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Assigned can go back to quote requested, essentially means the sales rep is un-assigned.Published can also transition to quote requested for scenarios such as when a buyer sees the quote response from the seller and is not satisfied with the pricing, and negotiate further by requesting quote again with a comment. For example, seller responds to a quote with $5 each, buyer is dissatisfied and request quote again with comment "another seller is offering $4.5 each, can you price match?". Seller can then see the comment and decide to price match, and adjust price and publish again.
Another use case for a quote to go from published to quote requested is for the seller to recall a published quote.
- Specified by:
getValidOriginatingStatusesin classAbstractCartStatusChangeHandler- Parameters:
contextInfo- the contextInfo for the request- Returns:
- a set of valid originating statuses that can transition to the
AbstractCartStatusChangeHandler.getStatusToHandle()
-
canBeReadByUser
protected boolean canBeReadByUser(@NonNull @NonNull CartStatusValidationRequest statusValidationRequest, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from class:AbstractCartStatusChangeHandlerDetermines if the cart can be read by the currently authenticated user when the cart's current status isAbstractCartStatusChangeHandler.getStatusToHandle().This is helpful to restrict certain user types to read a cart in certain statuses.
For example, in a B2B quote context, a sales rep should not be able to read quotes in the
DefaultQuoteStatuses.DRAFTINGstatus, only the cart owner can.- Overrides:
canBeReadByUserin classAbstractCartStatusChangeHandler- Parameters:
statusValidationRequest- theChangeCartStatusRequestto facilitate the cart status changecontextInfo- context information surrounding sandboxing and multitenant state- Returns:
- true if it is readable by the user, otherwise false
-
canBeUpdatedByUser
protected boolean canBeUpdatedByUser(@NonNull @NonNull CartStatusValidationRequest statusValidationRequest, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) IfQuoteProperties.requiresSalesRepAssignment(ContextInfo)is true, aDefaultQuoteStatuses.QUOTE_REQUESTEDquote should not be edited, must shift intoDefaultQuoteStatuses.ASSIGNEDfirst by the sales rep. Otherwise, updatable by a sales rep with appropriate permissions- Overrides:
canBeUpdatedByUserin classAbstractCartStatusChangeHandler- Parameters:
statusValidationRequest- theCartStatusValidationRequestto facilitate the cart status validationcontextInfo- context information surrounding sandboxing and multitenant state- Returns:
- true if it is updatable by the user, otherwise false
-
canBeTransitionedToByUser
protected boolean canBeTransitionedToByUser(@NonNull @NonNull ChangeCartStatusRequest changeStatusRequest, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from class:AbstractCartStatusChangeHandlerDetermines if the cart can be transitioned toAbstractCartStatusChangeHandler.getStatusToHandle()by the currently authenticated user.This is helpful to restrict certain user types to update a cart in certain statuses.
For example, in a B2B quote context, only the sales rep can transition a quote from
DefaultQuoteStatuses.ASSIGNEDtoDefaultQuoteStatuses.PUBLISHED.- Overrides:
canBeTransitionedToByUserin classAbstractCartStatusChangeHandler- Parameters:
changeStatusRequest- theChangeCartStatusRequestto facilitate the cart status changecontextInfo- context information surrounding sandboxing and multitenant state- Returns:
- true if it can be transitioned to the status by the user, otherwise false
-
getCartActionType
Description copied from class:AbstractCartStatusChangeHandlerHook point to determine the cart action type.Returns
DefaultQuoteActionTypes.UNKNOWNby default unless overridden.- Overrides:
getCartActionTypein classAbstractCartStatusChangeHandler- Parameters:
cartStatusRequest- the change cart status request- Returns:
DefaultQuoteActionTypes.UNKNOWNby default unless overridden.
-
postProcessStatusChange
protected ChangeCartStatusRequest postProcessStatusChange(@NonNull @NonNull ChangeCartStatusRequest changeStatusRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) By default, this erases the expiration date for this status. This also serves as a hook point for customization.- Overrides:
postProcessStatusChangein classAbstractCartStatusChangeHandler- Parameters:
changeStatusRequest- theChangeCartStatusRequestto facilitate the quote status changecontextInfo- context information surrounding sandboxing and multitenant state- Returns:
- the change status request after performing any additional handling.
-