Search Results g_debug_engine




Overview

QP_PREQ_GRP is the core pricing engine group package within the Oracle Advanced Pricing module of Oracle E-Business Suite. Its primary business function is to process and evaluate price requests (pricing and modifier requests) raised by calling applications during the pricing of a transaction line. In the context of both EBS 12.1.1 and 12.2.2, the package acts as the orchestration layer of the pricing engine, resolving qualifiers, applying price lists, and determining the applicable modifiers (discounts, surcharges, promotions) that ultimately derive a selling price for a given item, customer, and context.

The package maintains substantial in-memory state through package-level global variables and PLS_INTEGER-indexed associative arrays (such as the pricing type, line category, attribute level, and grouping number tables). This design supports the high-volume, iterative evaluation of qualifier groups without repeated context switching to the database, a critical performance consideration for order capture and quoting flows.

Key Procedures and Functions

The documentation lists 21 procedures and functions. The principal entry point is PRICE_REQUEST, which drives the overall pricing evaluation for a request. POPULATE_OUTPUT materializes the results of the engine's evaluation into the output structures returned to the calling application. ENGINE_DEBUG and SET_QP_DEBUG relate to the debugging and diagnostic instrumentation of the engine, which is directly relevant to the "g_debug_engine" search term — these routines provide the mechanism by which the engine emits debug information during evaluation. GET_VERSION returns the package header version string (QPQXGPREB.pls) used for patch-level identification.

A cluster of routines supports assembling and persisting intermediate pricing lines and their attributes: INSERT_LINES2, INSERT_LINE_ATTRS2, INSERT_LDETS2, and INSERT_RLTD_LINES2 insert line, line-attribute, line-detail, and related-line records respectively into the engine's intermediate structures. GET_LINE_DETAIL_INDEX retrieves the index identifying a specific line detail. POPULATE_SEGMENT_ID, POPULATE_PAT_TEMP_TABLES, and POPULATE_TEMP_TABLES_NEQ_BTW populate segment identifiers and working temporary tables used for pattern (qualifier) matching. CREATE_PATTERN and SELECT_MODIFIERS_PATRN are responsible for constructing and matching qualifier patterns against modifier definitions. QP_EVALUATE_OTHER_OPERATORS applies comparison operators during qualifier evaluation. UPDATE_ROUNDING_FACTOR adjusts monetary results according to configured rounding rules.

Tables Accessed

The package reads and writes a focused set of pricing and reference tables through APPS synonyms. Setup and qualifier data are drawn from QP_LIST_HEADERS_B, QP_LIST_HEADER_PHASES, QP_ATTRIBUTE_GROUPS, QP_EVENT_PHASES, QP_CURRENCY_DETAILS, and QP_LIMIT_TRANSACTIONS, which together define price lists, modifier lists, their phases, attribute group structure, and transaction-based pricing limits. Customer hierarchy context is resolved via HZ_HIERARCHY_NODES. The intermediate working tables QP_INT_LINES_T, QP_INT_LINE_ATTRS_T, QP_INT_LDETS_T, and QP_INT_RLTD_LINES_T hold transient line-level results during evaluation. Sequence QP_LIMIT_PRICE_REQUEST_CODE_S generates identifiers. Flexfield and installation configuration are validated using FND_DESCR_FLEX_COLUMN_USAGES, FND_FLEX_VALUE_SETS, and FND_PRODUCT_INSTALLATIONS.

Usage Notes

QP_PREQ_GRP is not typically invoked directly by end users. It is called programmatically by the pricing engine and related modules during order entry, quoting, and any transaction requiring price derivation. The ETRM metadata records that the package is referenced by 97 other packages, confirming its role as a heavily reused internal component. Custom code seeking to invoke pricing logic should generally call the supported public API (QP_PREQ_GRP.PRICE_REQUEST) rather than the internal insert and population routines. Debugging of engine behavior is enabled through the SET_QP_DEBUG and ENGINE_DEBUG routines, which control the g_debug_engine flag referenced in the package body. Because the package relies on package-level global state, it should be invoked within a single session scope per pricing request to avoid cross-contamination of evaluation results.