c# wpf document viewer pdf : Delete page from pdf acrobat control Library platform web page .net asp.net web browser ATGCommProgGuide26-part2103

ATG  C om mer ce P ro g ramm in g   Gui d e 
24 3  
14  -  U si n g  P ri ce  Li s t s 
μ
14
Using Price Lists 
Price Lists allow you to target a specific set of prices to a specific group of customers. For example, price 
lists can be used to implement business to business pricing where each customer can have its own 
unique pricing for products based on contracts, RFQ and pre-negotiated prices. Price lists are managed 
through a single interface in the ACC, which includes a list of product IDs, SKU IDs, and configurable SKU 
IDs. Pricing can be inherited based on products and/or SKUs. For example, if a price is defined as $9.99 for 
product X, all SKUs that are in product X will be given a price of $9.99 unless the price is explicitly 
overwritten. 
This chapter contains information on the following price list topics: 
Overview of Setting Up Price Lists 
Description of Volume Pricing 
Setting Up Price List Functionality in ATG Consumer Commerce 
PriceListManager 
Price List Calculators 
Implementing Sale Prices using Price Lists 
Calculating Prices with a Specific Price List 
Using the CurrencyConversionFormatter to Convert Currency 
Price List Security Policy 
Converting a Product Catalog to Use Price Lists 
Overview of Setting Up Price Lists 
You can create multiple lists. Each list has the following properties: 
Name 
Base price list 
Creation date 
Last modified date 
Start date 
End date 
Delete page from pdf acrobat - control Library platform: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 page from pdf acrobat - control Library platform: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 
24 4  
14  -  Us in g   P rice  L i st s  
Locale 
The list will display the following information about a product and a SKU: 
Product ID 
SKU ID 
Description 
Pricing scheme 
List price 
Complex price 
Note: Either the List Price or the Complex Price is required, not both. 
The following steps describe how to price items using price lists. 
1.
Assign a price list to a user. 
The price list that is used to price an order is stored in the 
priceList
property (of type 
priceList
) in the user’s profile. 
ATG Business Commerce users can also store this price list in the contract used by the 
customer’s organization. 
2.
Price an item with a price list. 
There are price list-specific versions of each of the precalculators used by the 
ItemPricingEngine
ItemPriceListCalculator
is the precalculator for list 
pricing. 
ConfigurableItemPriceListCalculator
is the precalculator for 
configurable item pricing. 
3.
View a price through JSP code. 
The 
PriceDroplet
servlet bean is used for looking up the price of an item. For more 
information on the 
PriceDroplet
servlet bean, see the PriceDroplet section in this 
chapter in the ATG Commerce Guide to Setting Up a Store. 
For information on setting up price lists using the ACC, see the Managing Price Lists chapter of the ATG 
Commerce Guide to Setting Up a Store
Caching Price Lists 
PriceCache
allows you to cache the prices in price lists. Price lists can contain a large number of prices. If 
you do not want the 
PriceCache
to hold all the prices in the prices list, adjust the 
PriceCache
settings 
in your 
liveconfig
directory. The 
PriceCache
settings are located in 
liveconfig/atg/commerce/pricing/priceLists/PriceCache.properties
Using Price Lists in Combination with SKU-Based Pricing 
ATG Commerce supports three pricing model options: SKU-based pricing alone, price lists alone, and a 
combination of both. In the combination case, your pricing system is configured to use price lists, but if 
no price is found in the lists you have specified, it falls back to the catalog price. Consider using combined 
control Library platform:.NET PDF Document Viewing, Annotation, Conversion & Processing
Edit, update, delete PDF annotations from PDF file. Print. Support for all the print modes in Acrobat PDF. Print only specified page ranges.
www.rasteredge.com
control Library platform:C# PDF Converter Library SDK to convert PDF to other file formats
using other external third-party dependencies like Adobe Acrobat. to image or document, or from PDF document to other file formats, like multi-page TIFF file
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
24 5  
14  -  U si n g  P ri ce  Li s t s 
price lists and SKU-based pricing if most of your customers pay the same prices for most of your products, 
with only a few variations. 
To use this pricing method, create the price lists as normal; however, your lists need only include the 
specific products for which you want to offer multiple prices. Then configure the following two properties 
of the 
atg.commerce.pricing.priceLists.ItemPriceCalculator
component: 
noPriceIsError=false 
noPriceCalculator=
path_to_an_ItemPricingCalculator
Which 
ItemPriceCalculator
component to configure depends on the desired behavior. For example, if 
you want to allow missing non-sale prices to use SKU pricing, configure the 
ItemPriceListCalculator
as shown: 
noPriceIsError=false 
noPriceCalculator=/atg/commerce/pricing/calculators/ItemListPriceCalculator
Note that the component being configured is the PriceListCalculator, and the path points to the 
ListPriceCalculator. See the Price List Calculators section of this chapter for further information on these 
components. 
Description of Volume Pricing 
Price lists can be used to implement many pricing models. Two popular models are bulk pricing and 
tiered pricing. 
Bulk pricing calculates the price of a product based on the minimum quantity that is ordered. For 
example, you could: 
purchase up to 10 steel beams for $50 each 
purchase 11 to 20 steel beams for $45 each 
purchase 21 or more steel beams for $40 each 
In this bulk pricing example, if you bought 23 steel beams, the total cost of the order would be $920. Each 
of the 23 beams would cost $40. 
Tiered pricing calculates the price of a product using fixed quantity or weight at different pricing levels. 
For example, you could: 
purchase up to 10 steel beams for $50 each 
after purchasing 10 beams for $50 each, purchase beams 11 through 20 for $45 each. 
after purchasing 10 beams for $50 each and purchasing beams 11 through 20 for $45 
each, purchase any more than 20 beams for $40 each 
In this tiered pricing example, 23 steal beams would cost $1070: 
10 beams (beams 1-10) for $50= $500 
control Library platform:C# powerpoint - PowerPoint Conversion & Rendering in C#.NET
without using other external third-party dependencies like Adobe Acrobat. PowerPoint to PDF Conversion. This page will tell you how to use XDoc.PowerPoint SDK
www.rasteredge.com
control Library platform:C# Word - Word Conversion in C#.NET
independently, without using other external third-party dependencies like Adobe Acrobat. Word to PDF Conversion. This page will tell you how to use XDoc.Word
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
24 6  
14  -  Us in g   P rice  L i st s  
10 beams (beams 11-20) for $45= $450 
3 beams (beams 21-23) for $40= $120 
Setting up Price List Functionality in ATG Consumer 
Commerce 
ATG Consumer Commerce users do not have a price list functionality available by default. To add price list 
functionality, you should configure the 
ItemPricingEngine
to use the appropriate precalculator. 
There are price list-specific versions of each of the precalculators used by the 
ItemPricingEngine
ItemPriceListCalculator
is the precalculator for list pricing. 
ConfigurableItemPriceListCalculator
is the precalculator for configurable item pricing. 
The following code example shows how the 
/atg/commerce/pricing/ItemPricingEngine.properties
file should change to use the 
priceList
calculators 
preCalculators=\ 
calculators/ItemPriceListCalculator,\ 
calculators/ConfigurableItemPriceListCalculator 
Note: The configurable item calculator is optional. It only needs to be used if your sites support 
configurable commerce items. 
When an item is priced, the pricing calculators will use the price lists defined here to determine what price 
to use. 
PriceListManager 
The 
PriceListManager
class maintains the price lists. A price may be retrieved from the 
PriceListManager
from a given price list by product, by SKU, or by a product/SKU pair. 
The most important method in 
PriceListManager
is 
getPrice
. This is used during pricing of an order 
to get the correct price for a given product/SKU pair. 
PriceListManager can be used to assign a default price list (
DefaultPriceListId
) and a default sale 
price list(
DefaultSalePriceListId
) in the event that one cannot be found for a customer, using the 
defaultPriceListId
. Using 
DefaultSalePriceListID
, the property name of a default price list can 
be added as an input parameter, determining which default list should be displayed. For example: 
public RepositoryItem getDefaultPriceList(String pPriceListName) 
control Library platform:VB.NET PDF: How to Create Watermark on PDF Document within
or image (such as business's logo) on any desired PDF page. And with our PDF Watermark Creator, users need no external application plugin, like Adobe Acrobat.
www.rasteredge.com
control Library platform:C# Windows Viewer - Image and Document Conversion & Rendering in
standard image and document in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat. Convert to PDF.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
24 7  
14  -  U si n g  P ri ce  Li s t s 
Assigning a Price List to a User 
ATG Commerce uses similar mechanisms for assigning catalogs and price lists to customer profiles. It adds 
CatalogProfilePropertySetter
and 
PriceListProfilePropertySetter
components to the 
profilePropertySetters
property of the 
/atg/dynamo/servlet/dafpipeline/ProfilePropertyServlet
component in the DAF servlet 
pipeline: 
profilePropertySetters+=/atg/userprofiling/CatalogProfilePropertySetter,\ 
/atg/userprofiling/PriceListProfilePropertySetter 
To set the profile’s 
priceList
and 
salePriceList
properties, the 
PriceListProfilePropertySetter
component calls the 
/atg/commerce/pricing/priceLists/PriceListManager
component’s 
determinePriceList
method, which calls the 
/atg/commerce/util/ContextValueRetriever
component. If this 
component’s 
useProfile
property is 
false
(the default), the following logic is applied: 
If there is a current site (the application is running in a multisite environment), use the 
value of the 
defaultListPriceList
and 
defaultSalePriceList
properties of the 
siteConfiguration
item for the current site. For more information, refer to 
Assigning Price Lists and Catalogs in a Multisite Configuration
Otherwise, use the 
DefaultPriceListId
and 
DefaultSalePriceListId
values set 
in the 
PriceListManager
component. 
For details on the 
ContextValueRetriever
, including information on when you should override the 
useProfile
property for price lists, see ContextValueRetriever Class
Price List Calculators 
An 
ItemPriceCalculator
class maintains all the functionality common to all the pricing schemes. The 
ItemPriceCalculator
has the following important properties: 
PriceListManager
: holds the reference to 
PriceListManager
PricingSchemeNames
: holds the key/Value pair for each allowed pricing scheme and 
its corresponding Calculator. 
For example: 
listPrice
corresponds to the 
PriceListsListCalculator
bulkPrice
corresponds to the 
PriceListsBulkCalculator
tieredPrice
corresponds to the 
PriceListsTieredCalculator
Also, see the Using Price Lists in Combination with SKU-Based Pricing section for properties related to that 
capability. 
The public API exposed by this class includes: 
getPricingScheme
: returns the pricing scheme for the 
CommerceItem
control Library platform:C# Excel - Excel Conversion & Rendering in C#.NET
independently, without using other external third-party dependencies like Adobe Acrobat. Excel to PDF Conversion. This page will tell you how to use XDoc.Excel
www.rasteredge.com
control Library platform:VB.NET PowerPoint: VB Code to Draw and Create Annotation on PPT
other documents are compatible, including PDF, TIFF, MS platform-friendly, this .NET PPT page annotating component more plug-ins needed like Acrobat or Adobe
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
24 8  
14  -  Us in g   P rice  L i st s  
priceItem
: examines the allowed 
PricingSchemeNames
HashMap
. When a match is 
found, it will call the corresponding Calculator’s 
priceItem
method. Otherwise, an 
exception is thrown to indicate that the pricing scheme is not found. 
Three sub-calculators correspond to the three different pricing schemes. The three different schemes are 
calculating the list price of an item, calculating the price of an item using bulk pricing, and calculating the 
price of an item using tiered pricing. For more information on bulk and tiered pricing, see the Using Price 
Lists section. 
All of these calculators implement the 
ItemSchemePriceCalculator
, which only has a 
priceItem
method. 
ItemListPriceCalculator
: Calls the 
getPrice
method from the 
PriceListManager
to retrieve the list price of the 
CommerceItem
. It then multiplies 
the price by the quantity returned by the 
getQuantity
method of 
CommerceItem
to 
get the total price. The 
ItemPriceInfo
will contain one 
DetailedItemPriceInfo
for each 
ShippingGroupCommerceItemRelationship
in the 
CommerceItem
. This is 
because of the 
Range
property in both 
ShipItemRels
and 
DetailedItemPriceInfos
ItemBulkPriceCalculator
: Calls the 
getPrice
method from the 
PriceListManager
to retrieve the complex price for the 
CommerceItem
. It will check 
each price level of that complex price based on the quantity of the 
CommerceItem
to 
decide the correct unit price for the item. The 
ItemPriceInfo
will contain one 
DetailedItemPriceInfo
for each 
ShippingGroupCommerceItemRelationship
ItemTierPriceCalculator
: Calls the 
getPrice
method from the 
PriceListManager
to retrieve the complex price for the 
CommerceItem
. It will check 
each price level of that complex price to decide which unit price is used for each tier. 
The 
ItemPriceInfo
will might several 
DetailedItemPriceInfos
to reflect different 
unit prices for each tier. 
Using ItemPriceInfo with Price Lists 
One 
ItemPriceInfo
class fits three different pricing schemes. Each calculator uses a different description 
for the 
PricingAdjustment
added to the 
ItemPriceInfo
The 
priceList
property of 
ItemPriceInfo
is set to the 
priceList
that was actually used to calculate 
it. This is nullable since other calculators other than those mentioned here will not set this. The 
ItemPriceCalculator
is responsible for setting this value. 
Implementing Sale Prices using Price Lists 
By default, there is no sale pricing configured when using price lists. In the standard pricing model (where 
the price is stored directly in the SKU in the product catalog) there is a 
listPrice
property and a 
salePrice
property. The SKU also has a boolean 
onSale
property that indicates that the given SKU 
should be priced using the sale price. 
ATG  C om mer ce P ro g ramm in g   Gui d e 
24 9  
14  -  U si n g  P ri ce  Li s t s 
In the price list model, a price repository item has a 
listPrice
(or a 
complexPrice
) but no 
salePrice
This section describes how to implement sale pricing with price lists. 
The quickest way to implement sale pricing using price lists is to create a sale price list. 
In this situation, you could store all the list prices for a specific user in one price list and all the sale prices 
for a specific user in another price list. This set up provides flexibility. For example, you could have 
different sale prices for two different users, even if they have the same price list normally. It also allows us 
to inherit sale prices while overriding the list prices (or vice versa). 
Follow these steps to implement sale pricing using price lists. 
1.
Creating the sale price list 
Create a sale price list the same way you create other price lists. Structurally there is no 
difference between a sale price list and any other price list. 
2.
Assign the sale price list to a user. 
Since we want the flexibility of keeping sale prices completely separate from list prices, 
user’s will need to have two price lists assigned to them. There will need to be an 
additional property in the user’s profile to store the 
salePriceList
Note: ATG Business Commerce users can create an additional property for the user 
and the contract. Create this new property by copying the 
priceList
property and 
changing the name. 
3.
Pricing an item with a price list 
If you want to price an item without price lists, the following steps occur: There are 
two precalculators in the 
ItemPricingEngine
. The item is first priced with the list 
price. The item is then priced with the sale price. The 
ItemPriceInfo
stores both 
pieces of information, allowing users to calculate the discount that the user received. 
Price lists use a similar approach: 
The first calculator in the list by default is: 
/atg/commerce/pricing/calculators/ItemPriceListCalculator
This is an instance of 
atg.commerce.pricing.priceLists.ItemPriceCalculator
. It configures the 
name of the profile property that stores the price list as well as the map that 
configures which calculator to use for each 
pricingScheme
. For sale pricing, create a 
new instance of this calculator called 
ItemSalePriceCalculator
# The ItemSalePriceCalculator which prices an item on sale 
$class=atg.commerce.pricing.priceLists.ItemPriceCalculator 
loggingIdentifier=ItemSalePriceCalculator 
profilePriceListPropertyName=salePriceList 
useDefaultPriceList=false 
noPriceIsError=false 
pricingSchemePropertyName=pricingScheme 
priceListManager=/atg/commerce/pricing/priceLists/PriceListManager 
ATG  C om merce  P ro gra mm in g  G ui d e 
25 0  
14  -  Us in g   P rice  L i st s  
pricingSchemeNames=\ 
listPrice=/atg/commerce/pricing/calculators/SalePriceListsListCalculator,\ 
bulkPrice=/atg/commerce/pricing/calculators/SalePriceListsBulkCalculator,\ 
tieredPrice=/atg/commerce/pricing/calculators/ 
SalePriceListsTieredCalculator 
The following list describes the important properties of 
ItemSalePriceCalculator
profilePriceListPropertyName=salePriceList
This property forces the calculator to use the sale price list for pricing. 
useDefaultPriceList=false
When using list pricing, you can assign a default price list. This is usually not 
needed when using sale pricing so this is set to false. 
noPriceIsError=false
When calculating a list price, it is an error if there is no price defined (since we 
wouldn’t know how much to charge). It is most probably not an error if there is 
no sale price, this would only mean the item is not on sale. If this is false, then 
no error is thrown, and no change is made to the price. 
pricingSchemeNames=\ 
listPrice=/atg/commerce/pricing/calculators/SalePriceListsLis
tCalculator,\ 
bulkPrice=/atg/commerce/pricing/calculators/SalePriceListsBul
kCalculator,\ 
tieredPrice=/atg/commerce/pricing/calculators/SalePriceListsT
ieredCalculator
These calculators are provided by default with ATG Commerce because sale 
price calculators manipulate the 
ItemPriceInfo
in a different way than list 
price calculators. Sale price calculators add different 
PricingAdjustments
and 
update 
salePrice
instead of 
listPrice
You also need to price the configurable items. A 
ConfigurableItemPriceListSaleCalculator
provided out of the box. The 
ItemPricingEngine
defines the following precalculators: 
preCalculators=\ 
calculators/ItemPriceListCalculator,\ 
calculators/ItemPriceListSaleCalculator,\ 
calculators/ConfigurableItemPriceListCalculator,\ 
calculators/ConfigurableItemPriceListSaleCalculator 
4.
View a price through a JSP using JSP code. 
Using the 
PriceDroplet
servlet bean retrieves the list price. Another instance of this 
servlet bean retrieves the sale price. For example: 
$class=atg.commerce.pricing.priceLists.PriceDroplet 
$scope=global 
priceListManager=/atg/commerce/pricing/priceLists/PriceListManager 
ATG  C om mer ce P ro g ramm in g   Gui d e 
25 1  
14  -  U si n g  P ri ce  Li s t s 
profilePriceListPropertyName=salePriceList 
useDefaultPriceList=false 
This servlet bean is used in the same way as the 
PriceDroplet
servlet bean. 
Calculating Prices with a Specific Price List 
You can specify a price list that will be used to price items regardless of what price list is specified in a 
user’s profile. 
ItemPriceCalculator
ConfigurableItemPriceListCalculator
, and 
ConfigurableItemPriceListSaleCalculator
all look in 
pExtraParameters
for the price list before 
looking in the profile. You can set a specific price list by adding an entry to 
pExtraParameters
with a key 
of 
profilePriceListPropertyName
and a value of the 
priceList
that you with to use (or the ID of the 
priceList
). For example, if 
extraParameters
maps the string 
priceList
to a price list (or a price list 
ID) and 
profilePriceListPropertyName
is set to 
priceList
(default), then the price list in the map is 
used instead of the profile’s price list. 
One way to implement this is to use the generic pipeline processor 
AddExtraParamsEntry.
It adds 
pipeline support for specifying price lists. 
AddExtraParamsEntry
adds a string key and string value to 
the extra parameters map. 
To use this with pricing, create a properties file in 
/atg/commerce/pricing/processor/UseDifferentPriceList.properties
with the following 
code: 
$class=atg.service.pipeline.processor.AddExtraParamsEntry 
value=200005 
key=priceList 
Then modify the 
repriceOrderChain
in the 
commercepipeline.xml
as follows: 
<pipelinechain name="repriceOrder" transaction="TX_REQUIRED" 
headlink="useDifferentPriceList"> 
<pipelinelink name="useDifferentPriceList" transaction="TX_MANDATORY"> 
<processor jndi="/atg/commerce/pricing/processor/UseDifferentPriceList"/> 
<transition returnvalue="1" link="priceOrderTotal"/> 
<transition returnvalue="2" link="priceOrderTotal"/> 
</pipelinelink> 
<pipelinelink name="priceOrderTotal" transaction="TX_MANDATORY"> 
<processor jndi="/atg/commerce/pricing/processor/PriceOrderTotal"/> 
</pipelinelink> 
</pipelinechain> 
This causes all orders (regardless of what is in the profile) to be priced with 
priceList
100012. 
ATG  C om merce  P ro gra mm in g  G ui d e 
25 2  
14  -  Us in g   P rice  L i st s  
Using the CurrencyConversionFormatter to Convert 
Currency 
The 
CurrencyConversionFormatter
servlet bean can be used to convert and format a numeric 
amount. The amount can be converted from one currency to another. For more information on this 
servlet bean, see Appendix B: ATG Servlet Beans in the ATG Page Developer’s Guide. 
Price List Security Policy 
The ATG Control Center allows users to create, edit, and delete price lists. When a user attempts to view or 
edit a price list, the security system checks the security information associated with the object and grants 
or denies access based on the information. For example, if a user does not have write access to a 
particular item, then the ACC will display the item in gray characters. Additionally, certain objects might 
not be visible to certain users. The ACC is capable of checking this security information for all items 
contained in the price list repository: 
Price List 
Prices 
Complex Prices 
Folders 
While having the ability to specify security information for each item is a very powerful concept, it can 
place a burden on both the system as well as the administrator entering security information. To alleviate 
this burden, policies can be created that group logical items together. By having a logical policy, users 
would only need to enter data for some of the items and then other items could derive their security 
information from these few items. This prevents an administrator from having to enter security 
information for every object in the repository. 
Note: You can also plug in a different security policy if your business needs are not met by the policy 
described in this section. 
For more information, see the discussion on security measures for deployment in the ATG Installation and 
Configuration Guide
The default security policy returns the ACL information stored on each repository item. The price list 
security policy “walks” up the tree until an item finds the 
priceList
to which it belongs and then 
retrieves the security information from the price list item. 
In the price list security policy, all security information flows from a 
priceList
down. This means that if 
there is a group of 
price
and 
complexPrice
that live in a 
priceList
, these objects will have the same 
security information as the 
priceList
. Therefore, if only users in the admin group can edit a particular 
price list, then those same users would be the only ones that could edit the price entries in the price list. 
In the following example, all objects under Price List A would share the same security information. 
Documents you may be interested
Documents you may be interested