c# wpf document viewer pdf : Delete page from pdf acrobat software control cloud windows web page asp.net class ATGCommProgGuide18-part1915

ATG  C om mer ce P ro g ramm in g   Gui d e 
16 3  
10  -  C o m merce  P rici n g  E ng i n es 
μ
atg.commerce.pricing.TaxPricingEngine
atg.commerce.pricing.ShippingPricingEngine
atg.commerce.pricing.OrderPricingEngine
atg.commerce.pricing.ItemDiscountCalculator
atg.commerce.pricing.OrderDiscountCalculator
atg.commerce.pricing.ShippingDiscountCalculator
The properties of a promotion repository item are in 
atg.commerce.pricing.PricingModelProperties
The 
Qualifier
class that holds helper methods is 
atg.commerce.pricing.Qualifier
Creating a New Pricing Engine 
In the following example, you want to create a new pricing engine that prices handling costs separately 
from shipping. You create a 
HandlingPricingEngine
that acts independently of the 
ShippingPricingEngine
1.
Create an interface called 
HandlingPricingEngine
that extends 
PricingEngine
2.
Create an implementation called 
HandlingPricingEngineImpl
that extends 
PricingEngineService
3.
Create a 
HandlingPricingInfo
that extends the 
AmountInfo 
price holding class. 
(For more information, see 
AmountInfo
.) 
4.
Create a calculator called 
HandlingPricingCalculator
and implementations of it 
that calculate and discount handling as your business requires. 
5.
Modify the Promotions repository definition file (by default, 
pricingModels.xml
). 
Add an item-descriptor for the Handling discount type and sub-descriptors for the 
various implementations of the 
HandlingPricingCalculator
that you created. 
6.
Create properties files for the 
HandlingPricingEngine
and each of the calculators. 
Your engine is ready for use. You may also want to add 
preCalculators
that calculate the base cost of 
handling. 
Delete page from pdf acrobat - software 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 page from pdf acrobat - software 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 
16 4  
10  -  C o mm erce  Pri ci n g  En g in es  
software control cloud:.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
software control cloud: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 
16 5  
11  -  C o m merce  P rici n g  C al cu lat o rs  
11
Commerce Pricing Calculators 
Pricing calculators are responsible for the following: 
Looking up the price in the catalog. 
Using information they receive from the pricing engines and from the qualifier service 
to determine prices. 
This chapter describes the base ATG Commerce pricing engine classes and interfaces. It includes the 
following sections: 
Pricing Calculator Interfaces 
Pricing Calculator Classes 
Extending Pricing Calculators 
For more information on the default calculator interfaces and classes, see the ATG API Reference. 
Pricing Calculator Interfaces 
This section describes the interfaces that are used as part of the ATG Commerce calculators. These 
interfaces are: 
ItemPricingCalculator Interface 
OrderPricingCalculator Interface 
ShippingPricingCalculator Interface 
TaxPricingCalculator Interface 
CalculatorInfoProviderInterface 
ItemPricingCalculator Interface 
atg.commerce.pricing.ItemPricingCalculator
modifies the price of a 
CommerceItem
A calculator’s 
priceItem
priceEachItem
, or 
priceItems
method is invoked by the corresponding 
method of the same name on the pricing engine. The calculator’s 
priceItem
method modifies the input 
priceObjects
according to the current pricing context. The specific way in which the calculator modifies 
an item price varies according to individual implementations. 
software control cloud: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
software control cloud: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 
16 6  
11  -  C om merce  P ri cin g   Ca lcu l at ors  
OrderPricingCalculator Interface 
The 
OrderPricingCalculator
interface, 
atg.commerce.pricing.OrderPricingCalculator
modifies the price of an order. 
The 
priceOrder
method of the 
OrderPricingCalculator
(or calculators) is invoked by the order 
pricing engine that is configured to use it. The 
priceOrder
method modifies the input 
pPriceQuote
according to the current pricing context. The specific way in which the calculator modifies an order price 
varies according to individual implementations. 
ShippingPricingCalculator Interface 
The 
ShippingPricingCalculator
interface, 
atg.commerce.pricing.ShippingPricingCalculator
, modifies a price object that represents the 
cost of shipping for an order. 
The shipping pricing engine invokes the 
priceShippingGroup
method of the 
ShippingPricingCalculator
(or calculators) that it is configured to use. The 
priceShippingGroup
method modifies the input 
pPriceQuote
according to the current pricing context. The specific way in 
which the calculator modifies a shipping price varies according to individual implementations. 
ATG Commerce includes several classes that are implementations of the 
ShippingPricingCalculator
interface. For example, it includes the 
atg.commerce.pricing.ShippingDiscountCalculator
class, 
which you can use to apply a promotional discount to the shipping price of an order. 
TaxPricingCalculator Interface 
The 
atg.commerce.pricing.TaxPricingCalculator
interface modifies the price of tax for an order. 
The tax pricing engine invokes the 
priceTax
method of the 
TaxPricingCalculator
(or calculators). 
The calculator’s 
priceTax
method modifies the input 
pPriceQuote
according to the current pricing 
context. The specific way in which the calculator modifies a tax price varies according to individual 
implementations. 
ATG Commerce includes several classes that are implementations of the 
TaxPricingCalculator
interface. For example, it includes the 
atg.commerce.pricing.NoTaxCalculator
class, which you can 
use for situations in which a sales tax of zero is applicable for an order. 
CalculatorInfoProvider Interface 
The 
atg.commerce.pricing.CalculatorInfoProvider
interface allows a calculator to provide 
information in the form of a 
CalculatorInfo
object. This interface is used by default in promotions 
templates to dynamically update the user interface and PMDL for calculators. 
If a calculator does not implement this interface, the pricing engine returns a default 
CalculatorInfo
object. 
software control cloud: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
software control cloud: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 
16 7  
11  -  C o m merce  P rici n g  C al cu lat o rs  
Pricing Calculator Classes 
These classes are used by the ATG Commerce pricing engines to calculate prices. They can be extended 
according to your needs (see Extending Pricing Calculators). 
DiscountCalculatorService 
ItemPriceCalculator 
ItemDiscountCalculator 
ItemListPriceCalculator 
ItemSalePriceCalculator 
ConfigurableItemPriceCalculator 
OrderDiscountCalculator 
OrderSubtotalCalculator 
ShippingCalculatorImpl 
ShippingDiscountCalculator 
PriceRangeShippingCalculator 
DoubleRangeShippingCalculator 
FixedPriceShippingCalculator 
PropertyRangeShippingCalculator 
WeightRangeShippingCalculator 
NoTaxCalculator 
TaxProcessorTaxCalculator 
Price List ConfigurableItemPriceListCalculator 
Price List ItemListPriceCalculator 
Price List ItemPriceCalculator 
Price List ItemSalesPriceCalculator 
Price List ItemSalesTieredPriceCalculator 
Price List ItemTieredPriceCalculator 
DiscountCalculatorService 
The 
atg.commerce.pricing.DiscountCalculatorService
class is an extension of 
GenericService
DiscountCalculatorService
computes a price based on the type of discount, the discount amount, 
and the current price. It holds information common to all the discount calculators, which can extend this 
class to eliminate redundant configuration code. 
The 
adjust
method can be used as a quick way to apply a discount. It calculates a price based on an 
existing price, the discount type, and the discount amount. This functionality is used by all discount 
calculators. 
software control cloud: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
software control cloud: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 
16 8  
11  -  C om merce  P ri cin g   Ca lcu l at ors  
The 
DiscountCalculatorService
also includes 
getAdjuster()
and 
getDiscountType()
methods, 
which make it easy to override the default means of determining the adjuster and discount types.  
The following list describes important properties in the 
DiscountCalculatorService
class: 
pricingModelProperties
: Points to a configuration bean that holds the names of all 
the properties of a pricing model repository item. 
negativeAmountException
: ATG Commerce never discounts the price of an object 
to less than zero. This property determines what happens when a discount would 
cause the amount to be negative. 
True
: Throw an exception when a discount causes 
an amount to be negative. 
False
: (default) Log a warning message and set the 
amount to 0.0 when a discount causes an amount to be negative. 
ItemPriceCalculator 
The abstract class 
atg.commerce.pricing.ItemPriceCalculator
is the parent class for many item 
pricing calculators (for example, 
ItemListPriceCalculator
and 
ItemSalePriceCalculator
), 
consolidating the functionality that these calculators have in common. 
This class determines a price for an object based on a 
pricesource
object and the properties of that 
pricesource
. It contains a single abstract method, 
priceItems
. Extending classes implement this 
method to leverage the other item pricing functionality that this class provides. 
The 
ItemPriceCalculator
class also contains the following properties: 
loggingIdentifier
: The ID that this class uses to identify itself in logs. 
pricePropertyName
: The name of the property of the 
priceSource
that represents 
an item’s price. The 
priceSource
is the value returned from the 
getPriceSource
property. 
requirePriceValue
: If this property is 
true
, an exception is thrown if the 
priceSource
of the 
CommerceItem
does not have its 
pricePropertyName
property 
set. 
priceFromCatalogRef
: If this property is 
true
getPriceSource
returns the 
catalogRef
property of the input 
CommerceItem
. If this property is 
false
getPriceSource
returns the 
productRef
property. 
ItemPriceCalculator
determines an item’s price based on a property value. The property value comes 
from a 
priceSource
object. The 
priceSource
object can be one of two objects, depending on the 
boolean value of the 
priceFromCatalogRef
property. 
If 
true
, the 
priceSource
object is the 
catalogRef
property of the item to be priced. 
If 
false
, the 
priceSource
object is the 
productRef
property of the item to be 
priced. 
The 
catalogRef
property of items to be priced points to a SKU in the SKU catalog. The 
productRef
property points to a product in the product catalog. For more information, see the 
atg.commerce.order.CommerceItem
entry in the ATG API Reference
ATG  C om mer ce P ro g ramm in g   Gui d e 
16 9  
11  -  C o m merce  P rici n g  C al cu lat o rs  
The 
pricePropertyName
in the 
ItemPriceCalculator
(and therefore the 
ItemListPriceCalculator
and 
ItemSalePriceCalculator
, which extend 
ItemPriceCalculator
identifies the property on the 
priceSource
object (the SKU or product) that contains the price for the 
current item. The 
ItemListPriceCalculator
and 
ItemSalePriceCalculator
read this value and 
return a price object that contains the price. 
How Classes that Extend ItemPriceCalculator Determine Prices 
The 
ItemListPriceCalculator
extends 
ItemPriceCalculator
. In this example, the 
ItemListPriceCalculator
is set with the following properties: 
priceFromCatalogRef
=
true
(indicating it will get its property from a SKU) 
pricePropertyName
=
listPrice
In this example, the SKU catalog contains a SKU that identifies blue shorts. That SKU has the following 
properties: 
color
= blue 
itemType
= shorts 
listPrice
= 10.00 
When a 
CommerceItem
is passed to the 
ItemListPriceCalculator
, this particular 
Itemlistpricecalculator
looks at the item’s 
catalogRef
property (SKU) and retrieves the value of 
that object’s 
listPrice
property (10.00). The 
ItemListPriceCalculator
then modifies the input price 
to be 10.00 and returns it. 
The 
ItemSalePriceCalculator
works in almost the same way. The 
ItemSalePriceCalculator
has 
an additional property called 
onSalePropertyName
, which is a boolean property on the 
priceSource
object that indicates whether the item is on sale. 
In this example, the 
priceFromCatalogRef
property of 
ItemSalePriceCalculator
is set to 
true
. The 
pricePropertyName
property is set to 
salePrice
. A SKU in the SKU catalog has a property called 
onSale
. If a SKU were on sale, the 
onSale
property would be set to 
true
. The 
onSalePropertyName
property of 
ItemSalePriceCalculator
is set to 
onSale
When an item is passed to the 
ItemSalePriceCalculator
, it has a 
catalogRef
property that points to 
a SKU from the SKU catalog. 
color=blue
itemType=shorts
listPrice=10.00
onSale=true
salePrice=7.00
When the 
ItemSalePriceCalculator
receives this item, it uses the value of the SKU’s 
onSale
property 
to determine if it is on sale. In this example, the value is 
true
, indicating that the SKU is on sale. The 
calculator then gets the sale price using the SKU’s 
salePrice
property. The price in this case is 7.00. The 
calculator then modifies the input price for the item to be 7.00 and registers that a change has been made 
ATG  C om merce  P ro gra mm in g  G ui d e 
17 0  
11  -  C om merce  P ri cin g   Ca lcu l at ors  
to the price. This registering is done by creating a new 
PricingAdjustment
and adding it to the 
adjustments property of the price object, which in this case is an 
ItemPriceInfo
. The adjustment would 
be -3.00, and it would show that the 
ItemSalePriceCalculator
was responsible for the change. 
ItemDiscountCalculator 
The 
atg.commerce.pricing.ItemDiscountCalculator
class calculates the new price for an item or 
items based on a given pricing model. It applies the discount that the pricing model describes to the price 
in the 
ItemPriceInfo
corresponding to each passed 
CommerceItem
. The discount can be a fixed 
amount, a percentage, or a fixed price. 
The 
ItemDiscountCalculator
class inherits all the properties of 
DiscountCalculatorService
. See 
the ATG API Reference for detailed information on 
ItemDiscountCalculator
and its related classes. 
The 
ItemDiscountCalculator
component is a preconfigured instance of the class 
atg.commerce.pricing.ItemDiscountCalculator
class. It is the default discount calculator for the 
item discount promotions. 
The following table describes the properties of the 
ItemDiscountCalculator
component. 
Property 
Description 
pricingModelProperties 
Specifies a bean that hosts the names of all of the properties of a 
pricing model repository item. 
qualifierService 
Specifies a Qualifier that performs the actual evaluation of a 
pmdlRule
of the 
PricingModel
against the running environment. 
See the Qualifier Properties section for additional information. 
negativeAmountException 
ATG Commerce never discounts the price of an item to less than 
zero. This property determines what happens when a discount 
would cause the amount of an item to be negative. 
True
: Throw an exception when a discount causes an amount to be 
negative. 
False
: (default) Log a warning message and set the amount to 0.0 
when a discount causes an amount to be negative. 
You can view and modify this component in the ATG Control Center. Its location is 
/atg/commerce/pricing/calculators/ItemDiscountCalculator
BulkItemDiscountCalculator 
The 
atg.commerce.pricing.BulkItemDiscountCalculator
class is a calculator that supports bulk 
item discounts. This class is based on the 
ItemDiscountCalculator
. The unique behavior of 
BulkItemDiscountCalculator
is to determine the adjuster for the discount; other functionality is 
inherited. 
ATG  C om mer ce P ro g ramm in g   Gui d e 
17 1  
11  -  C o m merce  P rici n g  C al cu lat o rs  
The calculator has two default properties for banding attributes, in case those are not provided in the 
PMDL: 
defaultBandingProperty = null 
defaultBandingPropertyScope = "DetailedItemPriceInfo" 
The 
defaultBandingPropertyScope
provides access to the collection of qualified items for the 
calculator to process. 
The calculator’s 
bandedDiscountCalculatorHelper
points to a helper class, 
BandedDiscountCalculatorHelper
, that holds the banded discount logic. See the 
BandedDiscountCalculatorHelper
section for details. 
ItemListPriceCalculator 
The 
atg.commerce.pricing.ItemListPriceCalculator
class is a calculator that determines the list 
price of an item and sets the 
itemPriceInfo
to that amount. This class extends the 
ItemPriceCalculator
. The list price is determined based on the value returned from the 
getPriceSource
property. This is typically the first in a series of calculations, with this calculator 
providing a starting price for other calculators. The 
ItemListPriceCalculator
sets the 
listPrice
property of the input price object to the input 
Price.
The ItemPriceCalculator section includes an example of how the 
ItemListPriceCalculator
determines a price. 
ItemSalePriceCalculator 
The 
atg.commerce.pricing.ItemSalePriceCalculator
class extends the 
ItemPriceCalculator
. It 
determines the sale price of an item and discounts the 
itemPriceInfo
to that amount. This class also 
maintains the audit trail of the 
ItemPriceInfo
. There is no rule associated with this calculator. If one of 
the pricing methods of 
ItemSalePriceCalculator
is invoked, all input items are discounted to the sale 
price. 
The 
ItemSalePriceCalculator
class also contains the following property: 
onSalePropertyName
: The boolean property of the price source that determines if 
the price source is on sale. A price source is the 
catalogRef
or 
productRef
of a 
CommerceItem
The ItemPriceCalculator section includes an example of how the 
ItemSalePriceCalculator
determines a price. 
ConfigurableItemPriceCalculator 
The 
atg.commerce.pricing.ConfigurableItemPriceCalculator
class extends the 
ItemPriceCalculator
. It calculates the list price of a configurable item and sets the 
itemPriceInfo
to 
that amount. It computes the price of the configurable item by adding up the price of all the individual 
subSKUs and the price of the configurable SKU. This sets the list price with the prices of the subSKUs that 
ATG  C om merce  P ro gra mm in g  G ui d e 
17 2  
11  -  C om merce  P ri cin g   Ca lcu l at ors  
are configured in the configurable item. If the configurable item is on sale then the sale price will also be 
modified. 
OrderDiscountCalculator 
The 
atg.commerce.pricing.OrderDiscountCalculator
class implements the 
OrderPricingCalculator
. It calculates 
OrderPriceInfo
values for orders when the calculator is 
invoked. This calculator receives a 
MatchingObject
and 
DiscountStructure
from the pricing engine, 
then computes an 
OrderPriceInfo
based on the input 
PricingModel
(
RepositoryItem
). 
See the ATG API Reference for detailed information on 
OrderDiscountCalculator
and its related classes. 
The 
OrderDiscountCalculator
component is a preconfigured instance of the class 
atg.commerce.pricing.OrderDiscountCalculator
. It is the default discount calculator for order 
promotions. 
The following table describes the properties of the 
OrderDiscountCalculator
component. 
Property 
Description 
pricingModelProperties 
Specifies a bean that hosts the names of all of the properties of a pricing 
model repository item. 
pricingModelProperties
are used so you do 
not have to hard code the properties into a pricing model. 
qualifierService 
Specifies a Qualifier that performs the actual evaluation of a 
pmdlRule
of the 
PricingModel
against the running environment. 
negativeAmountException 
Determines what happens when discounts cause the amount of an item 
to be negative. 
True:
Throw an exception when a discount causes an amount to be 
negative. 
False:
(default) Log a warning message and set the amount to 0.0 
when a discount causes an amount to be negative. 
You can view and modify the 
OrderDiscountCalculator
component in the ATG Control Center. The 
component is located in 
/atg/commerce/pricing/calculators/OrderDiscountCalculator
BulkOrderDiscountCalculator 
The 
atg.commerce.pricing.BulkOrderDiscountCalculator
class is a calculator that supports bulk 
item discounts. This class is based on the 
OrderDiscountCalculator
. The unique behavior of 
BulkOrderDiscountCalculator
is to determine the adjuster for the discount; other functionality is 
inherited. 
The calculator has a default property for banding attributes, in case those are not provided in the PMDL: 
Documents you may be interested
Documents you may be interested