14Pricing in the Run-Time Application

Pricing in the Run-Time Application

This chapter covers the ways that pricing affects the run-time application. For more information about how pricing affects quotes and orders, see Siebel Order Management Guide. This chapter includes the following topics:

Pricing Waterfalls

The final net price that is charged to a customer is usually the result of many pricing adjustments. It begins with the product’s list price, and then adjusts the price because of volume discounts, attribute pricing, aggregate discount pricing, manual price adjustments entered by the sales representative, and many other possible types of price adjustments.

The pricing waterfall lets the user see all the steps that went into calculating the net price. It is a list of prices that begins with the list price showing the price adjustments, in the order they were applied, with the price after each adjustment, ending with the final net price.

Pricing waterfalls include any manual price adjustments that the sales representative entered at the time of sale, as well as price adjustments applied by the pricing engine.

The end user displays a pricing waterfall by clicking the net price in any line item of a quote, order, or agreement. A pop-up pricing waterfall applet appears that lists all the steps used to calculate the net price. The fields in each row of the pricing waterfall applet are described in the following table.

Field Comment

Adjustment

This field describes the price adjustment for this line, such as manual line item adjustment or volume discount. Alternatively, this field gives the list price or other start price and notes the price list it came from.

Type

This field displays the type of the adjustment. Examples are % Discount, Discount Amount, or Override. The start price is considered an override.

Amount

This field displays the value used by the adjustment, whose use depends on the adjustment type. For example, if the adjustment type is % Discount, and the Adjustment Amount is 15, then the adjustment is a 15 percent discount. If the adjustment type is Discount Amount, and the Adjustment Amount is 15, then the adjustment is a discount of $15 (assuming the currency is dollars). If the adjustment type is Override, and the Adjustment Amount is 15, then the adjustment is to replace the price with a price of $15 (assuming the currency is dollars).

Price

This field displays the current price in each step of the price calculation. In the first row, this is the start price. In the last row, it is the final net price.

    Configuring Pricing Waterfalls

    To configure the pricing waterfall, you modify the pricing procedure used to display the waterfall. For more information about this pricing procedure and the PSP waterfall business service that it calls, see Siebel Pricer Technical Reference For more information about working with pricing procedures and messages, see Siebel Order Management Infrastructure Guide.

    This topic gives you general instructions about some common ways of configuring pricing waterfalls.

      Configuring a New Pricing Waterfall

      Use the following procedure to add a new pricing waterfall.

      To configure a new pricing waterfall

      1. Create a new message type in the Administration - Application screen, Message Type Administration View as follows:

        • You must enter the name and full text of the message.

        • You can add translations for the full text if needed.

      2. Specify the payload variables that will be substituted in the full text in the Message Type Payload Administration view.

      3. Add an action to a step in the pricing procedure that creates the waterfall record using the new message type, passing the required payload fields.

      4. Test the revised pricing procedure.

        Adding a New Field to the Pricing Waterfall

        You can add a new field to the information in each row of a waterfall. For example, you might want each row to include the approval level that was needed to give the discount in that row.

        Use the following procedure to add a new field to the pricing waterfall.

        To add a new field to the pricing waterfall

        1. Edit the pricing procedure and add the new field to actions that generate waterfall output.

          For example, to add the approval level as the last column of the waterfall, add it at the end of the standard actions that generate the waterfall, as follows:

          {Row}.{Net Price Waterfall} += New('Waterfall', [Text] = LookUpMessage('Pricer - Dynamic Matrix Adjustment', [Price Book] = {Match.Price Book}), [Adjustment Type] = {Match.Adjustment Type}, [Adjustment Amount] = {Match.Adjustment Amount}, [Currency Code] = {Row.Currency Code}, [Price] = {Row.Start Price}, [Approval Level] = {Match.Approval Level})

        2. Add the new field to the Net Price Waterfall VBC.

        3. Add the new field to the Net Price Waterfall Pop-up List applet.

          Saving Pricing Waterfall Output

          In general, the pricing waterfall is generated on demand when the user clicks the Show Details button, instead of being stored in the database. When the record is repriced, the waterfall displays.

          You can save the waterfall to the database at any time by selecting a line item, and then clicking the Save Waterfall button in the Line Items list of a quote, order, or agreement. You can also configure the product to invoke the SyncToDB method of the PSP waterfall business service to save the waterfall for an entire document.

          However, writing the waterfall to the database can slow performance, so do it only if it is necessary. For example, you might save waterfalls to analyze the discounts you give customers, or to calculate incentive compensation.

          To save a pricing waterfall

          1. Select a line item (for a quote, order, or an agreement).

          2. Click the Save Waterfall button in the Line Items list.

            Configuration for Waterfalls

            You must configure the Siebel application to create a user interface for viewing a stored waterfall. For more information about configuring Siebel applications, see Using Siebel Tools. For more information about configuring Siebel Pricer, see Siebel Order Management Infrastructure Guide.

              Contract-Based Pricing

              Contract-based pricing is pricing based on an agreement with a customer to give that customer a special price. In Siebel applications, contracts are also called agreements and are managed in the Agreements screen. For general information about working with contracts, see the topic about agreements in Siebel Field Service Guide. For more information about contract-based pricing, see the following information:

                About Hierarchical Contract-Based Pricing

                You can configure the product to create hierarchical contract-based pricing.

                After you have set up hierarchical contract-based pricing, if you give a pricing entitlement to a parent account, then it will be inherited by all its children accounts. If you give a pricing entitlement to a child account, then it will be combined with any entitlements for its parent account.

                For example, when you give a global account a 10 percent discount on all surgical products, you also give a local account that is a child of that global account a 10 percent discount on scalpels. When the child account buys scalpels, it has an entitlement for a 19 percent discount, because it inherits a 10 percent discount from its parent account. and also receives a 10 percent discount on the 90 percent of the list price that it must pay after the inherited discount. For more information about configuring the product to create hierarchical contract-based pricing, see Siebel Order Management Infrastructure Guide.

                  Defining Contract Pricing in the Agreements Screen

                  When you define contract pricing in the Agreements screen, the entitlement must be based on a customer account and on products. You create an agreement with an account, and you define the products for which that account will get special pricing. For more information about other fields in the Agreements screen, see the topic about agreements in Siebel Field Service Guide.

                  To define contract pricing in the Agreements screen

                  1. Navigate to the Agreements screen.

                  2. In the Agreements list, add a new record and complete the necessary fields.

                    In the Account field, select the account for the customer who receives special pricing.

                  3. Click the Entitlements view tab.

                  4. In the Entitlements list, add a new record and complete the necessary fields.

                    In the Type field, select Pricing.

                  5. Click the Price Details view tab, which is beneath the Entitlement list.

                  6. Add one or more new records to the Price Details list and complete the necessary fields as described in the following table.

                    Field Comments

                    Product

                    Select the product for which this account gets a special price.

                    Target Price

                    Select the base price to which this special price is applied.

                    Type of Calculation

                    Select the type of special discount that this account receives. Options are Discount Amount, % Discount, Markup Amount, % Markup, and Price Override.

                    Adjustment Value

                    Select the value used by the calculation. How this value is used depends on the selection in the Type of Calculation field:

                    • Discount Amount. The value is subtracted from the target price.

                    • % Discount. The value is treated as a percentage, and that percentage is subtracted from the target price.

                    • Markup Amount. The value is added to the target price.

                    • % Markup. The value is treated as a percentage, and that percentage is added to the target price.

                    • Price Override. The value replaces the target price.

                    Defining Contract Pricing in the Discount Matrices View

                    Discount matrices allow you to manage pricing entitlements for products or groups of products in one view.

                    For more detailed information about creating a discount matrix, see Creating Discount Matrices

                    To define contract pricing in the Discount Matrices view

                    1. Navigate to the Administration - Pricing screen, then Discount Matrices view.

                    2. Add a new record to the Discount Matrices list and complete the necessary fields.

                      In the Discount Matrix Type field, select Entitlement-Based Adjustment.

                    3. In the Discount Criteria list, specify the fields that you want exposed in the discount matrix:

                      1. Add a field to identify the entitlement, such as Entitlement.

                      2. Add a field to identify the product or group of products, such as Product.

                    4. After all the fields are added, click Complete Definition.

                    5. In the Discount Matrix list, click the name of the new discount matrix.

                    6. In the Discount Details list, add one or more records.

                      In each record:

                      1. Select a value in the field that identifies the product.

                      2. Select a value in the field that identifies the entitlement.

                      3. Use the Adjustment Type and Adjustment Value to specify the adjustment that those products get when sold through that entitlement.

                      Giving the Customer the Best Entitlement Price

                      When a sales representative creates a quote for a customer who may have special contract-based pricing, the sales representative clicks the Entitle button to fill in the entitlements that apply to each line item.

                      You must modify the pricing procedure to apply the discount based on the entitlement returned. The best entitlement pricing works only off of the list price. For more information, see Siebel Field Service Guide.

                      To give the customer the best entitlement price

                      1. Create a quote or order, as described in Siebel Order Management Guide.

                      2. After adding all the line items, in the Quote Header form, click Entitle.

                        In each line item where there is an entitlement that applies, the Entitlement Name field is filled in with the name of the entitlement. That entitlement is used to calculate pricing for that line item.

                        Multiple Price Types and Totals

                        Multiple price types allow you to create simple products that have one of three price types. You can also create customizable products with components and assign a price type to each component and to the product root. Price Type is a required field when you define a product.

                        The three price types are:

                        • One-Time. This price is charged only once. For example, you assign this price type to a piece of equipment that the customer can purchase.

                        • Recurring. This price is charged on a recurring basis. For example, you assign this price type to a service to which the customer subscribes.

                        • Usage. This price is charged based on customer consumption. For example, you assign this price type to an electric service that is billed by kilowatt hour of usage. The Usage price type is provided for information only and is not used in any price calculations.

                        When a product has multiple price types, quotes and orders must also have multiple price totals, one for charges of each price type and unit of measure. This is important because these different types of prices cannot be added up as one total, because they use different units of measure (each and per month).

                        About Configuring Pricing Fields in Catalog, eSales, and Configurator

                        In earlier versions, Siebel Catalog, eSales, and Configurator supported only two pricing fields. In version 7.8 or later, they can be configured to add additional pricing fields.

                        Without configuration, Siebel Catalog includes two pricing fields: List Price and Your Price for simple products, and Starting At Price and Your Price for customizable products. You can configure Siebel Catalog to add additional price fields. For more information about Siebel Catalog, see Siebel Order Management Guide.

                        Without configuration, the Siebel eSales catalog and shopping cart both include the same two pricing fields as catalog. For more information about eSales, see Siebel eSales Administration Guide.

                        Without configuration, Siebel Configurator includes two pricing fields: Starting At Price and Your Price. You can configure these by changing the configurator template. For more information about Configurator, see Siebel Product Administration Guide.

                        Multiple Currencies in a Quote, Order, or Agreement

                        One quote, order, or agreement can include prices from multiple price lists that are in different currencies, because the sales representative can use a different price list for an individual line item, if necessary.

                        In the header, when a user selects the price list, the currency of that price list is automatically entered in the Currency field. All totals for the quote, order, or agreement are in this currency.

                        In the line items, the default price list is the one selected in the header. However, users can select a currency in the line item, and the line item will use the price list for that currency. Users work with currencies by using the fields described in the following table.

                        Field Comment

                        Currency Code

                        Enter the code for the currency.

                        Exchange Date

                        Enter the date used for currency conversion. The application uses the exchange rate on that day to convert currencies.

                        For more information, see the topic on creating quotes and orders in Siebel Order Management Guide.

                        Spread Discount Pricing

                        When sales representatives apply a manual discount to the total price of an order, they can spread that discount among the line items of the order. Because products can be defined with multiple price types, spread discount pricing must consider price types. Spread discount pricing spreads the discount to one-time charges only, not to recurring or usage charges.

                        Spread discounting performs any needed currency conversions. Users can specify the amount of the discount in a given currency. When it is spread among line items, the discount is converted to the currency in each line item. For more information about end users and spread discounting, see the topic about spreading a discount among line items in Siebel Order Management Guide. For more information useful to developers, see the following information:

                          About the Spread Discount Algorithm

                          This topic contains a high-level description of the algorithm used by the spread discount service:

                          • Get the BasePrice (List Price or Net Price).

                          • Convert all prices (BasePrice, Min, Max) to BaseCurrency. (Defaults to system currency, but user chooses from dialog box.)

                          • Add up all BasePrices up (multiplying each by Qty) to get TotalBasePrice.

                          • Get TargetPrice (calculated from AmtToDiscount or PercentToDiscount if necessary).

                          • Calculate total to discount: TotalToDiscount = TotalBasePrice – TargetPrice.

                          • Loop through the discounts one at a time:

                            1. Loop through all Rows that have not reached min or max:

                              • Discount each amount by (BasePrice/TotalBasePrice)*TotalToDiscount

                              • If that discount pushes price beyond min or max, then:

                                - Set the final price of item to its min or max

                                - Remove that row from further discounts

                            2. After round completes, make adjustment so maxed out rows are not taken into account in the next round’s calculation. For each of these rows:

                              • Its BaseValue*Qty will be subtracted from TotalBasePrice

                              • Its DiscountAmt*Qty will be subtracted from TotalToDiscount

                            3. Looping continues until:

                              • TotalToDiscount can be spread evenly across all remaining line items, or

                              • All items have been discounted to their respective min or max.

                          • Loop through all rows to convert each back to the line item currency and to round each to line item precision.

                            Add up rounding remainders and amount discounted.

                          • The rounding remainder is added to element with highest BasePrice*Qty that has not already reached its min or max.

                            This continues until the rounding remainder rounds to 0 or until no items can be discounted further.

                            About Use of the Spread Discount Service with Pricing Procedures

                            When an end user clicks the Spread button, the following occurs:

                            • One signal is raised to invoke the workflow process Spread Discount Driver Workflow process, which uses the business service ISS Spread Discount Service in one of its steps.

                            • After this is done, another signal is raised to invoke the workflow process Dynamic Pricing Procedure.

                            To use the spread discount service with custom pricing procedures, raise signals to call the workflows in this order.

                              About Configuring the Spread Discount Source Field

                              When an end user uses spread discount, the list of values for the source field has two values, list price and net price. List price is the default value.

                              If you configure the application to add a new value to this list of values, then you must make sure the new field is in the row set variable map for the spread discount Spread Discount Variable Map - Row Set. For more information about variable maps, see Siebel Order Management Infrastructure Guide.

                                Displaying a Warning if the Exact Discount Cannot Be Spread

                                In some cases, the spread discount algorithm might not be able to spread exact total discount over the line items. In this case, it adjusts the total so it can be spread over the line items.

                                There are two reasons why it might be impossible to spread the discount:

                                • Decimal remainder inaccuracy. For example, the total discount might be $100. After the spread discount process is run, the total might be adjusted to $100.02, because the process rounds prices to the nearest cent.

                                • Maximum or minimum prices. For example, the products that the discount is applied to might have minimum prices that are so high that it is impossible to apply the entire discount to them. By default, the Siebel application does not display a message telling the user that the total has been adjusted.

                                You can set up the application to display an error message if the total is adjusted.

                                • If there is a decimal remainder inaccuracy, it displays the message, “Discount cannot be spread completely. Remainder of [Currency Code] [OverflowAmount] will be added to total. This inaccuracy can be improved by increasing the number of line items or decreasing the Quantity of each line item."

                                • If there is an issue with minimum of maximum prices, it displays the message, “Discount cannot be spread completely. Remainder of [Currency Code] [OverflowAmount] will be added to total. All items have reached their minimum or maximum prices."

                                The user can either accept the adjustment or cancel it and change the records to make it possible to spread the exact discount.

                                To display a warning if the exact discount cannot be spread

                                1. In Web Tools, open a workspace and then navigate to Object Explorer.

                                  For more information on using the workspace dashboard, see Using Siebel Tools.

                                2. In the Object Explorer, select the Business Component Object.

                                3. Query for the business service ISS Spread Discount Service.

                                4. Change the value of the business service user property Suppress Inaccuracy Warnings to N.

                                  Note: The default value is Y.
                                5. Deliver the changes to the Siebel runtime repository, and restart the server.

                                  Totaling and Rollups of Pricing

                                  Price totals and rollups consider price types:

                                  • Totals and rollups include one-time and recurring prices.

                                  • Totals and rollups do not include usage prices, because the price is not known until the customer’s usage is known.

                                  This information about totals is displayed in the one-time charge total and monthly charge total fields of quote, order, and agreement headers.

                                  Users can specify the currency for the total or rollup, after which the application performs the currency conversions to calculate the total from line items in different currencies.