c# wpf document viewer pdf : Copy page from pdf application SDK tool html winforms web page online ATGCommProgGuide32-part2110

ATG  C om mer ce P ro g ramm in g   Gui d e 
30 3  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
μ
PipelineLink name 
Description 
loadPriceInfoObjects 
Reloads the 
OrderPriceInfo
and 
TaxPriceInfo
objects 
in the given 
Order
. Also creates the rest of the 
AmountInfo
objects for the 
Order
, such as the 
ItemPriceInfo
objects in the 
CommerceItems
and the 
ShippingPriceInfo
objects in the 
ShippingGroups
and loads their properties from the Order Repository. For 
more information about 
AmountInfo
objects, see the 
Commerce Pricing Engines chapter. 
The 
atg.commerce.order.processor.ProcLoadPriceInf
oObjects
class implements this functionality. 
setCatalogRefs 
Sets the 
catalogRef
property in the 
AuxiliaryData
object of each 
CommerceItem
in the 
Order
. This 
processor looks up the catalog reference in the Catalog 
Repository using the 
catalogRefId
in the 
CommerceItem
Note that, if 
SetCatalogRefs.substituteRemovedSku
is true, this processor replaces all deleted SKUs in the 
Order
with the “dummy” SKU defined by 
SetCatalogRefs.substituteDeletedSkuId
. For more 
information, see Managing Orders that Contain Deleted 
Products and SKUs below. 
The 
atg.commerce.order.processor.ProcSetCatalogRe
fs
class implements this functionality. 
setProductRefs 
Sets the 
productRef
property in the 
AuxiliaryData
object of each 
CommerceItem
in the 
Order
. This 
processor looks up the catalog reference in the Catalog 
Repository using the 
productRefId
in the 
AuxiliaryData
object. 
Note that, if 
SetProductRefs.substituteRemovedProduct
is true, 
this processor replaces all deleted products in the 
Order
with the “dummy” product defined by 
SetProductRefs.substituteDeletedProductId
. For 
more information, see Managing Orders that Contain 
Deleted Products and SKUs below. 
The 
atg.commerce.order.processor.ProcSetProductRe
fs
class implements this functionality. 
Copy page from pdf - application SDK tool:C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use C# Code to Extract PDF Pages, Copy Pages from One PDF File and Paste into Others
www.rasteredge.com
Copy page from pdf - application SDK tool:VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed VB.NET Guide for Extracting Pages from Microsoft PDF Doc
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
30 4  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
PipelineLink name 
Description 
removeExpiredCommerceItems 
Used in conjunction with 
SetCatalogRefs
and 
SetProductRefs
. If the state of the 
Order
is one that is 
defined in 
RemoveExpiredCommerceItems.openOrderStates
this processor removes from the 
Order
any 
CommerceItem
that contains a “dummy” SKU or product 
that was substituted by 
SetCatalogRefs
or 
SetProductRefs
. A “dummy” SKU is automatically 
removed. A “dummy” product is removed only if 
RemoveExpiredCommerceItems.removeItemsWithDel
etedProducts
is set to true; the default is true. For more 
information, see Managing Orders that Contain Deleted 
Products and SKUs below. 
The 
atg.commerce.order.processor.ProcRemoveExpire
dCommerceItems
class implements this functionality. 
For more information about pipelines, the 
PipelineManager
, see the Processor Chains and the Pipeline 
Manager chapter; for information about the transactional modes and transitions of the processors in the 
refreshOrder
pipeline, see Appendix G: Commerce Pipeline Chains
Managing Orders that Contain Deleted Products and SKUs 
As described in the previous section, Refreshing Orders, the last three processors in the 
refreshOrder
pipeline can be used to operate on the commerce items in an order that refer to products and/or SKUs 
that have been deleted from the catalog. If your catalog administrators delete products and/or SKUs in 
the ongoing management of the product catalog, you should configure these processors to handle 
affected orders appropriately. 
To configure the 
refreshOrder
pipeline to manage deleted SKUs, do the following: 
1.
Create a new SKU in the product catalog. In an 
Order
, this “dummy” SKU will be 
substituted for any SKU that has been deleted from the catalog. 
2.
Set the 
SetCatalogRefs.substituteDeletedSkuId
property to the ID of the 
dummy SKU you created in step 1. 
3.
Set the 
SetCatalogRefs.substituteRemovedSku
property to true. If this property 
is true, the processor replaces any deleted SKU found in the 
Order
with the SKU 
defined in the 
substituteDeletedSkuId
property. 
4.
If the 
Order
is in an open state, all dummy SKUs in the 
Order
are removed 
automatically by a later processor in the 
refreshOrder
pipeline, 
RemoveExpiredCommerceItems
. See 
RemoveExpiredCommerceItems
in the table 
above for more information. 
To configure the 
refreshOrder
pipeline to manage deleted products, do the following: 
application SDK tool:VB.NET PDF copy, paste image library: copy, paste, cut PDF images
in Page. VB.NET: Copy and Paste Image in PDF Page. This VB.NET example shows how to copy an image from one page of PDF document and paste it into another page.
www.rasteredge.com
application SDK tool:C# PDF copy, paste image Library: copy, paste, cut PDF images in
This C#.NET example describes how to copy an image from one page of PDF document and paste it into another page. // Define input and output documents.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
30 5  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
1.
Create a new product in the product catalog. In an 
Order
, this “dummy” product will 
be substituted for any product that has been deleted from the catalog. 
2.
Set the 
SetCatalogRefs.substituteDeletedProductId
property to the ID of the 
dummy product you created in step 1. 
3.
Set the 
SetProductRefs.substituteRemovedProduct
property to true. If this 
property is true, the processor replaces any deleted product found in the 
Order
with 
the product defined in the 
substituteDeletedProductId
property. 
4.
If you want all dummy products in an 
Order
(in an open state) to be removed later on 
in the 
refreshOrder
pipeline by the 
RemoveExpiredCommerceItems
processor, set 
its 
removeItemsWithDeletedProducts
property to true. (See 
RemoveExpiredCommerceItems
in the table above for more information.) 
It’s important to note that deleting products and SKUs is not recommended because of its impact on 
customers’ order histories. Site pages that render order histories typically draw order information 
(descriptions, media, and so on) from product and SKU repository items. If those items are deleted, order 
histories cannot be rendered accurately. 
If you need to remove products and SKUs from your database (for example, because of a high turnover 
rate), you should implement a strategy that addresses its impact on order histories. Possible strategies 
include: 
Storing the relevant description information in the 
CommerceItem
. Note that this will 
cause a significant duplication of information across multiple items. 
Removing all historical orders that contain products or SKUs that have been removed. 
Keeping all historical orders that contain products or SKUs that have been removed. 
These orders will display description information for the “dummy” SKUs and products 
instead of for the actual items that were purchased. 
Modifying Orders 
You can modify an 
Order
by adding items to it, removing items from it, and changing the quantities of 
the items in the 
Order
CartModifierFormHandler
is provided to support these modification 
processes. 
This section includes information about the following: 
Understanding the CartModifierFormHandler 
Modifying the Current Order 
Understanding the CartModifierFormHandler 
The 
CartModifierFormHandler
is used to add items to and remove items from an 
Order
, modify the 
quantity of items in the 
Order
, and prepare the 
Order
for the checkout process. 
application SDK tool:C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Document. C#.NET extract image from multiple page adobe PDF file library for Visual Studio .NET. C#: Select All Images from One PDF Page. C#
www.rasteredge.com
application SDK tool:VB.NET PDF Image Extract Library: Select, copy, paste PDF images
VB.NET Project. A Visual Studio .NET PDF SDK library, able to perform image extraction from multiple page adobe PDF file in VB.NET.
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
30 6  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
CartModifierFormHandler
is an instance of class 
atg.commerce.order.purchase.CartModifierFormHandler
; it is located in Nucleus at 
/atg/commerce/order/purchase/CartModifierFormHandler
Many of the methods in 
CartModifierFormHandler
call 
OrderManager.updateOrder()
to save the 
Order
in its present state to the Order Repository. For information on 
OrderManager.updateOrder()
and the 
updateOrder
pipeline that it executes, see the Updating an Order with the Order Manager 
subsection of Saving Orders in this chapter. 
The following sections describes the important methods in 
CartModifierFormHandler
. As can be seen 
from the method descriptions that follow, the 
handleAddXXX
and 
handleRemoveXXX
methods of 
CartModifierFormHandler
automatically reprice the 
Order
whenever the user makes changes to it. 
However, you should note that users can also make changes to their orders through other purchase 
process form handlers that do not reprice orders, such as the form handlers that create and manage 
shipping groups. In these situations, where the user can change the current 
Order
in ways that affect its 
price, and where the form handler used to process those changes does not reprice the 
Order
, you should 
use the 
RepriceOrderDroplet
servlet bean to reprice the 
Order
before displaying its price to the user. 
For more information on 
RepriceOrderDroplet
, see Repricing Orders section of the ATG Commerce 
Guide to Setting Up a Store
getQuantity 
Retrieves the quantity for the given item. 
getCatalogKey 
Retrieves a string that identifies the catalog to use when obtaining a 
catalogRef
and 
productRef
for 
the creation of a 
CommerceItem
. The string is determined by the user’s locale, which is obtained from the 
Request
object. Consequently, the key is the user’s locale and the value is the corresponding repository 
to use (for example, 
en_US=ProductCatalog, fr_FR=FrenchCatalog
). 
/atg/commerce/catalog/CatalogTools
maintains the key-to-catalog mapping. 
getShippingGroupCommerceItemRelationships 
Retrieves the list of 
ShippingGroupCommerceItemRelationships
within the order. 
handleAddItemToOrder 
Adds items to an order by calling 
addItemToOrder()
, which actually adds the items to the 
Order
. It then 
calls 
OrderManager.updateOrder()
See the 
addItemToOrder()
method for more information. 
handleSetOrder 
Performs the actual work necessary to save an 
Order
. It calls 
modifyOrder()
to validate the user’s 
changes and modify the 
Order
. It then calls 
runProcessSetOrder()
, which executes the pipeline set in 
CartModifierFormHandler.setOrderChainId
. Finally, it calls 
OrderManager.updateOrder()
See the 
modifyOrder()
and 
runProcessSetOrder()
methods for more information. 
application SDK tool:VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Please follow the sections below to learn more. DLLs for Deleting Page from PDF Document in VB.NET Class. How to VB.NET: Delete a Single PDF Page from PDF File.
www.rasteredge.com
application SDK tool:VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
PDF: Insert PDF Page. VB.NET PDF - How to Insert a New Page to PDF in VB.NET. Easy to Use VB.NET APIs to Add a New Blank Page to PDF Document in VB.NET Program.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
30 7  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
handleSetOrderByRelationshipId 
Performs the actual work necessary to save an 
Order
. It calls 
modifyOrderByRelationshipId()
to 
validate the user’s changes and modify the 
Order
. It then calls 
runProcessSetOrder()
, which executes 
the pipeline set in 
CartModifierFormHandler.setOrderChainId
. Finally, it calls 
OrderManager.updateOrder()
See the 
modifyOrderByRelationshipId()
and 
runProcessSetOrder()
methods for more 
information. 
handleMoveToPurchaseInfo 
Performs the actual work necessary to save an 
Order
. Unlike 
handleSetOrder()
and 
handleSetOrderByRelationshipId()
, it also verifies that the 
Order
is ready for checkout. 
The handle method calls 
modifyOrder()
to validate the user’s changes and modify the 
Order
. It then 
calls 
runProcessMoveToPurchaseInfo()
, which executes the pipeline set in 
CartModifierFormHandler.moveToPurchaseInfoChainId
. Finally, it calls 
OrderManager.updateOrder()
See the 
modifyOrder()
and 
runProcessMoveToPurchaseInfo()
methods for more information. 
handleMoveToPurchaseInfoByRelId 
Performs the actual work necessary to save an 
Order
. Unlike 
handleSetOrder()
and 
handleSetOrderByRelationshipId()
, it also verifies that the 
Order
is ready for checkout. 
The handle method calls 
modifyOrderByRelationshipId()
to validate the user’s changes and modify 
the 
Order
. It then calls 
runProcessMoveToPurchaseInfo()
, which executes the pipeline set in 
CartModifierFormHandler.moveToPurchaseInfoChainId
. Finally, it calls 
OrderManager.updateOrder()
See the 
modifyOrderByRelationshipId()
and 
runProcessMoveToPurchaseInfo()
methods for 
more information. 
addItemToOrder 
Invoked by 
handleAddItemToOrder()
. The method calls 
mergeItemInputForAdd()
. If all input values 
are valid, the method then calls 
doAddItemToOrder()
See the 
mergeItemInputForAdd()
and 
doAddItemToOrder()
methods for more information. 
mergeItemInputForAdd 
Invoked by 
addItemToOrder()
to unify the way input values are made available to 
doAddItemToOrder()
and to validate input values. 
The method first calls 
CartModifierFormHandler.getItems()
. If the returned value is 
null
, the 
method constructs an 
items
array whose size matches the size of the return value from 
CartModifierFormHandler.getCatalogRefIds()
. The method copies the values from 
getCatalogRefIds()
into the 
items
array elements. Then the method copies the values returned by 
application SDK tool:C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
application. Able to remove a single page from PDF document. Ability Demo Code: How to Delete a Single PDF Page from PDF File in C#.NET. How to
www.rasteredge.com
application SDK tool:C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
You can use specific APIs to copy and get a specific page of PDF file; you can also copy and paste pages from a PDF document into another PDF file.
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
30 8  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
the following 
CartModifierFormHandler.getXXX
methods into the 
items
array elements: 
quantity
productId
or 
productIds
value
commerceItemType
giftlistId
, and 
giftlistItemId
If the initial 
CartModifierFormHandler.getItems()
call retrieves a non-null value, the method copies 
the value returned by 
CartModifierFormHandler.getCommerceItemType()
to every 
items
array 
element whose 
commerceItemType
subproperty was 
null
. The method also calls 
CartModifierFormHandler.mergeValueDictionaries()
to combine the Dictionary returned by
CartModifierFormHandler.getValueDictionary()
with each 
items
array element’s Dictionary. 
doAddItemToOrder 
Invoked by 
addItemToOrder()
. The method retrieves the list of items to add by calling 
CartModifierFormHandler.getItems()
, and calls 
CartModifierFormHandler.getCatalogKey()
to determine which catalog to use. Then, for each item to add to the 
Order
, the method uses the 
PurchaseProcessHelper
class to do the following: 
Creates a 
CommerceItem
using the 
commerceItemType
catalogRefId
productId
and 
quantity
found in the current array element from 
getItems()
Adds the created 
CommerceItem
to the order. 
Copies custom values from the current item’s 
value
Dictionary to the new 
CommerceItem
Calls the 
PurchaseProcessHelper.getShippingGroupForItem()
method to get a 
shipping group of the appropriate type. The type can be determined in one of three 
ways. 
Passed in to 
PurchaseProcessHelper
from the 
CartModifierFormHandler.getItems()[ ].
shippingGroupType
. The 
passed-in type is used along with the item’s gift information (if any) to 
determine the correct shipping group to which the item should be added. 
Use the first shipping group of the passed-in type (if that information is 
available) or the first shipping group on the order, regardless of the item type. If 
this is the desired behavior (perhaps you only sell goods with one shipping 
group type, and the default is always the correct type), set the 
addItemToDefaultShippingGroup
property of the
/atg/commerce/order/purchase/PurchaseProcessHelper
component to 
true
. This property is set to 
true
by default. 
PurchaseProcessHelper
can determine the correct group from the item type 
(based on the SKU’s 
fulfiller
property value) and gift information. To use 
this behavior, set the 
addItemToDefaultShippingGroup
property of the 
/atg/commerce/order/purchase/PurchaseProcessHelper
component to 
false
Calls 
PurchaseProcessHelper.addItemToShippingGroup()
, which calls 
CommerceItemManager.addItemQuantityToShippingGroup()
which in turn takes 
the given quantity of the 
CommerceItem
and the given 
ShippingGroup
and creates a 
ShippingGroupCommerceItemRelationship
of type 
SHIPPINGQUANTITY
For information on the 
SHIPPINGQUANTITY
type of 
ShippingGroupCommerceItemRelationship
, see Relationship Types in the Using 
Relationship Objects section of the Working With Purchase Process Objects chapter. 
ATG  C om mer ce P ro g ramm in g   Gui d e 
30 9  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
Calls 
createConfigurableSubitems()
, which is an empty method that can be 
overridden as needed by sites that use configurable commerce items. 
Calls 
processGiftAddition()
, which checks if the item that was added to the order 
is a gift (that is, the item’s input 
giftlistId
or 
giftlistItemId
property is non-
null
). If the item is a gift, 
processGiftAddition()
calls 
GiftListManager.addGiftToOrder()
to perform additional gift list processing. 
After the above steps have been taken for all the new items, 
addItemToOrder()
calls 
runProcessRepriceOrder()
, which reprices the 
Order
by executing the pipeline set in 
CartModifierFormHandler.repriceOrderChainId
. Then, for each new item 
addItemToOrder()
calls 
runProcessAddItemToOrder()
, which executes the pipeline set in 
CartModifierFormHandler.addItemToOrderChainId
. Finally, the method fires a scenario event of 
type 
ItemAddedToOrder
for each new item. 
See the 
runProcessRepriceOrder()
and 
runProcessAddItemToOrder()
methods for more 
information. 
modifyOrder 
Invoked by 
handleSetOrder()
and 
handleMoveToPurchaseInfo()
The 
modifyOrder()
method modifies the 
Order
based on the changes made in the request. It iterates 
over each 
CommerceItem
in the 
Order
. For each 
CommerceItem
, it retrieves the current quantity by 
calling 
getQuantity()
and passing in the 
catalogRefId
(SKU ID) of the item. 
Next, the method checks if the 
catalogRefId
of the current item is in the 
removalCatalogRefIds
list. 
If it is, then the quantity of the current item is set to zero. 
Then, the quantity of the current item is assessed and one of two actions occurs: 
If the quantity is greater than zero, the method sets the quantity in the 
CommerceItem
and the corresponding 
ShippingGroupCommerceItemRelationship
If the quantity is less than or equal to zero, then it removes the 
CommerceItem
and 
any associated 
Relationship
objects from the 
Order
modifyOrderByRelationshipId 
Invoked by 
handleSetOrderByRelationshipId()
and 
handleMoveToPurchaseInfoByRelId()
The 
modifyOrderByRelationshipId()
method updates the 
Order
based on the changes made in the 
request and the existing 
ShippingGroupCommerceItemRelationships
in the 
Order
. It iterates over 
each 
ShippingGroupCommerceItemRelationship
in the 
Order
. For each 
ShippingCommerceItemRelationship
, it first checks to make sure the 
Relationship
is of type 
SHIPPINGQUANTITY. If it is not, then an exception is thrown. Then, the method retrieves the current 
quantity of the 
ShippingGroupCommerceItemRelationship
by calling 
getQuantity()
and passing in 
the 
ShippingGroupCommerceItemRelationship
ID. 
Next, the method checks if the ID of the 
ShippingGroupCommerceItemRelationship
is in the 
removalRelationshipIds
list. If it is, then the quantity of the current 
ShippingGroupCommerceItemRelationship
is set to zero. 
ATG  C om merce  P ro gra mm in g  G ui d e 
31 0  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
Then, the quantity of the current 
ShippingGroupCommerceItemRelationship
is assessed and one of 
two actions occurs: 
If the quantity is greater than zero, then the quantity of the 
ShippingGroupCommerceItemRelationship
and the quantity of the associated 
CommerceItem
are adjusted appropriately. 
If the quantity is less than or equal to zero, then the 
ShippingGroupCommerceItemRelationship
is removed from the 
Order
and the 
quantity of the associated 
CommerceItem
is adjusted appropriately. 
For more information on the 
SHIPPINGQUANTITY
type of 
ShippingGroupCommerceItemRelationship
, see Relationship Types in the Using Relationship Objects 
section of the Working With Purchase Process Objects chapter. 
handleRemoveItemFromOrder 
Removes items from the 
Order
by 
CommerceItem
ID. This handle method calls 
deleteItems()
to delete 
the items from the 
Order
and then calls 
OrderManager.updateOrder()
See the 
deleteItems()
method for more information. 
handleRemoveItemFromOrderByRelationshipId 
Removes items from the 
Order
by 
ShippingGroupCommerceItemRelationship
ID. This handle 
method calls 
deleteItemsByRelationshipId()
to delete the items from the 
Order
and then calls 
OrderManager.updateOrder()
See the 
deleteItemsByRelationshipId()
method for more information. 
deleteItems 
Deletes from the 
Order
all 
CommerceItems
whose IDs are in the 
removalCommerceIds
property. The 
method also removes all associated 
ShippingGroupCommerceItemRelationships
and calls 
runProcessRepriceOrder()
, which reprices the 
Order
by executing the pipeline set in 
CartModifierFormHandler.repriceOrderChainId
. Finally, the method fires a scenario event of type 
ItemRemovedFromOrder
See the 
runProcessRepriceOrder()
method for more information. 
deleteItemsByRelationshipId 
This method deletes 
CommerceItems
from the 
Order
by 
ShippingGroupCommerceItemRelationship
ID. It iterates through the IDs in the 
removalShippingGroupCommerceItemRelIds
property. For each 
ID, it first ensures that the 
Relationship
type is of type SHIPPINGQUANTITY (logging an error if it is not), 
and then it removes the 
HandlingInstructions
associated with the 
ShippingGroup
. Next, one of two 
conditions can exist: 
If the quantity in the 
ShippingGroupCommerceItemRelationship
is greater than or 
equal to the quantity in the 
CommerceItem
, then the 
CommerceItem
and all 
associated 
Relationships
are removed from the 
Order
. The method then calls 
runProcessRepriceOrder()
, which reprices the 
Order
by executing the pipeline 
ATG  C om mer ce P ro g ramm in g   Gui d e 
31 1  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
set in 
CartModifierFormHandler.repriceOrderChainId
. Finally, the method fires 
a scenario event of type 
ItemRemovedFromOrder
. (See the 
runProcessRepriceOrder()
method in this table for more information.) 
If the quantity in the 
ShippingGroupCommerceItemRelationship
is less than the 
quantity in the 
CommerceItem
, but the 
CommerceItem
has 
Relationships
to other 
ShippingGroups
, then the quantity in the 
CommerceItem
is reduced and the given 
ShippingGroupCommerceItemRelationship
removed. 
runProcessAddItemToOrder 
Invoked by the 
handleAddItemToOrder()
method. This method runs the pipeline set in 
CartModifierFormHandler.addItemToOrderChainId
. By default, this property is set to 
addItemToOrder
Note: By default, the 
addItemToOrder
pipeline is commented out of 
commercepipeline.xml
, the 
commerce pipeline configuration file. It is provided for extension purposes, should you need to include 
additional functionality, such as scenario events. 
runProcessSetOrder 
Invoked by 
handleSetOrder()
and 
handleSetOrderByRelationshipId()
. This method runs the 
pipeline set in 
CartModifierFormHandler.setOrderChainId
. By default, this property is set to 
setOrder
Note: By default, the 
setOrder
pipeline is commented out of 
commercepipeline.xml
, the commerce 
pipeline configuration file. It is provided for extension purposes, should you need to include additional 
functionality, such as scenario events. 
runProcessRepriceOrder 
Runs the pipeline to execute whenever the order needs to be repriced. The pipeline to run is set in 
CartModifierFormHandler.repriceOrderChainId
. By default, this property is set to 
repriceOrder
By default, this method executes an ORDER_TOTAL pricing operation. (For more information about 
pricing operations, see the Repricing Shopping Carts section of the ATG Commerce Guide to Setting Up a 
Store.) 
runProcessMoveToPurchaseInfo 
Invoked by 
handleMoveToPurchaseInfo()
and 
handleMoveToPurchaseInfoByRelId()
. This 
method runs the pipeline set in 
CartModifierFormHandler.moveToPurchaseInfoChainId
. By 
default, this property is set to 
moveToPurchaseInfo
The 
moveToPurchaseInfo
pipeline, in turn, executes the 
validateForCheckout
pipeline, which 
verifies that the 
Order
is ready for checkout. For more information on both pipelines, see Appendix G: 
Commerce Pipeline Chains
Modifying the Current Order 
To modify an 
Order
, you must supply either a 
CatalogRefId
of a 
CommerceItem
or a 
ShippingGroupCommerceItemRelationship
ID. It is recommended that you modify an 
Order
by 
ATG  C om merce  P ro gra mm in g  G ui d e 
31 2  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
ShippingGroupCommerceItemRelationship
ID, especially if you intend to support complex product-
SKU relationships, such as multiple 
CommerceItems
with the same 
catalogRefId
(SKU ID) or multiple 
shipping groups. For example, a customer could order 5 of a given item and choose to ship a quantity of 3 
to a home address and the remaining 2 to a work address. In this example, to remove the items being 
shipped to the work address, you would modify (and ultimately remove) the 
ShippingGroupCommerceItemRelationship
instead of modifying the 
CommerceItem
The following subsections describes both order modification methods: 
Modifying an Order by catalogRefId 
Modifying an Order by ShippingGroupCommerceItemRelationship ID 
Modifying an Order by catalogRefId 
Modifying orders by 
catalogRefId
works for very simple sites. Because it does not provide the 
granularity necessary to delete just a part of a 
CommerceItem
, it is not recommended for sites with 
complex features, such as multiple 
CommerceItems
with the same 
catalogRefId
or multiple shipping 
groups. 
You can use the following 
CartModifierFormHandler
methods to modify an 
Order
by 
catalogRefId
handleSetOrder()
handleRemoveItemFromOrder()
handleMoveToPurchaseInfo()
Refer to Understanding the CartModifierFormHandler for more information on these handle methods. 
To change the quantities of items in an 
Order
using the 
catalogRefIds
of 
CommerceItems
, call the 
CartModifierFormHandler.handleSetOrder()
method for each 
CommerceItem
whose quantity you 
want to change and pass in the 
catalogRefId
and 
quantity
for the 
CommerceItem
. This is illustrated in 
the following JSP code: 
<dsp:input bean='beanName' value='<dsp:valueof param="CommerceItem.quantity"/>' 
type="text" name='<dsp:valueof param="CommerceItem.catalogRefId"/>'/> 
Note that if no quantity is found for a 
CommerceItem
, then the 
CommerceItem
is removed from the 
Order
To remove items from an 
Order
using the 
catalogRefIds
of 
CommerceItems
, edit the JSPs that invoke 
the 
CartModifierFormHandler
handle methods that delete items from the 
Order
. Populate the form 
handler’s 
removalCatalogRefIds
array with the 
catalogRefIds
of the 
CommerceItems
to be 
removed. For example, you can populate the array using following JSP code: 
<dsp:input bean="CartModifierFormHandler.removalCatalogRefIds" 
paramvalue="CommerceItem.catalogRefId" type="checkbox"/> 
Documents you may be interested
Documents you may be interested