Implementation Tasks for Oracle Quoting

This chapter covers the following topics:

Setting Up Quote Status and Quote Status Transitions

The status of a quote indicates the evolution of a quote from the initial offer to order placement. Quote statuses and transitions reflect your quote cycle. You may also define your quote statuses to determine what kind of changes a sales representative can make to the quote.

If a quote status is read-only you may perform the following:

If a status is user maintainable, the application administrator can modify any attribute of the status.

If a status is not user maintainable, it means that:

Oracle Quoting is delivered with predefined quote statuses. You can define new quote statuses to reflect your business processes. But you cannot modify predefined statuses unless they are user maintainable. In addition, you cannot delete any statuses. You must deactivate those statuses you no longer want to use.

Note: Users with the System Administrator responsibility can define an Oracle Quoting default quote status using the profile option ASO: Default Quote Status. This default status is applicable to new quotes as well as to new versions of existing quotes.

The following table lists the predefined quote statuses:

Predefined Quote Statuses
Quote Status Description Read-only
Approval Canceled Sales representative canceled the approval process. No
Approval Pending Quote is pending approval, and is read-only. Yes
Approval Rejected Approval was rejected by the approvers. No
Approved Approved by the necessary approvers. Yes
Draft The default initial status of the quote. No
Inactive No more activity allowed on the quote. Yes
Order Submitted Quote has been submitted as an order to Oracle Order Management. Yes
Store Draft For iStore internal use only. Enables iStore to have a Draft to Order flow that is separate from Quoting. No
Validation Canceled The quote validation is canceled. No
Validation Pending The quote is pending validation. No
Validation Rejected The quote validation is rejected. No
Validated The quote is validated. Yes

Users can update quotes with read-only status if the profile option ASO: Status Override is set to Yes at the appropriate level.

The statuses in the following table exist for backward compatibility (for previous versions of Oracle Quoting), but there is no functionality associated with them.

Quote Status Description Read-only
Bid Used to show that the quote was presented to a customer. No
Lost Used to show that the customer declined or rejected the quote. No
Problem Used to show there is a problem submitting the quote as an order.
Note: The system will not automatically set this status if the order is not submitted.
No
Reviewed Used to show that the quote was reviewed internally. No

The statuses Contract Canceled, Contract Pending, Contract Required, Ordered and Entered appear in the Quote Status setup window but they are locked. You cannot enable or create any transitions for these statuses.

Note: If you designated a quote status as read-only in a particular release of Oracle Quoting, it will not be overwritten in subsequent releases, regardless of the out-of-box designation. For example, if you defined the status Lost as read-only in Oracle Quoting release 11.5.6, it will remain read-only in the later releases.

Rules for Quote Status Changes

Status transitions are regulated to prevent accidental changes, such as reverting an ordered quote status back to a not ordered status.

Not all transitions are predefined. You may have to set up certain transitions to use additional functionality. For example, the status transition Draft to Inactive is not predefined but is necessary to inactivate quotes.

Note: You cannot set up a transition from a status to itself.

The following table shows the predefined transition rules for quote status changes:

Predefined Quote Status Transitions
From To User Maintainable
Approval Pending Approved No
Approval Pending Approval Canceled No
Approval Pending Approval Rejected No
Store Draft Draft No
Store Draft Inactive No
Store Draft Order Submitted No

If a predefined transition is user maintainable, the application administrator can disable the transition. If the transition is not user maintainable, the application administrator cannot disable the transition as this is used by the system to enforce functionality.

Each transition has a Transitioned By field that is read-only. This field shows one of the following two values:

You cannot create transitions to the following statuses:

You cannot create transitions from the following statuses:

Set up quote status transitions by operating unit:

You can set up quote status transitions for an operating unit. The quote status transitions for an operating unit must encompass the quote status lifecycle for the operating unit. You cannot mix and match quote status transitions for a specific operating unit and the status transitions that are not associated with an operating unit. If a quote status transition is not associated with an operating unit, then that quote status transition applies to all the operating units for which a quote status transition has not been explicitly specified.

For example, if you add a new status transition from Draft to Approval Pending for operating unit OU1, then the system will automatically add the Approval Pending -> Approval Rejected, Approval Pending -> Approval Canceled and Approval Pending -> Approved status transitions.

Save behavior upon adding a quote transition if an operating unit is specified:

If there are active seeded quote transitions from the To Status of the newly added quote transition, then these seeded quote transitions will be automatically added to the status transition table for the operating unit.

For example, if you add a new status transition from Draft to Approval Pending for operating unit OU1, then the system will automatically add the Approval Pending -> Approval Rejected, Approval Pending -> Approval Canceled and Approval Pending -> Approved status transitions.

Save behavior upon deleting a quote transition if an operating unit is specified:

If there are active seeded quote transitions having the From Status match the To Status of the deleted quote transition and there are no other quote transitions having the To Status match the To Status of the deleted quote transition, then the seeded quote transitions will be automatically deleted from the status transition table for the operating unit.

For example, if you delete the status transition from Draft to Approval Pending for operating unit OU1, then the system will automatically delete the Approval Pending -> Approval Rejected, Approval Pending -> Approval Canceled and Approval Pending -> Approved status transitions.

To set up quote statuses, log in to Oracle Application windows as a Quoting Sales Manager. Navigate to the Quote Status Setup window from Oracle Quoting link, select Setup, then select Quote Status.

Field Behavior

Setting System Profile Options

Use Appendix A, Oracle Quoting Profile Options to identify the profile options to set for your specific implementation. There is no recommended order for setting profile options.

To change profile options, use the standard procedure outlined in the Oracle E-Business Suite User's Guide.

Notes

Assigning a Predefined Oracle Quoting Responsibility to a User

The following predefined responsibilities are available in Oracle Quoting:

Access to Quoting Windows

Access to Quoting Pages

Note: To create your own responsibilities, assign the menu QOT_QUOTE_ROOT to the responsibility.

To assign the Quoting pages predefined responsibility (Quoting User) to a user:

Prerequisites

The user must be set up as an application user.

Notes

Modifying Predefined Lookup Types

To modify the predefined Lookup Types (QuickCodes), log in to Oracle Quoting windows as Quoting Sales Manager.

Navigate to Quoting, select Setup, then select Quick Codes.

For a complete list of the predefined lookup types in Oracle Quoting, refer to Appendix D, Predefined Lookup Types.

Setting Up TCA SmartMatch

The TCA SmartMatch functionality uses powerful fuzzy matching logic and scoring to identify the most appropriate customer and contact records during the search process and identifies duplicates during the creation process.

Data Quality Management (DQM) is another name for the fuzzy matching logic. DQM uses matching rules setup in TCA to search for and match parties. There are a few profiles that are assigned these match rules and accordingly, the appropriate rules are used to perform the search.

In order for Quoting to use DQM, the following profiles must be set.

If the profile ASO: Enforce Account Relationships is set to No, DQM is used by Oracle Quoting to search for:

For more information about setting these profiles, please refer the Oracle Sales Implementation Guide.

For information on Data Quality Management, see the Oracle Trading Community Architecture Administration Guide.

Setting Up Quoting Parameters

Use the following procedure to set up the following Quoting parameters.

Steps

  1. Log in to Oracle Application window with the HRMS Manager responsibility.

  2. Navigate to HRMS Manager : Work Structures : Organization, select Description

  3. In the Find Organization dialog box, specify the operating unit for which you want to set the parameters in the Name field.

  4. For Organization Classification Name, select Operating Unit.

  5. Click Find.

  6. From the Organization Classifications section, select Operating Unit.

    Ensure that the Enabled checkbox is selected.

  7. Click Others.

  8. From the Additional Organization Information dialog box, select Quoting Parameters.

  9. Click in the Quoting Parameters field to display the Quoting Parameters dialog box with the following fields:

    • Operating Unit

      Select the same Operating Unit that you selected in Step 3 above.

    • Default Order Type

    • Default Salesrep

    • Default Sales Group

    • Default Sales Role

    • Default Contract Template

  10. Specify a value for each of the parameters using the respective LOVs.

    The LOVs for the Default Order Type, Default Salesrep, and Default Contract Template are filtered by the selected operating unit. The LOVs for the Default Sales Group and Default Sales Role are based on the Default Salesrep parameter.

  11. Click OK to save your changes.

You must perform the above procedure to set the Quoting parameters for each operating unit in your organization.

Setting up the Default Expiration Date

You can set the default quote expiration date so that quotes expire:

At the end of a calendar period, e.g., quarter or month

OR

At the end of a fixed number of days

Expiration Date Based on Calendar Period

You can set the default quote expiration date so that quotes expire at the end of each quarter, month or other calendar period. During setup, users can designate an Oracle General Ledger (GL) calendar and period type from which the default expiration date is calculated.

The Oracle General Ledger calendar selection is controlled by the profile option ASO: Default Expiration Date GL Calendar. Available options include all calendars set up in Oracle Accounts Receivables.

The General Ledger period is controlled by the profile option ASO: Default Expiration GL Period Type. Available options include all period types set up for the selected GL calendar. For more information on these profile options, see Appendix A, Oracle Quoting Profile Options.

The expiration date is set to the last date of the selected period. For example, if ASO: Default Expiration GL Calendar is set to Sample Calendar and ASO: Default Expiration GL Period Type is set to Quarter, then the quote expiration date is the last day of the current quarter.

Expiration Date Based on a Fixed Number of Days

Alternatively, you can set the default quote expiration date so that quotes expire after a fixed number of days. The fixed number of days is obtained from the profile option ASO: Quote Duration. For more information, see Appendix A, Profiles in Oracle Quoting.

Note: The value defined in ASO: Quote Duration is used only if one or both of the GL Calendar profiles are null.

Setting up WebADI to create Quote

Currently, you can create a quote using the Quoting UI or the Create Quote API. Creating a hundred-line quote using the Quoting UI will take considerable time. Alternately, the same hundred-line quote can be created much faster by specifying the quote and quote line information in a spreadsheet and processing it in bulk using the Create Quote API. The spreadsheet can be created offline by a partner user and then sent to the Quoting user to upload it into the system. The spreadsheet upload process performs the same validations as that in the UI since it uses the existing Create Quote API to create the quote. The spreadsheet approach also supports the ability to create multiple quotes in one go. The layout of the spreadsheet can be personalized to meet the business requirements.

The setup steps are as follows:

  1. Review the seeded integrator “Quoting – Create Quote”.

  2. Review the seeded layout “Create Quote Layout”.

  3. If you need to make changes to it, make a copy of it and make the necessary changes to the copied version.

    Additional Information: In Online mode, only one set of flexfields (headers or lines) can utilize the built in flexfield support. The other set of flexfields can be added as regular fields.

For more information on WebADI integration, see the Oracle Web Applications Desktop Integrator Implementation and Administration Guide and the Oracle E-Business Suite Desktop Integration Framework Developer's Guide.

Creating a Quote Template from a Quote

You can create a quote template from a quote enabling the quote to be reused.

The following quote line attributes are copied from a quote to the quote template:

The setup steps are as follows:

  1. User must have access to the Setup: Template Administrator function.

  2. You must enable the Create Template action for the ASO: Quote Actions in HTML UI lookup type.

Applying Quote Template with Different or Same Operating Unit as the Quote's Operating Unit

You can search for and apply templates with different or same operating unit as the quote's operating unit. Set the value of the ASO: Filter Quote Template By profile option appropriately when applying a template with an operating unit to a quote.

Setting up Override Modifiers

If the profile ASO: Discounting Privilege is set to Full, users can manually override prices. If you want users to have this ability, you must ensure that at least four override modifiers are set up in Oracle Advanced Pricing. At the Header level, there should be one discount and one surcharge with application methods of percent. At the Line Level, there should be one discount and one surcharge set up with application methods of percent or amount.

For information on setting up modifiers, refer to the latest version of the Oracle Advanced Pricing User's Guide.

Manual Modifiers in Buckets

In the Quoting windows, users can select manual adjustments from the Price Adjustment window. Bucket numbers are displayed on this window as well, so that sales representatives can see the buckets before applying manual modifiers.

In the Quoting pages, manual adjustments are entered in the Discount % field, when the user overwrites the Selling Price or Total Adjustment %. Bucket numbers are displayed so that sales representatives can see the buckets before applying manual modifiers.

When a sales representative overwrites the selling price (in either UI), the Pricing engine returns a manual adjustment in the null bucket. If a manual modifier in the null bucket has not been defined, the pricing engine will raise an error. To ensure that the selling price is calculated to be the same price that the user has entered, you must set up the four manual modifiers in the null bucket.

Multiple Currencies Price Lists

Multiple currencies price lists simplify pricing setup if you are selling products to customers in multiple countries. Multiple currencies price lists make it easier to quote to customers in multiple regions of the world at the same time.

To use multiple currencies price lists, there must be a conversion list associated with each price list. The conversion list, set up in Advanced Pricing, contains an algorithm that converts the base currency price from the price list into one or more additional currencies.

The use of multiple currencies price lists is controlled by the profile option QP: Multi-Currency Installed. If this profile is set to Yes and the profile QP: Multi-Currency Usages is set to Yes at the Application or Responsibility level, Quoting shows all price lists with the selected currency as base currency, as well as all price lists where there is a conversion list for the selected currency. If the profile option is set to No, the Price List LOV displays only price lists that are valid for the selected currency. You can leave the Currency field blank to view all price lists, or leave the Price List field blank to view all currencies. See Oracle Pricing Profile Options or the Oracle Advanced Pricing Implementation Guide for more information.

You must also run the concurrent program Update Price Lists with Multi-Currency Conversion Criteria to enable multiple currencies price lists. You must run this program only once or data corruption will occur. Once the concurrent program has been run successfully, all existing price list or agreement windows will be converted to multiple currencies price lists. After this, you should not try to disable multiple currencies price list functionality. Changing the profile back to No may cause undesired results if conversion criteria are used. Oracle does not support changing the setting back to No. For more information, please refer to the Oracle Advanced Pricing User's Guide.

With multiple currencies price list functionality you can also change the selected currency for a quote and recalculate quote prices with the new currency. If automatic pricing mode is enabled, the quote reprices automatically. If not, you must reprice the quote manually for the changes to take effect.

If multiple currencies is turned on, the LOV behavior is as follows:

the picture is described in the document text

Additionally, in the windows, if ASO: Price List Override is set to No, and there is no currency selected, the Price List LOV is read only and the Currency LOV displays only currencies that are valid for the selected price list. If ASO: Price List Override is set to No, and a currency is selected, the Price List LOV is read only and the Currency LOV displays only currencies that are valid for the selected price list.

If multi-currency is turned off, the LOV behavior is as follows:

the picture is described in the document text

The ASO: Price List Override profile is not applicable in the Quoting pages. Instead, you can achieve the same functionality in the Quoting pages by enabling or disabling the Price List and Currency LOVs using OA Personalization.

Setting Up a Multiple Currencies Price List

You must set up a price list with a conversion list to use multiple currencies price lists. Price lists and multiple currencies conversion lists are set up in Oracle Advanced Pricing. Please see the Oracle Advanced Pricing User's Guide for information on setting up price lists and conversion lists.

Note: The Transaction conversion type is not supported. This means the Quoting user cannot explicitly select a General Ledger-sourced Conversion Type or specify a Conversion Rate or Conversion Date.

Promotional Goods

You can set up a modifier in Advanced Pricing that automatically adds a product to a quote if the qualifying conditions (the purchase of one or more product) are met. The product or promotional good is added to the quote as a free or discounted item.

Note: You must set up a qualifier for the promotional good modifier such that only lines of type Order qualify for the promotional good.

The following setup restrictions apply to promotional goods:

Setting up Security

To enable security in Oracle Quoting, you must set the security profile options, listed in Appendix A, Profiles in Oracle Quoting.

In addition, all users must be set up as valid Resources and assigned to sales groups.

To view examples of how quoting security can be implemented, see Appendix C, Oracle Quoting Security Scenarios.

Note: Selecting a group for the Primary Sales Agent determines where quote information shows up in Daily Business Close. For example, a sales representative is part of Sales Group 1 and Sales Group 2. If you want the sales representative's statistics to roll up to Group Manager 1, you must select Sales Group 1 as the Primary Sales Agent's sales group for that representative.

Enabling View Margin

The View Margin function is used to determine if the user can view cost and margin information. It also enables the user to refresh the cost and margin information in the quote. The View Margin security function must be assigned to a user responsibility to update the cost for an expense item.

Creating a Resource

If you want all users to have access to Oracle Quoting when security is enabled, they must be setup as valid resources in Oracle Resource Manager.

When you create a resource, you assign roles to the resource.

You can create a resource either by entering the user information into Resource Manager or by importing an employee from Oracle Human Resources into Resource Manager.

For information on creating a resource, refer to the Oracle Trading Community Architecture User Guide.

Setting Up Manager Roles

Oracle Quoting security uses roles to determine which resources are managers. A manager must have an active role, of any role type, with the Manager flag checked. In addition, a manager must have the appropriate role in the context of a group. Managers have access to all quotes for the sales team they belong to. You can also set up a manager to have access to all quotes for the sales teams to which their subordinates belong.

Table Role Type Example lists the users, roles, roles attributes, and role types for employees at a fictional company.

Role Type Example
User Role Role Attribute Role Type
Bob Jones Regional Sales Manager Manager Sales
Jane Adams District Sales Manager Manager Sales
John Franklin Sales Agent Member Sales
Jennifer Moore Sales Agent Member Sales

For complete instructions on setting up roles, refer to the Oracle Trading Community Architecture User Guide .

Setting up a Group

Groups are used in Oracle Quoting security to determine the resource hierarchy. Groups identify the subordinates under a particular manager. The resource with a manager role in a group is considered the manager of all other resources in that group and any child group.

A resource can belong to multiple groups. Only one resource with a manager role should be in each group.

The following diagram demonstrates how the information in Table Role Type Example is used to infer a hierarchy in Oracle Quoting.

the picture is described in the document text

Notes

Verify Group Setup

To verify that you have set up your groups correctly, log in to Oracle Application windows with the Resource Manager responsibility.

Navigate to Resource Manager, select Maintain Resources, then select Group Hierarchy.

Setting Up Sales Team Assignment and Sales Credit Allocation

Oracle Quoting integrates with Oracle Territory Manager to enable automatic sales team assignment for quotes. Sales teams are assigned based on:

If integrated with Oracle Incentive Compensation (or an external engine) as well, you can call the OIC engine to determine sales credit allocations on quotes.

Note: If you plan to use the sales team assignment and sales credit allocation or projected commission functionality, you must set the profile option ASO: Security Enable From API to Yes.

For information on setting up sales team assignment functionality, refer to the Integrating Oracle Quoting With Oracle Territory Manager chapter.

For information on setting up sales credit allocation functionality using Oracle Incentive Compensation, refer to the Integrating Oracle Quoting With Oracle Incentive Compensation chapter.

If you implemented automatic sales team assignment and automatic sales credit allocation, you can also set up Quoting and Incentive Compensation to calculate projected commission for quotes.

Automatic Sales Credit Allocation — External Engine

If you choose not to use Oracle Incentive Compensation's Sales Credit Allocation engine, you can implement sales credit allocation functionality using an external engine. Quoting provides a customizable hook that updates a quote's sales credits through a call to the external engine.

For information on implementing user hooks, see Implementing User Hooks.

For information on sales credit allocation using Oracle Incentive Compensation, see the Integrating Oracle Quoting With Oracle Incentive Compensation chapter.

Setting Up Security Code for Credit Card Payments

The Security Code field may be specified on the quote when the Payment Type is Credit Card. The Security Code is the three-digit number printed, but not raised, on the back of a credit card. It is also known as the CVV2/CVC2 code. Refer the Oracle Payments Implementation Guide for more details.

Setting Up the Print Quote Functionality

You can print quotes using Oracle XML Publisher, XDO in either Adobe PDF or Microsoft RTF format.

For more information on Print Quote profile options, refer to Profile Options for Printing.

Setting Up Print Quote

The layout of the printout is dictated by a customizable RTF Template, specified in the profile option ASO: Default Layout Template. All quotes printed using XML Publisher can either be in the Adobe PDF or the Microsoft RTF format. The ASO: Default Layout Template profile also governs the Preview Terms format.

Note: The Customizable RTF template used for print layout includes an XSL-FO template for Printing Contract Terms and Conditions.

Setup Steps for Oracle XML Publisher

Perform the following steps to set up Print Quote to function properly:

  1. Upload the RTF template and the XSL included or subtemplate using the XML Publisher Administrator responsibility. Refer the Customizing the XML Publisher Report for more information.

  2. Set the profile option ASO: Default Layout Template to the value corresponding to a valid RTF template name that you uploaded.

  3. Bounce the Apache Server.

Customizing the XML Publisher Report

Customizing the XML Publisher report involves changing the RTF template to meet your requirements. To customize the RTF Template:

  1. Customize the report title.

    Two customizable FND messages are registered for the print quote report, one for nonexecutable quotes and one for executable quotes. The message names are:

    • ASO_PQUOTE_EXEC_TITLE

    • ASO_PQUOTE_NONEXEC_TITLE

  2. Customize the disclaimer.

    If a quote is nonexecutable, you can customize the disclaimer printed on the bottom of the quote by changing the name of the ASO_PQUOTE_DISCLAIMER message.

    Note: The disclaimer text should not be more than 4 lines long. If more than 4 lines, the disclaimer will be truncated.

  3. Replace the default logo given at the top left corner of the header region in the RTF template with your logo (.gif image file).

  4. Modify any section in the RTF template body by creating or changing tables and placeholders.

Customizing the Quote Data Template

To customize data templates, log in to Self Service Applications with the XML Publisher Administrator responsibility.

Navigate to Home and then Data Definitions.

  1. Select Order Capture in the Application field and click Go.

  2. Select Quote Data Template.

  3. In the Files section, click the data template file (ASOPRTDT.xml) link to download the file.

  4. Save the ASOPRTDT.xml file on your local drive.

  5. Add the custom columns to be added in the respective query section of the ASOPRTDT.xml file

  6. Define the custom columns in the Data Structure section of the respective group of the ASOPRTDT.xml file and save the changes

  7. Click Update File. Provide the path to the modified ASOPRTDT.xml file and click Apply.

  8. Bounce the Apache Server.

  9. ASOPRTDT.xml can be modified and should not be renamed to custom file name.

Customizing the Quote Printout Template

To customize data templates, log in to Self Service Applications with the XML Publisher Administrator responsibility.

Navigate to Home and then Templates.

  1. Select Order Capture in the Application field and click Go.

  2. Select the Default Quote Printout template.

  3. Click the Download icon to download ASOPRTRTF.rtf.

  4. Add custom fields to the ASOPRTRTF.rtf file and save the changes.

  5. Use the Return to Templates link to navigate back to the Templates tab.

  6. Select the Default Quote Printout template and click the Duplicate icon to create a duplicate of this template.

  7. In the Copy Template page, specify these details for the template: code, name and application. Click Apply.

  8. Query for the new template in the Templates tab. Select the template to view its details.

  9. Click the Update icon in the Localized Templates section and specify the path to the modified RTF file. Click Apply.

  10. Bounce the Apache Server.

  11. ASOPRTRTF.rtf can be modified and should not be renamed to custom file name.

Adding or Disabling Templates

You can add new templates by either creating new templates or duplicating an existing template.

Log in to Self Service Applications with the XML Publisher Administrator responsibility. Navigate to Home and then Templates.

To create templates, click Create Template button. In the Create Template page, use the following steps:

  1. Specify a template name.

  2. Select Order Capture in the Application field.

  3. Select one of these template types from the drop-down list: RTF or XSL-FO.

  4. In the Data Definition field, specify Quote Printing.

  5. In the Subtemplate field, select No if you are creating a RTF template. For a XSL template, select Yes.

  6. In the Template File section, specify the path of the template file, language and territory. Select the Translatable check box if the template file can be translated.

  7. Click Apply.

To duplicate an existing template:

  1. Select Order Capture in the Application field and click Go. All templates are displayed.

  2. Select a template. In the Localized Templates region, click the Download icon to download the source template file.

  3. Modify the template file and save the changes. Use the Return to Templates link to navigate back to the Templates tab.

  4. Select the template and click the Duplicate icon.

  5. In the Copy Template page, specify these details for the template: code, name and application. Click Apply.

  6. Query for the new template in the Templates tab. Select the template to view its details.

  7. Click the Update icon in the Localized Templates section and specify the path to the modified source template file. Click Apply.

To disable an existing template:

  1. Select Order Capture in the Application field and click Go. All templates are displayed.

  2. Select a template and click Update.

  3. Enter an end date for the template and click Apply.

Product Categories

To show subtotals by product category in the quote print out, you must enter a value in the profile option ASO: Category Set. The ASO: Category Set profile is used in Quoting pages when searching from the product catalog.

Note: The ASO: Category Set profile is optional. If this profile option is not set, it will use the default category set for the Order Management functional area.

Product categories belong to category sets, which are defined in Oracle Inventory. When you set up a category set in Inventory, you must ensure that products do not belong to more than one category.

Inclusion in more than one product category will affect the subtotal by product category. For example, if a product belongs to category A and category B in the same category set, the subtotals for each category will include the price of the product, regardless of the fact that the product is on the quote only once.

Note: If a product is part of more than one category within a category set, the product will show up as a duplicate in the product search.

Setting up Manual Pricing and Tax Calculation Request Options

Out of the box, Oracle Quoting automatically prices a quote whenever a potential price-affecting change is made. The pricing call also calculates taxes.

In Quoting windows, depending on the setting of the ASO: Enable Batch Processing profile, you can price the quote interactively or through a batch request. For the same functionality in pages, enable the Submission Options field using OA Personalization.

There are two fields in the Quoting UI using which you can opt to price or tax a quote manually or automatically for individual quotes. The fields are Price Calculation and Tax Calculation in the pages and Automatic Pricing and Automatic Tax in the windows. The initial values in these fields are based on the setting in the profiles - ASO: Calculate Price and ASO: Calculate Tax respectively.

The following table shows suggested settings for the Pricing and Tax fields and profile options in both the UIs, based on different scenarios:

Pricing Option Scenarios
Scenario Field in-
Quoting pages: Price Calculation
Quoting windows: Automatic Pricing
Field in-
Quoting pagesTax Calculation
Quoting windows: Automatic Tax
Quoting windows- ASO: Enable Batch Processing Setting Quoting pages- Enable Submission Options field
Large number of quote lines, complex pricing and tax setups Manual Manual Yes Yes
Large number of quote lines, simple pricing and tax setups Manual Manual Yes Yes
Small number of quote lines, simple pricing setups, complex tax setups Automatic Manual Yes Yes
Small number of quote lines, simple pricing and tax setups Automatic Automatic No No
Small number of quote lines, simple pricing setups, no tax computation unless requested. Automatic Manual No No

Note: Setting ASO: Calculate Price to Manual and ASO: Calculate Tax to Automatic is not supported because tax calculation is based on the price.

Enabling interMedia Search

Oracle Quoting supports the use of interMedia search for the Product Catalog.

Note: Oracle interMedia is known as Oracle Text from Oracle Database 11g.

You can use Oracle Text to search for internal part numbers. For more information on Customer Item Numbers and Item Cross-References, see the Oracle Inventory User's Guide.

Two Oracle iStore profile options affect the behavior of Quoting searches with interMedia enabled.

For more information about the iStore profile options, see the Oracle iStore Implementation and Administration Guide.

Please note that the following characters are treated as literal characters when performing an interMedia search:

Ensure that both Oracle interMedia and Oracle Inventory are properly set up and configured. Refer to the Oracle interMedia documentation for information on setting up interMedia. Refer to the Oracle Inventory User's Guide for information on setting up Inventory.

To enable interMedia search in Quoting windows:

  1. Set the ASO: Enable Intermedia Search profile option.

    See Profiles in Oracle Quoting for more information.

  2. Run the concurrent program iStore Search Insert.

Note: Only interMedia Search is supported in Quoting pages. Hence, it is enabled by default.

Running iStore Search Insert

Run the iStore Search Insert concurrent program after initially loading your products into Oracle Inventory. This program should be run once, as a post install step during implementation.

However, you may need to rerun the program if one of the following conditions occur:

The iStore Search Insert program collects product data from Inventory and inserts it into the Oracle iStore search table IBE_CT_IMEDIA_SEARCH. While this program is running, the product search will not work properly.

Note: You can have only one iStore Search Insert concurrent request instance running at a time.

Once complete, you can search for products by part number, long description, or description.

To run the iStore Search Insert program, log in to Oracle Application window with the iStore Concurrent Programs responsibility. Navigate to iStore Concurrent Programs, select Concurrent Request window.

Refreshing the Search Index

Administrators must refresh the interMedia search index, IBE_CT_IMEDIA_SEARCH_IM, every time an existing product is changed or deleted, or a new product is added.

Note: Before refreshing the index you must ensure that all triggers related to Inventory are enabled.

You must have privileges to modify the index. Refresh the index through Oracle Enterprise Manager or by executing the following command in SQL*Plus:

exec ctx_ddl.sync_index('APPS.IBE_CT_IMEDIA_SEARCH_IM')

The changes appear in the product catalog.

Setting Up Account Creation Requirements for Quotes

Out of the box, Oracle Quoting does not require financial accounts—for prospects without any accounts—when creating a quote. Sales representatives can create quotes for either prospects or customers. A prospect does not have a financial account, while a customer has one or more financial accounts.

Oracle Quoting enables you to determine at which point an account must be created. Account creation is based on the ASO: Auto Account Creation profile option. The profile determines when an account should be automatically created.

Depending on how you set the profile ASO: Auto Account Creation, you can set up account restriction in the following ways:

For more information on the profile options, see Appendix A, Profiles in Oracle Quoting.

Scenarios

The following table shows the behavior of Oracle Quoting based on the setting of this profile option.

Oracle Quoting Behavior Based on the Account Profile Option
Profile Option Setting Create Sold To Select Sold To Create Shipping, Billing, or End Customer Select Shipping, Billing, or End Customer Web Publishing Order Conversion
ASO: Auto Account Creation set to Always Create account Create account if customer has none Create account Create account if customer has none Create account for all customers in quote without account Create account for all customers in quote without account
ASO: Auto Account Creation set to As Required Do not create account Do not create account Do not create account Do not create account Create account for any customers in quote without account Create account for any customers in quote without account
ASO: Auto Account Creation set to Place Order Do not create account Do not create account Do not create account Do not create account Display error if any customers on quote do not have accounts Create account for all customers on quote without an account
ASO: Auto Account Creation set to Never Do not create account Do not create account Do not create account Do not create account Display error if any customers on quote do not have accounts Display error if any customers on quote do not have accounts

Changing Customer Name for a Quote

When you duplicate or update a quote you can change the Customer Name or Account Number. You can select the attributes for quote header and quote line to copy to the new quote.

You must enable the Change Customer action for the ASO: Quote Actions in HTML UI lookup type.

Setting Up Validations for Model Configurations

Set the ASO: Configuration Effective Date profile option to validate the configuration for the following flows:

Set the ASO: Configuration Effective Date profile option to configure effective and lookup dates for the model item for the following flows:

Set the ASO: Copy Configuration Effective Date profile option to configure effective and lookup dates for the copied model configuration for the following flows:

Important: To manually validate configurations in a quote you must enable Validate Configuration value for the ASO: Quote Actions in HTML UI (ASO_QUOTE_ACTION) lookup type.

For more information about ASO: Configuration Effective Date and ASO: Copy Configuration Effective Date profile options, see Profile Options for Displaying Default Values.

Parameters for Configurator session

You can use the ASO_QUOTE_HOOK.Get_Model_Init_Parameters API hook to provide parameters from Quoting to Configurator session. These parameters are used for building the model configuration rules. For example, to select a country specific power cord when configuring a desktop computer, you can provide the Ship To Country parameter for a quote to the Configurator session. The initialization parameters entered for the Configurator session using the API hook, override the values entered in Oracle Quoting.

Quoting Integration with Oracle Proposals

Oracle Quoting integrates with Oracle Proposals to provide proposal capabilities. With Oracle Proposals, Quoting users can create and send full proposals by e-mail, including quote information, and other customized collateral to the customer.

The Proposals function is available from the Oracle Quoting pages and windows.

Setting up Web Publishing Functionality

Web publishing functionality enables sales representatives to publish quotes to customers through Oracle iStore specialty stores. For information on setting up Web Publishing functionality, refer to the Setting Up Web Publishing chapter for more information.

Setting up Approvals

For information on setting up Approvals functionality, refer to theIntegrating Oracle Quoting With Oracle Approvals Management chapter.

Setting up Approvals on the Mobile Device

Quote approvers can use the Approvals for EBS app on the mobile device for quote approvals. For information on setting up the Approvals functionality on a mobile device, see the Oracle E-Business Suite Mobile Apps Administrator's Guide.

Setting up Availability to Promise (ATP)

For all information regarding setting up ATP in Oracle Quoting, refer the Oracle Global Order Promising Implementation and User's Guide and the Oracle Configure to Order Process Guide.

Setting up Sales Contracts

Oracle Sales Contracts integrates with Oracle Quoting. This enables the sales representative to attach sales contracts as part of a quote.

For more information on setting up sales contracts functionality, refer to the Integrating Oracle Quoting With Oracle Sales Contracts chapter.

Setting Up Credit Check Functionality

Oracle Quoting enables the user to determine the credit worthiness of a customer before the quote is converted into an order. The profile option ASO: Enable Credit Check determines if credit checks can be performed. For more information see Appendix A, Profiles in Oracle Quoting .

Oracle Quoting provides a public API for credit checking: ASO_CREDIT_CHECK_PUB.CREDIT_CHECK. The following information is mandatory for the public API:

The credit check API consists of two sections:

Internal Credit Check

Oracle Quoting supports the use of internal credit checks. Internal Credit Checks are based on:

These credit checks are performed by the Oracle Order Management public API OE_EXTERNAL_CREDIT_PUB.CHECK_CREDIT. For more information, see the Oracle Order Management Implementation Manual.

To perform internal credit checks, you must:

Defining Credit Check Rules

You designate the credit check rule used for performing credit checks in the profile option ASO: Credit Check Rule. This is an optional profile, but if it is not set, users cannot perform internal credit checks. For more information see Appendix A, Profiles in Oracle Quoting .

The credit check rule definition enables you to determine if freight and special charges are included during credit checks. The quote total passed to Oracle Order Management is based on the setting of the credit check rule. There are two flags available when you set up a credit check rule:

Log in to Oracle Application window as an Order Management Super User.

Navigate to Setup, select Credit, then select Define Credit Check Rules

Field Behavior

Notes

External Credit Check

External credit checks are configured by the application developer and enables users to make calls to non Oracle applications. The credit check can be configured by writing code for the prehook and posthook in the Quoting public API, ASO_CREDIT_CHECK_PUB.CREDIT_CHECK. The prehook is executed prior to the internal credit check and the posthook is executed after the internal credit check. Oracle Quoting customers can use these hooks to invoke the external credit checking.

For information on implementing user hooks, see Implementing User Hooks.

For user hooks to work properly, the following SQL scripts must run:

Populate Script

This script displays the following user hooks in the JTF_USER_HOOKS table:

Enabling Script

This script updates the Execute flag in the JTF_USER_HOOKS table for a particular hook, thereby enabling or disabling the user hook.

Parameters

This script accepts the following parameters:

Package Name — Name of the package that contains the user hook calls: ASO_CREDIT_CHECK_PUB.

API Name — Name of the procedure in the package which contains the user hook calls: CREDIT_CHECK.

Processing Type — The following processing types are supported: pre and post. Valid values are B (pre processing) or A (post processing).

Hook Type — The following type is supported: Customer. Valid value is C (customer).

Enabled Flag — Enabling user hooks. Valid values are Y or N.

Implementing User Hooks

To implement user hooks, you must:

  1. Display the JTF_USER_HOOKS table

  2. Enable User Hooks

  3. Disable User Hooks

Displaying the JTF_USER_HOOKS table

The Populate script automatically runs against the database, when you install the patch, and displays the JTF_USER_HOOKS table.

Enabling User Hooks

To enable user hooks:

  1. Run the Enabling script against the database. This script enables one user hook at a time. It is only necessary to run this script to enable the desired hook.

  2. Enter each parameter. For enabling user hooks with the ENABLE parameter, the value should be Y.

  3. You must implement the hook package when the corresponding hook is enabled.

Disabling User Hooks

To disable user hooks:

  1. Run the Enabling script against the database. This script disables one user hook at a time. It is only necessary to run this script to disable the desired hook.

  2. Enter each parameter. For disabling the user hook with the ENABLE parameter, the value should be N.

Setting up QA Check

You can set up a QA check to validate a quote at various key events in the quote lifecycle. You can either enable a business event, or manually select the QA Check option for a quote. You can set up the business event using custom business rules in Java or using a Web Service.

Steps to set up QA Check for a quote using a business event are as follows:

  1. Log in to the application and select the System Administrator or Workflow Administrator Web Applications responsibility.

  2. Navigate to Workflow: Administrator Workflow and Business Events.

  3. Enable the business events for which the QA check must be executed. The business event names are prefixed with oracle.apps.qot.events.quote.

  4. Enable the oracle.apps.qot.events.quote.group.pre event group if you are going to write a subscription for the event group.

  5. Define a synchronous subscription for each business event for which the QA check must be automatically started. Alternately, you can define a single subscription for the oracle.apps.qot.events.quote.group.pre event group.

  6. The Java method or PL/SQL procedure in the subscription queries the quote and performs the quote validations. Alternately, you can call a Web Service as part of the subscription. The Web Service performs the quote validations. The key input to the subscription is the quote header ID.

    The Java method or PL/SQL procedure returns the results of the QA check in XML format in WF_EVENT_T.EVENT_DATA.

Steps to manually perform a QA Check for a quote are as follows:

  1. Enable QA Check lookup code in ASO : Quote Actions in HTML UI (ASO_QUOTE_ACTION) lookup.

  2. Enable the oracle.apps.qot.events.quote.qa_check.pre business event and write subscription for this event. Perform steps 1 to 6 of the procedure for setting up QA check through a business event.

QOT Pre-Event Business Event Group

The QOT Pre-Event business event group contains all the pre event groups for setting up the QA Check. The following table provides the definition of the business event group:

Name Value
Name oracle.apps.qot.events.quote.group.pre
Display Name QOT Pre-Event Group
Description Includes all the pre events defined for Oracle Quoting
Status Disabled
Owner Name Oracle Quoting
Owner Tag QOT
Customization Level Limit

For more information about the oracle.apps.qot.events.quote. event, see Oracle Integration Repository (iRep).

XML Tags Used for the Output of QA Check

The subscription for the business event returns the results of the QA Check in XML format. The table below indicates the XML tags that are used in the output of the QA Check function:

Name Description
<summary> Provides an overall summary for subscription processing.
<attribute key=”SEVERITY”> Indicates the overall severity level. The values are Warning, Error, and Confirmation. Any other value is treated as an Error. Ignore case of the string in the value tag.
<attribute key="MESSAGE"> The message text displayed on the QA Check Results page. If display = false, no message is displayed.
<attribute key="SHOW_PAGE"> If display = true, the results page is shown.
<pagetitle key="PAGETITLE"> The title for the page.
<tabletitle> The heading for the table. The results table can contain a maximum of 20 columns. If a column is present in the XML output, it is displayed.
<attribute key="ATTRIBUTE1"> The first column in the results table. The Title attribute is the column name.
<attribute key="ATTRIBUTE2"> The second column in the results table. The Title attribute is the column name.
...<more attributes>  
<tablebutton key="EXPORT"> Displays the button to export the table to MS-Excel. Click the button to export table data to Microsoft Excel. The button is shown if display = true.
<tabledata> The row data for the QA check. The number of columns in the data table must match in the table header (<tabletitle>)
<button key="CANCEL"> Displays the Cancel button. Click the button to stop processing and return to the page where the action was initiated. It should be used in conjunction with the Continue button. The button is shown if display = true.
<button key="CONTINUE"> Displays the Continue button. Click the button to continue processing. The button is shown if display = true.
<button key="DONE"> Displays the Done button. Click the button to stop processing and return to the page where the action was initiated. The button is shown if display = true.

Sample Java Code to Perform a QA Check

This section provides a sample code to perform a QA Check when creating a version of a quote and the steps to use the code.

/* 
======================================================================= 
 A. Header payment validation
   If a header payment term is Net 90 and Account Number for a quote is 1608, display the following error message: Payment Terms Net 90 is not allowed for this customer.
 
B. Line level Flexfield validation
   If Chassis Style line flexfield (ATTRIBUTE1) is blank, display the following warning: Chassis Style is not specified.

C. Item validation
   If the Part Number on the quote line is 'TEMPITEM', then display the following error message: Please replace the placeholder item with the correct item.

   If there are no errors, then the user can proceed with the Create Version action.


Reference document: Oracle Workflow API Reference
======================================================================= 
*/
package oracle.apps.qot.events.quote;

import java.math.BigDecimal;

import oracle.apps.fnd.wf.bes.BusinessEvent;
import oracle.apps.fnd.wf.bes.SubscriptionInterface;
import oracle.apps.fnd.wf.bes.server.Subscription;
import oracle.apps.fnd.wf.common.WorkflowContext;

import oracle.jdbc.OracleConnection;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import com.sun.java.util.collections.ArrayList;
import java.util.StringTokenizer;

import oracle.apps.aso.schema.orderCapture.server.AsoQuotePub;

public class QotQACheckEvent implements SubscriptionInterface
{

  private final static String SQL_paymentQuery = new StringBuffer( "select HCA.account_number, ap.payment_term_id")
  .append( " FROM aso_quote_headers_all aqha," )
  .append( " hz_cust_accounts hca,"  )
  .append( " aso_payments ap ")
  .append( " WHERE aqha.cust_account_id = hca.cust_account_id(+)" )
  .append( " and aqha.quote_header_id = ap.quote_header_id" )
  .append("  and ap.quote_line_id is null" ).toString();


  private final static String SQL_lineFlexQuery = "select attribute1, quote_line_id from aso_quote_lines_all";

  private final static String SQL_itemNbr = "select msiv.concatenated_segments, aqla.quote_line_id " +
  "from mtl_system_items_vl msiv, aso_quote_lines_all aqla " +
  "where msiv.inventory_item_id = aqla.inventory_item_id " +
  "and msiv.organization_id = aqla.organization_id";

 
  public void onBusinessEvent(Subscription s, BusinessEvent b, WorkflowContext c)
  {
    String eventName = b.getName();
    String eventKey = b.getKey();
    StringBuffer eventOut = new StringBuffer();
    Connection connection = null;

    try{
 

      CallableStatement cstmt = null;

      connection = c.getJDBCConnection(); 

      // initialize org context

      try {
        cstmt = connection.prepareCall("Begin dbms_application_info.set_client_info('204'); End;");
        cstmt.execute();
        cstmt.close();
        cstmt = connection.prepareCall("Begin po_moac_utils_pvt.set_org_context('204'); End;");
        cstmt.execute();
        cstmt.close();

      } catch (Exception e) {

         b.setResponseData(e.toString());

      }

      // The following codes perform the QA Check for business event - create new quote version   
      if(eventName!=null)

      {

        // Validate header payment terms     
        String paymentMsg = validateHeaderPayment(connection, eventKey);

        // Validate line level flexfields
        ArrayList lnFlexMsg = validateLnFlexfileds(connection,eventKey);
        ArrayList itemMsg = validateItems(connection, eventKey);

         boolean errorPage = (paymentMsg!=null || itemMsg!=null && itemMsg.size()>0);

        // Construct XMLresponse string if validation fails
        if(paymentMsg!=null || (lnFlexMsg!=null && lnFlexMsg.size()>0) ||(itemMsg!=null && itemMsg.size()>0))
        {
          eventOut.append("<root>");
          eventOut.append(printSummary(errorPage, true));
          eventOut.append(printPageTitle(eventName+" QA Check Results"));

          String[] colNames = new String[] {"QA Check Name", "Line", "Severity", "Message"};

          eventOut.append("<resultstable>");
          eventOut.append(printTableTitle("Results", colNames, true));

          ArrayList tableDataLst = lnFlexMsg;

          for(int l=0; l<itemMsg.size(); l++)
          {
            tableDataLst.add(itemMsg.get(l));
          }

          if(paymentMsg!=null)
            tableDataLst.add("Header Payment Terms: :Error:"+paymentMsg);

          eventOut.append(printTableData(tableDataLst));

          eventOut.append("</resultstable>");

          eventOut.append(printPageButtons(!errorPage, errorPage));

          eventOut.append("</root>");
        }
      }

      //set QA Check output XML string as business event response
      b.setResponseData(eventOut.toString());

    }
    catch (Exception e)
    {
      b.setResponseData(e.toString());
    }
  }
 

   //  Validate header payment

  private  static String validateHeaderPayment(Connection conn, String key)
  {
    PreparedStatement statement = null;
    ResultSet rs = null;
    String msg = null;
    BigDecimal accountNumber = null;
    BigDecimal paymentTermId = null;
    String paymentQuery = SQL_paymentQuery+" and aqha.quote_header_id ="+key;

    try{
      statement = conn.prepareStatement(paymentQuery);

      rs = statement.executeQuery();

      while(rs!=null && rs.next())
      {
        accountNumber = rs.getBigDecimal(1);
        paymentTermId = rs.getBigDecimal(2);
      }
      if(accountNumber!=null && "1608".equals(accountNumber.toString()) && paymentTermId!=null && "1041".equals(paymentTermId.toString()) )
      {
          msg =  "Payment Term 'Net 90' is not valid for this customer";
      }
    }
    catch(Exception e)
    {
       msg ="Exception in payment term validation. ";
    }
    finally
    {
      if(rs!=null)
        try{rs.close();} catch(Exception e){}
      if(statement!=null)
        try{statement.close();}catch(Exception e){}
    }
    return msg; 
  }

  // validate item
  private static ArrayList validateItems(Connection conn, String key)
  {
     ArrayList msg = new ArrayList();
     PreparedStatement statement = null;
     ResultSet rs = null;
     String partNbr = null;
     BigDecimal quoteLineId = null;
     String lineNbr = null;
     String itemQuery = SQL_itemNbr+" and aqla.quote_header_id="+key;

     try{
        statement = conn.prepareStatement(itemQuery);
        rs = statement.executeQuery();
        while(rs!=null && rs.next())
        {
          partNbr = rs.getString(1);
          quoteLineId = rs.getBigDecimal(2);
          lineNbr = AsoQuotePub.getUILineNumber((OracleConnection) conn, quoteLineId);
          if("TEMPITEM.".equals(partNbr))
          {
            msg.add("Placeholder Item:"+lineNbr+": Error : Please replace the placeholder item with the correct item");
          }
        }
      }
      catch (Exception e){}

      return msg;
  }
  

   // Validate line level flexfields
  private static ArrayList validateLnFlexfileds(Connection conn, String key)
  {
    ArrayList msg = new ArrayList();
    PreparedStatement statement = null;
    ResultSet rs = null;
    BigDecimal quoteLineId = null;
    String lineNbr = null;
    String attribute1 = null;
    String lnFlexQuery = SQL_lineFlexQuery+" where quote_header_id ="+key;

    try{
      statement = conn.prepareStatement(lnFlexQuery);

      rs = statement.executeQuery();

      while (rs!=null && rs.next())
      {
        attribute1 = rs.getString(1);
        quoteLineId = rs.getBigDecimal(2);
        lineNbr = AsoQuotePub.getUILineNumber((OracleConnection) conn, quoteLineId);

        if(attribute1==null||"".equals(attribute1))
        {
          msg.add("Line Flexfield:"+lineNbr+": Warning : Chassis Style is not specified");
        }
      }
    }
    catch(Exception e)
    {
      msg.add("exception in line flexfield validation");
    }
    finally
    {
      if(rs!=null)
        try{rs.close();} catch(Exception e){}
      if(statement!=null)
        try{statement.close();}catch(Exception e){}
    }

    return msg;   
  }
  

   // Returns results table header string
  private static String printTableTitle(String tableName, String[] columnNames, boolean renderExportBtn)
  {
       String tableTitle = "    <tabletitle>\n" +
       "        <group key=\"TABLE1\" title=\""+tableName+"\">\n" ;
       for(int i=0;i<columnNames.length;i++)
       {
         tableTitle = tableTitle +
         "          <attribute key=\"ATTRIBUTE"+(i+1)+"\" title=\""+columnNames[i]+"\" type=\"text\"> </attribute>\n" ;
       }
       tableTitle = tableTitle +
       "          <tablebutton key=\"EXPORT\" title=\"Export\" display=\""+(renderExportBtn?"true":"false")+"\"> </tablebutton>\n" +
       "        </group>\n" +
       "    </tabletitle>\n";

       return tableTitle;
  }


  // Returns QA result data table string
  private static String printTableData(ArrayList resultData)
  {
    String tableData = "<tabledata>\n" +
    "      <group key=\"TABLE1\">\n";
    String record = null;
    for(int i=0; i<resultData.size(); i++)
    {
      record = (String) resultData.get(i);
      StringTokenizer st = new StringTokenizer(record, ":");

      tableData +=    "        <row>\n" ;
      int index = 1;
      while(st.hasMoreElements())
     {
        tableData+="          <attribute key=\"ATTRIBUTE"+index+"\" value=\""+st.nextToken()+"\"> </attribute>\n" ;
        index++;
      }
      tableData += "        </row>\n";
    }
    tableData += "      </group>\n" +
    "  </tabledata>\n";

     return tableData;
  }

  // Returns summary string
  private static String printSummary(boolean errorPage, boolean showPage)
  {
     String summary ="  <summary>\n" +
     "    <attribute key=\"SEVERITY\" value=\""+(errorPage?"Error":"WARNING")+"\" display=\"false\"> </attribute>\n" +
     "    <attribute key=\"MESSAGE\" value=\"Please review the following QA check messages\" display=\"true\"> </attribute>\n" +
     "    <attribute key=\"SHOW_PAGE\" display=\""+(showPage?"true":"false")+"\"> </attribute>\n" +
     "  </summary>\n"  ;
     return summary;
  }

  // Returns page title string
  private static String printPageTitle(String pageTitle)
  {
    String pageTitleStr ="  <pagetitle key=\"PAGETITLE\" value=\""+pageTitle+"\" display=\"true\">  </pagetitle>\n";
    return pageTitleStr;
  }

  // Returns page buttons string
  private static String printPageButtons (boolean renderContBtn, boolean renderDoneBtn)
  {
    String buttonsStr = "<button key=\"CANCEL\" title=\"Cancel\" display=\""+(renderContBtn?"true":"false")+"\">  </button>\n" +
    "<button key=\"DONE\" title=\"Done\" display=\""+(renderDoneBtn?"true":"false")+"\">  </button>\n" +
    "<button key=\"CONTINUE\" title=\"Continue\" display=\""+(renderContBtn?"true":"false")+"\">  </button>\n";

    return buttonsStr;
  }

}

Perform the following steps to use the Java file:

  1. Modify the code to connect to the testing database.

  2. Compile the Java code.

  3. Log in to UNIX environment and copy the class file to $JAVA_TOP/classes/oracle/apps/qot/events/quote folder. Create the folder if it does not exist.

  4. Log in to Oracle Quoting and select the System Administrator or Workflow Administrator Web Applications responsibility.

  5. Enable the business event for create version for a quote.

  6. Setup the subscription for the business event, and specify the following Java rule function: oracle.apps.qot.events.quote.QotQACheckEvent.

Testing the Business Event

Perform the following steps to test the business event:

  1. Log in to the application and select the System Administrator or Workflow Administrator Web Applications responsibility.

  2. Navigate to Workflow: Administrator Workflow and Business Events.

  3. On the Events page, search for oracle.apps.qot.events.quote. business event.

  4. Click the Test icon for your business event.

  5. Specify Event Key as Quote Header ID.

  6. Click the Raise in Java button for Java method or the Raise in PLSQL button for PL/SQL procedure. The information message is displayed for the business event.

Setting up Quote Validations

The quote validation framework provides an infrastructure to include business rule validations. This framework uses the Oracle E-Business Suite workflow technology to automate and streamline quote validations. You can set up the routing of notification requests for quote validations at the quote header and line levels. The results of the quote validations are displayed in the quote lines. Thus, you can track the validation status for each quote line.

Perform the following steps to set up a quote validation:

  1. Use OAF personalization to display the Status column in the Product table of the Update Quote page.

  2. Use OAF personalization to display the Status attribute in the Summary region of the Line Details page.

  3. Customize the Quote Validation Workflow QOTHDVAL as per the business requirements.

  4. Customize the Quote Line Validation subprocess as per the business requirements.

  5. Update the quote status transition from the quote status from where the user will initiate the quote validation to Validation Pending.

  6. Update the quote status transition from Validated to the subsequent quote status.

    Note: Optionally, you can set up a quote status transition from Validation Rejected to Validation Pending and from Validation Canceled to Validation Pending.

  7. Enable the Initiate Validation and Cancel Validation actions in the ASO: Quote Actions in HTML UI lookup.

  8. Add lookup codes to the Quote Line Status lookup for each of the quote line status values you want to track.

    Note: If you create a QOTHDVAL workflow by customizing the workflow as per business requirements, you can change the text in the Meaning field of the QOTHDVAL lookup code in the Validation Workflow Type lookup type.

The following diagram shows the header validation process in Oracle Quoting.

the picture is described in the document text

The following diagram shows the cancel header validation process in Oracle Quoting.

the picture is described in the document text

Purging Quotes

The Purge Quote security function must be assigned to the user who can perform the action of purging quotes. Quotes are purged using the Purge Quote concurrent program. The eligible quotes that can be purged are referenced in the ASO_PURGE_QUOTES table.

The ASO_QUOTE_HOOK.POPULATE_PURGE_QUOTES_TEMP public API is used to identify the quotes to be purged. Customers can write the body for the API as per their business requirements to define the list of quotes to be purged. This API is invoked when the Purge Quote concurrent program is run with the Review Candidate Quotes to be Purged parameter value as Yes.

The ASO_QUOTE_HOOK.POPULATE_PURGE_QUOTES_TEMP public API parameters are described in the Oracle Integration Repository.

Setting up Sales Supplement Templates

Sales Supplement enables the capture of additional quote-specific information that is not sent to Oracle Order Management.

Once setup is complete in Quoting windows, Sales Supplement information is accessible to sales representatives in Quoting pages and windows. In Quoting windows, Sales Supplement functionality is enabled using the profile option ASO: Enable Sales Supplement. In Quoting pages, enable Sales Supplement using OA Personalization.

The basic hierarchy of a Sales Supplement template is as follows:

Component type and Response type are defined in the context of a component-response set. Although there are four component types, only a component type of Question can have associated responses.

Available component types are:

There are seven types of responses:

The response type Predefined Responses is associated with Presentation Styles. There are four Presentation Styles:

You can specify a default value along with the presentation style. The default value is optional except when the presentation style is List of Values.

Default Value and Presentation Style are defined in the context of a section-component mapping to enable use of the same component-response set in different sections of one or more templates.

The following diagram shows the sales supplement structure and process flow.

the picture is described in the document text

Prerequisites

Log in to Oracle Application window with the Quoting Sales Manager responsibility.

Navigate to Quoting, select Setup, then select Sales Supplement.

Notes

Field Behavior

Creating Additional Attachments Document Categories

In Oracle Quoting, Miscellaneous is the default value for the Document Category field when you create an attachment. You can create additional categories as needed.

For more information on setting up attachments, refer to the Oracle E-Business Suite Developer's Guide. For more information on using attachments, refer to Oracle Quoting User Guide or Oracle E-Business Suite User's Guide.

Defining Descriptive Flexfield Information

Descriptive flexfields are blank fields that can be customized on the Oracle Quoting window that enable the application developer to define additional fields as needed. A descriptive flexfield is composed of segments, each of which has a prompt and may have either a valid set of values or data entered by the user.

Note: There are a maximum of 20 flexfields at the quote header level and 20 flexfields at the quote line level.

In Quoting windows, descriptive flexfields are located in the main Quoting window, and in the Pricing view of the Quote Lines tab. They are represented by an unnamed field enclosed in brackets.

In Quoting pages, header level flexfields are located in the Create Quote, Update Quote, and Create Quote from Opportunity pages. Line level flexfields are accessed from the Product Information tab in the Lines page.

For information on setting up and modifying flexfields, refer to the Oracle E-Business Suite Flexfields Guide.

Note: In order for flexfields to exist on the order once the quote becomes an order, the application developer must set up the flexfields identically in Oracle Order Management. Repeat this procedure in the Oracle Order Management application to carry flexfields from quote to order.

Specifying Flexfields

Use the information below to set up flexfields. When you log in to Quoting, you should see the flexfield segments you defined. Additionally, when you place an order, the flexfield information is available on the order.

Log in to Oracle Application window with the Application Developer responsibility.

Navigate to Flexfield, select Descriptive, then select Segments.

Field Behavior

Notes

Reference

Oracle E-Business Suite Developer's Guide

Notes from Opportunities

Notes functionality is provided by Oracle Common Application Calendar. Note types, used to categorize notes, can be mapped to one or more source objects. For example, a note type can be mapped to the source object Sales Opportunity or Sales Lead. If a note type is mapped to a specific source object, it is available only from the source object(s). If a note type is not mapped to any particular source object, it is available from all source objects.

Notes created in Oracle Sales or Oracle TeleSales may have different note types because they may be mapped to a source object specific to opportunities. When a sales representative creates a quote from an opportunity, notes will only be copied if they meet at least one of the following criteria:

For information on setting up and mapping note types, see the Oracle Common Application Calendar Implementation Guide.

Tasks From Opportunities (Pages only)

When sales representatives create tasks, they must specify task types. Task types are used to categorize tasks. Oracle CRM Technology Foundation's tasks functionality enables administrators to create task types as necessary.

Administrators have the option to map task types to source objects. For example, a task type can be mapped to the source object Sales Opportunity or Sales Lead. If a task type is mapped to a specific source object, it is available only from the source object(s). If a task type is not mapped to any particular source object, it is available from all source objects.

Tasks created in Oracle Sales may have different task types because they may be mapped to a source object specific to opportunities. When a sales representative creates a quote from an opportunity, tasks will only be copied if they meet at least one of the following criteria:

For information on setting up and mapping task types, see the Oracle Common Application Calendar Implementation Guide.

Enabling Oracle Quoting Features with OA Personalization (Pages Only)

With OA Personalization, you can customize your Quoting pages interface by adding or removing or moving fields to locations where you are most comfortable. There are also some features in Oracle Quoting pages that must be enabled through OA Personalization. To be able to personalize your UI, set the Personalize Self-Service Defn profile to Yes and the Disable Self-Service Personal profile to No. For more information on OA Personalization, refer the Oracle Application Framework Personalization Guide.

Web Publishing

You must display the fields in the following Quoting sections to enable Web publishing in Quoting pages.

Simple Searches

The following Simple Search quote parameters are not displayed by default. Use OA Personalization to enable them.

Advanced Searches

The following Advanced Search quote parameters are not displayed by default. Use OA Personalization to enable them.

Create Quote

The following quote fields are not displayed by default when you create a quote or a quote from an opportunity. You can enable them using OA Personalization.

Quote Header

The following quote fields in the Quote Header are not displayed by default. Use OA Personalization to display them.

Quote Lines

The following fields in the quote line's Products tab are not displayed by default. You can enable them using OA Personalization.

Products Tab

OA Personalization and Profiles

Some of the features are controlled by profile options can be enabled or disabled through OA Personalization in the Quoting pages. Some of these profiles are applicable only to the Quoting windows.

Using Folder Functionality to Customize Windows

Quoting uses Oracle Applications Folder technology to enable users to customize the following windows:

You can change fields in the following ways:

Once you make changes to an existing folder, you can save the changes to a new folder or the same folder.

Notes

The following table lists fields in each window that you cannot hide.

Fields That Cannot be Hidden
Window Field
Quote Search Quote Number
Customer Search, select Organization Customer
Customer Search, select Person Last Name
Quote Header, select Summary Order Type
Quote Header, select Summary Currency
Quote Header, select Summary Salesperson
Quote Header, select Addresses Address details
Quote Header, select Addresses Address in Billing region
Quote Header, select Addresses Address in Shipping region
Quote Header, select Payment, Shipping Payment Terms
Quote Header, select Payment, Shipping Payment Type
Quote Header, select Tax Tax Handling
Quote Header, select Tax Tax Code
Quote Header, select Tax Amount
Quote Lines, select Pricing Line
Quote Lines, select Pricing Model Status
Quote Lines, select Pricing Product
Quote Lines, select Pricing Qty
Quote Lines, select Pricing UOM
Quote Lines, select Billing Customer
Quote Lines, select Shipping Customer
Quote Lines, select Shipping Requested Date
Quote Lines, select Service Reference Type
Sales Team Full Access
Sales Team Name
Price Adjustments Remove
Price Adjustments Adjustment
Price Adjustments Adjustment Group
Price Adjustments Value
Price Adjustments, select Details (Price Break Header) Required Quantity
Price Adjustments, select Details (Price Break Header) Adjustment Value
Price Adjustments, select Details (for a Promotional Good - qualifying item) Line
Price Adjustments, select Details (for a Promotional Good - qualifying item) Promotional Product
Price Adjustments, select Details (for a Promotional Good - promotional item) Line
Price Adjustments, select Details (for a Promotional Good - promotional item) Qualifying Product
Price Adjustments, select Details (for an Other Item Discount - qualifying item) Line
Price Adjustments, select Details (for an Other Item Discount - qualifying item) Discounted Product
Price Adjustments, select Details (for an Other Item Discount - discounted item) Line
Price Adjustments, select Details (for an Other Item Discount - discounted item) Qualifying Product
Adjust Charges Charge
Adjust Charges Charge Group
Adjust Charges Value
Adjust Charges Charge Amount
Trade In Product Category
Trade In Product Product
Trade In Product Description
Service Reference Category
Service Reference Product
Service Reference Description
Availability Details Line
Availability Details Product

Verify the Implementation

For Oracle Quoting to function properly, you must be able to complete the following tasks successfully:

  1. Create a complex quote.

  2. Create a customer for your quote.

  3. Add and configure a model item.

  4. Before submitting the quote as an order, create a contact for the customer.

  5. Before submitting a quote as an order, create a shipping or billing address for the customer.

  6. Submit the order.

    If the submission process was a success, you receive confirmation from Oracle Order Management.

For information on the procedures necessary to perform these tasks, see the Oracle Quoting User Guide.