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
ConstructorDescriptionQuoteQuoteRequestedStatusHandler
(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 boolean
canBeReadByUser
(@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 boolean
canBeTransitionedToByUser
(@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 boolean
canBeUpdatedByUser
(@NonNull CartStatusValidationRequest statusValidationRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) IfQuoteProperties.requiresSalesRepAssignment(ContextInfo)
is true, aDefaultQuoteStatuses.QUOTE_REQUESTED
quote should not be edited, must shift intoDefaultQuoteStatuses.ASSIGNED
first by the sales rep.protected String
getCartActionType
(ChangeCartStatusRequest cartStatusRequest) Hook point to determine the cart action type.protected String
Gets 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 ChangeCartStatusRequest
postProcessStatusChange
(@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, isConvertingToQuote
Methods 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:AbstractCartStatusChangeHandler
Gets the status to handle by this handler- Specified by:
getStatusToHandle
in 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:
getValidOriginatingStatuses
in 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:AbstractCartStatusChangeHandler
Determines 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.DRAFTING
status, only the cart owner can.- Overrides:
canBeReadByUser
in classAbstractCartStatusChangeHandler
- Parameters:
statusValidationRequest
- theChangeCartStatusRequest
to 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_REQUESTED
quote should not be edited, must shift intoDefaultQuoteStatuses.ASSIGNED
first by the sales rep. Otherwise, updatable by a sales rep with appropriate permissions- Overrides:
canBeUpdatedByUser
in classAbstractCartStatusChangeHandler
- Parameters:
statusValidationRequest
- theCartStatusValidationRequest
to 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:AbstractCartStatusChangeHandler
Determines 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.ASSIGNED
toDefaultQuoteStatuses.PUBLISHED
.- Overrides:
canBeTransitionedToByUser
in classAbstractCartStatusChangeHandler
- Parameters:
changeStatusRequest
- theChangeCartStatusRequest
to 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:AbstractCartStatusChangeHandler
Hook point to determine the cart action type.Returns
DefaultQuoteActionTypes.UNKNOWN
by default unless overridden.- Overrides:
getCartActionType
in classAbstractCartStatusChangeHandler
- Parameters:
cartStatusRequest
- the change cart status request- Returns:
DefaultQuoteActionTypes.UNKNOWN
by 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:
postProcessStatusChange
in classAbstractCartStatusChangeHandler
- Parameters:
changeStatusRequest
- theChangeCartStatusRequest
to facilitate the quote status changecontextInfo
- context information surrounding sandboxing and multitenant state- Returns:
- the change status request after performing any additional handling.
-