c# wpf document viewer pdf : Cut paste pdf pages application control tool html web page winforms online ATGCommProgGuide23-part2077

ATG  C om mer ce P ro g ramm in g   Gui d e 
21 3  
13  -   Und ers t an d i ng   P rom o ti o n s 
μ
Free Y with the order 
This rule is actually an Item Discount because it’s the 
Y that’s being described and Y’s price that is being 
discounted. In the following example, Y is a blue 
item. 
Create a new promotion of type Item Discount. Set 
the adjuster to 0. 
“when order contains at least 1 ( sku whose color is 
blue), discount up to 1 ( sku whose color is blue )” 
Note that this will not automatically add the item to 
be discounted to the customer’s shopping cart. You 
must create a scenario to add the item to the cart. 
See the ATG Personalization Guide for Business Users 
for more information on scenarios. 
Extending Promotions Functionality 
Extending the existing promotions functionality can involve doing any one or more of the following: 
Specifying multiple targets for a discount 
Creating new promotion types (these map directly to pricing engines, and by default 
the types include item, order, or shipping) 
Creating new discount calculators (by default, ATG Commerce includes standard and 
tiered calculators) Calculator types map to Nucleus components. 
The PMDL stores the discount information and ties together a set of target items with the discount that 
should be applied. PMDL allows you to include multiple targets and multiple discount structures in the 
same promotion, but the latter must all be the same promotion/pricing engine type. 
For example, say you want to create another tiered pricing calculator to handle a special discount, such as 
free ground shipping. 
1.
Write a new discount calculator as a Nucleus component. The new calculator should 
implement the 
calculatorInfoProvider
interface. The interface provides a 
calculatorinfo
object that describes the calculator, including the discount types 
that it supports and the attributes that calculator is interested in. 
2.
Configure the item pricing engine to add the new calculator type, using the 
calculatorTypeCalculators
map in the pricing engine. 
3.
The new calculator and discount type appears automatically in the Advanced 
Template (see the ATG Merchandising Guide for Business Users), and you can also create 
your own custom templates that use this discount type. 
If you add a new calculator type, you will most likely modify an existing calculator to support it, perhaps 
by adding a new method (see the Commerce Pricing Calculators chapter). 
Cut paste pdf pages - application control tool:C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use C# Code to Extract PDF Pages, Copy Pages from One PDF File and Paste into Others
www.rasteredge.com
Cut paste pdf pages - application control tool:VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed VB.NET Guide for Extracting Pages from Microsoft PDF Doc
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
21 4  
13  -  Un d ers t an d in g  P ro m ot i o ns  
Extending the PMDL 
As well as adding discount types and calculators, you can extend the PMDL itself; for example, you may 
have a need for a 
<xor>
element, which is not included in the PMDL by default. 
For iterators, quantifiers, comparators, and operators, the process is extremely simple: 
1.
Create a Java class containing the logic for the new tag. For example, 
myClasses.pricing.definition.XorElem.class
2.
Use XML-combine to extend the PMDL schema to include your new tag. For example: 
<operator name="xor"> 
… 
</operator> 
1.
Add a mapping between your Java class and the PMDL element in the 
PMDLParser.xml
. For example: 
<bean name="xor" class="myClasses.pricing.definition.XorElem.class"> 
</bean> 
If you want to add an element other than iterators, quantifiers, comparators, and operators, you must also 
update the DTD to support the new element. 
When adding elements to the PMDL, use the 
name
attribute rather than directly naming the new element. 
For example, if you add a custom xor operator, the following PMDL is valid: 
<operator name="xor"> 
…. 
</operator> 
Note that the following is not valid unless you have also updated the DTD: 
<xor> 
…. 
</xor> 
You can use the new tag in your custom promotions templates. Note however that the new tag does not 
appear in the Advanced condition and offer expression editor. 
Adding New Promotion Discount Types 
Adding a new discount type involves the following tasks: 
1.
Extend or create a calculator that supports the discount type. 
2.
Modify the 
CalculatorInfo
object to include the new discount type and calculator 
information. 
The PMDL uses the 
CalculatorInfo
to identify which calculator to use. 
application control tool:VB.NET PDF copy, paste image library: copy, paste, cut PDF images
VB.NET PDF - Copy, Paste, Cut PDF Image in VB.NET. Copy, paste and cut PDF image while preview without adobe reader component installed.
www.rasteredge.com
application control tool: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# Guide cutting. C#.NET Project DLLs: Copy, Paste, Cut Image in PDF Page. In
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
21 5  
13  -   Und ers t an d i ng   P rom o ti o n s 
Adding New Promotions Templates 
ATG Merchandising includes a number of ready-to-use promotions templates that make the job of 
creating new promotions easy for business users. You may find that your users frequently create 
promotions that are not based on one of the provided templates. In that case, you may want to create 
your own templates to streamline the process for them and reduce the chance for user errors. 
This section describes the XML grammar used for promotions templates. 
Promotion Template Basics 
Promotions templates are XML files that are named with a 
.pmdt
extension. You must store templates in 
a root location specified in the 
configurationRootPath
property of the 
/atg/commerce/promotion/template/registry/PromotionTemplateRegistry
component. The 
default setting is: 
configurationRootPath=/atg/registry/data/promotiontemplates 
You can set this path to any valid value and construct any additional folder structure needed below it as 
you add templates. Templates are referenced by both name and location, therefore the names do not 
have to be unique, but it is good practice to give them unique names. 
Template files are created manually. You can shorten the process by creating a PMDL rule in the 
Advanced Condition and Offer Editor, then retrieving the generated PMDL from the 
DCS_DISCOUNT_PROMO
table or from the asset detail page of the project. That PMDL can be used for the 
template’s 
pmdlrule
repository property, replacing placeholder names with the necessary values. You 
must still ensure that your template XML file includes the requisite user interface elements. 
Note that if you do use this method to create a PMDL rule, you should be careful to delete the promotion 
you created, to avoiding confusing your users. You cannot delete promotions through ATG 
Merchandising the way you can some other assets, but you can create a temporary project in ATG 
Merchandising, then delete the project without deploying. 
What Promotion Templates Do 
Templates allow your users to set promotion repository item properties through a simple interface. The 
pmdlRule
property one of the most important properties, but other properties such as usage dates can 
also be set this way (see Promotion Repository Item Properties for a full property list). 
1.
The 
ui-description
section of the template lays out the visual elements of the 
template, which determine how it appears on the user’s screen. Much of the 
ui-
description
relies on standard form elements such as 
textInput
The user interface also includes product set criteria (PSCs), which are sets of 
combination boxes that allow users to specify products to include in or exclude from a 
promotion. Modeling for these expressions is handled by a custom 
PSCExpressionModel
component, which requires no configuration. 
See Creating the PMDT File for information on 
ui-description
elements. 
application control tool:VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Page: Delete Existing PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Delete PDF Page. How to VB.NET: Delete Consecutive Pages from PDF.
www.rasteredge.com
application control tool:C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Page: Delete Existing PDF Pages. Provide C# Users with Mature .NET PDF Document Manipulating Library for Deleting PDF Pages in C#.
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
21 6  
13  -  Un d ers t an d in g  P ro m ot i o ns  
2.
The end-user provides their input to the template in ATG Merchandising. For example, 
the user might select products to include in the promotion, set begin and end dates 
for the promotion, and specify how many times the promotion can be given to a 
customer. 
3.
The template associates the user input with the 
id
attribute of the element through 
which it was selected. For example, you could have a 
textInput
that allows the user 
to specify how many items can have the promotion applied: 
<textInput id="numberOfItemsToDiscount_textInput"> 
In the 
textInput
example, the information referenced by the 
id
is most likely a 
simple integer; in the case of PSCs, the 
id
references a complex string of PMDL 
representing the user’s selections, their AND or OR conditions, etc. 
4.
Translator elements in the template perform any transformations necessary to the user 
input; the translated input it assigned to a placeholder. For example, you may need to 
change date formatting or capitalization. For PSCs, the translators add required tags to 
create well-formed PMDL, which can then be processed by the back-end systems. See 
Translating User Input Values in Templates
5.
The 
item-properties
section of the template provides the blueprint for the 
promotion, and defines what property information the promotion stores. 
Creating the PMDT File 
This section describes the main sections that make up the PMDT file from which the template user 
interface is created. 
Template Header 
The first part of the template PMDT file is the header, which provides basic information about the 
template. The header includes the following attributes: 
The template header attributes are: 
item-type
—Required. Type of repository item the template represents. The default 
options are item-discount, order-discount, and shipping-discount. 
author
—Optional. Name of the template author. 
last-modified-by
—Optional. Name of the person who last modified the template. 
Must be manually updated if used. 
creation-date
—Optional. Creation date of the template. 
deprecated-by
—Optional. Name of the person who deprecated the template. Must 
be manually updated if used. 
For example: 
<template   item-type="Item Discount" 
repository="some/repository/path" 
application control tool: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 tool:How to C#: Basic SDK Concept of XDoc.PDF for .NET
example, you may easily create, load, combine, and split PDF file(s), and add, create, insert, delete, re-order, copy, paste, cut, rotate, and save PDF page(s
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
21 7  
13  -   Und ers t an d i ng   P rom o ti o n s 
author="Template Author" 
last-modified-by="Template Author" 
creation-date="28/09/2009"> 
UI Description Element 
If you want your template to appear in the ATG Merchandising user interface, you must include a 
ui-
description
element as part of the template. 
If the template has no 
ui-description
section, it is not displayed in ATG Merchandising’s template list. 
If the template does have a 
ui-description
section then it will appear in the template list unless the 
available-in-ui
attribute is explicitly set to false. 
Note: You may not want the template to appear in the UI if the template is intended for importing or 
exporting promotions (see Importing and Exporting Promotions ), or if you want to remove the template 
from the list from which users can select. 
The 
ui-description
tag includes the following attributes, all of which are optional: 
display-name
—String used to label the template in the template list and in the 
template screen title bar. 
resource-bundle
—Optional. The location of the resource bundle used to represent 
this template in the UI. 
display-name-resource
—Optional. If the 
resource-bundle
attribute is present, 
the 
display-name-resource
is used as a key to retrieve the localized value from the 
indicated resource bundle. If 
resource-bundle
is not present or the specified 
resource bundle cannot be found, the 
display-name-resource
attribute value is 
used for display. This attribute overrides the 
display-name
attribute. 
available-in-ui
—Optional. If this attribute is not included in the XML, it defaults to 
true
. If explicitly set to 
false
, the template is not displayed on the template selection 
screen, even if it has a 
ui-description
section. 
UI Description Child Elements 
The 
ui-description
can include a number of sub-elements. 
The 
multi-element-translators
element is used to combine, translate, or insert values into the item 
properties. See Translating User Input Values in Templates. 
Additional elements are structural, and provide layout information for the template page: 
The 
screen-segment
element provides a means of grouping elements within the 
template. A 
screen-segment
has a 
name
and however many 
line
elements you want 
to include. 
The 
line
element contains user interface items you want to appear as one line to the 
user, for example a label and its corresponding input area. 
line
element is the smallest structural unit of a template. 
application control tool:C# PDF Page Insert Library: insert pages into PDF file in C#.net
Page: Insert PDF Pages. |. Home ›› XDoc.PDF ›› C# PDF: Insert PDF Page. Add and Insert Multiple PDF Pages to PDF Document Using C#.
www.rasteredge.com
application control tool:C# PDF Image Extract Library: Select, copy, paste PDF images in C#
PDF ›› C# PDF: Extract PDF Image. How to C#: Extract Image from PDF Document. Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document.
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
21 8  
13  -  Un d ers t an d in g  P ro m ot i o ns  
This example shows a screen segment with a single line of input: 
<screen-segment display-name="Condition" 
<line> 
<label id="spendLabel" 
display-name="Spend:" 
<textInput id="spend_textInput" 
placeholder-name="spend_value"/> 
<label id="spend_example_label" 
display-name="ex. 100" styleName="infoText"/> 
</line> 
</screen-segment> 
The resulting user interface resembles the following: 
Line Child Elements 
The 
line
element can include any of the following sub-elements 
textInput
comboBox
radioButtonGroup
checkBox
textArea
date
label
spacer
horizontalRule
Most of these elements represent standard user interface components. Each can include a number of 
attributes such as 
height
label
, and a resource bundle reference; see the PMDT.DTD for detailed 
information. 
The following elements are unique to promotions templates, and are described in the sections that 
follow: 
expression—
Used by the advanced screen to display a condition or offer sequence 
See the Expression Elements section for more information. 
grid
—Used for table layouts; see the Grid Elements section for details. 
ATG  C om mer ce P ro g ramm in g   Gui d e 
21 9  
13  -   Und ers t an d i ng   P rom o ti o n s 
includesProductSetCriteria
and 
excludesProductSetCriteria—
Used to 
construct rules that identify which products are eligible for the promotion. See the 
Product Set Criteria Elements section for more information. 
switchableDiscount
—This element allows a user to toggle between discount 
amount and a discount structure grid view. See the SwitchableDiscount Element 
section.
assetCollector
—When clicked, pops up an asset picker dialog from which assets 
can be selected. (See the ATG Business Control Center Administration and 
Development Guide) 
Each element in the user interface has an 
id
attribute, which can be used to identify the user input for 
that element elsewhere in the template. Elements can also have a 
place-holder-name
attribute. The 
place-holder-name
attribute is used to insert user input into the PMDL statement the template 
constructs. 
Expression Elements 
The 
expression
element allows you to support complex, freeform conditional statements such as those 
used in the Advanced Condition & Offer template. It does this using an independent grammar file, and 
appears in the user interface as an expression editor. 
The 
expression
element functionality is available through the Advanced Condition & Offer page, and 
has the following attributes: 
id
—Id to use when referencing the expression. 
model-path
—Path to a Nucleus component that provides the information necessary 
to configure the expression with the correct sequence information. 
enabled
—True by default; if false, the expression section appears grayed out and 
uneditable in the template. 
required
—True by default; if false, the expression section is included but is not 
required by the template. 
SwitchableDiscount Element 
If the offer type is not Gift with Purchase, the 
switchableDiscount
element allows a user to toggle 
between discount amount and a discount structure grid view. The examples shown are from the 
Advanced Condition & Offer:
Discount Amount 
ATG  C om merce  P ro gra mm in g  G ui d e 
22 0  
13  -  Un d ers t an d in g  P ro m ot i o ns  
Discount Structure 
The following code sample illustrates the use in the template: 
<line> 
<switchableDiscount id="switchable_discount"> 
<view> 
<label id="discount_structure_label" display-name- 
resource="template.common.discountStructureLabel" container-width="100" container- 
h-align="right"/> 
<grid id="discountStructureData" 
validator="/atg/remote/promotion/template/validators/TieredItemDiscountValidator"> 
<content-source 
path="/atg/remote/promotion/template/contentSource/BandedDiscountStructureContents 
"> 
<attribute-value-reference name="calculatorType" element- 
id="calculatorType"/> 
</content-source> 
</grid> 
</view> 
<view> 
<label id="discount_amount_label" display-name- 
resource="template.common.discountAmountLabel" container-width="100" container-h- 
align="right"/> 
<textInput id="discountAmount" required="true" restrict="0-9\." 
validator="/atg/remote/promotion/template/validators/NumberValidator"/> 
<label id="discount_amount_example_label" display-name- 
resource="template.common.discountInfoLabel" styleName="infoText"/> 
</view> 
</switchableDiscount> 
</line> 
Grid Elements 
The 
grid
element allows you to include a 
DataGrid
component as part of your template’s user interface. 
The main use for grids is to provide users with an easy means to enter data when creating banded 
promotions. For example: 
ATG  C om mer ce P ro g ramm in g   Gui d e 
22 1  
13  -   Und ers t an d i ng   P rom o ti o n s 
Users can add or subtract rows in the grid using the – and + buttons. 
The 
grid
element supports two approaches to defining the 
DataGrid
component; these approaches are 
described in the sections that follow. 
When the template is validated on startup, if a 
grid
element has both a 
content-source
and one or 
more 
grid columns
, or if it has neither a 
content-source
nor a 
grid-column
, an error is logged, and 
the template is not included in the template list in the user interface. 
Dynamically Determining Grid Structure at Runtime 
The first method for creating a grid in a template dynamically generates the grid contents at runtime. The 
XML used for the user interface would resemble this example: 
<line> 
<label display-name="Discount Structure:"/> 
<grid id="tieredPromo" placeholder-name="tiered_promo_value"> 
<content-source path="/atg/xxx/yyy"> 
<attribute name="calculator-type" value="bulk"/> 
</content-source> 
</grid> 
</line> 
If you use this approach, the 
grid
element must include a 
content-source
element. The 
content-
source
points to a Nucleus that provides the grid with the necessary data structure. The provided 
/atg/remote/promotion/template/contentSource/BandedDiscountStructureContents
component is specific to discount structures; if you want the grid for some other purpose, you can write 
your own component. 
The component should obtain a 
CalculatorInfo
object for the appropriate calculator type (defined in 
the child 
attribute
element of the 
content-source
) and the promotion type (Item, Order, Shipping or 
Tax), both of which are passed to the component as the page is generated. 
Explicitly Defining Table Structure 
As an alternative to dynamic grid generation, you can also explicitly define the DataGrid. In this case, the 
XML used would resemble the following example: 
<line> 
<label display-name="Discount Structure:"/> 
<grid id="tieredPromo" 
ATG  C om merce  P ro gra mm in g  G ui d e 
22 2  
13  -  Un d ers t an d in g  P ro m ot i o ns  
placeholder-name="tiered_promo_value"> 
<grid-column display-name="band"> 
<textInput /> 
</grid-column> 
<grid-column display-name="adjuster"> 
<textInput /> 
</grid-column> 
</grid> 
</line> 
The 
grid
element in this case explicitly lists the components needed to let the user interface render and 
build the grid. The child 
grid-column
elements control the display and data-input characteristics of each 
column in the table. The 
display-name
attribute of the 
grid-column
contains the column header (in 
this example, it uses a resource bundle). The child elements of the 
grid-column
specify the editor type to 
be presented in the user interface, which can be either 
textInput
or 
comboBox
Product Set Criteria Elements 
The 
includesProductSetCriteria
and 
excludesProductSetCriteria
elements can be used within 
line
element. They allow users to construct statements for determining products to include in or 
exclude from the promotion. Each element consists of multiple combo boxes that allow users to specify a 
sequence of comparative values for properties. The output is a placeholder value that can be used in a 
PMDL rule. 
The 
includesProductSetCriteria
and 
excludesProductSetCriteria
elements have the following 
attributes: 
id
—Identifier for the PSC element 
required
—Whether or not the PSC is required; the default is true 
model-path
—The model for a PSC is a Nucleus component that controls how the 
combination boxes are populated and displayed. For product set criteria elements, the 
model-path should be: 
model-path="/atg/remote/promotion/expreditor/psc/PSCExpressionModel 
Four additional attributes control basic display options: 
container-width
container-height
container-h-align
container-v-align
This example shows an 
includesProductSetCriteria
element in a 
ui-description
<includesProductSetCriteria id="PSC" required="true" model 
-path="/atg/remote/promotion/expreditor/psc/PSCExpressionModel" /> 
Documents you may be interested
Documents you may be interested