Tiered Volume Discount Across Multiple Line Items In Siebel

Siebel Pricing: Aggregate Volume Discount article was much appreciated by readers. A reader has problem in enabling Tiered Volume Discount for an order having multiple order line items of same product . Lets look in to complete query and its resolution suggested by us.


I was wondering is there any way to achieve a Tiered Volume discount across multiple line items.
there is a rule which says: if the customer buys 1 qty of product P1, no discount should be applied.
if he buys 2 or more, he will get 50% off on the 2nd product onwards.

This can be set up as a Tiered volume discount.
Now consider the scenario where we have 3 order lines in the same order; each order line item with product P1 and quantity 1. how can I give 50% off on the 2nd and 3rd order line using tiered volume discount?


The calculations may be tiered but in the Quote, you will see an average discount.
If you have the same product on 2 lines, you cannot have the first line at 100% of the price and the second line at 50% of the price. This is marketing chat, not how siebel will apply the discount.
siebel will calculate an average price for both product after the discount is applied to the 2nd product. and put that average price on lines products.
now I don’t see any technical reason that would prevent to have discount on the second line but I have many reasons not to do it.

if you want to apply a volume discount on multiple lines, you need to change the pricing workflows.

in the Dynamic Pricing Procedure workflow you first aggregate the Quantity of all identical product Id in the Quote/Order.
for this you use business service “Row Set Transformation Toolkit”, method is “Aggregate Transform”
the input arguments are mainly:
“Aggregate Type”, “Group By”, “Aggregate Field”
you put Sum, Product Id, Extended Quantity Requested respetively
plus the usual suspects (Row Set, Context…)

once you have determined the total qty of a product, you add the number to each product in the Row Set (I suggest you create a new property to store the new qty)

the row set would now look like this

     Product Id    Extended Quantity Requested         Aggregated Qty
    123-WE-3                                  2           6
    123-WE-3                                 2           6
   123-WE-3                                 2           6
    345-JHU                                    3           3

 then you just have to modify the Pricing Procedure – Calculate Net Price worflow, specifically the step that calculate the discount:
step: Tiered Volume Discount
you update argument “In Memory Search Specification”
the value of the argument show something like [Minimum Quantity] <= {Row.Extended Quantity Requested}
change “Extended Quantity Requested” with “Aggregated Qty” and you’re done.
you may want to to price waterfall to display all applied discounts. If you do, you can push it further and create a specific message for the waterfall to indicate that a aggregate discount has applied. Since the discount now apply to multiple rows in the Row Set, you are obliged to use the Reprice All function to reprice all line items
if you use reprice, the rowset will only be created with the selected record in the line item.
so adding a new product, changing the qty does not reprice the whole Order. You must use a reprice all
My experience with this is that you can automate a reprice all when you add a new product or when you change the qty or a product but you can trigger the reprice all when you delete a product. This is a scripting limitation, nothing to do with epricer (since the record is deleted, the context of the record is lost and the row set cannot be created and siebel throw an error).

I was going to try something else, trigger the reprice all on a pre-delete event, take the row id of the deleted Order item, remove this row id from the Row set and continue with price calculation but we finally decided that we could just do a reprice all manually plus a reprice all when the order is submitted

If you are good with epricer all the above should make sense and is pretty easy to implement, although it does take some time.depending on your requirement, you may also want to consider other approaches such as aggregate discount or product promotion.


5 comments on “Tiered Volume Discount Across Multiple Line Items In Siebel”

  1. Ashish Kumar Ashish Kumar Reply

    Forum has limited access to authorized readers only and team has found this good to share with all readers.


  2. Jayesh Reply


    This requirement is very common interms of website implementing shopping cart. We implemented eCustomer application which has lots of requirement around discount logic. We need to use various out of box discount like Aggregate Discount, Volume discount, Product promotion..

    We implemented buy one get one free kind of offer using Offer Module along with product promotions.

    Its really good module to implement product promotions.


  3. Rqui Reply

    Its great reading your posts. I have a requirement which is as follows. The organization maintains 2 types of pricelists. one is Standard Pricelists which include all the products which the org manufacturers and other is Customer specific Pricelists which will have only a few products which according to the company the customer would be interested in. So when the quote is raised, the products shown are related to customer. There is a case where the user wants to select some part from the standard price list also with the same price available in the standard price list. So can you please le me know how this can be achieved. As in Siebel Quoting, the pricing of the products is based on one price list only.

    Eagerly Awaiting for your response.

Leave A Reply

Your email address will not be published. Required fields are marked *

error: Content is protected !!