c# wpf document viewer pdf : Deleting pages from pdf Library SDK class asp.net .net web page ajax ATGCommProgGuide34-part2112

ATG  C om mer ce P ro g ramm in g   Gui d e 
32 3  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
μ
Note that ATG Commerce provides two implementations of the 
ShippingGroupInitializer
interface, 
namely 
HardgoodShippingGroupInitializer
and 
ElectronicShippingGroupInitializer
. The 
former creates 
HardgoodShippingGroups
based on their existence in the user’s 
Profile
, and the latter 
creates 
ElectronicShippingGroups
based on the existence of an e-mail address in the user’s 
Profile
To use this framework with a new 
ShippingGroup
type that you create, first, write a new 
ShippingGroupInitializer
implementation. Its 
initializeShippingGroups()
method should 
gather the user’s 
ShippingGroups
by type and add them to the 
ShippingGroupMapContainer
referenced by the 
ShippingGroupFormHandler
. For example, the 
ElectronicShippingGroupInitializer
queries the 
Profile
’s 
email
property and applies the result 
to a new 
ElectronicShippingGroup
, which is subsequently added to the 
ShippingGroupMapContainer
. Second, register a Nucleus component for the new 
ShippingGroupInitializer
implementation and add it to the 
ServiceMap
in 
ShippingGroupDroplet.shippingGroupInitializers
, which is keyed by 
ShippingGroup
type. 
Finally, include the new 
ShippingGroup
type in the 
ShippingGroupDroplet.shippingGroupTypes
parameter on those site pages where the new 
ShippingGroup
type is utilized. 
Associating Shipping Groups with an Order and Its Items 
When the user has supplied the shipping information for an 
Order
, the 
ShippingGroupFormHandler
can be used to create and manage the associations between the 
ShippingGroups
and the items in the 
Order
. ATG Commerce provides a request-scoped instance of 
atg.commerce.order.purchase.ShippingGroupFormHandler
, which is located in Nucleus at 
/atg/commerce/order/purchase/ShippingGroupFormHandler
The 
ShippingGroupFormHandler
works in conjunction with the 
ShippingGroupDroplet
to 
manipulate the relationships between 
CommerceItems
and 
ShippingGroups
in the order. Handling 
Instructions and their relationships to 
CommerceItems
and 
ShippingGroups
are also manipulated based 
on the relationship between each 
CommerceItem
and the 
ShippingGroups
By default, this form handler invokes the 
validateShippingInfo
pipeline chain to validate 
ShippingGroup
information. To skip validation, set the 
validateShippingGroups
property to 
false
To learn more about the pipeline chain, see the validateShippingInfo Pipeline Chain section. 
It should be noted that 
ShippingGroupFormHandler
does not reprice the given 
Order
. Consequently, if 
you enable customers to make order changes that affect order price through this form handler, you 
should then reprice the given 
Order
using the 
RepriceOrderDroplet
servlet bean before displaying its 
price to the customer. For more information on 
RepriceOrderDroplet
, see Repricing Orders section of 
the ATG Commerce Guide to Setting Up a Store. 
The 
ShippingGroupFormHandler
is composed of the following containers: 
atg.commerce.order.purchase.ShippingGroupMapContainer
, which defines a 
Map
of user-assigned 
ShippingGroup
names to 
ShippingGroups
. This container 
stores the user’s potential 
ShippingGroups
for the 
Order
atg.commerce.order.purchase.CommerceItemShippingInfoContainer
, which 
defines a 
Map
of 
CommerceItems
to 
CommerceItemShippingInfo
Lists. This 
container stores the user’s 
CommerceItemShippingInfo
objects for the 
CommerceItems
in the 
Order
Deleting pages from pdf - Library SDK class: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
Deleting pages from pdf - Library SDK class: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 
32 4  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
Additionally, the 
ShippingGroupFormHandler
uses the following helper classes: 
atg.commerce.order.purchase.CommerceItemShippingInfo
, which represents 
the association between a 
CommerceItem
and its shipping information and includes 
properties such as 
quantity
splitQuantity
, and 
relationshipType
. These 
objects store the information needed to create 
ShippingGroupCommerceItemRelationships
for the 
Order
atg.commerce.order.purchase.HandlingInstructionInfo
, which is used to 
associate handling instruction information with each 
CommerceItemShippingInfo
object. H
andlingInstructionInfo
is stored in a 
handingInstructionInfos
list 
property of the 
CommerceItemShippingInfo
object. 
atg.commerce.order.purchase.ShippingGroupDroplet
, which contains a 
reference to both the 
ShippingGroupMapContainer
and 
CommerceItemShippingInfoContainer
. The 
ShippingGroupDroplet
servlet bean 
is used to initialize 
ShippingGroup
objects and 
CommerceItemShippingInfo
objects for use by the 
ShippingGroupFormHandler
. The resulting collections of 
ShippingGroups
and 
CommerceItemShippingInfos
are exposed via the output 
parameters of the servlet bean. For more information on using the 
ShippingGroupDroplet
to initialize 
ShippingGroup
objects, see the previous 
section, Creating Shipping Groups. For more information on initializing 
CommerceItemShippingInfo
objects, see below. 
atg.commerce.order.purchase.CommerceItemShippingInfoTools
, which 
contains helper methods for creating, modifying, removing and applying the 
CommerceItemShippingInfo
and 
ShippingGroup
objects in the 
CommerceItemShippingInfoContainer
and 
ShippingGroupMapContainer
containers respectively. 
CommerceItemShippingGroupTools
includes the 
includeGifts
flag, which determines how gift items are handled when split across 
shipping groups. 
With these helper classes and containers, the 
ShippingGroupFormHandler
adds the necessary 
ShippingGroups
to the 
Order
, establishes their relationships to the 
CommerceItems
, performs 
validation, and updates the 
Order
. The following table describes the handle methods used in these 
processes: 
Library SDK class:C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
C#.NET PDF Library - Delete PDF Document Page in C#.NET. Provide C# Users with Mature .NET PDF Document Manipulating Library for Deleting PDF Pages in C#.
www.rasteredge.com
Library SDK class:VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Document Page in VB.NET Class. Free PDF edit control and component for deleting PDF pages in Visual Basic .NET framework application.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
32 5  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
Method 
Description of Functionality 
handleSplitShippingInfos
This handle method splits the quantities of 
CommerceItems
across several 
CommerceItemShippingInfo
objects. 
The handle method calls 
splitShippingInfos()
, which 
retrieves the list of 
CommerceItemShippingInfo
objects from 
the 
CommerceItemShippingInfoContainer
. The method 
then iterates through the list. For each 
CommerceItemShippingInfo
, it retrieves the 
quantity
and 
the 
splitQuantity
. If the 
splitQuantity
is greater than 
zero and not greater than the 
quantity
, then the method calls 
splitCommerceIdentifierShippingInfoByQuantity()
. In 
turn, 
splitCommerceIdentifierShippingInfoByQuantity()
creates a new 
CommerceIdentifierShippingInfo
object, 
adjusts the properties of both the new and existing objects, 
and adds the new object to the 
CommerceItemShippingInfoContainer
handleSpecifyDefault 
ShippingGroup
This handle method is used to let the user specify a default 
ShippingGroup
to use for shipping. The method calls 
specifyDefaultShippingGroup()
, which sets the 
defaultShippingGroupName
in the 
ShippingGroupMapContainer
Setting the default 
ShippingGroup
can facilitate simpler 
applications that permit only one 
ShippingGroup
per 
Order
as well as advanced applications that apply a default 
ShippingGroup
to any remaining items not explicitly covered 
by other 
ShippingGroups
handleApplyShippingGroups
This handle method adds the 
ShippingGroups
to the 
Order
. It 
is used when the customer has supplied the necessary shipping 
information for the 
Order
and is ready to proceed with the 
next checkout phase. 
The handle method calls 
applyShippingGroups()
, which first 
calls 
ShippingGroupManager.removeAllShippingGroupsFromO
rder()
to remove any existing 
ShippingGroups
from the 
Order
. This ensures a clean 
Order
The 
applyShippingGroups()
method then calls 
applyCommerceItemShippingInfo()
, which applies all 
CommerceItemShippingInfo
objects to the 
Order
. The 
applyCommerceItemShippingInfo()
method iterates 
through the list of 
CommerceItemShippingInfo
objects in the 
CommerceItemShippingInfoContainer
. For each 
CommerceItemShippingInfo
object, the associated 
ShippingGroup
is retrieved and added to the 
Order
(if it isn’t 
already in the 
Order
). Then the method retrieves the 
Library SDK class:C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
Deleting Pages. You may feel free to define some continuous PDF pages and delete. Certainly, random pages can be deleted from PDF file as well. Sorting Pages.
www.rasteredge.com
Library SDK class:C# Word - Delete Word Document Page in C#.NET
C# Word - Delete Word Document Page in C#.NET. Provides Users with Mature Document Manipulating Function for Deleting Word Pages. Overview.
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
32 6  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
Relationship
type of the current 
CommerceItemShippingInfo
object and calls either 
CommerceItemManager.addItemQuantityToShippingGrou
p()
or 
CommerceItemManager.addRemainingItemQuantityToShi
pping()
, depending on the 
relationshipType
(SHIPPINGQUANTITY OR SHIPPINGQUANTITYREMAINING). This 
adds the appropriate quantity of the 
CommerceItem
to the 
ShippingGroup
Next, if the form handler’s 
applyDefaultShippingGroup
property is True, then the 
applyShippingGroups()
method 
checks for a default shipping group in the 
ShippingGroupMapContainer
. If one exists, then the 
remaining quantity of all 
CommerceItems
in the 
Order
is 
added to the default shipping group. 
Then, the handle method calls 
runProcessValidateShippingGroups()
to validate the 
ShippingGroups
in the 
Order
. This executes the shipping 
validation pipeline specified in 
ShippingGroupFormHandler.validateShippingGroupsCh
ainId
; by default, this property is set to 
validateShippingInfo
. For information on the 
validateShippingInfo
pipeline, see Appendix G: Commerce 
Pipeline Chains
Finally, the handle method calls 
OrderManager.updateOrder()
to save the 
Order
in its 
present state to the Order Repository. For more 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. 
As previously mentioned, the 
ShippingGroupDroplet
servlet bean is used to initialize 
CommerceItemShippingInfo
objects and add them to the 
CommerceItemShippingInfoContainer
so they can be used by the 
ShippingGroupFormHandler
. To initialize the 
CommerceItemShippingInfo
objects, the service method calls 
initializeCommerceItemShippingInfos()
which, by default, 
creates and initializes a 
CommerceItemShippingInfo
for each 
CommerceItem
in the 
Order
and adds 
them to the 
CommerceItemShippingInfoContainer
. Each new 
CommerceItemShippingInfo
references the default 
ShippingGroup
in the 
ShippingGroupMapContainer
The paragraph above describes the default behavior of the 
ShippingGroupDroplet
. The droplet, 
however, has several input parameters that control whether and how 
CommerceItemShippingInfo
objects are created. An additional parameter controls whether the 
CommerceItemShippingInfoContainer
is cleared before the objects are created. For a detailed list of 
these input parameters, as well as 
ShippingGroupDroplet
output parameters, open parameters, and a 
code example, see the Adding Shipping Information to Shopping Carts section of the Implementing Order 
Retrieval chapter of the ATG Commerce Guide to Setting Up a Store. 
Library SDK class:VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
You may feel free to define some continuous PDF pages through deleting pages in VB.NET demo code. Certainly, random pages can be deleted from PDF file as well.
www.rasteredge.com
Library SDK class:C# PowerPoint - Delete PowerPoint Document Page in C#.NET
C# PowerPoint - Delete PowerPoint Document Page in C#.NET. Provides Users with Mature Document Manipulating Function for Deleting PowerPoint Pages. Overview.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
32 7  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
The 
HandlingInstructionInfo
class makes it possible to split, merge, and apply handling information 
along with the 
CommerceItemShippingInfo
objects with which it is associated. When the 
ShippingGroupDroplet
initializes a container based on the current contents of an 
Order
HandlingInstructionInfo
objects are automatically generated for any handling instructions currently 
in the 
Order
. These 
HandlingInstructionInfo
objects are then associated with the appropriate 
CommerceItemShippingInfo
objects based on the 
CommerceItem
referenced in the handling 
instruction. 
Gift items in an order are identified by a special handling instruction (
GiftHandlingInstruction
), and 
therefore the 
ShippingGroupDroplet
and 
ShippingGroupFormHandler
automatically handle splitting 
and merging of gift items in the order. 
If the 
CommerceItemShippingInfoTools
includeGifts
property is set to 
false
(the default), it has 
the following effects: 
CommerceItemShippingInfo
objects don’t include the quantity of the items 
designated as gifts. For example, if an item is quantity 3, and 1 is a gift, a 
CommerceItemShippingInfo
will be created for a quantity of 2. 
GiftHandlingInstructions
are not included in the 
HandlingInstructionInfos
associated with the 
CommerceItemShippingInfos
ShippingGroups
that contain only gifts are not added to the 
ShippingGroupMapContainer
The result is that none of the gift-related objects in the 
Order
are added to the 
CommerceItemShippingInfoContainer
and 
ShippingGroupMapContainer
when initializing based 
on the 
Order
, and after applying, they remain unchanged in the 
Order
Creating Payment Groups 
ATG Commerce provides two implementations of the 
CreatePaymentGroupFormHandler
interface to 
support the form-driven creation of credit card and invoice payment groups. These form handler classes 
create the payment groups and optionally add them to the 
PaymentGroupMapContainer
. Once the 
payment groups are added to the 
PaymentGroupMapContainer
, the user can then select from among 
them for use in the current 
Order
The default implementations of the 
CreatePaymentGroupFormHandler
are: 
CreateCreditCardFormHandler 
This form handler creates a 
CreditCard
payment group and exposes it via a 
getCreditCard()
method, which makes it possible for users to edit its properties 
directly via JSP forms. ATG Commerce provides an instance of 
atg.commerce.order.purchase.CreateCreditCardFormHandler
; it is located in 
Nucleus at 
/atg/commerce/order/purchase/CreateCreditCardFormHandler
To create the 
CreditCard
payment group, the 
handleNewCreditCard()
method 
invokes the 
createCreditCard()
method, which actually creates the payment 
group. The form handler’s 
creditCardType
property determines the type of 
CreditCard
payment group to create; by default, this property is set to 
creditCard
The form handler’s 
creditCardName
property determines the name of the new 
payment group, as referenced in the 
PaymentGroupMapContainer
. The form 
Library SDK class:VB.NET TIFF: Modify TIFF File by Adding, Deleting & Sort TIFF
Please check following TIFF page deleting methods and &ltsummary> ''' Sort TIFF document pages in designed & profession imaging controls, PDF document, image
www.rasteredge.com
Library SDK class:VB.NET TIFF: An Easy VB.NET Solution to Delete or Remove TIFF File
also empowers users to insert blank pages into TIFF I have tried the function of deleting page from powerful & profession imaging controls, PDF document, image
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
32 8  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
handler’s 
addToContainer
property determines whether the new payment group is 
added to the 
PaymentGroupMapContainer
and made the default payment group; by 
default, this property is set to True. (Once the payment group is added to the 
PaymentGroupMapContainer
, the user can use it when checking out the 
Order
.) 
CreateCreditCardFormHandler
can optionally validate credit card information 
using the credit card’s verification number. To validate credit cards, set the 
validateCreditCard
property to 
true
. Finally, the form handler’s 
copyToProfile
property determines whether the payment group is copied to the 
Profile
; by 
default, this property is set to 
true
After creating the credit card information, you can use the 
UpdateCreditCardFormHandler
to deal with any changes the user makes to their 
credit card information. 
UpdateCreditCardFormHandler
can update this 
information in any or all of three places, based on these properties: 
updateContainer
—Update the credit card in the 
PaymentGroupMapContainer.
updateProfile
—Update the credit card in the profile. 
updateOrder
—Update the credit card in the order. 
CreateInvoiceRequestFormHandler 
(ATG Business Commerce only) This form handler creates an 
InvoiceRequest
payment group and exposes it via a 
getInvoiceRequest()
method, which makes it 
possible for users to edit its properties directly via JSP forms. ATG Business Commerce 
provides an instance of 
atg.b2bcommerce.order.purchase.CreateInvoiceRequestFormHandler
; it is 
located in Nucleus at 
/atg/commerce/order/purchase/CreateInvoiceRequestFormHandler
To create the 
InvoiceRequest
payment group, the 
handleNewInvoiceRequest()
method first invokes the 
checkRequiredProperties()
method. By default, this 
method checks that a 
poNumber
for the invoice has been specified and throws an 
exception if one has not been provided. The handle method then calls 
createInvoiceRequest()
, which actually creates the payment group. 
The form handler’s 
invoiceRequestType
property determines the type of 
InvoiceRequest
payment group to create; by default, this property is set to 
invoiceRequest
. The form handler’s 
addToContainer
property determines whether 
the new payment group is added to the 
PaymentGroupMapContainer
and made the 
default payment group; by default, this property is set to True. (Once the payment 
group is added to the 
PaymentGroupMapContainer
, the user can use it when 
checking out the 
Order
.) The form handler’s 
billingAddressPropertyName
determines the billing address 
Profile
property to copy into the 
InvoiceRequest
by default, this property is set to 
defaultBillingAddress
. Finally, the form handler’s 
invoiceRequestProperties
property determines what additional 
Profile
properties to dynamically add to the 
InvoiceRequest
You can also create 
Profile
-derived 
PaymentGroups
and add them to the 
PaymentGroupMapContainer
by using the 
PaymentGroupDroplet
servlet bean (class 
atg.commerce.order.purchase.PaymentGroupDroplet
). The input parameters passed into 
PaymentGroupDroplet
determine what types of 
PaymentGroups
are created (credit card, store credit, 
Library SDK class:C#: How to Delete Cached Files from Your Web Viewer
PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET VB.NET How-to, VB.NET PDF, VB.NET Word Visual C#.NET Developers the Ways of Deleting Cache Files.
www.rasteredge.com
Library SDK class:C# PDF remove image library: remove, delete images from PDF in C#.
VB.NET comment annotate PDF, VB.NET delete PDF pages, VB.NET C# PDF - Remove Image from PDF Page. Provide C# Demo Code for Deleting and Removing Image from PDF
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
32 9  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
gift certificate) and whether the 
PaymentGroupMapContainer
is cleared before they are created. For a 
detailed list of these input parameters, as well as its output parameters, open parameters, and a code 
example, see the Adding Payment Information to Shopping Carts section of the Implementing Shopping 
Carts chapter of the ATG Commerce Guide to Setting Up a Store. 
To initialize the 
PaymentGroup
objects, the service method of 
PaymentGroupDroplet
calls 
initializeUserPaymentMethods()
, which initializes one or more 
PaymentGroups
for the current user 
and adds them to the 
PaymentGroupMapContainer
. For each entry in 
PaymentGroupDroplet.paymentGroupTypes
(which is supplied via an input parameter), its 
corresponding 
PaymentGroupInitializer
is obtained from the 
ServiceMap
in 
PaymentGroupDroplet.paymentGroupInitializers
(keyed by 
PaymentGroup
type). The 
initializePaymentGroups()
method of the 
PaymentGroupInitializer
is then used to initialize the 
PaymentGroup
and add it to the 
PaymentGroupMapContainer
Note that ATG Commerce provides four implementations of the 
PaymentGroupInitializer
interface. 
They are: 
CreditCardInitializer
GiftCertificateInitializer
StoreCreditInitializer
InvoiceRequestInitializer
(ATG Business Commerce only) 
To use this framework with a new 
PaymentGroup
type that you create, first, write a new 
PaymentGroupInitializer
implementation. Its 
initializePaymentGroups()
method should gather 
the user’s 
PaymentGroups
by type and add them to the 
PaymentGroupMapContainer
referenced by the 
PaymentGroupFormHandler
. For example, the 
StoreCreditInitializer
queries the Claimable 
Repository for the user’s 
StoreCredit
PaymentGroups
, instantiates objects for them, and then adds 
them to the 
PaymentGroupMapContainer
. Second, register a Nucleus component for the new 
PaymentGroupInitializer
implementation and add it to the 
ServiceMap
in 
PaymentGroupDroplet.paymentGroupInitializers
, which is keyed by 
PaymentGroup
type. Finally, 
include the new 
PaymentGroup
type in the 
PaymentGroupDroplet.paymentGroupTypes
parameter on 
those site pages where the new 
PaymentGroup
type is utilized. 
Associating Payment Groups with an Order and Its Items 
When the user has supplied the payment information for an 
Order
, the 
PaymentGroupFormHandler
can 
used to create and manage the associations between the 
PaymentGroups
and the various parts of the 
Order
. Any 
Order
that has been successfully processed by the 
PaymentGroupFormHandler
is ready for 
the next phase of the purchase process, which is typically order confirmation. ATG Commerce provides a 
request-scoped instance of 
atg.commerce.order.purchase.PaymentGroupFormHandler
, which is 
located in Nucleus at 
/atg/commerce/order/purchase/PaymentGroupFormHandler
The 
PaymentGroupFormHandler
adds the 
PaymentGroups
to the 
Order
, adds the 
CommerceItems
ShippingGroups
, tax, cost amount and cost remaining information to the 
PaymentGroups
, validates the 
PaymentGroup
information, and finally saves the 
Order
in its present state to the Order Repository. If 
you’d prefer for items to be priced according to a pricelist rather than the default behavior provided by 
the pricing engine, set the 
priceListId
property to the appropriate pricelist. When it is finished, the 
Order
is ready to proceed to the next step in the purchase process, which typically is 
Order
checkout. 
(See Submitting an Order for Checkout.) 
ATG  C om merce  P ro gra mm in g  G ui d e 
33 0  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
The 
PaymentGroupFormHandler
is composed of the following containers: 
atg.commerce.order.purchase.PaymentGroupMapContainer
, which defines a 
Map
of user-assigned 
PaymentGroup
names to 
PaymentGroups
. This container stores 
the user’ potential 
PaymentGroups
for the 
Order
atg.commerce.order.purchase.CommerceIdentifierPaymentInfoContainer
which defines a 
Map
of 
CommerceIdentifiers
to 
CommerceIdentifierPaymentInfo
Lists. This container stores the user’s 
CommerceIdentifierPaymentInfo
objects for the 
Order
Additionally, the 
PaymentGroupFormHandler
uses the following helper classes: 
atg.commerce.order.purchase.CommerceIdentifierPaymentInfo
, which 
represents the association between a 
CommerceIdentifier
and its payment 
information and includes properties that allow the cost of a given quantity or even a 
single item to be spread across multiple payment groups. These objects store the 
information need to create payment 
Relationships
for the 
Order
atg.commerce.order.purchase.PaymentGroupDroplet
, which implements both 
the 
PaymentGroupMapContainer
and 
CommerceIdentifierPaymentInfoContainer
interfaces. The 
PaymentGroupDroplet
servlet bean is used to initialize 
PaymentGroup
objects and 
CommerceIdentifierPaymentInfo
objects for use by the 
PaymentGroupFormHandler
. The resulting collections of 
PaymentGroups
and 
CommerceIdentifierPaymentInfo
objects are exposed via the output parameters 
of the servlet bean. (For more information on using 
PaymentGroupDroplet
to 
initialize 
PaymentGroup
objects, see Creating Payment Groups. For more information 
on initializing 
CommerceIdentifierPaymentInfo
objects, see below in this section.) 
With these helper classes and containers, the 
PaymentGroupFormHandler
adds the necessary 
PaymentGroups
to the 
Order
, validates them, and updates the 
Order
. The following table describes the 
handle methods used in these processes: 
ATG  C om mer ce P ro g ramm in g   Gui d e 
33 1  
16  -  C o n fi g u rin g   Pu rch as e  Pro ces s  S ervices  
Method 
Description of Functionality 
handleSplitPaymentInfos 
This handle method is used when the user wants to split a 
particular 
CommerceIdentifierPaymentInfo
by amount across 
multiple 
PaymentGroups
The handle method calls 
splitPaymentInfos()
, which retrieves 
the list of 
CommeceIdentifierPaymentInfo
objects from the 
CommerceIdentifierPaymentInfoContainer
. The 
splitPaymentInfos()
method then iterates through the list 
and calls 
splitCommerceIdentifierPaymentInfo()
on each 
object. In turn, 
splitCommerceIdentifierPaymentInfo()
calls 
splitCommerceIdentifierPaymentInfoByAmount()
to 
split the 
CommerceIdentifierPaymentInfo
object. The 
method creates a new 
CommerceIdentifierPaymentInfo
object, adjusts the properties of both the existing and new 
objects, and adds the new object to the 
CommerceIdentifierPaymentInfoContainer
In a form, the user might request to split $50 of an original 
CommerceIdentifier
amount of $100 to a separate payment 
method. This creates a separate 
CommerceIdentifierPaymentInfo
object, and adjusts the 
amount of both the original and the new 
CommerceIdentifierPaymentInfo
objects to add up to the 
original 
CommerceIdentifier
total amount. 
handleSpecifyDefault 
PaymentGroup 
This handle method is used to let the user specify a default 
PaymentGroup
to use for payment. The method calls 
specifyDefaultPaymentGroup()
, which sets the 
defaultPaymentGroupName
in the 
PaymentGroupMapContainer
Setting the default 
PaymentGroup
can facilitate simpler 
applications that permit only one 
PaymentGroup
per 
Order
, as 
well as advanced applications that apply a default 
PaymentGroup
to any remaining 
Order
amount not explicitly covered by other 
PaymentGroups
handleApplyPaymentGroups 
This handle method adds the 
PaymentGroups
to the 
Order
. It is 
used when the user has supplied the necessary payment 
information for the 
Order
and is ready to proceed with the next 
checkout phase. 
The handle method calls 
applyPaymentGroups()
, which first 
calls 
PaymentGroupManager.removeAllPaymentGroupsFromOrder
()
to remove any existing 
PaymentGroups
from the 
Order
. This 
ensures a clean 
Order
Next, the 
applyPaymentGroups()
method calls 
applyCommerceIdentifierPaymentInfo()
, which applies the 
ATG  C om merce  P ro gra mm in g  G ui d e 
33 2  
16  -  C o n fi g uri n g  P u rch as e P ro ces s  Serv ices  
CommerceIdentierPaymentInfo
objects to the 
Order
. The 
applyCommerceIdentifierPaymentInfo()
method iterates 
through the list of 
CommerceIdentifierPaymentInfo
objects 
in the 
CommerceIdentifierPaymentInfoContainer
. For each 
CommerceIdentifierPaymentInfo
object, the associated 
PaymentGroup
is retrieved and added to the 
Order
(if it isn’t 
already in the 
Order
). Then the method retrieves the 
Relationship
type of the current 
CommerceIdentifierPaymentInfo
object and calls the 
appropriate method in the appropriate “Manager” to add the 
amount to the 
PaymentGroup
. For more information, see the 
Assigning Costs to PaymentGroups section of the Working With 
Purchase Process Objects chapter. 
Next, if the form handler’s 
applyDefaultPaymentGroup
property is True, then the 
applyPaymentGroups()
method 
checks for a default payment group in the 
PaymentGroupMapContainer
. If one exists, then the remaining 
order amount is added to the default payment group. 
Then, 
applyPaymentGroups()
calls 
PaymentGroupManager.recalculatePaymentGroupAmount()
to recalculate the payment groups. 
Next, the handle method calls 
runProcessValidatePaymentGroups()
to validate the 
PaymentGroups
in the 
Order
. This executes the payment 
validation pipeline specified in 
PaymentGroupFormHandler.validatePaymentInformationC
hainId
; by default, this property is to 
moveToConfirmation
. The 
moveToConfirmation
pipeline both prices and validates a given 
Order
. For more information, see Appendix G: Commerce 
Pipeline Chains
Finally, the handle method calls 
OrderManager.updateOrder()
to save the 
Order
in its present state to the Order Repository. For 
more 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. 
As previously mentioned, the 
PaymentGroupDroplet
servlet bean is used to initialize 
CommerceIdentifierPaymentInfo
objects and add them to the 
CommerceIdentifierPaymentInfoContainer
, so they can be used by the 
PaymentGroupFormHandler
. To initialize the 
CommerceIdentifierPaymentInfo
objects, the service 
method of 
PaymentGroupDroplet
calls 
initializePaymentInfos()
, which creates and initializes 
CommerceIdentifierPaymentInfo
objects for the 
Order
, as well as the 
Order
’s 
CommerceItems
ShippingGroups
, and tax. These objects are then added to the 
CommerceIdentifierPaymentInfoContainer
Documents you may be interested
Documents you may be interested