This chapter covers the following topics:
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:
Modify tasks and notes
Change the quote status, as long as the transition is valid
Publish or unpublish a quote, if publishing is enabled and the quote satisfies publishing criteria
Modify payment information, prior to submission of order
Add and remove attachments; you cannot replace existing attachments
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:
The application administrator cannot remove the status from the system.
The application administrator cannot change any attribute of the status except the name appearing in the status list of values
Oracle Quoting is delivered with predefined quote statuses. You can define new quote statuses to reflect your business processes. But you cannot modify seeded 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 seeded 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. Allows iStore to have a Draft to Order flow that is separate from Quoting. | No |
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 | Could be used to show that the quote was presented to a customer. | No |
Lost | Could be used to show that the customer declined/rejected the quote. | No |
Problem | Could be 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 | Could be used to show that the quote was reviewed internally. | No |
The statuses Contract Canceled, Contract Pending, Contract Required, Ordered and Entered are obsolete. They still appear in the Quote Status setup form but they will be locked. You will not be able to create any transitions to them, nor can you enable them.
Note: If you designated a quote status as read-only in a previous release of Oracle Quoting, it will not be overwritten in this release, regardless of the out-of-box designation. For example, if you defined the status Lost as read-only in release 11.5.6, it will remain read-only in this release.
Status transitions are regulated to prevent accidental changes, such as reverting an ordered quote status back to a non-ordered status.
Not all transitions are seeded. You may have to set up certain transitions to use additional functionality. For example, the status transition Draft to Inactive is not seeded but is necessary to inactivate quotes.
Note: You cannot set up a transition from a status to itself.
The following table shows the seeded transition rules for quote status changes.
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 seeded 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 two values:
User — Displays USER if a transition to that state can be done from either the user interface or application. For example, you can change the status using a LOV, Quoting automatically populates this field with USER, if you create a new status transition.
Application — Displays APPLICATION if a transition can only be triggered by an event occurring in the application, for example, placing an order.
You cannot create new transitions to the following statuses:
Approval Canceled
Approval Rejected
Approved
Store Draft
You cannot create new transitions from the following statuses:
Approval Pending
Order Submitted
Store Draft
To set up quote statuses, log in to Oracle Forms as a Quoting Sales Manager and navigate to the Quote Status Setup window from Oracle Quoting > Setup > Quote Status.
Field Behavior
Code This is the internal name and is not seen by the user.
A user can fully update a quote in read-only status if the system administrator sets the profile option ASO: Status Override to Yes for that specific user. The user must have update access to the quote.
To create a new version when the user selects the save icon for a quote in the main Quoting form, check the Auto Versioning box for the new status.
Allowed Transition to Status region You can allow transitions to multiple statuses.
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 Applications User’s Guide.
Notes
Log in to Oracle Forms as a Systems Administrator, and navigate to Profile > System > Find System Profile Values window.
The "Return Item" button within the iStore application can be enabled or disabled in Oracle Quoting by setting the profile option, IBE: Use Returns. Set the profile option to No for applications "Oracle Quoting" and "Oracle Sales" to disable the "Return Item" button.
The following Oracle Quoting seeded responsibilities are available:
Access to Forms Quoting
Quoting Sales Agent
Quoting Sales Manager
This responsibility also gives access to Quoting Setups.
Access to HTML Quoting
Quoting User
Note: To create your own responsibilities, assign the menu QOT_QUOTE_ROOT to the responsibility.
To assign the Quoting HTML seeded responsibility (Quoting User) to a user:
Prerequisites
The user must be set up as an application user.
Notes
Login to Oracle Forms as a System Administrator, and navigate to Security > User > Define.
Choose a responsibility for the user from the Responsibility LOV.
To modify the seeded Lookup Types (QuickCodes), login to Oracle Forms as Quoting Sales Manager.
Navigate to Quoting > Setup > Quick Codes.
For a complete list of the seeded lookup types in Oracle Quoting, refer to Appendix D, "Seeded Lookup Types".
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 set up 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.
HZ: Default Party Type
HZ: Enable DQM Party Search
HZ: Match Rule for Organization Simple Search
HZ: Match Rule for Organization Advanced Search
HZ: Match Rule for Organization Duplicate Prevention
HZ: Match Rule for Person Simple Search
HZ: Match Rule for Person Advanced Search
HZ: Match Rule for Person Duplicate Prevention
If the profile ASO: Enforce Account Relationships is set to No, DQM is used by Oracle Quoting to search for:
Quote To Customer and End Customer
Quote To, Bill To, Ship To End Customer contact
Bill To and Ship To Customer
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.
The operating unit-specific profiles have been obsoleted and are replaced by the corresponding Operating Unit-specific parameters. Use the following procedure to set up the following Quoting parameters. See the Obsoleted Profiles section to view the profiles.
Default Order Type
Determines how the order will be processed in Oracle Order Management. Order types are set up in Oracle Order Management.
Default Salesrep
Provides a default sales representative on the quote, if the logged-in user is not a valid sales representative. If you are integrating with Oracle Territory Manager, setting this parameter is mandatory.
Default Sales Group
Populates the primary sales representative group when the primary sales representative defaults from the Quoting parameter Default Salesrep. This group must be a sales group with the usage "Sales and TeleSales". Ensure that the selection is valid for the sales representative selected in the Default Salesrep parameter.
Default Sales Role
Determines the initial role assignment for the primary salesperson defaulted from the Default Salesrep Quoting parameter. Valid values are all roles for the resource selected in the Default Salesrep parameter, of role type Sales, TeleSales, and Partners Relationship Management.
If this parameter has no specified value, Quoting will use the first role found for the resource.
Default Contract Template
Determines the default contract template for standard contract terms to be included on a quote.
Steps
Login to Oracle Forms with the HRMS Manager responsibility.
Navigate to HRMS Manager : Work Structures : Organization > Description
In the Find Organization dialog box, specify the operating unit for which you want to set the parameters in the Name field.
For Organization Classification Name, select Operating Unit.
Click Find.
From the Organization Classifications section, select Operating Unit.
Ensure that the Enabled checkbox is selected.
Click Others.
From the Additional Organization Information dialog box, select Quoting Parameters.
Click inside 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
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.
Click OK to save your changes.
You must perform the above procedure to set the Quoting parameters for each operating unit in your organization.
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
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 defaults to the last day of the current quarter.
Alternatively, you can set the default quote expiration date so that quotes expire after a fixed number of days. The fixed number of days defaults 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.
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:
Product
Quantity
UOM
Period, duration, and start date only for service products
The set up steps are as follows:
User must have access to the Setup: Template Administrator function.
You must enable the Create Template action for the ASO: Quote Actions in HTML UI lookup type.
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.
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 overrideable 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 Pricing User’s Guide.
In the Quoting Forms interface, users can select manual adjustments from the Price Adjustment form. Bucket numbers will be displayed on this form as well, so that sales representatives can see the buckets before applying manual modifiers.
In the HTML UI, 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.
Multi-currency price lists simplify pricing setup if you are selling products to customers in multiple countries. Multi-currency price lists make it easier to quote to customers in multiple regions of the world at the same time.
To use multi-currency 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 multi-currency 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 Manual for more information.
You must also run the concurrent program Update Price Lists with Multi-Currency Conversion Criteria to enable multi-currency 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 multi-currency price lists. After this, you should not try to disable multi-currency price list functionality. Changing the profile back to No may cause undesired results if conversion criteria have been 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 multi-currency 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 multi-currency is turned on, the LOV behavior is as follows:
Additionally, in the Forms UI, 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 ASO: Price List Override profile is not applicable in the HTML UI. Instead, you can achieve the same functionality in the HTML UI by enabling/disabling the Price List and Currency LOVs using OA Personalization.
You must set up a price list with a conversion list to use multi-currency price lists. Price lists and multi-currency 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.
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 set up restrictions apply to promotional goods:
A promotional good cannot be a service
A promotional good cannot have a service attached to it.
A promotional good cannot be a configuration component.
A promotional good cannot be restricted based on setting up promotional limits.
The qualifying product for a promotional good cannot be a service and have a service reference to the promotional good.
If using promotional goods, the profile option IBE: Calculate Price should be set to No. Otherwise, repricing could cause unintended consequences.
Line level modifiers will be applied to the promotional good line only if defined in a pricing phase with the Freeze Override flag enabled.
Promotional good modifier discounts cannot be applied to model subcomponents.
Pricing attributes cannot be used to derive the list price of a 'free' good.
In the Get Product List for a promotional good modifier line, the price list’s currency must match the modifier currency.
Items set up as promotional goods should be eligible for addition to the quote.
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.
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.
If you want all users to have access to Oracle Quoting when security is enabled, they must be set up 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.
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.
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 .
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.
Notes
Login to Oracle Forms with the Resource Manager responsibility, and navigate to Resources Manager > Maintain Resources > Groups.
If you are defining group hierarchies, set up the Parent group first. For information on setting up groups, see the Oracle Trading Community Architecture User Guide.
Select Sales and TeleSales as the applications in the Used In tab.
To verify that you have set up your groups correctly, login to Oracle Forms with the Resource Manager responsibility.
Navigate to Resource Manager > Maintain Resources > Group Hierarchy.
Oracle Quoting integrates with Oracle Territory Manager to allow you to enable automatic sales team assignment for quotes. Sales teams are assigned based on:
Customer
Geography
Product
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/projected commission functionalities, 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.
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.
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.
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.
The layout of the printout will be 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:
Upload the RTF template and the XSL included/sub-template using the XML Publisher Administrator responsibility. Refer the Customizing the XML Publisher Report for more information.
Set the profile option ASO: Default Layout Template to the value corresponding to a valid RTF template name that you uploaded.
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:
Customize the report title.
Two customizable FND messages are registered for the print quote report, one for non-executable quotes and one for executable quotes. The message names are:
ASO_PQUOTE_EXEC_TITLE
ASO_PQUOTE_NONEXEC_TITLE
Customize the disclaimer.
If a quote is non-executable, 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.
Replace the default logo given at the top left corner of the header region in the RTF template with your logo (.gif image file).
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.
Select Order Capture in the Application field and click Go.
Select Quote Data Template.
In the Files section, click the data template file (ASOPRTDT.xml) link to download the file.
Save the ASOPRTDT.xml file on your local drive.
Add the custom columns to be added in the respective query section of the ASOPRTDT.xml file.
Define the custom columns in the Data Structure section of the respective group of the ASOPRTDT.xml file and save the changes.
Click Update File. Provide the path to the modified ASOPRTDT.xml file and click Apply.
Bounce the Apache Server.
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.
Select Order Capture in the Application field and click Go.
Select the Default Quote Printout template.
Click the Download icon to download ASOPRTRTF.rtf.
Add custom fields to the ASOPRTRTF.rtf file and save the changes.
Use the Return to Templates link to navigate back to the Templates tab.
Select the Default Quote Printout template and click the Duplicate icon to create a duplicate of this template.
In the Copy Template page, specify these details for the template: code, name and application. Click Apply.
Query for the new template in the Templates tab. Select the template to view its details.
Click the Update icon in the Localized Templates section and specify the path to the modified RTF file. Click Apply.
Bounce the Apache Server.
ASOPRTRTF.rtf can be modified and should not be renamed to custom file name.
To add or disable templates, log in to Self Service Applications with the XML Publisher Administrator responsibility.
Navigate to Home > Templates.
Field Behavior
Application
Select Order Capture.
Type
This is the type of template you want to create. Choose RTF or XSL-FO.
Data Definition
Select Quote Printing.
Subtemplate
If you have chosen to create a RTF template, select No. For a XSL template, select Yes.
For a XSL template, select the XSL file from your computer, and the corresponding language.
Territory
Leave this field blank to make the template territory independent
Notes
To disable a template, enter an end date for the template.
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 - HTML 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 subtotaling 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. Oracle Quoting does not expose product categories in the UI, so users will not know that it is the same product in different categories.
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 Forms UI, 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 HTML UI, enable the Submission Options field using OA Personalization.
There are two fields in the Quoting UI using which you can opt to price/tax a quote manually or automatically for individual quotes. The fields are Price Calculation and Tax Calculation in the HTML UI and Automatic Pricing and Automatic Tax in the Forms UI. 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:
Scenario | Field in- HTML UI: Price Calculation Forms UI: Automatic Pricing |
Field in- HTML UITax Calculation Forms UI: Automatic Tax |
Forms UI- ASO: Enable Batch Processing Setting | HTML UI- 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.
Oracle Quoting supports the use of interMedia search against the Product Catalog. Two Oracle iStore profile options affect the behavior of Quoting searches with interMedia enabled.
IBE: Category Set Filter for Product Search
Currently, when you execute a search, Quoting derives the category set for the search from either the profile option ASO: Category Set or from the category set mapped to the OM functional area in Inventory. If you are enabling interMedia search and you run the iStore concurrent program iStore Search Insert, the table ibe_ct_imedia_srch is populated with all category sets available in Inventory (all items). Depending on the amount of records, this could be a potentially harrowing process. Therefore, iStore has introduced the profile IBE: Category Set Filter for Product Search. It is recommended, for performance benefits, that you select the same category set for this profile and the profile ASO: Category Set (at the Site level), thereby limiting the number of records that populate the table to only those in the specified category set.
IBE: Web Status Filter for Product Search
In Inventory, there is a Web Status flag that indicates if an item is web enabled, and if it can be web published. Unlike iStore, Quoting does not require that all items have the statuses Published or Unpublished. The profile IBE: Web Status Filter for Product Search allows you to specify if items with specific web statuses are populated in the iStore search table. This profile defaults to Published, and if null, is treated as Published. Therefore, if you want Quoting searches to continue with existing behavior, you must set the profile option ASO: Web Status Filter for Product Search to ALL at the Site level.
For more information about the iStore profile options, see the Oracle iStore Release Notes, Part # B12241-01.
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 Forms Quoting:
Set the ASO: Enable Intermedia Search profile option.
See Profiles in Oracle Quoting for more information.
Run the concurrent program iStore Search Insert.
Note: Only interMedia Search is supported in HTML Quoting. Hence, it is enabled by default.
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:
You add multiple products that are not available in the search table
You want to purge all data from the search table
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 cannot have more than one iStore Search Insert concurrent request instance running at one 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 Forms with the iStore Concurrent Programs responsibility. Navigate to iStore Concurrent Programs > Concurrent Request window.
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.
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 allows you to determine at which point an account must be created. Account creation is based on the ASO: Auto Account Creation profile. 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:
Always create accounts— Accounts are created for customers when the quote is saved.
Create accounts as necessary— Accounts are created only when a quote is web published or when a quote is converted into an order.
Create accounts only when Place Order— Accounts are created only when the quote is converted into an order.
For more information on the profile options, see Appendix A, "Profiles in Oracle Quoting".
The following table shows the behavior of Oracle Quoting based on the setting of this profile option.
Profile Option Setting | Create Sold-To | Select Sold-To | Create Ship-To/Bill-To/End Customer | Select Ship-To/Bill-To/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 | Throw error if any customers on quote do not have accounts | Create account for all customers on quote without an account |
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.
Set the ASO: Configuration Effective Date profile option to validate the configuration for the following flows:
Change quantity for the top level model configuration
Change quantity for a component of a model configuration
Delete component of a model configuration
Split Quote Line
Manual validation of model configuration
Place order with status as Entered
Set the ASO: Configuration Effective Date profile option to configure effective and lookup dates for the model item for the following flows:
Launch Configurator UI for a top level model in a quote
Launch Configurator UI for a top level model in a quote template
Set the ASO: Copy Configuration Effective Date profile option to configure effective and lookup dates for the copied model configuration for the following flows:
Copy Quote
Version Quote
Copy Quote Line
Apply quote template to a quote
Create quote template from a quote
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 Defaulting.
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 Forms and HTML interfaces of Oracle Quoting.
Web publishing functionality allows 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.
For information on setting up Approvals functionality, refer to the"Integrating Oracle Quoting With Oracle Approvals Management" chapter.
For all information regarding setting up ATP in Oracle Quoting, refer the Oracle Global Order Promising Implementation Guide and the Oracle Configure to Order Process Guide.
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.
Oracle Quoting allows 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. See Appendix A, "Profiles in Oracle Quoting" for more information.
Oracle Quoting provides a public API for credit checking: ASO_CREDIT_CHECK_PUB.CREDIT_CHECK. The following information is mandatory for the public API:
Header level bill-to customer, bill-to account, and bill-to address
Credit Check Rule
Quote Total
Quote Currency
The credit check API consists of two sections:
Internal credit check—This is based on the Oracle Order Management public API.
External credit check—The public credit checking API in Oracle Quoting provides a pre-hook and post-hook for which customers can write configurable code. The pre-hook is executed prior to the internal credit check and the post-hook is executed after the internal credit check. Quoting customers can use these hooks to invoke the external credit checking.
Oracle Quoting supports the use of internal credit checks. Internal Credit Checks are based on:
Transaction data in the quote
Historic transaction data in Oracle Order Management and Oracle Receivables
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:
Ensure that the customer is enabled for credit checks.
See the Oracle Receivables User Guide for more information.
Set credit limits.
In Oracle Receivables, you can set up overall credit limits and order credit limits. These limits can be set on two levels: customer and site. Site level, which pertains to the bill-to address, takes precedence over the customer level limit, if both are set. See the Oracle Receivables User Guide for more information.
Define credit check rules in Oracle Order Management.
Define credit checking rules to help determine credit worthiness of customers and to specify if freight and special charges are included during credit checks.
For more information, see the Oracle Order Management Implementation Manual.
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. See Appendix A, "Profiles in Oracle Quoting" for more information.
The credit check rule definition allows 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:
Include Freight and Special Charges — If set, the quote total passed to the API includes shipping and freight charges. If not set, the quote total excludes shipping charges and freight charges.
Include Tax — If set, the quote total passed to the API includes the total tax amount. If not set, the quote total excludes tax.
Log in to Oracle Forms as an Order Management Super User.
Navigate to Setup > Credit > Define Credit Check Rules
Field Behavior
Options tab
Credit Check Level - Select Sales Order
Credit Hold Level - Select Sales Order
Select the Send Hold Notifications checkbox.
Exposure tab
To include the shipping and freight charges on the quote and on uninvoiced orders in the credit check calculation, you must select the Freight and Special Charges checkbox.
To include the tax for the quote and uninvoiced orders in the credit check calculation, you must select the Include Tax checkbox.
Notes
Follow the procedure described in the Oracle Order Management Implementation Manual for complete information on defining credit check rules.
External credit checks are configurable by the application developer and allows users to make calls to non-Oracle applications. The credit check can be configured by writing code for the pre-hook and post-hook in the Quoting public API, ASO_CREDIT_CHECK_PUB.CREDIT_CHECK. The pre-hook is executed prior to the internal credit check and the post-hook 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:
asocruhk.sql — The Populate Script populates data into the JTF_USER_HOOKS table. This script is run automatically.
asoenuhk.sql — The Enabling Script enables or disables the user hook based on the parameter passed. You must execute this script.
This script populates the following user hooks in the JTF_USER_HOOKS table:
Customer Pre Hook
Customer Post Hook
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 within 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.
To implement user hooks, you must:
Populate the JTF_USER_HOOKS table
Enable User Hooks
Disable User Hooks
Populating the JTF_USER_HOOKS table
The Populate script automatically runs against the database, when you install the patch, and populates the JTF_USER_HOOKS table.
To enable user hooks:
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.
Enter each parameter. For enabling user hooks with the ENABLE parameter, the value should be Y.
You must implement the hook package when the corresponding hook is enabled.
To disable user hooks:
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.
Enter each parameter. For disabling the user hook with the ENABLE parameter, the value should be N.
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:
Log in to the application and select the System Administrator or Workflow Administrator Web Applications responsibility.
Navigate to Workflow: Administrator Workflow and Business Events.
Enable the business events for which the QA check must be executed. The business event names are prefixed with oracle.apps.qot.events.quote.
Enable the oracle.apps.qot.events.quote.group.pre event group if you are going to write a subscription for the event group.
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.
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:
Enable QA Check lookup code in ASO : Quote Actions in HTML UI (ASO_QUOTE_ACTION) lookup.
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.
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).
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 will be 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 MS-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”. |
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:
Modify the code to connect to the testing database.
Compile the Java code.
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.
Log in to Oracle Quoting and select the System Administrator or Workflow Administrator Web Applications responsibility.
Enable the business event for create version for a quote.
Setup the subscription for the business event, and specify the following Java rule function: oracle.apps.qot.events.quote.QotQACheckEvent.
Perform the following steps to test the business event:
Log in to the application and select the System Administrator or Workflow Administrator Web Applications responsibility.
Navigate to Workflow: Administrator Workflow and Business Events.
On the Events page, search for oracle.apps.qot.events.quote. business event.
Click the Test icon for your business event.
Specify Event Key as Quote Header ID.
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.
The Purge Quote security function is assigned to a user for 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. This API is invoked when the Purge Quote concurrent program is run with the Review Candidate Quotes to be Purged parameter value as Yes. Customers can customize the API for defining the list of quotes to be purged.
The ASO_QUOTE_HOOK.POPULATE_PURGE_QUOTES_TEMP public API parameters are described in the Oracle Integration Repository.
Sales Supplement allows the capture of additional quote-specific information that is not passed into Oracle Order Management.
Once setup is complete in the Forms UI, Sales Supplement information is accessible to sales representatives in the HTML and Forms UIs. In the Forms UI, Sales Supplement functionality is enabled using the profile option ASO: Enable Sales Supplement. In HTML UI, enable Sales Supplement using OA Personalization.
The basic hierarchy of a Sales Supplement template is as follows:
Sales Supplement templates can be associated with a specific application, allowing users to query for templates based on application.
A template contains one or more sections. Within each section is a component-response set. For example, if the template is a questionnaire, within each section there is a related set of questions and predefined responses.
Note: You cannot delete templates, sections, components, or responses.
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:
Note
Header
Footer
Question
There are seven types of responses:
Predefined Responses — Supports user selection from predefined text
Text — Supports end user input
Currency — Supports end user input
Number — Supports end user input
Date — Supports end user input
Textbox — Supports medium length text entries of upto 10 lines with 100 characters in each line.
File Attachment — Supports association of file attachments.
The response type Predefined Responses is associated with Presentation Styles. There are four Presentation Styles:
List of Values
List of Values With Blank
Radio Group
Checkbox
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 allow 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.
Prerequisites
In order for users to view the information you set up in this form in Forms Quoting, you must enable Sales Supplement by setting the profile option ASO: Enable Sales Supplement to Yes.
Log in to Oracle Forms with the Quoting Sales Manager responsibility.
Navigate to Quoting > Setup > Sales Supplement.
Notes
Sales Supplement templates are created in reverse order, beginning with the responses and ending with the template. You must manually query each tab, as the tabs are not automatically queried. Each tab behaves as a standalone tab and therefore, you must save your work in each tab.
Templates can be applied at the header, line, or header and line levels. The default value is Quote Header and Line. You can designate default templates for header and line levels based on the profile options ASO: Default Header Level Sales Supplement Template and ASO: Default Line Level Sales Supplement Template.
Field Behavior
Components tab
The Response Type field is enabled only if the Type is Question. The following response types are available: Text, Number, Date, Currency, Textbox, File Attachment, and Predefined Responses. The Responses are enabled only if the Component Type is Question and Response Type is Predefined.
Sections tab
If you select a component type of Question that has predefined responses, you can designate a presentation style such as a Radio Group, Checkbox, List of Values, or List of Value with Blank.
Template tab
The Application's list of values are based on the FND lookup ASO_SUP_TEMPLATE_CONTEXT.
Oracle Quoting currently supports one document category, Miscellaneous. This is the default for the Document Category field when you create a new attachment. You can create additional categories as needed.
For more information on setting up attachments, refer to the latest release of the Oracle Application Developer’s Guide. For more information on using attachments, refer to Oracle Quoting User Guide or Oracle Applications User’s Guide.
Descriptive flexfields are customizable, blank fields on the Oracle Quoting form that allow 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 the Forms UI, descriptive flexfields are located in the main Quoting form, and in the Pricing view of the Quote Lines tab. They are represented by an unnamed field enclosed in brackets.
In the HTML UI, 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 Applications 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.
Use the information below to setup flexfields. When you log in to Quoting, you should see the flexfield segments you defined. Additionally, when you place an order, the flexfield information will be available on the order.
Log in to Oracle Forms with the Application Developer responsibility.
Navigate to Flexfield > Descriptive > Segments.
Field Behavior
Application
Query for Order Capture
Title
For header flexfields, query for Header%
For line flexfields, query for Lines%
Segments
Set up flexfield segments and map the segments to attributes
Notes
Set up flexfields for the Oracle Order Management application, Additional Header Information Title exactly as you did for Oracle Order Capture.
Reference
Oracle Application Developer’s Guide
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:
Note type is available to all possible sources—The note type was not mapped to a particular object.
Note type is available to the seeded source object Quoting—The CRM Administrator mapped the note type to the Quoting source object (ASO_QUOTE).
For information on setting up and mapping note types, see the Oracle Common Application Calendar Implementation Guide.
When sales representatives create tasks, they must specify task types. Task types are used to categorize tasks. Oracle CRM Technology Foundation’s tasks functionality allows 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:
Task type is available to all possible sources—The task type was not mapped to a particular source object.
Task type is available to the seeded source object Quoting—The CRM Administrator mapped the task type to the Quoting source object (ASO_QUOTE).
For information on setting up and mapping task types, see the Oracle Common Application Calendar Implementation Guide.
With OA Personalization, you can customize your Quoting HTML interface by adding/removing/moving fields to locations where you are most comfortable. There are also some features in Oracle Quoting HTML UI that must be enabled via 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 Applications Framework Personalization Guide.
OA Personalization is applicable only in the HTML interface of Oracle Quoting.
Sometimes, Oracle Forms launches the Quoting HTML interface for particular features like the Print Quote functionality. If personalizations are set at the Responsibility level, the behavior may be different between Forms and HTML Quoting.
You must expose the fields in the following Quoting sections to enable web publishing in Quoting HTML.
Simple/Advanced Search
Expose Web Published search criteria
Expose the Assistance Requested and Assistance Reason columns
Views/Simple/Advanced Search
Expose Web Published in the search results table
Expose Web Published in the quote details
Expose the Assistance Requested and Assistance Reason columns in the quote details
Saved Search
Expose Web Published in the "Available Columns" shuttle
Expose Web Published in "Column Name" LOV
Expose Web Published in the "Add another" LOV
Expose the Assistance Requested and Assistance Reason columns
Update Quote page
Expose Web Published
The following Simple Search quote parameters are not displayed by default. Use OA Personalization to enable them.
Quote Number
Account Number
Primary Salesperson
Expiration Date From
Expiration Date To
The following Advanced Search quote parameters are not displayed by default. Use OA Personalization to enable them.
Web Published
Assistance Requested
Assistance Reason
The following quote fields are not displayed by default when you create a fresh quote or a quote from an opportunity. You can enable them using OA Personalization.
Status
Address
Quote Number
Price Calculation
Tax Calculation
The following quote fields in the Quote Header are not displayed by default. Use OA Personalization to display them.
Pricing Request
Web Published
Assistance Requested
Assistance Reason
Price Calculation
Tax Calculation
Address
The following fields in the quote line's Products tab are not displayed by default. You can enable them using OA Personalization.
Products Tab
Long Description
Discount Amount
Total Charges
Line Category
Line Type
Instance Name
Charge Periodicity
Some of the features that were controlled by profile options can now be enabled/disabled via OA Personalization in the HTML UI. Some of these profiles have been obsoleted altogether, and the others are applicable only to the Forms UI. See the "remarks" in the Oracle Quoting Obsoleted Profiles section and the "notes" in the description of the profiles for more information.
Forms Quoting uses Oracle Applications Folder technology to allow users to customize the following forms:
Quote Customer Search
Quote Search
Quote Header
Quote Lines
Sales Team
Price Adjustments
Adjust Charges
Trade-In Product
Availability Details
You can change fields in the following ways:
Hide/Show
Move fields
Change field size
Rename Prompt
Once you make changes to an existing folder, you can save the changes to a new folder or the same folder.
Notes
Use the Folder menu to customize the form.
For information on hiding or showing a field, changing a prompt, changing the length of a field, moving a field, or saving a folder configuration, see the Oracle Application User’s Guide.
The following table lists fields in each form that you cannot hide.
Form | Field |
---|---|
Quote Search | Quote Number |
Customer Search > Organization | Customer |
Customer Search > Person | Last Name |
Quote Header > Summary | Order Type |
Quote Header > Summary | Currency |
Quote Header > Summary | Salesperson |
Quote Header > Addresses | Quote To Address Details |
Quote Header > Addresses | Bill To Address Details |
Quote Header > Addresses | Ship To Address Details |
Quote Header > Addresses | Default From Quote To (Bill To) |
Quote Header > Addresses | Default From Quote To (Ship To) |
Quote Header > Addresses | Bill To Customer |
Quote Header > Payment, Shipping | Payment Terms |
Quote Header > Payment, Shipping | Payment Type |
Quote Header > Tax | Tax Handling |
Quote Header > Tax | Tax Code |
Quote Header > Tax | Amount |
Quote Lines > Pricing | Line |
Quote Lines > Pricing | Model Status |
Quote Lines > Pricing | Product |
Quote Lines > Pricing | Qty |
Quote Lines > Pricing | UOM |
Quote Lines > Bill To | Customer |
Quote Lines > Ship To | Customer |
Quote Lines > Shipping | Requested Date |
Quote Lines > 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 > Details (Price Break Header) | Required Quantity |
Price Adjustments > Details (Price Break Header) | Adjustment Value |
Price Adjustments > Details (for a Promotional Good - qualifying item) | Line |
Price Adjustments > Details (for a Promotional Good - qualifying item) | Promotional Product |
Price Adjustments > Details (for a Promotional Good - promotional item) | Line |
Price Adjustments > Details (for a Promotional Good - promotional item) | Qualifying Product |
Price Adjustments > Details (for an Other Item Discount - qualifying item) | Line |
Price Adjustments > Details (for an Other Item Discount - qualifying item) | Discounted Product |
Price Adjustments > Details (for an Other Item Discount - discounted item) | Line |
Price Adjustments > 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 |
You must be able to complete these tasks successfully, or Oracle Quoting will not work properly.
Create a complex quote.
Create a new customer for your quote.
Add and configure a model item.
Before submitting the quote as an order, create a new contact for the customer.
Before submitting a quote as an order, create a shipping or billing address for the customer.
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.