public class ReturnManager extends GenericService
A ReturnRequest
provides access to the object graph that represents a return. It contains all the meta-data needed to calculate the proper
refunds and price replacement orders. A return is initialized using a fulfilled order, which is used to construct the
ReturnShippingGroup
and ReturnItem
objects in the ReturnRequest
.
A ReturnShippingGroup
is created for each shipping group and a ReturnItem
for each CommerceItemRelationship
in the group. Items are selected for return by specifying a return quantity in the ReturnItem
and applying those selections. After which,
the initial refund is calculated.
Once the refund is calculated, the RefundMethod
objects are generated and allocated. The system will automatically generate the RefundMethod
objects and allocate the refund. There is API, including form handler support, to manually allocate the refund to the methods.
Finally, the return must be confirmed where it is validated and committed to the repository. In some cases, the return will be settled at confirm time. In most business models, the return is settled when the items being returned are physically received by the merchant. The return remains in a pending state until there are no items pending receipt.
Settlement will issue the credits and also submit the replacement order (for exchanges). Settlement can occur immediately upon confirmation
if the isProcessImmediately()
is set to true
, or if all items being returned have
ReturnItem.isReturnShipmentRequired()
set to false
.
Returns are handled in the following steps.
ReturnRequest
is instantiated. See #createReturnRequest(String, ProcessName, Map)
true
, or
if all items being returned have {@link atg.commerce.csr.returns.ReturnItem#isReturnShipmentRequired()} set to false
.
Much of the API required to perform the aforementioned steps is modeled using pipelines. All of the pipeline chain ids are configurable in the ReturnManager. {@link #getCreateReturnRequestPipelineChainId()}, {@link #getApplySelectedItemsPipelineChainId()}, {@link #getApplyRefundAllocationsPipelineChainId()}, {@link #getConfirmReturnRequestPipelineChainId()}, {@link #getSettleReturnRequestPipelineChainId()}, {@link #getGenerateReplacementOrderPipelineChainId()},{@link #getCalculateRefundAmountsPipelineChainId()}, {@link #getReceiveItemPipelineChainId()}
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 |
---|
ReturnManager() |
Modifier and Type | Method and Description |
---|---|
void |
addPropertyUpdate(java.lang.Object pNewValue,
java.lang.Object pOldValue,
java.lang.String pPropertyName,
java.util.List pUpdates)
Adds the old and new values of updated property
in the list.
|
protected void |
addReplacementItemsToReturnAdjustedOrder(ReturnRequest pReturnRequest,
Order pReturnAdjustedOrder)
For each replacement(exchange) order found in the return tree, the commerce items and shipping groups
are copied to the Return Adjusted Order.
|
protected void |
adjustFinalItemAmountForRelationshipRangeValue(ReturnRequest pReturnRequest,
CommerceItem pCommerceItem,
ShippingGroupCommerceItemRelationship pShippingGroupCommerceItemRelationship,
atg.core.util.Range pRange)
Calculates and sets a new priceInfo amount by subtracting out the value
of the range within the given relationship.
|
void |
adjustOrderPayments(ReturnRequest pReturnRequest,
double pRefundAmount,
boolean pClearRefundMethods)
Creates or adjusts the refund store credit payment group in the replacement order for the given refund amount.
|
protected void |
adjustReturnAdjustedOrderFinalItemPrices(ReturnRequest pReturnRequest,
Order pReturnAdjustedOrder)
Calculates a new price info amount and new DetailedItemPriceInfos for items that have been marked as final
and have some quantity returned already.
|
protected void |
adjustReturnCalculationOrderFinalItemPrices(ReturnRequest pReturnRequest,
Order pReturnCalculationOrder)
Adjusts the amount value for items marked as final in the return calculation order that are being returned.
|
protected void |
adjustReturnCalculationOrderForReturnItems(ReturnRequest pReturnRequest,
Order pReturnCalculationOrder)
Adjusts the quantity of commerce items and shipping group relationships for the items
being returned (i.e.
|
void |
adjustSuggestedAmountsForNonReturnItems(ReturnRequest pReturnRequest)
Adjusts the suggested amounts based on the
ItemCostAdjustment objects that reference item/shipping relationships
not being returned. |
protected double |
allocateRefundAmountForReturn(Order pOriginalOrder,
ReturnRequest pReturnRequest,
double pRefundAmountToBeAllocated,
java.util.Collection<RefundMethod> pRefundMethods)
This method allocates the given refund amount to the given refund methods and returns the total amount
that was successfully allocated.
|
atg.commerce.csr.returns.ReturnPaymentState |
applyExchangeProcessPayments(ReturnRequest pReturnRequest)
Generates the refund store credit and applies it to the replacement order as a payment group.
|
void |
applyRefundMethodAllocations(ReturnRequest pReturnRequest,
java.util.Map pExtraParameters)
This method will execute a pipeline chain to validate and process the new RefundMethod allocations.
|
void |
applySelectedItems(ReturnRequest pReturnRequest,
atg.commerce.csr.returns.ProcessName pProcessName,
java.util.Map pExtraParameters)
Executes the process of applying the selected ReturnItems by executing
the given pipeline.
|
void |
applyStoreCredit(ReturnRequest pReturnRequest)
Deprecated.
|
protected void |
buildRefundMethodList(Order pOriginalOrder,
ReturnRequest pReturnRequest,
double pStoreCreditAmount,
double pTotalRefundAmount)
Populate the refund methods list for the given return request
|
protected void |
buildRefundMethodList(ReturnRequest pReturnRequest,
double pStoreCreditAmount)
Populate the refund methods list for the given return request
|
protected void |
calculateActualRefundsForReturnItems(ReturnRequest pReturnRequest)
Calculate the actual shipping and actual tax for return items based on the
actual values in the
ReturnRequest. |
protected double |
calculateDetailShare(ReturnItem pReturnItem,
java.lang.String pDetailAmountProperty,
atg.core.util.Range pReturnRange)
Calculates the share of the return by looking at the DetailedItemPriceInfos
for the range of the item being retured.
|
void |
calculateExchangeManualAdjustmentDiscountValues(ReturnRequest pReturnRequest)
Generates the Map of manual adjustment to exchange order value.
|
void |
calculateExchangeOrderPromotionDiscountValues(ReturnRequest pReturnRequest)
Generates the Map of order promotion to exchange order value.
|
protected double |
calculateItemAmountShare(ReturnRequest pReturnRequest,
ReturnItem pReturnItem,
atg.core.util.Range pReturnRange)
Calculates the share of the item's amount for the given return item and range.
|
protected double |
calculateManualAdjustmentShare(ReturnRequest pReturnRequest,
ReturnItem pReturnItem,
atg.core.util.Range pReturnRange)
Calculates the share of the order level manual adjustments for the given
item in the given range.
|
void |
calculateNewAmounts(ReturnRequest pReturnRequest,
java.util.Map pExtraParameters)
This method will calculate new suggested and actual refund amounts, exchange order totals and promotion value adjustments based on
the currently selected ReturnItems in the ReturnRequest.
|
protected void |
calculateNewFinalPriceForRAOItem(ReturnRequest pReturnRequest,
CommerceItem pRAOItem)
Called for each item in the RAO that is marked as final and has a returned quantity gt 0.
|
protected void |
calculateNewFinalPriceForRCOItem(ReturnRequest pReturnRequest,
CommerceItem pRCOItem,
ShippingGroup pShippingGroup,
long pQuantityToReturn)
Calculates a new final price for the given rco item based on the quantity being returned
from the shipping group.
|
protected double |
calculateOrderDiscountShare(ReturnRequest pReturnRequest,
ReturnItem pReturnItem,
atg.core.util.Range pReturnRange)
Calculates the share of the item's order discount share for the given
return item and range.
|
void |
calculateRefundAmounts(ReturnRequest pReturnRequest,
java.util.Map pExtraParameters)
Executes the pipeline configured by the property
calculateRefundAmountsPipelineChainId to
calculate the refund amounts for the return |
protected double |
calculateRefundForItem(ReturnRequest pReturnRequest,
ReturnItem pReturnItem,
atg.core.util.Range pReturnRange)
Calculates the refund for the given return item.
|
protected double |
calculateReturnFee(ReturnRequest pReturnRequest)
Calculate the suggested return fee for this request.
|
void |
calculateReturnItemSuggestedRefunds(ReturnRequest pReturnRequest)
Calculates the suggested refund amounts for the current set
of selected ReturnItems.
|
protected double |
calculateShareForRange(ReturnItem pReturnItem,
DetailedItemPriceInfo pDetailedItemPriceInfo,
atg.core.util.Range pRange,
double pAmount)
Calculates the share of the given amount for the given subset range within the given
DetailedItemPriceInfo
|
protected void |
calculateShippingCostShare(ReturnRequest pReturnRequest)
This method is called at the start of calculating refund amounts for the return.
|
protected java.util.Map |
calculateShippingCostShareMap(ReturnRequest pReturnRequest,
Order pOrder)
Generates a Map of
ShippingGroupCommerceItemRelationship ids to their shipping share amount. |
protected double |
calculateShippingRefundForItem(ReturnRequest pReturnRequest,
ReturnItem pReturnItem,
atg.core.util.Range pReturnRange)
Calculates the shipping refund for the given return item.
|
protected double |
calculateShippingShareForRelationship(ReturnRequest pReturnRequest,
ShippingGroupCommerceItemRelationship pShippingGroupCommerceItemRelationship,
double pShippingGroupTotalAmount,
java.util.Map pRelsAlreadyCalculated,
long pTotalQuantityInShippingGroup,
long pTotalQuantityAlreadyProcessed)
This utility method is used when calculating the shipping group's share amount for a shipping group relationship.
|
protected double |
calculateShippingShareForRelationship(ReturnRequest pReturnRequest,
ShippingGroupCommerceItemRelationship pShippingGroupCommerceItemRelationship,
java.util.Map pRelsAlreadyCalculated)
Provides a default implementation for calculating the shipping cost share for a
given
ShippingGroupCommerceItemRelationship . |
void |
calculateSuggestedAmounts(ReturnRequest pReturnRequest)
Deprecated.
in favor of
calculateRefundAmounts(ReturnRequest, Map) |
protected double |
calculateSuggestedRefundAmount(ReturnItem pReturnItem)
Deprecated.
in favor of calculateItemAmountShare
|
protected void |
calculateSuggestedRefunds(ReturnRequest pReturnRequest,
java.util.List pReturnItems)
Calculates the item refund amounts for the given return items.
|
protected double |
calculateTaxRefundForItem(ReturnRequest pReturnRequest,
ReturnItem pReturnItem,
atg.core.util.Range pReturnRange)
Calculates the tax refund value for the given return item.
|
protected void |
clearExchangeItemsFromPEO(ReturnRequest pReturnRequest)
Removes all items from the promotion evaluation order that were created from
the items in the new exchange order.
|
protected void |
clearExchangeShippingGroupsFromPEO(ReturnRequest pReturnRequest)
Removes all shipping groups from the promotion evaluation order that were created from
the shipping groups in the new exchange order.
|
protected void |
commitTransaction(javax.transaction.Transaction pTransaction)
Commits the supplied transaction
|
void |
confirmReturn(ReturnRequest pReturnRequest,
java.util.Map pExtraParameters)
Executes the process of confirmining a return by executing the confirm pipeline.
|
protected void |
copyAgentFinalPriceInfoToPEO(ReturnRequest pReturnRequest)
This method will determine if any items are marked as final
in the exchange order and mark the corresponding items final in
the peo using the same amount.
|
protected void |
copyExchangeItemAndShippingGroupInfoToPEO(ReturnRequest pReturnRequest)
This method makes a copy of each exchange item in the exchange order and
puts them in the PEO.
|
void |
copyPaymentGroups(ReturnRequest pReturnRequest,
Order pSrcOrder,
Order pDestinationOrder)
This method copies the payment groups from the original order to the
exchange order.
|
protected java.util.Map |
createExchangeOrderCloningPropExceptionsMap()
This method is a helper method which is used when cloning the exchange orders
for the replacement items in the RAO.
|
protected atg.commerce.csr.returns.ProcessPEOSynchronization |
createProcessPEOSynchronization(ReturnRequest pReturnRequest)
Creates a new
ProcessPEOSynchronization that's used to handle transaction rollback
in the processPromotionEvaluationOrder method. |
protected Order |
createPromotionEvaluationOrder(ReturnRequest pReturnRequest)
Creates the Promotion Evaluation Order for the exchange.
|
protected java.util.Set |
createRefundMethods(ReturnRequest pReturnRequest)
Create refund method items in the repository for the refund methods in a request.
|
void |
createReplacementOrderPaymentGroups(ReturnRequest pReturnRequest)
Creates the initial set of payment groups for the replacement order
|
void |
createReplacementOrderShippingGroups(ReturnRequest pReturnRequest)
Creates the initial set of shipping groups for the replacement order
|
protected MutableRepositoryItem |
createRequestItem(ReturnRequest pReturnRequest,
Profile pAgentProfile)
Create a new return request entry in the database
|
protected Order |
createReturnAdjustedOrder(ReturnRequest pReturnRequest)
Creates the return adjusted order by cloning the originating order, adding all replacement
items and shipping groups from all the exchange orders and re-prices.
|
protected Order |
createReturnCalculationOrder(ReturnRequest pReturnRequest)
Creates the Return Calculation Order by cloning the Return Adjusted Order in the ReturnRequest
|
void |
createReturnItemList(ReturnRequest pReturnRequest)
The ReturnRequest's returnItemList and returnItemMap are generated
based on the
ReturnItem objects with a quantityToProcess . |
protected java.util.Set |
createReturnItems(ReturnRequest pReturnRequest,
java.lang.String pRequestId)
Create records in the repository for the items in a request.
|
ReturnRequest |
createReturnRequest(Order pOrder)
Deprecated.
|
ReturnRequest |
createReturnRequest(Order pOrder,
atg.commerce.csr.returns.ProcessName pProcessName,
java.util.Map pExtraParameters)
Creates a new return request object for the given Order.
|
ReturnRequest |
createReturnRequest(java.lang.String pOrderId,
atg.commerce.csr.returns.ProcessName pProcessName,
java.util.Map pExtraParameters)
Creates a ReturnRequest for the given order.
|
protected MutableRepositoryItem |
createStoreCredit(java.lang.String pProfileId,
double pAmount,
java.util.Date pExpirationDate)
Create a stored credit record.
|
protected MutableRepositoryItem |
createStoreCredit(java.lang.String pProfileId,
double pAmount,
java.util.Date pExpirationDate,
boolean pTransient)
Create a stored credit record
|
atg.commerce.csr.returns.ReturnPaymentState |
determineReturnPaymentValues(ReturnRequest pReturnRequest)
Based on the current state of the return or exchange, rebuilds the return method list,
generates store credits and sets the
ReturnRequest returnPaymentState property. |
protected javax.transaction.Transaction |
ensureTransaction()
This method ensures that a transaction exists before returning.
|
protected GiftWithPurchaseSelection |
findMatchingRCOSelection(ReturnRequest pReturnRequest,
CommerceItem pRCOCommerceItem,
GiftWithPurchaseSelection pGiftWithPurchaseSelection)
Returns the
GiftWithPurchaseSelection from the given RCO item that matches
the given GiftWithPurchaseSelection |
void |
generateDiscountableMap(ReturnRequest pReturnRequest)
Generates the Map of discountable flags from the discountable state saved
on the originating order and all replacement orders.
|
java.util.Collection |
generateFilteredReturnRequestSelections(ReturnRequest pReturnRequest)
Starting with the generated
GiftWithPurchaseSelection objects for the ReturnRequest ,
create a new set of GiftWithPurchaseSelection objects that contains only
those selections that still have remaining quantity after decrementing quantity for
any targeted or selected quantity already in the exchange order. |
void |
generateGWPSelectionsForReturnItems(ReturnRequest pReturnRequest)
Generates the order level
GiftWithPurchaseSelection objects based on the item level GiftWithPurchaseSelection objects for each item
being returned. |
protected ItemCostAdjustment |
generateItemComparisonAdjustment(ReturnRequest pReturnRequest,
Order pOrder,
Order pCounterpartOrder,
java.lang.String pItemId,
java.lang.String pCounterpartItemId,
java.lang.String pShippingGroupId,
java.lang.String pCounterpartShippingGroupId)
Creates an
ItemCostAdjustment by comparing pricing information of the
given item and counterpart item. |
void |
generateItemCostAdjustments(ReturnRequest pReturnRequest)
This method (re)generates the
ItemCostAdjustment objects for each ReturnItem
and non-return item in the ReturnRequest |
protected java.util.Map |
generateItemPriceSourceParameters(ReturnRequest pReturnRequest,
Order pOrder)
When generated item price source objects from the original and all replacement orders in the return,
this method is called to generate the extra parameter map that gets passed to the api
that generates the ItemPriceSource objects from the order.
|
void |
generateItemPriceSources(ReturnRequest pReturnRequest)
This method creates the list of <@link atg.commerce.pricing.ItemPriceSource> objects from
the original order and all exchange orders in the return tree.
|
protected java.util.Collection |
generateOrderComparisonAdjustments(ReturnRequest pReturnRequest,
Order pOrder,
Order pCorrespondingOrder,
java.util.Map pItemToCorrespondingItemMap,
java.util.Map pShippingGroupToCorrespondingShippingGroupMap)
Generates a collection of
ItemCostAdjustment objects based on pricing deltas between
the order and the corresponding order. |
protected void |
generatePreReturnPromotionValueMap(ReturnRequest pReturnRequest)
This method will generate pre return promotion value
map and store it in the
preReturnPromotionValue property
of the ReturnRequest |
protected java.util.Collection |
generatePromotionEvaluationAdjustments(ReturnRequest pReturnRequest)
Creates
ItemCostAdjustment objects based on the pricing deltas between
the return calculation and promotion evaluation orders. |
protected RefundMethod |
generateRefundMethodFromPaymentGroup(PaymentGroup pPaymentGroup)
Generates a
RefundMethod based on the given payment group. |
protected java.util.List<RefundMethod> |
generateRefundMethodsForReturn(ReturnRequest pReturnRequest)
Generates refund methods based on the
ReturnRequest originating order and
all related replacement orders. |
protected java.util.List |
generateRefundMethodsFromOrder(Order pOrder)
Generates a list of refund methods based on the given order
|
void |
generateReplacementOrder(ReturnRequest pReturnRequest,
java.util.Map pExtraParameters)
Creates a new replacement order for the given ReturnRequest
|
protected java.util.Collection |
generateReturnCalculationAdjustments(ReturnRequest pReturnRequest)
Creates
ItemCostAdjustment objects based on the pricing deltas between
the return adjusted and return calculation orders. |
protected java.util.Collection |
generateShippingRefundAdjustments(ReturnRequest pReturnRequest)
Creates
ItemCostAdjustment objects for each ReturnItem
in the ReturnRequest that detail the calculated shipping refund
for each item being returned. |
java.util.Map |
generateSubmitReplacementOrderParameterMap(ReturnRequest pReturnRequest,
java.util.Locale pLocale,
java.util.Map pExtraParmeters)
Generates the extra paremeter map used to submit the replacement order through
the processOrder pipeline
|
java.lang.String |
getAmountCreditedPropertyName()
Returns the AmountCreditedPropertyName property
|
java.lang.String |
getApplyRefundAllocationsPipelineChainId() |
java.lang.String |
getApplySelectedItemsPipelineChainId() |
java.lang.String |
getCalculateRefundAmountsPipelineChainId()
The id of the pipeline used to calculate the refund for the return.
|
ClaimableManager |
getClaimableManager() |
CloneEditManager |
getCloneEditManager()
Returns a reference to the CloneEditManager
used to generate the working orders.
|
CommerceItemManager |
getCommerceItemManager() |
java.lang.String |
getConfirmReturnRequestPipelineChainId()
Returns the name of the pipeline that is executed when
a ReturnRequest is confirmed
|
java.lang.String |
getCreatePromotionEvaluationOrderPipeline() |
java.lang.String |
getCreateReturnAdjustedOrderPipeline() |
java.lang.String |
getCreateReturnCalculationOrderPipeline() |
java.lang.String |
getCreateReturnRequestPipelineChainId()
Returns the name of the pipeline that is executed when
a ReturnRequest initially created
|
java.lang.String |
getCreditCardType()
Returns the creditCardType.
|
double |
getDefaultReturnFee()
Returns the fee associated with the return
|
java.util.Properties |
getExchangeOrderExcludedProperties()
Returns the excluded order properties
|
java.util.Map |
getExchangeOrderExcludedPropertiesMap()
returns the property ExchangeOrderExcludedPropertiesMap
|
java.lang.String |
getGenerateReplacementOrderPipelineChainId()
The id of the pipeline used to create the replacement order.
|
java.lang.String |
getGiftCertificateType()
Returns the giftCertificateType.
|
InventoryManager |
getInventoryManager() |
double |
getMaximumRefundAmount(CreditCard pCreditCard)
Returns the maximum amount that can be credited to
pCreditCard |
double |
getMaximumRefundAmount(PaymentGroup pPaymentGroup)
Returns the maximum refund amount that be credited to the given payment group.
|
double |
getMaxStoreCreditRefundAmount(RepositoryItem pStoreCredit)
Returns the maximum amount that can be credited to this store credit.
|
OrderManager |
getOrderManager()
Returns the order manager
|
OrderStates |
getOrderStates()
Returns the order states
|
atg.commerce.csr.returns.PaymentGroupCopyManager |
getPaymentGroupCopyManager()
Returns the paymentGroupCopyManager
|
java.lang.String |
getPaymentGroupCopyManagerPath()
Returns the paymentGroupCopyManagerPath.
|
PaymentGroupManager |
getPaymentGroupManager()
Returns the PaymentGroupManager to use in creating the StoreCredit.
|
PaymentManager |
getPaymentManager() |
java.lang.String |
getPendingCustomerReturnOrderState() |
java.lang.String |
getPrepareReplacementOrderChainId()
Returns the prepareReplacementOrderChainId
|
PricingTools |
getPricingTools() |
java.util.HashMap |
getProcessOrderMap(java.util.Locale pLocale)
Deprecated.
|
Repository |
getProfileRepository() |
protected atg.core.util.Range |
getRangeWithinDetail(DetailedItemPriceInfo pDetailedItemPriceInfo,
atg.core.util.Range pRange)
Determines the range of the DetailedItemPriceInfo that is included in the given range.
|
java.lang.String |
getReceiveItemPipelineChainId() |
protected RefundMethod |
getRefundAmountRemaningRefundMethod()
This method is called by the refund allocation process to return a refund method where any unallocated refund amount
can be allocated.
|
atg.commerce.csr.returns.ReturnEventMessageSource |
getReturnEventMessageSource() |
ReturnItemStates |
getReturnItemStates()
Returns the returned item states
|
static ReturnManager |
getReturnManager()
Returns the ReturnManager component.
|
ReturnStates |
getReturnStates() |
ReturnTools |
getReturnTools() |
java.lang.String |
getSalesChannel()
Returns the salesChannel.
|
java.lang.String |
getSettleReturnRequestPipelineChainId() |
ShippingGroupManager |
getShippingGroupManager()
Returns the ShippingGroup manager
|
java.lang.String |
getStoreCreditType()
Returns the PaymentGroup type used to create StoreCredits.
|
java.lang.String |
getSubmitReplacementOrderPipelineChainId()
Returns the pipeline used to submit a replacement order to fulfillment
|
javax.transaction.TransactionManager |
getTransactionManager()
Returns the transaction manager to use
|
void |
initializeRefundMethodList(ReturnRequest pReturnRequest)
Initializes the refund methods based on the total refund amount in the ReturnRequest
|
void |
initializeReplacementOrderGWPMetaData(ReturnRequest pReturnRequest)
Initializes the GWP meta-data on the replacement Order needed for exchanging gifts.
|
void |
initPreReturnPromotionValues(ReturnRequest pReturnRequest) |
void |
initReturnAdjustedOrder(ReturnRequest pReturnRequest)
Creates a new Return Adjusted Order in the ReturnRequest
|
void |
initReturnCalculationOrder(ReturnRequest pReturnRequest)
Creates a new Return Calculation Order in the ReturnRequest
|
void |
initShippingCostShares(ReturnRequest pReturnRequest)
Creates the shipping cost share map in the ReturnRequest
|
void |
instantiateReplacementOrder(ReturnRequest pReturnRequest)
Creates a new order using OrderManager and places it in the ReturnRequest's
replacementOrder property. |
boolean |
isDoShippingRefunds()
The flag determines if shipping refunds are calculated.
|
boolean |
isInitializeActualShippingRefund()
The flag determines if the actual shipping refund on the ReturnRequest
and each ReturnItem is initialized from the suggested values.
|
protected boolean |
isOrderPaymentGroupsAuthorized(Order pOrder)
If any of the payment groups have non empty authorization status, then the payment groups in the order
are considered to be already authorized.
|
boolean |
isProcessImmediately()
returns the 'process immediately' setting
|
boolean |
isReadyForSettlement(ReturnRequest pReturnRequest)
Returns true if the ReturnRequest is ready for settlement (e.g.
|
void |
issueAlternateCreditType(Order pOrder,
ReturnRequest pReturnRequest,
java.util.Vector pCredits,
java.lang.String pProfileId,
RefundMethod pRefundMethod,
double pRefundAmount)
This method is called by {@link #issueCredits(Order, ReturnRequest)
to settle the credit on a RefundMethod
type that is not handled by the core implementation
|
protected java.util.List |
issueCredits(Order pOrder,
ReturnRequest pReturnRequest)
Settles the credits for each RefundMethod in the return.
|
protected boolean |
isTransactionMarkedAsRollBack()
Returns true if the transaction associated with the current thread
is marked for roll back.
|
boolean |
isValidExchangeRefundValue(ReturnRequest pReturnRequest)
determines if the refund value is appropriate
for an exchange.
|
boolean |
isValidRefundValue(ReturnRequest pReturnRequest)
Deprecated.
use isValidExchangeRefundValue and isValidReturnRefundValue
|
boolean |
isValidReturnRefundValue(ReturnRequest pReturnRequest)
determines if the refund value is appropriate
for a return.
|
void |
markReturnRequestAsProcessed(ReturnRequest pReturnRequest)
Sets the processed property to true.
|
protected Order |
prepareReplacementOrder(ReturnRequest pReturnRequest)
Deprecated.
in favor of
generateReplacementOrder(ReturnRequest, Map) |
protected void |
prepareReplacementOrderToSubmit(ReturnRequest pReturnRequest) |
void |
prepareReplacementOrderToSubmit(ReturnRequest pReturnRequest,
java.util.Map pExtraParameters)
Executes the pre-submission process on the replacement order.
|
void |
processPromotionEvaluationOrder(ReturnRequest pReturnRequest)
This method is called whenever the exchange order is priced.
|
protected void |
processRequest(Order pOrder,
ReturnRequest pReturnRequest)
Deprecated.
in favor of
settleReturnRequest(ReturnRequest, String, Map) |
void |
processSelectedReturnItems(ReturnRequest pReturnRequest)
Deprecated.
|
void |
recordMerchandiseReturn(ReturnRequest pReturnRequest,
ReturnItem pReturnItem,
long pQuantityReceived,
java.lang.String pDisposition,
java.util.Map pExtraParameters)
Record the receipt of returned merchandise
|
void |
recordMerchandiseReturn(java.lang.String pReturnRequestId,
java.util.Map<java.lang.String,java.lang.Long> pQuantityBeingReceived,
java.util.Map<java.lang.String,java.lang.String> pDispositionReceived,
java.util.Map pExtraParameters)
Records a batch of items being received.
|
void |
registerProcessPEOSynchronization(ReturnRequest pReturnRequest)
Registers a synchronization object that will invalidate the promotion evaluation
order and reset the item and shipping group maps used to map peo objects to the
exchange order objects when the transaction is rolled back.
|
protected void |
removeGWPMetaDataFromExchangeOrder(ReturnRequest pReturnRequest)
Removes all gwp meta-data from the exchange order
|
protected void |
resetCommerceIds(ReturnRequest pReturnRequest,
java.util.Collection pAdjustments)
Updates each adjustment's commerce item id and shipping group id to reference the
original commerce item and shipping group id.
|
void |
resetGWPMetaData(ReturnRequest pReturnRequest)
Resets the GWP meta-data for determining GWP selections and removes all
GWP meta-data from the exchange order.
|
void |
resetPromotionEvaluationProperties(ReturnRequest pReturnRequest)
Resets all ReturnRequest properties generated from the
processing the promotion evaluation order.
|
void |
resetRefundAmounts(ReturnRequest pReturnRequest)
Resets the suggested and actual refund amounts in the ReturnRequest and selected
ReturnItems to 0.
|
void |
resetReplacementOrderProperties(ReturnRequest pReturnRequest,
java.util.Map pExtraParameters)
This method will reset the replacement order and generated store credit values of the
ReturnRequest.
|
protected void |
resetReturnRequestForCurrentProcess(ReturnRequest pReturnRequest,
atg.commerce.csr.returns.ProcessName pNewProcessName,
java.util.Map pExtraParameters)
This method will reset the properties of the ReturnRequest based on the value of the
processName
property. |
void |
returnCommerceItems(ReturnRequest pReturnRequest)
Calls {@link CommerceItemManager#returnCommerceItem(Order, String, String, long)) for each
ReturnItem in the ReturnRequest
|
void |
saveReturnRequest(ReturnRequest pReturnRequest,
Profile pAgentProfile)
Deprecated.
in favor of
confirmReturn(ReturnRequest, Map) |
void |
saveReturnRequestToRepository(ReturnRequest pReturnRequest)
Adds the necessary repository items for saving the ReturnRequest
and sets the
requestId property of the ReturnRequest |
void |
sendReturnCompletedEvent(ReturnRequest pReturnRequest)
Sends the event that indicates a return has been completed.
|
void |
sendReturnMerchandiseReceivedEvent(ReturnRequest pReturnRequest,
java.util.Map<java.lang.String,java.lang.Long> pReturnItemToQuantityReceived,
java.util.Map<java.lang.String,java.lang.String> pReturnItemToReceivedDisposition)
Sends the event that indicates returned merchandise has been received.
|
void |
sendReturnSubmittedEvent(ReturnRequest pReturnRequest)
Sends the event the indicated a new return has been submitted.
|
void |
setActualRefundsFromSuggestedRefunds(ReturnRequest pReturnRequest)
Sets the actual refumds amounts for the ReturnRequest and each selected
ReturnItem.
|
void |
setApplyRefundAllocationsPipelineChainId(java.lang.String pApplyRefundAllocationsPipelineChainId) |
void |
setApplySelectedItemsPipelineChainId(java.lang.String pApplySelectedItemsPipelineChainId) |
void |
setCalculateRefundAmountsPipelineChainId(java.lang.String pCalculateRefundAmountsPipelineChainId) |
void |
setClaimableManager(ClaimableManager pClaimableManager)
Sets the Claimable manager
|
void |
setCloneEditManager(CloneEditManager pCloneEditManager) |
void |
setCommerceItemManager(CommerceItemManager pCommerceItemManager)
Sets the CommerceItem manager
|
void |
setConfirmReturnRequestPipelineChainId(java.lang.String pConfirmReturnRequestPipelineChainId) |
void |
setCreatePromotionEvaluationOrderPipeline(java.lang.String pCreatePromotionEvaluationOrderPipeline)
Sets the name of the pipeline used to generate the Promotion Evaluation Order
|
void |
setCreateReturnAdjustedOrderPipeline(java.lang.String pCreateReturnAdjustedOrderPipeline)
Sets the name of the pipeline used to generate the Return Adjusted Order
|
void |
setCreateReturnCalculationOrderPipeline(java.lang.String pCreateReturnCalculationOrderPipeline)
Sets the name of the pipeline used to generate the Return Calculation Order
|
void |
setCreateReturnRequestPipelineChainId(java.lang.String pCreateReturnRequestPipelineChainId) |
void |
setCreditCardType(java.lang.String pCreditCardType)
Sets the creditCardType.
|
void |
setDefaultReturnFee(double pDefaultReturnFee)
Sets the default fee associated with a return
|
void |
setDoShippingRefunds(boolean pDoShippingRefunds) |
void |
setExchangeOrderExcludedProperties(java.util.Properties pExchangeOrderExcludedProperties)
set the property ExchangeOrderExcludedProperties
|
void |
setGenerateReplacementOrderPipelineChainId(java.lang.String pGenerateReplacementOrderPipelineChainId) |
void |
setGiftCertificateType(java.lang.String pGiftCertificateType)
Sets the giftCertificateType.
|
void |
setInitializeActualShippingRefund(boolean pInitializeActualShippingRefund) |
void |
setInventoryManager(InventoryManager pInventoryManager)
Sets the inventory manager
|
void |
setOrderManager(OrderManager pOrderManager)
Sets the order manager
|
void |
setOrderStates(OrderStates pOrderStates)
Sets the order states
|
void |
setPaymentGroupCopyManager(atg.commerce.csr.returns.PaymentGroupCopyManager pPaymentGroupCopyManager)
Sets the paymentGroupCopyManager
|
void |
setPaymentGroupCopyManagerPath(java.lang.String pPaymentGroupCopyManagerPath)
Sets the paymentGroupCopyManagerPath.
|
void |
setPaymentGroupManager(PaymentGroupManager pPaymentGroupManager)
Specifies the PaymentGroupManager to use in creating the StoreCredit.
|
void |
setPaymentManager(PaymentManager pPaymentManager)
Sets the payment manager
|
void |
setPendingCustomerReturnOrderState(java.lang.String pPendingCustomerReturnOrderState)
Sets the state that indicates that processing of the order is pending a customer return
|
void |
setPrepareReplacementOrderChainId(java.lang.String pPrepareReplacementOrderChainId)
Sets the prepareReplacementOrderChainId
|
void |
setPricingTools(PricingTools pPricingTools)
sets the pricing tools component
|
void |
setProcessImmediately(boolean pProcessImmediately)
sets the 'process immediately' setting
|
void |
setProfileRepository(Repository pProfileRepository)
Sets the repository
|
void |
setReceiveItemPipelineChainId(java.lang.String pReceiveItemPipelineChainId) |
void |
setReturnEventMessageSource(atg.commerce.csr.returns.ReturnEventMessageSource pReturnEventMessageSource) |
void |
setReturnFee(ReturnRequest pReturnRequest)
Sets the return fee value for the request.
|
void |
setReturnItemStates(ReturnItemStates pReturnItemStates)
Sets the returned item states
|
void |
setReturnPaymentState(ReturnRequest pReturnRequest)
Deprecated.
This value is now determined by
ReturnRequest.getReturnPaymentState() |
void |
setReturnShipmentRequiredForReturnItem(ReturnItem pReturnItem,
ReturnRequest pReturnRequest)
This method sets the
returnShipmentRequired property of the ReturnItem . |
void |
setReturnStates(ReturnStates pReturnStates)
Sets the return request states
|
void |
setReturnTools(ReturnTools pReturnTools)
Sets the return tools
|
void |
setSalesChannel(java.lang.String pSalesChannel)
Sets the salesChannel.
|
void |
setSettleReturnRequestPipelineChainId(java.lang.String pSettleReturnRequestPipelineChainId) |
void |
setShippingGroupManager(ShippingGroupManager pShippingGroupManager)
Sets the ShippingGroup manager
|
void |
setStoreCreditType(java.lang.String pStoreCreditType)
Specifies the PaymentGroup type used to create StoreCredits.
|
void |
setSubmitReplacementOrderPipelineChainId(java.lang.String pSubmitReplacementOrderPipelineChainId) |
void |
setSuggestedAmountsFromItems(ReturnRequest pReturnRequest)
Sets the suggested shipping and tax amounts in the ReturnRequest based on
the suggested amounts in the selected ReturnItems.
|
java.util.List |
settleCredits(ReturnRequest pReturnRequest)
Settles the credit (refunds) for the RefundMethods in the return request.
|
void |
settleReturnRequest(ReturnRequest pReturnRequest,
java.lang.String pSettleReturnRequestPipelineChainId,
java.util.Map pExtraParameters)
Executes the pipeline to settle the return request.
|
void |
setTransactionManager(javax.transaction.TransactionManager pTransactionManager)
Sets the transaction manager to use
|
protected java.lang.String |
stateToString(ObjectStates pObjectStates,
java.lang.String pStateString)
Convert a state string
|
void |
submitReplacementOrder(ReturnRequest pReturnRequest,
java.util.Map pExtraParameters)
Submits the replacement order for fulfillment processing
|
void |
updateAmountOfStoreCredits(ReturnRequest pReturnRequest)
The List of refund methods can include up to two
StoreCreditRefundMethod s, which are automatically created for the return or exchange. |
void |
updateInventoryOnReceive(ReturnRequest pReturnRequest,
ReturnItem pReturnItem,
long pQuantityReceived)
Updates the inventory based on the item being received
|
protected void |
updatePromotionEvaluationOrder(ReturnRequest pReturnRequest)
This method does the work of updating the Promotion Evaluation Order.
|
void |
updateReplacementOrderStateOnConfirm(ReturnRequest pReturnRequest)
Sets the state of the replacement order when a return request is confirmed
|
void |
updateReturnItemOnReceive(ReturnRequest pReturnRequest,
ReturnItem pReturnItem,
long pQuantityReceived,
java.lang.String pDisposition)
Updates the given ReturnItem on receive.
|
protected boolean |
updateReturnItemState(ReturnItem pReturnItem)
Update the state of a returned item based on its current quantity values
and its
returnShipmentRequired value. |
protected boolean |
updateReturnState(ReturnRequest pReturnRequest)
Review the state of all items in a return request and update the state of the return, if necessary.
|
boolean |
updateStateFromReturnItemState(ReturnRequest pReturnRequest)
Updates the state of the ReturnRequest based on the state of the ReturnItems
|
void |
updateStateOfReturnItems(ReturnRequest pReturnRequest)
Iterates over the ReturnItems and sets their state based on their current
values.
|
void |
updateStoreCreditAmount(atg.commerce.csr.returns.StoreCreditRefundMethod pStoreCreditRefundMethod,
java.util.List pRefundMethodsList,
ReturnRequest pReturnRequest)
Adjusts the amount of the store credit claimable to match the amount in the
StoreCreditRefundMethod . |
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 java.lang.String CLASS_VERSION
protected atg.commerce.csr.returns.ReturnEventMessageSource mReturnEventMessageSource
protected java.lang.String mPrepareReplacementOrderChainId
protected static java.util.ResourceBundle sResourceBundle
protected java.lang.String mGenerateReplacementOrderPipelineChainId
protected java.lang.String mCalculateRefundAmountsPipelineChainId
protected java.lang.String mApplySelectedItemsPipelineChainId
protected java.lang.String mApplyRefundAllocationsPipelineChainId
protected java.lang.String mReceiveItemPipelineChainId
protected java.lang.String mSettleReturnRequestPipelineChainId
protected java.lang.String mSubmitReplacementOrderPipelineChainId
protected java.lang.String mConfirmReturnRequestPipelineChainId
protected java.lang.String mCreateReturnRequestPipelineChainId
protected java.lang.String mCreateReturnAdjustedOrderPipeline
protected java.lang.String mCreateReturnCalculationOrderPipeline
protected java.lang.String mCreatePromotionEvaluationOrderPipeline
protected java.util.Properties mExchangeOrderExcludedProperties
protected java.util.Map mExchangeOrderExcludedPropertiesMap
protected java.lang.String mSalesChannel
protected boolean mProcessImmediately
protected boolean mDoShippingRefunds
protected boolean mInitializeActualShippingRefund
protected atg.commerce.csr.returns.PaymentGroupCopyManager mPaymentGroupCopyManager
protected java.lang.String mGiftCertificateType
protected java.lang.String mCreditCardType
protected java.lang.String mAmountCreditedPropertyName
protected ClaimableManager mClaimableManager
protected CommerceItemManager mCommerceItemManager
protected double mDefaultReturnFee
protected InventoryManager mInventoryManager
protected OrderManager mOrderManager
protected OrderStates mOrderStates
protected PaymentGroupManager mPaymentGroupManager
protected PaymentManager mPaymentManager
protected java.lang.String mPendingCustomerReturnOrderState
protected PricingTools mPricingTools
protected Repository mProfileRepository
protected ReturnItemStates mReturnItemStates
protected ReturnTools mReturnTools
protected ReturnStates mReturnStates
protected ShippingGroupManager mShippingGroupManager
protected java.lang.String mStoreCreditType
protected javax.transaction.TransactionManager mTransactionManager
protected static ReturnManager mReturnManager
public static java.lang.String mReturnManagerComponentPath
public atg.commerce.csr.returns.ReturnEventMessageSource getReturnEventMessageSource()
public void setReturnEventMessageSource(atg.commerce.csr.returns.ReturnEventMessageSource pReturnEventMessageSource)
public java.lang.String getPrepareReplacementOrderChainId()
public void setPrepareReplacementOrderChainId(java.lang.String pPrepareReplacementOrderChainId)
pPrepareReplacementOrderChainId
- the prepareReplacementOrderChainId to setpublic java.lang.String getGenerateReplacementOrderPipelineChainId()
public void setGenerateReplacementOrderPipelineChainId(java.lang.String pGenerateReplacementOrderPipelineChainId)
public java.lang.String getCalculateRefundAmountsPipelineChainId()
public void setCalculateRefundAmountsPipelineChainId(java.lang.String pCalculateRefundAmountsPipelineChainId)
public java.lang.String getApplySelectedItemsPipelineChainId()
public void setApplySelectedItemsPipelineChainId(java.lang.String pApplySelectedItemsPipelineChainId)
public java.lang.String getApplyRefundAllocationsPipelineChainId()
public void setApplyRefundAllocationsPipelineChainId(java.lang.String pApplyRefundAllocationsPipelineChainId)
public java.lang.String getReceiveItemPipelineChainId()
public void setReceiveItemPipelineChainId(java.lang.String pReceiveItemPipelineChainId)
public java.lang.String getSettleReturnRequestPipelineChainId()
public void setSettleReturnRequestPipelineChainId(java.lang.String pSettleReturnRequestPipelineChainId)
public java.lang.String getSubmitReplacementOrderPipelineChainId()
public void setSubmitReplacementOrderPipelineChainId(java.lang.String pSubmitReplacementOrderPipelineChainId)
public java.lang.String getConfirmReturnRequestPipelineChainId()
public void setConfirmReturnRequestPipelineChainId(java.lang.String pConfirmReturnRequestPipelineChainId)
public java.lang.String getCreateReturnRequestPipelineChainId()
public void setCreateReturnRequestPipelineChainId(java.lang.String pCreateReturnRequestPipelineChainId)
public java.lang.String getCreateReturnAdjustedOrderPipeline()
public void setCreateReturnAdjustedOrderPipeline(java.lang.String pCreateReturnAdjustedOrderPipeline)
public java.lang.String getCreateReturnCalculationOrderPipeline()
public void setCreateReturnCalculationOrderPipeline(java.lang.String pCreateReturnCalculationOrderPipeline)
public java.lang.String getCreatePromotionEvaluationOrderPipeline()
public void setCreatePromotionEvaluationOrderPipeline(java.lang.String pCreatePromotionEvaluationOrderPipeline)
public CloneEditManager getCloneEditManager()
public void setCloneEditManager(CloneEditManager pCloneEditManager)
public void setExchangeOrderExcludedProperties(java.util.Properties pExchangeOrderExcludedProperties)
pExchangeOrderExcludedProperties
- the value to set for property ExchangeOrderExcludedPropertiespublic java.util.Properties getExchangeOrderExcludedProperties()
public java.util.Map getExchangeOrderExcludedPropertiesMap()
public java.lang.String getSalesChannel()
Returns the sales channel which is used to submit the order. This could be "Web", "Call Center",
or "Scheduled Orders". These values are defined in the order repository.
public void setSalesChannel(java.lang.String pSalesChannel)
Sets the sales channel which is used to submit the order. This could be "Web", "Call Center",
or "Scheduled Orders". These values are defined in the order repository.
pSalesChannel
- public void setProcessImmediately(boolean pProcessImmediately)
pProcessImmediately
- a boolean indicating if this request should be processed immediatelypublic boolean isProcessImmediately()
public boolean isDoShippingRefunds()
Default is true
public void setDoShippingRefunds(boolean pDoShippingRefunds)
public boolean isInitializeActualShippingRefund()
Default is true
public void setInitializeActualShippingRefund(boolean pInitializeActualShippingRefund)
public java.lang.String getPaymentGroupCopyManagerPath()
public void setPaymentGroupCopyManagerPath(java.lang.String pPaymentGroupCopyManagerPath)
pPaymentGroupCopyManagerPath
- public java.lang.String getGiftCertificateType()
public void setGiftCertificateType(java.lang.String pGiftCertificateType)
pGiftCertificateType
- public java.lang.String getCreditCardType()
public void setCreditCardType(java.lang.String pCreditCardType)
pCreditCardType
- public java.lang.String getAmountCreditedPropertyName()
public void setClaimableManager(ClaimableManager pClaimableManager)
pClaimableManager
- the claimable managerpublic ClaimableManager getClaimableManager()
public void setCommerceItemManager(CommerceItemManager pCommerceItemManager)
pCommerceItemManager
- the commerce item managerpublic CommerceItemManager getCommerceItemManager()
public void setDefaultReturnFee(double pDefaultReturnFee)
pDefaultReturnFee
- the default fee associated with a returnpublic double getDefaultReturnFee()
public void setInventoryManager(InventoryManager pInventoryManager)
pInventoryManager
- the inventory managerpublic InventoryManager getInventoryManager()
public void setOrderManager(OrderManager pOrderManager)
pOrderManager
- the order managerpublic OrderManager getOrderManager()
public void setOrderStates(OrderStates pOrderStates)
pOrderStates
- the order statespublic OrderStates getOrderStates()
public void setPaymentGroupManager(PaymentGroupManager pPaymentGroupManager)
pPaymentGroupManager
- a PaymentGroupManager
valuepublic PaymentGroupManager getPaymentGroupManager()
PaymentGroupManager
valuepublic void setPaymentManager(PaymentManager pPaymentManager)
pPaymentManager
- the payment managerpublic PaymentManager getPaymentManager()
public void setPendingCustomerReturnOrderState(java.lang.String pPendingCustomerReturnOrderState)
pPendingCustomerReturnOrderState
- the state that indicates that processing of the order
is pending a customer returnpublic java.lang.String getPendingCustomerReturnOrderState()
public void setPricingTools(PricingTools pPricingTools)
pPricingTools
- the pricing tools componentpublic PricingTools getPricingTools()
public void setProfileRepository(Repository pProfileRepository)
pProfileRepository
- the profile repositorypublic Repository getProfileRepository()
public void setReturnItemStates(ReturnItemStates pReturnItemStates)
pReturnItemStates
- the returned item statespublic ReturnItemStates getReturnItemStates()
public void setReturnTools(ReturnTools pReturnTools)
pReturnTools
- the return toolspublic ReturnTools getReturnTools()
public void setReturnStates(ReturnStates pReturnStates)
pReturnStates
- the return request statespublic ReturnStates getReturnStates()
public void setShippingGroupManager(ShippingGroupManager pShippingGroupManager)
pShippingGroupManager
- the shipping group managerpublic ShippingGroupManager getShippingGroupManager()
public void setStoreCreditType(java.lang.String pStoreCreditType)
pStoreCreditType
- a String
valuepublic java.lang.String getStoreCreditType()
String
valuepublic void setTransactionManager(javax.transaction.TransactionManager pTransactionManager)
pTransactionManager
- the transaction managerpublic javax.transaction.TransactionManager getTransactionManager()
public void setPaymentGroupCopyManager(atg.commerce.csr.returns.PaymentGroupCopyManager pPaymentGroupCopyManager)
pPaymentGroupCopyManager
- the paymentGroupCopyManager to setpublic atg.commerce.csr.returns.PaymentGroupCopyManager getPaymentGroupCopyManager()
public void applyStoreCredit(ReturnRequest pReturnRequest) throws CommerceException
pReturnRequest
- the return requestCommerceException
public void initializeRefundMethodList(ReturnRequest pReturnRequest) throws ReturnException
pReturnRequest
- ReturnException
buildRefundMethodList(ReturnRequest, double)
,
applyExchangeProcessPayments(ReturnRequest)
protected void resetReturnRequestForCurrentProcess(ReturnRequest pReturnRequest, atg.commerce.csr.returns.ProcessName pNewProcessName, java.util.Map pExtraParameters) throws ReturnException
processName
property.
pReturnRequest
- The ReturnRequestpNewProcessName
- Optional new ProcessName
to use. The ReturnRequest
processName
property will be set to the this value before resetting any other ReturnRequest
values.pExtraParameters
- ReturnException
resetReplacementOrderProperties(ReturnRequest, Map)
,
resetPromotionEvaluationProperties(ReturnRequest)
protected void buildRefundMethodList(ReturnRequest pReturnRequest, double pStoreCreditAmount) throws ReturnException
pReturnRequest
- pStoreCreditAmount
- ReturnException
protected void buildRefundMethodList(Order pOriginalOrder, ReturnRequest pReturnRequest, double pStoreCreditAmount, double pTotalRefundAmount) throws ReturnException
This method uses generateRefundMethodsForReturn(ReturnRequest)
to generate all refund methods from an order.
After generating refund methods, this method calls allocateRefundAmountForReturn(Order, ReturnRequest, double, Collection)
to distribute the refund amount to the given refund methods. If the refund amount is not fully allocated and there is any remaining amount,
then remaining refund amount is added to the getRefundAmountRemaningRefundMethod()
.
If the pStoreCreditAmount
is greater than zero, then the store credit refund amount is added to the
getRefundAmountRemaningRefundMethod()
. In that case the getRefundAmountRemaningRefundMethod()
should return
StoreCreditRefundMethod
.
pOriginalOrder
- pReturnRequest
- pStoreCreditAmount
- pTotalRefundAmount
- The total refund amount to be allocatedReturnException
- if the refund amount is not fully allocated to the refund methods then this exception is thrown.allocateRefundAmountForReturn(Order, ReturnRequest, double, Collection)
,
generateRefundMethodsForReturn(ReturnRequest)
,
getRefundAmountRemaningRefundMethod()
protected RefundMethod getRefundAmountRemaningRefundMethod() throws ReturnException
The unallocated amount is any refund amount that could not be allocated to the other refund methods during the allocation process.
By default, this method returns a store credit refund method with no upper limit
ReturnException
StoreCreditRefundMethod
,
ReturnTools#createRefundMethodInstance(String)}
,
buildRefundMethodList(Order, ReturnRequest, double, double)
,
StoreCreditRefundMethod
protected double allocateRefundAmountForReturn(Order pOriginalOrder, ReturnRequest pReturnRequest, double pRefundAmountToBeAllocated, java.util.Collection<RefundMethod> pRefundMethods) throws ReturnException
This method takes
Note that it may not be possible to allocated the entire amount to the refund methods if
their maximum refund amount total is less that the amount being allocated. In this case, the returned
allocated amount will be less than the given amount to be allocated.pRefundAmountToBeAllocated
and allocates the amount to
pRefundMethods
.
pOriginalOrder
- the original purchase orderpReturnRequest
- the return request objectpRefundAmountToBeAllocated
- The amount to be allocatedpRefundMethods
- The refund amount allocated to these refund methods.ReturnException
protected java.util.List<RefundMethod> generateRefundMethodsForReturn(ReturnRequest pReturnRequest) throws ReturnException
ReturnRequest
originating order and
all related replacement orders.
pReturnRequest
- RefundMethod
ReturnException
ReturnRequest.getOriginatingOrder()
,
ReturnRequest.getRelatedReplacementOrders()
,
generateRefundMethodsFromOrder(Order)
protected java.util.List generateRefundMethodsFromOrder(Order pOrder) throws ReturnException
Iterates over the payment groups in the order and calls generateRefundMethodFromPaymentGroup
for each one.
If a refund method is generated for a payment group with a maximum refund amount greater than 0, it is included in the list of returned refund methods.
pOrder
- the order from which refund methods are to be generated.RefundMethod
sReturnException
generateRefundMethodFromPaymentGroup(PaymentGroup)
,
getMaximumRefundAmount(PaymentGroup)
protected RefundMethod generateRefundMethodFromPaymentGroup(PaymentGroup pPaymentGroup) throws ReturnException
RefundMethod
based on the given payment group.
This implementation will generate a RefundMethod
for CreditCard
payment groups only. Extend this method to generate RefundMethod
for other types of payment groups.
pPaymentGroup
- ReturnException
protected void calculateSuggestedRefunds(ReturnRequest pReturnRequest, java.util.List pReturnItems)
All refunds are calculated based on the range of the item being returned. The range highbound starts as the commerce item's quantity - 1. The range lowbound starts as the highbound + returnItem.quantityToReturn + 1. As each return item is processed, the highbound is adjusted down by the last returnItem.quantityToReturn. Lowbound is always adjusted to maintain the original relativity to the highbound.
Note that the commerce item's quantity referenced in the return items is adjusted as each return is processed.
The item, shipping and tax refunds are all calculated for each item.
Note that shipping refund is only calculated if the property doShippingRefunds
is true
pReturnRequest
- the return requestpReturnItems
- list of return items that reference the same commerce itemcalculateRefundForItem(ReturnRequest, ReturnItem, Range)
,
calculateTaxRefundForItem(ReturnRequest, ReturnItem, Range)
,
calculateShippingRefundForItem(ReturnRequest, ReturnItem, Range)
public void calculateSuggestedAmounts(ReturnRequest pReturnRequest)
calculateRefundAmounts(ReturnRequest, Map)
public void calculateRefundAmounts(ReturnRequest pReturnRequest, java.util.Map pExtraParameters) throws ReturnException, PipelineErrorReturnException
calculateRefundAmountsPipelineChainId
to
calculate the refund amounts for the returnpReturnRequest
- pExtraParameters
- ReturnException
PipelineErrorReturnException
public void calculateReturnItemSuggestedRefunds(ReturnRequest pReturnRequest)
pReturnRequest
- public void setActualRefundsFromSuggestedRefunds(ReturnRequest pReturnRequest) throws ReturnException
pReturnRequest
- ReturnException
public void setSuggestedAmountsFromItems(ReturnRequest pReturnRequest) throws ReturnException
pReturnRequest
- ReturnException
public void resetRefundAmounts(ReturnRequest pReturnRequest)
pReturnRequest
- public void adjustSuggestedAmountsForNonReturnItems(ReturnRequest pReturnRequest) throws ReturnException
ItemCostAdjustment
objects that reference item/shipping relationships
not being returned.
This method will adjust the suggestedTaxRefund, suggestedShippingRefund and totalItemRefund
of the ReturnRequest based on the ItemCostAdjustment
s made to the non-return items. These adjustments
are avaiable in the nonReturnItemCostAdjustments
of the ReturnRequest.
pReturnRequest
- ReturnException
public void generateItemCostAdjustments(ReturnRequest pReturnRequest) throws ReturnException
ItemCostAdjustment
objects for each ReturnItem
and non-return item in the ReturnRequest
pReturnRequest
- ReturnException
generateReturnCalculationAdjustments(ReturnRequest)
,
generatePromotionEvaluationAdjustments(ReturnRequest)
,
generateShippingRefundAdjustments(ReturnRequest)
public void processSelectedReturnItems(ReturnRequest pReturnRequest) throws ReturnException
applySelectedItems(ReturnRequest, ProcessName, Map)
ReturnItems
.pReturnRequest
- ReturnException
public void calculateNewAmounts(ReturnRequest pReturnRequest, java.util.Map pExtraParameters) throws ReturnException
pReturnRequest
- pExtraParameters
- ReturnException
public void createReturnItemList(ReturnRequest pReturnRequest) throws ReturnException
ReturnItem
objects with a quantityToProcess
.
pReturnRequest
- ReturnException
public void resetReplacementOrderProperties(ReturnRequest pReturnRequest, java.util.Map pExtraParameters) throws ReturnException
For a return, the replacement order is nulled out. For an exchange, the replacement is created if currently null.
The generated store credit is nulled out.
pReturnRequest
- pExtraParameters
- ReturnException
generateReplacementOrder(ReturnRequest, Map)
public void resetPromotionEvaluationProperties(ReturnRequest pReturnRequest)
The promotionEvaluationOrder, exchangeItemManualAdjustmentValue
and exchangeItemOrderPromotionValue
properties are reset.
pReturnRequest
- protected void removeGWPMetaDataFromExchangeOrder(ReturnRequest pReturnRequest)
pReturnRequest
- public void resetGWPMetaData(ReturnRequest pReturnRequest) throws ReturnException
pReturnRequest
- ReturnException
protected void calculateActualRefundsForReturnItems(ReturnRequest pReturnRequest)
ReturnRequest.
The end result is the actual values for the return items plus the non-return item adjustments equals the return request's total actual value.
The actual tax and shipping values are distributed to the return item's actual values based on the following order of precedence. The following describes how tax is distributed but the same order of precedence is used for shipping.
pReturnRequest
- return requestpublic void initShippingCostShares(ReturnRequest pReturnRequest) throws ReturnException
pReturnRequest
- ReturnException
calculateShippingCostShare(ReturnRequest)
protected void calculateShippingCostShare(ReturnRequest pReturnRequest)
ReturnRequest
. This map is used to
calculate the shipping refunds for the returned items.
The shipping cost share map in the ReturnRequest maps each ShippingGroupCommerceItemRelationship
in the order to a shipping cost share within its shipping group. These values are likely to be calculated
differently for each application. To integrate custom allocations, the application should override
the calculateShippingShareForRelationship method, which is called by this method
for each ShippingGroupCommerceItemRealtionship in the order.
pReturnRequest
- calculateShippingCostShareMap(ReturnRequest, Order)
protected double calculateShippingShareForRelationship(ReturnRequest pReturnRequest, ShippingGroupCommerceItemRelationship pShippingGroupCommerceItemRelationship, java.util.Map pRelsAlreadyCalculated)
ShippingGroupCommerceItemRelationship
.protected java.util.Map calculateShippingCostShareMap(ReturnRequest pReturnRequest, Order pOrder) throws ReturnException
ShippingGroupCommerceItemRelationship
ids to their shipping share amount.
This method iterates over each ShippingGroupCommerceItemRelationship
in the given Order
as calls calculateShippingShareForRelationship
to calculate the shipping share
value for the given relationship.
pReturnRequest
- the current return requestpOrder
- the order from which to generate the share MapShippingGroupCommerceItemRelationship
ids to their shipping share amount.ReturnException
calculateShippingShareForRelationship(ReturnRequest, ShippingGroupCommerceItemRelationship, Map)
protected double calculateShippingShareForRelationship(ReturnRequest pReturnRequest, ShippingGroupCommerceItemRelationship pShippingGroupCommerceItemRelationship, double pShippingGroupTotalAmount, java.util.Map pRelsAlreadyCalculated, long pTotalQuantityInShippingGroup, long pTotalQuantityAlreadyProcessed)
This implementation calculates a share by evenly distributing the shipping group's amount amongst all relationships in the shipping group.
It is expected that applications will need to override this method to calculate the values based on application specific shipping calculations.
pReturnRequest
- the current ReturnRequestpShippingGroupCommerceItemRelationship
- the relationship for which to calculate the sharepShippingGroupTotalAmount
- the total amount of the shipping group for which to calculate the share valuepRelsAlreadyCalculated
- the map of relationship id to share value already calculated for the shipping grouppTotalQuantityInShippingGroup
- the total quantity of items in the shipping group (i.e. the sum of all the rel quantities)pTotalQuantityAlreadyProcessed
- the total quantity of items alread calculated in the share mapprotected double calculateReturnFee(ReturnRequest pReturnRequest)
By default, this method returns the configured return fee
Applications should override this method to calculate a custom return fee.
pReturnRequest
- the return requestgetDefaultReturnFee()
public void setReturnFee(ReturnRequest pReturnRequest) throws ReturnException
pReturnRequest
- ReturnException
calculateReturnFee(ReturnRequest)
protected double calculateSuggestedRefundAmount(ReturnItem pReturnItem)
pReturnItem
- the item being returnedprotected double calculateOrderDiscountShare(ReturnRequest pReturnRequest, ReturnItem pReturnItem, atg.core.util.Range pReturnRange)
pReturnRequest
- pReturnItem
- pReturnRange
- protected double calculateManualAdjustmentShare(ReturnRequest pReturnRequest, ReturnItem pReturnItem, atg.core.util.Range pReturnRange)
pReturnRequest
- pReturnItem
- pReturnRange
- protected double calculateShippingRefundForItem(ReturnRequest pReturnRequest, ReturnItem pReturnItem, atg.core.util.Range pReturnRange)
This method sums the total adjustments to shipping share based on the
ItemCostAdjustments
for the given item
pReturnRequest
- pReturnItem
- pReturnRange
- the range of the item that is being returned. This parameter
is no longer used by this implementation.protected double calculateRefundForItem(ReturnRequest pReturnRequest, ReturnItem pReturnItem, atg.core.util.Range pReturnRange)
This method sums the total adjustments to amount, manual adjustment share and
order discount share based on the ItemCostAdjustments
for the given item
pReturnRequest
- the return requestpReturnItem
- the return item for which the refund is calculatedpReturnRange
- the range of the item that is being returned. This parameter
is no longer used by this implementation.protected double calculateItemAmountShare(ReturnRequest pReturnRequest, ReturnItem pReturnItem, atg.core.util.Range pReturnRange)
pReturnRequest
- pReturnItem
- pReturnRange
- protected double calculateShareForRange(ReturnItem pReturnItem, DetailedItemPriceInfo pDetailedItemPriceInfo, atg.core.util.Range pRange, double pAmount)
The given detail is assumed to cover all or a portion of the given range.
The result is the share of the given amount for the quantity covered by the detail.
pReturnItem
- pDetailedItemPriceInfo
- pRange
- protected double calculateDetailShare(ReturnItem pReturnItem, java.lang.String pDetailAmountProperty, atg.core.util.Range pReturnRange)
pDetailAmountProperty
.
The return range highbound is the item's quantity - quantity already returned - 1
The return range lowbound is the highbound - quantity to return + 1
The details that cover the range being returned are extracted from the item's price info and the share for each detail is individually calculated.
pReturnItem
- pDetailAmountProperty
- pReturnRange
- The range of the item being returnedcalculateShareForRange(ReturnItem, DetailedItemPriceInfo, Range, double)
protected atg.core.util.Range getRangeWithinDetail(DetailedItemPriceInfo pDetailedItemPriceInfo, atg.core.util.Range pRange)
pDetailedItemPriceInfo
- pRange
- the range coveredprotected double calculateTaxRefundForItem(ReturnRequest pReturnRequest, ReturnItem pReturnItem, atg.core.util.Range pReturnRange)
This method sums the total adjustments to tax share based on the
ItemCostAdjustments
for the given item
pReturnRequest
- the return requestpReturnItem
- the return itempReturnRange
- the range of the item that is being returned. This parameter
is no longer used by this implementation.protected java.util.Set createRefundMethods(ReturnRequest pReturnRequest) throws RepositoryException
pReturnRequest
- the return request to saveRepositoryException
protected MutableRepositoryItem createRequestItem(ReturnRequest pReturnRequest, Profile pAgentProfile) throws RepositoryException, javax.servlet.ServletException, CommerceException
pReturnRequest
- the return request to savepAgentProfile
- the agent profile. This parameter is options is currently not used by this API.RepositoryException
CommerceException
javax.servlet.ServletException
protected java.util.Set createReturnItems(ReturnRequest pReturnRequest, java.lang.String pRequestId) throws RepositoryException, CommerceException
pReturnRequest
- the return request to savepRequestId
- RepositoryException
CommerceException
public void returnCommerceItems(ReturnRequest pReturnRequest) throws ReturnException
pReturnRequest
- ReturnException
public ReturnRequest createReturnRequest(Order pOrder) throws CommerceException
pOrder
- the order to create a return request forCommerceException
createReturnRequest(Order, ProcessName, Map)
public ReturnRequest createReturnRequest(java.lang.String pOrderId, atg.commerce.csr.returns.ProcessName pProcessName, java.util.Map pExtraParameters) throws CommerceException, PipelineErrorReturnException
public ReturnRequest createReturnRequest(Order pOrder, atg.commerce.csr.returns.ProcessName pProcessName, java.util.Map pExtraParameters) throws CommerceException, PipelineErrorReturnException
pOrder
- the original purchase Order from which items are being returned.pProcessName
- optional ProcessName that will be used for the return.pExtraParameters
- Map of parameters that will be passed to the initilization piplineCommerceException
PipelineErrorReturnException
protected MutableRepositoryItem createStoreCredit(java.lang.String pProfileId, double pAmount, java.util.Date pExpirationDate) throws ReturnException, CommerceException
pProfileId
- owner of the store creditpAmount
- amount of the store creditpExpirationDate
- expiration date of the store creditReturnException
CommerceException
protected MutableRepositoryItem createStoreCredit(java.lang.String pProfileId, double pAmount, java.util.Date pExpirationDate, boolean pTransient) throws ReturnException, CommerceException
pProfileId
- owner of the store creditpAmount
- amount of the store creditpExpirationDate
- expiration date of the store creditReturnException
CommerceException
public double getMaximumRefundAmount(CreditCard pCreditCard)
pCreditCard
The maximum amount is calculated as follows:
pCreditCard
is null, returns -1pCreditCard
- the credit card that is used to find the maximum amount that could be credited.public double getMaximumRefundAmount(PaymentGroup pPaymentGroup) throws ReturnException
This implementation will get maximum refund amount for CreditCard
payment groups only. Extend this method for other types of payment groups.
pPaymentGroup
- ReturnException
getMaximumRefundAmount(CreditCard)
public double getMaxStoreCreditRefundAmount(RepositoryItem pStoreCredit)
The maximum amount is calculated as follows:
pStoreCredit
is null, returns -1ClaimableTools.getRemainingAmount(RepositoryItem)
and pStoreCredit
- the store credit that is used to find the maximum amount that could be credited.public void issueAlternateCreditType(Order pOrder, ReturnRequest pReturnRequest, java.util.Vector pCredits, java.lang.String pProfileId, RefundMethod pRefundMethod, double pRefundAmount)
pOrder
- - The order that is being creditedpReturnRequest
- - The return requestpCredits
- - The list of credits applied to the orderpProfileId
- - The ID of the profile that is being creditedpRefundMethod
- - The refund methodpRefundAmount
- - The amount to be creditedprotected java.util.List issueCredits(Order pOrder, ReturnRequest pReturnRequest) throws ClaimableException, CommerceException, ReturnException, RepositoryException
If a credit amount exceeds the maximum allowed for the payment group referenced by the RefundMethod, a store credit is automatically created to allocate the difference.
pOrder
- pReturnRequest
- ClaimableException
CommerceException
ReturnException
RepositoryException
public java.util.List settleCredits(ReturnRequest pReturnRequest) throws ReturnException
pReturnRequest
- the return requestClaimableException
CommerceException
ReturnException
issueCredits(Order, ReturnRequest)
protected Order prepareReplacementOrder(ReturnRequest pReturnRequest) throws CommerceException
generateReplacementOrder(ReturnRequest, Map)
A new order is created that contains a copy of each shipping group and payment group in the original purchase order.
pReturnRequest
- the request for which a replacement order is createdCommerceException
public void instantiateReplacementOrder(ReturnRequest pReturnRequest) throws ReturnException
replacementOrder
property.pReturnRequest
- ReturnException
public void createReplacementOrderShippingGroups(ReturnRequest pReturnRequest) throws ReturnException
pReturnRequest
- ReturnException
public void createReplacementOrderPaymentGroups(ReturnRequest pReturnRequest) throws ReturnException
pReturnRequest
- ReturnException
public void initializeReplacementOrderGWPMetaData(ReturnRequest pReturnRequest) throws ReturnException
This is acheived by mirroring the GWP meta-data from the Return Calculation Order.
pReturnRequest
- ReturnException
public void generateReplacementOrder(ReturnRequest pReturnRequest, java.util.Map pExtraParameters) throws ReturnException
This method executes the pipeline defined by the property generateReplacementOrderPipelineChainId
to create the replacement order.
pReturnRequest
- the ReturnRequest for which a replacement order is createdpExtraParameters
- the extra parameter map that is passed to the pipeline executionReturnException
protected void processRequest(Order pOrder, ReturnRequest pReturnRequest) throws RepositoryException, ClaimableException, CommerceException, ReturnException
settleReturnRequest(ReturnRequest, String, Map)
pOrder
- the order that the return request is related topReturnRequest
- the return requestRepositoryException
ClaimableException
CommerceException
ReturnException
public void updateReplacementOrderStateOnConfirm(ReturnRequest pReturnRequest) throws CommerceException
By default, the state will be set to the configurable pendingCustomerReturnOrderState
property value.
pReturnRequest
- CommerceException
public void recordMerchandiseReturn(java.lang.String pReturnRequestId, java.util.Map<java.lang.String,java.lang.Long> pQuantityBeingReceived, java.util.Map<java.lang.String,java.lang.String> pDispositionReceived, java.util.Map pExtraParameters) throws ReturnException, PipelineErrorReturnException
pReturnRequestId
- the return containing the items being receivedpQuantityBeingReceived
- a Map of return item id to quantity being receivedpDispositionReceived
- a Map of return item id to recieve dispositionpExtraParameters
- extra parameter map passed to the executed pipelines.ReturnException
PipelineErrorReturnException
public void recordMerchandiseReturn(ReturnRequest pReturnRequest, ReturnItem pReturnItem, long pQuantityReceived, java.lang.String pDisposition, java.util.Map pExtraParameters) throws ReturnException, PipelineErrorReturnException
pReturnRequest
- the return requestpReturnItem
- the id of the returned itempQuantityReceived
- the quantity that was returnedpDisposition
- the disposition of the itempExtraParameters
- the extra parameter map that is passed to the pipeline executionReturnException
PipelineErrorReturnException
getReceiveItemPipelineChainId()
public void updateInventoryOnReceive(ReturnRequest pReturnRequest, ReturnItem pReturnItem, long pQuantityReceived) throws ReturnException
pReturnRequest
- the ReturnRequestpReturnItem
- the ReturnItem being receivedpQuantityReceived
- The quantity of item being receivedReturnException
ReturnTools.shouldUpdateInventory(ReturnItem)
,
InventoryManager.increaseStockLevel(String, long)
public void updateReturnItemOnReceive(ReturnRequest pReturnRequest, ReturnItem pReturnItem, long pQuantityReceived, java.lang.String pDisposition) throws ReturnException
pReturnRequest
- the ReturnRequestpReturnItem
- the ReturnItem being receivedpQuantityReceived
- the quantity being receivedpDisposition
- the disposition of the quantity being receivedReturnException
public void saveReturnRequest(ReturnRequest pReturnRequest, Profile pAgentProfile) throws CommerceException, RepositoryException, javax.servlet.ServletException
confirmReturn(ReturnRequest, Map)
CommerceException
RepositoryException
javax.servlet.ServletException
public void saveReturnRequestToRepository(ReturnRequest pReturnRequest) throws ReturnException
requestId
property of the ReturnRequestpReturnRequest
- ReturnException
public void confirmReturn(ReturnRequest pReturnRequest, java.util.Map pExtraParameters) throws ReturnException, PipelineErrorReturnException
The confirm pipeline id can be configured using the ConfirmReturnRequestPipelineChainId
property.
pReturnRequest
- the ReturnRequestpExtraParameters
- the extra parameter map that will be passed to the pipeline executionReturnException
PipelineErrorReturnException
public void applySelectedItems(ReturnRequest pReturnRequest, atg.commerce.csr.returns.ProcessName pProcessName, java.util.Map pExtraParameters) throws ReturnException, PipelineErrorReturnException
pReturnRequest
- the ReturnRequestpProcessName
- Optional. If provided, the ProcessName
in the ReturnRequest is set to this value before executing the pipeline.
This param can be used to change the process for which the items are being selected. (i.e. switch from return to exchange or exchange to return).pExtraParameters
- the extra parameter map that will be passed to the pipeline executionReturnException,
- PipelineErrorReturnExceptionReturnException
PipelineErrorReturnException
public void applyRefundMethodAllocations(ReturnRequest pReturnRequest, java.util.Map pExtraParameters) throws ReturnException, PipelineErrorReturnException
If a chain id is not provided, the chain id defined by the applyRefundAllocationsPipelineChainId
property is used.
pReturnRequest
- the ReturnRequest objectpExtraParameters
- the optional extra parameter map that will be passed to the chain executionReturnException,
- PipelineErrorReturnExceptionReturnException
PipelineErrorReturnException
protected java.lang.String stateToString(ObjectStates pObjectStates, java.lang.String pStateString)
pObjectStates
- the object states object to usepStateString
- the state string to convertpublic void submitReplacementOrder(ReturnRequest pReturnRequest, java.util.Map pExtraParameters) throws ReturnException, PipelineErrorReturnException
The pipeline executed can be configured using the submitReplacementOrderPipelineChainId
property.
pReturnRequest
- the return request that has a replacement order to submitpExtraParameter
- the extra parameter map passed to the pipeline execution.ReturnException
PipelineErrorReturnException
generateSubmitReplacementOrderParameterMap(ReturnRequest, Locale, Map)
public void markReturnRequestAsProcessed(ReturnRequest pReturnRequest)
pReturnRequest
- public void settleReturnRequest(ReturnRequest pReturnRequest, java.lang.String pSettleReturnRequestPipelineChainId, java.util.Map pExtraParameters) throws ReturnException, PipelineErrorReturnException
settleReturnRequestPipelineChainId
property.pReturnRequest
- the ReturnRequest to settlepSettleReturnRequestPipelineChainId
- the pipeline chaing to executepExtraParameters
- the extra parameter Map to be passed to the pipeline executionReturnException
PipelineErrorReturnException
protected boolean updateReturnItemState(ReturnItem pReturnItem) throws RepositoryException
returnShipmentRequired
value.
The underlying ReturnItem repository item is also updated if it has already been created.
pReturnItem
- the returned itemRepositoryException
ReturnItemStates
public void updateStateOfReturnItems(ReturnRequest pReturnRequest) throws RepositoryException
pReturnRequest
- RepositoryException
updateReturnItemState(ReturnItem)
protected boolean updateReturnState(ReturnRequest pReturnRequest) throws RepositoryException, ReturnException
pReturnRequest
- the return requestReturnException
RepositoryException
public boolean updateStateFromReturnItemState(ReturnRequest pReturnRequest) throws ReturnException
pReturnRequest
- RepositoryException
ReturnException
updateReturnState(ReturnRequest)
public boolean isReadyForSettlement(ReturnRequest pReturnRequest)
pReturnRequest
- protected javax.transaction.Transaction ensureTransaction()
Transaction
valueprotected void commitTransaction(javax.transaction.Transaction pTransaction)
pTransaction
- a Transaction
valueprotected boolean isTransactionMarkedAsRollBack()
boolean
valuepublic void addPropertyUpdate(java.lang.Object pNewValue, java.lang.Object pOldValue, java.lang.String pPropertyName, java.util.List pUpdates)
pNewValue
- is the new value of propertypOldValue
- is the old value of propertypPropertyName
- is the name of propertypUpdates
- stores the new and old values of propertypublic atg.commerce.csr.returns.ReturnPaymentState applyExchangeProcessPayments(ReturnRequest pReturnRequest) throws ReturnException
In the case where the refund exceeds the amount of the exchange order, an additional store credit refund method is generated and added to the return request, so it can be used to refund the excess amount.
ReturnException
ReturnPaymentState
,
buildRefundMethodList(Order, ReturnRequest, double, double)
public atg.commerce.csr.returns.ReturnPaymentState determineReturnPaymentValues(ReturnRequest pReturnRequest) throws ReturnException
ReturnRequest
returnPaymentState
property.pReturnRequest
- ReturnException
initializeRefundMethodList(ReturnRequest)
public void setReturnPaymentState(ReturnRequest pReturnRequest) throws ReturnException
ReturnRequest.getReturnPaymentState()
returnPaymentState
property of the ReturnRequest
based
on the current state of the return balance.
The ReturnPaymentState
indicates the current state of the balance for the return, which can be one
of the three states:
pReturnRequest
- ReturnException
public void adjustOrderPayments(ReturnRequest pReturnRequest, double pRefundAmount, boolean pClearRefundMethods) throws ReturnException
This method will also create the refund method in the return request for the store credit.
pReturnRequest
- pRefundAmount
- the amount to be for the store credit value.pClearRefundMethods
- if true, the refund method list is cleared before adding the store credit refund
method to the list.ReturnException
public void copyPaymentGroups(ReturnRequest pReturnRequest, Order pSrcOrder, Order pDestinationOrder) throws ReturnException
pReturnRequest
- -- Current return requestpSrcOrder
- -- source orderpDestinationOrder
- -- Destination orderReturnException
public void updateStoreCreditAmount(atg.commerce.csr.returns.StoreCreditRefundMethod pStoreCreditRefundMethod, java.util.List pRefundMethodsList, ReturnRequest pReturnRequest) throws ReturnException
StoreCreditRefundMethod
.
If the refund method is the replacement order store credit, this method will reapply the payment group for the amount on the refund method.
pStoreCreditRefundMethod
- pRefundMethodsList
- the full List of RefundMethods for the return.pReturnRequest
- a reference to the ReturnRequest
ReturnException
public void updateAmountOfStoreCredits(ReturnRequest pReturnRequest) throws ReturnException
StoreCreditRefundMethod
s, which are automatically created for the return or exchange. Each
StoreCreditRefundMethod
references its associated store credit claimable item. This method will update the amount of the
claimable item to the refund allocated to the StoreCreditRefundMethod
.
One store credit refund method is always created for allocating a refund to the user. This refund method
may or may not get used. There is no upper limit to this store credit. This method will update the amount store credit
claimable to be the same as the refund amount allocated to the StoreCreditRefundMethod
.
Another StoreCreditRefundMethod
is created for exchanges and the associated store credit claimable is applied
as a payment method on the replacement order. This method will reapply that StoreCredit
payment group based on the
amount allocated to the StoreCreditRefundMethod
.
Both store credits will exist when doing an exchange where the refund amount exceeds the amount of the replacement order.
pReturnRequest
- a reference to the ReturnRequest
ReturnException
public java.util.HashMap getProcessOrderMap(java.util.Locale pLocale) throws CommerceException
generateSubmitReplacementOrderParameterMap(ReturnRequest, Locale, Map)
CommerceException
public java.util.Map generateSubmitReplacementOrderParameterMap(ReturnRequest pReturnRequest, java.util.Locale pLocale, java.util.Map pExtraParmeters) throws CommerceException
params added: sales channel, bypass payment group auth and bypass expired promotion check
pReturnRequest
- the ReturnRequest containing the replacement orderpLocale
- the display localepExtraParmeters
- the incoming extra parameter Map. This can be null.CommerceException
OrderTools.addBypassPaymentGroupAuthorizationParameter(Map)
,
OrderTools.addBypassExpiredPromotionsCheckParameter(Map)
,
OrderTools.addAllowPartialInStorePayment(Map)
,
PipelineConstants.SALESCHANNEL
public void setReturnShipmentRequiredForReturnItem(ReturnItem pReturnItem, ReturnRequest pReturnRequest) throws ReturnException
returnShipmentRequired
property of the ReturnItem
. It is called
once for each ReturnItem
that is selected for return.
If the processImmediately
property of the ReturnRequest
is true, the return shipment required
property will be set to false
. It will also be set to false
if the shipping group for the
ReturnItem
is an ElectronicShippingGroup
.
Extend this method to include other business rules that determine if a item must be returned.
pReturnItem
- The return item that requires the flag to be setpReturnRequest
- The return request is used to get necessary information to decide the flag value.ReturnException
protected java.util.Collection generateShippingRefundAdjustments(ReturnRequest pReturnRequest) throws ReturnException
ItemCostAdjustment
objects for each ReturnItem
in the ReturnRequest
that detail the calculated shipping refund
for each item being returned.
This is calculated using the map of relationship to shipping cost map previously generated
and stored in the ReturnRequest's
The cost of the relationship is divided evenly by the total units in the relationship and
then multiplied by the units being returned to determine the shipping refund value of the
units being returned.returnShippingShareMap
property.
pReturnRequest
- ReturnException
protected java.util.Collection generateReturnCalculationAdjustments(ReturnRequest pReturnRequest) throws ReturnException
ItemCostAdjustment
objects based on the pricing deltas between
the return adjusted and return calculation orders.pReturnRequest
- ReturnException
generateOrderComparisonAdjustments(ReturnRequest, Order, Order, Map, Map)
,
resetCommerceIds(ReturnRequest, Collection)
protected void resetCommerceIds(ReturnRequest pReturnRequest, java.util.Collection pAdjustments)
pReturnRequest
- the ReturnRequestpAdjustments
- the collection of ItemCostAdjustment
s for which the ids are updated#findOriginalItemForWorkingItem(ReturnRequest, String)
protected java.util.Collection generatePromotionEvaluationAdjustments(ReturnRequest pReturnRequest) throws ReturnException
ItemCostAdjustment
objects based on the pricing deltas between
the return calculation and promotion evaluation orders.pReturnRequest
- ItemCostAdjustments
ReturnException
generateOrderComparisonAdjustments(ReturnRequest, Order, Order, Map, Map)
,
resetCommerceIds(ReturnRequest, Collection)
protected java.util.Collection generateOrderComparisonAdjustments(ReturnRequest pReturnRequest, Order pOrder, Order pCorrespondingOrder, java.util.Map pItemToCorrespondingItemMap, java.util.Map pShippingGroupToCorrespondingShippingGroupMap) throws ReturnException
ItemCostAdjustment
objects based on pricing deltas between
the order and the corresponding order. Presumably, the order and correpsonding order began as clones
of each other, and the item and shipping group maps were generated at that time.
It iterates over the items in the given pOrder and compares pricing values to the corresponding items in the pCorrespondingOrder.
pReturnRequest
- the return request objectpOrder
- the order that will be compared to the corresponding orderpCorrespondingOrder
- the order that was generated from the given order.pItemToCorrespondingItemMap
- this maps item ids in the order to the items in the corresponding order.
This map was was generated when the order was original copied to create the correponding order.pShippingGroupToCorrespondingShippingGroupMap
- this maps shipping group ids in the order to the shipping group ids in the corresponding order.
This map was was generated when the order was originally cloned to create the corresponding order.ItemCostAdjustment
objects based on a deltas between
the order with its corresponding order.ReturnException
generateItemComparisonAdjustment(ReturnRequest, Order, Order, String, String, String, String)
protected ItemCostAdjustment generateItemComparisonAdjustment(ReturnRequest pReturnRequest, Order pOrder, Order pCounterpartOrder, java.lang.String pItemId, java.lang.String pCounterpartItemId, java.lang.String pShippingGroupId, java.lang.String pCounterpartShippingGroupId) throws CommerceException
ItemCostAdjustment
by comparing pricing information of the
given item and counterpart item. The following pricing values are summarized for both the
item and counterpart item and the deltas stored in the ItemCostAdjustment
DetailItemPriceDetail
objects associated with the relationship's range
DetailItemPriceDetail
objects associated with the relationship's range
DetailItemPriceDetail
objects associated with the relationship's range
DetailItemPriceDetail
objects associated with the relationship's range
Note that it's possible the pCounterpartItemId
no longer exists in the pCounterpartOrder
. For example, in the case of the RCO,
items are removed if they are being fully returned.
Note that it's possible the pCounterpartItemId
no longer has a relationship with the pCounterpartShippingGroupId
. For example,
in the case of the Return Calculation Order, item relationships may have been removed based on the items being returned.
pReturnRequest
- the return requestpOrder
- the order that contains the given pItem
pCounterpartOrder
- the order that contains the given pCounterpartItemId
pItemId
- the item in the order that is compared to the counterpart itempCounterpartItemId
- the item in the counterpart order that is compared to the itempShippingGroupId
- the shipping group in the pOrder
to which the comparison is limited
by pRange associated with the item's relationshippCounterpartShippingGroupId
- the shipping group in the pCounterpartOrder
to which the comparison is limited
by pRange associated with the counterpart item's relationshipCommerceException
#sumDetails(CommerceItem, Range, String)
protected Order createReturnAdjustedOrder(ReturnRequest pReturnRequest) throws ReturnException
The CloneEditManager is used to perform the cloning process using the pipeline
specified by the configurable createReturnAdjustedOrderPipeline
property.
pReturnRequest
- ReturnException
#createPipelineExtraParameterMap(ReturnRequest)
,
addReplacementItemsToReturnAdjustedOrder(ReturnRequest, Order)
,
#removeZeroQuantityItems(Order)
,
#removeZeroQuantityRelationships(Order)
public void generateItemPriceSources(ReturnRequest pReturnRequest) throws ReturnException
itemPriceSources
property of the given return request.
These price source objects are used in all pricing operations that determine the refund and the price of the exchange order.
pReturnRequest
- ReturnException
ItemPriceSource
,
ReturnRequest.getItemPriceSources()
public void generateDiscountableMap(ReturnRequest pReturnRequest)
pReturnRequest
- protected java.util.Map generateItemPriceSourceParameters(ReturnRequest pReturnRequest, Order pOrder)
By default, this method returns null.
pReturnRequest
- pOrder
- protected void adjustReturnCalculationOrderFinalItemPrices(ReturnRequest pReturnRequest, Order pReturnCalculationOrder) throws ReturnException
This must be done manually because the pricing engine will not calculate a new price for an item that has been marked as final.
pReturnRequest
- pReturnCalculationOrder
- ReturnException
calculateNewFinalPriceForRCOItem(ReturnRequest, CommerceItem, ShippingGroup, long)
protected void adjustReturnAdjustedOrderFinalItemPrices(ReturnRequest pReturnRequest, Order pReturnAdjustedOrder) throws ReturnException
pReturnRequest
- the return request objectpReturnAdjustedOrder
- ReturnException
calculateNewFinalPriceForRAOItem(ReturnRequest, CommerceItem)
protected void calculateNewFinalPriceForRAOItem(ReturnRequest pReturnRequest, CommerceItem pRAOItem) throws ReturnException
pReturnRequest
- pRAOItem
- ReturnException
adjustFinalItemAmountForRelationshipRangeValue(ReturnRequest, CommerceItem, ShippingGroupCommerceItemRelationship, Range)
protected void calculateNewFinalPriceForRCOItem(ReturnRequest pReturnRequest, CommerceItem pRCOItem, ShippingGroup pShippingGroup, long pQuantityToReturn) throws ReturnException
pReturnRequest
- the return requestpRCOItem
- the item in the RCO for which a new final price is calculatedpShippingGroup
- the shipping group in the RCO that contains the quantity being returned.pQuantityToReturn
- the quantity being returned.ReturnException
adjustFinalItemAmountForRelationshipRangeValue(ReturnRequest, CommerceItem, ShippingGroupCommerceItemRelationship, Range)
protected void adjustFinalItemAmountForRelationshipRangeValue(ReturnRequest pReturnRequest, CommerceItem pCommerceItem, ShippingGroupCommerceItemRelationship pShippingGroupCommerceItemRelationship, atg.core.util.Range pRange) throws ReturnException
pReturnRequest
- the return request objectpCommerceItem
- the commerce item with the final pricepShippingGroupCommerceItemRelationship
- the relationship for which a value of each unit will
be determined and used to adjust the item's amount.pRange
- the range within the relationship for which the value will be determined and used to adjust
the item's amount.ReturnException
#calculateAmountDetailShareForRange(DetailedItemPriceInfo, Range)
protected java.util.Map createExchangeOrderCloningPropExceptionsMap()
This method returns null by default
RepositoryUtils
protected void adjustReturnCalculationOrderForReturnItems(ReturnRequest pReturnRequest, Order pReturnCalculationOrder) throws ReturnException
pReturnRequest
- pReturnCalculationOrder
- CommerceException
ReturnException
public java.util.Collection generateFilteredReturnRequestSelections(ReturnRequest pReturnRequest) throws CommerceException, ReturnException
GiftWithPurchaseSelection
objects for the ReturnRequest
,
create a new set of GiftWithPurchaseSelection
objects that contains only
those selections that still have remaining quantity after decrementing quantity for
any targeted or selected quantity already in the exchange order.pReturnRequest
- CommerceException
ReturnException
public void generateGWPSelectionsForReturnItems(ReturnRequest pReturnRequest) throws ReturnException
GiftWithPurchaseSelection
objects based on the item level GiftWithPurchaseSelection
objects for each item
being returned. These generated GiftWithPurchaseSelection
objects are used to provide gift selection links on the exchange order cart page for
any gifts that are being returned.
A GiftWithPurchaseSelection
object is created for each gift that is being returned.
The selection's quantity property is set to the gift quantity deltas for the corresponding items in the
RAO and RCO.
pReturnRequest
- ReturnException
protected GiftWithPurchaseSelection findMatchingRCOSelection(ReturnRequest pReturnRequest, CommerceItem pRCOCommerceItem, GiftWithPurchaseSelection pGiftWithPurchaseSelection) throws ReturnException
GiftWithPurchaseSelection
from the given RCO item that matches
the given GiftWithPurchaseSelection
pReturnRequest
- pRCOCommerceItem
- pGiftWithPurchaseSelection
- ReturnException
protected void addReplacementItemsToReturnAdjustedOrder(ReturnRequest pReturnRequest, Order pReturnAdjustedOrder) throws CommerceException
This is done by iterating over all the related exchange orders, making a clone copy of each one moving the clone items, shipping group relationships and shipping groups to the return adjusted order.
The related exchange orders is pre-generated and stored in the exchangeOrders
property
of the ReturnRequest
pReturnRequest
- pReturnAdjustedOrder
- CommerceException
protected void copyAgentFinalPriceInfoToPEO(ReturnRequest pReturnRequest) throws ReturnException
This is done by calling markAsFinal
on the
peo item price info
pReturnRequest
- ReturnException
protected Order createReturnCalculationOrder(ReturnRequest pReturnRequest) throws ReturnException
The CloneEditManager is used to perform the cloning process using the pipeline
specified by the configurable createReturnCalculationOrderPipeline
property.
After cloning is complete, the item/shipping group quantities are adjusted based on the ReturnItems in the ReturnRequest. A new amount is calculated and new details generated for items being returned that are marked as final.
pReturnRequest
- ReturnException
adjustReturnCalculationOrderForReturnItems(ReturnRequest, Order)
,
adjustReturnCalculationOrderFinalItemPrices(ReturnRequest, Order)
public void initReturnAdjustedOrder(ReturnRequest pReturnRequest) throws ReturnException
pReturnRequest
- ReturnException
createReturnAdjustedOrder(ReturnRequest)
public void initReturnCalculationOrder(ReturnRequest pReturnRequest) throws ReturnException
pReturnRequest
- ReturnException
createReturnCalculationOrder(ReturnRequest)
protected Order createPromotionEvaluationOrder(ReturnRequest pReturnRequest) throws ReturnException
The Return Calculation Order is cloned to create the Promotion Evaluation Order. Hence the PEO starts out as an exact copy of the Return Calculation Order. This order is modified whenever the exchange order is priced to incorporate a copy of each exchange item and determine pricing adjustments.
The CloneEditManager is used to perform the cloning process using the pipeline
specified by the configurable createPromtoionEvaluationOrderPipeline
property.
pReturnRequest
- ReturnException
protected void clearExchangeItemsFromPEO(ReturnRequest pReturnRequest) throws ReturnException
Using the ReturnRequest's exchangeToPEOItemMap
, removes
all the items based on the values in the map.
pReturnRequest
- ReturnException
protected void clearExchangeShippingGroupsFromPEO(ReturnRequest pReturnRequest) throws ReturnException
Using the ReturnRequest's ExchangeToPEOShippingGroupMap
, removes
all the shipping groups based on the values in the map.
pReturnRequest
- ReturnException
protected void updatePromotionEvaluationOrder(ReturnRequest pReturnRequest) throws RepositoryException, MarkerException, CommerceException
pReturnRequest
- ReturnException
RepositoryException
MarkerException
CommerceException
registerProcessPEOSynchronization(ReturnRequest)
,
copyExchangeItemAndShippingGroupInfoToPEO(ReturnRequest)
public void processPromotionEvaluationOrder(ReturnRequest pReturnRequest) throws ReturnException
It does the work to updating the promotion evaluation order with a fresh copy of the exchange items and shipping groups, re-pricing the PEO, (re)calculating new refund amounts and {re)calculating the change in promotion values Map.
The return's refund amounts are recalculated as part of the process since changes in the PEO can affect the suggested refund values.
pReturnRequest
- ReturnException
updatePromotionEvaluationOrder(ReturnRequest)
,
ReturnTools.generatePromotionValueAdjustmentMap(ReturnRequest)
,
#calculateRefundAmounts(ReturnRequest)
protected void copyExchangeItemAndShippingGroupInfoToPEO(ReturnRequest pReturnRequest) throws ReturnException
exchangeItemToPEOItemMap
and exchangeShippingGroupsMap
This method also takes care of copying the price info for items marked as final in the exchange order over to their corresponding items in the PEO.
pReturnRequest
- ReturnException
in the return request.
public void registerProcessPEOSynchronization(ReturnRequest pReturnRequest)
pReturnRequest
- the return requestProcessPEOSynchronization
protected atg.commerce.csr.returns.ProcessPEOSynchronization createProcessPEOSynchronization(ReturnRequest pReturnRequest)
ProcessPEOSynchronization
that's used to handle transaction rollback
in the processPromotionEvaluationOrder
method.pReturnRequest
- ProcessPEOSynchronization
public void calculateExchangeOrderPromotionDiscountValues(ReturnRequest pReturnRequest) throws ReturnException
The value of each order promotion applied to the replacement items in the promotion evaluation order is calculated. This value map is used when pricing the exchange order to apply the correct order promotion adjustment to the exchange order.
pReturnRequest
- ReturnException
ExchangeOrderDiscountCalculator
,
ReturnRequest#getExchangeItemOrderPromotionValue()()
protected void generatePreReturnPromotionValueMap(ReturnRequest pReturnRequest)
preReturnPromotionValue
property
of the ReturnRequest
By default, this method generates the map against the Return Adjusted Order
pReturnRequest
- #createPromotionValueMap(Order)
public void initPreReturnPromotionValues(ReturnRequest pReturnRequest) throws ReturnException
ReturnException
public void calculateExchangeManualAdjustmentDiscountValues(ReturnRequest pReturnRequest) throws ReturnException
exchangeItemManualAdjustmentValue
property
of the ReturnRequest
The value of each manual adjustment applied to the replacement items in the promotion evaluation order is calculated. This value map is used when pricing the exchange order to apply the correct manual adjustment value to the exchange order.
pReturnRequest
- ReturnException
ExchangeOrderAdjustmentCalculator
,
ReturnRequest.getExchangeManualAdjustmentValue()
public static ReturnManager getReturnManager()
mReturnManager
is null, then the ReturnManager is resolved using
Nucleus#getGlobalNucleus()#resolveName(String)
and the mReturnManager
variable is set.protected void prepareReplacementOrderToSubmit(ReturnRequest pReturnRequest) throws ReturnException
ReturnException
prepareReplacementOrderToSubmit(ReturnRequest, Map)
public void prepareReplacementOrderToSubmit(ReturnRequest pReturnRequest, java.util.Map pExtraParameters) throws ReturnException, PipelineErrorReturnException
The caller of this API is responsible for calling OrderManager.updateOrder(Order)
The pipeline that is executed is identified by the getPrepareReplacementOrderChainId()
property.
pReturnRequest
- pExtraParameters
- ReturnException
PipelineErrorReturnException
protected boolean isOrderPaymentGroupsAuthorized(Order pOrder)
pOrder
- From this order payment groups are obtainedpublic boolean isValidRefundValue(ReturnRequest pReturnRequest)
pReturnRequest
- isValidExchangeRefundValue(ReturnRequest)
,
isValidReturnRefundValue(ReturnRequest)
public boolean isValidReturnRefundValue(ReturnRequest pReturnRequest)
For a return the refund must be higher than 0.
pReturnRequest
- public boolean isValidExchangeRefundValue(ReturnRequest pReturnRequest)
For an exchange, the refund must be 0 or higher.
pReturnRequest
- public void sendReturnSubmittedEvent(ReturnRequest pReturnRequest)
pReturnRequest
- public void sendReturnCompletedEvent(ReturnRequest pReturnRequest)
pReturnRequest
- public void sendReturnMerchandiseReceivedEvent(ReturnRequest pReturnRequest, java.util.Map<java.lang.String,java.lang.Long> pReturnItemToQuantityReceived, java.util.Map<java.lang.String,java.lang.String> pReturnItemToReceivedDisposition)
pReturnRequest
- pReturnItemToQuantityReceived
- Maps the return item id to the quantity being receivedpReturnItemToReceivedDisposition
- Maps the return item id to the received disposition