public class CommerceItemShippingInfoTools extends GenericService
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CLASS_VERSION |
protected CommerceItemManager |
mCommerceItemManager |
protected GiftlistManager |
mGiftlistManager |
protected HandlingInstructionManager |
mHandlingInstructionManager |
protected boolean |
mIncludeGifts |
protected ShippingGroupManager |
mShippingGroupManager |
protected int |
mSplitByUnitLimit |
SERVICE_INFO_KEY
DEFAULT_LOG_TRACE_STATUS
DEFAULT_LOG_DEBUG_STATUS, DEFAULT_LOG_ERROR_STATUS, DEFAULT_LOG_INFO_STATUS, DEFAULT_LOG_WARNING_STATUS
Constructor and Description |
---|
CommerceItemShippingInfoTools() |
Modifier and Type | Method and Description |
---|---|
protected CommerceItemShippingInfo |
addNewCommerceItemShippingInfoFromOrder(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer,
CommerceItem pItem,
java.lang.String pRelationshipType,
double pQuantityWithFraction,
ShippingGroup pShippingGroup,
java.util.Collection pShippingGroupMatchers)
Create a CommerceItemShippingInfo from the information given and adds it to the container.
|
protected CommerceItemShippingInfo |
addNewCommerceItemShippingInfoFromOrder(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer,
CommerceItem pItem,
java.lang.String pRelationshipType,
long pQuantity,
double pQuantityWithFraction,
ShippingGroup pShippingGroup,
java.util.Collection pShippingGroupMatchers)
Create a CommerceItemShippingInfo from the information given and adds it to the container.
|
protected CommerceItemShippingInfo |
addNewCommerceItemShippingInfoFromOrder(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer,
CommerceItem pItem,
java.lang.String pRelationshipType,
long pQuantity,
ShippingGroup pShippingGroup,
java.util.Collection pShippingGroupMatchers)
Create a CommerceItemShippingInfo from the information given and adds it to the container.
|
protected void |
adjustHandlingInstructionsForSplit(CommerceItemShippingInfo pOriginalInfo,
CommerceItemShippingInfo pNewInfo,
double pSplitQuantityWithFraction)
Moves or splits handling instructions after a splitting a CommerceItemShippingInfo
|
protected void |
adjustHandlingInstructionsForSplit(CommerceItemShippingInfo pOriginalInfo,
CommerceItemShippingInfo pNewInfo,
long pSplitQuantity)
Moves or splits handling instructions after a splitting a CommerceItemShippingInfo
|
protected void |
adjustHandlingInstructionsForSplit(CommerceItemShippingInfo pOriginalInfo,
CommerceItemShippingInfo pNewInfo,
long pSplitQuantity,
double pSplitQuantityWithFraction)
Moves or splits handling instructions after a splitting a CommerceItemShippingInfo
|
void |
applyCommerceItemShippingInfo(CommerceItemShippingInfo pCommerceItemShippingInfo,
Order pOrder,
ShippingGroupMapContainer pShippingGroupMapContainer)
applyCommerceItemShippingInfo get the Relationship type
from the CommerceItemShippingInfo then invoke the business logic in CommerceItemManager
to update the order. |
void |
applyCommerceItemShippingInfos(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer,
Order pOrder,
boolean pConsolidateBeforeApply,
boolean pApplyDefaultShipping)
Applies the CommerceItemShippingInfos to the order.
|
void |
applyDefaultShippingGroup(Order pOrder,
ShippingGroupMapContainer pShippingGroupMapContainer)
applyDefaultShippingGroup checks to see if there is a
defaultShippingGroup. |
void |
applyHandlingInstructions(CommerceItemShippingInfo pCommerceItemShippingInfo,
ShippingGroup pShippingGroup)
Applies the handling instructions on the CommerceItemShippingInfo to the given shipping group
|
void |
clearCommerceItemShippingInfos(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer)
Clears the shipping group map container.
|
void |
clearShippingGroups(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer)
Clears the shipping group map container.
|
protected void |
consolidateShippingInfos(CommerceItemShippingInfoContainer pCommerceItemShippingGroupContainer)
consolidateShippingInfos consolidates CommerceItemShippingInfos
by ensuring there is no redundant data. |
protected CommerceItemShippingInfo |
createCommerceItemShippingInfo(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer,
CommerceItem pItem,
java.lang.String pRelationshipType,
double pQuantityWithFraction,
ShippingGroup pShippingGroup,
java.lang.String pShippingGroupName)
Creates a CommerceItemShippingInfo for the given item, relationship type, quantity and shipping group name.
|
protected CommerceItemShippingInfo |
createCommerceItemShippingInfo(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer,
CommerceItem pItem,
java.lang.String pRelationshipType,
long pQuantity,
double pQuantityWithFraction,
ShippingGroup pShippingGroup,
java.lang.String pShippingGroupName)
Creates a CommerceItemShippingInfo for the given item, relationship type, quantity and shipping group name.
|
protected CommerceItemShippingInfo |
createCommerceItemShippingInfo(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer,
CommerceItem pItem,
java.lang.String pRelationshipType,
long pQuantity,
ShippingGroup pShippingGroup,
java.lang.String pShippingGroupName)
Creates a CommerceItemShippingInfo for the given item, relationship type, quantity and shipping group name.
|
protected HandlingInstructionInfo |
createHandlingInstructionInfo(HandlingInstruction pHandlingInstruction,
long pQuantity)
Creates a new HandlingInstructionInfo object
|
protected HandlingInstructionInfo |
createHandlingInstructionInfo(HandlingInstruction pHandlingInstruction,
long pQuantity,
double pQuantityWithFraction)
Creates a new HandlingInstructionInfo object and sets the quantity (with fraction).
|
protected void |
createHandlingInstructionInfos(CommerceItemShippingInfo pCommerceItemShippingInfo,
java.util.Collection pHandlingInstructions)
Creates the handling instruction infos for each on the given handling instructions
|
protected void |
createHandlingInstructionInfos(CommerceItemShippingInfo pCommerceItemShippingInfo,
ShippingGroup pShippingGroup)
Creates handling instruction infos for the handling instructions on the given shipping group for the given item.
|
void |
debug(java.lang.String pDebugString) |
protected long |
determineQuantityOfGifts(CommerceItemShippingInfo pCommerceItemShippingInfo)
Helper method that returns the sum of all (non-fractional) gift handling instruction quantities
|
protected double |
determineQuantityWithFractionOfGifts(CommerceItemShippingInfo pCommerceItemShippingInfo)
Helper method that returns the sum of all gift handling instruction quantities.
|
protected void |
ensureGiftRegistryAddresses(Order pOrder,
ShippingGroupMapContainer pShippingGroupMapContainer,
java.util.Collection pShippingGroupMatchers)
Ensures that all gift registry addresses are in the shipping group map
|
protected HandlingInstructionInfo |
findGiftlistHandlingInstructionWithQuantity(CommerceItemShippingInfo pCommerceItemShippingInfo,
long pQuantity)
Helper method to find the first gift list handling instruction with a specific quantity
|
protected HandlingInstructionInfo |
findGiftlistHandlingInstructionWithQuantity(CommerceItemShippingInfo pCommerceItemShippingInfo,
long pQuantity,
double pQuantityWithFraction)
Helper method to find the first gift list handling instruction with a specific quantity
|
java.util.List |
getAllNonGiftHandlingInstructionsForCommerceItem(Order pOrder,
java.lang.String pCommerceItemId)
Return a list of all handling instructions for the given commerce item, excluding gift
handling instructions
|
CommerceItemManager |
getCommerceItemManager()
Return the CommerceItemManager property.
|
GiftlistManager |
getGiftlistManager()
Return the GiftlistManager property.
|
HandlingInstructionManager |
getHandlingInstructionManager()
Returns property handlingInstructionManager
|
java.util.List |
getNonGiftHandlingInstructionsForCommerceItem(ShippingGroup pShippingGroup,
java.lang.String pCommerceItemId)
Return a list of handling instructions for the given commerce item and shipping group, excluding gift
handling instructions
|
protected ShippingGroup |
getShippingGroup(ShippingGroupMapContainer pShippingGroupMapContainer,
java.lang.String pShippingGroupId)
getShippingGroup gets the ShippingGroup with the given name
from the ShippingGroupMapContainer. |
ShippingGroupManager |
getShippingGroupManager()
Return the ShippingGroupManager property.
|
int |
getSplitByUnitLimit()
Gets the maximum commerce item quantity that can be split into single units.
|
void |
initCommerceItemShippingInfoToDefaultShippingGroup(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer,
Order pOrder,
CommerceItem pItem)
Creates a CommerceItemShippingInfo for the item that points to the default shipping group name
as specified by the ShippingGroupMapContainer.defaultShippingGroupName.
|
void |
initializeBasedOnOrder(Order pOrder,
CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer,
java.util.Collection pShippinGroupMatchers,
boolean pOnePerUnit)
Initializes the containers based on the contents of the item to shipping group relationships in the order.
|
void |
initializeBasedOnShippingRelationships(Order pOrder,
CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer,
java.util.Collection pShippinGroupMatchers)
Initializes the CommerceItemShippingInfos and ShippingGroups based on the items and their relationships
to the shipping groups.
|
void |
initializeCommerceItemShippingInfosToDefaultShipping(Order pOrder,
CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer,
boolean pOnePerUnit)
Creates a CommerceItemShippingInfo for each item in the order.
|
void |
initializeUserShippingMethods(ShippingGroupMapContainer pShippingGroupMapContainer,
Profile pProfile,
java.lang.String[] pShippingGroupTypes,
java.util.Map pShippingGroupInitializers)
Initializes the shipping group map container for the shipping group types provided.
|
boolean |
isIncludeGifts()
Determines if gift items are included when initializing the commerce
item info and shipping group containers.
|
protected CommerceItemShippingInfo |
mergeCommerceItemShippingInfos(CommerceItemShippingInfo pCisi1,
CommerceItemShippingInfo pCisi2)
mergeCommerceItemShippingInfos merges 2 CommerceItemShippingInfos
into one by combining their quantities. |
protected void |
mergeHandlingInstruction(CommerceItemShippingInfo pCommerceItemShippingInfo,
HandlingInstructionInfo pHandlingInstructionInfo)
Merges the handling instruction with the handling instructions on the given
CommerceItemShippingInfo
|
protected void |
moveHandlingInstructionInfo(CommerceItemShippingInfo pFromInfo,
CommerceItemShippingInfo pToInfo,
HandlingInstructionInfo pHandlingInstructionInfo)
Moves a handling instruction from the original to new CommerceItemShippingInfo
|
protected void |
movePartialHandlingInstruction(CommerceItemShippingInfo pFromInfo,
CommerceItemShippingInfo pToInfo,
HandlingInstructionInfo pHandlingInstructionInfo,
double pQuantityWithFractionToMove)
Moves a portion of a handling instruction from the original to new CommerceItemShippingInfo
|
protected void |
movePartialHandlingInstruction(CommerceItemShippingInfo pFromInfo,
CommerceItemShippingInfo pToInfo,
HandlingInstructionInfo pHandlingInstructionInfo,
long pQuantityToMove)
Moves a portion of a handling instruction from the original to new CommerceItemShippingInfo
|
protected void |
movePartialHandlingInstruction(CommerceItemShippingInfo pFromInfo,
CommerceItemShippingInfo pToInfo,
HandlingInstructionInfo pHandlingInstructionInfo,
long pQuantityToMove,
double pQuantityToMoveWithFraction)
Moves a portion of a handling instruction from the original to new CommerceItemShippingInfo
|
void |
removeDeletedShippingGroups(ShippingGroupMapContainer pShippingGroupMapContainer)
Removes shipping groups in the container that have a backing repository item
that has been removed from the repository.
|
protected void |
removeNonGiftQuantityFromRelationships(Order pOrder,
ShippingGroup pShippingGroup)
Removes all non-gift quantity from the items relationship to the shipping group.
|
void |
removeShippingGroupsBeforeApply(Order pOrder)
This method prepares the order before applying the CommerceItemShippingInfos.
|
void |
setCommerceItemManager(CommerceItemManager pCommerceItemManager)
Set the CommerceItemManager property.
|
void |
setGiftlistManager(GiftlistManager pGiftlistManager)
Set the GiftlistManager property.
|
void |
setHandlingInstructionManager(HandlingInstructionManager pHandlingInstructionManager)
Sets property handlingInstructionManager
|
void |
setIncludeGifts(boolean pIncludeGifts) |
void |
setShippingGroupManager(ShippingGroupManager pShippingGroupManager)
Set the ShippingGroupManager property.
|
void |
setSplitByUnitLimit(int pSplitByUnitLimit)
Sets the maximum commerce item quantity that can be split into single units.
|
void |
specifyDefaultShippingGroup(ShippingGroupMapContainer ShippingGroupMapContainer,
java.lang.String pDefaultShippingGroupName)
Sets the defaultShippingGroupName in the ShippingGroupMapContainer.
|
CommerceItemShippingInfo |
splitCommerceItemShippingInfoByQuantity(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
CommerceItemShippingInfo pCommerceItemShippingInfo,
double pSplitQuantityWithFraction)
splitCommerceItemShippingInfoByQuantity splits a CommerceItemShippingInfo
by quantity. |
CommerceItemShippingInfo |
splitCommerceItemShippingInfoByQuantity(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
CommerceItemShippingInfo pCommerceItemShippingInfo,
long pSplitQuantity)
splitCommerceItemShippingInfoByQuantity splits a CommerceItemShippingInfo
by quantity. |
CommerceItemShippingInfo |
splitCommerceItemShippingInfoByQuantity(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
CommerceItemShippingInfo pCommerceItemShippingInfo,
long pSplitQuantity,
double pSplitQuantityWithFraction)
splitCommerceItemShippingInfoByQuantity splits a CommerceItemShippingInfo
by quantity. |
protected void |
splitCommerceItemShippingInfosByGift(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer)
Used to split the CommerceItemShippingInfos based on the gifts items contained in each one.
|
protected void |
splitCommerceItemShippingInfosByUnit(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer,
ShippingGroupMapContainer pShippingGroupMapContainer)
Splits the CommerceItemShippingInfo objects, creating one for each unit.
|
addLogListener, createAdminServlet, doStartService, doStopService, getAbsoluteName, getAdminServlet, getAdminServletOutputStreamEncoding, getLoggingForVlogging, getLogListenerCount, getLogListeners, getName, getNameContext, getNucleus, getRoot, getServiceConfiguration, getServiceInfo, isAdminServletUseServletOutputStream, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, isRunning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, nameContextElementBound, nameContextElementUnbound, removeLogListener, reResolveThis, resolveName, resolveName, resolveName, resolveName, sendLogEvent, setAdminServletOutputStreamEncoding, setAdminServletUseServletOutputStream, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning, setNucleus, setServiceInfo, startService, stopService
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogDebugTrace, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning
public static final java.lang.String CLASS_VERSION
protected CommerceItemManager mCommerceItemManager
protected GiftlistManager mGiftlistManager
protected ShippingGroupManager mShippingGroupManager
protected HandlingInstructionManager mHandlingInstructionManager
protected boolean mIncludeGifts
protected int mSplitByUnitLimit
public void setCommerceItemManager(CommerceItemManager pCommerceItemManager)
pCommerceItemManager
- a CommerceItemManager
valuepublic CommerceItemManager getCommerceItemManager()
CommerceItemManager
valuepublic void setGiftlistManager(GiftlistManager pGiftlistManager)
pGiftlistManager
- a GiftlistManager
valuepublic GiftlistManager getGiftlistManager()
GiftlistManager
valuepublic void setShippingGroupManager(ShippingGroupManager pShippingGroupManager)
pShippingGroupManager
- a ShippingGroupManager
valuepublic ShippingGroupManager getShippingGroupManager()
ShippingGroupManager
valuepublic HandlingInstructionManager getHandlingInstructionManager()
public void setHandlingInstructionManager(HandlingInstructionManager pHandlingInstructionManager)
pHandlingInstructionManager
- the value to set for property handlingInstructionManagerpublic boolean isIncludeGifts()
default is false
public void setIncludeGifts(boolean pIncludeGifts)
public int getSplitByUnitLimit()
default is 500
public void setSplitByUnitLimit(int pSplitByUnitLimit)
public void debug(java.lang.String pDebugString)
protected void movePartialHandlingInstruction(CommerceItemShippingInfo pFromInfo, CommerceItemShippingInfo pToInfo, HandlingInstructionInfo pHandlingInstructionInfo, long pQuantityToMove)
pFromInfo
- the item containing the handling instructionpToInfo
- the item to receive a portion of the handling instructionpHandlingInstruction
- the handling instruction infopQuantityToMove
- the quantity to move to the pToInfoprotected void movePartialHandlingInstruction(CommerceItemShippingInfo pFromInfo, CommerceItemShippingInfo pToInfo, HandlingInstructionInfo pHandlingInstructionInfo, double pQuantityWithFractionToMove)
pFromInfo
- the item containing the handling instructionpToInfo
- the item to receive a portion of the handling instructionpHandlingInstruction
- the handling instruction infopQuantityWithFractionToMove
- the fractional quantity to move to the pToInfoprotected void movePartialHandlingInstruction(CommerceItemShippingInfo pFromInfo, CommerceItemShippingInfo pToInfo, HandlingInstructionInfo pHandlingInstructionInfo, long pQuantityToMove, double pQuantityToMoveWithFraction)
pFromInfo
- the item (fractional or non-fractional) containing the handling instructionpToInfo
- the item to receive a portion of the handling instructionpHandlingInstruction
- the handling instruction info. This will be fractional or non-fractional
based on the commerce item it is handling.pQuantityToMove
- the quantity (for a non-fractional handling instruction) to move to the pToInfopQuantityToMoveWithFraction
- the quantity (for a fractional handling instruction) to move to the pToInfoprotected HandlingInstructionInfo createHandlingInstructionInfo(HandlingInstruction pHandlingInstruction, long pQuantity)
pHandlingInstruction
- pQuantity
- protected HandlingInstructionInfo createHandlingInstructionInfo(HandlingInstruction pHandlingInstruction, long pQuantity, double pQuantityWithFraction)
pHandlingInstruction
- represents the HandlingInstruction (will be associated with a fractional
or non-fractional commerce item)pQuantity
- the handling quantity (for a non-fractional HandlingInstructionInfo)pQuantityWithFraction
- the handling quantity (for a fractional HandlingInstructionInfo)protected void moveHandlingInstructionInfo(CommerceItemShippingInfo pFromInfo, CommerceItemShippingInfo pToInfo, HandlingInstructionInfo pHandlingInstructionInfo)
pFromInfo
- pNewInfo
- pHandlingInstructionInfo
- protected long determineQuantityOfGifts(CommerceItemShippingInfo pCommerceItemShippingInfo)
pCommerceItemShippingInfo
- protected double determineQuantityWithFractionOfGifts(CommerceItemShippingInfo pCommerceItemShippingInfo)
pCommerceItemShippingInfo
- double
quantity valueprotected HandlingInstructionInfo findGiftlistHandlingInstructionWithQuantity(CommerceItemShippingInfo pCommerceItemShippingInfo, long pQuantity)
pCommerceItemShippingInfo
- pQuantity
- protected HandlingInstructionInfo findGiftlistHandlingInstructionWithQuantity(CommerceItemShippingInfo pCommerceItemShippingInfo, long pQuantity, double pQuantityWithFraction)
pCommerceItemShippingInfo
- CommerceItemShippingInfo (associated with fractional or non-fractional commerce item)pQuantity
- the quantity (of non-fractional gift)pQuantityWithFraction
- quantity (of fractional gift)protected void adjustHandlingInstructionsForSplit(CommerceItemShippingInfo pOriginalInfo, CommerceItemShippingInfo pNewInfo, long pSplitQuantity) throws CommerceException
Determines if the handling instructions on the original CommerceItemShippingInfo need to be split between the new CommerceItemShippingInfo
There are two reasons for which a gift handling instruction needs to split 1. because the original hi.qty > originalInfo.qty 2. because the original hi.qty + other gift quantitys > originalInfo.qty All other handling instructions are split when their quantity exceeds the originalInfo.qty
pOriginalInfo
- the original CommerceItemShippingInfo that was splitpNewInfo
- the new CommerceItemShippingInfo that was created by the split operationpSplitQuantity
- the quantity of the split operation.CommerceException
protected void adjustHandlingInstructionsForSplit(CommerceItemShippingInfo pOriginalInfo, CommerceItemShippingInfo pNewInfo, double pSplitQuantityWithFraction) throws CommerceException
Determines if the handling instructions on the original CommerceItemShippingInfo need to be split between the new CommerceItemShippingInfo
There are two reasons for which a gift handling instruction needs to split 1. because the original hi.qtyWithFraction > originalInfo.qtyWithFraction 2. because the original hi.qtyWithFraction + other gift qtyWithFraction > originalInfo.qtyWithFraction All other handling instructions are split when their quantity exceeds the originalInfo.qtyWithFraction
pOriginalInfo
- the original CommerceItemShippingInfo (containing fractional commerce item) that was splitpNewInfo
- the new CommerceItemShippingInfo (containing fractional commerce item) that was created by the split operationpSplitQuantityWithFraction
- the quantity of the split operation.CommerceException
protected void adjustHandlingInstructionsForSplit(CommerceItemShippingInfo pOriginalInfo, CommerceItemShippingInfo pNewInfo, long pSplitQuantity, double pSplitQuantityWithFraction) throws CommerceException
Determines if the handling instructions on the original CommerceItemShippingInfo need to be split between the new CommerceItemShippingInfo
There are two reasons for which a gift handling instruction needs to split 1. because the original hi.qty > originalInfo.qty OR hi.qtyWithFraction > originalInfo.qtyWithFraction 2. because the original hi.qtyWithFraction + other gift qtyWithFraction > originalInfo.qtyWithFraction OR hi.qtyWithFraction + other gift qtyWithFraction > originalInfo.qtyWithFraction All other handling instructions are split when their quantity exceeds the originalInfo.qtyWithFraction
pOriginalInfo
- the original CommerceItemShippingInfo that was splitpNewInfo
- the new CommerceItemShippingInfo that was created by the split operationpSplitQuantity
- the quantity of the split operation (for a non-fractional item).pSplitQuantityWithFraction
- the fractional quantity of the split operation (for a fractional item).CommerceException
public CommerceItemShippingInfo splitCommerceItemShippingInfoByQuantity(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, CommerceItemShippingInfo pCommerceItemShippingInfo, long pSplitQuantity) throws CommerceException
splitCommerceItemShippingInfoByQuantity
splits a CommerceItemShippingInfo
by quantity. This creates a new CommerceItemShippingInfo, adjusts properties of both
the original and the new object, and adds the new object to the
CommerceItemShippingInfoContainer.pCommerceItemShippingInfoContainer
- the container with the infospCommerceItemShippingInfo
- a CommerceItemShippingInfo
to be splitpSplitQuantity
- the quantity to split off into a new CommerceItemShippingInfoCommerceException
adjustHandlingInstructionsForSplit(CommerceItemShippingInfo, CommerceItemShippingInfo, long)
public CommerceItemShippingInfo splitCommerceItemShippingInfoByQuantity(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, CommerceItemShippingInfo pCommerceItemShippingInfo, double pSplitQuantityWithFraction) throws CommerceException
splitCommerceItemShippingInfoByQuantity
splits a CommerceItemShippingInfo
by quantity. This creates a new CommerceItemShippingInfo, adjusts properties of both
the original and the new object, and adds the new object to the
CommerceItemShippingInfoContainer.pCommerceItemShippingInfoContainer
- the container with the infospCommerceItemShippingInfo
- a CommerceItemShippingInfo
(associated with fractional commerce item) to be splitpSplitQuantityWithFraction
- the quantity to split off into a new (fractional) CommerceItemShippingInfoCommerceException
adjustHandlingInstructionsForSplit(CommerceItemShippingInfo, CommerceItemShippingInfo, double)
public CommerceItemShippingInfo splitCommerceItemShippingInfoByQuantity(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, CommerceItemShippingInfo pCommerceItemShippingInfo, long pSplitQuantity, double pSplitQuantityWithFraction) throws CommerceException
splitCommerceItemShippingInfoByQuantity
splits a CommerceItemShippingInfo
by quantity. This creates a new CommerceItemShippingInfo, adjusts properties of both
the original and the new object, and adds the new object to the
CommerceItemShippingInfoContainer.pCommerceItemShippingInfoContainer
- the container with the infospCommerceItemShippingInfo
- a CommerceItemShippingInfo
to be split (fractional or non-fractional,
depending on CommerceItem contained within)pSplitQuantity
- the quantity to split off into a new CommerceItemShippingInfo (non-fractional)pSplitQuantityWithFraction
- the quantity to split off into a new CommerceItemShippingInfo (fractional)CommerceException
adjustHandlingInstructionsForSplit(CommerceItemShippingInfo, CommerceItemShippingInfo, long)
protected void splitCommerceItemShippingInfosByUnit(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer) throws CommerceException
pCommerceItemShippingInfoContainer
- pShippingGroupMapContainer
- CommerceException
protected void splitCommerceItemShippingInfosByGift(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer) throws CommerceException
Gifts are identified by the gift handling instructions on each CommerceItemShippingInfo. A split is issued based on the quantity of a gift handling instruction if the cisi quantity is greater than the handling instruction quantity.
pCommerceItemShippingInfoContainer
- pShippingGroupMapContainer
- CommerceException
public void initializeBasedOnOrder(Order pOrder, CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer, java.util.Collection pShippinGroupMatchers, boolean pOnePerUnit) throws CommerceException
Will optionally create one CISI per item unit or create separate CISI's for gift items.
pOrder
- pCommerceItemShippingInfoContainer
- pShippingGroupMapContainer
- pShippinGroupMatchers
- pOnePerUnit
- determines if one CommerceItemShippingInfos ais created for
each individual item unit.CommerceException
splitCommerceItemShippingInfosByUnit(CommerceItemShippingInfoContainer, ShippingGroupMapContainer)
,
splitCommerceItemShippingInfosByGift(CommerceItemShippingInfoContainer, ShippingGroupMapContainer)
public void initializeCommerceItemShippingInfosToDefaultShipping(Order pOrder, CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer, boolean pOnePerUnit)
Each one is initialized to the default shipping group name as defined in the ShippingGroupMapContainer.
pOrder
- pCommerceItemShippingInfoContainer
- pShippingGroupMapContainer
- pOnePerUnit
- public void initializeBasedOnShippingRelationships(Order pOrder, CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer, java.util.Collection pShippinGroupMatchers) throws CommerceException
pOrder
- pCommerceItemShippingInfoContainer
- pShippingGroupMapContainer
- pShippinGroupMatchers
- CommerceException
public void initCommerceItemShippingInfoToDefaultShippingGroup(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer, Order pOrder, CommerceItem pItem)
pCommerceItemShippingInfoContainer
- pShippingGroupMapContainer
- pOrder
- pItem
- protected CommerceItemShippingInfo createCommerceItemShippingInfo(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer, CommerceItem pItem, java.lang.String pRelationshipType, long pQuantity, ShippingGroup pShippingGroup, java.lang.String pShippingGroupName)
If pShippingGroup
is provided, the shipping info's shippingMethod and handling instructions
are set to match the shipping group.
pItem
- the commerce item (non-fractional)pRelationshipType
- the relationship type for the infopQuantity
- the quantity for the (non-fractional) infopShippingGroup
- the shipping group associated with the shipping info (optional)pShippingGroupName
- the name of the shipping group in the map to which the info should be associated.protected CommerceItemShippingInfo createCommerceItemShippingInfo(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer, CommerceItem pItem, java.lang.String pRelationshipType, double pQuantityWithFraction, ShippingGroup pShippingGroup, java.lang.String pShippingGroupName)
If pShippingGroup
is provided, the shipping info's shippingMethod and handling instructions
are set to match the shipping group.
pItem
- the commerce item (fractional)pRelationshipType
- the relationship type for the infopQuantityWithFraction
- the quantity for the (fractional) infopShippingGroup
- the shipping group associated with the shipping info (optional)pShippingGroupName
- the name of the shipping group in the map to which the info should be associated.protected CommerceItemShippingInfo createCommerceItemShippingInfo(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer, CommerceItem pItem, java.lang.String pRelationshipType, long pQuantity, double pQuantityWithFraction, ShippingGroup pShippingGroup, java.lang.String pShippingGroupName)
If pShippingGroup
is provided, the shipping info's shippingMethod and handling instructions
are set to match the shipping group.
pItem
- the commerce item (fractional or non-fractional)pRelationshipType
- the relationship type for the infopQuantity
- the quantity for the info (use if non-fractional pItem)pQuantityWithFraction
- the fractional quantity for the info (use if fractional pItem)pShippingGroup
- the shipping group associated with the shipping info (optional)pShippingGroupName
- the name of the shipping group in the map to which the info should be associated.protected void createHandlingInstructionInfos(CommerceItemShippingInfo pCommerceItemShippingInfo, ShippingGroup pShippingGroup)
pCommerceItemShippingInfo
- pShippingGroup
- protected void createHandlingInstructionInfos(CommerceItemShippingInfo pCommerceItemShippingInfo, java.util.Collection pHandlingInstructions)
pCommerceItemShippingInfo
- pHandlingInstructions
- public java.util.List getNonGiftHandlingInstructionsForCommerceItem(ShippingGroup pShippingGroup, java.lang.String pCommerceItemId)
pShippingGroup
- the shipping group containing the handling instructionspCommerceItemId
- The id of the itempublic java.util.List getAllNonGiftHandlingInstructionsForCommerceItem(Order pOrder, java.lang.String pCommerceItemId)
pOrder
- the order containing the itempCommerceItemId
- The id of the itemprotected CommerceItemShippingInfo addNewCommerceItemShippingInfoFromOrder(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer, CommerceItem pItem, java.lang.String pRelationshipType, long pQuantity, ShippingGroup pShippingGroup, java.util.Collection pShippingGroupMatchers) throws CommerceException
If IncludeGifts
is false then only the quantity of the item that is not a gift is accounted
for in the new CISI. If the entire quantity is a gift then no item is created and null is returned.
pCommerceItemShippingInfoContainer
- pShippingGroupMapContainer
- pItem
- the (non-fractional) commerce itempRelationshipType
- pQuantity
- pShippingGroup
- pShippingGroupMatchers
- CommerceException
protected CommerceItemShippingInfo addNewCommerceItemShippingInfoFromOrder(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer, CommerceItem pItem, java.lang.String pRelationshipType, double pQuantityWithFraction, ShippingGroup pShippingGroup, java.util.Collection pShippingGroupMatchers) throws CommerceException
If IncludeGifts
is false then only the quantity of the item that is not a gift is accounted
for in the new CISI. If the entire quantity is a gift then no item is created and null is returned.
pCommerceItemShippingInfoContainer
- pShippingGroupMapContainer
- pItem
- the (fractional) commerce itempRelationshipType
- the relationship typepQuantityWithFraction
- quantitypShippingGroup
- the shipping grouppShippingGroupMatchers
- collection of objects that matches with shipping groupCommerceException
protected CommerceItemShippingInfo addNewCommerceItemShippingInfoFromOrder(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer, CommerceItem pItem, java.lang.String pRelationshipType, long pQuantity, double pQuantityWithFraction, ShippingGroup pShippingGroup, java.util.Collection pShippingGroupMatchers) throws CommerceException
If IncludeGifts
is false then only the quantity of the item that is not a gift is accounted
for in the new CISI. If the entire quantity is a gift then no item is created and null is returned.
pCommerceItemShippingInfoContainer
- pShippingGroupMapContainer
- pItem
- the commerce item (fractional or non-fractional)pRelationshipType
- the relationship typepQuantity
- the quantity (for non-fractional item)pQuantityWithFraction
- the quantity (for fractional item)pShippingGroup
- the shipping grouppShippingGroupMatchers
- collection of objects that matches with shipping groupCommerceException
protected void ensureGiftRegistryAddresses(Order pOrder, ShippingGroupMapContainer pShippingGroupMapContainer, java.util.Collection pShippingGroupMatchers)
pOrder
- pShippingGroupMapContainer
- pShippingGroupMatchers
- public void applyCommerceItemShippingInfos(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer, Order pOrder, boolean pConsolidateBeforeApply, boolean pApplyDefaultShipping) throws CommerceException
pCommerceItemShippingInfoContainer
- pShippingGroupMapContainer
- pOrder
- pConsolidateBeforeApply
- pApplyDefaultShipping
- CommerceException
public void applyDefaultShippingGroup(Order pOrder, ShippingGroupMapContainer pShippingGroupMapContainer) throws CommerceException
applyDefaultShippingGroup
checks to see if there is a
defaultShippingGroup. If so, this ShippingGroup is added to the
remaining quantity of each CommerceItem whose quantity is not already
fully assigned to ShippingGroups.pOrder
- an Order
valueCommerceException
public void applyCommerceItemShippingInfo(CommerceItemShippingInfo pCommerceItemShippingInfo, Order pOrder, ShippingGroupMapContainer pShippingGroupMapContainer) throws CommerceException
applyCommerceItemShippingInfo
get the Relationship type
from the CommerceItemShippingInfo then invoke the business logic in CommerceItemManager
to update the order.pCommerceItemShippingInfo
- a CommerceItemShippingInfo
valuepOrder
- an Order
valuepShippingGroupMapContainer
- the map container that contains the shipping groups associated with the
given shipping infoCommerceException
public void applyHandlingInstructions(CommerceItemShippingInfo pCommerceItemShippingInfo, ShippingGroup pShippingGroup) throws CommerceException
pCommerceItemShippingInfo
- pShippingGroup
- CommerceException
protected ShippingGroup getShippingGroup(ShippingGroupMapContainer pShippingGroupMapContainer, java.lang.String pShippingGroupId)
getShippingGroup
gets the ShippingGroup with the given name
from the ShippingGroupMapContainer.pShippingGroupMapContainer
- the container that contains the shipping grouppShippingGroupId
- a String
valueShippingGroup
valueprotected void consolidateShippingInfos(CommerceItemShippingInfoContainer pCommerceItemShippingGroupContainer) throws CommerceException
consolidateShippingInfos
consolidates CommerceItemShippingInfos
by ensuring there is no redundant data.javax.servlet.ServletException
- if an error occursjava.io.IOException
- if an error occursCommerceException
protected CommerceItemShippingInfo mergeCommerceItemShippingInfos(CommerceItemShippingInfo pCisi1, CommerceItemShippingInfo pCisi2) throws CommerceException
mergeCommerceItemShippingInfos
merges 2 CommerceItemShippingInfos
into one by combining their quantities.pCisi1
- a CommerceItemShippingInfo
valuepCisi2
- a CommerceItemShippingInfo
valueCommerceItemShippingInfo
valueCommerceException
protected void mergeHandlingInstruction(CommerceItemShippingInfo pCommerceItemShippingInfo, HandlingInstructionInfo pHandlingInstructionInfo)
Merge is done by either incrementing the quantity on a matching handling instruction or by adding the handling instruction to the CommerceItemShippingInfo
Gift handling instructions are merged if the gift list, gift item and handling methods are equal.
All other handling instructions are merged if the handling methods are equal.
pCommerceItemShippingInfo
- pHandlingInstructionInfo
- public void removeDeletedShippingGroups(ShippingGroupMapContainer pShippingGroupMapContainer)
This can happen when a shipping group was applied to an order and then "unapplied", causing the cascade delete on the repository item to remove it from the repository.
public void initializeUserShippingMethods(ShippingGroupMapContainer pShippingGroupMapContainer, Profile pProfile, java.lang.String[] pShippingGroupTypes, java.util.Map pShippingGroupInitializers)
For each type, the shipping group initializes create shipping groups based on the profile.
pShippingGroupMapContainer
- pProfile
- pShippingGroupTypes
- pShippingGroupInitializers
- public void specifyDefaultShippingGroup(ShippingGroupMapContainer ShippingGroupMapContainer, java.lang.String pDefaultShippingGroupName) throws javax.servlet.ServletException, java.io.IOException
javax.servlet.ServletException
java.io.IOException
public void clearShippingGroups(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer)
pCommerceItemShippingInfoContainer
- pShippingGroupMapContainer
- public void clearCommerceItemShippingInfos(CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer, ShippingGroupMapContainer pShippingGroupMapContainer)
pCommerceItemShippingInfoContainer
- pShippingGroupMapContainer
- public void removeShippingGroupsBeforeApply(Order pOrder) throws CommerceException
If gifts are being included all shipping groups, with the exception of the non-modifiable shipping groups identified by the ShippingGroupManager, are removed from the order.
If gifts are not included, shipping groups that contain gifts exclusively are left in the order. All other shipping groups that contain a mix of gift and non-gift items are adjusted to remove the non-gift quantities and handling instructions.
pOrder
- CommerceException
protected void removeNonGiftQuantityFromRelationships(Order pOrder, ShippingGroup pShippingGroup) throws CommerceException
Either the quantity is adjusted to a new value or the relationship is removed entirely when the new quantity is zero or it's a quantity remaining type relationship.
All non-gift handling instructions are also removed
pOrder
- pShippingGroup
- CommerceException