c# wpf document viewer pdf : Convert selected pages of pdf to word online application software tool html windows winforms online ATGCommProgGuide29-part2106

ATG  C om mer ce P ro g ramm in g   Gui d e 
27 3  
15  -  W o rki n g  W i t h  P u rch ase  P ro ces s  O bje cts  
μ
site must provide a UI that allows the customer to enter an address, and then associate it with a shipper, 
such as UPS or US Postal. 
After the customer selects a shipper, a 
ShippingGroup
is created. The site must then provide a UI that 
allows the customer to associate items with that shipping group. If there is only one shipping group, then 
all the items to be shipped will go into that shipping group. If more than one shipping group is associated 
with the order, then the customer must decide which items go into each group. 
Creating a Payment Group 
PaymentGroup
contains information about the payment method that will be used to purchase a group 
of commerce items. By default, a new 
Order
has one default 
PaymentGroup
. As items are added to the 
Order
, these items automatically become part of the default 
PaymentGroup
. Once a second 
PaymentGroup
is added to the 
Order
, all the items in the 
Order
are removed from the default 
PaymentGroup
and must be explicitly added to one of the two payment groups. Relationships must now 
be created to associate the items with payment groups. (For more information, see the Assigning Costs to 
Payment Groups section.) 
Payment groups also contain a 
requisitionNumber
property for orders that require approval before a 
means of payment can be specified. Orders with requisition numbers are automatically assumed to 
require approval. (See the Managing the Order Approval Process chapter for information on approvals.) 
Follow these steps to create a new 
PaymentGroup
and add it to an 
Order
1.
Call 
PaymentGroupManager.createPaymentGroup()
2.
Make any changes to the 
PaymentGroup
. For example, you could set the credit card 
number and expiration date. 
3.
Call 
PaymentGroupManager.addPaymentGroupToOrder(pOrder, 
pPaymentGroup)
to add the payment group to the order. 
Refer to the following example: 
// Get a reference to the OrderManager 
OrderManager orderManager = (OrderManager) 
request.resolveName("/atg/commerce/order/OrderManager"); 
// Create the PaymentGroup 
PaymentGroup paymentGroup = paymentGroupManager.createPaymentGroup(); 
// Add the PaymentGroup to the Order 
paymentGroupManager.addPaymentGroupToOrder(pOrder, paymentGroup); 
Creating Multiple Payment Groups 
Multiple payment groups follow a similar pattern to multiple shipping groups. The payment groups 
implement 
Multipayment
, and permit a customer to split the cost of an order by amount or by items. For 
example, the customer might put the first $1000 of a $1250 order on a Visa credit card, then pay the the 
remaining $250 using points earned on the site during previous visits. 
Convert selected pages of pdf to word online - Library software 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
Convert selected pages of pdf to word online - Library software 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 
27 4  
15  -  W o rki n g  W i t h  P u rch ase  P ro cess   O bject s  
While customers can select payment methods by item level, amount level, or any combination of the two, 
you can limit the ways in which an order’s costs can be split, if necessary. 
Adding an Item to an Order via a URL 
The 
CommerceCommandServlet
provides a foundation for URL-based actions. Out of the box, you can 
allow a user to add an item to his or her order by clicking a URL. Because this process is part of the 
request-handling pipeline (which handles all ATG requests and responses), each time a page is requested, 
the request will be checked to see if it includes Commerce item information. 
Consider the following example request URL: 
http://yoursite.com/yourpage.jsp?dcs_action=additemtocart&url_catalog_ref_ 
id=sku10001&url_product_id=prod10001&url_quantity=1&dcs_ci_catalogKey=en_ 
US&dcs_subsku=sku10001,prod10001,2&dcs_subsku=sku10002,prod10002,1 
The 
dcs_action
flag notifies the request-handling pipeline of the action to be performed, and additional 
parameters give specifics for the action. The following table explains the URL elements: 
Element 
Function 
dcs_action 
(Required) When 
CommerceCommandServlet
receives the 
dcs_action
additemtocart
, it calls the 
AddItemToCartServlet
You can extend the 
CommerceCommandServlet
and the pipeline to let the 
user trigger some other action by clicking a URL. 
The 
AddItemToCartServlet
component includes a 
pricingOperation
parameter, which determines what action the servlet takes when called. The 
default action is 
ORDER_TOTAL
. The possible actions are included in 
atg.commerce.pricing.PricingConstants
url_catalog_ref_
id 
(Required) The SKU of the product to add to the cart. 
url_product_id 
(Required) The product ID of the product to add to the cart. 
url_quantity 
(Required) The quantity of the SKU to add to the cart. 
url_shipping_gro
up_id 
The ID of the 
ShippingGroup
to which to add the item. 
url_item_type 
A string specifying which 
CommerceItem
type to use. 
url_commerce_ite
m_id 
The ID of the 
CommerceItem
which this configuration should replace. If this 
parameter is supplied, then this is a reconfiguration. 
dcs_ci_* 
An identifier for setting a 
CommerceItem
property. For example, 
dcs_ci_catalogKey=en_US
causes the property 
catalogKey
to be set to 
the value 
en_US
Library software class:C# PDF Page Insert Library: insert pages into PDF file in C#.net
page2 }; // Specify a position for inserting the selected pages. doc2.InsertPages( pages, pageIndex); // Output the new document Insert Blank Page to PDF File in
www.rasteredge.com
Library software class:VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
page2} ' Specify a position for inserting the selected pages. doc2.InsertPages(pages, pageIndex) ' Output the new document. Insert Blank Page to PDF File Using
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
27 5  
15  -  W o rki n g  W i t h  P u rch ase  P ro ces s  O bje cts  
dcs_subsku 
An identifier for a configurable property of a 
CommerceItem
. The format is: 
dcs_subsku=
sku id, product id, individual quantity
. The 
individual quantity portion of this parameter reflects the quantity of the item 
which will be added to a single 
ConfigurableCommerceItem
. For example, 
if you are adding a computer with 2 hard drives, the individual quantity 
would be 2. If you were adding 1000 computers, each with 2 hard drives, the 
individual quantity would still be 2. ATG Commerce handles the 
multiplication. 
If you need to add two different computer configurations, you must issue 
two separate requests to ATG Commerce to add each of the configurations 
as separate 
ConfigurableCommerceItems
. For example, 
dcs_subsku=sku10001,prod10001,2&dcs_subsku=sku10002,prod1000
2,1
causes the servlet to add a 
CommerceItem
with SKU/product 
combination sku10001, prod10001 and quantity 2 and SKU/product 
combination sku10002,prod10002 and quantity 1 to the 
ConfigurableCommerceItem
The first four parameters listed in the table above are required. If no other parameters are supplied, the 
servlet creates a 
CommerceItem
and adds it to the cart. 
If a 
dcs_subsku
parameter is in the URL, then the base SKU/product is represented in a 
ConfigurableCommerceItem
object and the subSKU is represented in a 
SubSkuCommerceItem
object. 
SubSkuCommerceItem
is a subclass of 
CommerceItemImpl
If all required parameters and 
shipping_group_id
are supplied, then the item is added to the 
ShippingGroup
with the specified ID. 
Preventing Commerce Items from Being Added to Types of Shipping 
Groups 
By default, all items are allowed to go into any type of 
ShippingGroup
. However, it might be necessary to 
prevent specific commerce items from being added to certain types of shipping groups. For example, 
only certain types of items can be assigned to an 
ElectronicShippingGroup
. It does not make sense for 
a box of golf balls to be shipped electronically. 
Follow these steps to prevent commerce items from being added to specific types of shipping groups: 
1.
Add a new 
shippingGroupsAllowed
property to the SKU item descriptor in the 
product repository. The 
shippingGroupsAllowed
property should contain a list of 
shipping groups to which the SKU that this 
CommerceItem
represents can be added. 
Note: The available 
ShippingGroup
types are listed in the 
shippingTypeClassMap
property of the 
OrderTools
component. 
2.
Override any necessary methods to make sure the 
shippingGroupsAllowed
property in the SKU that this 
CommerceItem
represents matches the 
shippingGroupClassType
property of the 
ShippingGroup
to which the 
CommerceItem
is being added. 
Library software class:VB.NET PDF - Annotate PDF Online with VB.NET HTML5 PDF Viewer
Support to insert note annotation to replace PDF text. Ability to insert a text note after selected text. VB.NET HTML5 PDF Viewer: Annotate PDF Online.
www.rasteredge.com
Library software class:C# HTML5 PDF Viewer SDK to annotate PDF document online in C#.NET
Support to insert note annotation to replace PDF text. Ability to insert a text note after selected text. C# HTML5 PDF Viewer: Annotate PDF Online.
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
27 6  
15  -  W o rki n g  W i t h  P u rch ase  P ro cess   O bject s  
These methods are 
addItemToShippingGroup()
in the 
ShippingGroupManager
and 
addItemQuantityToShippingGroup
and 
addRemainingItemQuantityToShippingGroup()
in the 
CommerceItemManager
Alternatively, you could create a 
shippingGroupsNotAllowed
property for the SKU item descriptor in 
the product repository. In this property, list the names of the 
ShippingGroup
types to which a 
CommerceItem
is not allowed. 
Removing Commerce Objects from an Order 
The counterparts to the 
add
methods are the methods for removing commerce items, shipping groups, 
and payment groups from an 
Order
. They are: 
CommerceItemManager.removeItemFromOrder()
ShippingGroupManager.removeShippingGroupFromOrder()
PaymentGroupManager.removePaymentGroupFromOrder()
These methods take an 
Order
and their respective object ID as parameters. The object ID is found in the 
id
property of the 
CommerceItem
ShippingGroup
, or 
PaymentGroup
To remove subitems from configurable commerce items, use one of these methods: 
CommerceItemManager.removeSubItemFromConfigurableItem()
CommerceItemManager.removeAllSubItemsFromConfigurableItem()
Using the SimpleOrderManager 
SimpleOrderManager
extends 
OrderManager
. By default, a 
SimpleOrderManager
object is configured 
in Nucleus at 
/atg/commerce/order/OrderManager
. Logically, the 
SimpleOrderManager
sits above 
the 
OrderManager
and provides higher-level functionality. What takes several lines of code to do in the 
OrderManager
takes only a single line of code in the 
SimpleOrderManager
. You can use 
SimpleOrderManager
in place of 
OrderManager
to simplify your code, as the example below shows. 
String skuId = getSkuId(); 
String productId = getProductId(); 
long quantity = getQuantity(); 
ShippingGroup shippingGroup = getShippingGroup(); 
getSimpleOrderManager().addItemToShippingGroup(order, skuId, productId, quantity, 
shippingGroup); 
Using Relationship Objects 
Relationship
represents an association between two other objects. For example, a 
ShippingGroupCommerceItemRelationship
represents a relationship between a 
CommerceItem
and 
Library software class:VB.NET PDF Image Redact Library: redact selected PDF images in vb.
Text. PDF Export. Convert PDF to Word (.docx). Convert to Text. Convert PDF to JPEG. Convert PDF to Png Page: Create Thumbnails. Page: Insert PDF Pages. Page: Delete
www.rasteredge.com
Library software class:C# Word - Insert Blank Word Page in C#.NET
doc1 = new DOCXDocument(inputFilePath1); // Specify a position for inserting the selected page. Add and Insert Multiple Word Pages to Word Document Using C#.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
27 7  
15  -  W o rki n g  W i t h  P u rch ase  P ro ces s  O bje cts  
ShippingGroup
. The 
Relationship
indicates that the 
CommerceItem
will be handled according to 
the information in the 
ShippingGroup
. The 
Relationship
contains the 
CommerceItem
to ship, the 
ShippingGroup
, and the quantity of this item to ship to the address in the 
ShippingGroup
Another 
Relationship
example is a 
PaymentGroupOrderRelationship
, which represents a 
relationship between an 
Order
and the 
PaymentGroup
responsible for the whole or partial cost of the 
Order
. The 
PaymentGroup
contains the credit card information. The 
PaymentGroupOrderRelationship
contains the amount to charge, the 
PaymentGroup
, and the 
Order
In ATG Commerce, a new 
Order
has one default payment group, one default shipping group, and no 
Relationships
. While you never explicitly add a 
Relationship
to an 
Order
, you do so implicitly by 
calling methods like 
addItemQuantityToShippingGroup()
or 
addShippingCostAmountToPaymentGroup()
. When you create these additional associations, 
relationships handle the details of which payment or shipping method to use for which items. Below is a 
code sample that associates part of an order’s cost with a specific 
PaymentGroup
. A 
PaymentGroupOrderRelationship
is constructed implicitly. 
// Get a reference to the OrderManager 
OrderManager om = (OrderManager) 
request.resolveName("/atg/commerce/order/OrderManager"); 
// Creates a PaymentGroupOrderRelationship implicitly 
om.addRemainingOrderCostToPaymentGroup(pOrder, pPaymentGroup); 
Unlike most business objects, 
Relationship
objects do not have their own manager class. Methods 
where the operator is a 
Relationship
are placed in the operand’s manager class. For example, a method 
for adding an 
Order
to a 
ShippingGroup
is in the 
OrderManager
, and a method for assigning a 
CommerceItem
to a 
ShippingGroup
is in the 
CommerceItemManager
. Methods that operate on a 
subclass of a given commerce object are placed in the superclass’s manager class. 
Relationship Types 
Relationship
objects have associated types. These types determine what happens when an 
Order
is 
checked out, as well as what types the relationship’s member variables have. This section describes the 
following 
Relationship
objects and their possible relationship types: 
ShippingGroupCommerceItemRelationship Object 
PaymentGroupOrderRelationship Object 
PaymentGroupCommerceItemRelationship Object 
PaymentGroupShippingGroupRelationship Object 
For details on assigning items to relationships of specific types, see the next two sections, Assigning Items 
to Shipping Groups and Assigning Costs to Payment Groups
Note: For all of the following relationship types, quantities and amounts designated by a number are 
processed as “up to and including” the given number. For example, if a 
PaymentAmount
relationship 
exists with quantity 6 and references an item with quantity 10, 6 of those items will be paid for using the 
PaymentGroup
that the relationship references. The remaining 4 will be handled by the next relationship 
Library software class:C# PDF Page Rotate Library: rotate PDF page permanently in C#.net
Online C# class source codes enable the ability to rotate int rotateInDegree = 270; // Rotate the selected page. C#.NET Demo Code to Rotate All PDF Pages in C#
www.rasteredge.com
Library software class:VB.NET PDF insert image library: insert images into PDF in vb.net
Access to freeware download and online VB.NET class to provide users the most individualized PDF page image as Png, Gif and TIFF, to any selected PDF page with
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
27 8  
15  -  W o rki n g  W i t h  P u rch ase  P ro cess   O bject s  
whose priority is less than the first relationship. On the other hand, if the relationship contained quantity 
15, then all 10 items will be paid for using that first 
PaymentGroup
Also note that it is not possible to have more than one 
Relationship
of a specific “remaining” type 
(described below) in any given object. For example, a given 
CommerceItem
cannot have more than one 
PaymentGroupRelationship
of a remaining type. However, it can have a 
PaymentGroupRelationship
and a 
ShippingGroupRelationship
– both of a remaining type – 
because the two relationships are separate entities. 
ShippingGroupCommerceItemRelationship Object 
ShippingGroupCommerceItemRelationship
represents a relationship between a 
CommerceItem
and a 
ShippingGroup
. This relationship can be assigned the relationship type 
ShippingQuantity
or 
ShippingQuantityRemaining
. These relationship types assign 
CommerceItems
to 
ShippingGroups
that specify which items in the 
Order
will be shipped to each destination. The following list describes the 
relationship types: 
ShippingQuantity
: This relationship type indicates that a specific quantity of the 
item will be shipped using the information in the 
ShippingGroup
. The quantity to 
ship is stored inside the 
Relationship
, and the quantity purchased is stored inside 
the 
CommerceItem
. If the quantity in the 
Relationship
is greater than the quantity 
in the 
CommerceItem
, then all the 
CommerceItems
are shipped to the location in the 
ShippingGroup
ShippingQuantityRemaining
: This relationship type indicates that the remaining 
quantity of the item unaccounted for by other 
ShippingGroupCommerceItemRelationship
objects will be shipped using the 
information in the 
ShippingGroup
Note: Any 
ShippingQuantityRemaining
relationships have the lowest priority. A 
CommerceItem
can have only one 
Relationship
of type 
ShippingQuantityRemaining
For example, a customer places an order for 
CommerceItem
Apple with quantity 10. Two 
ShippingGroups
already exist, SG1 (home) and SG2 (office). 
The customer wants three apples shipped to his home, so a 
ShippingGroupCommerceItemRelationship
is created between CI1 (apple) and SG1 (home). This 
relationship type is 
ShippingQuantity
and the quantity to ship is 3. 
The customer wants the remaining seven apples shipped to his office. A 
ShippingGroupCommerceItemRelationship
is created between CI1 (apple) and SG2 (office). This 
relationship can have either the relationship type 
ShippingQuantity
with quantity 7, or the relationship 
type 
ShippingQuantityRemaining
The difference between creating a second relationship with type 
ShippingQuantity
and using 
ShippingQuantityRemaining
is that, using 
ShippingQuantity
, if the quantity of CI1 increases, then 
the new items would not be assigned to a 
ShippingGroup
. If the second relationship is of type 
ShippingQuantityRemaining
, then the new items default to the 
ShippingGroup
in that relationship. 
Both relationship types use an 
atg.core.util.Range
object to determine which particular 
CommerceItems
to include for a given quantity. Set the Range’s 
lowBound
and 
highBound
to indicate 
Library software class:C# WPF PDF Viewer SDK to annotate PDF document in C#.NET
1. Highlight text. Click to highlight selected PDF text content. 2. Underline text. Click to underline selected PDF text. 3. Wavy underline text.
www.rasteredge.com
Library software class:VB.NET PDF - Annotate PDF with WPF PDF Viewer for VB.NET
1. Highlight text. Click to highlight selected PDF text content. 2. Underline text. Click to underline selected PDF text. 3. Wavy underline text.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
27 9  
15  -  W o rki n g  W i t h  P u rch ase  P ro ces s  O bje cts  
which items to include. Bounds are inclusive. For example, if one 
CommerceItemShippingGroupRelationship
accounts for four out of six 
CommerceItems
, setting the 
lowBound
to 1 and the 
highBound
to 4 means the first four 
CommerceItems
are shipped using this 
relationship. Setting the 
lowBound
to 3 and the 
highBound
to 6 means the last four are shipping using 
this relationship. 
Range information is calculated when the end user checks out, ensuring correct pricing for each 
CommerceItem
regardless of any changes the user may make to 
ShippingGroups
while browsing. 
PaymentGroupOrderRelationship Object 
PaymentGroupOrderRelationship
represents a relationship between an 
Order
and a 
PaymentGroup
. There are two ways to split the cost of an 
Order
across 
PaymentGroups
. Either split the 
entire cost by using 
PaymentGroupOrderRelationships,
or assign different types of costs (such as 
item cost vs. tax) to separate 
PaymentGroups
PaymentGroupOrderRelationship
can be assigned the type 
OrderAmount
OrderAmountRemaining
TaxAmount
, or 
TaxAmountRemaining
. These relationship types assign the 
order and tax amounts to different 
PaymentGroups
. The following list describes the relationship types: 
OrderAmount
: This relationship type indicates that a specific amount of the total cost 
of the 
Order
(including 
CommerceItems
ShippingGroups
, and tax) will be paid 
using the information in the 
PaymentGroup
. The amount must be greater than zero. If 
the relationship amount is greater than the total amount of the 
Order
, then the cost 
of the entire 
Order
will be paid using the referenced 
PaymentGroup
OrderAmountRemaining
: This relationship type indicates that the remaining cost of 
the 
Order
unaccounted for by other 
PaymentGroupOrderRelationship
objects will 
be paid using the information in the 
PaymentGroup
Note: An 
Order
can have only one 
Relationship
of type 
OrderAmountRemaining
TaxAmount
: This relationship type indicates that a specific amount of the tax charged 
for the 
Order
will be paid using the information in the 
PaymentGroup
. The amount 
must be greater than zero. If the relationship amount is greater than the total amount 
of the 
Order
, then all the tax will be paid for using the referenced 
PaymentGroup
TaxAmountRemaining
: This relationship type indicates that the tax cost unaccounted 
for by other 
PaymentGroupOrderRelationship
objects will be paid using the 
information in the referenced 
PaymentGroup
Note: An 
Order
can have only one 
Relationship
of type 
TaxAmountRemaining
Example #1 
The following example describes how to use the 
OrderAmount
and 
OrderAmountRemaining
types. 
A customer places an 
Order
with a total of $600. The customer wants to pay for the order using two 
credit cards (Visa and MasterCard). A different 
PaymentGroup
represents each credit card. Two 
relationships are created to split the payment: 
One 
PaymentGroupOrderRelationship
is created between the Visa’s 
PaymentGroup
and the 
Order
. The relationship type is set to 
OrderAmount
, and the 
amount is set to $400. 
ATG  C om merce  P ro gra mm in g  G ui d e 
28 0  
15  -  W o rki n g  W i t h  P u rch ase  P ro cess   O bject s  
One 
PaymentGroupOrderRelationship
is created between the MasterCard’s 
PaymentGroup
and the 
Order
. The relationship type is set to 
OrderAmountRemaining
When the 
Order
is charged, $400 will be charged on the Visa and $200 will be charged on the 
MasterCard. 
Example # 2 
The following example describes how to use the 
TaxAmountRemaining
type. 
A customer places an order with a total tax of $100. The customer wants to pay for the tax with a separate 
credit card than the rest of the order payment. A 
PaymentGroupOrderRelationship
is created between 
the 
PaymentGroup
that represents the credit card and the 
Order
. The relationship type is set to 
TaxAmountRemaining,
which covers whatever the tax amount turns out to be. 
PaymentGroupCommerceItemRelationship Object 
PaymentGroupCommerceItemRelationship
represents a relationship between a 
CommerceItem
and 
PaymentGroup
. This relationship type is used to split payment for a single 
CommerceItem
between 
multiple payment groups. 
The relationship can have the relationship type 
PaymentAmount
or 
PaymentAmountRemaining
. The 
following list describes the relationship types: 
PaymentAmount
: This relationship type indicates that a specific amount of the item’s 
cost will be paid for using the information in the 
PaymentGroup
. The amount must be 
greater than zero. If the amount is greater than the total amount of the item stored in 
the 
CommerceItem
, then the entire cost of the item will be paid for using the 
referenced 
PaymentGroup
PaymentAmountRemaining
: This relationship type indicates that any remaining 
payment amount unaccounted for by other 
PaymentGroupCommerceItemRelationship
objects will be paid using the 
information in the 
PaymentGroup
. If there is only one relationship between a given 
CommerceItem
and a 
PaymentGroup
of type 
PaymentAmountRemaining
, then the 
entire cost of that item will be paid for using the information in the 
PaymentGroup
Note: A 
CommerceItem
can have only one 
Relationship
of type 
PaymentAmountRemaining
For example, a customer places an order for a 
CommerceItem
(Car) with the total cost $10,000. The 
customer wants to split the payment of this item between three credit cards (Visa, MasterCard, and 
American Express). A different 
PaymentGroup
represents each credit card. To split the item between 
three payment groups, 
PaymentGroupCommerceItemRelationships
must be created between the 
CommerceItem
(Car) and the three 
PaymentGroup
objects: 
The first 
PaymentGroupCommerceItemRelationship
connects the 
CommerceItem
(car) and the first 
PaymentGroup
(Visa). The relationship type is set to 
PaymentAmount
, and the amount is set to $4000. 
ATG  C om mer ce P ro g ramm in g   Gui d e 
28 1  
15  -  W o rki n g  W i t h  P u rch ase  P ro ces s  O bje cts  
The second 
PaymentGroupCommerceItemRelationship
connects the 
CommerceItem
(car) and the second 
PaymentGroup
(MasterCard). The relationship 
type is set to 
PaymentAmount
, and the amount is set to $4000. 
The third 
PaymentGroupCommerceItemRelationship
connects the 
CommerceItem
(car) and the third 
PaymentGroup
(American Express). The relationship type is set to 
PaymentAmountRemaining
PaymentGroupShippingGroupRelationship Object 
PaymentGroupShippingGroupRelationship
represents a relationship between a 
ShippingGroup
and a 
PaymentGroup
. This type of 
Relationship
is used to assign shipping costs in a 
ShippingGroup
to 
PaymentGroups.
This relationship can be assigned the relationship types 
ShippingAmount
or 
ShippingAmountRemaining
. The following list describes the relationship types: 
ShippingAmount
: This relationship type indicates that a specific amount of the 
shipping cost will be paid using the information in the 
PaymentGroup
. The amount 
must be greater than zero. If the amount is greater than the total amount of the item 
stored in the 
ShippingGroup
, then the cost of the entire item will be paid using the 
referenced 
PaymentGroup
ShippingAmountRemaining
: This relationship type indicates that any remaining 
shipping cost amount unaccounted for by other 
PaymentGroupShippingGroupRelationship
objects will be paid using the 
information in the 
PaymentGroup
. If there is only one relationship between a given 
ShippingGroup
and a 
PaymentGroup
of type 
PaymentAmountRemaining
, then the 
entire shipping cost will be paid using the information in the 
PaymentGroup
Note: A 
ShippingGroup
can have only one 
Relationship
of type 
PaymentAmountRemaining
For example, an order is shipped to one location stored in a 
ShippingGroup
. The shipping costs are $10. 
The customer wants to pay for the shipping costs with a credit card. The credit card information is stored 
in the only 
PaymentGroup
. A 
PaymentGroupShippingGroupRelationship
of type 
ShippingAmount
is 
created, and the amount is set to $10. 
Commerce Item Relationships 
The 
CommerceItemRelationship
interface, which is implemented by 
ShippingGroupCommerceItemRelationship
and 
PaymentGroupCommerceItemRelationship
objects as described previously, contains a set of numeric methods (
get/setQuantity()
get/setAmount(),
get/setRange()
). Certain method calls are valid depending on the relationship 
type. If an invalid method is called, the returned value is undefined. The table below summarizes which 
methods are valid with which relationship types. 
Relationship Type 
Valid Methods 
ShippingQuantity 
get/setQuantity(), 
get/setRange() 
ATG  C om merce  P ro gra mm in g  G ui d e 
28 2  
15  -  W o rki n g  W i t h  P u rch ase  P ro cess   O bject s  
ShippingQuantityRemaining 
get/setRange() 
OrderAmount 
get/setAmount() 
OrderAmountRemaining 
N/A 
PaymentAmount 
get/setAmount() 
PaymentAmountRemaining 
N/A 
ShippingAmount 
get/setAmount() 
ShippingAmountRemaining 
N/A 
TaxAmount 
get/setAmount() 
TaxAmountRemaining 
N/A 
Relationship Priority 
The priority of a 
Relationship
is important during order processing. A relationship’s type determines its 
priority. If relationships are the same types, the priority is determined by the order in which the 
relationships were created. 
When an 
Order
is being processed or fulfilled, the system moves through the relationships of 
CommerceItems
ShippingGroups
, and 
PaymentGroups
in the following order: 
1.
Shipping Priority 
ShippingQuantity
ShippingQuantityRemaining
2.
Commerce Item Payment Priority 
PaymentAmount
PaymentAmountRemaining
3.
Shipping Cost Payment Priority: 
ShippingAmount
ShippingAmountRemaining
4.
Tax Cost Payment Priority: 
TaxAmount
TaxAmountRemaining
5.
Order Cost Payment Priority 
OrderAmount
OrderAmountRemaining
Documents you may be interested
Documents you may be interested