c# wpf document viewer pdf : Delete pages from pdf reader application control cloud html web page wpf class ATGCommProgGuide15-part1751

ATG  C om mer ce P ro g ramm in g   Gui d e 
13 3  
8  -  C o n fi g uri n g  C o mm erce  Servi ces  
μ
e.put("popularity", score); 
return e; 
public int computePopularity(RepositoryItem pProduct) { 
... 
Note that by the time the 
createListEntry
method is called, 
pCategory
and 
pSku
will have been 
populated with the product’s default parent category and first child SKU, if necessary and available. 
Consequently, 
createListEntry
is called with the same category and SKU values that the user 
ultimately sees on the page in the product comparison list. 
Page developers can refer to the 
popularity
property of a 
ProductComparisonList
entry to display 
the corresponding value in a JSP. 
Using TableInfo to Display a Product Comparison List 
The 
ProductList
component, which maintains the list of 
Entry
objects in its 
items
property, also 
includes a reference to a 
TableInfo
object in its 
tableInfo
property. The 
TableInfo
component 
maintains the display information to compare the products in table form, such as the properties to display 
in the table, the column headings for the table, and the sorting instructions for the table. 
Depending on the complexity of your commerce application, you may require multiple instances of 
ProductComparisonList
and 
TableInfo
. In general, however, an application will maintain one 
instance of 
ProductComparisonList
and one instance of 
TableInfo
for each comparison table 
desired. 
For detailed information on 
TableInfo
, refer to the Implementing Sortable Tables chapter in the ATG Page 
Developer’s Guide. For JSP examples of how to use the 
ProductList
and 
TableInfo
components to 
manage product comparisons, refer to the Implementing Product Comparison chapter of the ATG 
Commerce Guide to Setting Up a Store. For an example of using multiple instances of 
TableInfo
to 
manage a single product comparison table, refer to the Viewing Compare Results section of the Displaying 
and Accessing the Product Catalog chapter in the ATG Business Commerce Reference Application Guide
Setting Up Gift Certificates and Coupons 
ATG Commerce provides the ability to create and manage gift certificates and coupons. (Collectively, 
these are sometimes referred to as “claimable items” in ATG Commerce.) By providing gift certificates as 
an option for your customers, you can increase sales and attract new business. Coupons can also help 
increase your customer base (for example, by including them in a cold call e-mail campaign), but more 
importantly they provide an alternative way to deliver promotions to your existing customers. 
Delete pages from pdf reader - application control cloud: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
Delete pages from pdf reader - application control cloud: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 
13 4  
8 -  C o n fi g u rin g   C om merce  Serv ices  
If you are using ATG’s multisite feature, you can specify at the time of coupon creation whether users can 
claim the coupon on any site, or only sites to which the associated promotion is limited. See the ATG 
Merchandising Guide for Business Users for information. 
The claimable item system in ATG Commerce is made up of three components: 
The Claimable repository 
The 
ClaimableTools
component 
The 
ClaimableManager
component 
The Claimable Repository 
The 
Claimable
repository holds claimable items, namely, gift certificates and coupons . The repository 
itself is made up of two parts: the database schema and the XML repository definition file. The definition 
file represents an item that can be claimed (a sub-type of type 
Claimable
) and then defines specific 
implementations of this item. 
The following example shows the pertinent code from the 
Claimable
repository definition file: 
<item-descriptor name="claimable" sub-type-property="type" 
version-property="version"> 
... 
<property name="type" data-type="enumerated"> 
<option value="GiftCertificateClaimable"/> 
</property> 
... 
</item-descriptor> 
Each item in the 
Claimable
repository has a 
repositoryId
property. The system uses the value in this 
property as the key for claiming the item (for example, as the claim code for a gift certificate). The value is 
created by the 
ObfuscatedIdGenerator
service. The 
ObfuscatedIdGenerator
service creates non-
sequential 
repositoryId
values. This is important to prevent users from guessing claim codes. The 
standard 
IdGenerator
generates sequential 
repositoryId
values. See the ID Generators section of the 
Core Dynamo Services chapter in the ATG Programming Guide. 
Disabling the Claimable Repository 
The Claimable repository is represented by the 
/atg/commerce/claimable/ClaimableRepository
component. If you are not going to use the 
Claimable
repository, you can disable it. Disabling the 
repository prevents you from having to create the associated tables in your database. 
Follow these steps to disable the 
Claimable
repository: 
1.
Edit the 
/atg/registry/ContentRepositories
component and remove the value 
in the 
initialRepositories
property that references the 
/atg/commerce/claimable/ClaimableRepository
component. 
2.
Edit the 
/atg/commerce/claimable/ClaimableTools
component and set the 
claimableRepository
property to null. 
application control cloud:VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
doc.Save(outPutFilePath). How to VB.NET: Delete Consecutive Pages from PDF. doc.Save(outPutFilePath). How to VB.NET: Delete Specified Pages from PDF.
www.rasteredge.com
application control cloud:C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
doc.Save(outPutFilePath); Demo Code: How to Delete Consecutive Pages from PDF in C#.NET. Demo Code: How to Delete Specified Pages from PDF in C#.NET.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
13 5  
8  -  C o n fi g uri n g  C o mm erce  Servi ces  
The ClaimableTools Component 
The 
ClaimableTools
component (
/atg/commerce/claimable/ClaimableTools
) provides two 
pieces of functionality: 
Low-level access to the Claimable repository. 
Naming for various claimable item properties. 
The first use of the 
ClaimableTools
component is simply to create and claim any type of claimable item. 
When claiming items, it can obtain any super-type of type 
claimable
since they all share the same 
common base type of 
claimable
. Additionally, it takes the item-descriptor type as an argument and then 
creates and adds the claimable item to the repository. 
The second use of the 
ClaimableTools
component is to provide configurable values for the various 
properties of claimable items. For example, if someone changes the name of a field in the XML file, you 
can reflect that change in the code by adjusting the property values of the 
ClaimableTools
component. 
The ClaimableManager Component 
The 
ClaimableManager
component (
/atg/commerce/claimable/ClaimableManager
) provides 
higher level access to the repository and is the mechanism that most applications use to interact with the 
claimable item functionality. It provides the ability to claim items, initialize them, and then perform 
functions that are specific to one type of claimable item, thus combining several smaller functions from 
the 
ClaimableTools
package. 
An example of how the 
ClaimableManager
component can layer together several pieces of functionality 
from the 
ClaimableTools
package is as follows: when a user claims an item by entering a code for a gift 
certificate, the 
ClaimableManager
component attempts to claim the item through the 
ClaimableTools
package. Then it attempts to adjust the status of the item to a claimed status, also 
through the 
ClaimableTools
package. 
Other examples of functions that the 
ClaimableManager
component provides are as follows: 
createClaimableGiftCertificate
– creates a gift certificate in the system. 
debitClaimableGiftCertificate
– debits a specific amount from the gift 
certificate. 
creditClaimableGiftCertificate
– credits a specific amount to a gift certificate. 
The ClaimableManager also handles coupon functionality. For example, if you are using ATG’s multisite 
feature, the 
ClaimableManager
can check the user’s site against the list of sites for which the coupon is 
valid before allowing it to be claimed. 
Setting Up Gift Certificates 
Gift certificates allow a customer to pay for all or part of a purchase using a prepaid amount. Processing a 
gift certificate involves the following steps: 
1.
Customer A purchases the gift certificate on behalf of Customer B. 
application control cloud:C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
VB.NET Page: Insert PDF pages; VB.NET Page: Delete PDF pages; VB.NET Annotate: PDF Markup & Drawing. XDoc.Word for XImage.OCR for C#; XImage.Barcode Reader for C#
www.rasteredge.com
application control cloud:C# PDF Page Insert Library: insert pages into PDF file in C#.net
how to merge PDF document files by C# code, how to rotate PDF document page, how to delete PDF page using C# .NET, how to reorganize PDF document pages and how
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
13 6  
8 -  C o n fi g u rin g   C om merce  Serv ices  
2.
ATG Commerce fulfills the purchase for Customer A (and sends a notification e-mail to 
Customer B as part of the fulfillment process). 
3.
Customer B uses (claims) the gift certificate to pay for all or part of an order. 
The Purchase and Fulfillment Process for Gift Certificates 
Set up gift certificates as items in your product catalog, adding separate SKUs for different amounts. For 
example, you could have two SKUs, one for a $50 dollar certificate and another for a $100 certificate. The 
value of the gift certificate is stored in the 
listPrice
property of each gift certificate SKU in the product 
catalog. 
Each SKU has a 
fulfiller
property that defines an 
ElectronicFulfiller
. When Customer A adds a 
gift certificate to his or her shopping cart, the 
fulfiller
property tells the 
OrderFulfiller
to route the 
purchase to the specified 
ElectronicFulfiller
. The 
ElectronicFulfiller
then creates the gift 
certificate in the 
Claimable
repository (by means of the 
ClaimableManager
component) and sends an 
e-mail to the recipient notifying him or her that a gift certificate has been purchased on his or her behalf 
and including the code to use for claiming it. Refer to the Configuring the Order Fulfillment Framework 
chapter for more information on the 
ElectronicFulfiller
The following properties can be set when the gift certificate is created. The gift certificate is not functional 
unless the three required properties (identified below) are set. 
amount 
(Required) The original dollar value of the gift certificate. 
amountAuthorized
(Required) The total amount of money on the gift certificate that has been 
authorized for debit. 
amountRemaining 
(Required) The current amount of money remaining on the gift certificate 
for debit. 
purchaserId 
The 
profileId
of the person who bought the gift certificate. 
purchaseDate 
The date the gift certificate was purchased. 
lastUsed 
The latest date on which fulfillment updated the amount. 
Note: By default, the stock level of a gift certificate is set to -1 indicating that an infinite number of the 
item is available. Setting the stock level of a gift certificate to 0 (out of stock) does not affect the gift 
certificate’s availability because the 
ElectronicFulfiller
does not check a gift certificate’s stock level. 
Sending an e-mail to the recipient of the gift certificate requires knowing his or her e-mail address. ATG 
Commerce does this through an 
ElectronicShippingGroup
, which designates the necessary 
information for delivering electronic goods, in this case an e-mail address. So, when Customer A adds the 
gift certificate to his or her cart, you add an 
ElectronicShippingGroup
to the order as well, and define 
the relationship between the two. Use the 
handleAddSoftGoodToOrder()
method in the 
/atg/commerce/order/ShoppingCartModifier
component to do this. The following example shows 
the JSP code you would add to the page on which the gift certificate product is displayed. It adds the gift 
certificate to the customer’s order and prompts him or her to specify the e-mail address of the recipient: 
application control cloud:VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
Page: Insert PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Insert PDF Page. Add and Insert Multiple PDF Pages to PDF Document Using VB.
www.rasteredge.com
application control cloud:VB.NET PDF delete text library: delete, remove text from PDF file
Visual Studio .NET application. Delete text from PDF file in preview without adobe PDF reader component installed. Able to pull text
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
13 7  
8  -  C o n fi g uri n g  C o mm erce  Servi ces  
<%@ taglib uri="http://www.atg.com/dsp.tld" prefix="dsp" %> 
<dsp:page> 
<dsp:form action="<%=request.getServletPath()%>" method="post"> 
<!-- Store this Product's ID in the Form Handler: --> 
<dsp:input bean="ShoppingCartModifier.ProductId" 
paramvalue="Product.repositoryId" type="hidden"/> 
<!--set id param so that the Navigator won't get messed up 
in case of an error that makes us return to this page.--> 
<input value='<dsp:valueof param="Product.repositoryId"/>' type="hidden" 
name="id"> 
Give 
<dsp:input bean="ShoppingCartModifier.quantity" size="4" value="1" 
type="text"/> 
<!-----------DropDownList format (default) ----------- --> 
<!--Create a dropdown list will all Sku in the Product. 
Store the selected SKU's id in the Form Handler: --> 
<dsp:select bean="ShoppingCartModifier.catalogRefIds"> 
<!--For each of the SKUs in this Product, add the SKU to the 
dropdown list:--> 
<dsp:droplet name="/atg/dynamo/droplet/ForEach"> 
<dsp:param param="Product.childSKUs" name="array"/> 
<dsp:param value="Sku" name="elementName"/> 
<dsp:param value="skuIndex" name="indexName"/> 
<dsp:oparam name="output"> 
<!--This is the ID to store, if this SKU is selected in 
dropdown:--> 
<dsp:getvalueof id="option48" param="Sku.repositoryID" 
idtype="java.lang.String"> 
<dsp:option value="<%=option48%>"/> 
</dsp:getvalueof> 
<!--Display the SKU's display name in the dropdown 
list:--> 
<dsp:valueof param="Sku.displayName"/> 
</dsp:oparam> 
</dsp:droplet> 
<!--ForEach SKU droplet--> 
</dsp:select> to 
<br> 
Recipient's e-mail address 
<dsp:input bean="ShoppingCartModifier.softGoodRecipientEmailAddress" 
size="30"/> 
<p> 
<!-- ADD TO CART BUTTON: Adds this SKU to the Order--> 
<dsp:input bean="ShoppingCartModifier.addSoftGoodToOrder" 
value=" Add Gift Certificate to Cart " type="submit"/> 
<!-- Goto this URL if NO errors are found during the ADD TO CART 
button processing:--> 
application control cloud:C# PDF Page Rotate Library: rotate PDF page permanently in C#.net
batch changing PDF page orientation without other PDF reader control. NET, add new PDF page, delete certain PDF page, reorder existing PDF pages and split
www.rasteredge.com
application control cloud:C# PDF delete text Library: delete, remove text from PDF file in
Delete text from PDF file in preview without adobe PDF reader component installed in ASP.NET. C#.NET PDF: Delete Text from Consecutive PDF Pages.
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
13 8  
8 -  C o n fi g u rin g   C om merce  Serv ices  
<dsp:input bean="ShoppingCartModifier.addSoftGoodToOrderSuccessURL" 
value="../checkout/cart.jsp" type="hidden"/> 
<dsp:input bean="ShoppingCartModifier.addSoftGoodToOrderErrorURL" 
value="product_gift_certificate.jsp" type="hidden"/> 
</td> 
</tr> 
</table> 
</dsp:form> 
</dsp:page> 
In this example, note the code that handles the recipient’s e-mail address. The customer enters the 
recipient’s e-mail address into a form field set to the property 
ShoppingCartModifier.softGoodRecipientEmailAddress
. Thus, the e-mail address is set in the 
ElectronicShippingGroup
through the 
handleAddSoftGoodToOrder
method, and then the 
ElectronicFulfiller
examines it to determine where to send the message. 
Note that electronic goods require special processing, so the submit method of the form is set to 
addSoftGoodOrder
and not 
addItemToOrder
For more information on the 
ShoppingCartModifier
component, please refer to the Setting Up Gift 
Lists and Wish Lists section. 
Using a Gift Certificate 
On your Checkout page (or an equivalent page on your sites), include a text field where customers can 
enter the claim codes for any gift certificates they may have (you send the codes in the gift certificate 
notification e-mail). Hook the text field up to the 
giftCertificateNumbers
property of the 
ShoppingCartModifier
component. During the 
handleMoveToConfirmation
process, the 
ShoppingCartModifier
parses any values it finds in this field into tokens, using white space as the 
delimiter. This behavior allows customers to enter multiple gift certificate codes into a single text field. 
After the system tokenizes the 
giftCertificateNumbers
property, it hands each token string to the 
ClaimableManager
component. The 
ClaimableManager
attempts to match each string to a 
corresponding gift certificate in the 
Claimable
repository. If it cannot find a corresponding item, it adds 
an error to the 
FormHandler
. If the system does find an item that corresponds to the token string, it 
creates a new 
GiftCertificate
payment group and adds it to the order. 
You must initialize the properties of the payment group to the correct values. The properties to initialize 
include the claim code ID, the user profile ID, and the amount of the gift certificate. Finally, create a 
relationship between the order and the new payment group indicating that the gift certificate payment 
group can account for any amount up to the value of the gift certificate. 
Please refer to the Configuring Purchase Process Services chapter for more information on payment 
groups. 
Settling a Gift Certificate 
Gift certificate settlement is handled similar to the way that settlement for credit cards is handled. (For 
more information, see the Processing Payment of Orders section.) 
ATG  C om mer ce P ro g ramm in g   Gui d e 
13 9  
8  -  C o n fi g uri n g  C o mm erce  Servi ces  
When an order is submitted, each 
PaymentGroup
in the order is authorized using the 
PaymentManager
The 
PaymentManager
has different processors for gift certificates and credit cards. The processor used for 
gift certificates handles the authorization, debit, and credit of gift certificates. When a gift certificate is 
authorized, the 
amountRemaining
is reduced by the amount being authorized. This prevents the same 
gift certificate from being used for more than it is worth. 
During fulfillment, the 
PaymentGroup
containing the gift certificate is debited through the 
PaymentManager
(and ultimately the 
GiftCertificateProcessor
). When this happens, the amount 
that was authorized is checked against the amount that is being debited. If the amount authorized was 
the same as the amount being debited, the 
PaymentManager.debit
returns successfully. If there are any 
differences, they are corrected now. To make sure that the gift certificate is valid if an order is removed 
before the debit occurs (and after authorization), any amount that was authorized will be credited back to 
the gift certificate before the 
PaymentGroup
is removed. 
ATG Commerce treats coupons as a type of promotion that customers can claim. The customer types in a 
specific code, and the system adds the corresponding promotion or promotions to the customer’s profile. 
Most of the code for handling coupons is included in the 
ClaimableManager
component and the 
standard promotion architecture, with a 
FormHandler
to connect these two systems. The process for 
handling a coupon is as follows: 
1.
Obtain a coupon code. 
2.
Try to claim the coupon from the 
ClaimableRepository
Coupon codes are case-sensitive. For example, 
COUP100
and 
coup100
are two 
different coupon codes. 
Important: If you are using an MSSQL database, be aware that unlike some other 
databases, MSSQL uses case-insensitive character set by default. If you want to have 
case-sensitive coupon codes, ATG recommends setting the case-sensitive character 
set at the database level. 
3.
Add the resulting promotion or promotions to the 
activePromotions
list in the user 
profile. 
Use the 
/atg/commerce/promotion/CouponFormHandler
component to obtain a coupon code and 
add it to a customer’s list of promotions in the customer’s 
activePromotions
profile property. Create an 
input field on an appropriate site page (for example, a Checkout page) and hook it up to the 
couponClaimCode
property of the 
CouponFormHandler
component. Then, have the form submit to the 
handleClaimCoupon
method of the form handler. This method uses the 
ClaimableManager
component to attempt to get a coupon from the Claimable repository. Then it extracts the promotion 
from the coupon and uses the 
PromotionTools
component to place the promotion into the customer’s 
user profile. 
The following example shows the JSP code for using the 
CouponFormHandler
component: 
<%@ taglib uri="http://www.atg.com/dsp.tld" prefix="dsp" %> 
<dsp:page> 
<dsp:form method="post"> 
<!-- Where to go to on success or failure --> 
ATG  C om merce  P ro gra mm in g  G ui d e 
14 0  
8 -  C o n fi g u rin g   C om merce  Serv ices  
<dsp:input bean="CouponFormHandler.claimCouponSuccessURL" 
value="CouponClaim.jsp" type="hidden"/> 
<dsp:input bean="CouponFormHandler.claimCouponSuccessURL" 
value="CouponClaim.jsp" type="hidden"/> 
<!-- Get the coupon claim code --> 
Coupon code: <dsp:input bean="CouponFormHandler.couponClaimCode" 
type="text"/> 
<dsp:input bean="CouponFormHandler.claimCoupon" type="submit"/> 
</dsp:form> 
</dsp:page> 
When a user enters a coupon code on a Checkout page, ATG Commerce checks that: 
The coupon is active 
The coupon has not expired 
The coupon is valid on the current site 
Any promotions associated with the coupon are not expired or otherwise invalid 
If these conditions are met, the user “claims” the coupon, which means that the promotions are added to 
the user’s 
activePromotions
profile property. Note that promotions cannot be granted independently 
while claiming a coupon; either all are granted or none. 
During order pricing, ATG Commerce determines whether the order qualifies for the coupon’s 
promotions by checking that: 
The order meets the requirements of the promotions 
The promotions have not expired 
This double-checking ensures that if a user claims a coupon as part of one order, discontinues that order, 
then creates a second one, any promotions apply to the second order, as long as the promotions are 
active and applicable. 
Promotions given by a coupon persist on the user profile, not as part of the order. A claimed coupon is 
automatically applied to any order to which it qualifies; there’s no need to claim a coupon twice. You can 
persist a coupon code with an order by adding a new property to the 
Order
object and storing the 
coupon code in the new property. For information on how to extend the commerce object hierarchy to 
include a new property, refer to Extending the Purchase Process in the Customizing Purchase Process 
Externals chapter. 
The other step to consider when you set up coupons is to make sure that there are coupons in the 
Claimable repository for a customer to claim. The following example shows the default item-descriptor for 
coupons: 
<!-- Promotion Claimable object --> 
<item-descriptor name="PromotionClaimable" super-type="claimable" 
ATG  C om mer ce P ro g ramm in g   Gui d e 
14 1  
8  -  C o n fi g uri n g  C o mm erce  Servi ces  
sub-type-value="PromotionClaimable"> 
<table name="dcspp_coupon" type="auxiliary" id-column-name="coupon_id"> 
<property name="promotion" column-name="promotion_id" 
item-type="promotion" repository="/atg/commerce/pricing/Promotions"/> 
</table> 
</item-descriptor> 
The coupon item-descriptor is defined in 
/atg/commerce/claimable/claimableRepository.xml
which is located in a .
jar
file at 
<ATG10dir>/DCS/config/config.jar
. The item-descriptor defines a 
claim code ID and a link to a promotion object in the Promotions repository. If your Web sites require 
multiple types of coupons, you can define additional item-descriptor types by editing the 
claimableRepository.xml
file and then specifying the valid coupon types in the 
validCouponItemTypes
property in the 
CouponFormHandler
properties file. When a coupon is 
claimed, the 
CouponFormHandler.checkPromotionType
method checks the item type of the coupon 
corresponding to the given claim code against the array of acceptable item types in the 
CouponFormHandler.validCouponItemTypes
property. 
You can populate the Claimable repository through the following methods: 
ATG Merchandising (see the ATG Merchandising Guide for Business Users
ATG Control Center (see the ATG Commerce Guide to Setting Up a Store
the 
atg.commerce.promotion.CouponDroplet
(see Appendix: ATG Commerce 
Servlet Beans in the ATG Commerce Guide to Setting Up a Store
ATG  C om merce  P ro gra mm in g  G ui d e 
14 2  
8 -  C o n fi g u rin g   C om merce  Serv ices  
Documents you may be interested
Documents you may be interested