Class AbstractPromotionAction
- java.lang.Object
-
- de.hybris.platform.util.BridgeAbstraction
-
- de.hybris.platform.jalo.Item
-
- de.hybris.platform.jalo.ExtensibleItem
-
- de.hybris.platform.jalo.c2l.LocalizableItem
-
- de.hybris.platform.jalo.GenericItem
-
- de.hybris.platform.promotions.jalo.GeneratedAbstractPromotionAction
-
- de.hybris.platform.promotions.jalo.AbstractPromotionAction
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Comparable
- Direct Known Subclasses:
GeneratedAbstractRuleBasedPromotionAction
,GeneratedPromotionNullAction
,GeneratedPromotionOrderAddFreeGiftAction
,GeneratedPromotionOrderAdjustTotalAction
,GeneratedPromotionOrderChangeDeliveryModeAction
,GeneratedPromotionOrderEntryAdjustAction
public abstract class AbstractPromotionAction extends GeneratedAbstractPromotionAction
AbstractPromotionAction. Base class for promotion actions. Actions represent the effect that an AbstractPromotion must take to apply its promotion. If a promotion has fired then it will return as part of the PromotionResult the actions that should be applied to create the promotional behaviour. Actions can be applied and undone. A promotion may require multiple actions to be applied and therefore the PromotionResult holds a collection of actions and applied them all. Different actions are implemented in subclasses.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class de.hybris.platform.jalo.GenericItem
GenericItem.GenericItemImpl
-
Nested classes/interfaces inherited from class de.hybris.platform.jalo.c2l.LocalizableItem
LocalizableItem.LocalizableItemImpl
-
Nested classes/interfaces inherited from class de.hybris.platform.jalo.ExtensibleItem
ExtensibleItem.ExtensibleItemImpl
-
Nested classes/interfaces inherited from class de.hybris.platform.jalo.Item
Item.AttributeFilter, Item.AttributeMode, Item.CachedGetter, Item.CachedSetter, Item.ItemAttributeMap, Item.ItemConstraint, Item.ItemImpl, Item.JaloCachedComputationException
-
-
Field Summary
-
Fields inherited from class de.hybris.platform.promotions.jalo.GeneratedAbstractPromotionAction
DEFAULT_INITIAL_ATTRIBUTES, GUID, MARKEDAPPLIED, PROMOTIONRESULT, PROMOTIONRESULTHANDLER
-
Fields inherited from class de.hybris.platform.jalo.c2l.LocalizableItem
LANGUAGE_FALLBACK_ENABLED
-
Fields inherited from class de.hybris.platform.jalo.Item
_CREATION_TIME_INTERNAL, _MODIFIED_TIME_INTERNAL, accessorLog, CREATION_TIME, DISABLE_ATTRIBUTE_CHECK, DISABLE_ITEMCHECK_BEFORE_REMOVABLE, EVEN, FEATURE_ACCESSMAP_QUALIFIER, HJMPTS, INITIAL_CREATION_FLAG, isJaloOnly, MODIFIED_TIME, NEGATIVE, NOT_FOUND, OWNER, PK, POSITIVE, SAVE_FROM_SERVICE_LAYER, staticTransientObjects, TYPE
-
Fields inherited from class de.hybris.platform.util.BridgeAbstraction
impl, tenant
-
-
Constructor Summary
Constructors Constructor Description AbstractPromotionAction()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
apply()
Apply the action to the order.abstract boolean
apply(SessionContext ctx)
Apply the action to the order.protected AbstractPromotionAction
deepClone(SessionContext ctx)
Deep clone this action instance.protected void
deepCloneAttributes(SessionContext ctx, java.util.Map values)
Called to deep clone attributes of this instance.java.lang.String
getGuid(SessionContext ctx)
Get the Unique Identifier assigned to this action.abstract double
getValue(SessionContext ctx)
Get the total value of this action.protected static void
insertFirstGlobalDiscountValue(SessionContext ctx, AbstractOrder order, DiscountValue discountValue)
Add a global DiscountValue to the Order at the first position in the list of discountsprotected static void
insertFirstOrderEntryDiscountValue(SessionContext ctx, AbstractOrderEntry orderEntry, DiscountValue discountValue)
Add a DiscountValue to the OrderEntry at the first position in the list of discountsboolean
isAppliedToOrder()
Test if this action is applied to the order.abstract boolean
isAppliedToOrder(SessionContext ctx)
Test if this action is applied to the order.boolean
undo()
Unapply the action from the order.abstract boolean
undo(SessionContext ctx)
Unapply the action from the order.-
Methods inherited from class de.hybris.platform.promotions.jalo.GeneratedAbstractPromotionAction
createItem, getDefaultAttributeModes, getGuid, getPromotionResult, getPromotionResult, isMarkedApplied, isMarkedApplied, isMarkedAppliedAsPrimitive, isMarkedAppliedAsPrimitive, setGuid, setGuid, setMarkedApplied, setMarkedApplied, setMarkedApplied, setMarkedApplied, setPromotionResult, setPromotionResult
-
Methods inherited from class de.hybris.platform.jalo.GenericItem
getImplementation, getInitialProperties, getNonInitialAttributes, getRelatedItems, setRelatedItems
-
Methods inherited from class de.hybris.platform.jalo.c2l.LocalizableItem
getAllLocalizedProperties, getAllLocalizedProperties, getAllLocalizedProperties, getAllLocalizedProperties, getAllValuesSessionContext, getLocalizedProperty, getLocalizedProperty, getLocalizedPropertyInternal, getLocalizedPropertyNames, getLocalizedPropertyNames, hasLanguage, isEmptyValue, isFallbackEnabled, removeLocalizedProperty, removeLocalizedProperty, setAllLocalizedProperties, setAllLocalizedProperties, setLocalizedProperty, setLocalizedProperty
-
Methods inherited from class de.hybris.platform.jalo.ExtensibleItem
createNonClassAccessor, getAllProperties, getAllProperties, getProperty, getProperty, getPropertyNames, getPropertyNames, removeProperty, removeProperty, setAllProperties, setAllProperties, setProperty, setProperty
-
Methods inherited from class de.hybris.platform.jalo.Item
addLinkedItems, addLinkedItems, addLinkedItems, addLinkedItems, addLinkedItems, addLinkedItems, addLinkedItems, addLinkedItems, addLinkedItems, addNegativePermission, addPermission, addPositivePermission, assureExtensionsLoaded, changeTypeAfterCreation, checkConstraint, checkItemPermission, checkMandatoryAttribute, checkMandatoryAttribute, checkPermission, checkPermission, checkRemovable, clearPermission, compareTo, ctx, doAfterRemove, doBeforeRemove, equals, getAccessorFor, getAllAttributes, getAllAttributes, getAllAttributes, getAllAttributes, getAllAttributesInternal, getAllLinkedItems, getAndCheckCacheBoundItem, getAttribute, getAttribute, getCacheBoundItem, getComposedType, getComposedTypePK, getCreationTime, getCurrentlyRemovingCount, getLinkedItems, getLinkedItems, getLinkedItems, getLinkedItems, getLinkedItems, getLinkedItems, getLinkedItems, getLinkedItemsCount, getLinkedItemsCount, getLinkedItemsCount, getModificationTime, getNegativePermissions, getOwner, getPermissionMap, getPermissions, getPersistenceVersion, getPK, getPositivePermissions, getRestrictedPrincipals, getSession, getSyncObject, getTenant, getTransientObject, getTransientObjectMap, hashCode, hasRegisteredClassAccessorFor, internal_registerClassAccessorFor, internal_registerNonClassAccessorFor, invalidateLocalCaches, isAlive, isCacheBound, isCurrentlyRemoving, isCurrentlyRemoving, isEmptyRelationValue, isInCreate, isInstanceOf, isItemCheckBeforeRemoveableDisabled, isMarkModifiedDisabled, isRelationLocalizationFallbackEnabled, newInstance, notifyExtensionsAfterItemCreation, notifyExtensionsBeforeItemCreation, notifyItemRemoval, notifyManagerAboutItemRemoval, readResolve, registerAccessFor, registerAccessFor, registerJaloInvalidationListeners, remove, remove, removeItemCollection, removeItemCollection, removeLinkedItems, removeLinkedItems, removeLinkedItems, removeLinkedItems, removeLinks, removePartOfItems, removePartOfItems, setAllAttributes, setAllAttributes, setAllAttributesInternal, setAllLinkedItems, setAllLinkedItems, setAllLinkedItems, setAllLinkedItems, setAttribute, setAttribute, setAttributeFromString, setAttributeFromString, setCacheBound, setComposedType, setCreationTime, setImplementation, setLinkedItems, setLinkedItems, setLinkedItems, setLinkedItems, setLinkedItems, setLinkedItems, setLinkedItems, setLinkedItems, setModificationTime, setNonInitialAttributes, setOwner, setPermissionsByMap, setTransientObject, setUseTA, toString, useTA, writeReplace
-
Methods inherited from class de.hybris.platform.util.BridgeAbstraction
setTenant
-
-
-
-
Method Detail
-
getGuid
public java.lang.String getGuid(SessionContext ctx)
Get the Unique Identifier assigned to this action.- Overrides:
getGuid
in classGeneratedAbstractPromotionAction
- Parameters:
ctx
- The hybris context- Returns:
- the unique identifier
-
apply
public final boolean apply()
Apply the action to the order. Do not callAbstractOrder.recalculate()
to update the totals as this disposes of all applied discounts and the promotions engine is unable to intercept the recalculate call to reinstate these.- Returns:
- true if discounts have been applied and calculateTotals needs to be called, false otherwise.
-
apply
public abstract boolean apply(SessionContext ctx)
Apply the action to the order. Do not callAbstractOrder.recalculate()
to update the totals as this disposes of all applied discounts and the promotions engine is unable to intercept the recalculate call to reinstate these.- Parameters:
ctx
- The hybris context- Returns:
- true if discounts have been applied and calculateTotals needs to be called, false otherwise.
-
undo
public final boolean undo()
Unapply the action from the order.- Returns:
- true if discounts have been removed and calculateTotals needs to be called, false otherwise.
-
undo
public abstract boolean undo(SessionContext ctx)
Unapply the action from the order.- Parameters:
ctx
- The hybris context- Returns:
- true if discounts have been removed and calculateTotals needs to be called, false otherwise.
-
isAppliedToOrder
public final boolean isAppliedToOrder()
Test if this action is applied to the order. This is different from isMarkedApplied as there are many ways of removing the effect of the action other than calling theundo()
method.- Returns:
- true if the action is applied, false otherwise.
-
isAppliedToOrder
public abstract boolean isAppliedToOrder(SessionContext ctx)
Test if this action is applied to the order.- Parameters:
ctx
- The hybris context- Returns:
- true if the action is applied, false otherwise.
-
getValue
public abstract double getValue(SessionContext ctx)
Get the total value of this action. For actions providing a discount this should be a positive value.- Parameters:
ctx
- The hybris context- Returns:
- The double value that is the value of this action
-
deepClone
protected AbstractPromotionAction deepClone(SessionContext ctx)
Deep clone this action instance.- Parameters:
ctx
- The hybris context- Returns:
- a clone of this instance
-
deepCloneAttributes
protected void deepCloneAttributes(SessionContext ctx, java.util.Map values)
Called to deep clone attributes of this instance. The values map contains all the attributes defined on this instance. The map will be used to initialse a new instance of the Action that is a clone of this instance. This method can remove, replace or add to the Map of attributes.- Parameters:
ctx
- The hybris contextvalues
- The map to write into
-
insertFirstGlobalDiscountValue
protected static void insertFirstGlobalDiscountValue(SessionContext ctx, AbstractOrder order, DiscountValue discountValue)
Add a global DiscountValue to the Order at the first position in the list of discounts- Parameters:
ctx
- The hybris contextorder
- The orderdiscountValue
- The discount to add
-
insertFirstOrderEntryDiscountValue
protected static void insertFirstOrderEntryDiscountValue(SessionContext ctx, AbstractOrderEntry orderEntry, DiscountValue discountValue)
Add a DiscountValue to the OrderEntry at the first position in the list of discounts- Parameters:
ctx
- The hybris contextorderEntry
- The orderdiscountValue
- The discount to add
-
-