c# wpf document viewer pdf : Cut pdf pages online application Library utility azure .net web page visual studio ATGCommProgGuide21-part1943

ATG  C om mer ce P ro g ramm in g   Gui d e 
19 3  
12  -  Q u ali f ier  C l as s 
μ
If an item already received the discount that is currently being evaluated, or any other 
discount 
If the item meets any of those criteria, the item is removed. 
After the 
filterItemsForTarget
method is invoked, the 
evaluateTarget
method is called. This 
method returns a set of items that can receive the discount because they satisfy the target element of the 
rule. 
You can change the criteria by which items are filtered out of the environment before a rule is evaluated. 
For example, your filter could allow items with a price of zero to act as qualifiers for a rule. You could 
rewrite the 
filterItemsForQualifier
method to remove that restriction, or write your own filter 
component using the 
atg.commerce.pricing.PromotionQualifyingFilter
interface. 
Replacing the Way a PMDL Rule Is Evaluated 
The 
Qualifier
class contains two protected methods, 
evaluateQualifier
and 
evaluateTarget
which are responsible for evaluating different elements of a PMDL rule. 
The 
evaluateQualifier
method determines if the input environment (the pricing context) satisfies the 
constraints of the qualifier rule. The input environment is represented by the parameters passed into the 
method. If the constraints are satisfied, 
evaluateQualifier
determines which objects acted as qualifiers 
in satisfying the rule. For more information, see the Evaluating Qualifiers Example section 
For example, in the rule “Buy 1 shirt, get 1 hat free,” the “one shirt” element of the rule is evaluated 
through 
evaluateQualifier
. If the promotion is a “For next” promotion, the method returns the shirt 
item that satisfies the constraint; if a “When” promotion, a Boolean value of 
true
is returned. 
For example, consider the PMDL rule “When there is at least 1 blue item, discount 1 green item.” If a blue 
item is included in the input environment, the qualifier returns a 
java.lang.Boolean 
indicating that 
the environment matched the rule. If the rule had been written “For the next blue item, discount one 
green item,” the blue item is returned. 
The 
evaluateTarget
method is invoked in every promotion situation, in order to retrieve the discount 
structure from the offer. 
Replacing the Way the Qualifier Determines the Result Set 
You can replace the way that a helper method determines its result set by extending the 
Qualifier
to 
override any of the existing 
findQualifying
itemType
methods. 
For example, you might not want to use a PMDL rule to determine the objects to discount. You could use 
a repository query to select the items that a given promotion should discount. The list of items to 
discount could be stored in the promotion itself. The 
findQualifyingItems
method could access the 
promotion, read the items to discount, and return them. 
Alternatively, you can create your own custom 
Qualifier
service with its own 
findQualifying
itemtype
implementation. You can then configure a pricing engine to use the new 
Cut pdf pages online - application Library utility: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
Cut pdf pages online - application Library utility: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 
19 4  
12  -  Q ual i fi er  C las s  
Qualifier
service, or configure individual promotions to use it through the 
qualifierService
property. 
Accessing FilteredCommerceItems 
The 
findQualifyingItems
findQualifyingOrder
, and 
findQualifyingShipping
methods process 
FilteredCommerceItems
. If you extend the 
Qualifier
class, and the extension needs access to a 
wrapped item, it can get it by calling the 
getWrappedItem
method of the 
FilteredCommerceItem
application Library utility:VB.NET PDF copy, paste image library: copy, paste, cut PDF images
Copy, paste and cut PDF image while preview without adobe Free Visual Studio .NET PDF library, easy to be Online source codes for quick evaluation in VB.NET
www.rasteredge.com
application Library utility:C# PDF copy, paste image Library: copy, paste, cut PDF images in
C#.NET PDF SDK - Copy, Paste, Cut PDF Image in C#.NET. C#.NET Demo Code: Cut Image in PDF Page in C#.NET. PDF image cutting is similar to image deleting.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
19 5  
13  -   Und ers t an d i ng   P rom o ti o n s 
13
Understanding Promotions 
Promotions are a way of encouraging a user to make a purchase by highlighting and offering discounts 
on products and services. Examples of promotion types include the following: 
Specific amount off a particular product 
Percentage amount off a whole order 
Specific amount or percentage off a product based on an attribute 
Free shipping for a specific product 
This chapter discusses the back-end functionality that supports promotions as a part of the ATG 
Commerce pricing system. 
You can create promotions using the ACC or ATG Merchandising, and deliver them to users through a 
variety of methods, including scenarios. See the Creating and Maintaining Promotions chapter of the ATG 
Commerce Guide to Setting Up a Store for information on creating and delivering promotions using the 
ACC. See the ATG Merchandising Guide for Business Users for information on creating promotions using 
ATG Merchandising. 
Note that promotions you create in the ACC can be edited in ATG Merchandising; however, promotions 
created using Merchandising templates cannot be edited in the ACC, due to differences in the PMDL 
(Pricing Model Description Language) generated. 
This chapter contains the following sections: 
Promotion Repository Item Properties 
PromotionStatus Repository Items 
Understanding PMDL Discount Rules 
Extending Promotions Functionality 
Adding New Promotions Templates 
Importing and Exporting Promotions 
Promotion Repository Item Properties 
The properties of a promotion 
RepositoryItem
are documented in the table below. These properties 
work together to form a description of what discount to give, under which conditions it should be given, 
and the mechanism by which the discount is applied. 
application Library utility:VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Enable specified pages deleting from PDF in Visual Basic .NET class. Free trial SDK library download for Visual Studio .NET program. Online source codes for
www.rasteredge.com
application Library utility:VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
add and insert one or multiple pages to existing adobe PDF document in VB.NET. Ability to create a blank PDF page with related by using following online VB.NET
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
19 6  
13  -  Un d ers t an d in g  P ro m ot i o ns  
In addition to the standard property types (strings, numbers, dates, etc.) promotions also include a 
property type unique to promotions items, 
pmdlRule
, which stores the PMDL rule for the promotion as a 
string. This property has a custom property editor associated with it in the Promotions section of the ATG 
Control Center; see the ATG Commerce Guide to Setting Up a Store for information. 
The following table describes the pricing model properties available in the Item, Shipping, Tax, and Order 
descriptors when you create a commerce item. These descriptors are defined in 
/atg/commerce/pricing/pricingModels.xml
, which is located in 
<ATG10dir>/DCS/config/config.jar
Property Name 
Type 
Values 
Flags 
double 
any double 
none 
adjuster
(display name: Discount Price 
or Percentage, depending on 
the discount type)
Number by which the item is discounted. Works in 
conjunction with 
discountType
to specify the discount 
to be applied. For example, an adjuster of 15 and a 
discountType
of 
percentOff
produce a discount of “15 
percent off.” 
Note: This property is no longer used, and is maintained 
only for backward compatibility. 
allowMultiple
(display name: Give to a 
customer more than once)
Boolean 
true
or 
false
none 
Determines whether the promotion can be given to a 
customer only once. If set to 
false
, the system grants the 
promotion only once. If set to 
true
, the system adds a 
copy of the promotion to the customer’s profile every 
time the customer is granted the promotion. 
Note: This property is ignored if the 
global
property is 
set to 
true
beginUsable 
timestamp 
any date 
none 
(display name: Usage start 
date)
The date that the promotion becomes effective. Used 
when the 
relativeExpiration
property is set to 
false
Together with the 
endUsable
date, defines the period 
within which the promotion is valid, including global 
promotions. If both values are null, the promotion is 
always valid. 
creationDate 
date 
any date 
read-
only 
(display name: Creation date)
The date when the promotion was created. 
application Library utility:C# PDF Page Insert Library: insert pages into PDF file in C#.net
Free components and online source codes for .NET framework 2.0+. doc2.Save( outPutFilePath); Add and Insert Multiple PDF Pages to PDF Document Using C#.
www.rasteredge.com
application Library utility:C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
Move Page Position. Page: Extract, Copy and Paste PDF Pages. Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut Image in Page. Link: Edit URL
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
19 7  
13  -   Und ers t an d i ng   P rom o ti o n s 
Property Name 
Type 
Values 
Flags 
description 
string 
any string 
none 
(display name: Description)
Provides a short description of the item. 
string 
percentOff 
amountOff 
fixedPrice 
read-
only 
discountType
(display name: Discount type) 
The type of discount this promotion gives. 
Note: This property is no longer used, and is maintained 
only for backward compatibility. 
displayName 
string 
any string 
none 
(display name: Name)
Specifies the name visible in the user interface. 
Boolean 
true
or 
false
none 
enabled
(display name: Enabled) 
Specify 
true
to enable the promotion. If enabled, the 
promotion takes effect according to the specified usage 
period. If disabled, the promotion never takes effect 
regardless of the usage period. 
Note: As a general rule, you should never delete 
promotions and instead disable them by setting the 
enabled
property to false. This approach eliminates the 
possibility of deleting a promotion that has been used in 
an order, which produces errors. 
endDate 
date 
any date 
none 
(display name: Distribute 
through)
The date that the promotion stops being delivered to 
people, if the collection filtering feature is implemented 
to use this property. 
endUsable 
timestamp 
any date 
none 
(display name: Usage end 
date) 
The date that the promotion stops being effective. Used 
when the 
relativeExpiration
property is set to 
false
Together with the 
beginUsable
date, defines the period 
within which the promotion is valid. If both values are 
null, the promotion is always valid. 
giveToAnonymousProfiles 
Boolean 
true
or 
false
none 
application Library utility:C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Free online C# class source code for deleting specified PDF pages in .NET console application. Able to remove a single page from PDF document.
www.rasteredge.com
application Library utility:VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
Pages. Page: Move Page Position. Page: Copy, Paste PDF Pages. Page: Rotate a Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut Image in
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
19 8  
13  -  Un d ers t an d in g  P ro m ot i o ns  
Property Name 
Type 
Values 
Flags 
(display name: Give to 
anonymous customers) 
If both this property and the 
global
property are 
false
then only registered visitors can receive the promotion. If 
this property is 
true
, and the 
global
property is 
false
then anonymous visitors and registered visitors can 
receive the promotion. In both cases, the visitors must 
meet any other conditions specified by the promotion in 
order to receive it. 
Note: This property is ignored if the 
global
property is 
set to 
true
global 
Boolean 
true
or 
false
none 
(display name: Automatically 
apply to all orders) 
Setting the 
global
property to 
true
indicates that this 
promotion will be applied an unlimited number of times, 
to all visitors (including anonymous visitors), for use on an 
unlimited number of orders, during the specified usage 
period, regardless of the values set for the following 
properties: 
-- 
allowMultiple
-- 
startDate
-- 
endDate
-- 
giveToAnonymousProfiles
-- 
relativeExpiration
-- 
timeUntilExpire
-- 
uses
Setting the 
global
property to 
false
indicates that the 
system delivers and applies the promotion according to 
all of the values specified for the promotion. 
media 
map 
map of object to object 
none 
(display name: Media) 
The media, such as icons, associated with this discount. 
Boolean 
true
or 
false
none 
oneUsePerOrder
(display name: One use per 
order) 
A property used for shipping promotions only. It 
determines whether a shipping promotion can discount a 
single order multiple times. If set to 
true
, then only one 
shipping group in the order can use the promotion. If set 
to 
false
, then it is possible for each shipping group in 
the order to be discounted by the promotion. 
pmdlRule 
string 
any valid PMDL rule 
none 
ATG  C om mer ce P ro g ramm in g   Gui d e 
19 9  
13  -   Und ers t an d i ng   P rom o ti o n s 
Property Name 
Type 
Values 
Flags 
(display name: Discount rule)  This is the PMDL rule describing the conditions under 
which this promotion should take effect. The rule is 
created in the ATG Control Center using the interface 
designed for promotion creation. For more information, 
see the ATG Commerce Guide to Setting Up a Store
pricingCalculatorServic
enumerated  a calculator 
none 
(display name: Pricing 
Calculator)
The calculator that computes and applies this 
promotion’s discount. 
Note: This property is no longer used, and is maintained 
only for backward compatibility.  
priority 
integer 
any integer 
none 
(display name: Order of 
application) 
The priority of the promotion. Promotions are applied in 
order of priority, with low priority numbers applied first. 
Engines sort the promotions by the value of this property. 
Note that this property functions within the context of a 
particular promotion type. For example, you can specify 
how a given Item Discount promotion is applied 
compared to other Item Discount promotions, but not the 
order in which Item Discounts are applied compared to 
Shipping Discounts. 
Boolean 
true
or 
false
none 
relativeExpiration
(display name: Usage Period)  Determines whether the usage period for the promotion 
is fixed or relative. 
If 
false
, the promotion’s usage period is determined by 
the dates set in the 
beginUsable
and 
endUsable
properties. If 
true
, the promotion’s usage period is set 
according to the date it is received by the user (that is, 
when the promotion is added to the user’s 
activePromotions
profile property). The start date and 
time is set when the user receives the promotion. The end 
date and time is set by the start date/time and the value 
of the 
timeUntilExpire
property. 
startDate 
date 
any date 
none 
(display name: Distribute 
starting) 
The date that the promotion begins to be able to be 
delivered to people, if the collection filtering feature is 
implemented to use this property. 
timeUntilExpire
int 
any int 
none 
ATG  C om merce  P ro gra mm in g  G ui d e 
20 0  
13  -  Un d ers t an d in g  P ro m ot i o ns  
Property Name 
Type 
Values 
Flags 
(display name: Redeemable 
for) 
Determines the usage period in minutes for the 
promotion. Used when the 
relativeExpiration
property is set to 
true
The promotion becomes active as soon as the user 
receives the promotion; that is, the promotion is added to 
the list of promotions in the user’s 
activePromotions
profile property. The expiration date and time is then 
determined by the number of minutes in 
timeUntilExpire
to the current time. 
Note: This property is ignored when the 
global
property 
is set to 
true
type
(hidden)
enumerated  ATG 10 and later versions: 
Item Discount 
Shipping Discount 
Order Discount 
Versions prior to ATG 10: 
Item Discount– Percent Off 
Item Discount– Amount Off 
Item Discount– Fixed Price 
Item Discount– Multiplier 
Shipping Discount- Percent Off 
Shipping Discount- Amount Off 
Shipping Discount - Fixed Price 
Order Discount - Percent Off 
Order Discount - Amount Off 
Order Discount - Fixed Price 
read-
only 
The type of discount this promotion gives. This is set 
during item creation. 
uses 
int 
any positive integer, zero 
none 
(display name: Number of 
uses allowed per customer) 
The number of orders for a given customer to which the 
promotion can be applied. If this number hits zero, the 
promotion can no longer be applied. 
Note: A promotion can sometimes discount a single order 
multiple times. This is still considered one “use.” For 
shipping promotions only, you can prevent the 
promotion from discounting a single order multiple times 
by setting the 
oneUsePerOrder
property to 
true
Note: This property is ignored when the 
global
property 
is set to 
true
ATG  C om mer ce P ro g ramm in g   Gui d e 
20 1  
13  -   Und ers t an d i ng   P rom o ti o n s 
Property Name 
Type 
Values 
Flags 
version 
long 
any long 
hidden 
(display name: Version) 
Used by the SQL Repository to protect against data 
corruption caused by two different threads attempting to 
modify the same item the same time. 
parentFolder 
promotion
Folder 
any 
promotionFolder
item 
none 
(display name: Parent Folder)  The parent folder of the promotion. 
sites 
set 
set of siteConfiguration items 
none 
(display name: Sites) 
The 
siteConfiguration
item or items with which the 
promotion is associated. Pricing engines should only 
evaluate promotions that include the current site context, 
or where both the 
sites
and 
siteGroups
properties are 
null. 
siteGroups 
set 
set of 
siteGroup
items 
none 
(display name: Site Groups) 
The 
siteGroup
or groups with which the promotion is 
associated. Pricing engines should only evaluate 
promotions whose 
siteGroups
properties include the 
current site context or where 
sites
and 
siteGroups
are 
null. 
template 
string 
any string representing a 
template name 
none 
(display name: Template) 
The 
template
with which the promotion is associated. 
Promotions templates are used in ATG Merchandising; 
see the ATG Merchandising Guide for Business Users
templateValues 
map 
Map of template placeholder 
values 
none 
(hidden) 
Placeholder values are used to build the PMDL from a 
template; see Adding New Promotions Templates
uiAccessLevel 
int 
0 or 1 
none 
(hidden) 
The value in this field identifies whether or not the 
promotion is read-only (0) or writeable (1).  
pmdlVersion 
int 
1 or 2 
none 
(hidden) 
The value in this field identifies whether the PMDL is pre-
ATG 10 (version 1), or ATG 10 or later (version 2). 
ATG  C om merce  P ro gra mm in g  G ui d e 
20 2  
13  -  Un d ers t an d in g  P ro m ot i o ns  
One important part of promotion creation is making sure that the promotion can only be used in the way 
you intend it to be used. Incorrectly worded or configured promotions could allow customers to receive 
greater benefits from the promotion than you intended. The following list describes issues to keep in 
mind when you are creating promotions: 
Check the 
startDate
endDate
beginUsable
, and 
endUsable
dates of all 
promotions to prevent a promotion from taking effect before you are ready for it. 
Note: When setting dates for a promotion, be aware that a number of factors can 
cause the promotion to be unusable for a number of minutes after it is set to be active 
and to be usable after it is set to expire, depending on the schedule set for the pricing 
engine (for global promotions) or the 
PricingModelHolder
(for both global and 
nonglobal promotions). 
Because it can be resource intensive to collect a user’s list of promotions, or pricing 
models, the session-scoped 
UserPricingModels
component (class 
atg.commerce.pricing.PricingModelHolder
) stores them in a session cache. 
When a session starts for a user, 
UserPricingModels
queries each pricing engine for 
the customer’s promotions. 
PricingModelHolder
is schedulable, and can also be 
configured to periodically update the promotions cache. 
These promotions include both the promotions in the user’s 
activePromotions
profile property and the list of global promotions. To retrieve the list of global 
promotions, the pricing engine uses its 
globalPromotionsQuery
property to query 
the Promotions repository for all promotions where the 
global
property is set to 
true
, and it does so every 
x
minutes as defined by the schedule specified in its 
updateSchedule
property. Once collected, the pricing models in 
UserPricingModels
are then used for all pricing operations during the user’s 
session. 
Consequently, if a user’s session is created after you have added a new global 
promotion but before the next scheduled job to update the pricing engine’s list of 
global promotions, the user will not receive the new global promotion. You can 
prevent this situation by manually calling the 
pricingEngine.loadGlobalPromotions
method when you add the new global 
promotion. Additionally, if a user’s session was created before you added a new 
promotion (either targeted or global), that user will never receive the new promotion. 
This is because the user’s list of pricing models has already been collected and stored 
in the user’s 
UserPricingModels
. To prevent this situation, manually call the 
pricingModelHolder.initalizePromotions
method when you add any new 
promotion (targeted or global). The 
initializePromotions
method generates a 
new list of pricing models to store in the user’s 
UserPricingModels
. (Note that the 
pricingModelHolder.initializePromotions
method should be called after the 
pricingEngine.loadGlobalPromotions
method in order to collect all new global 
promotions.) 
For more information on the 
PricingModelHolder
class, see the 
PricingModelHolder
section. For more information on the pricing engine APIs, see 
the Commerce Pricing Engines chapter. 
When creating promotions, evaluate the wording of the discount rule carefully to 
make sure that only the intended products receive the promotion. Be as specific as 
possible when creating rules. For example, if a particular brand is on sale, specify the 
Documents you may be interested
Documents you may be interested