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 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:
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.
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:
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:
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 displays this field with USER, if you create a 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 transitions to the following statuses:
Approval Canceled
Approval Rejected
Approved
Store Draft
You cannot create transitions from the following statuses:
Approval Pending
Order Submitted
Store Draft
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
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 version when the user selects the save icon for a quote in the main Quoting window, select the Auto Versioning check box for the new status.
Operating Unit LOV You can set up quote status transitions by operating unit. Select an operating unit using the Operating Unit LOV prior to setting up the quote status transitions.
Allowed Transition to Status region You can enable 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 E-Business Suite User's Guide.
Notes
Login as a System Administrator, navigate to Profile, select System, then select the Find System Profile Values window.
The Return Item button in the Oracle 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 Oracle Quoting and Oracle Sales to disable the Return Item button.
The following predefined responsibilities are available in Oracle Quoting:
Access to Quoting Windows
Quoting Sales Agent
Quoting Sales Manager
This responsibility also gives access to Quoting Setups.
Access to Quoting Pages
Quoting User
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
Login as a System Administrator, navigate to Security, select User, then select Define.
Choose a responsibility for the user from the Responsibility LOV.
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.
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.
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:
Customer Name for a quote and End Customer
Contact Name for a quote, billing, shipping, and end customer
Customer Name for billing and shipping
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.
Use the following procedure to set up the following Quoting parameters.
Default Order Type
Determines how the order is 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
Displays the primary sales representative group when the primary sales representative is obtained 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 obtained 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
Log in to Oracle Application window with the HRMS Manager responsibility.
Navigate to HRMS Manager : Work Structures : Organization, select 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 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
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 is 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 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.
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:
Review the seeded integrator “Quoting – Create Quote”.
Review the seeded layout “Create Quote Layout”.
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.
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 setup 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 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.
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 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:
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 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.
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.
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:
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. The View Margin security function must be assigned to a user responsibility to update the cost for an expense item.
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.
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
Log in to Oracle Application window with the Resource Manager responsibility, and navigate to Resources Manager, select Maintain Resources, then select 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, log in to Oracle Application windows with the Resource Manager responsibility.
Navigate to Resource Manager, select Maintain Resources, then select Group Hierarchy.
Oracle Quoting integrates with Oracle Territory Manager 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 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.
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 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:
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.
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 nonexecutable 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 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.
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.
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:
Specify a template name.
Select Order Capture in the Application field.
Select one of these template types from the drop-down list: RTF or XSL-FO.
In the Data Definition field, specify Quote Printing.
In the Subtemplate field, select No if you are creating a RTF template. For a XSL template, select Yes.
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.
Click Apply.
To duplicate an existing template:
Select Order Capture in the Application field and click Go. All templates are displayed.
Select a template. In the Localized Templates region, click the Download icon to download the source template file.
Modify the template file and save the changes. Use the Return to Templates link to navigate back to the Templates tab.
Select the template and click the Duplicate icon.
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 source template file. Click Apply.
To disable an existing template:
Select Order Capture in the Application field and click Go. All templates are displayed.
Select a template and click Update.
Enter an end date for the template and click Apply.
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.
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:
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.
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.
IBE: Category Set Filter for Product Search
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 enable interMedia search and you run the iStore concurrent program iStore Search Insert, the table IBE_CT_IMEDIA_SRCH is displayed with all category sets available in Inventory (all items). In iStore, use 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 display 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 enables you to specify if items with specific Web statuses are displayed in the iStore search table. This profile is set to Published by default, 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 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:
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 Quoting pages. 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 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.
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 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:
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.
Never create accounts— Accounts are not created.
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 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 |
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 Displaying Default Values.
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.
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.
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.
For information on setting up Approvals functionality, refer to theIntegrating Oracle Quoting With Oracle Approvals Management chapter.
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.
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.
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 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:
Header level billing customer, account, and 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 prehook and posthook for which customers can write code. The prehook 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 billing 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. 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:
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 Application window as an Order Management Super User.
Navigate to Setup, select Credit, then select 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 check box.
Exposure tab
To include the shipping and freight charges on the quote and on not invoiced orders in the credit check calculation, you must select the Freight and Special Charges check box.
To include the tax for the quote and not invoiced orders in the credit check calculation, you must select the Include Tax check box.
Notes
Follow the procedure described in the Oracle Order Management Implementation Manual for complete information on defining credit check rules.
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:
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 displays 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 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.
To implement user hooks, you must:
Display the JTF_USER_HOOKS table
Enable User Hooks
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.
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 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. |
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 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:
Use OAF personalization to display the Status column in the Product table of the Update Quote page.
Use OAF personalization to display the Status attribute in the Summary region of the Line Details page.
Customize the Quote Validation Workflow QOTHDVAL as per the business requirements.
Customize the Quote Line Validation subprocess as per the business requirements.
Update the quote status transition from the quote status from where the user will initiate the quote validation to Validation Pending.
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.
Enable the Initiate Validation and Cancel Validation actions in the ASO: Quote Actions in HTML UI lookup.
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 following diagram shows the cancel header validation process in Oracle Quoting.
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.
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:
Sales Supplement templates can be associated with a specific application, enabling 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
Text box — Supports medium length text entries of up to 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
Check Box
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.
Prerequisites
In order for users to view the information you set up in this window in Quoting, you must enable Sales Supplement by setting the profile option ASO: Enable Sales Supplement to Yes.
Log in to Oracle Application window with the Quoting Sales Manager responsibility.
Navigate to Quoting, select Setup, then select 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, Text Box, 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, Check Box, 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.
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.
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.
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
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 E-Business Suite 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 predefined 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 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:
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 predefined 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 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.
OA Personalization is applicable only in Oracle Quoting pages.
Sometimes, Oracle windows launches the Quoting pages interface for particular features like the Print Quote functionality. If personalizations are set at the Responsibility level, the behavior may be different between Quoting windows and pages.
You must display the fields in the following Quoting sections to enable Web publishing in Quoting pages.
Simple or Advanced Search
Display Web Published search criteria
Display the Assistance Requested and Assistance Reason columns
Views or Simple or Advanced Search
Display Web Published in the search results table
Display Web Published in the quote details
Display the Assistance Requested and Assistance Reason columns in the quote details
Saved Search
Display Web Published in the Available Columns shuttle
Display Web Published in Column Name LOV
Display Web Published in the Add another LOV
Display the Assistance Requested and Assistance Reason columns
Update Quote page
Display 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 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 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.
Quoting uses Oracle Applications Folder technology to enable users to customize the following windows:
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 or 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 window.
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 E-Business Suite User's Guide.
The following table lists fields in each window that you cannot hide.
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 |
For Oracle Quoting to function properly, you must be able to complete the following tasks successfully:
Create a complex quote.
Create a customer for your quote.
Add and configure a model item.
Before submitting the quote as an order, create a 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.