Package de.hybris.platform.voucher.jalo
Class Voucher
java.lang.Object
- All Implemented Interfaces:
Serializable,Comparable
- Direct Known Subclasses:
GeneratedPromotionVoucher,GeneratedSerialVoucher
The vouchers are redeemed on the total value of an order.
The calculation of the discount is done on the total value of the applicable product's prices,
inclusive of VAT.
Non-applicable products in the order are not subject to the discount rules.
To discover to which products in the order the voucher is applicable one could assign
various restrictions to the voucher.
- See Also:
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class de.hybris.platform.jalo.GenericItem
GenericItem.GenericItemImplNested classes/interfaces inherited from class de.hybris.platform.jalo.c2l.LocalizableItem
LocalizableItem.LocalizableItemImplNested classes/interfaces inherited from class de.hybris.platform.jalo.ExtensibleItem
ExtensibleItem.ExtensibleItemImplNested 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
FieldsModifier and TypeFieldDescriptionprotected static final intprotected static final Stringprotected static final intFields inherited from class de.hybris.platform.voucher.jalo.GeneratedVoucher
DEFAULT_INITIAL_ATTRIBUTES, DESCRIPTION, FREESHIPPING, INVALIDATIONS, INVALIDATIONSHANDLER, RESTRICTIONS, RESTRICTIONSHANDLER, VALUESTRINGFields inherited from class de.hybris.platform.jalo.order.price.Discount
EXTERNAL_KEY, GLOBAL, VALUE_END, VALUE_STARTFields inherited from class de.hybris.platform.jalo.order.price.GeneratedDiscount
ABSOLUTE, CODE, CURRENCY, DISCOUNTSTRING, NAME, ORDERDISCOUNTRELATION_MARKMODIFIED, ORDERDISCOUNTRELATION_SRC_ORDERED, ORDERDISCOUNTRELATION_TGT_ORDERED, ORDERS, PRIORITY, VALUEFields inherited from class de.hybris.platform.jalo.c2l.LocalizableItem
LANGUAGE_FALLBACK_ENABLEDFields 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, TYPEFields inherited from class de.hybris.platform.util.BridgeAbstraction
impl, tenant -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract booleancheckVoucherCode(String aVoucherCode) Returns true if the specified voucher code is valid for this voucher.protected voidcreateAndStoreKey(SessionContext ctx, Discount item) protected ItemcreateItem(SessionContext ctx, ComposedType type, Item.ItemAttributeMap allAttributes) Has to be implemented for each concrete subtype of item.createVoucherInvalidation(String aVoucherCode, Order anOrder) getApplicableEntries(AbstractOrder anOrder) Returns all positions or parts of positions of the specified abstract order that are eligible for this voucher.protected VoucherValuegetApplicableValue(AbstractOrder anOrder) Returns a VoucherValue object representing the partial value of the total of the specified abstract order that is eligible for this voucher.getAppliedValue(AbstractOrder anOrder) Returns a VoucherValue object representing the discount value of this voucher.protected ComposedTypegetComposedType(Class aClass) getDiscountValue(AbstractOrder anOrder) Calculates avaluewhich should be applied to the given order during (re)calculation.protected VoucherInvalidationgetInvalidation(String aVoucherCode, Order anOrder) Returns a voucher invalidation object if the specified voucher code was used in the specified order or null else.protected Collection<VoucherInvalidation>getInvalidations(String aVoucherCode) Returns all voucher invalidations representing the usage of the specified voucher code.protected Collection<VoucherInvalidation>getInvalidations(String aVoucherCode, User anUser) Returns all voucher invalidations representing the usage of the specified voucher code by the specified user.protected abstract intConvenience method.getViolatedRestrictions(AbstractOrder anOrder) Returns all restrictions that are not fulfilled by the specified abstract order.getViolatedRestrictions(Product aProduct) Returns all restrictions that are not fulfilled by the specified product.getViolationMessages(AbstractOrder anOrder) getViolationMessages(Product aProduct) protected intgetVoucherNumber(String voucherCode) getVoucherValue(AbstractOrder anOrder) protected static StringinsertDividers(String voucherCode) booleanisApplicable(AbstractOrder anOrder) Returns true if the specified abstract order is eligible for this voucher.booleanisApplicable(Product aProduct) Returns true if the specified product is eligible for this voucher.booleanisReservable(String aVoucherCode, AbstractOrder abstractOrder) abstract booleanisReservable(String aVoucherCode, User user) booleanvoidvoidvoidremove(SessionContext ctx) Removes this item.protected static StringremoveDividers(String voucherCode) protected voidUpon voucher removal this method deletes allVoucherInvalidationitems which belong to this voucher.protected StringthreeByteSig(String sigText) Methods inherited from class de.hybris.platform.voucher.jalo.GeneratedVoucher
addToInvalidations, addToInvalidations, addToRestrictions, addToRestrictions, getAllDescription, getAllDescription, getDefaultAttributeModes, getDescription, getDescription, getInvalidations, getInvalidations, getRestrictions, getRestrictions, getValueString, isFreeShipping, isFreeShipping, isFreeShippingAsPrimitive, isFreeShippingAsPrimitive, removeFromInvalidations, removeFromInvalidations, removeFromRestrictions, removeFromRestrictions, setAllDescription, setAllDescription, setDescription, setDescription, setFreeShipping, setFreeShipping, setFreeShipping, setFreeShipping, setInvalidations, setInvalidations, setRestrictions, setRestrictionsMethods inherited from class de.hybris.platform.jalo.order.price.Discount
addOrder, getAllNames, getDiscountstring, getDiscountString, getPriority, getValue, isAbsolute, notifyOrderCalculated, notifyOrderRemoval, removeOrder, setAllNames, setCodeMethods inherited from class de.hybris.platform.jalo.order.price.GeneratedDiscount
addToOrders, addToOrders, getAllName, getAllName, getCode, getCode, getCurrency, getCurrency, getDiscountString, getName, getName, getOrders, getOrders, getOrdersCount, getOrdersCount, getPriority, getPriorityAsPrimitive, getPriorityAsPrimitive, getValue, getValueAsPrimitive, getValueAsPrimitive, isAbsolute, isAbsoluteAsPrimitive, isAbsoluteAsPrimitive, isGlobal, isGlobal, isGlobalAsPrimitive, isGlobalAsPrimitive, isMarkModifiedDisabled, removeFromOrders, removeFromOrders, setAllName, setAllName, setCode, setCurrency, setCurrency, setGlobal, setGlobal, setGlobal, setGlobal, setName, setName, setOrders, setOrders, setPriority, setPriority, setPriority, setPriority, setValue, setValue, setValue, setValueMethods inherited from class de.hybris.platform.jalo.GenericItem
getImplementation, getInitialProperties, getNonInitialAttributes, getRelatedItems, getRelatedItems, setRelatedItemsMethods 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, setLocalizedPropertyMethods inherited from class de.hybris.platform.jalo.ExtensibleItem
createNonClassAccessor, getAllProperties, getAllProperties, getProperty, getProperty, getPropertyNames, getPropertyNames, removeProperty, removeProperty, setAllProperties, setAllProperties, setProperty, setPropertyMethods 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, getPartOfRemovedSessionMarker, 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, isRelationLocalizationFallbackEnabled, newInstance, notifyExtensionsAfterItemCreation, notifyExtensionsBeforeItemCreation, notifyItemRemoval, notifyManagerAboutItemRemoval, readResolve, registerAccessFor, registerAccessFor, registerJaloInvalidationListeners, 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, suppressRelation, toString, useTA, writeReplaceMethods inherited from class de.hybris.platform.util.BridgeAbstraction
setTenant
-
Field Details
-
CODELENGTH
protected static final int CODELENGTH- See Also:
-
LENGTH_CODE
protected static final int LENGTH_CODE- See Also:
-
DIVIDER
- See Also:
-
-
Constructor Details
-
Voucher
public Voucher()
-
-
Method Details
-
createItem
protected Item createItem(SessionContext ctx, ComposedType type, Item.ItemAttributeMap allAttributes) throws JaloBusinessException Description copied from class:ItemHas to be implemented for each concrete subtype of item. This method is responsible for creating a new item instance ( by calling managers, ejb homes, etc. ) duringComposedType.newInstance(Map).In case this method uses any of the attribute values during creation it is required to override
Item.getNonInitialAttributes(SessionContext, ItemAttributeMap)too.
Sn example:public static final String MY_ATTRIBUTE = "someAttribute"; ... protected Item createItem(SessionContext ctx, ComposedType type, Map allAttributes ) throws JaloBusinessException { MyManager man = ... return man.createMyItem( (String)allAttributes.get(MY_ATTRIBUTE) ); // here MY_ATTRIBUTE is used for creation, so it must not be set again } protected Map getNonInitialAttributes( SessionContext ctx, Map allAttributes ) { // let superclass remove its own initial attributes Map ret = super.getNonInitialAttributes( ctx, allAttributes ); // remove MY_ATTRIBUTE from all attributes since if has already been set ret.remove(MY_ATTRIBUTE); return ret; }- Overrides:
createItemin classDiscount- Parameters:
ctx- the current session context which this item is created withintype- the actual item type ( since subtypes may not provide a own jalo class this may be different from the type which this method was implemented for )- Returns:
- the new item instance
- Throws:
JaloBusinessException- indicates an error during creation - any changes will be rollbacked
-
remove
Description copied from class:ItemRemoves this item.This method is using the following attributes of the given SessionContext:
CacheUsage Language StagingMethod n/a (this is a setter method) no, language doesn't matter for removal yes if called on a StageableItem, no otherwise
- Overrides:
removein classItem- Parameters:
ctx- A SessionContext object- Throws:
ConsistencyCheckException- if this item could not be removed for some reason
-
removeInvalidations
Upon voucher removal this method deletes allVoucherInvalidationitems which belong to this voucher.- Parameters:
ctx-
-
createAndStoreKey
-
createVoucherInvalidation
-
checkVoucherCode
Returns true if the specified voucher code is valid for this voucher.- Parameters:
aVoucherCode- the voucher code to check validity of.- Returns:
- true if the specified voucher code is valid for this voucher, false else.
-
getApplicableEntries
Returns all positions or parts of positions of the specified abstract order that are eligible for this voucher.- Parameters:
anOrder- the abstract order to get eligible positions of.- Returns:
- a VoucherEntrySet containing a VoucherEntry object for every position that is fully or partly eligible for this voucher.
-
getApplicableValue
Returns a VoucherValue object representing the partial value of the total of the specified abstract order that is eligible for this voucher. Typically this would correspond to the sum of all totals of the applicable entries.- Parameters:
anOrder- the abstract order to get applicable value of.- Returns:
- a VoucherValue representing the partial value of the total of the specified abstract order that is eligible for this voucher.
-
getAppliedValue
Returns a VoucherValue object representing the discount value of this voucher. If the voucher is applicable to the specified abstract order this value is calculated in consideration of the applicable value returned by getApplicableValue(AbstractOrder).- Parameters:
anOrder- the abstract order to get discount value of.- Returns:
- a VoucherValue representing the discount value of this voucher.
-
getComposedType
-
getDiscountValue
Description copied from class:DiscountCalculates avaluewhich should be applied to the given order during (re)calculation.- Overrides:
getDiscountValuein classDiscount- Parameters:
anOrder- the order which is currently being calculated
-
getInvalidation
Returns a voucher invalidation object if the specified voucher code was used in the specified order or null else.- Parameters:
aVoucherCode- the voucher code to check.anOrder- the order to check.- Returns:
- a VoucherInvalidation object representing the usage of a voucher code in an order.
-
getInvalidations
Returns all voucher invalidations representing the usage of the specified voucher code. If voucher code represents a serial voucher the returned collection should not contain more than one item since serial voucher codes can only be used once.- Parameters:
aVoucherCode- the voucher code to check- Returns:
- a Collection containing none, one or more VoucherInvalidation objects.
-
getInvalidations
Returns all voucher invalidations representing the usage of the specified voucher code by the specified user. If voucher code represents a serial voucher the returned collection should not contain more than one item since serial voucher codes can only be used once.- Parameters:
aVoucherCode- the voucher code to checkanUser- the user to check- Returns:
- a Collection containing none, one or more VoucherInvalidation objects.
-
getValueString
Convenience method. Returns a string representation of the value of this voucher, e.g. 5$ or 10%.- Specified by:
getValueStringin classGeneratedVoucher- Parameters:
ctx- the context of the actual session- Returns:
- a String representing the alue of this voucher.
-
getViolatedRestrictions
Returns all restrictions that are not fulfilled by the specified abstract order.- Parameters:
anOrder- the abstract order to return violated restrictions for.- Returns:
- a List object containing all Restriction objects associated with this voucher that the specified abstract order does not fulfill.
-
getViolatedRestrictions
Returns all restrictions that are not fulfilled by the specified product.- Parameters:
aProduct- the product to return violated restrictions for.- Returns:
- a List object containing all Restriction objects associated with this voucher that the specified product does not fulfill.
-
getViolationMessages
-
getViolationMessages
-
getVoucherValue
-
isApplicable
Returns true if the specified abstract order is eligible for this voucher. More formally, returns true if the specified abstract order fulfills all restrictions associated with this voucher.- Parameters:
anOrder- the abstract order to check whether it is eligible for this voucher.- Returns:
- true if the specified abstract order is eligible for this voucher, false else.
-
isApplicable
Returns true if the specified product is eligible for this voucher. More formally, returns true if the specified product fulfills all restrictions associated with this voucher.- Parameters:
aProduct- the product to check whether it is eligible for this voucher.- Returns:
- true if the specified product is eligible for this voucher, false else.
-
isReservable
-
isReservable
-
redeem
- Throws:
JaloPriceFactoryException
-
redeem
-
release
- Throws:
ConsistencyCheckException
-
release
- Throws:
JaloPriceFactoryException
-
reserve
-
insertDividers
-
removeDividers
-
generateVoucherCode
- Throws:
NoSuchAlgorithmException
-
getNextVoucherNumber
-
getVoucherNumber
-
threeByteSig
- Throws:
NoSuchAlgorithmException
-