[Home] [Help]
PACKAGE BODY: APPS.QP_PREQ_GRP
Source
1 PACKAGE BODY QP_PREQ_GRP AS
2 /* $Header: QPXGPREB.pls 120.132.12020000.8 2013/05/09 12:08:04 jputta ship $ */
3
4 G_VERSION VARCHAR2(240):= '/* $Header: QPXGPREB.pls 120.132.12020000.8 2013/05/09 12:08:04 jputta ship $ */';
5 --Indexes similar to temporary sequence number
6 /*TYPE PLS_INTEGER_TYPE IS TABLE OF PLS_INTEGER INDEX BY BINARY_INTEGER;
7 TYPE NUMBER_TYPE IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
8 TYPE VARCHAR_TYPE IS TABLE OF VARCHAR2(240) INDEX BY BINARY_INTEGER;
9 TYPE FLAG_TYPE IS TABLE OF VARCHAR2(1) INDEX BY BINARY_INTEGER;
10 TYPE ROWID_TYPE IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
11 TYPE DATE_TYPE IS TABLE OF DATE INDEX BY BINARY_INTEGER;*/
12
13
14 --G_RELATED_LINE_DETAIL_INDEX PLS_INTEGER :=1;
15 G_PRICE_LIST_PHASE_ID PLS_INTEGER ; --will be replaced by initialization routine
16 G_PRICE_LIST_SEQUENCE PLS_INTEGER ; --will be replaced by initialization routine
17 G_INV_DECIMAL_PRECISION NUMBER; -- bug 3572594
18 --G_DISCOUNT_MODE CONSTANT VARCHAR2(3):='DIS';
19 --G_PRICELIST_MODE CONSTANT VARCHAR2(3):='PLL';
20 --G_PRIMARY_SEARCH_IND CONSTANT NUMBER := 1;
21 --G_SECONDARY_SEARCH_IND CONSTANT NUMBER := 2;
22 --G_NULL_GROUPING_NUMBER CONSTANT NUMBER := -1;
23 --G_NULL_LIST_LINE_ID CONSTANT NUMBER := -1;
24 G_PRICE_PHASE_FLAG BOOLEAN;
25 --G_NUMBER_FORMAT_TYPE CONSTANT VARCHAR2(1) := 'N';
26
27 G_LINE_INDEX_tbl pls_integer_type;
28 G_USAGE_PRICING_TYPE_tbl varchar_type;
29 G_LINE_CATEGORY_tbl varchar_type;
30 G_LINE_DETAIL_INDEX_tbl pls_integer_type;
31 G_ATTRIBUTE_LEVEL_tbl varchar_type;
32 G_ATTRIBUTE_TYPE_tbl varchar_type;
33 G_LIST_HEADER_ID_tbl number_type;
34 G_LIST_LINE_ID_tbl number_type;
35 G_CONTEXT_tbl varchar_type;
36 G_ATTRIBUTE_tbl varchar_type;
37 G_VALUE_FROM_tbl varchar_type;
38 G_SETUP_VALUE_FROM_tbl varchar_type;
39 G_VALUE_TO_tbl varchar_type;
40 G_SETUP_VALUE_TO_tbl varchar_type;
41 G_GROUPING_NUMBER_tbl pls_integer_type;
42 G_NO_QUALIFIERS_IN_GRP_tbl pls_integer_type;
43 G_COMPARISON_OPERATOR_TYPE_tbl varchar_type;
44 G_VALIDATED_FLAG_tbl varchar_type;
45 G_APPLIED_FLAG_tbl varchar_type;
46 G_PRICING_STATUS_CODE_tbl varchar_type;
47 G_PRICING_STATUS_TEXT_tbl varchar_type;
48 G_QUALIFIER_PRECEDENCE_tbl pls_integer_type;
49 G_DATATYPE_tbl varchar_type;
50 G_PRICING_ATTR_FLAG_tbl varchar_type;
51 G_QUALIFIER_TYPE_tbl varchar_type;
52 G_product_uom_code_tbl varchar_type;
53 G_EXCLUDER_FLAG_TBL varchar_type;
54 G_PRICE_REQUEST_CODE_TBL varchar_type;
55 --G_DISTINCT_QUAL_FLAG_TBL varchar_type;
56 G_RELATIONSHIP_TYPE_TBL VARCHAR_TYPE; -- 3215497
57 G_RLTD_LINE_INDEX_TBL PLS_INTEGER_TYPE; -- 3215497
58 G_RLTD_LINE_DETAIL_INDEX_TBL PLS_INTEGER_TYPE; -- 3215497
59
60 G_LINE_INDEX_l_TBL PLS_INTEGER_TYPE;
61 G_LINE_DETAIL_INDEX_l_TBL PLS_INTEGER_TYPE;
62 G_PRICING_STATUS_CODE_L_TBL VARCHAR_TYPE;
63 G_PRICING_STATUS_TEXT_L_TBL VARCHAR_TYPE;
64
65 G_LINE_TYPE_CODE_TBL VARCHAR_TYPE;
66 G_PRICING_EFFECTIVE_DATE_TBL DATE_TYPE ;
67 G_ACTIVE_DATE_FIRST_TBL DATE_TYPE ;
68 G_ACTIVE_DATE_FIRST_TYPE_TBL VARCHAR_TYPE;
69 G_ACTIVE_DATE_SECOND_TBL DATE_TYPE ;
70 G_ACTIVE_DATE_SECOND_TYPE_TBL VARCHAR_TYPE ;
71 G_LINE_QUANTITY_TBL NUMBER_TYPE ;
72 G_LINE_UOM_CODE_TBL VARCHAR_TYPE;
73 G_REQUEST_TYPE_CODE_TBL VARCHAR_TYPE;
74 G_PRICED_QUANTITY_TBL NUMBER_TYPE;
75 G_UOM_QUANTITY_TBL NUMBER_TYPE;
76 G_PRICED_UOM_CODE_TBL VARCHAR_TYPE;
77 G_CURRENCY_CODE_TBL VARCHAR_TYPE;
78 G_UNIT_PRICE_TBL NUMBER_TYPE;
79 G_PERCENT_PRICE_TBL NUMBER_TYPE;
80 G_ADJUSTED_UNIT_PRICE_TBL NUMBER_TYPE;
81 G_UPD_ADJUSTED_UNIT_PRICE_TBL NUMBER_TYPE;
82 G_PROCESSED_FLAG_TBL VARCHAR_TYPE;
83 G_PRICE_FLAG_TBL VARCHAR_TYPE;
84 G_LINE_ID_TBL NUMBER_TYPE;
85 G_PROCESSING_ORDER_TBL PLS_INTEGER_TYPE;
86 G_CONTRACT_START_DATE_TBL DATE_TYPE; /* shulin */
87 G_CONTRACT_END_DATE_TBL DATE_TYPE; /* shulin */
88 G_LINE_UNIT_PRICE_TBL NUMBER_TYPE; /* shu_latest */
89 G_LIST_PRICE_OVERRIDE_FLAG_TBL VARCHAR_TYPE; -- po integration
90 G_CHARGE_PERIODICITY_CODE_TBL VARCHAR_3_TYPE;
91 G_UPDATED_FLAG_TBL VARCHAR_TYPE; -- 3215497
92 G_CALCULATION_CODE_TBL VARCHAR_TYPE; -- 3215497
93 G_CHANGE_REASON_CODE_TBL VARCHAR_TYPE; -- 3215497
94 G_CHANGE_REASON_TEXT_TBL VARCHAR_TYPE; -- 3215497
95 G_PROCESS_CODE_TBL VARCHAR_TYPE; -- 3215497
96 G_LINE_INDEX_LD_TBL PLS_INTEGER_TYPE;
97 G_LINE_DETAIL_INDEX_LD_TBL PLS_INTEGER_TYPE;
98 G_LIST_HEADER_ID_LD_TBL NUMBER_TYPE;
99 G_LIST_LINE_ID_LD_TBL NUMBER_TYPE;
100 G_PRICING_STATUS_CODE_LD_TBL VARCHAR_TYPE;
101 G_PRICING_STATUS_TEXT_LD_TBL VARCHAR_TYPE;
102 G_APPLIED_FLAG_LD_TBL VARCHAR_TYPE;
103 G_PROCESSED_FLAG_LD_TBL VARCHAR_TYPE;
104
105 G_ROUNDING_FACTOR_TBL PLS_INTEGER_TYPE;
106 G_ROUNDING_FLAG_TBL FLAG_TYPE;
107 G_LINE_DETAIL_TYPE_CODE_TBL VARCHAR_TYPE;
108 G_PRICE_BREAK_TYPE_CODE_TBL VARCHAR_TYPE;
109 G_LIST_PRICE_TBL NUMBER_TYPE;
110 G_LIST_LINE_TYPE_TBL VARCHAR_TYPE;
111 G_LIST_TYPE_CODE_TBL VARCHAR_TYPE;
112 G_CREATED_FROM_SQL_TBL VARCHAR_TYPE;
113 G_PRICING_GROUP_SEQUENCE_TBL PLS_INTEGER_TYPE;
114 G_PRICING_PHASE_ID_TBL PLS_INTEGER_TYPE;
115 G_OPERAND_CALCULATION_CODE_TBL VARCHAR_TYPE;
116 G_OPERAND_VALUE_TBL VARCHAR_TYPE;
117 G_NET_AMOUNT_FLAG_TBL VARCHAR_TYPE; -- IT net_amount 2720717
118 G_SUBSTITUTION_TYPE_CODE_TBL VARCHAR_TYPE;
119 G_SUBSTITUTION_VALUE_FROM_TBL VARCHAR_TYPE;
120 G_SUBSTITUTION_VALUE_TO_TBL VARCHAR_TYPE;
121 G_ASK_FOR_FLAG_TBL VARCHAR_TYPE;
122 G_PRICE_FORMULA_ID_TBL NUMBER_TYPE;
123 G_PRODUCT_PRECEDENCE_TBL PLS_INTEGER_TYPE;
124 G_INCOMP_GRP_CODE_TBL VARCHAR_TYPE;
125 G_AUTOMATIC_FLAG_TBL VARCHAR_TYPE;
126 G_OVERRIDE_FLAG_TBL VARCHAR_TYPE;
127 G_PRIMARY_UOM_FLAG_TBL VARCHAR_TYPE;
128 G_PRINT_ON_INVOICE_FLAG_TBL VARCHAR_TYPE;
129 G_MODIFIER_LEVEL_CODE_TBL VARCHAR_TYPE;
130 G_BENEFIT_QTY_TBL NUMBER_TYPE;
131 G_BENEFIT_UOM_CODE_TBL VARCHAR_TYPE;
132 G_SERVICE_DURATION_TBL NUMBER_TYPE; -- SERVICE PROJECT
133 G_SERVICE_PERIOD_TBL VARCHAR_TYPE;-- SERVICE PROJECT
134 G_LIST_LINE_NO_TBL VARCHAR_TYPE;
135 G_ACCRUAL_FLAG_TBL VARCHAR_TYPE;
136 G_ACCRUAL_CONVERSION_RATE_TBL NUMBER_TYPE;
137 G_ESTIM_ACCRUAL_RATE_TBL NUMBER_TYPE;
138 G_RECURRING_FLAG_TBL VARCHAR_TYPE;
139 G_SELECTED_VOLUME_ATTR_TBL VARCHAR_TYPE;
140 G_QUALIFIERS_EXIST_FLAG_TBL VARCHAR_TYPE;
141 G_PRICING_ATTRS_EXIST_FLAG_TBL VARCHAR_TYPE;
142 G_PRICE_LIST_ID_TBL NUMBER_TYPE;
143 G_PL_VALIDATED_FLAG_TBL VARCHAR_TYPE;
144 G_HEADER_LIMIT_EXISTS_TBL VARCHAR_TYPE;
145 G_LINE_LIMIT_EXISTS_TBL VARCHAR_TYPE;
146 G_CHARGE_TYPE_CODE_TBL VARCHAR_TYPE;
147 G_CHARGE_SUBTYPE_CODE_TBL VARCHAR_TYPE;
148 G_CURRENCY_HEADER_ID_TBL NUMBER_TYPE; /* vivek */
149 G_SELLING_ROUNDING_TBL NUMBER_TYPE; /* vivek */
150 G_ORDER_CURRENCY_TBL VARCHAR_TYPE; /* vivek */
151 G_BASE_CURRENCY_CODE_TBL VARCHAR_TYPE; /* vivek */
152 G_CURRENCY_DETAIL_ID_TBL NUMBER_TYPE; /* sunilpandey */
153 -- G_LDET_LINE_QUANTITY_TBL NUMBER_TYPE; -- defined in SPEC
154 G_ACCUM_CONTEXT_TBL VARCHAR_TYPE; -- for accum range break
155 G_ACCUM_ATTRIBUTE_TBL VARCHAR_TYPE; -- for accum range break
156 G_ACCUM_FLAG_TBL VARCHAR_TYPE; -- for accum range break
157 G_BREAK_UOM_TBL VARCHAR_TYPE; /* Proration */
158 G_BREAK_CONTEXT_TBL VARCHAR_TYPE; /* Proration */
159 G_BREAK_ATTRIBUTE_TBL VARCHAR_TYPE; /* Proration */
160 G_SECONDARY_PRICELIST_IND_TBL VARCHAR_30_TYPE;
161
162 G_LIST_HEADER_ID_TBL_Q NUMBER_TYPE;
163 G_LIST_LINE_ID_TBL_Q NUMBER_TYPE;
164 G_LINE_INDEX_TBL_Q NUMBER_TYPE;
165 G_LIST_LINE_TYPE_TBL_Q VARCHAR_TYPE;
166 G_VALIDATED_FLAG_TBL_Q VARCHAR_TYPE;
167 G_APPLIED_FLAG_TBL_Q VARCHAR_TYPE;
168 G_AUTOMATIC_FLAG_TBL_Q VARCHAR_TYPE;
169 G_START_DATE_ACTIVE_TBL_Q DATE_TYPE;
170 G_END_DATE_ACTIVE_TBL_Q DATE_TYPE;
171 G_PRICING_EFFECTIVE_DATE_TBL_Q DATE_TYPE;
172 G_LINE_TYPE_CODE_TBL_Q VARCHAR_TYPE;
173 G_PRICING_PHASE_ID_TBL_Q PLS_INTEGER_TYPE;
174 G_UNIQUE_KEY_TBL_Q VARCHAR_TYPE;
175 G_ATTRIBUTE_LEVEL_TBL_Q VARCHAR_TYPE;
176 G_ATTRIBUTE_TYPE_TBL_Q VARCHAR_TYPE;
177 G_CONTEXT_TBL_Q VARCHAR_TYPE;
178 G_ATTRIBUTE_TBL_Q VARCHAR_TYPE;
179 G_VALUE_FROM_TBL_Q VARCHAR_TYPE;
180 G_GROUPING_NO_TBL_Q PLS_INTEGER_TYPE;
181 G_QUALIFIER_PRECEDENCE_TBL_Q PLS_INTEGER_TYPE;
182 G_DATATYPE_TBL_Q VARCHAR_TYPE;
183 G_SETUP_VALUE_FROM_TBL_Q VARCHAR_TYPE;
184 G_SETUP_VALUE_TO_TBL_Q VARCHAR_TYPE;
185 G_PRICING_ATTR_FLAG_TBL_Q VARCHAR_TYPE;
186 G_OPERATOR_TYPE_TBL_Q VARCHAR_TYPE;
187 G_CURRENCY_CODE_TBL_Q VARCHAR_TYPE;
188 G_ASK_FOR_FLAG_TBL_Q VARCHAR_TYPE;
189 G_LIST_TYPE_CODE_TBL_Q VARCHAR_TYPE;
190 G_QUALIFIER_TYPE_TBL_Q VARCHAR_TYPE;
191 G_QUALIFIER_GROUP_CNT_TBL_Q NUMBER_TYPE;
192 G_OTHERS_GROUP_CNT_TBL_Q NUMBER_TYPE;
193 G_HEADER_QUALS_EXIST_FLG_TBL_Q VARCHAR_TYPE;
194 G_SEARCH_IND_TBL_Q NUMBER_TYPE;
195 G_PRICING_STATUS_CODE_TBL_Q VARCHAR_TYPE;
196 G_START_DATE_ACTIVE_TBL_H_Q DATE_TYPE;
197 G_END_DATE_ACTIVE_TBL_H_Q DATE_TYPE;
198 G_START_DATE_ACTIVE_SEC_TBL_Q DATE_TYPE;
199 G_END_DATE_ACTIVE_SEC_TBL_Q DATE_TYPE;
200 G_ACTIVE_DATE_FIR_TYPE_TBL_Q VARCHAR_TYPE;
201 G_ACTIVE_DATE_SEC_TYPE_TBL_Q VARCHAR_TYPE;
202 G_START_DATE_ACTIVE_FIR_TBL_Q DATE_TYPE;
203 G_END_DATE_ACTIVE_FIR_TBL_Q DATE_TYPE;
204 G_HEADER_LIMIT_EXISTS_TBL_Q VARCHAR_TYPE;
205 G_ACTIVE_DATE_FIRST_TBL_Q DATE_TYPE;
206 G_ACTIVE_DATE_SECOND_TBL_Q DATE_TYPE;
207 G_INCOMP_GRP_CODE_TBL_Q VARCHAR_TYPE;
208 G_ACCR_CONVERSION_RATE_TBL_Q NUMBER_TYPE;
209 G_ACCRUAL_FLAG_TBL_Q VARCHAR_TYPE;
210 G_MODIFIER_LEVEL_CODE_TBL_Q VARCHAR_TYPE;
211 G_LIST_PRICE_TBL_Q NUMBER_TYPE;
212 G_LIST_LINE_NO_TBL_Q VARCHAR_TYPE;
213 G_PRIMARY_UOM_FLAG_TBL_Q VARCHAR_TYPE;
214 G_OPER_CALCULATION_CODE_TBL_Q VARCHAR_TYPE;
215 G_OPERAND_TBL_Q NUMBER_TYPE;
216 G_NET_AMOUNT_FLAG_TBL_Q VARCHAR_TYPE; -- IT net_amount 2720717
217 G_PRICING_GROUP_SEQUENCE_TBL_Q NUMBER_TYPE;
218 G_PRICE_BREAK_TYPE_CODE_TBL_Q VARCHAR_TYPE;
219 G_PRICE_FORMULA_ID_TBL_Q NUMBER_TYPE;
220 G_PRODUCT_PRECEDENCE_TBL_Q NUMBER_TYPE;
221 G_ESTIM_ACCRUAL_RATE_TBL_Q NUMBER_TYPE;
222 G_DERIVED_QUALIFIER_FLAG_TBL_Q VARCHAR_TYPE; -- Added for TCA
223
224 G_LINE_INDEX_TBL_P NUMBER_TYPE;
225 G_LINE_DETAIL_INDEX_TBL_P NUMBER_TYPE;
226 G_LIST_HEADER_ID_TBL_P NUMBER_TYPE;
227 G_LIST_LINE_ID_TBL_P NUMBER_TYPE;
228 G_PRICE_BREAK_TYPE_CODE_TBL_P VARCHAR_TYPE;
229 G_LIST_PRICE_TBL_P NUMBER_TYPE;
230 G_LIST_LINE_TYPE_TBL_P VARCHAR_TYPE;
231 G_LIST_TYPE_CODE_TBL_P VARCHAR_TYPE;
232 G_PRICING_GROUP_SEQUENCE_TBL_P NUMBER_TYPE;
233 G_PRICING_PHASE_ID_TBL_P PLS_INTEGER_TYPE;
234 G_OPER_CALCULATION_CODE_TBL_P VARCHAR_TYPE;
235 G_OPERAND_VALUE_TBL_P NUMBER_TYPE;
236 G_NET_AMOUNT_FLAG_TBL_P VARCHAR_TYPE; -- IT net_amount 2720717
237 G_ASK_FOR_FLAG_TBL_P VARCHAR_TYPE;
238 G_PRICE_FORMULA_ID_TBL_P NUMBER_TYPE;
239 G_PRODUCT_PRECEDENCE_TBL_P NUMBER_TYPE;
240 G_INCOMP_GRP_CODE_TBL_P VARCHAR_TYPE;
241 G_AUTOMATIC_FLAG_TBL_P VARCHAR_TYPE;
242 G_OVERRIDE_FLAG_TBL_P VARCHAR_TYPE;
243 G_PRIMARY_UOM_FLAG_TBL_P VARCHAR_TYPE;
244 G_PRINT_ON_INVOICE_FLAG_TBL_P VARCHAR_TYPE;
245 G_MODIFIER_LEVEL_CODE_TBL_P VARCHAR_TYPE;
246 G_BENEFIT_QTY_TBL_P NUMBER_TYPE;
247 G_BENEFIT_UOM_CODE_TBL_P VARCHAR_TYPE;
248 G_SERVICE_DURATION_TBL_P NUMBER_TYPE; -- SERVICE PROJECT
249 G_SERVICE_PERIOD_TBL_P VARCHAR_TYPE;-- SERVICE PROJECT
250 G_LIST_LINE_NO_TBL_P VARCHAR_TYPE;
251 G_ACCRUAL_FLAG_TBL_P VARCHAR_TYPE;
252 G_ACCR_CONVERSION_RATE_TBL_P NUMBER_TYPE;
253 G_ESTIM_ACCRUAL_RATE_TBL_P NUMBER_TYPE;
254 G_ATTRIBUTE_LEVEL_TBL_P VARCHAR_TYPE;
255 G_ATTRIBUTE_TYPE_TBL_P VARCHAR_TYPE;
256 G_CONTEXT_TBL_P VARCHAR_TYPE;
257 G_ATTRIBUTE_TBL_P VARCHAR_TYPE;
258 G_VALUE_FROM_TBL_P VARCHAR_TYPE;
259 G_SETUP_VALUE_FROM_TBL_P VARCHAR_TYPE;
260 G_VALIDATED_FLAG_TBL_P VARCHAR_TYPE;
261 G_APPLIED_FLAG_TBL_P VARCHAR_TYPE;
262 G_PRICING_ATTR_FLAG_TBL_P VARCHAR_TYPE;
263 G_GROUPING_NUMBER_TBL_P NUMBER_TYPE;
264 G_QUALIFIER_PRECEDENCE_TBL_P NUMBER_TYPE;
265 G_EXCLUDER_FLAG_TBL_P VARCHAR_TYPE;
266 G_PRODUCT_UOM_CODE_TBL_P VARCHAR_TYPE;
267 G_QUALIFIER_TYPE_TBL_P VARCHAR_TYPE;
268 G_ROUNDING_FACTOR_TBL_P NUMBER_TYPE;
269 G_HEADER_LIMIT_EXISTS_TBL_P VARCHAR_TYPE;
270 G_LINE_LIMIT_EXISTS_TBL_P VARCHAR_TYPE;
271 G_CHARGE_TYPE_CODE_TBL_P VARCHAR_TYPE;
272 G_CHARGE_SUBTYPE_CODE_TBL_P VARCHAR_TYPE;
273 G_CURRENCY_HEADER_ID_TBL_P NUMBER_TYPE; /* vivek */
274 G_SELLING_ROUNDING_TBL_P NUMBER_TYPE; /* vivek */
275 G_ORDER_CURRENCY_TBL_P VARCHAR_TYPE; /* vivek */
276 G_PRICING_EFFECTIVE_DATE_TBL_P DATE_TYPE; /* vivek */
277 G_BASE_CURRENCY_CODE_TBL_P VARCHAR_TYPE; /* vivek */
278 G_CURRENCY_DETAIL_ID_TBL_P NUMBER_TYPE; /* sunilpandey */
279 G_ACCUM_CONTEXT_TBL_P VARCHAR_TYPE; -- for accum range break
280 G_ACCUM_ATTRIBUTE_TBL_P VARCHAR_TYPE; -- for accum range break
281 G_ACCUM_FLAG_TBL_P VARCHAR_TYPE; -- for accum range break
282
283 G_ATTRIBUTE_LEVEL_TBL_PR VARCHAR_TYPE;
284 G_ATTRIBUTE_TYPE_TBL_PR VARCHAR_TYPE;
285 G_CONTEXT_TBL_PR VARCHAR_TYPE;
286 G_ATTRIBUTE_TBL_PR VARCHAR_TYPE;
287 G_VALUE_FROM_TBL_PR VARCHAR_TYPE;
288 G_OPERATOR_TYPE_TBL_PR VARCHAR_TYPE;
289 G_SETUP_VALUE_FROM_TBL_PR VARCHAR_TYPE;
290 G_SETUP_VALUE_TO_TBL_PR VARCHAR_TYPE;
291 G_DATATYPE_TBL_PR VARCHAR_TYPE;
292 G_BREAK_UOM_TBL_P VARCHAR_TYPE; /* Proration */
293 G_BREAK_CONTEXT_TBL_P VARCHAR_TYPE; /* Proration */
294 G_BREAK_ATTRIBUTE_TBL_P VARCHAR_TYPE; /* Proration */
295
296 G_LINE_INDEX_TBL_B PLS_INTEGER_TYPE;
297 G_LIST_HEADER_ID_TBL_B NUMBER_TYPE;
298 G_LIST_LINE_ID_TBL_B NUMBER_TYPE;
299 G_PRICE_BREAK_TYPE_CODE_TBL_B VARCHAR_TYPE;
300 G_LIST_PRICE_TBL_B NUMBER_TYPE;
301 G_LIST_LINE_TYPE_TBL_B VARCHAR_TYPE;
302 G_LIST_TYPE_CODE_TBL_B VARCHAR_TYPE;
303 G_PRICING_GROUP_SEQUENCE_TBL_B NUMBER_TYPE;
304 G_PRICING_PHASE_ID_TBL_B PLS_INTEGER_TYPE;
305 G_OPER_CALCULATION_CODE_TBL_B VARCHAR_TYPE;
306 G_OPERAND_VALUE_TBL_B VARCHAR_TYPE;
307 G_NET_AMOUNT_FLAG_TBL_B VARCHAR_TYPE; -- IT net_amount 2720717
308 G_ASK_FOR_FLAG_TBL_B VARCHAR_TYPE;
309 G_PRICE_FORMULA_ID_TBL_B NUMBER_TYPE;
310 G_PRODUCT_PRECEDENCE_TBL_B NUMBER_TYPE;
311 G_INCOMP_GRP_CODE_TBL_B VARCHAR_TYPE;
312 G_AUTOMATIC_FLAG_TBL_B VARCHAR_TYPE;
313 G_OVERRIDE_FLAG_TBL_B VARCHAR_TYPE;
314 G_PRIMARY_UOM_FLAG_TBL_B VARCHAR_TYPE;
315 G_PRINT_ON_INVOICE_FLAG_TBL_B VARCHAR_TYPE;
316 G_MODIFIER_LEVEL_CODE_TBL_B VARCHAR_TYPE;
317 G_BENEFIT_QTY_TBL_B NUMBER_TYPE;
318 G_BENEFIT_UOM_CODE_TBL_B VARCHAR_TYPE;
319 G_SERVICE_DURATION_TBL_B NUMBER_TYPE; -- SERVICE PROJECT
320 G_SERVICE_PERIOD_TBL_B VARCHAR_TYPE; -- SERVICE PROJECT
321 G_LIST_LINE_NO_TBL_B VARCHAR_TYPE;
322 G_ACCRUAL_FLAG_TBL_B VARCHAR_TYPE;
323 G_ACCR_CONVERSION_RATE_TBL_B NUMBER_TYPE;
324 G_ESTIM_ACCRUAL_RATE_TBL_B NUMBER_TYPE;
325
326 G_LINE_INDEX_TBL_G NUMBER_TYPE;
327 G_LIST_HEADER_ID_TBL_G NUMBER_TYPE;
328 G_LIST_LINE_ID_TBL_G NUMBER_TYPE;
329 G_NO_OF_PATTS_IN_GRP_TBL_G NUMBER_TYPE;
330
331 G_PRICING_PHASE_ID_TBL_A PLS_INTEGER_TYPE;
332 G_INCOMP_GRP_CODE_TBL_A VARCHAR_TYPE;
333 G_LINE_DETAIL_TYPE_CODE_TBL_A VARCHAR_TYPE;
334 G_MODIFIER_LEVEL_CODE_TBL_A VARCHAR_TYPE;
335 G_PRIMARY_UOM_FLAG_TBL_A VARCHAR_TYPE;
336 G_LINE_INDEX_TBL_A PLS_INTEGER_TYPE;
337 G_LINE_DETAIL_INDEX_TBL_A PLS_INTEGER_TYPE;
338 G_LIST_LINE_ID_TBL_A NUMBER_TYPE;
339 G_LIST_HEADER_ID_TBL_A NUMBER_TYPE;
340
341 --G_QUALIFIER_TEMP_EMPTY CONSTANT VARCHAR2(10) := 'E';
342 --G_QUALIFIER_TEMP_UPDATED CONSTANT VARCHAR2(10) := 'U';
343 --G_QUALIFIER_TEMP_NEED_UPDATE CONSTANT VARCHAR2(10) := 'N';
344 G_QUALIFIER_TEMP VARCHAR2(10);
345 G_LINE_QUALIFIER_TEMP VARCHAR2(10);
346
347 G_INSERT_INTO_FORMULA_TMP BOOLEAN ; -- Change
348 --G_INSERT_INTO_FORMULA_TMP VARCHAR2(10) := 'N'; -- Change
349
350 -- security
351 G_SECURITY_CONTROL VARCHAR2(10) := 'OFF'; -- security
352 --G_CURRENT_USER_OP_UNIT NUMBER := NULL; -- security (moved to spec)
353
354 -- Bug 3143535 - ORDER AMOUNT CALCULATION ISSUE
355 G_BEFORE_PRICING_ORD_AMT NUMBER := 0;
356
357 G_NULL_PROFILE_VALUE VARCHAR2(30) := 'NULL';
358
359 -- julin [3805113]: storing for call_calculation_engine()
360 G_CHILD_VALUE_FROM_TBL VARCHAR_TYPE;
361 G_CHILD_VALUE_TO_TBL VARCHAR_TYPE;
362 G_PARENT_LINE_DETAIL_INDEX_TBL NUMBER_TYPE;
363
364 -- julin [3805113]: default bulk fetch size
365 G_BATCH_SIZE NUMBER := 1000;
366 G_BATCH_SIZE_1 NUMBER := 50000; -- bug 6364923
367
368 --Pattern changes
369 G_PTE_CODE VARCHAR2(30) := NULL;
370 G_CHUNK_SIZE NUMBER := 5000;
371 G_MIN_LINE_INDEX NUMBER;
372 G_MAX_LINE_INDEX NUMBER;
373
374 -- Debug procedure
375 PROCEDURE Set_QP_Debug AS
376
377 l_output_file VARCHAR2(240);
378 l_routine VARCHAR2(30) := 'Set_QP_Debug';
379 v_debug_switch CONSTANT VARCHAR2(30) := 'QP_DEBUG';
380
381 BEGIN
382 G_QP_DEBUG_PROFILE_VALUE := FND_PROFILE.VALUE(v_debug_switch);
383
384 -- If Time Log is on then only Time Log messages should be printed.
385 -- Time Log will be on if Profiles QP:Debug is set to Time Log
386 -- and OM:Debug Level is set to 1.
387 -- Internal Bug# 8459818
388
389 IF G_QP_DEBUG_PROFILE_VALUE = G_TIME_LOG_DBG_LEVEL
390 AND FND_PROFILE.VALUE('ONT_DEBUG_LEVEL') = 1 THEN
391 oe_debug_pub.SetDebugLevel(1);
392 oe_debug_pub.Initialize;
393 oe_debug_pub.debug_on;
394
395 l_output_file := oe_debug_pub.Set_Debug_Mode('FILE');
396 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
397 engine_debug ('The output file is : ' || l_output_file );
398 END IF;
399 ELSIF FND_PROFILE.VALUE('ONT_DEBUG_LEVEL') = 5 THEN
400 l_output_file := oe_debug_pub.Set_Debug_Mode('FILE');
401 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
402 engine_debug ('The output file is : ' || l_output_file );
403 END IF;
404 END IF;
405
406 -- Introduced for facilitating debugging for non OM Applications
407 --IF (NOT OE_DEBUG_PUB.ISDebugOn) THEN --If om debug is not on , then only look at qp_debug
408 if oe_debug_pub.g_debug_level > 0 then
409 G_DEBUG_ENGINE:= FND_API.G_TRUE;
410 else
411 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
412 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
413 oe_debug_pub.SetDebugLevel(10);
414 oe_debug_pub.Initialize;
415 oe_debug_pub.debug_on;
416 l_output_file := oe_debug_pub.Set_Debug_Mode('FILE');
417 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
418 engine_debug ('The output file is : ' || l_output_file );
419 END IF;
420 G_DEBUG_ENGINE:= FND_API.G_TRUE;
421 ELSE
422 G_DEBUG_ENGINE:= FND_API.G_FALSE;
423 END IF;
424 END IF;
425
426 EXCEPTION
427 WHEN OTHERS THEN
428 --x_status_code := FND_API.G_RET_STS_ERROR;
429 --x_status_text :=l_routine||' '||SQLERRM;
430 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
431 engine_debug(l_routine||' '||SQLERRM);
432 END IF;
433
434 END Set_QP_Debug;
435
436 -- shu new rounding implementation
437 /*+--------------------------------------------------------------------
438 | UPDATE_ROUNDING_FACTOR
439 | to update rounding_factor in the qp_npreq_lines_tmp table
440 +--------------------------------------------------------------------
441 */
442 PROCEDURE UPDATE_ROUNDING_FACTOR(
443 p_mcurr_installed_used_flag IN VARCHAR2,
444 x_status_code OUT NOCOPY VARCHAR2,
445 x_status_text OUT NOCOPY VARCHAR2) AS
446
447 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.UPDATE_ROUNDING_FACTOR';
448
449 CURSOR get_price_lists_cur IS
450 SELECT distinct price_list_header_id , currency_code , trunc(pricing_effective_date) pricing_effective_date
451 FROM qp_npreq_lines_tmp
452 where price_flag in ('Y','P')
453 and line_type_code = 'LINE'
454 and rounding_factor is null
455 and price_list_header_id > 0; --[julin/5395256]
456
457
458 p_price_list_id_tbl NUMBER_TYPE;
459 p_currency_code_tbl VARCHAR_TYPE;
460 p_pricing_eff_date_tbl DATE_TYPE;
461 p_rounding_factor_tbl NUMBER_TYPE;
462 nROWS NUMBER :=1000;
463 v_count NUMBER := 0;
464
465 BEGIN
466
467 OPEN get_price_lists_cur;
468
469 LOOP
470
471 p_price_list_id_tbl.delete;
472 p_currency_code_tbl.delete;
473 p_pricing_eff_date_tbl.delete;
474
475 FETCH get_price_lists_cur BULK COLLECT INTO
476 p_price_list_id_tbl,
477 p_currency_code_tbl,
478 p_pricing_eff_date_tbl LIMIT nROWS;
479
480 EXIT WHEN p_price_list_id_tbl.COUNT = 0;
481
482 IF (p_price_list_id_tbl.COUNT > 0) THEN
483
484 v_count := p_price_list_id_tbl.count;
485
486 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
487 engine_debug('Calling Round Factor function for : '||v_count|| ' price list,currency,pricing date combinations');
488 END IF;
489
490 FOR i in p_price_list_id_tbl.FIRST .. p_price_list_id_tbl.LAST
491 LOOP
492
493 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
494 engine_debug('Price List Id : ' || p_price_list_id_tbl(i));
495 engine_debug('Currency Code : ' || p_currency_code_tbl(i));
496 engine_debug('Pricing Date : ' || p_pricing_eff_date_tbl(i));
497 END IF;
498 p_rounding_factor_tbl(i) :=
499 qp_util_pub.get_rounding_factor(
500 p_mcurr_installed_used_flag,
501 p_price_list_id_tbl(i),
502 p_currency_code_tbl(i),
503 p_pricing_eff_date_tbl(i));
504
505 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
506 engine_debug('Rounding factor in QP_PREQ_GRP after the function call : ' || p_rounding_factor_tbl(i));
507 END IF;
508
509 END LOOP;
510
511 FORALL i in p_price_list_id_tbl.FIRST .. p_price_list_id_tbl.LAST
512 UPDATE qp_npreq_lines_tmp
513 SET ROUNDING_FACTOR = p_rounding_factor_tbl(i)
514 WHERE PRICE_FLAG in (QP_PREQ_GRP.G_YES, QP_PREQ_GRP.G_PHASE)
515 AND PRICE_LIST_HEADER_ID = p_price_list_id_tbl(i)
516 AND CURRENCY_CODE = p_currency_code_tbl(i)
517 AND trunc(PRICING_EFFECTIVE_DATE) = p_pricing_eff_date_tbl(i); -- bug 3364978
518
519 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
520 engine_debug('Number of lines updated with rounding factor : ' || SQL%ROWCOUNT);
521 END IF;
522
523 END IF;
524 END LOOP;
525
526 CLOSE get_price_lists_cur;
527
528 EXCEPTION
529 WHEN OTHERS THEN
530 x_status_code := FND_API.G_RET_STS_ERROR;
531 x_status_text :=l_routine||' '||SQLERRM;
532 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
533 engine_debug(l_routine||' '||SQLERRM);
534 END IF;
535 END;
536
537 /*+--------------------------------------------------------------------
538 |ENGINE_DEBUG
539 |For performance concern, we can avoid calling debug
540 |if the debug features is turned off
541 +--------------------------------------------------------------------
542 */
543 PROCEDURE ENGINE_DEBUG(p_text IN VARCHAR2) AS
544 l_return_status VARCHAR2(240);
545 l_status_text VARCHAR2(240);
546 BEGIN
547 --IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
548 oe_debug_pub.add(p_text,3);
549
550 -- Debug Screen related change
551 -- Irrespective of om debug if qp debug is on debug information is captured into qp debug tables
552 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) THEN
553 QP_COPY_DEBUG_PVT.INSERT_DEBUG_LINE(p_text);
554 END IF;
555
556 --END IF;
557 EXCEPTION
558 WHEN OTHERS THEN
559 NULL;
560 END;
561
562 /*+---------------------------------------------------------------------
563 |GET_VERSION
564 +---------------------------------------------------------------------
565 */
566 FUNCTION GET_VERSION RETURN VARCHAR2 IS
567 BEGIN
568 --engine_debug(G_VERSION);
569 RETURN G_VERSION;
570 END;
571
572 /*+----------------------------------------------------------------------
573 |Procedure INSERT_QUAL
574 +----------------------------------------------------------------------
575 */
576 PROCEDURE INSERT_QUAL(
577 p_LIST_HEADER_ID IN NUMBER_TYPE,
578 p_LIST_LINE_ID IN NUMBER_TYPE,
579 p_VALIDATED_FLAG IN VARCHAR_TYPE,
580 p_APPLIED_FLAG IN VARCHAR_TYPE,
581 p_ATTRIBUTE_LEVEL IN VARCHAR_TYPE,
582 p_ATTRIBUTE_TYPE IN VARCHAR_TYPE,
583 p_CONTEXT IN VARCHAR_TYPE,
584 p_ATTRIBUTE IN VARCHAR_TYPE,
585 p_VALUE_FROM IN VARCHAR_TYPE,
586 p_GROUPING_NO IN PLS_INTEGER_TYPE,
587 p_QUALIFIER_PRECEDENCE IN PLS_INTEGER_TYPE,
588 p_DATATYPE IN VARCHAR_TYPE,
589 p_SETUP_VALUE_FROM IN VARCHAR_TYPE,
590 p_SETUP_VALUE_TO IN VARCHAR_TYPE,
591 p_PRICING_ATTR_FLAG IN VARCHAR_TYPE,
592 p_OPERATOR_TYPE IN VARCHAR_TYPE,
593 p_LIST_TYPE_CODE IN VARCHAR_TYPE,
594 p_ASK_FOR_FLAG IN VARCHAR_TYPE,
595 p_QUALIFIER_TYPE IN VARCHAR_TYPE,
596 p_QUALIFIER_GROUP_CNT IN NUMBER_TYPE,
597 p_OTHERS_GROUP_CNT IN NUMBER_TYPE,
598 p_HEADER_QUALS_EXIST_FLAG IN VARCHAR_TYPE,
599 p_SEARCH_IND IN NUMBER_TYPE,
600 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
601 p_START_DATE_ACTIVE IN DATE_TYPE,
602 p_END_DATE_ACTIVE IN DATE_TYPE,
603 p_LINE_INDEX IN NUMBER_TYPE,
604 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE,
605 p_START_DATE_ACTIVE_FIR IN DATE_TYPE,
606 p_END_DATE_ACTIVE_FIR IN DATE_TYPE,
607 p_LINE_TYPE_CODE IN VARCHAR_TYPE,
608 p_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
609 p_UNIQUE_KEY IN VARCHAR_TYPE,
610 p_START_DATE_ACTIVE_H IN DATE_TYPE,
611 p_END_DATE_ACTIVE_H IN DATE_TYPE,
612 p_START_DATE_ACTIVE_SEC IN DATE_TYPE,
613 p_END_DATE_ACTIVE_SEC IN DATE_TYPE,
614 p_ACTIVE_DATE_FIR_TYPE IN VARCHAR_TYPE,
615 p_ACTIVE_DATE_SEC_TYPE IN VARCHAR_TYPE,
616 p_HEADER_LIMIT_EXISTS IN VARCHAR_TYPE,
617 p_DERIVED_QUALIFIER_FLAG IN VARCHAR_TYPE, -- Added for TCA
618 x_status_code OUT NOCOPY VARCHAR2,
619 x_status_text OUT NOCOPY VARCHAR2) AS
620
621 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_QUAL';
622
623 BEGIN
624 FORALL i in p_list_header_id.FIRST..p_list_header_id.LAST
625 Insert into QP_PREQ_QUAL_TMP
626 ( LIST_HEADER_ID
627 , LIST_LINE_ID
628 , LINE_INDEX
629 , QUALIFIER_ATTRIBUTE_LEVEL
630 , QUALIFIER_ATTRIBUTE_TYPE
631 , QUALIFIER_ATTRIBUTE_CONTEXT
632 , QUALIFIER_ATTRIBUTE
633 , QUALIFIER_ATTRIBUTE_VALUE
634 , QUALIFIER_GROUPING_NO
635 , QUALIFIER_PRECEDENCE
636 , QUALIFIER_DATATYPE
637 , SETUP_VALUE_FROM
638 , SETUP_VALUE_TO
639 , QUALIFIER_PRICING_ATTR_FLAG
640 , QUALIFIER_OPERATOR_TYPE
641 , ASK_FOR_FLAG
642 , CREATED_FROM_LIST_TYPE
643 , VALIDATED_FLAG
644 , APPLIED_FLAG
645 , QUALIFIER_TYPE
646 , QUALIFIER_GROUP_CNT
647 , OTHERS_GROUP_CNT
648 , HEADER_QUALS_EXIST_FLAG
649 , SEARCH_IND
650 , PRICING_STATUS_CODE
651 , START_DATE_ACTIVE
652 , END_DATE_ACTIVE
653 , PRICING_EFFECTIVE_DATE
654 , START_DATE_ACTIVE_FIRST
655 , END_DATE_ACTIVE_FIRST
656 , LINE_TYPE_CODE
657 , UNIQUE_KEY
658 , PRICING_PHASE_ID
659 , START_DATE_ACTIVE_H
660 , END_DATE_ACTIVE_H
661 , START_DATE_ACTIVE_SECOND
662 , END_DATE_ACTIVE_SECOND
663 , ACTIVE_DATE_FIRST_TYPE
664 , ACTIVE_DATE_SECOND_TYPE
665 , HEADER_LIMIT_EXISTS
666 , DERIVED_QUALIFIER_FLAG -- Added for TCA
667 )
668 VALUES
669 ( p_LIST_HEADER_ID(i)
670 , p_LIST_LINE_ID(i)
671 , p_LINE_INDEX(i)
672 , p_ATTRIBUTE_LEVEL(i)
673 , p_ATTRIBUTE_TYPE(i)
674 , p_CONTEXT(i)
675 , p_ATTRIBUTE(i)
676 , p_VALUE_FROM(i)
677 , p_GROUPING_NO(i)
678 , p_QUALIFIER_PRECEDENCE(i)
679 , p_DATATYPE(i)
680 , p_SETUP_VALUE_FROM(i)
681 , p_SETUP_VALUE_TO(i)
682 , p_PRICING_ATTR_FLAG(i)
683 , p_OPERATOR_TYPE(i)
684 , p_ASK_FOR_FLAG(i)
685 , p_LIST_TYPE_CODE(i)
686 , p_VALIDATED_FLAG(i)
687 , p_APPLIED_FLAG(i)
688 , p_QUALIFIER_TYPE(i)
689 , p_QUALIFIER_GROUP_CNT(i)
690 , p_OTHERS_GROUP_CNT(i)
691 , p_HEADER_QUALS_EXIST_FLAG(i)
692 , p_SEARCH_IND(i)
693 , p_PRICING_STATUS_CODE(i)
694 , p_START_DATE_ACTIVE(i)
695 , p_END_DATE_ACTIVE(i)
696 , p_PRICING_EFFECTIVE_DATE(i)
697 , p_START_DATE_ACTIVE_FIR(i)
698 , p_END_DATE_ACTIVE_FIR(i)
699 , p_LINE_TYPE_CODE(i)
700 , p_UNIQUE_KEY(i)
701 , p_PRICING_PHASE_ID(i)
702 , p_START_DATE_ACTIVE_H(i)
703 , p_END_DATE_ACTIVE_H(i)
704 , p_START_DATE_ACTIVE_SEC(i)
705 , p_END_DATE_ACTIVE_SEC(i)
706 , p_ACTIVE_DATE_FIR_TYPE(i)
707 , p_ACTIVE_DATE_SEC_TYPE(i)
708 , p_HEADER_LIMIT_EXISTS(i)
709 , p_DERIVED_QUALIFIER_FLAG(i)); -- Added for TCA
710 EXCEPTION
711 WHEN OTHERS THEN
712 x_status_code := FND_API.G_RET_STS_ERROR;
713 x_status_text :=l_routine||' '||SQLERRM;
714 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
715 engine_debug(l_routine||' '||SQLERRM);
716 END IF;
717 END;
718
719 /*+--------------------------------------------------------------------
720 |Mini_Cache_Qualifiers
721 |To get qualifiers for matched headers with search_ind=2
722 +--------------------------------------------------------------------
723 */
724
725 PROCEDURE Mini_Cache_Qualifiers( p_list_header_id IN NUMBER
726 , p_list_line_id IN NUMBER
727 , p_grouping_no IN NUMBER
728 , p_pricing_phase_id IN NUMBER
729 , x_status_code OUT NOCOPY VARCHAR2
730 , x_status_text OUT NOCOPY VARCHAR2) AS
731
732 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.Mini_Cache_Qualifiers';
733
734 /*
735 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
736 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
737 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
738 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_QUALIFIERS_N1,COMPARISON_OPERATOR_CODE,4
739 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_QUALIFIERS_N1,SEARCH_IND,5
740 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_QUALIFIERS_N1,ACTIVE_FLAG,6
741 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_QUALIFIERS_N1,QUALIFIER_GROUP_CNT,7
742
743 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
744 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
745 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
746 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
747 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
748 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
749 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,qp_npreq_line_attrs_tmp_N2,DISTINCT_QUALIFIER_FLAG,7
750
751 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_LIST_HEADERS_B_N2,LIST_HEADER_ID,1
752 */
753 -- Changed the cursor l_outer_qual_cur for bug#3002632
754 --Added index hints for bug#7480862
755 CURSOR l_MINI_OUTER_QUAL_CUR IS
756 -- Qualifier Only
757 select /*+ ORDERED NO_EXPAND USE_NL(qpq qplatq qph) index (qplatq,QP_PREQ_LINE_ATTRS_TMP_N6)
758 index(qpq qp_qualifiers_n1) index(qph qp_list_headers_b_n7) l_mini_outer_qual_cur_mod */
759 qpq.list_header_id,
760 qpq.list_line_id list_line_id,
761 qpq.qualifier_group_cnt,
762 qpq.others_group_cnt,
763 qpq.header_quals_exist_flag,
764 qpq.search_ind,
765 G_NO validated_flag,
766 G_NO applied_flag,
767 G_LINE_LEVEL attribute_level,
768 G_QUALIFIER_TYPE attribute_type,
769 qplatq.context ,
770 qplatq.attribute ,
771 qplatq.value_from ,
772 qpq.qualifier_grouping_no qualifier_grouping_no ,
773 qpq.qualifier_precedence ,
774 qpq.qualifier_datatype,
775 qpq.qualifier_attr_value ,
776 qpq.qualifier_attr_value_to ,
777 qpq.start_date_active,
778 qpq.end_date_active,
779 G_NO pricing_attr_flag,
780 qpq.comparison_operator_code ,
781 qph.list_type_code,
782 qph.ask_for_flag,
783 qplatq.pricing_status_code,
784 'OHQ1' ,
785 NULL line_index,
786 NULL pricing_effective_date,
787 qph.start_date_active_first start_date_active_first,
788 qph.end_date_active_first end_date_active_first,
789 NULL line_type_code,
790 p_pricing_phase_id pricing_phase_id,
791 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
792 qph.start_date_active start_date_active_h,
793 qph.end_date_active end_date_active_h,
794 qph.start_date_active_second start_date_active_second,
795 qph.end_date_active_second end_date_active_second,
796 qph.active_date_first_type,
797 qph.active_date_second_type,
798 qph.limit_exists_flag,
799 qplatq.derived_qualifier_flag -- Added for TCA
800 from
801 (select /*+ index(qp_preq_qual_tmp QP_PREQ_QUAL_TMP_N7) */ distinct list_header_id,list_line_id,qualifier_grouping_no
802 from qp_preq_qual_tmp
803 where pricing_status_code = G_STATUS_UNCHANGED
804 and pricing_phase_id = p_pricing_phase_id) qptq,
805 qp_qualifiers qpq ,
806 qp_npreq_line_attrs_tmp qplatq,
807 qp_list_headers_b qph,
808 qp_price_req_sources_v qprs
809 where
810 qpq.list_header_id = qptq.list_header_id
811 and qpq.list_line_id = qptq.list_line_id
812 and qpq.qualifier_grouping_no = qptq.qualifier_grouping_no
813 and qpq.qualifier_grouping_no <> -1
814 and qpq.qualifier_context = qplatq.context
815 and qpq.qualifier_attribute = qplatq.attribute
816 and qpq.qualifier_attr_value = qplatq.value_from
817 and qpq.comparison_operator_code = '='
818 and qpq.search_ind = 2
819 and qpq.qualifier_group_cnt > 1
820 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
821 OR
822 qph.currency_code IS NULL) -- optional currency
823 -- bug 2799120
824 --added for moac -- commented references to security profile
825 --security will be built into qp_list_headers_b
826 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
827 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
828 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
829 --Begin Bug# 7833575
830 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
831 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
832 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
833 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
834 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
835 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
836 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
837 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
838 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
839 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
840 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
841 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
842 --End Bug# 7833575
843 and qph.list_type_code not in ('PRL','AGR')
844 and qph.active_flag = G_YES
845 and qpq.active_flag = G_YES
846 and qpq.list_header_id = qph.list_header_id
847 and qplatq.line_index > 0
848 and qplatq.distinct_qualifier_flag = G_YES
849 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
850 and qplatq.attribute_type = G_QUALIFIER_TYPE
851 and qprs.request_type_code = G_REQUEST_TYPE_CODE
852 and qph.source_system_code = qprs.source_system_code
853 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
854 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
855 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
856 --and qptq.pricing_phase_id = p_pricing_phase_id
857 union all
858 select /*+ ORDERED USE_NL(qpq qplatq qph) index (qplatq,QP_PREQ_LINE_ATTRS_TMP_N6) index(qpq qp_qualifiers_n1) index(qph qp_list_headers_b_n7) l_mini_o
859 uter_qual_cur_mod */
860 qpq.list_header_id,
861 qpq.list_line_id list_line_id,
862 qpq.qualifier_group_cnt,
863 qpq.others_group_cnt,
864 qpq.header_quals_exist_flag,
865 qpq.search_ind,
866 G_NO validated_flag,
867 G_NO applied_flag,
868 G_LINE_LEVEL attribute_level,
869 G_QUALIFIER_TYPE attribute_type,
870 qplatq.context ,
871 qplatq.attribute ,
872 qplatq.value_from ,
873 qpq.qualifier_grouping_no qualifier_grouping_no ,
874 qpq.qualifier_precedence ,
875 qpq.qualifier_datatype,
876 qpq.qualifier_attr_value ,
877 qpq.qualifier_attr_value_to ,
878 qpq.start_date_active,
879 qpq.end_date_active,
880 G_NO pricing_attr_flag,
881 qpq.comparison_operator_code ,
882 qph.list_type_code,
883 qph.ask_for_flag,
884 qplatq.pricing_status_code,
885 'OHQ1' ,
886 NULL line_index,
887 NULL pricing_effective_date,
888 qph.start_date_active_first start_date_active_first,
889 qph.end_date_active_first end_date_active_first,
890 NULL line_type_code,
891 p_pricing_phase_id pricing_phase_id,
892 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
893 qph.start_date_active start_date_active_h,
894 qph.end_date_active end_date_active_h,
895 qph.start_date_active_second start_date_active_second,
896 qph.end_date_active_second end_date_active_second,
897 qph.active_date_first_type,
898 qph.active_date_second_type,
899 qph.limit_exists_flag,
900 qplatq.derived_qualifier_flag -- Added for TCA
901 from
902 (select /*+ index(qp_preq_qual_tmp QP_PREQ_QUAL_TMP_N7) */ distinct list_header_id,list_line_id
903 from qp_preq_qual_tmp
904 where pricing_status_code = G_STATUS_UNCHANGED
905 and pricing_phase_id = p_pricing_phase_id) qptq,
906 qp_qualifiers qpq ,
907 qp_npreq_line_attrs_tmp qplatq,
908 qp_list_headers_b qph,
909 qp_price_req_sources_v qprs
910 where
911 qpq.list_header_id = qptq.list_header_id
912 and qpq.list_line_id = qptq.list_line_id
913 and qpq.qualifier_grouping_no = -1
914 and qpq.qualifier_context = qplatq.context
915 and qpq.qualifier_attribute = qplatq.attribute
916 and qpq.qualifier_attr_value = qplatq.value_from
917 and qpq.comparison_operator_code = '='
918 and qpq.search_ind = 2
919 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
920 OR
921 qph.currency_code IS NULL) -- optional currency
922 -- bug 2799120
923 --added for moac -- commented references to security profile
924 --security will be built into qp_list_headers_b
925 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
926 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
927 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
928 --Begin Bug# 7833575
929 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
930 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
931 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
932 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
933 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
934 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
935 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
936 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
937 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
938 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
939 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
940 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
941 --End Bug# 7833575
942
943 and qph.list_type_code not in ('PRL','AGR')
944 and qph.active_flag = G_YES
945 and qpq.active_flag = G_YES
946 and qpq.list_header_id = qph.list_header_id
947 and qplatq.line_index > 0
948 and qplatq.distinct_qualifier_flag = G_YES
949 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
950 and qplatq.attribute_type = G_QUALIFIER_TYPE
951 and qprs.request_type_code = G_REQUEST_TYPE_CODE
952 and qph.source_system_code = qprs.source_system_code
953 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
954 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
955 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
956 --and qptq.pricing_phase_id = p_pricing_phase_id
957 union all
958 select /*+ ORDERED USE_NL(qpq qplatq qph) index (qplatq,QP_PREQ_LINE_ATTRS_TMP_N6) index(qpq qp_qualifiers_n1) index(qph qp_list_headers_b_n7) l_mini_outer_qual_cur_mod */
959 qpq.list_header_id,
960 qpq.list_line_id list_line_id,
961 qpq.qualifier_group_cnt,
962 qpq.others_group_cnt,
963 qpq.header_quals_exist_flag,
964 qpq.search_ind,
965 G_NO validated_flag,
966 G_NO applied_flag,
967 G_LINE_LEVEL attribute_level,
968 G_QUALIFIER_TYPE attribute_type,
969 qplatq.context ,
970 qplatq.attribute ,
971 qplatq.value_from ,
972 qpq.qualifier_grouping_no qualifier_grouping_no ,
973 qpq.qualifier_precedence ,
974 qpq.qualifier_datatype,
975 qpq.qualifier_attr_value ,
976 qpq.qualifier_attr_value_to ,
977 qpq.start_date_active,
978 qpq.end_date_active,
979 G_NO pricing_attr_flag,
980 qpq.comparison_operator_code ,
981 qph.list_type_code,
982 qph.ask_for_flag,
983 qplatq.pricing_status_code,
984 'OHQ1' ,
985 NULL line_index,
986 NULL pricing_effective_date,
987 qph.start_date_active_first start_date_active_first,
988 qph.end_date_active_first end_date_active_first,
989 NULL line_type_code,
990 p_pricing_phase_id pricing_phase_id,
991 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
992 qph.start_date_active start_date_active_h,
993 qph.end_date_active end_date_active_h,
994 qph.start_date_active_second start_date_active_second,
995 qph.end_date_active_second end_date_active_second,
996 qph.active_date_first_type,
997 qph.active_date_second_type,
998 qph.limit_exists_flag,
999 qplatq.derived_qualifier_flag -- Added for TCA
1000 from
1001 (select /*+ index(qp_preq_qual_tmp QP_PREQ_QUAL_TMP_N7) */ distinct list_header_id,list_line_id,qualifier_grouping_no
1002 from qp_preq_qual_tmp
1003 where pricing_status_code = G_STATUS_UNCHANGED
1004 and pricing_phase_id = p_pricing_phase_id) qptq,
1005 qp_qualifiers qpq ,
1006 qp_npreq_line_attrs_tmp qplatq,
1007 qp_list_headers_b qph,
1008 qp_price_req_sources_v qprs
1009 where
1010 qpq.list_header_id = qptq.list_header_id
1011 and qpq.list_line_id = qptq.list_line_id
1012 and qpq.qualifier_grouping_no = qptq.qualifier_grouping_no
1013 and qpq.qualifier_grouping_no <> -1
1014 and qpq.qualifier_context = qplatq.context
1015 and qpq.qualifier_attribute = qplatq.attribute
1016 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
1017 and qpq.qualifier_datatype = G_NUMERIC
1018 and qpq.search_ind = 2
1019 and qpq.qualifier_group_cnt > 1
1020 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
1021 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number
1022 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1023 OR
1024 qph.currency_code IS NULL) -- optional currency
1025 -- bug 2799120
1026 --added for moac -- commented references to security profile
1027 --security will be built into qp_list_headers_b
1028 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1029 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1030 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1031 --Begin Bug# 7833575
1032 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1033 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1034 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1035 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1036 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1037 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1038 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1039 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
1040 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1041 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1042 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1043 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1044 --End Bug# 7833575
1045 and qph.list_type_code not in ('PRL','AGR')
1046 and qph.active_flag = G_YES
1047 and qpq.active_flag = G_YES
1048 and qpq.list_header_id = qph.list_header_id
1049 and qplatq.line_index > 0
1050 and qplatq.distinct_qualifier_flag = G_YES
1051 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
1052 and qplatq.attribute_type = G_QUALIFIER_TYPE
1053 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1054 and qph.source_system_code = qprs.source_system_code
1055 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1056 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
1057 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
1058 --and qptq.pricing_phase_id = p_pricing_phase_id
1059 union all
1060 select /*+ ORDERED USE_NL(qpq qplatq qph) index (qplatq,QP_PREQ_LINE_ATTRS_TMP_N6) index(qpq qp_qualifiers_n1) index(qph qp_list_headers_b_n7) l_mini_ou
1061 ter_qual_cur_mod */
1062 qpq.list_header_id,
1063 qpq.list_line_id list_line_id,
1064 qpq.qualifier_group_cnt,
1065 qpq.others_group_cnt,
1066 qpq.header_quals_exist_flag,
1067 qpq.search_ind,
1068 G_NO validated_flag,
1069 G_NO applied_flag,
1070 G_LINE_LEVEL attribute_level,
1071 G_QUALIFIER_TYPE attribute_type,
1072 qplatq.context ,
1073 qplatq.attribute ,
1074 qplatq.value_from ,
1075 qpq.qualifier_grouping_no qualifier_grouping_no ,
1076 qpq.qualifier_precedence ,
1077 qpq.qualifier_datatype,
1078 qpq.qualifier_attr_value ,
1079 qpq.qualifier_attr_value_to ,
1080 qpq.start_date_active,
1081 qpq.end_date_active,
1082 G_NO pricing_attr_flag,
1083 qpq.comparison_operator_code ,
1084 qph.list_type_code,
1085 qph.ask_for_flag,
1086 qplatq.pricing_status_code,
1087 'OHQ1' ,
1088 NULL line_index,
1089 NULL pricing_effective_date,
1090 qph.start_date_active_first start_date_active_first,
1091 qph.end_date_active_first end_date_active_first,
1092 NULL line_type_code,
1093 p_pricing_phase_id pricing_phase_id,
1094 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1095 qph.start_date_active start_date_active_h,
1096 qph.end_date_active end_date_active_h,
1097 qph.start_date_active_second start_date_active_second,
1098 qph.end_date_active_second end_date_active_second,
1099 qph.active_date_first_type,
1100 qph.active_date_second_type,
1101 qph.limit_exists_flag,
1102 qplatq.derived_qualifier_flag -- Added for TCA
1103 from
1104 (select /*+ index(qp_preq_qual_tmp QP_PREQ_QUAL_TMP_N7) */ distinct list_header_id,list_line_id
1105 from qp_preq_qual_tmp
1106 where pricing_status_code = G_STATUS_UNCHANGED
1107 and pricing_phase_id = p_pricing_phase_id) qptq,
1108 qp_qualifiers qpq ,
1109 qp_npreq_line_attrs_tmp qplatq,
1110 qp_list_headers_b qph,
1111 qp_price_req_sources_v qprs
1112 where
1113 qpq.list_header_id = qptq.list_header_id
1114 and qpq.list_line_id = qptq.list_line_id
1115 and qpq.qualifier_grouping_no = -1
1116 and qpq.qualifier_context = qplatq.context
1117 and qpq.qualifier_attribute = qplatq.attribute
1118 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
1119 and qpq.qualifier_datatype = G_NUMERIC
1120 and qpq.search_ind = 2
1121 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
1122 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number
1123 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1124 OR
1125 qph.currency_code IS NULL) -- optional currency
1126 -- bug 2799120
1127 --added for moac -- commented references to security profile
1128 --security will be built into qp_list_headers_b
1129 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1130 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1131 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1132 --Begin Bug# 7833575
1133 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1134 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1135 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1136 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1137 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1138 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1139 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1140 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
1141 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1142 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1143 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1144 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1145 --End Bug# 7833575
1146 and qph.list_type_code not in ('PRL','AGR')
1147 and qph.active_flag = G_YES
1148 and qpq.active_flag = G_YES
1149 and qpq.list_header_id = qph.list_header_id
1150 and qplatq.line_index > 0
1151 and qplatq.distinct_qualifier_flag = G_YES
1152 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
1153 and qplatq.attribute_type = G_QUALIFIER_TYPE
1154 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1155 and qph.source_system_code = qprs.source_system_code
1156 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1157 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
1158 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
1159 --and qptq.pricing_phase_id = p_pricing_phase_id
1160 union all
1161 select /*+ ORDERED USE_NL(qpq qplatq qph) index (qplatq,QP_PREQ_LINE_ATTRS_TMP_N6) index(qpq qp_qualifiers_n1) index(qph qp_list_headers_b_n7) l_mini_outer_qual_cur_mod */
1162 qpq.list_header_id,
1163 qpq.list_line_id list_line_id,
1164 qpq.qualifier_group_cnt,
1165 qpq.others_group_cnt,
1166 qpq.header_quals_exist_flag,
1167 qpq.search_ind,
1168 G_NO validated_flag,
1169 G_NO applied_flag,
1170 G_LINE_LEVEL attribute_level,
1171 G_QUALIFIER_TYPE attribute_type,
1172 qplatq.context ,
1173 qplatq.attribute ,
1174 qplatq.value_from ,
1175 qpq.qualifier_grouping_no qualifier_grouping_no ,
1176 qpq.qualifier_precedence ,
1177 qpq.qualifier_datatype,
1178 qpq.qualifier_attr_value ,
1179 qpq.qualifier_attr_value_to ,
1180 qpq.start_date_active,
1181 qpq.end_date_active,
1182 G_NO pricing_attr_flag,
1183 qpq.comparison_operator_code ,
1184 qph.list_type_code,
1185 qph.ask_for_flag,
1186 qplatq.pricing_status_code,
1187 'OHQ1' ,
1188 NULL line_index,
1189 NULL pricing_effective_date,
1190 qph.start_date_active_first start_date_active_first,
1191 qph.end_date_active_first end_date_active_first,
1192 NULL line_type_code,
1193 p_pricing_phase_id pricing_phase_id,
1194 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1195 qph.start_date_active start_date_active_h,
1196 qph.end_date_active end_date_active_h,
1197 qph.start_date_active_second start_date_active_second,
1198 qph.end_date_active_second end_date_active_second,
1199 qph.active_date_first_type,
1200 qph.active_date_second_type,
1201 qph.limit_exists_flag,
1202 qplatq.derived_qualifier_flag -- Added for TCA
1203 from
1204 (select /*+ index(qp_preq_qual_tmp QP_PREQ_QUAL_TMP_N7) */ distinct list_header_id,list_line_id,qualifier_grouping_no
1205 from qp_preq_qual_tmp
1206 where pricing_status_code = G_STATUS_UNCHANGED
1207 and pricing_phase_id = p_pricing_phase_id) qptq,
1208 qp_qualifiers qpq ,
1209 qp_npreq_line_attrs_tmp qplatq,
1210 qp_list_headers_b qph,
1211 qp_price_req_sources_v qprs
1212 where
1213 qpq.list_header_id = qptq.list_header_id
1214 and qpq.list_line_id = qptq.list_line_id
1215 and qpq.qualifier_grouping_no = qptq.qualifier_grouping_no
1216 and qpq.qualifier_grouping_no <> -1
1217 and qpq.qualifier_context = qplatq.context
1218 and qpq.qualifier_attribute = qplatq.attribute
1219 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
1220 and qpq.search_ind = 2
1221 and qpq.qualifier_group_cnt > 1
1222 and qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y)
1223 --and decode(qpq.qualifier_datatype,G_VARCHAR,qplatq.value_from,G_DATE_X,qplatq.value_from,
1224 -- G_DATE_Y,qplatq.value_from,null)
1225 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to
1226 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1227 OR
1228 qph.currency_code IS NULL) -- optional currency
1229 -- bug 2799120
1230 --added for moac -- commented references to security profile
1231 --security will be built into qp_list_headers_b
1232 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1233 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1234 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1235 and qph.active_flag = G_YES
1236 --Begin Bug# 7833575
1237 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1238 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1239 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1240 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1241 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1242 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1243 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1244 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
1245 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1246 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1247 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1248 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1249 --End Bug# 7833575
1250 and qph.list_type_code not in ('PRL','AGR')
1251 and qpq.active_flag = G_YES
1252 and qplatq.line_index > 0
1253 and qplatq.distinct_qualifier_flag = G_YES
1254 and qpq.list_header_id = qph.list_header_id
1255 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
1256 and qplatq.attribute_type = G_QUALIFIER_TYPE
1257 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1258 and qph.source_system_code = qprs.source_system_code
1259 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1260 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
1261 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
1262 --and qptq.pricing_phase_id = p_pricing_phase_id
1263 union all
1264 select /*+ ORDERED USE_NL(qpq qplh qph) index (qplatq,QP_PREQ_LINE_ATTRS_TMP_N6) index(qpq qp_qualifiers_n1) index(qph qp_list_headers_b_n7) l_mini_out
1265 er_qual_cur_mod */
1266 qpq.list_header_id,
1267 qpq.list_line_id list_line_id,
1268 qpq.qualifier_group_cnt,
1269 qpq.others_group_cnt,
1270 qpq.header_quals_exist_flag,
1271 qpq.search_ind,
1272 G_NO validated_flag,
1273 G_NO applied_flag,
1274 G_LINE_LEVEL attribute_level,
1275 G_QUALIFIER_TYPE attribute_type,
1276 qplatq.context ,
1277 qplatq.attribute ,
1278 qplatq.value_from ,
1279 qpq.qualifier_grouping_no qualifier_grouping_no ,
1280 qpq.qualifier_precedence ,
1281 qpq.qualifier_datatype,
1282 qpq.qualifier_attr_value ,
1283 qpq.qualifier_attr_value_to ,
1284 qpq.start_date_active,
1285 qpq.end_date_active,
1286 G_NO pricing_attr_flag,
1287 qpq.comparison_operator_code ,
1288 qph.list_type_code,
1289 qph.ask_for_flag,
1290 qplatq.pricing_status_code,
1291 'OHQ1' ,
1292 NULL line_index,
1293 NULL pricing_effective_date,
1294 qph.start_date_active_first start_date_active_first,
1295 qph.end_date_active_first end_date_active_first,
1296 NULL line_type_code,
1297 p_pricing_phase_id pricing_phase_id,
1298 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1299 qph.start_date_active start_date_active_h,
1300 qph.end_date_active end_date_active_h,
1301 qph.start_date_active_second start_date_active_second,
1302 qph.end_date_active_second end_date_active_second,
1303 qph.active_date_first_type,
1304 qph.active_date_second_type,
1305 qph.limit_exists_flag,
1306 qplatq.derived_qualifier_flag -- Added for TCA
1307 from
1308 (select /*+ index(qp_preq_qual_tmp QP_PREQ_QUAL_TMP_N7) */ distinct list_header_id,list_line_id
1309 from qp_preq_qual_tmp
1310 where pricing_status_code = G_STATUS_UNCHANGED
1311 and pricing_phase_id = p_pricing_phase_id) qptq,
1312 qp_qualifiers qpq ,
1313 qp_npreq_line_attrs_tmp qplatq,
1314 qp_list_headers_b qph,
1315 qp_price_req_sources_v qprs
1316 where
1317 qpq.list_header_id = qptq.list_header_id
1318 and qpq.list_line_id = qptq.list_line_id
1319 and qpq.qualifier_grouping_no = -1
1320 and qpq.qualifier_context = qplatq.context
1321 and qpq.qualifier_attribute = qplatq.attribute
1322 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
1323 and qpq.search_ind = 2
1324 and qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y)
1325 --and decode(qpq.qualifier_datatype,G_VARCHAR,qplatq.value_from,G_DATE_X,qplatq.value_from,
1326 -- G_DATE_Y,qplatq.value_from,null)
1327 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to
1328 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1329 OR
1330 qph.currency_code IS NULL) -- optional currency
1331 -- bug 2799120
1332 --added for moac -- commented references to security profile
1333 --security will be built into qp_list_headers_b
1334 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1335 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1336 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1337 and qph.active_flag = G_YES
1338 --Begin Bug# 7833575
1339 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1340 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1341 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1342 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1343 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1344 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1345 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1346 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
1347 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1348 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1349 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1350 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1351 --End Bug# 7833575
1352 and qph.list_type_code not in ('PRL','AGR')
1353 and qpq.active_flag = G_YES
1354 and qplatq.line_index > 0
1355 and qplatq.distinct_qualifier_flag = G_YES
1356 and qpq.list_header_id = qph.list_header_id
1357 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
1358 and qplatq.attribute_type = G_QUALIFIER_TYPE
1359 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1360 and qph.source_system_code = qprs.source_system_code
1361 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1362 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
1363 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
1364 --and qptq.pricing_phase_id = p_pricing_phase_id
1365 union all
1366 select /*+ ORDERED USE_NL(qpq qplh qph) index (qplatq,QP_PREQ_LINE_ATTRS_TMP_N7)
1367 index(qpq qp_qualifiers_n1) index(qph qp_list_headers_b_n7) l_mini_outer_qual_cur_mod */
1368 qpq.list_header_id,
1369 qpq.list_line_id list_line_id,
1370 qpq.qualifier_group_cnt,
1371 qpq.others_group_cnt,
1372 qpq.header_quals_exist_flag,
1373 qpq.search_ind,
1374 G_NO validated_flag,
1375 G_NO applied_flag,
1376 G_LINE_LEVEL attribute_level,
1377 G_QUALIFIER_TYPE attribute_type,
1378 qplatq.context ,
1379 qplatq.attribute ,
1380 qplatq.value_from ,
1381 qpq.qualifier_grouping_no qualifier_grouping_no ,
1382 qpq.qualifier_precedence ,
1383 qpq.qualifier_datatype,
1384 qpq.qualifier_attr_value ,
1385 qpq.qualifier_attr_value_to ,
1386 qpq.start_date_active,
1387 qpq.end_date_active,
1388 G_NO pricing_attr_flag,
1389 qpq.comparison_operator_code ,
1390 qph.list_type_code,
1391 qph.ask_for_flag,
1392 qplatq.pricing_status_code,
1393 'OHQ1' ,
1394 NULL line_index,
1395 NULL pricing_effective_date,
1396 qph.start_date_active_first start_date_active_first,
1397 qph.end_date_active_first end_date_active_first,
1398 NULL line_type_code,
1399 p_pricing_phase_id pricing_phase_id,
1400 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1401 qph.start_date_active start_date_active_h,
1402 qph.end_date_active end_date_active_h,
1403 qph.start_date_active_second start_date_active_second,
1404 qph.end_date_active_second end_date_active_second,
1405 qph.active_date_first_type,
1406 qph.active_date_second_type,
1407 qph.limit_exists_flag,
1408 qplatq.derived_qualifier_flag -- Added for TCA
1409 from
1410 (select /*+ index(qp_preq_qual_tmp QP_PREQ_QUAL_TMP_N7) */ distinct list_header_id,list_line_id,qualifier_grouping_no
1411 from qp_preq_qual_tmp
1412 where pricing_status_code = G_STATUS_UNCHANGED
1413 and pricing_phase_id = p_pricing_phase_id) qptq,
1414 qp_qualifiers qpq ,
1415 qp_npreq_line_attrs_tmp qplatq,
1416 qp_list_headers_b qph,
1417 qp_price_req_sources_v qprs
1418 where
1419 qpq.list_header_id = qptq.list_header_id
1420 and qpq.list_line_id = qptq.list_line_id
1421 and qpq.qualifier_grouping_no = qptq.qualifier_grouping_no
1422 and qpq.qualifier_grouping_no <> -1
1423 and qpq.qualifier_context = qplatq.context
1424 and qpq.qualifier_attribute = qplatq.attribute
1425 and qpq.comparison_operator_code = 'NOT ='
1426 and qpq.qualifier_attr_value <> qplatq.value_from
1427 and qpq.search_ind = 2
1428 and qpq.qualifier_group_cnt > 1
1429 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1430 OR
1431 qph.currency_code IS NULL) -- optional currency
1432 -- bug 2799120
1433 --added for moac -- commented references to security profile
1434 --security will be built into qp_list_headers_b
1435 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1436 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1437 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1438 --Begin Bug# 7833575
1439 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1440 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1441 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1442 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1443 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1444 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1445 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1446 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
1447 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1448 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1449 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1450 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1451 --End Bug# 7833575
1452 and qph.list_type_code not in ('PRL','AGR')
1453 and qph.active_flag = G_YES
1454 and qpq.active_flag = G_YES
1455 and qpq.list_header_id = qph.list_header_id
1456 and qplatq.line_index > 0
1457 and qplatq.distinct_qualifier_flag = G_YES
1458 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
1459 and qplatq.attribute_type = G_QUALIFIER_TYPE
1460 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1461 and qph.source_system_code = qprs.source_system_code
1462 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1463 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
1464 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
1465 --and qptq.pricing_phase_id = p_pricing_phase_id
1466 union all
1467 select /*+ ORDERED USE_NL(qpq qplh qph) index (qplatq,QP_PREQ_LINE_ATTRS_TMP_N7)
1468 index(qpq qp_qualifiers_n1) index(qph qp_list_headers_b_n7) l_mini_outer_qual_cur_mod */
1469 qpq.list_header_id,
1470 qpq.list_line_id list_line_id,
1471 qpq.qualifier_group_cnt,
1472 qpq.others_group_cnt,
1473 qpq.header_quals_exist_flag,
1474 qpq.search_ind,
1475 G_NO validated_flag,
1476 G_NO applied_flag,
1477 G_LINE_LEVEL attribute_level,
1478 G_QUALIFIER_TYPE attribute_type,
1479 qplatq.context ,
1480 qplatq.attribute ,
1481 qplatq.value_from ,
1482 qpq.qualifier_grouping_no qualifier_grouping_no ,
1483 qpq.qualifier_precedence ,
1484 qpq.qualifier_datatype,
1485 qpq.qualifier_attr_value ,
1486 qpq.qualifier_attr_value_to ,
1487 qpq.start_date_active,
1488 qpq.end_date_active,
1489 G_NO pricing_attr_flag,
1490 qpq.comparison_operator_code ,
1491 qph.list_type_code,
1492 qph.ask_for_flag,
1493 qplatq.pricing_status_code,
1494 'OHQ1' ,
1495 NULL line_index,
1496 NULL pricing_effective_date,
1497 qph.start_date_active_first start_date_active_first,
1498 qph.end_date_active_first end_date_active_first,
1499 NULL line_type_code,
1500 p_pricing_phase_id pricing_phase_id,
1501 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1502 qph.start_date_active start_date_active_h,
1503 qph.end_date_active end_date_active_h,
1504 qph.start_date_active_second start_date_active_second,
1505 qph.end_date_active_second end_date_active_second,
1506 qph.active_date_first_type,
1507 qph.active_date_second_type,
1508 qph.limit_exists_flag,
1509 qplatq.derived_qualifier_flag -- Added for TCA
1510 from
1511 (select /*+ index(qp_preq_qual_tmp QP_PREQ_QUAL_TMP_N7) */ distinct list_header_id,list_line_id
1512 from qp_preq_qual_tmp
1513 where pricing_status_code = G_STATUS_UNCHANGED
1514 and pricing_phase_id = p_pricing_phase_id) qptq,
1515 qp_qualifiers qpq ,
1516 qp_npreq_line_attrs_tmp qplatq,
1517 qp_list_headers_b qph,
1518 qp_price_req_sources_v qprs
1519 where
1520 qpq.list_header_id = qptq.list_header_id
1521 and qpq.list_line_id = qptq.list_line_id
1522 and qpq.qualifier_grouping_no = -1
1523 and qpq.qualifier_context = qplatq.context
1524 and qpq.qualifier_attribute = qplatq.attribute
1525 and qpq.comparison_operator_code = 'NOT ='
1526 and qpq.qualifier_attr_value <> qplatq.value_from
1527 and qpq.search_ind = 2
1528 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1529 OR
1530 qph.currency_code IS NULL) -- optional currency
1531 -- bug 2799120
1532 --added for moac -- commented references to security profile
1533 --security will be built into qp_list_headers_b
1534 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1535 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1536 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1537 --Begin Bug# 7833575
1538 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1539 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1540 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1541 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1542 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1543 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1544 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1545 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
1546 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1547 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1548 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1549 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1550 --End Bug# 7833575
1551 and qph.list_type_code not in ('PRL','AGR')
1552 and qph.active_flag = G_YES
1553 and qpq.active_flag = G_YES
1554 and qpq.list_header_id = qph.list_header_id
1555 and qplatq.line_index > 0
1556 and qplatq.distinct_qualifier_flag = G_YES
1557 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
1558 and qplatq.attribute_type = G_QUALIFIER_TYPE
1559 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1560 and qph.source_system_code = qprs.source_system_code
1561 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1562 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')); -- Added for TCA
1563
1564 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
1565 --and qptq.pricing_phase_id = p_pricing_phase_id;
1566
1567 nROWS CONSTANT NUMBER := 1000;
1568
1569 l_status_code VARCHAR2(30);
1570 l_status_text VARCHAR2(240);
1571 E_ROUTINE_ERRORS EXCEPTION;
1572
1573 BEGIN
1574
1575 --Delete from QP_PREQ_QUAL_TMP;
1576
1577 --G_QUALIFIER_TEMP := G_QUALIFIER_TEMP_EMPTY;
1578
1579 OPEN l_mini_outer_qual_cur;
1580
1581 LOOP
1582 G_LIST_HEADER_ID_TBL_Q.delete;
1583 G_LIST_LINE_ID_TBL_Q.delete;
1584 G_VALIDATED_FLAG_TBL_Q.delete;
1585 G_APPLIED_FLAG_TBL_Q.delete;
1586 G_ATTRIBUTE_LEVEL_TBL_Q.delete;
1587 G_ATTRIBUTE_TYPE_TBL_Q.delete;
1588 G_CONTEXT_TBL_Q.delete;
1589 G_ATTRIBUTE_TBL_Q.delete;
1590 G_VALUE_FROM_TBL_Q.delete;
1591 G_GROUPING_NO_TBL_Q.delete;
1592 G_QUALIFIER_PRECEDENCE_TBL_Q.delete;
1593 G_DATATYPE_TBL_Q.delete;
1594 G_SETUP_VALUE_FROM_TBL_Q.delete;
1595 G_SETUP_VALUE_TO_TBL_Q.delete;
1596 G_PRICING_ATTR_FLAG_TBL_Q.delete;
1597 G_OPERATOR_TYPE_TBL_Q.delete;
1598 G_QUALIFIER_TYPE_TBL_Q.delete;
1599 G_LIST_TYPE_CODE_TBL_Q.delete;
1600 G_ASK_FOR_FLAG_TBL_Q.delete;
1601 G_QUALIFIER_GROUP_CNT_TBL_Q.delete;
1602 G_OTHERS_GROUP_CNT_TBL_Q.delete;
1603 G_HEADER_QUALS_EXIST_FLG_TBL_Q.delete;
1604 G_SEARCH_IND_TBL_Q.delete;
1605 G_PRICING_STATUS_CODE_TBL_Q.delete;
1606 G_START_DATE_ACTIVE_TBL_Q.delete;
1607 G_END_DATE_ACTIVE_TBL_Q.delete;
1608 G_LINE_INDEX_TBL_Q.delete;
1609 G_PRICING_EFFECTIVE_DATE_TBL_Q.delete;
1610 G_START_DATE_ACTIVE_FIR_TBL_Q.delete;
1611 G_END_DATE_ACTIVE_FIR_TBL_Q.delete;
1612 G_LINE_TYPE_CODE_TBL_Q.delete;
1613 G_PRICING_PHASE_ID_TBL_Q.delete;
1614 G_UNIQUE_KEY_TBL_Q.delete;
1615 G_START_DATE_ACTIVE_TBL_H_Q.delete;
1616 G_END_DATE_ACTIVE_TBL_H_Q.delete;
1617 G_START_DATE_ACTIVE_SEC_TBL_Q.delete;
1618 G_END_DATE_ACTIVE_SEC_TBL_Q.delete;
1619 G_ACTIVE_DATE_FIR_TYPE_TBL_Q.delete;
1620 G_ACTIVE_DATE_SEC_TYPE_TBL_Q.delete;
1621 G_HEADER_LIMIT_EXISTS_TBL_Q.delete;
1622 G_DERIVED_QUALIFIER_FLAG_TBL_Q.delete; -- Added for TCA
1623
1624 FETCH l_mini_outer_qual_cur
1625 BULK COLLECT INTO
1626 G_LIST_HEADER_ID_TBL_Q
1627 , G_LIST_LINE_ID_TBL_Q
1628 , G_QUALIFIER_GROUP_CNT_TBL_Q
1629 , G_OTHERS_GROUP_CNT_TBL_Q
1630 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
1631 , G_SEARCH_IND_TBL_Q
1632 , G_VALIDATED_FLAG_TBL_Q
1633 , G_APPLIED_FLAG_TBL_Q
1634 , G_ATTRIBUTE_LEVEL_TBL_Q
1635 , G_ATTRIBUTE_TYPE_TBL_Q
1636 , G_CONTEXT_TBL_Q
1637 , G_ATTRIBUTE_TBL_Q
1638 , G_VALUE_FROM_TBL_Q
1639 , G_GROUPING_NO_TBL_Q
1640 , G_QUALIFIER_PRECEDENCE_TBL_Q
1641 , G_DATATYPE_TBL_Q
1642 , G_SETUP_VALUE_FROM_TBL_Q
1643 , G_SETUP_VALUE_TO_TBL_Q
1644 , G_START_DATE_ACTIVE_TBL_Q
1645 , G_END_DATE_ACTIVE_TBL_Q
1646 , G_PRICING_ATTR_FLAG_TBL_Q
1647 , G_OPERATOR_TYPE_TBL_Q
1648 , G_LIST_TYPE_CODE_TBL_Q
1649 , G_ASK_FOR_FLAG_TBL_Q
1650 , G_PRICING_STATUS_CODE_TBL_Q
1651 , G_QUALIFIER_TYPE_TBL_Q
1652 , G_LINE_INDEX_TBL_Q
1653 , G_PRICING_EFFECTIVE_DATE_TBL_Q
1654 , G_START_DATE_ACTIVE_FIR_TBL_Q
1655 , G_END_DATE_ACTIVE_FIR_TBL_Q
1656 , G_LINE_TYPE_CODE_TBL_Q
1657 , G_PRICING_PHASE_ID_TBL_Q
1658 , G_UNIQUE_KEY_TBL_Q
1659 , G_START_DATE_ACTIVE_TBL_H_Q
1660 , G_END_DATE_ACTIVE_TBL_H_Q
1661 , G_START_DATE_ACTIVE_SEC_TBL_Q
1662 , G_END_DATE_ACTIVE_SEC_TBL_Q
1663 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
1664 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
1665 , G_HEADER_LIMIT_EXISTS_TBL_Q
1666 , G_DERIVED_QUALIFIER_FLAG_TBL_Q LIMIT nROWS; -- Added for TCA
1667 EXIT WHEN G_LIST_HEADER_ID_TBL_Q.COUNT = 0;
1668
1669 IF (G_LIST_HEADER_ID_TBL_Q.COUNT > 0) THEN
1670 --G_QUALIFIER_TEMP := G_QUALIFIER_TEMP_UPDATED;
1671 INSERT_QUAL(
1672 G_LIST_HEADER_ID_TBL_Q
1673 , G_LIST_LINE_ID_TBL_Q
1674 , G_VALIDATED_FLAG_TBL_Q
1675 , G_APPLIED_FLAG_TBL_Q
1676 , G_ATTRIBUTE_LEVEL_TBL_Q
1677 , G_ATTRIBUTE_TYPE_TBL_Q
1678 , G_CONTEXT_TBL_Q
1679 , G_ATTRIBUTE_TBL_Q
1680 , G_VALUE_FROM_TBL_Q
1681 , G_GROUPING_NO_TBL_Q
1682 , G_QUALIFIER_PRECEDENCE_TBL_Q
1683 , G_DATATYPE_TBL_Q
1684 , G_SETUP_VALUE_FROM_TBL_Q
1685 , G_SETUP_VALUE_TO_TBL_Q
1686 , G_PRICING_ATTR_FLAG_TBL_Q
1687 , G_OPERATOR_TYPE_TBL_Q
1688 , G_LIST_TYPE_CODE_TBL_Q
1689 , G_ASK_FOR_FLAG_TBL_Q
1690 , G_QUALIFIER_TYPE_TBL_Q
1691 , G_QUALIFIER_GROUP_CNT_TBL_Q
1692 , G_OTHERS_GROUP_CNT_TBL_Q
1693 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
1694 , G_SEARCH_IND_TBL_Q
1695 , G_PRICING_STATUS_CODE_TBL_Q
1696 , G_START_DATE_ACTIVE_TBL_Q
1697 , G_END_DATE_ACTIVE_TBL_Q
1698 , G_LINE_INDEX_TBL_Q
1699 , G_PRICING_EFFECTIVE_DATE_TBL_Q
1700 , G_START_DATE_ACTIVE_FIR_TBL_Q
1701 , G_END_DATE_ACTIVE_FIR_TBL_Q
1702 , G_LINE_TYPE_CODE_TBL_Q
1703 , G_PRICING_PHASE_ID_TBL_Q
1704 , G_UNIQUE_KEY_TBL_Q
1705 , G_START_DATE_ACTIVE_TBL_H_Q
1706 , G_END_DATE_ACTIVE_TBL_H_Q
1707 , G_START_DATE_ACTIVE_SEC_TBL_Q
1708 , G_END_DATE_ACTIVE_SEC_TBL_Q
1709 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
1710 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
1711 , G_HEADER_LIMIT_EXISTS_TBL_Q
1712 , G_DERIVED_QUALIFIER_FLAG_TBL_Q -- Added for TCA
1713 , l_status_code
1714 , l_status_text);
1715
1716 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
1717 RAISE E_ROUTINE_ERRORS;
1718 END IF;
1719
1720 END IF;
1721
1722 END LOOP;
1723 CLOSE l_mini_outer_qual_cur;
1724
1725 EXCEPTION
1726 WHEN OTHERS THEN
1727 x_status_code := FND_API.G_RET_STS_ERROR;
1728 x_status_text :=l_routine||' '||SQLERRM;
1729 IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
1730 engine_debug(l_routine||' '||SQLERRM);
1731 END IF;
1732
1733 END Mini_Cache_Qualifiers;
1734
1735 /*+--------------------------------------------------------------------
1736 |Cache_Line_Qualifiers
1737 |To get the pure line level quals and
1738 |To get the line level quals for satisfied headers
1739 |
1740 +--------------------------------------------------------------------
1741 */
1742 PROCEDURE Cache_Line_Qualifiers(p_pricing_phase_id IN NUMBER,
1743 x_status_code OUT NOCOPY VARCHAR2,
1744 x_status_text OUT NOCOPY VARCHAR2) As
1745 /*
1746 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,qp_npreq_line_attrs_tmp_N4,DISTINCT_QUALIFIER_FLAG,1
1747 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,qp_npreq_line_attrs_tmp_N4,ATTRIBUTE_TYPE,2
1748 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,qp_npreq_line_attrs_tmp_N4,PRICING_STATUS_CODE,3
1749
1750 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,QUALIFIER_CONTEXT,1
1751 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,QUALIFIER_ATTRIBUTE,2
1752 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,QUALIFIER_ATTR_VALUE,3
1753 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,COMPARISON_OPERATOR_CODE,4
1754 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,ACTIVE_FLAG,5
1755 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,SEARCH_IND,6
1756
1757 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_LIST_HEADER_PHASES_U1,PRICING_PHASE_ID,1
1758 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_LIST_HEADER_PHASES_U1,LIST_HEADER_ID,2
1759
1760 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_LIST_HEADERS_B_N2,LIST_HEADER_ID,1
1761 */
1762 -- Changed the cursor l_outer_qual_cur for bug#3002632
1763 -- [julin/4396043/4471795] perform header filter before prod check, go to qp_pricing_attributes
1764 -- before qp_npreq_line_attrs_tmp during prod check.
1765 CURSOR l_OUTER_QUAL_CUR IS
1766 -- Qualifier Only
1767 select /*+ ORDERED USE_NL(qpq qplh qph) index(qpq qp_qualifiers_n4) index(qph qp_list_headers_b_n7) index(qplatq qp_preq_line_attrs_tmp_n2) l_outer_qual_cur_mod */
1768 qpq.list_header_id,
1769 qpq.list_line_id list_line_id,
1770 qpq.qualifier_group_cnt,
1771 qpq.others_group_cnt,
1772 qpq.header_quals_exist_flag,
1773 qpq.search_ind,
1774 G_NO validated_flag,
1775 G_NO applied_flag,
1776 G_LINE_LEVEL attribute_level,
1777 G_QUALIFIER_TYPE attribute_type,
1778 qplatq.context ,
1779 qplatq.attribute ,
1780 qplatq.value_from ,
1781 qpq.qualifier_grouping_no qualifier_grouping_no ,
1782 qpq.qualifier_precedence ,
1783 qpq.qualifier_datatype,
1784 qpq.qualifier_attr_value ,
1785 qpq.qualifier_attr_value_to ,
1786 qpq.start_date_active,
1787 qpq.end_date_active,
1788 G_NO pricing_attr_flag,
1789 qpq.comparison_operator_code ,
1790 qph.list_type_code,
1791 qph.ask_for_flag,
1792 qplatq.pricing_status_code,
1793 'OHQ' ,
1794 NULL line_index,
1795 NULL pricing_effective_date,
1796 qph.start_date_active_first start_date_active_first,
1797 qph.end_date_active_first end_date_active_first,
1798 NULL line_type_code,
1799 p_pricing_phase_id pricing_phase_id,
1800 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1801 qph.start_date_active start_date_active_h,
1802 qph.end_date_active end_date_active_h,
1803 qph.start_date_active_second start_date_active_second,
1804 qph.end_date_active_second end_date_active_second,
1805 qph.active_date_first_type,
1806 qph.active_date_second_type,
1807 qph.limit_exists_flag,
1808 qplatq.derived_qualifier_flag -- Added for TCA
1809 from
1810 qp_npreq_line_attrs_tmp qplatq,
1811 qp_qualifiers qpq ,
1812 qp_list_header_phases qplh,
1813 qp_list_headers_b qph,
1814 qp_price_req_sources_v qprs
1815 where
1816 qpq.list_header_id = qplh.list_header_id
1817 and qplh.list_header_id = qph.list_header_id
1818 -- bug 2799120
1819 --added for moac -- commented references to security profile
1820 --security will be built into qp_list_headers_b
1821 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1822 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1823 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1824 and qplh.pricing_phase_id = p_pricing_phase_id
1825 AND qplh.PRIC_PROD_ATTR_ONLY_FLAG = 'N' -- Pattern changes
1826 and qpq.qualifier_context = qplatq.context
1827 and qpq.qualifier_attribute = qplatq.attribute
1828 and qpq.qualifier_attr_value = qplatq.value_from
1829 and qpq.comparison_operator_code = '='
1830 and qpq.search_ind = 1
1831 and qpq.list_line_id <> -1
1832 and ( qpq.list_header_id in (SELECT /*+ index(qp_preq_qual_tmp QP_PREQ_QUAL_TMP_N7) */ distinct list_header_id -- for qualified headers from Cache_Header_Qualifiers
1833 FROM qp_preq_qual_tmp
1834 WHERE pricing_phase_id = p_pricing_phase_id
1835 AND pricing_status_code = G_STATUS_UNCHANGED)
1836 or
1837 qpq.header_quals_exist_flag = G_NO) -- Pure line level qualifiers
1838 and (not exists (select /*+ INDEX (qp_pa,QP_PRICING_ATTRIBUTES_N2) */'x' --added hint 8579312 --3520634 start
1839 from qp_pricing_attributes qp_pa -- if no product defined,select the header
1840 where qp_pa.list_line_id = qpq.list_line_id
1841 and rownum = 1)
1842 OR -- If product defined on line level,select headers for which product matches.
1843 exists (select /*+ ORDERED USE_NL(qpprod) INDEX (c,QP_PRICING_ATTRIBUTES_N2) */ 'x' --added hint 8579312
1844 FROM qp_pricing_attributes c, qp_npreq_line_attrs_tmp qpprod
1845 WHERE c.list_header_id = qpq.list_header_id
1846 AND c.list_line_id = qpq.list_line_id
1847 AND c.pricing_phase_id = p_pricing_phase_id
1848 AND qpprod.context = c.product_attribute_context
1849 AND qpprod.attribute = c.product_attribute
1850 AND qpprod.value_from = c.product_attr_value
1851 AND qpprod.pricing_status_code = G_STATUS_UNCHANGED
1852 AND c.qualification_ind in (G_YES_PROD_LINE_QUAL_IND, G_YES_PROD_PRIC_LINE_QUAL_IND,
1853 G_YES_PROD_HDR_LINE_QUAL_IND, G_YES_PRIC_HDR_LINE_QUAL_IND)
1854 AND qpprod.attribute_type = G_PRODUCT_TYPE
1855 AND c.excluder_flag = G_NO
1856 --3683298 AND qpprod.line_index = qplatq.line_index
1857 AND rownum = 1)
1858 ) --3520634 end
1859 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1860 OR
1861 qph.currency_code IS NULL) -- optional currency
1862 --Begin Bug# 7833575
1863 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1864 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1865 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1866 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1867 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1868 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1869 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1870 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
1871 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1872 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1873 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1874 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1875 --End Bug# 7833575
1876 and qph.list_type_code not in ('PRL','AGR')
1877 and qpq.list_type_code not in ('PRL','AGR')
1878 and qph.active_flag = G_YES
1879 and qpq.active_flag = G_YES
1880 and qplatq.distinct_qualifier_flag = G_YES
1881 and qpq.list_header_id = qph.list_header_id
1882 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
1883 and qplatq.attribute_type = G_QUALIFIER_TYPE
1884 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1885 and qph.source_system_code = qprs.source_system_code
1886 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1887 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
1888 union all
1889 select /*+ ORDERED USE_NL(qpq qplh qph) index(qpq qp_qualifiers_n6) index(qph qp_list_headers_b_n7) index(qplatq qp_preq_line_attrs_tmp_n2) l_outer_qual_cur_mod */
1890 qpq.list_header_id,
1891 qpq.list_line_id list_line_id,
1892 qpq.qualifier_group_cnt,
1893 qpq.others_group_cnt,
1894 qpq.header_quals_exist_flag,
1895 qpq.search_ind,
1896 G_NO validated_flag,
1897 G_NO applied_flag,
1898 G_LINE_LEVEL attribute_level,
1899 G_QUALIFIER_TYPE attribute_type,
1900 qplatq.context ,
1901 qplatq.attribute ,
1902 qplatq.value_from ,
1903 qpq.qualifier_grouping_no qualifier_grouping_no ,
1904 qpq.qualifier_precedence ,
1905 qpq.qualifier_datatype,
1906 qpq.qualifier_attr_value ,
1907 qpq.qualifier_attr_value_to ,
1908 qpq.start_date_active,
1909 qpq.end_date_active,
1910 G_NO pricing_attr_flag,
1911 qpq.comparison_operator_code ,
1912 qph.list_type_code,
1913 qph.ask_for_flag,
1914 qplatq.pricing_status_code,
1915 'OHQ' ,
1916 NULL line_index,
1917 NULL pricing_effective_date,
1918 qph.start_date_active_first start_date_active_first,
1919 qph.end_date_active_first end_date_active_first,
1920 NULL line_type_code,
1921 p_pricing_phase_id pricing_phase_id,
1922 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1923 qph.start_date_active start_date_active_h,
1924 qph.end_date_active end_date_active_h,
1925 qph.start_date_active_second start_date_active_second,
1926 qph.end_date_active_second end_date_active_second,
1927 qph.active_date_first_type,
1928 qph.active_date_second_type,
1929 qph.limit_exists_flag,
1930 qplatq.derived_qualifier_flag -- Added for TCA
1931 from
1932 qp_npreq_line_attrs_tmp qplatq,
1933 qp_qualifiers qpq ,
1934 qp_list_header_phases qplh,
1935 qp_list_headers_b qph,
1936 qp_price_req_sources_v qprs
1937 where
1938 qpq.list_header_id = qplh.list_header_id
1939 and qplh.list_header_id = qph.list_header_id
1940 -- bug 2799120
1941 --added for moac -- commented references to security profile
1942 --security will be built into qp_list_headers_b
1943 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1944 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1945 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1946 and qplh.pricing_phase_id = p_pricing_phase_id
1947 AND qplh.PRIC_PROD_ATTR_ONLY_FLAG = 'N' -- Pattern changes
1948 and qpq.qualifier_context = qplatq.context
1949 and qpq.qualifier_attribute = qplatq.attribute
1950 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
1951 and qpq.qualifier_datatype = G_NUMERIC
1952 and qpq.search_ind = 1
1953 and qpq.list_line_id <> -1
1954 and ( qpq.list_header_id in (SELECT /*+ index(qp_preq_qual_tmp QP_PREQ_QUAL_TMP_N7) */ distinct list_header_id
1955 FROM qp_preq_qual_tmp
1956 WHERE pricing_phase_id = p_pricing_phase_id
1957 AND pricing_status_code = G_STATUS_UNCHANGED)
1958 or
1959 qpq.header_quals_exist_flag = G_NO)
1960 and (not exists (select /*+ INDEX (qp_pa,QP_PRICING_ATTRIBUTES_N2) */'x' --added hint 8579312 --3520634 start
1961 from qp_pricing_attributes qp_pa -- if no product defined,select the header
1962 where qp_pa.list_line_id = qpq.list_line_id
1963 and rownum = 1)
1964 OR -- If product defined on line level,select headers for which product matches.
1965 exists (select /*+ ORDERED USE_NL(qpprod) INDEX (c,QP_PRICING_ATTRIBUTES_N2) */ 'x' --added hint 8579312
1966 FROM qp_pricing_attributes c, qp_npreq_line_attrs_tmp qpprod
1967 WHERE c.list_header_id = qpq.list_header_id
1968 AND c.list_line_id = qpq.list_line_id
1969 AND c.pricing_phase_id = p_pricing_phase_id
1970 AND qpprod.context = c.product_attribute_context
1971 AND qpprod.attribute = c.product_attribute
1972 AND qpprod.value_from = c.product_attr_value
1973 AND qpprod.pricing_status_code = G_STATUS_UNCHANGED
1974 AND c.qualification_ind in (G_YES_PROD_LINE_QUAL_IND, G_YES_PROD_PRIC_LINE_QUAL_IND,
1975 G_YES_PROD_HDR_LINE_QUAL_IND, G_YES_PRIC_HDR_LINE_QUAL_IND)
1976 AND qpprod.attribute_type = G_PRODUCT_TYPE
1977 AND c.excluder_flag = G_NO
1978 --3683298 AND qpprod.line_index = qplatq.line_index
1979 AND rownum = 1)
1980 ) --3520634 end
1981 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
1982 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number
1983 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1984 OR
1985 qph.currency_code IS NULL) -- optional currency
1986 --Begin Bug# 7833575
1987 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1988 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1989 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1990 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1991 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1992 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1993 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1994 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
1995 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1996 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1997 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
1998 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
1999 --End Bug# 7833575
2000 and qph.list_type_code not in ('PRL','AGR')
2001 and qpq.list_type_code not in ('PRL','AGR')
2002 and qph.active_flag = G_YES
2003 and qpq.active_flag = G_YES
2004 and qplatq.distinct_qualifier_flag = G_YES
2005 and qpq.list_header_id = qph.list_header_id
2006 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
2007 and qplatq.attribute_type = G_QUALIFIER_TYPE
2008 and qprs.request_type_code = G_REQUEST_TYPE_CODE
2009 and qph.source_system_code = qprs.source_system_code
2010 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
2011 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
2012 union all
2013 select /*+ ORDERED USE_NL(qpq qplh qph) index(qpq qp_qualifiers_n5) index(qph qp_list_headers_b_n7) index(qplatq qp_preq_line_attrs_tmp_n2) l_outer_qual_cur_mod */
2014 qpq.list_header_id,
2015 qpq.list_line_id list_line_id,
2016 qpq.qualifier_group_cnt,
2017 qpq.others_group_cnt,
2018 qpq.header_quals_exist_flag,
2019 qpq.search_ind,
2020 G_NO validated_flag,
2021 G_NO applied_flag,
2022 G_LINE_LEVEL attribute_level,
2023 G_QUALIFIER_TYPE attribute_type,
2024 qplatq.context ,
2025 qplatq.attribute ,
2026 qplatq.value_from ,
2027 qpq.qualifier_grouping_no qualifier_grouping_no ,
2028 qpq.qualifier_precedence ,
2029 qpq.qualifier_datatype,
2030 qpq.qualifier_attr_value ,
2031 qpq.qualifier_attr_value_to ,
2032 qpq.start_date_active,
2033 qpq.end_date_active,
2034 G_NO pricing_attr_flag,
2035 qpq.comparison_operator_code ,
2036 qph.list_type_code,
2037 qph.ask_for_flag,
2038 qplatq.pricing_status_code,
2039 'OHQ' ,
2040 NULL line_index,
2041 NULL pricing_effective_date,
2042 qph.start_date_active_first start_date_active_first,
2043 qph.end_date_active_first end_date_active_first,
2044 NULL line_type_code,
2045 p_pricing_phase_id pricing_phase_id,
2046 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
2047 qph.start_date_active start_date_active_h,
2048 qph.end_date_active end_date_active_h,
2049 qph.start_date_active_second start_date_active_second,
2050 qph.end_date_active_second end_date_active_second,
2051 qph.active_date_first_type,
2052 qph.active_date_second_type,
2053 qph.limit_exists_flag,
2054 qplatq.derived_qualifier_flag -- Added for TCA
2055 from
2056 qp_npreq_line_attrs_tmp qplatq,
2057 qp_qualifiers qpq ,
2058 qp_list_header_phases qplh,
2059 qp_list_headers_b qph,
2060 qp_price_req_sources_v qprs
2061 where
2062 qpq.list_header_id = qplh.list_header_id
2063 and qplh.list_header_id = qph.list_header_id
2064 -- bug 2799120
2065 --added for moac -- commented references to security profile
2066 --security will be built into qp_list_headers_b
2067 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
2068 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
2069 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
2070 and qplh.pricing_phase_id = p_pricing_phase_id
2071 AND qplh.PRIC_PROD_ATTR_ONLY_FLAG = 'N' -- Pattern changes
2072 and qpq.qualifier_context = qplatq.context
2073 and qpq.qualifier_attribute = qplatq.attribute
2074 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
2075 and qpq.search_ind = 1
2076 and qpq.list_line_id <> -1
2077 and ( qpq.list_header_id in (SELECT /*+ index(qp_preq_qual_tmp QP_PREQ_QUAL_TMP_N7) */ distinct list_header_id
2078 FROM qp_preq_qual_tmp
2079 WHERE pricing_phase_id = p_pricing_phase_id
2080 AND pricing_status_code = G_STATUS_UNCHANGED)
2081 or
2082 qpq.header_quals_exist_flag = G_NO)
2083 and (not exists (select /*+ INDEX (qp_pa,QP_PRICING_ATTRIBUTES_N2) */ 'x' --added hint 8579312 --3520634 start
2084 from qp_pricing_attributes qp_pa -- if no product defined,select the header
2085 where qp_pa.list_line_id = qpq.list_line_id
2086 and rownum = 1)
2087 OR -- If product defined on line level,select headers for which product matches.
2088 exists (select /*+ ORDERED USE_NL(qpprod) INDEX (c,QP_PRICING_ATTRIBUTES_N2) */ 'x' --added hint 8579312
2089 FROM qp_pricing_attributes c, qp_npreq_line_attrs_tmp qpprod
2090 WHERE c.list_header_id = qpq.list_header_id
2091 AND c.list_line_id = qpq.list_line_id
2092 AND c.pricing_phase_id = p_pricing_phase_id
2093 AND qpprod.context = c.product_attribute_context
2094 AND qpprod.attribute = c.product_attribute
2095 AND qpprod.value_from = c.product_attr_value
2096 AND qpprod.pricing_status_code = G_STATUS_UNCHANGED
2097 AND c.qualification_ind in (G_YES_PROD_LINE_QUAL_IND, G_YES_PROD_PRIC_LINE_QUAL_IND,
2098 G_YES_PROD_HDR_LINE_QUAL_IND, G_YES_PRIC_HDR_LINE_QUAL_IND)
2099 AND qpprod.attribute_type = G_PRODUCT_TYPE
2100 AND c.excluder_flag = G_NO
2101 --3683298 AND qpprod.line_index = qplatq.line_index
2102 AND rownum = 1)
2103 ) --3520634 end
2104 and qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y)
2105 --and decode(qpq.qualifier_datatype,G_VARCHAR,qplatq.value_from,G_DATE_X,qplatq.value_from,
2106 -- G_DATE_Y,qplatq.value_from,null)
2107 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to
2108 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
2109 OR
2110 qph.currency_code IS NULL) -- optional currency
2111 --Begin Bug# 7833575
2112 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
2113 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
2114 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
2115 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
2116 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
2117 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
2118 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
2119 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
2120 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
2121 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
2122 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
2123 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
2124 --End Bug# 7833575
2125 and qph.list_type_code not in ('PRL','AGR')
2126 and qpq.list_type_code not in ('PRL','AGR')
2127 and qph.active_flag = G_YES
2128 and qpq.active_flag = G_YES
2129 and qplatq.distinct_qualifier_flag = G_YES
2130 and qpq.list_header_id = qph.list_header_id
2131 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
2132 and qplatq.attribute_type = G_QUALIFIER_TYPE
2133 and qprs.request_type_code = G_REQUEST_TYPE_CODE
2134 and qph.source_system_code = qprs.source_system_code
2135 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
2136 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
2137 union all
2138 select /*+ ORDERED USE_NL(qpq qplh qph) index(qpq qp_qualifiers_n5) index(qph qp_list_headers_b_n7) index(qplatq qp_preq_line_attrs_tmp_n2) l_outer_qual_cur_mod */
2139 qpq.list_header_id,
2140 qpq.list_line_id list_line_id,
2141 qpq.qualifier_group_cnt,
2142 qpq.others_group_cnt,
2143 qpq.header_quals_exist_flag,
2144 qpq.search_ind,
2145 G_NO validated_flag,
2146 G_NO applied_flag,
2147 G_LINE_LEVEL attribute_level,
2148 G_QUALIFIER_TYPE attribute_type,
2149 qplatq.context ,
2150 qplatq.attribute ,
2151 qplatq.value_from ,
2152 qpq.qualifier_grouping_no qualifier_grouping_no ,
2153 qpq.qualifier_precedence ,
2154 qpq.qualifier_datatype,
2155 qpq.qualifier_attr_value ,
2156 qpq.qualifier_attr_value_to ,
2157 qpq.start_date_active,
2158 qpq.end_date_active,
2159 G_NO pricing_attr_flag,
2160 qpq.comparison_operator_code ,
2161 qph.list_type_code,
2162 qph.ask_for_flag,
2163 qplatq.pricing_status_code,
2164 'OHQ' ,
2165 NULL line_index,
2166 NULL pricing_effective_date,
2167 qph.start_date_active_first start_date_active_first,
2168 qph.end_date_active_first end_date_active_first,
2169 NULL line_type_code,
2170 p_pricing_phase_id pricing_phase_id,
2171 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
2172 qph.start_date_active start_date_active_h,
2173 qph.end_date_active end_date_active_h,
2174 qph.start_date_active_second start_date_active_second,
2175 qph.end_date_active_second end_date_active_second,
2176 qph.active_date_first_type,
2177 qph.active_date_second_type,
2178 qph.limit_exists_flag,
2179 qplatq.derived_qualifier_flag -- Added for TCA
2180 from
2181 qp_npreq_line_attrs_tmp qplatq,
2182 qp_qualifiers qpq ,
2183 qp_list_header_phases qplh,
2184 qp_list_headers_b qph,
2185 qp_price_req_sources_v qprs
2186 where
2187 qpq.list_header_id = qplh.list_header_id
2188 and qplh.list_header_id = qph.list_header_id
2189 -- bug 2799120
2190 --added for moac -- commented references to security profile
2191 --security will be built into qp_list_headers_b
2192 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
2193 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
2194 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
2195 and qplh.pricing_phase_id = p_pricing_phase_id
2196 AND qplh.PRIC_PROD_ATTR_ONLY_FLAG = 'N' -- Pattern changes
2197 and qpq.qualifier_context = qplatq.context
2198 and qpq.qualifier_attribute = qplatq.attribute
2199 and qpq.comparison_operator_code = 'NOT ='
2200 and qpq.qualifier_attr_value <> qplatq.value_from
2201 and qpq.search_ind = 1
2202 and qpq.list_line_id <> -1
2203 and ( qpq.list_header_id in (SELECT /*+ index(qp_preq_qual_tmp QP_PREQ_QUAL_TMP_N7) */ distinct list_header_id
2204 FROM qp_preq_qual_tmp
2205 WHERE pricing_phase_id = p_pricing_phase_id
2206 AND pricing_status_code = G_STATUS_UNCHANGED)
2207 or
2208 qpq.header_quals_exist_flag = G_NO)
2209 and (not exists (select /*+ INDEX (qp_pa,QP_PRICING_ATTRIBUTES_N2) */ 'x' --added hint 8579312 --3520634 start
2210 from qp_pricing_attributes qp_pa -- if no product defined,select the header
2211 where qp_pa.list_line_id = qpq.list_line_id
2212 and rownum = 1)
2213 OR -- If product defined on line level,select headers for which product matches.
2214 exists (select /*+ ORDERED USE_NL(qpprod) INDEX (c,QP_PRICING_ATTRIBUTES_N2) */ 'x' --added hint 8579312
2215 FROM qp_pricing_attributes c, qp_npreq_line_attrs_tmp qpprod
2216 WHERE c.list_header_id = qpq.list_header_id
2217 AND c.list_line_id = qpq.list_line_id
2218 AND c.pricing_phase_id = p_pricing_phase_id
2219 AND qpprod.context = c.product_attribute_context
2220 AND qpprod.attribute = c.product_attribute
2221 AND qpprod.value_from = c.product_attr_value
2222 AND qpprod.pricing_status_code = G_STATUS_UNCHANGED
2223 AND c.qualification_ind in (G_YES_PROD_LINE_QUAL_IND, G_YES_PROD_PRIC_LINE_QUAL_IND,
2224 G_YES_PROD_HDR_LINE_QUAL_IND, G_YES_PRIC_HDR_LINE_QUAL_IND)
2225 AND qpprod.attribute_type = G_PRODUCT_TYPE
2226 AND c.excluder_flag = G_NO
2227 --3683298 AND qpprod.line_index = qplatq.line_index
2228 AND rownum = 1)
2229 ) --3520634 end
2230 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
2231 OR
2232 qph.currency_code IS NULL) -- optional currency
2233 --Begin Bug# 7833575
2234 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
2235 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
2236 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
2237 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
2238 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
2239 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
2240 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
2241 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
2242 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
2243 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
2244 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
2245 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
2246 --End Bug# 7833575
2247 and qph.list_type_code not in ('PRL','AGR')
2248 and qpq.list_type_code not in ('PRL','AGR')
2249 and qph.active_flag = G_YES
2250 and qpq.active_flag = G_YES
2251 and qplatq.distinct_qualifier_flag = G_YES
2252 and qpq.list_header_id = qph.list_header_id
2253 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
2254 and qplatq.attribute_type = G_QUALIFIER_TYPE
2255 and qprs.request_type_code = G_REQUEST_TYPE_CODE
2256 and qph.source_system_code = qprs.source_system_code
2257 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
2258 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')); -- Added for TCA
2259
2260
2261 nROWS CONSTANT NUMBER := 1000;
2262
2263 l_status_code VARCHAR2(30);
2264 l_status_text VARCHAR2(240);
2265
2266 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.Cache_Line_Qualifiers';
2267
2268 BEGIN
2269
2270 --Delete from QP_PREQ_QUAL_TMP;
2271
2272 G_LINE_QUALIFIER_TEMP := 'E';
2273
2274 OPEN l_outer_qual_cur;
2275
2276 LOOP
2277 G_LIST_HEADER_ID_TBL_Q.delete;
2278 G_LIST_LINE_ID_TBL_Q.delete;
2279 G_VALIDATED_FLAG_TBL_Q.delete;
2280 G_APPLIED_FLAG_TBL_Q.delete;
2281 G_ATTRIBUTE_LEVEL_TBL_Q.delete;
2282 G_ATTRIBUTE_TYPE_TBL_Q.delete;
2283 G_CONTEXT_TBL_Q.delete;
2284 G_ATTRIBUTE_TBL_Q.delete;
2285 G_VALUE_FROM_TBL_Q.delete;
2286 G_GROUPING_NO_TBL_Q.delete;
2287 G_QUALIFIER_PRECEDENCE_TBL_Q.delete;
2288 G_DATATYPE_TBL_Q.delete;
2289 G_SETUP_VALUE_FROM_TBL_Q.delete;
2290 G_SETUP_VALUE_TO_TBL_Q.delete;
2291 G_PRICING_ATTR_FLAG_TBL_Q.delete;
2292 G_OPERATOR_TYPE_TBL_Q.delete;
2293 G_QUALIFIER_TYPE_TBL_Q.delete;
2294 G_LIST_TYPE_CODE_TBL_Q.delete;
2295 G_ASK_FOR_FLAG_TBL_Q.delete;
2296 G_QUALIFIER_GROUP_CNT_TBL_Q.delete;
2297 G_OTHERS_GROUP_CNT_TBL_Q.delete;
2298 G_HEADER_QUALS_EXIST_FLG_TBL_Q.delete;
2299 G_SEARCH_IND_TBL_Q.delete;
2300 G_PRICING_STATUS_CODE_TBL_Q.delete;
2301 G_START_DATE_ACTIVE_TBL_Q.delete;
2302 G_END_DATE_ACTIVE_TBL_Q.delete;
2303 G_LINE_INDEX_TBL_Q.delete;
2304 G_PRICING_EFFECTIVE_DATE_TBL_Q.delete;
2305 G_START_DATE_ACTIVE_FIR_TBL_Q.delete;
2306 G_END_DATE_ACTIVE_FIR_TBL_Q.delete;
2307 G_LINE_TYPE_CODE_TBL_Q.delete;
2308 G_PRICING_PHASE_ID_TBL_Q.delete;
2309 G_UNIQUE_KEY_TBL_Q.delete;
2310 G_START_DATE_ACTIVE_TBL_H_Q.delete;
2311 G_END_DATE_ACTIVE_TBL_H_Q.delete;
2312 G_START_DATE_ACTIVE_SEC_TBL_Q.delete;
2313 G_END_DATE_ACTIVE_SEC_TBL_Q.delete;
2314 G_ACTIVE_DATE_FIR_TYPE_TBL_Q.delete;
2315 G_ACTIVE_DATE_SEC_TYPE_TBL_Q.delete;
2316 G_HEADER_LIMIT_EXISTS_TBL_Q.delete;
2317 G_DERIVED_QUALIFIER_FLAG_TBL_Q.delete; -- Added for TCA
2318
2319 FETCH l_outer_qual_cur
2320 BULK COLLECT INTO
2321 G_LIST_HEADER_ID_TBL_Q
2322 , G_LIST_LINE_ID_TBL_Q
2323 , G_QUALIFIER_GROUP_CNT_TBL_Q
2324 , G_OTHERS_GROUP_CNT_TBL_Q
2325 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
2326 , G_SEARCH_IND_TBL_Q
2327 , G_VALIDATED_FLAG_TBL_Q
2328 , G_APPLIED_FLAG_TBL_Q
2329 , G_ATTRIBUTE_LEVEL_TBL_Q
2330 , G_ATTRIBUTE_TYPE_TBL_Q
2331 , G_CONTEXT_TBL_Q
2332 , G_ATTRIBUTE_TBL_Q
2333 , G_VALUE_FROM_TBL_Q
2334 , G_GROUPING_NO_TBL_Q
2335 , G_QUALIFIER_PRECEDENCE_TBL_Q
2336 , G_DATATYPE_TBL_Q
2337 , G_SETUP_VALUE_FROM_TBL_Q
2338 , G_SETUP_VALUE_TO_TBL_Q
2339 , G_START_DATE_ACTIVE_TBL_Q
2340 , G_END_DATE_ACTIVE_TBL_Q
2341 , G_PRICING_ATTR_FLAG_TBL_Q
2342 , G_OPERATOR_TYPE_TBL_Q
2343 , G_LIST_TYPE_CODE_TBL_Q
2344 , G_ASK_FOR_FLAG_TBL_Q
2345 , G_PRICING_STATUS_CODE_TBL_Q
2346 , G_QUALIFIER_TYPE_TBL_Q
2347 , G_LINE_INDEX_TBL_Q
2348 , G_PRICING_EFFECTIVE_DATE_TBL_Q
2349 , G_START_DATE_ACTIVE_FIR_TBL_Q
2350 , G_END_DATE_ACTIVE_FIR_TBL_Q
2351 , G_LINE_TYPE_CODE_TBL_Q
2352 , G_PRICING_PHASE_ID_TBL_Q
2353 , G_UNIQUE_KEY_TBL_Q
2354 , G_START_DATE_ACTIVE_TBL_H_Q
2355 , G_END_DATE_ACTIVE_TBL_H_Q
2356 , G_START_DATE_ACTIVE_SEC_TBL_Q
2357 , G_END_DATE_ACTIVE_SEC_TBL_Q
2358 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
2359 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
2360 , G_HEADER_LIMIT_EXISTS_TBL_Q
2361 , G_DERIVED_QUALIFIER_FLAG_TBL_Q LIMIT nROWS; -- Added for TCA
2362 EXIT WHEN G_LIST_HEADER_ID_TBL_Q.COUNT = 0;
2363
2364 IF (G_LIST_HEADER_ID_TBL_Q.COUNT > 0) THEN
2365
2366 G_LINE_QUALIFIER_TEMP := 'U';
2367
2368 INSERT_QUAL(
2369 G_LIST_HEADER_ID_TBL_Q
2370 , G_LIST_LINE_ID_TBL_Q
2371 , G_VALIDATED_FLAG_TBL_Q
2372 , G_APPLIED_FLAG_TBL_Q
2373 , G_ATTRIBUTE_LEVEL_TBL_Q
2374 , G_ATTRIBUTE_TYPE_TBL_Q
2375 , G_CONTEXT_TBL_Q
2376 , G_ATTRIBUTE_TBL_Q
2377 , G_VALUE_FROM_TBL_Q
2378 , G_GROUPING_NO_TBL_Q
2379 , G_QUALIFIER_PRECEDENCE_TBL_Q
2380 , G_DATATYPE_TBL_Q
2381 , G_SETUP_VALUE_FROM_TBL_Q
2382 , G_SETUP_VALUE_TO_TBL_Q
2383 , G_PRICING_ATTR_FLAG_TBL_Q
2384 , G_OPERATOR_TYPE_TBL_Q
2385 , G_LIST_TYPE_CODE_TBL_Q
2386 , G_ASK_FOR_FLAG_TBL_Q
2387 , G_QUALIFIER_TYPE_TBL_Q
2388 , G_QUALIFIER_GROUP_CNT_TBL_Q
2389 , G_OTHERS_GROUP_CNT_TBL_Q
2390 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
2391 , G_SEARCH_IND_TBL_Q
2392 , G_PRICING_STATUS_CODE_TBL_Q
2393 , G_START_DATE_ACTIVE_TBL_Q
2394 , G_END_DATE_ACTIVE_TBL_Q
2395 , G_LINE_INDEX_TBL_Q
2396 , G_PRICING_EFFECTIVE_DATE_TBL_Q
2397 , G_START_DATE_ACTIVE_FIR_TBL_Q
2398 , G_END_DATE_ACTIVE_FIR_TBL_Q
2399 , G_LINE_TYPE_CODE_TBL_Q
2400 , G_PRICING_PHASE_ID_TBL_Q
2401 , G_UNIQUE_KEY_TBL_Q
2402 , G_START_DATE_ACTIVE_TBL_H_Q
2403 , G_END_DATE_ACTIVE_TBL_H_Q
2404 , G_START_DATE_ACTIVE_SEC_TBL_Q
2405 , G_END_DATE_ACTIVE_SEC_TBL_Q
2406 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
2407 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
2408 , G_HEADER_LIMIT_EXISTS_TBL_Q
2409 , G_DERIVED_QUALIFIER_FLAG_TBL_Q -- Added for TCA
2410 , l_status_code
2411 , l_status_text);
2412 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
2413 RAISE FND_API.G_EXC_ERROR;
2414 END IF;
2415 END IF;
2416
2417 END LOOP;
2418 CLOSE l_outer_qual_cur;
2419
2420 -- Nitin
2421 -- addeded check to delete header level qualifiers if no line qualifier is selected
2422 -- and the header has no lines without line level qualifier in that phase.
2423
2424 UPDATE QP_PREQ_QUAL_TMP a
2425 SET a.PRICING_STATUS_CODE = G_DELETED_GRP
2426 WHERE
2427 a.list_line_id = '-1'
2428 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
2429 AND a.PRICING_PHASE_ID = p_pricing_phase_id
2430 and a.line_index is null
2431 and not exists
2432 (select 'x' from qp_preq_qual_tmp b where
2433 b.list_header_id = a.list_header_id
2434 and b.list_line_id <> '-1'
2435 and b.pricing_phase_id = p_pricing_phase_id
2436 and b.pricing_status_code = G_STATUS_UNCHANGED
2437 and b.line_index is null)
2438 and a.list_header_id in
2439 (select list_header_id from
2440 qp_list_header_phases
2441 where
2442 pricing_phase_id = p_pricing_phase_id
2443 and qualifier_flag = 'Y');
2444
2445 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
2446 engine_debug('Nitin - Delete headers - rows deleted '||sql%rowcount);
2447
2448 END IF;
2449 EXCEPTION
2450 WHEN OTHERS THEN
2451 x_status_code := FND_API.G_RET_STS_ERROR;
2452 x_status_text :=l_routine||' '||SQLERRM;
2453 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
2454 engine_debug(l_routine||' '||SQLERRM);
2455 END IF;
2456 END Cache_Line_Qualifiers;
2457
2458 /*+--------------------------------------------------------------------
2459 |Cache_Header_Qualifiers
2460 |To match only the header level qualifiers and get qualified headers (list_line_id = -1)
2461 |
2462 +--------------------------------------------------------------------
2463 */
2464 PROCEDURE Cache_Header_Qualifiers(p_pricing_phase_id IN NUMBER,
2465 x_status_code OUT NOCOPY VARCHAR2,
2466 x_status_text OUT NOCOPY VARCHAR2) As
2467 /*
2468 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,qp_npreq_line_attrs_tmp_N4,DISTINCT_QUALIFIER_FLAG,1
2469 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,qp_npreq_line_attrs_tmp_N4,ATTRIBUTE_TYPE,2
2470 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,qp_npreq_line_attrs_tmp_N4,PRICING_STATUS_CODE,3
2471
2472 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,QUALIFIER_CONTEXT,1
2473 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,QUALIFIER_ATTRIBUTE,2
2474 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,QUALIFIER_ATTR_VALUE,3
2475 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,COMPARISON_OPERATOR_CODE,4
2476 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,ACTIVE_FLAG,5
2477 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,SEARCH_IND,6
2478
2479 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_LIST_HEADER_PHASES_U1,PRICING_PHASE_ID,1
2480 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_LIST_HEADER_PHASES_U1,LIST_HEADER_ID,2
2481
2482 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_LIST_HEADERS_B_N2,LIST_HEADER_ID,1
2483 */
2484 -- Changed the cursor l_outer_qual_cur for bug#3002632
2485 CURSOR l_OUTER_QUAL_CUR IS
2486 -- Qualifier Only
2487 select /*+ ORDERED USE_NL(qpq qplh qph) index(qpq qp_qualifiers_n4) index(qph qp_list_headers_b_n7) index(qplatq qp_preq_line_attrs_tmp_n2) dynamic_sampling(1) l_header_outer_qual_cur_mod */
2488 qpq.list_header_id,
2489 qpq.list_line_id list_line_id,
2490 qpq.qualifier_group_cnt,
2491 qpq.others_group_cnt,
2492 qpq.header_quals_exist_flag,
2493 qpq.search_ind,
2494 G_NO validated_flag,
2495 G_NO applied_flag,
2496 G_LINE_LEVEL attribute_level,
2497 G_QUALIFIER_TYPE attribute_type,
2498 qplatq.context ,
2499 qplatq.attribute ,
2500 qplatq.value_from ,
2501 qpq.qualifier_grouping_no qualifier_grouping_no ,
2502 qpq.qualifier_precedence ,
2503 qpq.qualifier_datatype,
2504 qpq.qualifier_attr_value ,
2505 qpq.qualifier_attr_value_to ,
2506 qpq.start_date_active,
2507 qpq.end_date_active,
2508 G_NO pricing_attr_flag,
2509 qpq.comparison_operator_code ,
2510 qph.list_type_code,
2511 qph.ask_for_flag,
2512 qplatq.pricing_status_code,
2513 'OHQ' ,
2514 NULL line_index,
2515 NULL pricing_effective_date,
2516 qph.start_date_active_first start_date_active_first,
2517 qph.end_date_active_first end_date_active_first,
2518 NULL line_type_code,
2519 p_pricing_phase_id pricing_phase_id,
2520 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
2521 qph.start_date_active start_date_active_h,
2522 qph.end_date_active end_date_active_h,
2523 qph.start_date_active_second start_date_active_second,
2524 qph.end_date_active_second end_date_active_second,
2525 qph.active_date_first_type,
2526 qph.active_date_second_type,
2527 qph.limit_exists_flag,
2528 qplatq.derived_qualifier_flag -- Added for TCA
2529 from
2530 qp_npreq_line_attrs_tmp qplatq,
2531 qp_qualifiers qpq ,
2532 qp_list_header_phases qplh,
2533 qp_list_headers_b qph,
2534 qp_price_req_sources_v qprs
2535 where
2536 qpq.list_header_id = qplh.list_header_id
2537 and qplh.list_header_id = qph.list_header_id
2538 -- bug 2799120
2539 --added for moac -- commented references to security profile
2540 --security will be built into qp_list_headers_b
2541 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
2542 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
2543 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
2544 and qplh.pricing_phase_id = p_pricing_phase_id
2545 AND qplh.PRIC_PROD_ATTR_ONLY_FLAG = 'N' -- Pattern changes
2546 and qpq.qualifier_context = qplatq.context
2547 and qpq.qualifier_attribute = qplatq.attribute
2548 and qpq.qualifier_attr_value = qplatq.value_from
2549 and qpq.comparison_operator_code = '='
2550 and qpq.list_line_id = -1 -- only Header level quals
2551 and qpq.search_ind = 1
2552 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
2553 OR
2554 qph.currency_code IS NULL) -- optional currency
2555 and ((qph.ask_for_flag = G_YES and
2556 qph.list_header_id in (SELECT list_header_id
2557 FROM qp_npreq_line_attrs_tmp
2558 WHERE attribute_type = 'QUALIFIER'
2559 AND pricing_status_code = G_STATUS_UNCHANGED
2560 AND validated_flag = G_NO
2561 AND list_header_id IS NOT NULL))
2562 OR qph.ask_for_flag = G_NO)
2563 --Begin Bug# 7833575
2564 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
2565 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
2566 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
2567 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
2568 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
2569 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
2570 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
2571 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
2572 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
2573 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
2574 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
2575 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
2576 --End Bug# 7833575
2577 and qph.list_type_code not in ('PRL','AGR')
2578 and qpq.list_type_code not in ('PRL','AGR')
2579 and qph.active_flag = G_YES
2580 and qpq.active_flag = G_YES
2581 and qplatq.distinct_qualifier_flag = G_YES
2582 and qpq.list_header_id = qph.list_header_id
2583 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
2584 and qplatq.attribute_type = G_QUALIFIER_TYPE
2585 and qprs.request_type_code = G_REQUEST_TYPE_CODE
2586 and qph.source_system_code = qprs.source_system_code
2587 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
2588 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
2589 union all
2590 select /*+ ORDERED USE_NL(qpq qplh qph) index(qpq qp_qualifiers_n6) index(qph qp_list_headers_b_n7) index(qplatq qp_preq_line_attrs_tmp_n2) dynamic_sampling(1) l_header_outer_qual_cur_mod */
2591 qpq.list_header_id,
2592 qpq.list_line_id list_line_id,
2593 qpq.qualifier_group_cnt,
2594 qpq.others_group_cnt,
2595 qpq.header_quals_exist_flag,
2596 qpq.search_ind,
2597 G_NO validated_flag,
2598 G_NO applied_flag,
2599 G_LINE_LEVEL attribute_level,
2600 G_QUALIFIER_TYPE attribute_type,
2601 qplatq.context ,
2602 qplatq.attribute ,
2603 qplatq.value_from ,
2604 qpq.qualifier_grouping_no qualifier_grouping_no ,
2605 qpq.qualifier_precedence ,
2606 qpq.qualifier_datatype,
2607 qpq.qualifier_attr_value ,
2608 qpq.qualifier_attr_value_to ,
2609 qpq.start_date_active,
2610 qpq.end_date_active,
2611 G_NO pricing_attr_flag,
2612 qpq.comparison_operator_code ,
2613 qph.list_type_code,
2614 qph.ask_for_flag,
2615 qplatq.pricing_status_code,
2616 'OHQ' ,
2617 NULL line_index,
2618 NULL pricing_effective_date,
2619 qph.start_date_active_first start_date_active_first,
2620 qph.end_date_active_first end_date_active_first,
2621 NULL line_type_code,
2622 p_pricing_phase_id pricing_phase_id,
2623 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
2624 qph.start_date_active start_date_active_h,
2625 qph.end_date_active end_date_active_h,
2626 qph.start_date_active_second start_date_active_second,
2627 qph.end_date_active_second end_date_active_second,
2628 qph.active_date_first_type,
2629 qph.active_date_second_type,
2630 qph.limit_exists_flag,
2631 qplatq.derived_qualifier_flag -- Added for TCA
2632 from
2633 qp_npreq_line_attrs_tmp qplatq,
2634 qp_qualifiers qpq ,
2635 qp_list_header_phases qplh,
2636 qp_list_headers_b qph,
2637 qp_price_req_sources_v qprs
2638 where
2639 qpq.list_header_id = qplh.list_header_id
2640 and qplh.list_header_id = qph.list_header_id
2641 -- bug 2799120
2642 --added for moac -- commented references to security profile
2643 --security will be built into qp_list_headers_b
2644 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
2645 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
2646 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
2647 and qplh.pricing_phase_id = p_pricing_phase_id
2648 AND qplh.PRIC_PROD_ATTR_ONLY_FLAG = 'N' -- Pattern changes
2649 and qpq.qualifier_context = qplatq.context
2650 and qpq.qualifier_attribute = qplatq.attribute
2651 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
2652 and qpq.qualifier_datatype = G_NUMERIC
2653 and qpq.search_ind = 1
2654 and qpq.list_line_id = -1 -- Header level quals
2655 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
2656 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number
2657 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
2658 OR
2659 qph.currency_code IS NULL) -- optional currency
2660 and ((qph.ask_for_flag = G_YES and
2661 qph.list_header_id in (SELECT list_header_id
2662 FROM qp_npreq_line_attrs_tmp
2663 WHERE attribute_type = 'QUALIFIER'
2664 AND pricing_status_code = G_STATUS_UNCHANGED
2665 AND validated_flag = G_NO
2666 AND list_header_id IS NOT NULL))
2667 OR qph.ask_for_flag = G_NO)
2668 --Begin Bug# 7833575
2669 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
2670 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
2671 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
2672 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
2673 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
2674 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
2675 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
2676 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
2677 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
2678 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
2679 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
2680 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
2681 --End Bug# 7833575
2682 and qph.list_type_code not in ('PRL','AGR')
2683 and qpq.list_type_code not in ('PRL','AGR')
2684 and qph.active_flag = G_YES
2685 and qpq.active_flag = G_YES
2686 and qplatq.distinct_qualifier_flag = G_YES
2687 and qpq.list_header_id = qph.list_header_id
2688 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
2689 and qplatq.attribute_type = G_QUALIFIER_TYPE
2690 and qprs.request_type_code = G_REQUEST_TYPE_CODE
2691 and qph.source_system_code = qprs.source_system_code
2692 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
2693 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
2694 union all
2695 select /*+ ORDERED USE_NL(qpq qplh qph) index(qpq qp_qualifiers_n5) index(qph qp_list_headers_b_n7) index(qplatq qp_preq_line_attrs_tmp_n2) dynamic_sampling(1) l_header_outer_qual_cur_mod */
2696 qpq.list_header_id,
2697 qpq.list_line_id list_line_id,
2698 qpq.qualifier_group_cnt,
2699 qpq.others_group_cnt,
2700 qpq.header_quals_exist_flag,
2701 qpq.search_ind,
2702 G_NO validated_flag,
2703 G_NO applied_flag,
2704 G_LINE_LEVEL attribute_level,
2705 G_QUALIFIER_TYPE attribute_type,
2706 qplatq.context ,
2707 qplatq.attribute ,
2708 qplatq.value_from ,
2709 qpq.qualifier_grouping_no qualifier_grouping_no ,
2710 qpq.qualifier_precedence ,
2711 qpq.qualifier_datatype,
2712 qpq.qualifier_attr_value ,
2713 qpq.qualifier_attr_value_to ,
2714 qpq.start_date_active,
2715 qpq.end_date_active,
2716 G_NO pricing_attr_flag,
2717 qpq.comparison_operator_code ,
2718 qph.list_type_code,
2719 qph.ask_for_flag,
2720 qplatq.pricing_status_code,
2721 'OHQ' ,
2722 NULL line_index,
2723 NULL pricing_effective_date,
2724 qph.start_date_active_first start_date_active_first,
2725 qph.end_date_active_first end_date_active_first,
2726 NULL line_type_code,
2727 p_pricing_phase_id pricing_phase_id,
2728 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
2729 qph.start_date_active start_date_active_h,
2730 qph.end_date_active end_date_active_h,
2731 qph.start_date_active_second start_date_active_second,
2732 qph.end_date_active_second end_date_active_second,
2733 qph.active_date_first_type,
2734 qph.active_date_second_type,
2735 qph.limit_exists_flag,
2736 qplatq.derived_qualifier_flag -- Added for TCA
2737
2738 from
2739 qp_npreq_line_attrs_tmp qplatq,
2740 qp_qualifiers qpq ,
2741 qp_list_header_phases qplh,
2742 qp_list_headers_b qph,
2743 qp_price_req_sources_v qprs
2744 where
2745 qpq.list_header_id = qplh.list_header_id
2746 and qplh.list_header_id = qph.list_header_id
2747 -- bug 2799120
2748 --added for moac -- commented references to security profile
2749 --security will be built into qp_list_headers_b
2750 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
2751 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
2752 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
2753 and qplh.pricing_phase_id = p_pricing_phase_id
2754 AND qplh.PRIC_PROD_ATTR_ONLY_FLAG = 'N' -- Pattern changes
2755 and qpq.qualifier_context = qplatq.context
2756 and qpq.qualifier_attribute = qplatq.attribute
2757 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
2758 and qpq.search_ind = 1
2759 and qpq.list_line_id = -1 -- Header level quals
2760 and qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y)
2761 --and decode(qpq.qualifier_datatype,G_VARCHAR,qplatq.value_from,G_DATE_X,qplatq.value_from,
2762 -- G_DATE_Y,qplatq.value_from,null)
2763 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to
2764 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
2765 OR
2766 qph.currency_code IS NULL) -- optional currency
2767 and ((qph.ask_for_flag = G_YES and
2768 qph.list_header_id in (SELECT list_header_id
2769 FROM qp_npreq_line_attrs_tmp
2770 WHERE attribute_type = 'QUALIFIER'
2771 AND pricing_status_code = G_STATUS_UNCHANGED
2772 AND validated_flag = G_NO
2773 AND list_header_id IS NOT NULL))
2774 OR qph.ask_for_flag = G_NO)
2775 --Begin Bug# 7833575
2776 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
2777 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
2778 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
2779 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
2780 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
2781 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
2782 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
2783 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
2784 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
2785 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
2786 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
2787 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
2788 --End Bug# 7833575
2789 and qph.list_type_code not in ('PRL','AGR')
2790 and qpq.list_type_code not in ('PRL','AGR')
2791 and qph.active_flag = G_YES
2792 and qpq.active_flag = G_YES
2793 and qplatq.distinct_qualifier_flag = G_YES
2794 and qpq.list_header_id = qph.list_header_id
2795 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
2796 and qplatq.attribute_type = G_QUALIFIER_TYPE
2797 and qprs.request_type_code = G_REQUEST_TYPE_CODE
2798 and qph.source_system_code = qprs.source_system_code
2799 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
2800 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
2801 union all
2802 select /*+ ORDERED USE_NL(qpq qplh qph) index(qpq qp_qualifiers_n5) index(qph qp_list_headers_b_n7) index(qplatq qp_preq_line_attrs_tmp_n2) dynamic_sampling(1) l_header_outer_qual_cur_mod */
2803 qpq.list_header_id,
2804 qpq.list_line_id list_line_id,
2805 qpq.qualifier_group_cnt,
2806 qpq.others_group_cnt,
2807 qpq.header_quals_exist_flag,
2808 qpq.search_ind,
2809 G_NO validated_flag,
2810 G_NO applied_flag,
2811 G_LINE_LEVEL attribute_level,
2812 G_QUALIFIER_TYPE attribute_type,
2813 qplatq.context ,
2814 qplatq.attribute ,
2815 qplatq.value_from ,
2816 qpq.qualifier_grouping_no qualifier_grouping_no ,
2817 qpq.qualifier_precedence ,
2818 qpq.qualifier_datatype,
2819 qpq.qualifier_attr_value ,
2820 qpq.qualifier_attr_value_to ,
2821 qpq.start_date_active,
2822 qpq.end_date_active,
2823 G_NO pricing_attr_flag,
2824 qpq.comparison_operator_code ,
2825 qph.list_type_code,
2826 qph.ask_for_flag,
2827 qplatq.pricing_status_code,
2828 'OHQ' ,
2829 NULL line_index,
2830 NULL pricing_effective_date,
2831 qph.start_date_active_first start_date_active_first,
2832 qph.end_date_active_first end_date_active_first,
2833 NULL line_type_code,
2834 p_pricing_phase_id pricing_phase_id,
2835 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
2836 qph.start_date_active start_date_active_h,
2837 qph.end_date_active end_date_active_h,
2838 qph.start_date_active_second start_date_active_second,
2839 qph.end_date_active_second end_date_active_second,
2840 qph.active_date_first_type,
2841 qph.active_date_second_type,
2842 qph.limit_exists_flag,
2843 qplatq.derived_qualifier_flag -- Added for TCA
2844
2845 from
2846 qp_npreq_line_attrs_tmp qplatq,
2847 qp_qualifiers qpq ,
2848 qp_list_header_phases qplh,
2849 qp_list_headers_b qph,
2850 qp_price_req_sources_v qprs
2851 where
2852 qpq.list_header_id = qplh.list_header_id
2853 and qplh.list_header_id = qph.list_header_id
2854 -- bug 2799120
2855 --added for moac -- commented references to security profile
2856 --security will be built into qp_list_headers_b
2857 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
2858 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
2859 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
2860 and qplh.pricing_phase_id = p_pricing_phase_id
2861 AND qplh.PRIC_PROD_ATTR_ONLY_FLAG = 'N' -- Pattern changes
2862 and qpq.qualifier_context = qplatq.context
2863 and qpq.qualifier_attribute = qplatq.attribute
2864 and qpq.comparison_operator_code = 'NOT ='
2865 and qpq.qualifier_attr_value <> qplatq.value_from
2866 and qpq.search_ind = 1
2867 and qpq.list_line_id = -1 -- Header Level Quals
2868 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
2869 OR
2870 qph.currency_code IS NULL) -- optional currency
2871 and ((qph.ask_for_flag = G_YES and
2872 qph.list_header_id in (SELECT list_header_id
2873 FROM qp_npreq_line_attrs_tmp
2874 WHERE attribute_type = 'QUALIFIER'
2875 AND pricing_status_code = G_STATUS_UNCHANGED
2876 AND validated_flag = G_NO
2877 AND list_header_id IS NOT NULL))
2878 OR qph.ask_for_flag = G_NO)
2879 --Begin Bug# 7833575
2880 /*and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
2881 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
2882 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
2883 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
2884 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
2885 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
2886 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
2887 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))*/
2888 AND (NVL(qph.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
2889 AND NVL(qph.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
2890 AND (NVL(qpq.end_date_active,G_MIN_PRICING_DATE) >= g_min_pricing_date
2891 AND NVL(qpq.start_date_active, G_MAX_PRICING_DATE) <= g_max_pricing_date)
2892 --End Bug# 7833575
2893 and qph.list_type_code not in ('PRL','AGR')
2894 and qpq.list_type_code not in ('PRL','AGR')
2895 and qph.active_flag = G_YES
2896 and qpq.active_flag = G_YES
2897 and qplatq.distinct_qualifier_flag = G_YES
2898 and qpq.list_header_id = qph.list_header_id
2899 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
2900 and qplatq.attribute_type = G_QUALIFIER_TYPE
2901 and qprs.request_type_code = G_REQUEST_TYPE_CODE
2902 and qph.source_system_code = qprs.source_system_code
2903 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
2904 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')); -- Added for TCA
2905
2906
2907 nROWS CONSTANT NUMBER := 1000;
2908
2909 l_status_code VARCHAR2(30);
2910 l_status_text VARCHAR2(240);
2911
2912 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.Cache_Header_Qualifiers';
2913
2914 BEGIN
2915
2916 --Delete from QP_PREQ_QUAL_TMP;
2917
2918 G_QUALIFIER_TEMP := 'E';
2919
2920 OPEN l_outer_qual_cur;
2921
2922 LOOP
2923 G_LIST_HEADER_ID_TBL_Q.delete;
2924 G_LIST_LINE_ID_TBL_Q.delete;
2925 G_VALIDATED_FLAG_TBL_Q.delete;
2926 G_APPLIED_FLAG_TBL_Q.delete;
2927 G_ATTRIBUTE_LEVEL_TBL_Q.delete;
2928 G_ATTRIBUTE_TYPE_TBL_Q.delete;
2929 G_CONTEXT_TBL_Q.delete;
2930 G_ATTRIBUTE_TBL_Q.delete;
2931 G_VALUE_FROM_TBL_Q.delete;
2932 G_GROUPING_NO_TBL_Q.delete;
2933 G_QUALIFIER_PRECEDENCE_TBL_Q.delete;
2934 G_DATATYPE_TBL_Q.delete;
2935 G_SETUP_VALUE_FROM_TBL_Q.delete;
2936 G_SETUP_VALUE_TO_TBL_Q.delete;
2937 G_PRICING_ATTR_FLAG_TBL_Q.delete;
2938 G_OPERATOR_TYPE_TBL_Q.delete;
2939 G_QUALIFIER_TYPE_TBL_Q.delete;
2940 G_LIST_TYPE_CODE_TBL_Q.delete;
2941 G_ASK_FOR_FLAG_TBL_Q.delete;
2942 G_QUALIFIER_GROUP_CNT_TBL_Q.delete;
2943 G_OTHERS_GROUP_CNT_TBL_Q.delete;
2944 G_HEADER_QUALS_EXIST_FLG_TBL_Q.delete;
2945 G_SEARCH_IND_TBL_Q.delete;
2946 G_PRICING_STATUS_CODE_TBL_Q.delete;
2947 G_START_DATE_ACTIVE_TBL_Q.delete;
2948 G_END_DATE_ACTIVE_TBL_Q.delete;
2949 G_LINE_INDEX_TBL_Q.delete;
2950 G_PRICING_EFFECTIVE_DATE_TBL_Q.delete;
2951 G_START_DATE_ACTIVE_FIR_TBL_Q.delete;
2952 G_END_DATE_ACTIVE_FIR_TBL_Q.delete;
2953 G_LINE_TYPE_CODE_TBL_Q.delete;
2954 G_PRICING_PHASE_ID_TBL_Q.delete;
2955 G_UNIQUE_KEY_TBL_Q.delete;
2956 G_START_DATE_ACTIVE_TBL_H_Q.delete;
2957 G_END_DATE_ACTIVE_TBL_H_Q.delete;
2958 G_START_DATE_ACTIVE_SEC_TBL_Q.delete;
2959 G_END_DATE_ACTIVE_SEC_TBL_Q.delete;
2960 G_ACTIVE_DATE_FIR_TYPE_TBL_Q.delete;
2961 G_ACTIVE_DATE_SEC_TYPE_TBL_Q.delete;
2962 G_HEADER_LIMIT_EXISTS_TBL_Q.delete;
2963 G_DERIVED_QUALIFIER_FLAG_TBL_Q.delete; -- Added for TCA
2964
2965 FETCH l_outer_qual_cur
2966 BULK COLLECT INTO
2967 G_LIST_HEADER_ID_TBL_Q
2968 , G_LIST_LINE_ID_TBL_Q
2969 , G_QUALIFIER_GROUP_CNT_TBL_Q
2970 , G_OTHERS_GROUP_CNT_TBL_Q
2971 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
2972 , G_SEARCH_IND_TBL_Q
2973 , G_VALIDATED_FLAG_TBL_Q
2974 , G_APPLIED_FLAG_TBL_Q
2975 , G_ATTRIBUTE_LEVEL_TBL_Q
2976 , G_ATTRIBUTE_TYPE_TBL_Q
2977 , G_CONTEXT_TBL_Q
2978 , G_ATTRIBUTE_TBL_Q
2979 , G_VALUE_FROM_TBL_Q
2980 , G_GROUPING_NO_TBL_Q
2981 , G_QUALIFIER_PRECEDENCE_TBL_Q
2982 , G_DATATYPE_TBL_Q
2983 , G_SETUP_VALUE_FROM_TBL_Q
2984 , G_SETUP_VALUE_TO_TBL_Q
2985 , G_START_DATE_ACTIVE_TBL_Q
2986 , G_END_DATE_ACTIVE_TBL_Q
2987 , G_PRICING_ATTR_FLAG_TBL_Q
2988 , G_OPERATOR_TYPE_TBL_Q
2989 , G_LIST_TYPE_CODE_TBL_Q
2990 , G_ASK_FOR_FLAG_TBL_Q
2991 , G_PRICING_STATUS_CODE_TBL_Q
2992 , G_QUALIFIER_TYPE_TBL_Q
2993 , G_LINE_INDEX_TBL_Q
2994 , G_PRICING_EFFECTIVE_DATE_TBL_Q
2995 , G_START_DATE_ACTIVE_FIR_TBL_Q
2996 , G_END_DATE_ACTIVE_FIR_TBL_Q
2997 , G_LINE_TYPE_CODE_TBL_Q
2998 , G_PRICING_PHASE_ID_TBL_Q
2999 , G_UNIQUE_KEY_TBL_Q
3000 , G_START_DATE_ACTIVE_TBL_H_Q
3001 , G_END_DATE_ACTIVE_TBL_H_Q
3002 , G_START_DATE_ACTIVE_SEC_TBL_Q
3003 , G_END_DATE_ACTIVE_SEC_TBL_Q
3004 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
3005 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
3006 , G_HEADER_LIMIT_EXISTS_TBL_Q
3007 , G_DERIVED_QUALIFIER_FLAG_TBL_Q LIMIT nROWS; -- Added for TCA
3008 EXIT WHEN G_LIST_HEADER_ID_TBL_Q.COUNT = 0;
3009
3010 IF (G_LIST_HEADER_ID_TBL_Q.COUNT > 0) THEN
3011
3012 G_QUALIFIER_TEMP := 'U';
3013
3014 INSERT_QUAL(
3015 G_LIST_HEADER_ID_TBL_Q
3016 , G_LIST_LINE_ID_TBL_Q
3017 , G_VALIDATED_FLAG_TBL_Q
3018 , G_APPLIED_FLAG_TBL_Q
3019 , G_ATTRIBUTE_LEVEL_TBL_Q
3020 , G_ATTRIBUTE_TYPE_TBL_Q
3021 , G_CONTEXT_TBL_Q
3022 , G_ATTRIBUTE_TBL_Q
3023 , G_VALUE_FROM_TBL_Q
3024 , G_GROUPING_NO_TBL_Q
3025 , G_QUALIFIER_PRECEDENCE_TBL_Q
3026 , G_DATATYPE_TBL_Q
3027 , G_SETUP_VALUE_FROM_TBL_Q
3028 , G_SETUP_VALUE_TO_TBL_Q
3029 , G_PRICING_ATTR_FLAG_TBL_Q
3030 , G_OPERATOR_TYPE_TBL_Q
3031 , G_LIST_TYPE_CODE_TBL_Q
3032 , G_ASK_FOR_FLAG_TBL_Q
3033 , G_QUALIFIER_TYPE_TBL_Q
3034 , G_QUALIFIER_GROUP_CNT_TBL_Q
3035 , G_OTHERS_GROUP_CNT_TBL_Q
3036 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
3037 , G_SEARCH_IND_TBL_Q
3038 , G_PRICING_STATUS_CODE_TBL_Q
3039 , G_START_DATE_ACTIVE_TBL_Q
3040 , G_END_DATE_ACTIVE_TBL_Q
3041 , G_LINE_INDEX_TBL_Q
3042 , G_PRICING_EFFECTIVE_DATE_TBL_Q
3043 , G_START_DATE_ACTIVE_FIR_TBL_Q
3044 , G_END_DATE_ACTIVE_FIR_TBL_Q
3045 , G_LINE_TYPE_CODE_TBL_Q
3046 , G_PRICING_PHASE_ID_TBL_Q
3047 , G_UNIQUE_KEY_TBL_Q
3048 , G_START_DATE_ACTIVE_TBL_H_Q
3049 , G_END_DATE_ACTIVE_TBL_H_Q
3050 , G_START_DATE_ACTIVE_SEC_TBL_Q
3051 , G_END_DATE_ACTIVE_SEC_TBL_Q
3052 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
3053 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
3054 , G_HEADER_LIMIT_EXISTS_TBL_Q
3055 , G_DERIVED_QUALIFIER_FLAG_TBL_Q -- Added for TCA
3056 , l_status_code
3057 , l_status_text);
3058 END IF;
3059
3060 END LOOP;
3061 CLOSE l_outer_qual_cur;
3062 EXCEPTION
3063 WHEN OTHERS THEN
3064 x_status_code := FND_API.G_RET_STS_ERROR;
3065 x_status_text :=l_routine||' '||SQLERRM;
3066 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3067 engine_debug(l_routine||' '||SQLERRM);
3068
3069 END IF;
3070 END Cache_Header_Qualifiers;
3071
3072 /*+--------------------------------------------------------------------
3073 |Reset_All_Tbls
3074 |To Reset all pl/sql tables.
3075 +--------------------------------------------------------------------
3076 */
3077 PROCEDURE Reset_All_Tbls(x_status_code OUT NOCOPY VARCHAR2,
3078 x_status_text OUT NOCOPY VARCHAR2)
3079 AS
3080 l_routine VARCHAR2(240):='QP_PREQ_GRP.Reset_All_Tbls';
3081 BEGIN
3082 G_LINE_INDEX_tbl.delete;
3083 G_USAGE_PRICING_TYPE_TBL.delete;
3084 G_LINE_CATEGORY_TBL.delete;
3085 G_LINE_CATEGORY_DEF_TBL.delete;
3086 G_CONTRACT_START_DATE_TBL.delete; /* shulin */
3087 G_CONTRACT_END_DATE_TBL.delete; /* shulin */
3088 G_LINE_UNIT_PRICE_TBL.delete; /* shu_latest */
3089 G_CONTRACT_START_DATE_DEF_TBL.delete; /* shulin */
3090 G_CONTRACT_END_DATE_DEF_TBL.delete; /* shulin */
3091 G_LINE_UNIT_PRICE_DEF_TBL.delete; /* shu_latest */
3092 G_CHARGE_PERIODICITY_CODE_TBL.delete;
3093 G_CURRENCY_HEADER_ID_DEF_TBL.delete; /* vivek */
3094 G_SELLING_ROUNDING_DEF_TBL.delete; /* vivek */
3095 G_ORDER_CURRENCY_DEF_TBL.delete; /* vivek */
3096 G_PRICING_EFF_DATE_DEF_TBL.delete; /* vivek */
3097 G_BASE_CURRENCY_DEF_TBL.delete; /* vivek */
3098 G_CURRENCY_DETAIL_ID_DEF_TBL.delete; /* sunilpandey */
3099
3100 G_LINE_DETAIL_INDEX_tbl.delete;
3101 G_ATTRIBUTE_LEVEL_tbl.delete;
3102 G_ATTRIBUTE_TYPE_tbl.delete;
3103 G_LIST_HEADER_ID_tbl.delete;
3104 G_LIST_LINE_ID_tbl.delete;
3105 G_CONTEXT_tbl.delete;
3106 G_ATTRIBUTE_tbl.delete;
3107 G_VALUE_FROM_tbl.delete;
3108 G_SETUP_VALUE_FROM_tbl.delete;
3109 G_VALUE_TO_tbl.delete;
3110 G_SETUP_VALUE_TO_tbl.delete;
3111 G_GROUPING_NUMBER_tbl.delete;
3112 G_NO_QUALIFIERS_IN_GRP_tbl.delete;
3113 G_COMPARISON_OPERATOR_TYPE_tbl.delete;
3114 G_VALIDATED_FLAG_tbl.delete;
3115 G_APPLIED_FLAG_tbl.delete;
3116 G_PRICING_STATUS_CODE_tbl.delete;
3117 G_PRICING_STATUS_TEXT_tbl.delete;
3118 G_QUALIFIER_PRECEDENCE_tbl.delete;
3119 G_DATATYPE_tbl.delete;
3120 G_PRICING_ATTR_FLAG_tbl.delete;
3121 G_QUALIFIER_TYPE_tbl.delete;
3122 G_product_uom_code_tbl.delete;
3123
3124 G_ROUNDING_FLAG_TBL.delete;
3125 G_LINE_TYPE_CODE_TBL.delete ;
3126 G_PRICING_EFFECTIVE_DATE_TBL.delete ;
3127 G_ACTIVE_DATE_FIRST_TBL.delete ;
3128 G_ACTIVE_DATE_FIRST_TYPE_TBL.delete ;
3129 G_ACTIVE_DATE_SECOND_TBL.delete ;
3130 G_ACTIVE_DATE_SECOND_TYPE_TBL.delete ;
3131 G_LINE_QUANTITY_TBL.delete ;
3132 G_LINE_UOM_CODE_TBL.delete ;
3133 G_REQUEST_TYPE_CODE_TBL.delete ;
3134 G_PRICED_QUANTITY_TBL.delete ;
3135 G_UOM_QUANTITY_TBL.delete ;
3136 G_PRICED_UOM_CODE_TBL.delete ;
3137 G_CURRENCY_CODE_TBL.delete ;
3138 G_UNIT_PRICE_TBL.delete ;
3139 G_PERCENT_PRICE_TBL.delete ;
3140 G_ADJUSTED_UNIT_PRICE_TBL.delete ;
3141 G_UPD_ADJUSTED_UNIT_PRICE_TBL.delete;
3142 G_PROCESSED_FLAG_TBL.delete ;
3143 G_PRICE_FLAG_TBL.delete ;
3144 G_LINE_ID_TBL.delete ;
3145 G_PROCESSING_ORDER_TBL.delete ;
3146 G_EXCLUDER_FLAG_TBL.delete ;
3147 G_PRICE_REQUEST_CODE_TBL.delete;
3148 G_HEADER_LIMIT_EXISTS_TBL.delete;
3149 G_LINE_LIMIT_EXISTS_TBL.delete;
3150 G_CHARGE_TYPE_CODE_TBL.delete;
3151 G_CHARGE_SUBTYPE_CODE_TBL.delete;
3152 G_CURRENCY_HEADER_ID_TBL.delete; /* vivek */
3153 G_SELLING_ROUNDING_TBL.delete; /* vivek */
3154 G_ORDER_CURRENCY_TBL.delete; /* vivek */
3155 G_BASE_CURRENCY_CODE_TBL.delete; /* vivek */
3156 G_CURRENCY_DETAIL_ID_TBL.delete; /* sunilpandey */
3157 G_ACCUM_CONTEXT_TBL.delete; -- accum range break
3158 G_ACCUM_ATTRIBUTE_TBL.delete; -- accum range break
3159 G_ACCUM_FLAG_TBL.delete; -- accum range break
3160 G_UPDATED_FLAG_TBL.delete; -- 3215497
3161 G_CALCULATION_CODE_TBL.delete; -- 3215497
3162 G_CHANGE_REASON_CODE_TBL.delete; -- 3215497
3163 G_CHANGE_REASON_TEXT_TBL.delete; -- 3215497
3164 G_PROCESS_CODE_TBL.delete; -- 3215497
3165 G_LINE_DETAIL_TYPE_CODE_TBL.delete ;
3166 G_PRICE_BREAK_TYPE_CODE_TBL.delete ;
3167 G_LIST_PRICE_TBL.delete ;
3168 G_LIST_LINE_TYPE_TBL.delete ;
3169 G_LIST_TYPE_CODE_TBL.delete ;
3170 G_CREATED_FROM_SQL_TBL.delete ;
3171 G_PRICING_GROUP_SEQUENCE_TBL.delete ;
3172 G_PRICING_PHASE_ID_TBL.delete ;
3173 G_OPERAND_CALCULATION_CODE_TBL.delete ;
3174 G_OPERAND_VALUE_TBL.delete ;
3175 G_SUBSTITUTION_TYPE_CODE_TBL.delete ;
3176 G_SUBSTITUTION_VALUE_FROM_TBL.delete ;
3177 G_SUBSTITUTION_VALUE_TO_TBL.delete ;
3178 G_ASK_FOR_FLAG_TBL.delete ;
3179 G_PRICE_FORMULA_ID_TBL.delete ;
3180 G_PRODUCT_PRECEDENCE_TBL.delete ;
3181 G_INCOMP_GRP_CODE_TBL.delete ;
3182 G_AUTOMATIC_FLAG_TBL.delete ;
3183 G_OVERRIDE_FLAG_TBL.delete ;
3184 G_PRIMARY_UOM_FLAG_TBL.delete ;
3185 G_PRINT_ON_INVOICE_FLAG_TBL.delete ;
3186 G_MODIFIER_LEVEL_CODE_TBL.delete ;
3187 G_BENEFIT_QTY_TBL.delete ;
3188 G_BENEFIT_UOM_CODE_TBL.delete ;
3189 G_SERVICE_DURATION_TBL.delete ; -- SERVICE PROJECT
3190 G_SERVICE_PERIOD_TBL.delete ; -- SERVICE PROJECT
3191 G_LIST_LINE_NO_TBL.delete ;
3192 G_ACCRUAL_FLAG_TBL.delete ;
3193 G_ACCRUAL_CONVERSION_RATE_TBL.delete ;
3194 G_ESTIM_ACCRUAL_RATE_TBL.delete ;
3195 G_RECURRING_FLAG_TBL.delete ;
3196 G_QUALIFIERS_EXIST_FLAG_TBL.delete;
3197 G_PRICING_ATTRS_EXIST_FLAG_TBL.delete;
3198 G_SELECTED_VOLUME_ATTR_TBL.delete ;
3199 G_ROUNDING_FACTOR_TBL.delete ;
3200 G_LINE_INDEX_LD_TBL.delete ;
3201 G_LINE_DETAIL_INDEX_LD_TBL.delete ;
3202 G_LIST_HEADER_ID_LD_TBL.delete ;
3203 G_LIST_LINE_ID_LD_TBL.delete ;
3204 G_PRICING_STATUS_CODE_LD_TBL.delete ;
3205 G_PRICING_STATUS_TEXT_LD_TBL.delete ;
3206 G_APPLIED_FLAG_LD_TBL.delete;
3207 G_PROCESSED_FLAG_LD_TBL.delete;
3208 G_LINE_INDEX_l_TBL.delete;
3209 G_LINE_DETAIL_INDEX_l_TBL.delete;
3210 G_PRICING_STATUS_CODE_L_TBL.delete;
3211 G_PRICING_STATUS_TEXT_L_TBL.delete;
3212
3213 G_LIST_HEADER_ID_TBL_Q.delete;
3214 G_LIST_LINE_ID_TBL_Q.delete;
3215 G_LINE_INDEX_TBL_Q.delete;
3216 G_VALIDATED_FLAG_TBL_Q.delete;
3217 G_APPLIED_FLAG_TBL_Q.delete;
3218 G_START_DATE_ACTIVE_TBL_Q.delete;
3219 G_END_DATE_ACTIVE_TBL_Q.delete;
3220 G_PRICING_EFFECTIVE_DATE_TBL_Q.delete;
3221 G_LINE_TYPE_CODE_TBL_Q.delete;
3222 G_ATTRIBUTE_LEVEL_TBL_Q.delete;
3223 G_ATTRIBUTE_TYPE_TBL_Q.delete;
3224 G_CONTEXT_TBL_Q.delete;
3225 G_ATTRIBUTE_TBL_Q.delete;
3226 G_VALUE_FROM_TBL_Q.delete;
3227 G_GROUPING_NO_TBL_Q.delete;
3228 G_QUALIFIER_PRECEDENCE_TBL_Q.delete;
3229 G_DATATYPE_TBL_Q.delete;
3230 G_SETUP_VALUE_FROM_TBL_Q.delete;
3231 G_SETUP_VALUE_TO_TBL_Q.delete;
3232 G_PRICING_ATTR_FLAG_TBL_Q.delete;
3233 G_OPERATOR_TYPE_TBL_Q.delete;
3234 G_CURRENCY_CODE_TBL_Q.delete;
3235 G_ASK_FOR_FLAG_TBL_Q.delete;
3236 G_LIST_TYPE_CODE_TBL_Q.delete;
3237 G_QUALIFIER_TYPE_TBL_Q.delete;
3238 G_QUALIFIER_GROUP_CNT_TBL_Q.delete;
3239 G_OTHERS_GROUP_CNT_TBL_Q.delete;
3240 G_HEADER_QUALS_EXIST_FLG_TBL_Q.delete;
3241 G_SEARCH_IND_TBL_Q.delete;
3242 G_HEADER_LIMIT_EXISTS_TBL_Q.delete;
3243 G_LIST_LINE_NO_TBL_Q.delete;
3244
3245 G_LINE_INDEX_TBL_P.delete;
3246 G_LINE_DETAIL_INDEX_TBL_P.delete;
3247 G_LIST_HEADER_ID_TBL_P.delete;
3248 G_LIST_LINE_ID_TBL_P.delete;
3249 G_PRICE_BREAK_TYPE_CODE_TBL_P.delete;
3250 G_LIST_PRICE_TBL_P.delete;
3251 G_LIST_LINE_TYPE_TBL_P.delete;
3252 G_LIST_TYPE_CODE_TBL_P.delete;
3253 G_PRICING_GROUP_SEQUENCE_TBL_P.delete;
3254 G_PRICING_PHASE_ID_TBL_P.delete;
3255 G_OPER_CALCULATION_CODE_TBL_P.delete;
3256 G_OPERAND_VALUE_TBL_P.delete;
3257 G_ASK_FOR_FLAG_TBL_P.delete;
3258 G_PRICE_FORMULA_ID_TBL_P.delete;
3259 G_PRODUCT_PRECEDENCE_TBL_P.delete;
3260 G_INCOMP_GRP_CODE_TBL_P.delete;
3261 G_AUTOMATIC_FLAG_TBL_P.delete;
3262 G_OVERRIDE_FLAG_TBL_P.delete;
3263 G_PRIMARY_UOM_FLAG_TBL_P.delete;
3264 G_PRINT_ON_INVOICE_FLAG_TBL_P.delete;
3265 G_MODIFIER_LEVEL_CODE_TBL_P.delete;
3266 G_BENEFIT_QTY_TBL_P.delete;
3267 G_BENEFIT_UOM_CODE_TBL_P.delete;
3268 G_SERVICE_DURATION_TBL_P.delete; -- SERVICE PROJECT
3269 G_SERVICE_PERIOD_TBL_P.delete; -- SERVICE PROJECT
3270 G_LIST_LINE_NO_TBL_P.delete;
3271 G_ACCRUAL_FLAG_TBL_P.delete;
3272 G_ACCR_CONVERSION_RATE_TBL_P.delete;
3273 G_ESTIM_ACCRUAL_RATE_TBL_P.delete;
3274 G_ATTRIBUTE_LEVEL_TBL_P.delete;
3275 G_ATTRIBUTE_TYPE_TBL_P.delete;
3276 G_CONTEXT_TBL_P.delete;
3277 G_ATTRIBUTE_TBL_P.delete;
3278 G_VALUE_FROM_TBL_P.delete;
3279 G_SETUP_VALUE_FROM_TBL_P.delete;
3280 G_VALIDATED_FLAG_TBL_P.delete;
3281 G_APPLIED_FLAG_TBL_P.delete;
3282 G_PRICING_ATTR_FLAG_TBL_P.delete;
3283 G_GROUPING_NUMBER_TBL_P.delete;
3284 G_QUALIFIER_PRECEDENCE_TBL_P.delete;
3285 G_EXCLUDER_FLAG_TBL_P.delete;
3286 G_PRODUCT_UOM_CODE_TBL_P.delete;
3287 G_QUALIFIER_TYPE_TBL_P.delete;
3288 G_ROUNDING_FACTOR_TBL_P.delete;
3289 G_HEADER_LIMIT_EXISTS_TBL_P.delete;
3290 G_LINE_LIMIT_EXISTS_TBL_P.delete;
3291 G_CHARGE_TYPE_CODE_TBL_P.delete;
3292 G_CHARGE_SUBTYPE_CODE_TBL_P.delete;
3293 G_CURRENCY_HEADER_ID_TBL_P.delete; /* vivek */
3294 G_SELLING_ROUNDING_TBL_P.delete; /* vivek */
3295 G_ORDER_CURRENCY_TBL_P.delete; /* vivek */
3296 G_PRICING_EFFECTIVE_DATE_TBL_P.delete; /* vivek */
3297 G_BASE_CURRENCY_CODE_TBL_P.delete; /* vivek */
3298 G_CURRENCY_DETAIL_ID_TBL_P.delete; /* sunilpandey */
3299 G_ACCUM_CONTEXT_TBL_P.delete; -- accum range break
3300 G_ACCUM_ATTRIBUTE_TBL_P.delete; -- accum range break
3301 G_ACCUM_FLAG_TBL_P.delete; -- accum range break
3302
3303 G_ATTRIBUTE_LEVEL_TBL_PR.delete;
3304 G_ATTRIBUTE_TYPE_TBL_PR.delete;
3305 G_CONTEXT_TBL_PR.delete;
3306 G_ATTRIBUTE_TBL_PR.delete;
3307 G_VALUE_FROM_TBL_PR.delete;
3308 G_OPERATOR_TYPE_TBL_PR.delete;
3309 G_SETUP_VALUE_FROM_TBL_PR.delete;
3310 G_SETUP_VALUE_TO_TBL_PR.delete;
3311 G_DATATYPE_TBL_PR.delete;
3312
3313 G_LINE_INDEX_TBL_B.delete;
3314 G_LIST_HEADER_ID_TBL_B.delete;
3315 G_LIST_LINE_ID_TBL_B.delete;
3316 G_PRICE_BREAK_TYPE_CODE_TBL_B.delete;
3317 G_LIST_PRICE_TBL_B.delete;
3318 G_LIST_LINE_TYPE_TBL_B.delete;
3319 G_LIST_TYPE_CODE_TBL_B.delete;
3320 G_PRICING_GROUP_SEQUENCE_TBL_B.delete;
3321 G_PRICING_PHASE_ID_TBL_B.delete;
3322 G_OPER_CALCULATION_CODE_TBL_B.delete;
3323 G_OPERAND_VALUE_TBL_B.delete;
3324 G_ASK_FOR_FLAG_TBL_B.delete;
3325 G_PRICE_FORMULA_ID_TBL_B.delete;
3326 G_PRODUCT_PRECEDENCE_TBL_B.delete;
3327 G_INCOMP_GRP_CODE_TBL_B.delete;
3328 G_AUTOMATIC_FLAG_TBL_B.delete;
3329 G_OVERRIDE_FLAG_TBL_B.delete;
3330 G_PRIMARY_UOM_FLAG_TBL_B.delete;
3331 G_PRINT_ON_INVOICE_FLAG_TBL_B.delete;
3332 G_MODIFIER_LEVEL_CODE_TBL_B.delete;
3333 G_BENEFIT_QTY_TBL_B.delete;
3334 G_BENEFIT_UOM_CODE_TBL_B.delete;
3335 G_SERVICE_DURATION_TBL_B.delete; -- SERVICE PROJECT
3336 G_SERVICE_PERIOD_TBL_B.delete; -- SERVICE PROJECT
3337 G_LIST_LINE_NO_TBL_B.delete;
3338 G_ACCRUAL_FLAG_TBL_B.delete;
3339 G_ACCR_CONVERSION_RATE_TBL_B.delete;
3340 G_ESTIM_ACCRUAL_RATE_TBL_B.delete;
3341 G_LINE_INDEX_TBL_G.delete;
3342 G_LIST_HEADER_ID_TBL_G.delete;
3343 G_LIST_LINE_ID_TBL_G.delete;
3344 G_NO_OF_PATTS_IN_GRP_TBL_G.delete;
3345
3346 G_PRICING_PHASE_ID_TBL_A.delete;
3347 G_INCOMP_GRP_CODE_TBL_A.delete;
3348 G_LINE_DETAIL_TYPE_CODE_TBL_A.delete;
3349 G_MODIFIER_LEVEL_CODE_TBL_A.delete;
3350 G_PRIMARY_UOM_FLAG_TBL_A.delete;
3351
3352 EXCEPTION
3353 WHEN OTHERS THEN
3354 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3355 engine_debug(l_routine||': '||SQLERRM);
3356 END IF;
3357 x_status_code := FND_API.G_RET_STS_ERROR;
3358 x_status_text := l_routine || ': ' || SQLERRM;
3359 END Reset_All_Tbls;
3360
3361 /*+---------------------------------------------------------------------
3362 |Update Processing_Order
3363 |For service lines, two request lines might be related to each other and one
3364 |might be the parent and the other might be child.
3365 |This relationship are passed by the calling application
3366 |thru rltd_tbl structure. From this structure, we can find
3367 |the which is the parent and child. Parent lines
3368 |need to be process before the child lines. This information
3369 |is store in processing_order column in temp by this procedure
3370 +---------------------------------------------------------------------
3371 */
3372 PROCEDURE Update_Processing_Order (x_status_code OUT NOCOPY VARCHAR2,
3373 x_status_text OUT NOCOPY VARCHAR2)
3374 AS
3375
3376 /*
3377 INDX,QP_PREQ_GRP.Update_Processing_Order.l_Service_Cur,-No Index Used-,NA,NA
3378 */
3379 CURSOR l_Service_Cur IS
3380 SELECT LINE_INDEX,
3381 RELATED_LINE_INDEX
3382 FROM qp_npreq_rltd_lines_tmp
3383 WHERE LINE_INDEX IS NOT NULL
3384 AND RELATED_LINE_INDEX IS NOT NULL
3385 AND RELATIONSHIP_TYPE_CODE = G_SERVICE_LINE;
3386
3387 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.Update_Processing_Order';
3388 l_line_index_tbl NUMBER_TYPE;
3389 l_related_line_index_tbl NUMBER_TYPE;
3390
3391 BEGIN
3392 x_status_code := FND_API.G_RET_STS_SUCCESS;
3393 /*
3394 INDX,QP_PREQ_GRP.Update_Processing_Order.Update_Processing_Order_upd1,qp_npreq_lines_tmp_U1,LINE_INDEX,1
3395 */
3396
3397 -- julin [3805113]: using bulk collect and update
3398 OPEN l_Service_Cur;
3399 LOOP
3400 FETCH l_Service_Cur BULK COLLECT INTO
3401 l_line_index_tbl,
3402 l_related_line_index_tbl
3403 LIMIT G_BATCH_SIZE;
3404 EXIT WHEN l_line_index_tbl.count = 0;
3405
3406 -- julin [3805113]: bulk update
3407 FORALL I IN l_line_index_tbl.first..l_line_index_tbl.last
3408 UPDATE qp_npreq_lines_tmp --upd1
3409 SET PROCESSING_ORDER = 1
3410 WHERE LINE_INDEX = l_line_index_tbl(I);
3411
3412 --Assuming that parent line has it index on related_line_index column
3413 /*
3414 INDX,QP_PREQ_GRP.Update_Processing_Order.Update_Processing_Order_upd2,qp_npreq_lines_tmp_U1,LINE_INDEX,1
3415 */
3416 -- julin [3805113]: bulk update
3417 FORALL I IN l_related_line_index_tbl.first..l_related_line_index_tbl.last
3418 UPDATE qp_npreq_lines_tmp --upd2
3419 SET PROCESSING_ORDER = 2
3420 WHERE LINE_INDEX = l_related_line_index_tbl(I);
3421
3422 END LOOP;
3423 CLOSE l_Service_Cur;
3424
3425 --added for 4900095
3426 --marking the service lines with uom_quantity as null
3427 --this will be used in lumpsum calculation
3428 for cl in (select line_index from qp_npreq_lines_tmp line
3429 where processing_order = 2
3430 and (contract_start_date is not null or contract_end_date is not null)
3431 and uom_quantity is null)
3432 loop
3433 G_service_line_ind_tbl(cl.line_index) := cl.line_index;
3434 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3435 IF G_service_line_ind_tbl.exists(cl.line_index) THEN
3436 engine_debug('service line with uom_qty as null line_index: '||G_service_line_ind_tbl(cl.line_index));
3437 END IF;--G_service_line_ind_tbl.exists
3438 END IF;--G_DEBUG_ENGINE
3439 end loop;
3440
3441 EXCEPTION
3442 WHEN OTHERS THEN
3443 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3444 engine_debug(l_routine||' '||SQLERRM);
3445 END IF;
3446 x_status_code := FND_API.G_RET_STS_ERROR;
3447 x_status_text := 'Error in '||l_routine||SQLERRM;
3448 END;
3449
3450 /*+----------------------------------------------------------------------
3451 | Function GET_LINE_DETAIL_INDEX
3452 | Output: Unique number
3453 | This function behave like a sequence, to return uniq
3454 +----------------------------------------------------------------------
3455 */
3456 FUNCTION GET_LINE_DETAIL_INDEX RETURN PLS_INTEGER IS
3457 BEGIN
3458 G_LINE_DETAIL_INDEX :=G_LINE_DETAIL_INDEX + 1;
3459 RETURN G_LINE_DETAIL_INDEX;
3460 END;
3461
3462 /*+----------------------------------------------------------------------
3463 |PROCEDURE SET_STATUS_CODE
3464 +----------------------------------------------------------------------
3465 */
3466 PROCEDURE SET_STATUS_CODE (p_status_code IN VARCHAR2,
3467 p_status_text IN VARCHAR2:=NULL,
3468 p_line_index IN NUMBER,
3469 p_line_detail_index IN PLS_INTEGER:=NULL,
3470 p_temp_table IN VARCHAR2,
3471 x_status_code OUT NOCOPY VARCHAR2,
3472 x_status_text OUT NOCOPY VARCHAR2)
3473 AS
3474 l_routine VARCHAR2(240):='QP_PREQ_GRP.SET_STATUS_CODE';
3475 BEGIN
3476 IF(p_temp_table = 'LINES') THEN
3477 /*
3478 INDX,QP_PREQ_GRP.set_status_code.set_status_code_upd1,qp_npreq_lines_tmp_N1,LINE_INDEX,1
3479 */
3480 -- shulin fix bug1745788, widen substr to 2000
3481 UPDATE qp_npreq_lines_tmp --upd1
3482 SET PRICING_STATUS_CODE = p_status_code,
3483 PRICING_STATUS_TEXT = substr(p_status_text,1,2000)
3484 WHERE LINE_INDEX = p_line_index;
3485 ELSIF (p_temp_table = 'LDETS' AND p_line_index IS NOT NULL) THEN
3486 /*
3487 INDX,QP_PREQ_GRP.set_status_code.set_status_code_upd2,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
3488 */
3489 -- shulin fix bug1745788, widen substr to 2000
3490 --bug 14464004
3491 UPDATE /*+ index(qp_npreq_ldets_tmp qp_preq_ldets_tmp_n1) */ qp_npreq_ldets_tmp --upd2
3492 SET PRICING_STATUS_CODE = p_status_code,
3493 PRICING_STATUS_TEXT =
3494 substr(pricing_status_code||'+'||p_status_code||'+'||p_status_text,1,2000)
3495 WHERE LINE_INDEX = p_line_index
3496 AND PRICING_STATUS_CODE <> G_STATUS_UNCHANGED;
3497 ELSIF (p_temp_table = 'ATTRS' AND p_line_index IS NOT NULL
3498 AND p_line_detail_index IS NULL) THEN
3499 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3500 engine_debug('----Updating status code for LDETS---------');
3501 END IF;
3502 /*
3503 INDX,QP_PREQ_GRP.set_status_code.set_status_code_upd3,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
3504 INDX,QP_PREQ_GRP.set_status_code.set_status_code_upd3,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
3505 */
3506 --bug 14464004
3507 UPDATE /*+ dynamic_sampling(1) index(qp_npreq_line_attrs_tmp qp_preq_line_attrs_tmp_n1) */ qp_npreq_line_attrs_tmp --upd3
3508 SET PRICING_STATUS_CODE = p_status_code,
3509 PRICING_STATUS_TEXT = substr(p_status_text,1,240)
3510 WHERE LINE_INDEX = p_line_index
3511 AND PRICING_STATUS_CODE <> G_STATUS_UNCHANGED;
3512 END IF;
3513 EXCEPTION
3514 WHEN OTHERS THEN
3515 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3516 engine_debug(l_routine||' '||SQLERRM);
3517 END IF;
3518 x_status_code := FND_API.G_RET_STS_ERROR;
3519 x_status_text := l_routine||': '||SQLERRM;
3520
3521 END SET_STATUS_CODE;
3522
3523
3524 /*+----------------------------------------------------------------------
3525 |PROCEDURE SET_PROCESSED_CODE
3526 +----------------------------------------------------------------------
3527 */
3528 PROCEDURE SET_PROCESSED_CODE (p_processed_code IN VARCHAR2,
3529 p_line_index IN NUMBER,
3530 p_line_detail_index IN PLS_INTEGER:=NULL,
3531 p_temp_table IN VARCHAR2,
3532 x_status_code OUT NOCOPY VARCHAR2,
3533 x_status_text OUT NOCOPY VARCHAR2)
3534 AS
3535 l_routine VARCHAR2(240):='QP_PREQ_GRP.SET_PROCESSED_CODE';
3536 BEGIN
3537 IF(p_temp_table = 'LINES') THEN
3538 /*
3539 INDX,QP_PREQ_GRP.set_processed_code.set_processed_code_upd1,qp_npreq_lines_tmp_N1,LINE_INDEX,1
3540 */
3541 UPDATE qp_npreq_lines_tmp --upd1
3542 SET PROCESSED_CODE = p_processed_code
3543 WHERE LINE_INDEX = p_line_index;
3544 ELSIF (p_temp_table = 'ATTRS' AND p_line_index IS NOT NULL
3545 AND p_line_detail_index IS NULL) THEN
3546 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3547 engine_debug('----Updating status code for LDETS---------');
3548 END IF;
3549 /*
3550 INDX,QP_PREQ_GRP.set_processed_code.set_processed_code_upd2,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
3551 */
3552 UPDATE qp_npreq_line_attrs_tmp --upd2
3553 SET PROCESSED_CODE = p_processed_code
3554 WHERE LINE_INDEX = p_line_index;
3555 END IF;
3556 EXCEPTION
3557 WHEN OTHERS THEN
3558 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3559 engine_debug(l_routine||' '||SQLERRM);
3560 END IF;
3561 x_status_code := FND_API.G_RET_STS_ERROR;
3562 x_status_text := l_routine||': '||SQLERRM;
3563
3564 END SET_PROCESSED_CODE;
3565
3566 /*+----------------------------------------------------
3567 |PROCEDURE DELETE_ALL_LINES
3568 |This procedure mark qp_npreq_line_attrs_tmp and qp_npreq_ldets_tmp
3569 |for delete. And mark qp_preq_lines status code as
3570 |whatever calling procedure wanted. Which is usually
3571 |not a 'Delete' because record in qp_npreq_lines_tmp
3572 |is the only one which communicates with outside
3573 |world (order managment for example).
3574 +----------------------------------------------------
3575 */
3576
3577 PROCEDURE DELETE_LINES(p_line_index IN NUMBER,
3578 p_line_status_code IN VARCHAR2,
3579 p_status_text IN VARCHAR2,
3580 x_status_code OUT NOCOPY VARCHAR2,
3581 x_status_text OUT NOCOPY VARCHAR2) AS
3582
3583 l_routine VARCHAR2(240):='QP_PREQ_GRP.DELETE_LINES';
3584
3585 l_error_status_code VARCHAR2(30);
3586 l_error_status_text VARCHAR2(240);
3587
3588 E_ROUTINE_ERRORS EXCEPTION;
3589
3590 BEGIN
3591 SET_STATUS_CODE(p_line_status_code,
3592 p_status_text,
3593 P_LINE_INDEX,
3594 NULL,
3595 'LINES',
3596 l_error_status_code,
3597 l_error_status_text);
3598
3599 IF (l_error_status_code = FND_API.G_RET_STS_ERROR) THEN
3600 RAISE E_ROUTINE_ERRORS;
3601 END IF;
3602
3603 SET_STATUS_CODE(G_STATUS_DELETED,
3604 p_status_text,
3605 P_LINE_INDEX,
3606 NULL,
3607 'ATTRS',
3608 l_error_status_code,
3609 l_error_status_text);
3610
3611 IF (l_error_status_code = FND_API.G_RET_STS_ERROR) THEN
3612 RAISE E_ROUTINE_ERRORS;
3613 END IF;
3614
3615 SET_STATUS_CODE(G_STATUS_DELETED,
3616 p_status_text,
3617 P_LINE_INDEX,
3618 NULL,
3619 'LDETS',
3620 l_error_status_code,
3621 l_error_status_text);
3622
3623 IF (l_error_status_code = FND_API.G_RET_STS_ERROR) THEN
3624 RAISE E_ROUTINE_ERRORS;
3625 END IF;
3626
3627 EXCEPTION
3628 WHEN E_ROUTINE_ERRORS THEN
3629 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3630 engine_debug(l_routine||': '||l_error_status_text);
3631 END IF;
3632 x_status_code := FND_API.G_RET_STS_ERROR;
3633 x_status_text := l_routine||': '||l_error_status_text;
3634 WHEN OTHERS THEN
3635 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3636 engine_debug(l_routine||' '||SQLERRM);
3637 END IF;
3638 x_status_code := FND_API.G_RET_STS_ERROR;
3639 x_status_text := 'Error in '||l_routine||SQLERRM;
3640 END DELETE_LINES;
3641
3642 /*+----------------------------------------------------------------------
3643 |Procedure Group INSERT_LINE_ATTRS2_AT
3644 +----------------------------------------------------------------------
3645 */
3646
3647 PROCEDURE INSERT_LINE_ATTRS2_AT
3648 ( p_LINE_INDEX_tbl number_type,
3649 p_LINE_DETAIL_INDEX_tbl pls_integer_type ,
3650 p_ATTRIBUTE_TYPE_tbl varchar_type,
3651 p_CONTEXT_tbl varchar_type,
3652 p_ATTRIBUTE_tbl varchar_type,
3653 p_VALUE_FROM_tbl varchar_type,
3654 p_VALUE_TO_tbl varchar_type,
3655 p_VALIDATED_FLAG_tbl varchar_type,
3656 x_status_code OUT NOCOPY VARCHAR2,
3657 x_status_text OUT NOCOPY VARCHAR2)
3658 AS
3659 PRAGMA AUTONOMOUS_TRANSACTION;
3660 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LINE_ATTRS2_AT';
3661 l_request_id number;
3662
3663 BEGIN
3664 x_status_code := FND_API.G_RET_STS_SUCCESS;
3665 l_request_id := nvl(SYS_CONTEXT('QP_CONTEXT','request_id'),-9999);
3666
3667 FORALL i in p_line_index_tbl.FIRST..p_line_index_tbl.LAST
3668 INSERT INTO QP_INT_LINE_ATTRS_T
3669 (LINE_INDEX,
3670 LINE_DETAIL_INDEX,
3671 ATTRIBUTE_TYPE,
3672 CONTEXT,
3673 ATTRIBUTE,
3674 VALUE_FROM,
3675 VALUE_TO,
3676 VALIDATED_FLAG,
3677 request_id)
3678 VALUES (p_LINE_INDEX_tbl(i),
3679 p_LINE_DETAIL_INDEX_tbl(i),
3680 p_ATTRIBUTE_TYPE_tbl(i),
3681 p_CONTEXT_tbl(i),
3682 p_ATTRIBUTE_tbl(i),
3683 p_VALUE_FROM_tbl(i),
3684 p_VALUE_TO_tbl(i),
3685 p_VALIDATED_FLAG_tbl(i),
3686 l_request_id);
3687 /*INSERT INTO QP_INT_LINE_ATTRS
3688 (LINE_INDEX,
3689 LINE_DETAIL_INDEX,
3690 ATTRIBUTE_TYPE,
3691 CONTEXT,
3692 ATTRIBUTE,
3693 VALUE_FROM,
3694 VALUE_TO,
3695 VALIDATED_FLAG)
3696 VALUES (p_LINE_INDEX_tbl(i),
3697 p_LINE_DETAIL_INDEX_tbl(i),
3698 p_ATTRIBUTE_TYPE_tbl(i),
3699 p_CONTEXT_tbl(i),
3700 p_ATTRIBUTE_tbl(i),
3701 p_VALUE_FROM_tbl(i),
3702 p_VALUE_TO_tbl(i),
3703 p_VALIDATED_FLAG_tbl(i));
3704 */
3705 QP_PREQ_GRP.G_INT_ATTRS_NO := QP_PREQ_GRP.G_INT_ATTRS_NO + p_LINE_INDEX_tbl.count;
3706 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3707 QP_PREQ_GRP.engine_debug('QP_PREQ_GRP.G_INT_ATTRS_NO='||QP_PREQ_GRP.G_INT_ATTRS_NO);
3708 END IF;
3709 COMMIT;
3710 EXCEPTION
3711 WHEN OTHERS THEN
3712 x_status_code := FND_API.G_RET_STS_ERROR;
3713 x_status_text :=l_routine||' '||SQLERRM;
3714 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3715 QP_PREQ_GRP.engine_debug(l_routine||' '||SQLERRM);
3716 END IF;
3717 END;
3718
3719 /*+----------------------------------------------------------------------
3720 |Procedure Group INSERT_LINE_ATTRS2
3721 +----------------------------------------------------------------------
3722 */
3723
3724 PROCEDURE INSERT_LINE_ATTRS2
3725 ( p_LINE_INDEX_tbl number_type,
3726 p_LINE_DETAIL_INDEX_tbl pls_integer_type ,
3727 p_ATTRIBUTE_TYPE_tbl varchar_type,
3728 p_CONTEXT_tbl varchar_type,
3729 p_ATTRIBUTE_tbl varchar_type,
3730 p_VALUE_FROM_tbl varchar_type,
3731 p_VALUE_TO_tbl varchar_type,
3732 p_VALIDATED_FLAG_tbl varchar_type,
3733 x_status_code OUT NOCOPY VARCHAR2,
3734 x_status_text OUT NOCOPY VARCHAR2)
3735 AS
3736 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LINE_ATTRS2';
3737 --added by yangli for Java Engine 3086881
3738 l_debug varchar2(3);
3739 --added by yangli for Java Engine 3086881
3740 BEGIN
3741
3742 --added by yangli for Java Engine 3086881
3743 -- Set the global variable G_DEBUG_ENGINE
3744 QP_PREQ_GRP.Set_QP_Debug;
3745
3746 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
3747
3748 --added by yangli for Java Engine project
3749 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
3750 IF l_debug = FND_API.G_TRUE THEN
3751 ENGINE_DEBUG('Java Engine not Installed ----------');
3752 END IF;
3753 --added by yangli for Java Engine 3086881
3754 x_status_code := FND_API.G_RET_STS_SUCCESS;
3755
3756 FORALL i in p_line_index_tbl.FIRST..p_line_index_tbl.LAST
3757 INSERT INTO qp_npreq_line_attrs_tmp
3758 (LINE_INDEX,
3759 LINE_DETAIL_INDEX,
3760 ATTRIBUTE_TYPE,
3761 CONTEXT,
3762 ATTRIBUTE,
3763 VALUE_FROM,
3764 VALUE_TO,
3765 VALIDATED_FLAG)
3766 VALUES (p_LINE_INDEX_tbl(i),
3767 p_LINE_DETAIL_INDEX_tbl(i),
3768 p_ATTRIBUTE_TYPE_tbl(i),
3769 p_CONTEXT_tbl(i),
3770 p_ATTRIBUTE_tbl(i),
3771 p_VALUE_FROM_tbl(i),
3772 p_VALUE_TO_tbl(i),
3773 p_VALIDATED_FLAG_tbl(i));
3774 --added by yangli for Java Engine 3086881
3775 ELSE
3776 IF l_debug = FND_API.G_TRUE THEN
3777 ENGINE_DEBUG('Java Engine Installed ----------');
3778 END IF;
3779 QP_PREQ_GRP.INSERT_LINE_ATTRS2_AT(
3780 p_LINE_INDEX_tbl ,
3781 p_LINE_DETAIL_INDEX_tbl ,
3782 p_ATTRIBUTE_TYPE_tbl ,
3783 p_CONTEXT_tbl ,
3784 p_ATTRIBUTE_tbl ,
3785 p_VALUE_FROM_tbl ,
3786 p_VALUE_TO_tbl ,
3787 p_VALIDATED_FLAG_tbl ,
3788 x_status_code ,
3789 x_status_text
3790 );
3791
3792 END IF;
3793 --added by yangli for Java Engine 3086881
3794
3795 EXCEPTION
3796 WHEN OTHERS THEN
3797 x_status_code := FND_API.G_RET_STS_ERROR;
3798 x_status_text :=l_routine||' '||SQLERRM;
3799 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3800 engine_debug(l_routine||' '||SQLERRM);
3801 END IF;
3802 END;
3803
3804
3805 /*+-----------------------------------------------------------------------
3806 | PROCEDURE INSERT_LINE_ATTRS
3807 +-----------------------------------------------------------------------
3808 */
3809 PROCEDURE INSERT_LINE_ATTRS
3810 ( p_LINE_INDEX IN PLS_INTEGER,
3811 p_LINE_DETAIL_INDEX IN PLS_INTEGER :=NULL,
3812 p_ATTRIBUTE_LEVEL IN VARCHAR2,
3813 p_ATTRIBUTE_TYPE IN VARCHAR2,
3814 p_LIST_HEADER_ID IN NUMBER :=NULL,
3815 p_LIST_LINE_ID IN NUMBER :=NULL,
3816 p_CONTEXT IN VARCHAR2,
3817 p_ATTRIBUTE IN VARCHAR2,
3818 p_VALUE_FROM IN VARCHAR2,
3819 p_SETUP_VALUE_FROM IN VARCHAR2 :=NULL,
3820 p_VALUE_TO IN VARCHAR2 :=NULL,
3821 p_SETUP_VALUE_TO IN VARCHAR2 :=NULL,
3822 p_GROUPING_NUMBER IN PLS_INTEGER :=NULL,
3823 p_NO_QUALIFIERS_IN_GRP IN PLS_INTEGER :=NULL,
3824 p_COMPARISON_OPERATOR_TYPE IN VARCHAR2 :=NULL,
3825 p_VALIDATED_FLAG IN VARCHAR2 :=NULL,
3826 p_APPLIED_FLAG IN VARCHAR2 :=NULL,
3827 p_PRICING_STATUS_CODE IN VARCHAR2,
3828 p_PRICING_STATUS_TEXT IN VARCHAR2 :=NULL,
3829 p_QUALIFIER_PRECEDENCE IN PLS_INTEGER :=NULL,
3830 p_DATATYPE IN VARCHAR2 :=NULL,
3831 p_PRICING_ATTR_FLAG IN VARCHAR2 :=NULL,
3832 p_QUALIFIER_TYPE IN VARCHAR2 :=NULL,
3833 p_product_uom_code IN VARCHAR2 :=NULL,
3834 p_excluder_flag IN VARCHAR2 :=NULL,
3835 x_status_code OUT NOCOPY VARCHAR2,
3836 x_status_text OUT NOCOPY VARCHAR2)
3837 AS
3838 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LINE_ATTRS';
3839 BEGIN
3840 x_status_code := FND_API.G_RET_STS_SUCCESS;
3841 INSERT INTO qp_npreq_line_attrs_tmp
3842 (LINE_INDEX,
3843 LINE_DETAIL_INDEX,
3844 ATTRIBUTE_LEVEL,
3845 ATTRIBUTE_TYPE,
3846 LIST_HEADER_ID,
3847 LIST_LINE_ID,
3848 CONTEXT,
3849 ATTRIBUTE,
3850 VALUE_FROM,
3851 SETUP_VALUE_FROM,
3852 VALUE_TO,
3853 SETUP_VALUE_TO,
3854 GROUPING_NUMBER,
3855 COMPARISON_OPERATOR_TYPE_CODE,
3856 VALIDATED_FLAG,
3857 APPLIED_FLAG,
3858 PRICING_STATUS_CODE,
3859 PRICING_STATUS_TEXT,
3860 QUALIFIER_PRECEDENCE,
3861 DATATYPE,
3862 PRICING_ATTR_FLAG,
3863 QUALIFIER_TYPE,
3864 PRODUCT_UOM_CODE,
3865 EXCLUDER_FLAG
3866 )
3867 VALUES (p_LINE_INDEX,
3868 p_LINE_DETAIL_INDEX,
3869 p_ATTRIBUTE_LEVEL,
3870 p_ATTRIBUTE_TYPE,
3871 p_LIST_HEADER_ID,
3872 p_LIST_LINE_ID,
3873 p_CONTEXT,
3874 p_ATTRIBUTE,
3875 p_VALUE_FROM,
3876 p_SETUP_VALUE_FROM,
3877 p_VALUE_TO,
3878 p_SETUP_VALUE_TO,
3879 p_GROUPING_NUMBER,
3880 p_COMPARISON_OPERATOR_TYPE,
3881 p_VALIDATED_FLAG,
3882 p_APPLIED_FLAG,
3883 p_PRICING_STATUS_CODE,
3884 p_PRICING_STATUS_TEXT,
3885 p_QUALIFIER_PRECEDENCE,
3886 p_DATATYPE,
3887 p_PRICING_ATTR_FLAG,
3888 p_QUALIFIER_TYPE,
3889 p_PRODUCT_UOM_CODE,
3890 p_EXCLUDER_FLAG
3891 );
3892 EXCEPTION
3893 WHEN OTHERS THEN
3894 x_status_code := FND_API.G_RET_STS_ERROR;
3895 x_status_text :=l_routine||' '||SQLERRM;
3896 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3897 engine_debug(l_routine||' '||SQLERRM);
3898 END IF;
3899 END;
3900
3901 /*+-----------------------------------------------------------------------
3902 | PROCEDURE INSERT_PRICE_LIST_ATTRS
3903 +-----------------------------------------------------------------------
3904 */
3905 PROCEDURE INSERT_PRICE_LIST_ATTRS
3906 ( p_LINE_INDEX_tbl pls_integer_type,
3907 p_LINE_DETAIL_INDEX_tbl pls_integer_type ,
3908 p_ATTRIBUTE_LEVEL_tbl varchar_type,
3909 p_ATTRIBUTE_TYPE_tbl varchar_type,
3910 p_LIST_HEADER_ID_tbl number_type,
3911 p_LIST_LINE_ID_tbl number_type,
3912 p_CONTEXT_tbl varchar_type,
3913 p_ATTRIBUTE_tbl varchar_type,
3914 p_VALUE_FROM_tbl varchar_type,
3915 p_SETUP_VALUE_FROM_tbl varchar_type,
3916 p_SETUP_VALUE_TO_tbl varchar_type,
3917 p_GROUPING_NUMBER_tbl pls_integer_type,
3918 p_COMPARISON_OPERATOR_TYPE_tbl varchar_type,
3919 p_VALIDATED_FLAG_tbl varchar_type,
3920 p_APPLIED_FLAG_tbl varchar_type,
3921 p_PRICING_STATUS_CODE_tbl varchar_type,
3922 p_PRICING_STATUS_TEXT_tbl varchar_type,
3923 p_QUALIFIER_PRECEDENCE_tbl pls_integer_type,
3924 p_DATATYPE_tbl varchar_type,
3925 p_PRICING_ATTR_FLAG_tbl varchar_type,
3926 p_QUALIFIER_TYPE_tbl varchar_type,
3927 p_PRODUCT_UOM_CODE_TBL varchar_type,
3928 p_EXCLUDER_FLAG_TBL varchar_type ,
3929 p_PRICING_PHASE_ID_TBL pls_integer_type ,
3930 p_INCOMPATABILITY_GRP_CODE_TBL varchar_type ,
3931 p_LINE_DETAIL_TYPE_CODE_TBL varchar_type ,
3932 p_MODIFIER_LEVEL_CODE_TBL varchar_type ,
3933 p_PRIMARY_UOM_FLAG_TBL varchar_type ,
3934 x_status_code OUT NOCOPY VARCHAR2,
3935 x_status_text OUT NOCOPY VARCHAR2)
3936 AS
3937
3938
3939 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_PRICE_LIST_ATTRS';
3940 BEGIN
3941 x_status_code := FND_API.G_RET_STS_SUCCESS;
3942
3943 FORALL i in p_line_index_tbl.FIRST..p_line_index_tbl.LAST
3944 INSERT INTO qp_npreq_line_attrs_tmp
3945 (LINE_INDEX,
3946 LINE_DETAIL_INDEX,
3947 ATTRIBUTE_LEVEL,
3948 ATTRIBUTE_TYPE,
3949 LIST_HEADER_ID,
3950 LIST_LINE_ID,
3951 CONTEXT,
3952 ATTRIBUTE,
3953 VALUE_FROM,
3954 SETUP_VALUE_FROM,
3955 SETUP_VALUE_TO,
3956 GROUPING_NUMBER,
3957 COMPARISON_OPERATOR_TYPE_CODE,
3958 VALIDATED_FLAG,
3959 APPLIED_FLAG,
3960 PRICING_STATUS_CODE,
3961 PRICING_STATUS_TEXT,
3962 QUALIFIER_PRECEDENCE,
3963 DATATYPE,
3964 PRICING_ATTR_FLAG,
3965 QUALIFIER_TYPE,
3966 PRODUCT_UOM_CODE,
3967 EXCLUDER_FLAG,
3968 PRICING_PHASE_ID,
3969 INCOMPATABILITY_GRP_CODE,
3970 LINE_DETAIL_TYPE_CODE,
3971 MODIFIER_LEVEL_CODE,
3972 PRIMARY_UOM_FLAG
3973 )
3974 VALUES (p_LINE_INDEX_tbl(i),
3975 p_LINE_DETAIL_INDEX_tbl(i),
3976 p_ATTRIBUTE_LEVEL_tbl(i),
3977 p_ATTRIBUTE_TYPE_tbl(i),
3978 p_LIST_HEADER_ID_tbl(i),
3979 p_LIST_LINE_ID_tbl(i),
3980 p_CONTEXT_tbl(i),
3981 p_ATTRIBUTE_tbl(i),
3982 p_VALUE_FROM_tbl(i),
3983 p_SETUP_VALUE_FROM_tbl(i),
3984 p_SETUP_VALUE_TO_tbl(i),
3985 p_GROUPING_NUMBER_tbl(i),
3986 p_COMPARISON_OPERATOR_TYPE_tbl(i),
3987 p_VALIDATED_FLAG_tbl(i),
3988 p_APPLIED_FLAG_tbl(i),
3989 p_PRICING_STATUS_CODE_tbl(i),
3990 p_PRICING_STATUS_TEXT_tbl(i),
3991 p_QUALIFIER_PRECEDENCE_tbl(i),
3992 p_DATATYPE_tbl(i),
3993 p_PRICING_ATTR_FLAG_tbl(i),
3994 p_QUALIFIER_TYPE_tbl(i),
3995 p_PRODUCT_UOM_CODE_tbl(i),
3996 p_EXCLUDER_FLAG_TBL(i),
3997 p_PRICING_PHASE_ID_TBL(i),
3998 p_INCOMPATABILITY_GRP_CODE_TBL(i),
3999 p_LINE_DETAIL_TYPE_CODE_TBL(i),
4000 p_MODIFIER_LEVEL_CODE_TBL(i),
4001 p_PRIMARY_UOM_FLAG_TBL(i)
4002 );
4003 EXCEPTION
4004 WHEN OTHERS THEN
4005 x_status_code := FND_API.G_RET_STS_ERROR;
4006 x_status_text :=l_routine||' '||SQLERRM;
4007 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4008 engine_debug(l_routine||' '||SQLERRM);
4009 END IF;
4010 END;
4011
4012 /*+-----------------------------------------------------------------------
4013 | PROCEDURE INSERT_LINE_ATTRS2_AT
4014 +-----------------------------------------------------------------------
4015 */
4016 PROCEDURE INSERT_LINE_ATTRS2_AT
4017 ( p_LINE_INDEX_tbl pls_integer_type,
4018 p_LINE_DETAIL_INDEX_tbl pls_integer_type ,
4019 p_ATTRIBUTE_LEVEL_tbl varchar_type,
4020 p_ATTRIBUTE_TYPE_tbl varchar_type,
4021 p_LIST_HEADER_ID_tbl number_type,
4022 p_LIST_LINE_ID_tbl number_type,
4023 p_CONTEXT_tbl varchar_type,
4024 p_ATTRIBUTE_tbl varchar_type,
4025 p_VALUE_FROM_tbl varchar_type,
4026 p_SETUP_VALUE_FROM_tbl varchar_type,
4027 p_VALUE_TO_tbl varchar_type,
4028 p_SETUP_VALUE_TO_tbl varchar_type,
4029 p_GROUPING_NUMBER_tbl pls_integer_type,
4030 p_NO_QUALIFIERS_IN_GRP_tbl pls_integer_type,
4031 p_COMPARISON_OPERATOR_TYPE_tbl varchar_type,
4032 p_VALIDATED_FLAG_tbl varchar_type,
4033 p_APPLIED_FLAG_tbl varchar_type,
4034 p_PRICING_STATUS_CODE_tbl varchar_type,
4035 p_PRICING_STATUS_TEXT_tbl varchar_type,
4036 p_QUALIFIER_PRECEDENCE_tbl pls_integer_type,
4037 p_DATATYPE_tbl varchar_type,
4038 p_PRICING_ATTR_FLAG_tbl varchar_type,
4039 p_QUALIFIER_TYPE_tbl varchar_type,
4040 p_PRODUCT_UOM_CODE_TBL varchar_type,
4041 p_EXCLUDER_FLAG_TBL varchar_type ,
4042 p_PRICING_PHASE_ID_TBL pls_integer_type ,
4043 p_INCOMPATABILITY_GRP_CODE_TBL varchar_type ,
4044 p_LINE_DETAIL_TYPE_CODE_TBL varchar_type ,
4045 p_MODIFIER_LEVEL_CODE_TBL varchar_type ,
4046 p_PRIMARY_UOM_FLAG_TBL varchar_type ,
4047 x_status_code OUT NOCOPY VARCHAR2,
4048 x_status_text OUT NOCOPY VARCHAR2)
4049 AS
4050 PRAGMA AUTONOMOUS_TRANSACTION;
4051 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LINE_ATTRS2_AT';
4052 l_request_id number;
4053 BEGIN
4054 x_status_code := FND_API.G_RET_STS_SUCCESS;
4055 l_request_id := nvl(SYS_CONTEXT('QP_CONTEXT','request_id'),-9999);
4056
4057 FORALL i in p_line_index_tbl.FIRST..p_line_index_tbl.LAST
4058 /*INSERT INTO QP_INT_LINE_ATTRS
4059 ( LINE_INDEX,
4060 LINE_DETAIL_INDEX,
4061 ATTRIBUTE_LEVEL,
4062 ATTRIBUTE_TYPE,
4063 LIST_HEADER_ID,
4064 LIST_LINE_ID,
4065 CONTEXT,
4066 ATTRIBUTE,
4067 VALUE_FROM,
4068 SETUP_VALUE_FROM,
4069 VALUE_TO,
4070 SETUP_VALUE_TO,
4071 GROUPING_NUMBER,
4072 COMPARISON_OPERATOR_TYPE_CODE,
4073 VALIDATED_FLAG,
4074 APPLIED_FLAG,
4075 PRICING_STATUS_CODE,
4076 PRICING_STATUS_TEXT,
4077 QUALIFIER_PRECEDENCE,
4078 DATATYPE,
4079 PRICING_ATTR_FLAG,
4080 QUALIFIER_TYPE,
4081 PRODUCT_UOM_CODE,
4082 EXCLUDER_FLAG,
4083 PRICING_PHASE_ID,
4084 INCOMPATABILITY_GRP_CODE,
4085 LINE_DETAIL_TYPE_CODE,
4086 MODIFIER_LEVEL_CODE,
4087 PRIMARY_UOM_FLAG
4088 )
4089 VALUES ( p_LINE_INDEX_tbl(i),
4090 p_LINE_DETAIL_INDEX_tbl(i),
4091 p_ATTRIBUTE_LEVEL_tbl(i),
4092 p_ATTRIBUTE_TYPE_tbl(i),
4093 --made changes to fix bug 2374591 ask for promotions not
4094 --getting applied in performance code path
4095 decode(p_CONTEXT_tbl(i)||p_ATTRIBUTE_tbl(i),G_LIST_HEADER_CONTEXT||G_PROMOTION_ATTRIBUTE,p_VALUE_FROM_tbl(i),p_LIST_HEADER_ID_tbl(i)),
4096 decode(p_CONTEXT_tbl(i)||p_ATTRIBUTE_tbl(i),G_LIST_HEADER_CONTEXT||G_QUAL_ATTRIBUTE2,p_VALUE_FROM_tbl(i),p_LIST_LINE_ID_tbl(i)),
4097 p_CONTEXT_tbl(i),
4098 p_ATTRIBUTE_tbl(i),
4099 p_VALUE_FROM_tbl(i),
4100 p_SETUP_VALUE_FROM_tbl(i),
4101 p_VALUE_TO_tbl(i),
4102 p_SETUP_VALUE_TO_tbl(i),
4103 p_GROUPING_NUMBER_tbl(i),
4104 p_COMPARISON_OPERATOR_TYPE_tbl(i),
4105 p_VALIDATED_FLAG_tbl(i),
4106 p_APPLIED_FLAG_tbl(i),
4107 p_PRICING_STATUS_CODE_tbl(i),
4108 p_PRICING_STATUS_TEXT_tbl(i),
4109 p_QUALIFIER_PRECEDENCE_tbl(i),
4110 p_DATATYPE_tbl(i),
4111 p_PRICING_ATTR_FLAG_tbl(i),
4112 p_QUALIFIER_TYPE_tbl(i),
4113 p_PRODUCT_UOM_CODE_tbl(i),
4114 p_EXCLUDER_FLAG_TBL(i),
4115 p_PRICING_PHASE_ID_TBL(i),
4116 p_INCOMPATABILITY_GRP_CODE_TBL(i),
4117 p_LINE_DETAIL_TYPE_CODE_TBL(i),
4118 p_MODIFIER_LEVEL_CODE_TBL(i),
4119 p_PRIMARY_UOM_FLAG_TBL(i)
4120 );*/
4121 INSERT INTO QP_INT_LINE_ATTRS_T
4122 ( LINE_INDEX,
4123 LINE_DETAIL_INDEX,
4124 ATTRIBUTE_LEVEL,
4125 ATTRIBUTE_TYPE,
4126 LIST_HEADER_ID,
4127 LIST_LINE_ID,
4128 CONTEXT,
4129 ATTRIBUTE,
4130 VALUE_FROM,
4131 SETUP_VALUE_FROM,
4132 VALUE_TO,
4133 SETUP_VALUE_TO,
4134 GROUPING_NUMBER,
4135 COMPARISON_OPERATOR_TYPE_CODE,
4136 VALIDATED_FLAG,
4137 APPLIED_FLAG,
4138 PRICING_STATUS_CODE,
4139 PRICING_STATUS_TEXT,
4140 QUALIFIER_PRECEDENCE,
4141 DATATYPE,
4142 PRICING_ATTR_FLAG,
4143 QUALIFIER_TYPE,
4144 PRODUCT_UOM_CODE,
4145 EXCLUDER_FLAG,
4146 PRICING_PHASE_ID,
4147 INCOMPATABILITY_GRP_CODE,
4148 LINE_DETAIL_TYPE_CODE,
4149 MODIFIER_LEVEL_CODE,
4150 PRIMARY_UOM_FLAG,
4151 request_id
4152 )
4153 VALUES ( p_LINE_INDEX_tbl(i),
4154 p_LINE_DETAIL_INDEX_tbl(i),
4155 p_ATTRIBUTE_LEVEL_tbl(i),
4156 p_ATTRIBUTE_TYPE_tbl(i),
4157 --made changes to fix bug 2374591 ask for promotions not
4158 --getting applied in performance code path
4159 decode(p_CONTEXT_tbl(i)||p_ATTRIBUTE_tbl(i),G_LIST_HEADER_CONTEXT||G_PROMOTION_ATTRIBUTE,p_VALUE_FROM_tbl(i),p_LIST_HEADER_ID_tbl(i)),
4160 decode(p_CONTEXT_tbl(i)||p_ATTRIBUTE_tbl(i),G_LIST_HEADER_CONTEXT||G_QUAL_ATTRIBUTE2,p_VALUE_FROM_tbl(i),p_LIST_LINE_ID_tbl(i)),
4161 p_CONTEXT_tbl(i),
4162 p_ATTRIBUTE_tbl(i),
4163 p_VALUE_FROM_tbl(i),
4164 p_SETUP_VALUE_FROM_tbl(i),
4165 p_VALUE_TO_tbl(i),
4166 p_SETUP_VALUE_TO_tbl(i),
4167 p_GROUPING_NUMBER_tbl(i),
4168 p_COMPARISON_OPERATOR_TYPE_tbl(i),
4169 p_VALIDATED_FLAG_tbl(i),
4170 p_APPLIED_FLAG_tbl(i),
4171 p_PRICING_STATUS_CODE_tbl(i),
4172 p_PRICING_STATUS_TEXT_tbl(i),
4173 p_QUALIFIER_PRECEDENCE_tbl(i),
4174 p_DATATYPE_tbl(i),
4175 p_PRICING_ATTR_FLAG_tbl(i),
4176 p_QUALIFIER_TYPE_tbl(i),
4177 p_PRODUCT_UOM_CODE_tbl(i),
4178 p_EXCLUDER_FLAG_TBL(i),
4179 p_PRICING_PHASE_ID_TBL(i),
4180 p_INCOMPATABILITY_GRP_CODE_TBL(i),
4181 p_LINE_DETAIL_TYPE_CODE_TBL(i),
4182 p_MODIFIER_LEVEL_CODE_TBL(i),
4183 p_PRIMARY_UOM_FLAG_TBL(i),
4184 l_request_id
4185 );
4186 QP_PREQ_GRP.G_INT_ATTRS_NO := QP_PREQ_GRP.G_INT_ATTRS_NO + p_LINE_INDEX_tbl.count;
4187 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4188 QP_PREQ_GRP.engine_debug('QP_PREQ_GRP.G_INT_ATTRS_NO='||QP_PREQ_GRP.G_INT_ATTRS_NO);
4189 END IF;
4190
4191 COMMIT;
4192 EXCEPTION
4193 WHEN OTHERS THEN
4194 x_status_code := FND_API.G_RET_STS_ERROR;
4195 x_status_text :=l_routine||' '||SQLERRM;
4196 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4197 QP_PREQ_GRP.engine_debug(l_routine||' '||SQLERRM);
4198 END IF;
4199 END;
4200
4201 /*+-----------------------------------------------------------------------
4202 | PROCEDURE INSERT_LINE_ATTRS2
4203 +-----------------------------------------------------------------------
4204 */
4205 PROCEDURE INSERT_LINE_ATTRS2
4206 ( p_LINE_INDEX_tbl pls_integer_type,
4207 p_LINE_DETAIL_INDEX_tbl pls_integer_type ,
4208 p_ATTRIBUTE_LEVEL_tbl varchar_type,
4209 p_ATTRIBUTE_TYPE_tbl varchar_type,
4210 p_LIST_HEADER_ID_tbl number_type,
4211 p_LIST_LINE_ID_tbl number_type,
4212 p_CONTEXT_tbl varchar_type,
4213 p_ATTRIBUTE_tbl varchar_type,
4214 p_VALUE_FROM_tbl varchar_type,
4215 p_SETUP_VALUE_FROM_tbl varchar_type,
4216 p_VALUE_TO_tbl varchar_type,
4217 p_SETUP_VALUE_TO_tbl varchar_type,
4218 p_GROUPING_NUMBER_tbl pls_integer_type,
4219 p_NO_QUALIFIERS_IN_GRP_tbl pls_integer_type,
4220 p_COMPARISON_OPERATOR_TYPE_tbl varchar_type,
4221 p_VALIDATED_FLAG_tbl varchar_type,
4222 p_APPLIED_FLAG_tbl varchar_type,
4223 p_PRICING_STATUS_CODE_tbl varchar_type,
4224 p_PRICING_STATUS_TEXT_tbl varchar_type,
4225 p_QUALIFIER_PRECEDENCE_tbl pls_integer_type,
4226 p_DATATYPE_tbl varchar_type,
4227 p_PRICING_ATTR_FLAG_tbl varchar_type,
4228 p_QUALIFIER_TYPE_tbl varchar_type,
4229 p_PRODUCT_UOM_CODE_TBL varchar_type,
4230 p_EXCLUDER_FLAG_TBL varchar_type ,
4231 p_PRICING_PHASE_ID_TBL pls_integer_type ,
4232 p_INCOMPATABILITY_GRP_CODE_TBL varchar_type ,
4233 p_LINE_DETAIL_TYPE_CODE_TBL varchar_type ,
4234 p_MODIFIER_LEVEL_CODE_TBL varchar_type ,
4235 p_PRIMARY_UOM_FLAG_TBL varchar_type ,
4236 x_status_code OUT NOCOPY VARCHAR2,
4237 x_status_text OUT NOCOPY VARCHAR2)
4238 AS
4239
4240
4241 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LINE_ATTRS2';
4242 --added by yangli for Java Engine 3086881
4243 l_debug varchar2(3);
4244 BEGIN
4245 --added by yangli for Java Engine 3086881
4246 -- Set the global variable G_DEBUG_ENGINE
4247 QP_PREQ_GRP.Set_QP_Debug;
4248
4249 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
4250
4251 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
4252 IF l_debug = FND_API.G_TRUE THEN
4253 ENGINE_DEBUG('Java Engine not Installed ----------');
4254 END IF;
4255 --added by yangli for Java Engine 3086881
4256
4257 x_status_code := FND_API.G_RET_STS_SUCCESS;
4258
4259 FORALL i in p_line_index_tbl.FIRST..p_line_index_tbl.LAST
4260 INSERT INTO qp_npreq_line_attrs_tmp
4261 (LINE_INDEX,
4262 LINE_DETAIL_INDEX,
4263 ATTRIBUTE_LEVEL,
4264 ATTRIBUTE_TYPE,
4265 LIST_HEADER_ID,
4266 LIST_LINE_ID,
4267 CONTEXT,
4268 ATTRIBUTE,
4269 VALUE_FROM,
4270 SETUP_VALUE_FROM,
4271 VALUE_TO,
4272 SETUP_VALUE_TO,
4273 GROUPING_NUMBER,
4274 COMPARISON_OPERATOR_TYPE_CODE,
4275 VALIDATED_FLAG,
4276 APPLIED_FLAG,
4277 PRICING_STATUS_CODE,
4278 PRICING_STATUS_TEXT,
4279 QUALIFIER_PRECEDENCE,
4280 DATATYPE,
4281 PRICING_ATTR_FLAG,
4282 QUALIFIER_TYPE,
4283 PRODUCT_UOM_CODE,
4284 EXCLUDER_FLAG,
4285 PRICING_PHASE_ID,
4286 INCOMPATABILITY_GRP_CODE,
4287 LINE_DETAIL_TYPE_CODE,
4288 MODIFIER_LEVEL_CODE,
4289 PRIMARY_UOM_FLAG
4290 )
4291 VALUES (p_LINE_INDEX_tbl(i),
4292 p_LINE_DETAIL_INDEX_tbl(i),
4293 p_ATTRIBUTE_LEVEL_tbl(i),
4294 p_ATTRIBUTE_TYPE_tbl(i),
4295 --made changes to fix bug 2374591 ask for promotions not
4296 --getting applied in performance code path
4297 decode(p_CONTEXT_tbl(i)||p_ATTRIBUTE_tbl(i),G_LIST_HEADER_CONTEXT||G_PROMOTION_ATTRIBUTE,p_VALUE_FROM_tbl(i),p_LIST_HEADER_ID_tbl(i)),
4298 decode(p_CONTEXT_tbl(i)||p_ATTRIBUTE_tbl(i),G_LIST_HEADER_CONTEXT||G_QUAL_ATTRIBUTE2,p_VALUE_FROM_tbl(i),p_LIST_LINE_ID_tbl(i)),
4299 p_CONTEXT_tbl(i),
4300 p_ATTRIBUTE_tbl(i),
4301 p_VALUE_FROM_tbl(i),
4302 p_SETUP_VALUE_FROM_tbl(i),
4303 p_VALUE_TO_tbl(i),
4304 p_SETUP_VALUE_TO_tbl(i),
4305 p_GROUPING_NUMBER_tbl(i),
4306 p_COMPARISON_OPERATOR_TYPE_tbl(i),
4307 p_VALIDATED_FLAG_tbl(i),
4308 p_APPLIED_FLAG_tbl(i),
4309 p_PRICING_STATUS_CODE_tbl(i),
4310 p_PRICING_STATUS_TEXT_tbl(i),
4311 p_QUALIFIER_PRECEDENCE_tbl(i),
4312 p_DATATYPE_tbl(i),
4313 p_PRICING_ATTR_FLAG_tbl(i),
4314 p_QUALIFIER_TYPE_tbl(i),
4315 p_PRODUCT_UOM_CODE_tbl(i),
4316 p_EXCLUDER_FLAG_TBL(i),
4317 p_PRICING_PHASE_ID_TBL(i),
4318 p_INCOMPATABILITY_GRP_CODE_TBL(i),
4319 p_LINE_DETAIL_TYPE_CODE_TBL(i),
4320 p_MODIFIER_LEVEL_CODE_TBL(i),
4321 p_PRIMARY_UOM_FLAG_TBL(i)
4322 );
4323 --added by yangli for Java Engine 3086881
4324 ELSE
4325 IF l_debug = FND_API.G_TRUE THEN
4326 ENGINE_DEBUG('Java Engine Installed ----------');
4327 END IF;
4328 QP_PREQ_GRP.INSERT_LINE_ATTRS2_AT
4329 ( p_LINE_INDEX_tbl ,
4330 p_LINE_DETAIL_INDEX_tbl ,
4331 p_ATTRIBUTE_LEVEL_tbl ,
4332 p_ATTRIBUTE_TYPE_tbl ,
4333 p_LIST_HEADER_ID_tbl ,
4334 p_LIST_LINE_ID_tbl ,
4335 p_CONTEXT_tbl ,
4336 p_ATTRIBUTE_tbl ,
4337 p_VALUE_FROM_tbl ,
4338 p_SETUP_VALUE_FROM_tbl ,
4339 p_VALUE_TO_tbl ,
4340 p_SETUP_VALUE_TO_tbl ,
4341 p_GROUPING_NUMBER_tbl ,
4342 p_NO_QUALIFIERS_IN_GRP_tbl ,
4343 p_COMPARISON_OPERATOR_TYPE_tbl ,
4344 p_VALIDATED_FLAG_tbl ,
4345 p_APPLIED_FLAG_tbl ,
4346 p_PRICING_STATUS_CODE_tbl ,
4347 p_PRICING_STATUS_TEXT_tbl ,
4348 p_QUALIFIER_PRECEDENCE_tbl ,
4349 p_DATATYPE_tbl ,
4350 p_PRICING_ATTR_FLAG_tbl ,
4351 p_QUALIFIER_TYPE_tbl ,
4352 p_PRODUCT_UOM_CODE_TBL ,
4353 p_EXCLUDER_FLAG_TBL ,
4354 p_PRICING_PHASE_ID_TBL ,
4355 p_INCOMPATABILITY_GRP_CODE_TBL ,
4356 p_LINE_DETAIL_TYPE_CODE_TBL ,
4357 p_MODIFIER_LEVEL_CODE_TBL ,
4358 p_PRIMARY_UOM_FLAG_TBL ,
4359 x_status_code ,
4360 x_status_text );
4361
4362 END IF;
4363 --added by yangli for Java Engine 3086881
4364
4365 EXCEPTION
4366 WHEN OTHERS THEN
4367 x_status_code := FND_API.G_RET_STS_ERROR;
4368 x_status_text :=l_routine||' '||SQLERRM;
4369 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4370 engine_debug(l_routine||' '||SQLERRM);
4371 END IF;
4372 END;
4373
4374 /*+-----------------------------------------------------------------------
4375 |PROCEDURE INSERT_LINES
4376 +-----------------------------------------------------------------------
4377 */
4378 PROCEDURE INSERT_LINES
4379 (p_LINE_INDEX IN PLS_INTEGER,
4380 p_LINE_TYPE_CODE IN VARCHAR2,
4381 p_PRICING_EFFECTIVE_DATE IN DATE :=NULL,
4382 p_ACTIVE_DATE_FIRST IN DATE :=NULL,
4383 p_ACTIVE_DATE_FIRST_TYPE IN VARCHAR2 :=NULL,
4384 p_ACTIVE_DATE_SECOND IN DATE :=NULL,
4385 p_ACTIVE_DATE_SECOND_TYPE IN VARCHAR2 :=NULL,
4386 p_LINE_QUANTITY IN NUMBER :=NULL,
4387 p_LINE_UOM_CODE IN VARCHAR2:=NULL,
4388 p_REQUEST_TYPE_CODE IN VARCHAR2:=NULL,
4389 p_PRICED_QUANTITY IN NUMBER :=NULL,
4390 p_PRICED_UOM_CODE IN VARCHAR2:=NULL,
4391 p_CURRENCY_CODE IN VARCHAR2:=NULL,
4392 p_UNIT_PRICE IN NUMBER:=NULL,
4393 p_PERCENT_PRICE IN NUMBER:=NULL,
4394 p_UOM_QUANTITY IN NUMBER :=NULL,
4395 p_ADJUSTED_UNIT_PRICE IN NUMBER:=NULL,
4396 p_PROCESSED_FLAG IN VARCHAR2:=NULL,
4397 p_PRICE_FLAG IN VARCHAR2,
4398 p_LINE_ID IN NUMBER:=NULL,
4399 p_PROCESSING_ORDER IN PLS_INTEGER:=NULL,
4400 p_PRICING_STATUS_CODE IN VARCHAR2,
4401 p_PRICING_STATUS_TEXT IN VARCHAR2:=NULL,
4402 p_ROUNDING_FLAG IN VARCHAR2:=NULL,
4403 p_LINE_CATEGORY IN VARCHAR2:=NULL,
4404 p_charge_periodicity_code IN VARCHAR2:=NULL,
4405 x_status_code OUT NOCOPY VARCHAR2,
4406 x_status_text OUT NOCOPY VARCHAR2 )
4407 AS
4408 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.INSERT_LINES';
4409 BEGIN
4410 x_status_code := FND_API.G_RET_STS_SUCCESS;
4411 INSERT INTO qp_npreq_lines_tmp
4412 (LINE_INDEX,
4413 LINE_TYPE_CODE,
4414 PRICING_EFFECTIVE_DATE,
4415 START_DATE_ACTIVE_FIRST,
4416 ACTIVE_DATE_FIRST_TYPE,
4417 START_DATE_ACTIVE_SECOND,
4418 ACTIVE_DATE_SECOND_TYPE,
4419 LINE_QUANTITY,
4420 LINE_UOM_CODE,
4421 REQUEST_TYPE_CODE,
4422 PRICED_QUANTITY,
4423 PRICED_UOM_CODE,
4424 CURRENCY_CODE,
4425 UNIT_PRICE,
4426 PERCENT_PRICE,
4427 UOM_QUANTITY,
4428 ADJUSTED_UNIT_PRICE,
4429 PROCESSED_FLAG,
4430 PRICE_FLAG,
4431 LINE_ID,
4432 PROCESSING_ORDER,
4433 ROUNDING_FLAG,
4434 PRICING_STATUS_CODE,
4435 PRICING_STATUS_TEXT,
4436 LINE_CATEGORY,
4437 CHARGE_PERIODICITY_CODE)
4438 VALUES ( p_LINE_INDEX,
4439 p_LINE_TYPE_CODE,
4440 p_PRICING_EFFECTIVE_DATE,
4441 p_ACTIVE_DATE_FIRST,
4442 p_ACTIVE_DATE_FIRST_TYPE,
4443 p_ACTIVE_DATE_SECOND,
4444 p_ACTIVE_DATE_SECOND_TYPE,
4445 p_LINE_QUANTITY,
4446 p_LINE_UOM_CODE,
4447 p_REQUEST_TYPE_CODE,
4448 p_PRICED_QUANTITY,
4449 p_PRICED_UOM_CODE ,
4450 p_CURRENCY_CODE,
4451 p_UNIT_PRICE ,
4452 p_PERCENT_PRICE,
4453 p_UOM_QUANTITY,
4454 p_ADJUSTED_UNIT_PRICE,
4455 p_PROCESSED_FLAG,
4456 p_PRICE_FLAG,
4457 p_LINE_ID,
4458 P_PROCESSING_ORDER,
4459 P_ROUNDING_FLAG,
4460 p_PRICING_STATUS_CODE,
4461 p_PRICING_STATUS_TEXT,
4462 p_LINE_CATEGORY,
4463 p_CHARGE_PERIODICITY_CODE
4464 );
4465 EXCEPTION
4466 WHEN OTHERS THEN
4467 x_status_code := FND_API.G_RET_STS_ERROR;
4468 x_status_text :=l_routine||' '||SQLERRM;
4469 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4470 engine_debug(l_routine||' '||SQLERRM);
4471 engine_debug(SQLERRM);
4472 END IF;
4473 END;
4474
4475 /*+----------------------------------------------------------------------
4476 |Procedure Group INSERT_LINES2_AT
4477 +----------------------------------------------------------------------
4478 */
4479
4480 PROCEDURE INSERT_LINES2_AT
4481 (p_LINE_INDEX IN NUMBER_TYPE,
4482 p_LINE_TYPE_CODE IN VARCHAR_TYPE,
4483 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE ,
4484 p_ACTIVE_DATE_FIRST IN DATE_TYPE ,
4485 p_ACTIVE_DATE_FIRST_TYPE IN VARCHAR_TYPE,
4486 p_ACTIVE_DATE_SECOND IN DATE_TYPE ,
4487 p_ACTIVE_DATE_SECOND_TYPE IN VARCHAR_TYPE ,
4488 p_LINE_QUANTITY IN NUMBER_TYPE ,
4489 p_LINE_UOM_CODE IN VARCHAR_TYPE,
4490 p_REQUEST_TYPE_CODE IN VARCHAR_TYPE,
4491 p_PRICED_QUANTITY IN NUMBER_TYPE,
4492 p_PRICED_UOM_CODE IN VARCHAR_TYPE,
4493 p_CURRENCY_CODE IN VARCHAR_TYPE,
4494 p_UNIT_PRICE IN NUMBER_TYPE,
4495 p_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
4496 p_UPD_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
4497 p_UOM_QUANTITY IN NUMBER_TYPE,
4498 p_PRICE_FLAG IN VARCHAR_TYPE,
4499 p_LINE_ID IN NUMBER_TYPE,
4500 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
4501 p_PRICE_LIST_ID IN NUMBER_TYPE,
4502 p_PRICE_REQUEST_CODE IN VARCHAR_TYPE,
4503 p_USAGE_PRICING_TYPE IN VARCHAR_TYPE,
4504 p_LINE_CATEGORY IN VARCHAR_TYPE,
4505 p_CONTRACT_START_DATE IN DATE_TYPE,
4506 p_CONTRACT_END_DATE IN DATE_TYPE,
4507 p_CATCHWEIGHT_QTY IN NUMBER_TYPE,
4508 p_ACTUAL_ORDER_QTY IN NUMBER_TYPE,
4509 p_LIST_PRICE_OVERRIDE_FLAG IN VARCHAR_TYPE,
4510 p_charge_periodicity_code IN VARCHAR_3_TYPE,
4511 x_status_code OUT NOCOPY VARCHAR2,
4512 x_status_text OUT NOCOPY VARCHAR2 )
4513 AS
4514 PRAGMA AUTONOMOUS_TRANSACTION;
4515 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.INSERT_LINES2_AT';
4516 l_request_id number;
4517 BEGIN
4518 x_status_code := FND_API.G_RET_STS_SUCCESS;
4519 l_request_id := nvl(SYS_CONTEXT('QP_CONTEXT','request_id'),-9999);
4520
4521 FORALL i in p_line_index.FIRST..p_line_index.LAST
4522 /*INSERT INTO QP_INT_LINES
4523 (LINE_INDEX,
4524 LINE_TYPE_CODE,
4525 PRICING_EFFECTIVE_DATE,
4526 START_DATE_ACTIVE_FIRST,
4527 ACTIVE_DATE_FIRST_TYPE,
4528 START_DATE_ACTIVE_SECOND,
4529 ACTIVE_DATE_SECOND_TYPE,
4530 LINE_QUANTITY,
4531 LINE_UOM_CODE,
4532 REQUEST_TYPE_CODE,
4533 PRICED_QUANTITY,
4534 PRICED_UOM_CODE,
4535 CURRENCY_CODE,
4536 UNIT_PRICE,
4537 ADJUSTED_UNIT_PRICE,
4538 PRICE_FLAG,
4539 UOM_QUANTITY,
4540 LINE_ID,
4541 ROUNDING_FACTOR,
4542 UPDATED_ADJUSTED_UNIT_PRICE,
4543 PRICE_LIST_HEADER_ID,
4544 PRICE_REQUEST_CODE,
4545 USAGE_PRICING_TYPE,
4546 LINE_CATEGORY,
4547 CONTRACT_START_DATE,
4548 CONTRACT_END_DATE,
4549 CATCHWEIGHT_QTY,
4550 ACTUAL_ORDER_QUANTITY,
4551 LIST_PRICE_OVERRIDE_FLAG, --po integration
4552 CHARGE_PERIODICITY_CODE,
4553 ORDER_UOM_SELLING_PRICE
4554 )
4555 VALUES ( p_LINE_INDEX(i),
4556 p_LINE_TYPE_CODE(i),
4557 p_PRICING_EFFECTIVE_DATE(i),
4558 p_ACTIVE_DATE_FIRST(i),
4559 p_ACTIVE_DATE_FIRST_TYPE(i),
4560 p_ACTIVE_DATE_SECOND(i),
4561 p_ACTIVE_DATE_SECOND_TYPE(i),
4562 p_LINE_QUANTITY(i),
4563 p_LINE_UOM_CODE(i),
4564 p_REQUEST_TYPE_CODE(i),
4565 p_PRICED_QUANTITY(i),
4566 p_PRICED_UOM_CODE (i),
4567 p_CURRENCY_CODE(i),
4568 p_UNIT_PRICE (i),
4569 p_ADJUSTED_UNIT_PRICE(i),
4570 p_PRICE_FLAG(i),
4571 p_UOM_QUANTITY(i),
4572 p_LINE_ID(i),
4573 P_ROUNDING_FACTOR(i),
4574 p_UPD_ADJUSTED_UNIT_PRICE(i),
4575 nvl(p_PRICE_LIST_ID(i),-9999),
4576 p_PRICE_REQUEST_CODE(i),
4577 nvl(p_USAGE_PRICING_TYPE(i),'REGULAR'),
4578 p_LINE_CATEGORY(i),
4579 p_CONTRACT_START_DATE(i),
4580 p_CONTRACT_END_DATE(i),
4581 p_CATCHWEIGHT_QTY(i),
4582 p_ACTUAL_ORDER_QTY(i),
4583 nvl (p_LIST_PRICE_OVERRIDE_FLAG(i), 'N'),
4584 p_CHARGE_PERIODICITY_CODE,
4585 p_UNIT_PRICE(i)-- po integration
4586 );*/
4587 INSERT INTO QP_INT_LINES_t
4588 (LINE_INDEX,
4589 LINE_TYPE_CODE,
4590 PRICING_EFFECTIVE_DATE,
4591 START_DATE_ACTIVE_FIRST,
4592 ACTIVE_DATE_FIRST_TYPE,
4593 START_DATE_ACTIVE_SECOND,
4594 ACTIVE_DATE_SECOND_TYPE,
4595 LINE_QUANTITY,
4596 LINE_UOM_CODE,
4597 REQUEST_TYPE_CODE,
4598 PRICED_QUANTITY,
4599 PRICED_UOM_CODE,
4600 CURRENCY_CODE,
4601 UNIT_PRICE,
4602 ADJUSTED_UNIT_PRICE,
4603 PRICE_FLAG,
4604 UOM_QUANTITY,
4605 LINE_ID,
4606 ROUNDING_FACTOR,
4607 UPDATED_ADJUSTED_UNIT_PRICE,
4608 PRICE_LIST_HEADER_ID,
4609 PRICE_REQUEST_CODE,
4610 USAGE_PRICING_TYPE,
4611 LINE_CATEGORY,
4612 CONTRACT_START_DATE,
4613 CONTRACT_END_DATE,
4614 CATCHWEIGHT_QTY,
4615 ACTUAL_ORDER_QUANTITY,
4616 LIST_PRICE_OVERRIDE_FLAG, --po integration
4617 ORDER_UOM_SELLING_PRICE ,
4618 CHARGE_PERIODICITY_CODE,
4619 request_id
4620 )
4621 VALUES ( p_LINE_INDEX(i),
4622 p_LINE_TYPE_CODE(i),
4623 p_PRICING_EFFECTIVE_DATE(i),
4624 p_ACTIVE_DATE_FIRST(i),
4625 p_ACTIVE_DATE_FIRST_TYPE(i),
4626 p_ACTIVE_DATE_SECOND(i),
4627 p_ACTIVE_DATE_SECOND_TYPE(i),
4628 p_LINE_QUANTITY(i),
4629 p_LINE_UOM_CODE(i),
4630 p_REQUEST_TYPE_CODE(i),
4631 p_PRICED_QUANTITY(i),
4632 p_PRICED_UOM_CODE (i),
4633 p_CURRENCY_CODE(i),
4634 p_UNIT_PRICE (i),
4635 p_ADJUSTED_UNIT_PRICE(i),
4636 p_PRICE_FLAG(i),
4637 p_UOM_QUANTITY(i),
4638 p_LINE_ID(i),
4639 P_ROUNDING_FACTOR(i),
4640 p_UPD_ADJUSTED_UNIT_PRICE(i),
4641 nvl(p_PRICE_LIST_ID(i),-9999),
4642 p_PRICE_REQUEST_CODE(i),
4643 nvl(p_USAGE_PRICING_TYPE(i),'REGULAR'),
4644 p_LINE_CATEGORY(i),
4645 p_CONTRACT_START_DATE(i),
4646 p_CONTRACT_END_DATE(i),
4647 p_CATCHWEIGHT_QTY(i),
4648 p_ACTUAL_ORDER_QTY(i),
4649 nvl (p_LIST_PRICE_OVERRIDE_FLAG(i), 'N'),
4650 p_UNIT_PRICE(i), -- po integration
4651 p_CHARGE_PERIODICITY_CODE(i),
4652 l_request_id
4653 );
4654 QP_PREQ_GRP.G_INT_LINES_NO := QP_PREQ_GRP.G_INT_LINES_NO + p_LINE_INDEX.count;
4655 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4656 QP_PREQ_GRP.engine_debug('QP_PREQ_GRP.G_INT_LINES_NO='||QP_PREQ_GRP.G_INT_LINES_NO);
4657 END IF;
4658 COMMIT;
4659 EXCEPTION
4660 WHEN OTHERS THEN
4661 x_status_code := FND_API.G_RET_STS_ERROR;
4662 x_status_text :=l_routine||' '||SQLERRM;
4663 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4664 QP_PREQ_GRP.engine_debug(l_routine||' '||SQLERRM);
4665 END IF;
4666 END ;
4667
4668 /*+----------------------------------------------------------------------
4669 |Procedure Group INSERT_LINES2
4670 +----------------------------------------------------------------------
4671 */
4672
4673 PROCEDURE INSERT_LINES2
4674 (p_LINE_INDEX IN NUMBER_TYPE,
4675 p_LINE_TYPE_CODE IN VARCHAR_TYPE,
4676 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE ,
4677 p_ACTIVE_DATE_FIRST IN DATE_TYPE ,
4678 p_ACTIVE_DATE_FIRST_TYPE IN VARCHAR_TYPE,
4679 p_ACTIVE_DATE_SECOND IN DATE_TYPE ,
4680 p_ACTIVE_DATE_SECOND_TYPE IN VARCHAR_TYPE ,
4681 p_LINE_QUANTITY IN NUMBER_TYPE ,
4682 p_LINE_UOM_CODE IN VARCHAR_TYPE,
4683 p_REQUEST_TYPE_CODE IN VARCHAR_TYPE,
4684 p_PRICED_QUANTITY IN NUMBER_TYPE,
4685 p_PRICED_UOM_CODE IN VARCHAR_TYPE,
4686 p_CURRENCY_CODE IN VARCHAR_TYPE,
4687 p_UNIT_PRICE IN NUMBER_TYPE,
4688 p_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
4689 p_UPD_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
4690 p_UOM_QUANTITY IN NUMBER_TYPE,
4691 p_PRICE_FLAG IN VARCHAR_TYPE,
4692 p_LINE_ID IN NUMBER_TYPE,
4693 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
4694 p_PRICE_LIST_ID IN NUMBER_TYPE,
4695 p_PRICE_REQUEST_CODE IN VARCHAR_TYPE,
4696 p_USAGE_PRICING_TYPE IN VARCHAR_TYPE,
4697 p_LINE_CATEGORY IN VARCHAR_TYPE,
4698 p_CONTRACT_START_DATE IN DATE_TYPE,
4699 p_CONTRACT_END_DATE IN DATE_TYPE,
4700 p_CATCHWEIGHT_QTY IN NUMBER_TYPE,
4701 p_ACTUAL_ORDER_QTY IN NUMBER_TYPE,
4702 p_LIST_PRICE_OVERRIDE_FLAG IN VARCHAR_TYPE,
4703 p_charge_periodicity_code IN VARCHAR_3_TYPE,
4704 p_SERVICE_DURATION IN NUMBER_TYPE, -- SERVICE PROJECT
4705 p_SERVICE_PERIOD IN VARCHAR_TYPE, -- SERVICE PROJECT
4706 x_status_code OUT NOCOPY VARCHAR2,
4707 x_status_text OUT NOCOPY VARCHAR2 )
4708 AS
4709 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.INSERT_LINES2';
4710 --added by yangli for Java Engine project 3086881
4711 l_debug varchar2(3);
4712 BEGIN
4713 --added by yangli for Java Engine project 3086881
4714 -- Set the global variable G_DEBUG_ENGINE
4715 QP_PREQ_GRP.Set_QP_Debug;
4716
4717 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
4718
4719 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
4720 IF l_debug = FND_API.G_TRUE THEN
4721 ENGINE_DEBUG('Java Engine not Installed ----------');
4722 END IF;
4723 --added by yangli for Java Engine project 3086881
4724
4725 x_status_code := FND_API.G_RET_STS_SUCCESS;
4726
4727 FORALL i in p_line_index.FIRST..p_line_index.LAST
4728 INSERT INTO qp_npreq_lines_tmp
4729 (LINE_INDEX,
4730 LINE_TYPE_CODE,
4731 PRICING_EFFECTIVE_DATE,
4732 START_DATE_ACTIVE_FIRST,
4733 ACTIVE_DATE_FIRST_TYPE,
4734 START_DATE_ACTIVE_SECOND,
4735 ACTIVE_DATE_SECOND_TYPE,
4736 LINE_QUANTITY,
4737 LINE_UOM_CODE,
4738 REQUEST_TYPE_CODE,
4739 PRICED_QUANTITY,
4740 PRICED_UOM_CODE,
4741 CURRENCY_CODE,
4742 UNIT_PRICE,
4743 ADJUSTED_UNIT_PRICE,
4744 PRICE_FLAG,
4745 UOM_QUANTITY,
4746 LINE_ID,
4747 ROUNDING_FACTOR,
4748 UPDATED_ADJUSTED_UNIT_PRICE,
4749 PRICE_LIST_HEADER_ID,
4750 PRICE_REQUEST_CODE,
4751 USAGE_PRICING_TYPE,
4752 LINE_CATEGORY,
4753 CONTRACT_START_DATE,
4754 CONTRACT_END_DATE,
4755 CATCHWEIGHT_QTY,
4756 ACTUAL_ORDER_QUANTITY,
4757 LIST_PRICE_OVERRIDE_FLAG, --po integration
4758 CHARGE_PERIODICITY_CODE,
4759 ORDER_UOM_SELLING_PRICE,
4760 SERVICE_DURATION,
4761 SERVICE_PERIOD
4762
4763 )
4764 VALUES ( p_LINE_INDEX(i),
4765 p_LINE_TYPE_CODE(i),
4766 p_PRICING_EFFECTIVE_DATE(i),
4767 p_ACTIVE_DATE_FIRST(i),
4768 p_ACTIVE_DATE_FIRST_TYPE(i),
4769 p_ACTIVE_DATE_SECOND(i),
4770 p_ACTIVE_DATE_SECOND_TYPE(i),
4771 p_LINE_QUANTITY(i),
4772 p_LINE_UOM_CODE(i),
4773 p_REQUEST_TYPE_CODE(i),
4774 p_PRICED_QUANTITY(i),
4775 p_PRICED_UOM_CODE (i),
4776 p_CURRENCY_CODE(i),
4777 p_UNIT_PRICE (i),
4778 p_ADJUSTED_UNIT_PRICE(i),
4779 p_PRICE_FLAG(i),
4780 p_UOM_QUANTITY(i),
4781 p_LINE_ID(i),
4782 P_ROUNDING_FACTOR(i),
4783 p_UPD_ADJUSTED_UNIT_PRICE(i),
4784 nvl(p_PRICE_LIST_ID(i),-9999),
4785 p_PRICE_REQUEST_CODE(i),
4786 nvl(p_USAGE_PRICING_TYPE(i),'REGULAR'),
4787 p_LINE_CATEGORY(i),
4788 p_CONTRACT_START_DATE(i),
4789 p_CONTRACT_END_DATE(i),
4790 p_CATCHWEIGHT_QTY(i),
4791 p_ACTUAL_ORDER_QTY(i),
4792 nvl (p_LIST_PRICE_OVERRIDE_FLAG(i), 'N'),
4793 p_CHARGE_PERIODICITY_CODE(i),
4794 -- p_UNIT_PRICE(i)
4795 DECODE(p_LINE_QUANTITY(i),
4796 0,p_ADJUSTED_UNIT_PRICE(i),
4797 p_ADJUSTED_UNIT_PRICE(i)*nvl(p_PRICED_QUANTITY(i),p_LINE_QUANTITY(i))/p_LINE_QUANTITY(i)), --8370238
4798 p_SERVICE_DURATION(i),
4799 p_SERVICE_PERIOD(i)
4800
4801 ); --po integration
4802 --added by yangli for Java Engine project 3086881
4803 ELSE
4804 IF l_debug = FND_API.G_TRUE THEN
4805 ENGINE_DEBUG('Java Engine Installed ----------');
4806 END IF;
4807 QP_PREQ_GRP.INSERT_LINES2_AT
4808 (p_LINE_INDEX ,
4809 p_LINE_TYPE_CODE ,
4810 p_PRICING_EFFECTIVE_DATE ,
4811 p_ACTIVE_DATE_FIRST ,
4812 p_ACTIVE_DATE_FIRST_TYPE ,
4813 p_ACTIVE_DATE_SECOND ,
4814 p_ACTIVE_DATE_SECOND_TYPE,
4815 p_LINE_QUANTITY ,
4816 p_LINE_UOM_CODE ,
4817 p_REQUEST_TYPE_CODE ,
4818 p_PRICED_QUANTITY ,
4819 p_PRICED_UOM_CODE ,
4820 p_CURRENCY_CODE ,
4821 p_UNIT_PRICE ,
4822 p_ADJUSTED_UNIT_PRICE ,
4823 p_UPD_ADJUSTED_UNIT_PRICE,
4824 p_UOM_QUANTITY ,
4825 p_PRICE_FLAG ,
4826 p_LINE_ID ,
4827 p_ROUNDING_FACTOR ,
4828 p_PRICE_LIST_ID ,
4829 p_PRICE_REQUEST_CODE ,
4830 p_USAGE_PRICING_TYPE ,
4831 p_LINE_CATEGORY ,
4832 p_CONTRACT_START_DATE ,
4833 p_CONTRACT_END_DATE ,
4834 p_CATCHWEIGHT_QTY ,
4835 p_ACTUAL_ORDER_QTY ,
4836 p_LIST_PRICE_OVERRIDE_FLAG, --po integration
4837 p_charge_periodicity_code,
4838 x_status_code ,
4839 x_status_text );
4840
4841 END IF;
4842 --added by yangli for Java Engine project 3086881
4843
4844 EXCEPTION
4845 WHEN OTHERS THEN
4846 x_status_code := FND_API.G_RET_STS_ERROR;
4847 x_status_text :=l_routine||' '||SQLERRM;
4848 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4849 engine_debug(l_routine||' '||SQLERRM);
4850 END IF;
4851 END ;
4852
4853 /*+-----------------------------------------------------------------------
4854 |PROCEDURE INSERT_LINES2_AT for bulk binding
4855 +-----------------------------------------------------------------------
4856 */
4857 PROCEDURE INSERT_LINES2_AT
4858 (p_LINE_INDEX IN PLS_INTEGER_TYPE,
4859 p_LINE_TYPE_CODE IN VARCHAR_TYPE,
4860 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE ,
4861 p_ACTIVE_DATE_FIRST IN DATE_TYPE ,
4862 p_ACTIVE_DATE_FIRST_TYPE IN VARCHAR_TYPE,
4863 p_ACTIVE_DATE_SECOND IN DATE_TYPE ,
4864 p_ACTIVE_DATE_SECOND_TYPE IN VARCHAR_TYPE ,
4865 p_LINE_QUANTITY IN NUMBER_TYPE ,
4866 p_LINE_UOM_CODE IN VARCHAR_TYPE,
4867 p_REQUEST_TYPE_CODE IN VARCHAR_TYPE,
4868 p_PRICED_QUANTITY IN NUMBER_TYPE,
4869 p_PRICED_UOM_CODE IN VARCHAR_TYPE,
4870 p_CURRENCY_CODE IN VARCHAR_TYPE,
4871 p_UNIT_PRICE IN NUMBER_TYPE,
4872 p_PERCENT_PRICE IN NUMBER_TYPE,
4873 p_UOM_QUANTITY IN NUMBER_TYPE,
4874 p_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
4875 p_UPD_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
4876 p_PROCESSED_FLAG IN VARCHAR_TYPE,
4877 p_PRICE_FLAG IN VARCHAR_TYPE,
4878 p_LINE_ID IN NUMBER_TYPE,
4879 p_PROCESSING_ORDER IN PLS_INTEGER_TYPE,
4880 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
4881 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE,
4882 p_ROUNDING_FLAG IN FLAG_TYPE,
4883 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
4884 p_QUALIFIERS_EXIST_FLAG IN VARCHAR_TYPE,
4885 p_PRICING_ATTRS_EXIST_FLAG IN VARCHAR_TYPE,
4886 p_PRICE_LIST_ID IN NUMBER_TYPE,
4887 p_VALIDATED_FLAG IN VARCHAR_TYPE,
4888 p_PRICE_REQUEST_CODE IN VARCHAR_TYPE,
4889 p_USAGE_PRICING_TYPE IN VARCHAR_TYPE,
4890 p_LINE_CATEGORY IN VARCHAR_TYPE,
4891 p_CONTRACT_START_DATE IN DATE_TYPE,
4892 p_CONTRACT_END_DATE IN DATE_TYPE,
4893 p_LINE_UNIT_PRICE IN NUMBER_TYPE,
4894 p_CATCHWEIGHT_QTY IN NUMBER_TYPE,
4895 p_ACTUAL_ORDER_QTY IN NUMBER_TYPE,
4896 p_LIST_PRICE_OVERRIDE_FLAG IN VARCHAR_TYPE,--po integration
4897 p_charge_periodicity_code IN VARCHAR_3_TYPE,
4898 x_status_code OUT NOCOPY VARCHAR2,
4899 x_status_text OUT NOCOPY VARCHAR2 )
4900 AS
4901 PRAGMA AUTONOMOUS_TRANSACTION;
4902 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.INSERT_LINES2_AT';
4903 l_request_id number;
4904 BEGIN
4905 x_status_code := FND_API.G_RET_STS_SUCCESS;
4906 l_request_id := nvl(SYS_CONTEXT('QP_CONTEXT','request_id'),-9999);
4907 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4908 QP_PREQ_GRP.engine_debug('Before bulk inserting lines...');
4909 QP_PREQ_GRP.engine_debug('line index size:'||p_line_index.count());
4910 END IF;
4911
4912 FORALL i in p_line_index.FIRST..p_line_index.LAST
4913 /*INSERT INTO QP_INT_LINES
4914 ( LINE_INDEX,
4915 LINE_TYPE_CODE,
4916 PRICING_EFFECTIVE_DATE,
4917 START_DATE_ACTIVE_FIRST,
4918 ACTIVE_DATE_FIRST_TYPE,
4919 START_DATE_ACTIVE_SECOND,
4920 ACTIVE_DATE_SECOND_TYPE,
4921 LINE_QUANTITY,
4922 LINE_UOM_CODE,
4923 REQUEST_TYPE_CODE,
4924 PRICED_QUANTITY,
4925 PRICED_UOM_CODE,
4926 CURRENCY_CODE,
4927 UNIT_PRICE,
4928 PERCENT_PRICE,
4929 UOM_QUANTITY,
4930 ADJUSTED_UNIT_PRICE,
4931 PROCESSED_FLAG,
4932 PRICE_FLAG,
4933 LINE_ID,
4934 PROCESSING_ORDER,
4935 ROUNDING_FLAG,
4936 ROUNDING_FACTOR,
4937 PRICING_STATUS_CODE,
4938 PRICING_STATUS_TEXT,
4939 UPDATED_ADJUSTED_UNIT_PRICE,
4940 QUALIFIERS_EXIST_FLAG,
4941 PRICING_ATTRS_EXIST_FLAG,
4942 PRICE_LIST_HEADER_ID,
4943 VALIDATED_FLAG,
4944 PRICE_REQUEST_CODE,
4945 USAGE_PRICING_TYPE,
4946 LINE_CATEGORY,
4947 CONTRACT_START_DATE, -- shulin
4948 CONTRACT_END_DATE, -- shulin
4949 LINE_UNIT_PRICE, -- shu_latest
4950 CATCHWEIGHT_QTY,
4951 ACTUAL_ORDER_QUANTITY,
4952 LIST_PRICE_OVERRIDE_FLAG, -- po integration
4953 CHARGE_PERIODICITY_CODE,
4954 ORDER_UOM_SELLING_PRICE)
4955 VALUES ( p_LINE_INDEX(i),
4956 p_LINE_TYPE_CODE(i),
4957 p_PRICING_EFFECTIVE_DATE(i),
4958 p_ACTIVE_DATE_FIRST(i),
4959 p_ACTIVE_DATE_FIRST_TYPE(i),
4960 p_ACTIVE_DATE_SECOND(i),
4961 p_ACTIVE_DATE_SECOND_TYPE(i),
4962 p_LINE_QUANTITY(i),
4963 p_LINE_UOM_CODE(i),
4964 p_REQUEST_TYPE_CODE(i),
4965 p_PRICED_QUANTITY(i),
4966 p_PRICED_UOM_CODE (i),
4967 p_CURRENCY_CODE(i),
4968 p_UNIT_PRICE (i),
4969 p_PERCENT_PRICE(i),
4970 p_UOM_QUANTITY(i),
4971 p_ADJUSTED_UNIT_PRICE(i),
4972 p_PROCESSED_FLAG(i),
4973 p_PRICE_FLAG(i),
4974 p_LINE_ID(i),
4975 P_PROCESSING_ORDER(i),
4976 P_ROUNDING_FLAG(i),
4977 P_ROUNDING_FACTOR(i),
4978 p_PRICING_STATUS_CODE(i),
4979 p_PRICING_STATUS_TEXT(i),
4980 p_UPD_ADJUSTED_UNIT_PRICE(i),
4981 nvl(p_QUALIFIERS_EXIST_FLAG(i),'N'),
4982 nvl(p_PRICING_ATTRS_EXIST_FLAG(i),'N'),
4983 nvl(p_PRICE_LIST_ID(i),-9999),
4984 nvl(p_VALIDATED_FLAG(i),'N'),
4985 p_PRICE_REQUEST_CODE(i),
4986 nvl(p_USAGE_PRICING_TYPE(i),'REGULAR'),
4987 G_LINE_CATEGORY_DEF_TBL(i),
4988 G_CONTRACT_START_DATE_DEF_TBL(i),
4989 G_CONTRACT_END_DATE_DEF_TBL(i),
4990 G_LINE_UNIT_PRICE_DEF_TBL(i),
4991 G_CATCHWEIGHT_QTY_DEF_TBL(i),
4992 G_ACTUAL_ORDER_QTY_DEF_TBL(i),
4993 NVL(p_LIST_PRICE_OVERRIDE_FLAG(i), 'N'), --po integration
4994 p_CHARGE_PERIODICITY_CODE(i),
4995 p_UNIT_PRICE(i)
4996 );*/
4997 INSERT INTO QP_INT_LINES_T
4998 ( LINE_INDEX,
4999 LINE_TYPE_CODE,
5000 PRICING_EFFECTIVE_DATE,
5001 START_DATE_ACTIVE_FIRST,
5002 ACTIVE_DATE_FIRST_TYPE,
5003 START_DATE_ACTIVE_SECOND,
5004 ACTIVE_DATE_SECOND_TYPE,
5005 LINE_QUANTITY,
5006 LINE_UOM_CODE,
5007 REQUEST_TYPE_CODE,
5008 PRICED_QUANTITY,
5009 PRICED_UOM_CODE,
5010 CURRENCY_CODE,
5011 UNIT_PRICE,
5012 PERCENT_PRICE,
5013 UOM_QUANTITY,
5014 ADJUSTED_UNIT_PRICE,
5015 PROCESSED_FLAG,
5016 PRICE_FLAG,
5017 LINE_ID,
5018 PROCESSING_ORDER,
5019 ROUNDING_FLAG,
5020 ROUNDING_FACTOR,
5021 PRICING_STATUS_CODE,
5022 PRICING_STATUS_TEXT,
5023 UPDATED_ADJUSTED_UNIT_PRICE,
5024 QUALIFIERS_EXIST_FLAG,
5025 PRICING_ATTRS_EXIST_FLAG,
5026 PRICE_LIST_HEADER_ID,
5027 VALIDATED_FLAG,
5028 PRICE_REQUEST_CODE,
5029 USAGE_PRICING_TYPE,
5030 LINE_CATEGORY,
5031 CONTRACT_START_DATE, -- shulin
5032 CONTRACT_END_DATE, -- shulin
5033 LINE_UNIT_PRICE, -- shu_latest
5034 CATCHWEIGHT_QTY,
5035 ACTUAL_ORDER_QUANTITY,
5036 LIST_PRICE_OVERRIDE_FLAG, -- po integration
5037 CHARGE_PERIODICITY_CODE,
5038 ORDER_UOM_SELLING_PRICE,
5039 request_id)
5040 VALUES ( p_LINE_INDEX(i),
5041 p_LINE_TYPE_CODE(i),
5042 p_PRICING_EFFECTIVE_DATE(i),
5043 p_ACTIVE_DATE_FIRST(i),
5044 p_ACTIVE_DATE_FIRST_TYPE(i),
5045 p_ACTIVE_DATE_SECOND(i),
5046 p_ACTIVE_DATE_SECOND_TYPE(i),
5047 p_LINE_QUANTITY(i),
5048 p_LINE_UOM_CODE(i),
5049 p_REQUEST_TYPE_CODE(i),
5050 p_PRICED_QUANTITY(i),
5051 p_PRICED_UOM_CODE (i),
5052 p_CURRENCY_CODE(i),
5053 p_UNIT_PRICE (i),
5054 p_PERCENT_PRICE(i),
5055 p_UOM_QUANTITY(i),
5056 p_ADJUSTED_UNIT_PRICE(i),
5057 p_PROCESSED_FLAG(i),
5058 p_PRICE_FLAG(i),
5059 p_LINE_ID(i),
5060 P_PROCESSING_ORDER(i),
5061 P_ROUNDING_FLAG(i),
5062 P_ROUNDING_FACTOR(i),
5063 p_PRICING_STATUS_CODE(i),
5064 p_PRICING_STATUS_TEXT(i),
5065 p_UPD_ADJUSTED_UNIT_PRICE(i),
5066 nvl(p_QUALIFIERS_EXIST_FLAG(i),'N'),
5067 nvl(p_PRICING_ATTRS_EXIST_FLAG(i),'N'),
5068 nvl(p_PRICE_LIST_ID(i),-9999),
5069 nvl(p_VALIDATED_FLAG(i),'N'),
5070 p_PRICE_REQUEST_CODE(i),
5071 nvl(p_USAGE_PRICING_TYPE(i),'REGULAR'),
5072 G_LINE_CATEGORY_DEF_TBL(i),
5073 G_CONTRACT_START_DATE_DEF_TBL(i), /* shulin */
5074 G_CONTRACT_END_DATE_DEF_TBL(i), /* shulin */
5075 G_LINE_UNIT_PRICE_DEF_TBL(i), /* shu_latest */
5076 G_CATCHWEIGHT_QTY_DEF_TBL(i),
5077 G_ACTUAL_ORDER_QTY_DEF_TBL(i),
5078 NVL(p_LIST_PRICE_OVERRIDE_FLAG(i), 'N'), --po integration
5079 p_CHARGE_PERIODICITY_CODE(i),
5080 p_UNIT_PRICE(i),
5081 l_request_id
5082 );
5083 QP_PREQ_GRP.G_INT_LINES_NO := QP_PREQ_GRP.G_INT_LINES_NO + p_LINE_INDEX.count;
5084 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
5085 QP_PREQ_GRP.engine_debug('QP_PREQ_GRP.G_INT_LINES_NO='||QP_PREQ_GRP.G_INT_LINES_NO);
5086 END IF;
5087
5088 COMMIT;
5089
5090 EXCEPTION
5091 WHEN OTHERS THEN
5092 x_status_code := FND_API.G_RET_STS_ERROR;
5093 x_status_text :=l_routine||' '||SQLERRM;
5094 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
5095 QP_PREQ_GRP.engine_debug(l_routine||' '||SQLERRM);
5096 QP_PREQ_GRP.engine_debug(SQLERRM);
5097 END IF;
5098 END;
5099
5100 /*+-----------------------------------------------------------------------
5101 |PROCEDURE INSERT_LINES2 for bulk binding
5102 +-----------------------------------------------------------------------
5103 */
5104 PROCEDURE INSERT_LINES2
5105 (p_LINE_INDEX IN PLS_INTEGER_TYPE,
5106 p_LINE_TYPE_CODE IN VARCHAR_TYPE,
5107 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE ,
5108 p_ACTIVE_DATE_FIRST IN DATE_TYPE ,
5109 p_ACTIVE_DATE_FIRST_TYPE IN VARCHAR_TYPE,
5110 p_ACTIVE_DATE_SECOND IN DATE_TYPE ,
5111 p_ACTIVE_DATE_SECOND_TYPE IN VARCHAR_TYPE ,
5112 p_LINE_QUANTITY IN NUMBER_TYPE ,
5113 p_LINE_UOM_CODE IN VARCHAR_TYPE,
5114 p_REQUEST_TYPE_CODE IN VARCHAR_TYPE,
5115 p_PRICED_QUANTITY IN NUMBER_TYPE,
5116 p_PRICED_UOM_CODE IN VARCHAR_TYPE,
5117 p_CURRENCY_CODE IN VARCHAR_TYPE,
5118 p_UNIT_PRICE IN NUMBER_TYPE,
5119 p_PERCENT_PRICE IN NUMBER_TYPE,
5120 p_UOM_QUANTITY IN NUMBER_TYPE,
5121 p_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
5122 p_UPD_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
5123 p_PROCESSED_FLAG IN VARCHAR_TYPE,
5124 p_PRICE_FLAG IN VARCHAR_TYPE,
5125 p_LINE_ID IN NUMBER_TYPE,
5126 p_PROCESSING_ORDER IN PLS_INTEGER_TYPE,
5127 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
5128 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE,
5129 p_ROUNDING_FLAG IN FLAG_TYPE,
5130 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
5131 p_QUALIFIERS_EXIST_FLAG IN VARCHAR_TYPE,
5132 p_PRICING_ATTRS_EXIST_FLAG IN VARCHAR_TYPE,
5133 p_PRICE_LIST_ID IN NUMBER_TYPE,
5134 p_VALIDATED_FLAG IN VARCHAR_TYPE,
5135 p_PRICE_REQUEST_CODE IN VARCHAR_TYPE,
5136 p_USAGE_PRICING_TYPE IN VARCHAR_TYPE,
5137 p_LINE_CATEGORY IN VARCHAR_TYPE,
5138 p_CONTRACT_START_DATE IN DATE_TYPE,
5139 p_CONTRACT_END_DATE IN DATE_TYPE,
5140 p_LINE_UNIT_PRICE IN NUMBER_TYPE,
5141 p_CATCHWEIGHT_QTY IN NUMBER_TYPE,
5142 p_ACTUAL_ORDER_QTY IN NUMBER_TYPE,
5143 p_LIST_PRICE_OVERRIDE_FLAG IN VARCHAR_TYPE, --po integration
5144 p_charge_periodicity_code IN VARCHAR_3_TYPE,
5145 p_SERVICE_DURATION IN NUMBER_TYPE, -- SERVICE PROJECT
5146 p_SERVICE_PERIOD IN VARCHAR_TYPE, -- SERVICE PROJECT
5147 x_status_code OUT NOCOPY VARCHAR2,
5148 x_status_text OUT NOCOPY VARCHAR2 )
5149 AS
5150 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.INSERT_LINES2';
5151 --added by yangli for Java Engine project
5152 l_debug varchar2(3);
5153 --added by yangli for Java Engine project
5154 BEGIN
5155 --added by yangli for Java Engine project
5156 -- Set the global variable G_DEBUG_ENGINE
5157 QP_PREQ_GRP.Set_QP_Debug;
5158
5159 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
5160 --added by yangli for Java Engine project
5161
5162 x_status_code := FND_API.G_RET_STS_SUCCESS;
5163
5164 -- Defaulting
5165 IF (p_line_category.count = 0) THEN -- p_line_category not passed at all
5166 FOR i in p_line_index.FIRST .. p_line_index.LAST
5167 LOOP
5168 G_LINE_CATEGORY_DEF_TBL(i) := NULL;
5169 END LOOP;
5170 ELSE
5171 FOR i in p_line_index.FIRST .. p_line_index.LAST
5172 LOOP
5173 G_LINE_CATEGORY_DEF_TBL(i) := p_LINE_CATEGORY(i);
5174 END LOOP;
5175 END IF;
5176
5177 -- shulin
5178 -- Defaulting
5179 IF (p_contract_start_date.count = 0) THEN -- p_contract_start_date not passed at all
5180 FOR i in p_line_index.FIRST .. p_line_index.LAST
5181 LOOP
5182 G_CONTRACT_START_DATE_DEF_TBL(i) := NULL;
5183 END LOOP;
5184 ELSE
5185 FOR i in p_line_index.FIRST .. p_line_index.LAST
5186 LOOP
5187 G_CONTRACT_START_DATE_DEF_TBL(i) := p_CONTRACT_START_DATE(i); /* shulin */
5188 END LOOP;
5189 END IF;
5190
5191 IF (p_contract_end_date.count = 0) THEN -- p_contract_end_date not passed at all
5192 FOR i in p_line_index.FIRST .. p_line_index.LAST
5193 LOOP
5194 G_CONTRACT_END_DATE_DEF_TBL(i) := NULL;
5195 END LOOP;
5196 ELSE
5197 FOR i in p_line_index.FIRST .. p_line_index.LAST
5198 LOOP
5199 G_CONTRACT_END_DATE_DEF_TBL(i) := p_CONTRACT_END_DATE(i); /* shulin */
5200 END LOOP;
5201 END IF;
5202
5203 IF (p_line_unit_price.count = 0) THEN -- p_line_unit_price not passed at all
5204 FOR i in p_line_index.FIRST .. p_line_index.LAST
5205 LOOP
5206 G_LINE_UNIT_PRICE_DEF_TBL(i) := NULL;
5207 END LOOP;
5208 ELSE
5209 FOR i in p_line_index.FIRST .. p_line_index.LAST
5210 LOOP
5211 G_LINE_UNIT_PRICE_DEF_TBL(i) := p_LINE_UNIT_PRICE(i); /* shu_latest */
5212 END LOOP;
5213 END IF;
5214
5215 IF (p_catchweight_qty.count = 0) THEN -- p_catchweight_qty not passed at all
5216 FOR i in p_line_index.FIRST .. p_line_index.LAST
5217 LOOP
5218 G_CATCHWEIGHT_QTY_DEF_TBL(i) := NULL;
5219 END LOOP;
5220 ELSE
5221 FOR i in p_line_index.FIRST .. p_line_index.LAST
5222 LOOP
5223 G_CATCHWEIGHT_QTY_DEF_TBL(i) := p_catchweight_qty(i); /* shu_latest */
5224 END LOOP;
5225 END IF;
5226
5227 IF (p_actual_order_qty.count = 0) THEN
5228 FOR i in p_line_index.FIRST .. p_line_index.LAST
5229 LOOP
5230 G_ACTUAL_ORDER_QTY_DEF_TBL(i) := NULL;
5231 END LOOP;
5232 ELSE
5233 FOR i in p_line_index.FIRST .. p_line_index.LAST
5234 LOOP
5235 G_ACTUAL_ORDER_QTY_DEF_TBL(i) := p_actual_order_qty(i);
5236 END LOOP;
5237 END IF;
5238
5239 -- start po integration
5240 IF (p_list_price_override_flag.count= 0)
5241 THEN
5242 FOR i in p_line_index.FIRST .. p_line_index.LAST
5243 LOOP
5244 G_LIST_PRICE_OVERRIDE_FLAG_TBL(i) := 'N';
5245 END LOOP;
5246 ELSE
5247 FOR i in p_line_index.FIRST .. p_line_index.LAST
5248 LOOP
5249 G_LIST_PRICE_OVERRIDE_FLAG_TBL(i) := nvl (p_list_price_override_flag(i), 'N');
5250 END LOOP;
5251 End IF;
5252 -- end po integration
5253
5254 IF (p_charge_periodicity_code.count = 0) THEN
5255 FOR i in p_line_index.FIRST .. p_line_index.LAST LOOP
5256 G_CHARGE_PERIODICITY_CODE_TBL(i) := NULL;
5257 END LOOP;
5258 ELSE
5259 FOR i in p_line_index.FIRST .. p_line_index.LAST LOOP
5260 G_CHARGE_PERIODICITY_CODE_TBL(i) := p_charge_periodicity_code(i);
5261 END LOOP;
5262 END IF;
5263
5264 --added by yangli for Java Engine project
5265 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
5266 IF l_debug = FND_API.G_TRUE THEN
5267 ENGINE_DEBUG('Java Engine not Installed ----------');
5268 END IF;
5269 --added by yangli for Java Engine project
5270
5271 FORALL i in p_line_index.FIRST..p_line_index.LAST
5272
5273 INSERT INTO qp_npreq_lines_tmp
5274 (LINE_INDEX,
5275 LINE_TYPE_CODE,
5276 PRICING_EFFECTIVE_DATE,
5277 START_DATE_ACTIVE_FIRST,
5278 ACTIVE_DATE_FIRST_TYPE,
5279 START_DATE_ACTIVE_SECOND,
5280 ACTIVE_DATE_SECOND_TYPE,
5281 LINE_QUANTITY,
5282 LINE_UOM_CODE,
5283 REQUEST_TYPE_CODE,
5284 PRICED_QUANTITY,
5285 PRICED_UOM_CODE,
5286 CURRENCY_CODE,
5287 UNIT_PRICE,
5288 PERCENT_PRICE,
5289 UOM_QUANTITY,
5290 ADJUSTED_UNIT_PRICE,
5291 PROCESSED_FLAG,
5292 PRICE_FLAG,
5293 LINE_ID,
5294 PROCESSING_ORDER,
5295 ROUNDING_FLAG,
5296 ROUNDING_FACTOR,
5297 PRICING_STATUS_CODE,
5298 PRICING_STATUS_TEXT,
5299 UPDATED_ADJUSTED_UNIT_PRICE,
5300 QUALIFIERS_EXIST_FLAG,
5301 PRICING_ATTRS_EXIST_FLAG,
5302 PRICE_LIST_HEADER_ID,
5303 VALIDATED_FLAG,
5304 PRICE_REQUEST_CODE,
5305 USAGE_PRICING_TYPE,
5306 LINE_CATEGORY,
5307 CONTRACT_START_DATE, -- shulin
5308 CONTRACT_END_DATE, -- shulin
5309 LINE_UNIT_PRICE, -- shu_latest
5310 CATCHWEIGHT_QTY,
5311 ACTUAL_ORDER_QUANTITY,
5312 LIST_PRICE_OVERRIDE_FLAG, -- po integration
5313 CHARGE_PERIODICITY_CODE,
5314 ORDER_UOM_SELLING_PRICE
5315 )
5316 VALUES ( p_LINE_INDEX(i),
5317 p_LINE_TYPE_CODE(i),
5318 p_PRICING_EFFECTIVE_DATE(i),
5319 p_ACTIVE_DATE_FIRST(i),
5320 p_ACTIVE_DATE_FIRST_TYPE(i),
5321 p_ACTIVE_DATE_SECOND(i),
5322 p_ACTIVE_DATE_SECOND_TYPE(i),
5323 p_LINE_QUANTITY(i),
5324 p_LINE_UOM_CODE(i),
5325 p_REQUEST_TYPE_CODE(i),
5326 p_PRICED_QUANTITY(i),
5327 p_PRICED_UOM_CODE (i),
5328 p_CURRENCY_CODE(i),
5329 p_UNIT_PRICE (i),
5330 p_PERCENT_PRICE(i),
5331 p_UOM_QUANTITY(i),
5332 p_ADJUSTED_UNIT_PRICE(i),
5333 p_PROCESSED_FLAG(i),
5334 p_PRICE_FLAG(i),
5335 p_LINE_ID(i),
5336 P_PROCESSING_ORDER(i),
5337 P_ROUNDING_FLAG(i),
5338 P_ROUNDING_FACTOR(i),
5339 p_PRICING_STATUS_CODE(i),
5340 p_PRICING_STATUS_TEXT(i),
5341 p_UPD_ADJUSTED_UNIT_PRICE(i),
5342 nvl(p_QUALIFIERS_EXIST_FLAG(i),'N'),
5343 nvl(p_PRICING_ATTRS_EXIST_FLAG(i),'N'),
5344 nvl(p_PRICE_LIST_ID(i),-9999),
5345 nvl(p_VALIDATED_FLAG(i),'N'),
5346 p_PRICE_REQUEST_CODE(i),
5347 nvl(p_USAGE_PRICING_TYPE(i),'REGULAR'),
5348 G_LINE_CATEGORY_DEF_TBL(i),
5349 G_CONTRACT_START_DATE_DEF_TBL(i), /* shulin */
5350 G_CONTRACT_END_DATE_DEF_TBL(i), /* shulin */
5351 G_LINE_UNIT_PRICE_DEF_TBL(i), /* shu_latest */
5352 G_CATCHWEIGHT_QTY_DEF_TBL(i),
5353 G_ACTUAL_ORDER_QTY_DEF_TBL(i),
5354 nvl (G_LIST_PRICE_OVERRIDE_FLAG_TBL(i), 'N'), -- po integration
5355 G_CHARGE_PERIODICITY_CODE_TBL(i),
5356 -- p_UNIT_PRICE(i)
5357 DECODE(p_LINE_QUANTITY(i),
5358 0,p_ADJUSTED_UNIT_PRICE(i),
5359 p_ADJUSTED_UNIT_PRICE(i)*nvl(p_PRICED_QUANTITY(i),p_LINE_QUANTITY(i))/p_LINE_QUANTITY(i)) --8370238
5360 );
5361 --added by yangli for Java Engine project
5362 ELSE
5363 IF l_debug = FND_API.G_TRUE THEN
5364 ENGINE_DEBUG('Java Engine Installed ----------');
5365 END IF;
5366 QP_PREQ_GRP.INSERT_LINES2_AT(
5367 p_LINE_INDEX,
5368 p_LINE_TYPE_CODE ,
5369 p_PRICING_EFFECTIVE_DATE ,
5370 p_ACTIVE_DATE_FIRST ,
5371 p_ACTIVE_DATE_FIRST_TYPE ,
5372 p_ACTIVE_DATE_SECOND ,
5373 p_ACTIVE_DATE_SECOND_TYPE,
5374 p_LINE_QUANTITY ,
5375 p_LINE_UOM_CODE ,
5376 p_REQUEST_TYPE_CODE ,
5377 p_PRICED_QUANTITY ,
5378 p_PRICED_UOM_CODE ,
5379 p_CURRENCY_CODE ,
5380 p_UNIT_PRICE ,
5381 p_PERCENT_PRICE ,
5382 p_UOM_QUANTITY ,
5383 p_ADJUSTED_UNIT_PRICE ,
5384 p_UPD_ADJUSTED_UNIT_PRICE,
5385 p_PROCESSED_FLAG ,
5386 p_PRICE_FLAG ,
5387 p_LINE_ID ,
5388 p_PROCESSING_ORDER ,
5389 p_PRICING_STATUS_CODE ,
5390 p_PRICING_STATUS_TEXT ,
5391 p_ROUNDING_FLAG ,
5392 p_ROUNDING_FACTOR ,
5393 p_QUALIFIERS_EXIST_FLAG ,
5394 p_PRICING_ATTRS_EXIST_FLAG ,
5395 p_PRICE_LIST_ID ,
5396 p_VALIDATED_FLAG ,
5397 p_PRICE_REQUEST_CODE ,
5398 p_USAGE_PRICING_TYPE ,
5399 G_LINE_CATEGORY_DEF_TBL,
5400 G_CONTRACT_START_DATE_DEF_TBL,
5401 G_CONTRACT_END_DATE_DEF_TBL,
5402 G_LINE_UNIT_PRICE_DEF_TBL,
5403 G_CATCHWEIGHT_QTY_DEF_TBL,
5404 G_ACTUAL_ORDER_QTY_DEF_TBL,
5405 G_LIST_PRICE_OVERRIDE_FLAG_TBL, --po integration
5406 G_CHARGE_PERIODICITY_CODE_TBL,
5407 x_status_code ,
5408 x_status_text
5409 );
5410 END IF;
5411 --added by yangli for Java Engine project
5412
5413 G_LINE_CATEGORY_DEF_TBL.delete;
5414 G_CONTRACT_START_DATE_DEF_TBL.delete;
5415 G_CONTRACT_END_DATE_DEF_TBL.delete;
5416 G_LINE_UNIT_PRICE_DEF_TBL.delete;
5417 G_CATCHWEIGHT_QTY_DEF_TBL.delete;
5418 G_ACTUAL_ORDER_QTY_DEF_TBL.delete;
5419 G_LIST_PRICE_OVERRIDE_FLAG_TBL.delete;
5420 G_CHARGE_PERIODICITY_CODE_TBL.delete;
5421
5422 EXCEPTION
5423 WHEN OTHERS THEN
5424 x_status_code := FND_API.G_RET_STS_ERROR;
5425 x_status_text :=l_routine||' '||SQLERRM;
5426 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
5427 engine_debug(l_routine||' '||SQLERRM);
5428 engine_debug(SQLERRM);
5429 END IF;
5430 END;
5431
5432 /*+----------------------------------------------------------------------
5433 |Procedure INSERT_LDETS
5434 +----------------------------------------------------------------------
5435 */
5436 PROCEDURE INSERT_LDETS
5437 (p_LINE_DETAIL_index IN PLS_INTEGER,
5438 p_LINE_DETAIL_TYPE_CODE IN VARCHAR2,
5439 p_PRICE_BREAK_TYPE_CODE IN VARCHAR2:=NULL,
5440 p_LIST_PRICE IN NUMBER:=NULL,
5441 p_LINE_INDEX IN PLS_INTEGER,
5442 p_CREATED_FROM_LIST_HEADER_ID IN NUMBER,
5443 p_CREATED_FROM_LIST_LINE_ID IN NUMBER,
5444 p_CREATED_FROM_LIST_LINE_TYPE IN VARCHAR2,
5445 p_CREATED_FROM_LIST_TYPE_CODE IN VARCHAR2:=NULL,
5446 p_CREATED_FROM_SQL IN VARCHAR2:=NULL,
5447 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER:=NULL,
5448 P_PRICING_PHASE_ID IN PLS_INTEGER:=NULL,
5449 p_OPERAND_CALCULATION_CODE IN VARCHAR2:=NULL,
5450 p_OPERAND_VALUE IN VARCHAR2:=NULL,
5451 p_SUBSTITUTION_TYPE_CODE IN VARCHAR2:=NULL,
5452 p_SUBSTITUTION_VALUE_FROM IN VARCHAR2:=NULL,
5453 p_SUBSTITUTION_VALUE_TO IN VARCHAR2:=NULL,
5454 p_ASK_FOR_FLAG IN VARCHAR2:=NULL,
5455 p_PRICE_FORMULA_ID IN NUMBER:=NULL,
5456 p_PRICING_STATUS_CODE IN VARCHAR2,
5457 p_PRICING_STATUS_TEXT IN VARCHAR2:=NULL,
5458 p_PRODUCT_PRECEDENCE IN PLS_INTEGER:=NULL,
5459 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR2:=NULL,
5460 p_PROCESSED_FLAG IN VARCHAR2:=NULL,
5461 p_APPLIED_FLAG IN VARCHAR2:=NULL,
5462 p_AUTOMATIC_FLAG IN VARCHAR2:=NULL,
5463 p_OVERRIDE_FLAG IN VARCHAR2:=NULL,
5464 p_PRIMARY_UOM_FLAG IN VARCHAR2:=NULL,
5465 p_PRINT_ON_INVOICE_FLAG IN VARCHAR2:=NULL,
5466 p_MODIFIER_LEVEL_CODE IN VARCHAR2:=NULL,
5467 p_BENEFIT_QTY IN NUMBER:=NULL,
5468 p_BENEFIT_UOM_CODE IN VARCHAR2:=NULL,
5469 p_SERVICE_DURATION IN NUMBER:=NULL, -- SERVICE PROJECT
5470 p_SERVICE_PERIOD IN VARCHAR2:=NULL, -- SERVICE PROJECT
5471 p_LIST_LINE_NO IN VARCHAR2:=NULL,
5472 p_ACCRUAL_FLAG IN VARCHAR2:=NULL,
5473 p_ACCRUAL_CONVERSION_RATE IN NUMBER:=NULL,
5474 p_ESTIM_ACCRUAL_RATE IN NUMBER:=NULL,
5475 p_RECURRING_FLAG IN VARCHAR2:=NULL,
5476 p_RECURRING_VALUE IN NUMBER:=NULL, -- block pricing
5477 p_SELECTED_VOLUME_ATTR IN VARCHAR2:=NULL,
5478 p_ROUNDING_FACTOR IN NUMBER:=NULL,
5479 p_SECONDARY_PRICELIST_IND IN VARCHAR2:=NULL,
5480 p_UPDATED_FLAG IN VARCHAR := NULL,
5481 p_PROCESS_CODE IN VARCHAR := NULL,
5482 p_CHARGE_TYPE_CODE IN VARCHAR := NULL,
5483 p_CHARGE_SUBTYPE_CODE IN VARCHAR := NULL,
5484 p_GROUP_QUANTITY IN NUMBER :=NULL,
5485 p_GROUP_AMOUNT IN NUMBER :=NULL,
5486 p_CALCULATION_CODE IN VARCHAR2 := NULL,
5487 p_CURRENCY_DETAIL_ID IN NUMBER :=NULL, /*vivek */
5488 p_CURRENCY_HEADER_ID IN NUMBER :=NULL, /*vivek */
5489 p_SELLING_ROUNDING_FACTOR IN NUMBER :=NULL, /*vivek */
5490 p_ORDER_CURRENCY IN VARCHAR := NULL, /*vivek */
5491 p_PRICING_EFFECTIVE_DATE IN DATE := NULL,/*vivek */
5492 p_BASE_CURRENCY_CODE IN VARCHAR := NULL,/*vivek */
5493 p_CHANGE_REASON_CODE IN VARCHAR2 := NULL,
5494 p_CHANGE_REASON_TEXT IN VARCHAR2 := NULL,
5495 p_LINE_QUANTITY IN NUMBER := NULL,
5496 p_BREAK_UOM_CODE IN VARCHAR2 := NULL, /* Proration */
5497 p_BREAK_UOM_CONTEXT IN VARCHAR2 := NULL, /* Proration */
5498 p_BREAK_UOM_ATTRIBUTE IN VARCHAR2 := NULL, /* Proration */
5499 x_status_code OUT NOCOPY VARCHAR2,
5500 x_status_text OUT NOCOPY VARCHAR2)
5501 AS
5502 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS';
5503 BEGIN
5504 INSERT INTO qp_npreq_ldets_tmp
5505 (LINE_DETAIL_INDEX,
5506 LINE_DETAIL_TYPE_CODE,
5507 PRICE_BREAK_TYPE_CODE,
5508 LINE_INDEX,
5509 CREATED_FROM_LIST_HEADER_ID,
5510 CREATED_FROM_LIST_LINE_ID,
5511 CREATED_FROM_LIST_LINE_TYPE,
5512 CREATED_FROM_LIST_TYPE_CODE,
5513 CREATED_FROM_SQL,
5514 PRICING_GROUP_SEQUENCE,
5515 PRICING_PHASE_ID,
5516 OPERAND_CALCULATION_CODE,
5517 OPERAND_VALUE,
5518 SUBSTITUTION_TYPE_CODE,
5519 SUBSTITUTION_VALUE_FROM,
5520 SUBSTITUTION_VALUE_TO,
5521 ASK_FOR_FLAG,
5522 PRICE_FORMULA_ID,
5523 PRICING_STATUS_CODE,
5524 PRICING_STATUS_TEXT,
5525 PRODUCT_PRECEDENCE,
5526 INCOMPATABILITY_GRP_CODE,
5527 PROCESSED_FLAG,
5528 APPLIED_FLAG,
5529 AUTOMATIC_FLAG,
5530 OVERRIDE_FLAG,
5531 PRINT_ON_INVOICE_FLAG,
5532 PRIMARY_UOM_FLAG,
5533 MODIFIER_LEVEL_CODE,
5534 BENEFIT_QTY,
5535 BENEFIT_UOM_CODE,
5536 SERVICE_DURATION, -- SERVICE PROJECT
5537 SERVICE_PERIOD, -- SERVICE PROJECT
5538 LIST_LINE_NO,
5539 ACCRUAL_FLAG,
5540 ACCRUAL_CONVERSION_RATE,
5541 ESTIM_ACCRUAL_RATE,
5542 RECURRING_FLAG,
5543 RECURRING_VALUE, -- block pricing
5544 SELECTED_VOLUME_ATTR,
5545 ROUNDING_FACTOR,
5546 UPDATED_FLAG,
5547 PROCESS_CODE,
5548 CHARGE_TYPE_CODE,
5549 CHARGE_SUBTYPE_CODE,
5550 GROUP_QUANTITY,
5551 GROUP_AMOUNT,
5552 CALCULATION_CODE,
5553 CURRENCY_DETAIL_ID, /*vivek */
5554 CURRENCY_HEADER_ID, /*vivek */
5555 SELLING_ROUNDING_FACTOR, /*vivek */
5556 ORDER_CURRENCY, /*vivek */
5557 PRICING_EFFECTIVE_DATE,/*vivek */
5558 BASE_CURRENCY_CODE,/*vivek */
5559 CHANGE_REASON_CODE,
5560 CHANGE_REASON_TEXT,
5561 LINE_QUANTITY
5562 ,BREAK_UOM_CODE /* Proration */
5563 ,BREAK_UOM_CONTEXT /* Proration */
5564 ,BREAK_UOM_ATTRIBUTE /* Proration */
5565 )
5566 VALUES ( p_LINE_DETAIL_INDEX,
5567 p_LINE_DETAIL_TYPE_CODE,
5568 p_PRICE_BREAK_TYPE_CODE,
5569 p_LINE_INDEX,
5570 p_CREATED_FROM_LIST_HEADER_ID,
5571 p_CREATED_FROM_LIST_LINE_ID,
5572 p_CREATED_FROM_LIST_LINE_TYPE,
5573 p_CREATED_FROM_LIST_TYPE_CODE,
5574 p_CREATED_FROM_SQL,
5575 p_PRICING_GROUP_SEQUENCE,
5576 p_PRICING_PHASE_ID,
5577 p_OPERAND_CALCULATION_CODE,
5578 p_OPERAND_VALUE,
5579 p_SUBSTITUTION_TYPE_CODE,
5580 p_SUBSTITUTION_VALUE_FROM,
5581 p_SUBSTITUTION_VALUE_TO,
5582 p_ASK_FOR_FLAG,
5583 p_PRICE_FORMULA_ID,
5584 p_PRICING_STATUS_CODE,
5585 p_PRICING_STATUS_TEXT,
5586 p_PRODUCT_PRECEDENCE,
5587 p_INCOMPATABLILITY_GRP_CODE,
5588 p_PROCESSED_FLAG,
5589 p_APPLIED_FLAG,
5590 p_AUTOMATIC_FLAG,
5591 p_OVERRIDE_FLAG,
5592 p_PRINT_ON_INVOICE_FLAG,
5593 p_PRIMARY_UOM_FLAG,
5594 p_MODIFIER_LEVEL_CODE,
5595 p_BENEFIT_QTY,
5596 p_BENEFIT_UOM_CODE,
5597 p_SERVICE_DURATION, -- SERVICE PROJECT
5598 p_SERVICE_PERIOD, -- SERVICE PROJECT
5599 p_LIST_LINE_NO,
5600 p_ACCRUAL_FLAG,
5601 p_ACCRUAL_CONVERSION_RATE,
5602 p_ESTIM_ACCRUAL_RATE,
5603 p_RECURRING_FLAG,
5604 p_RECURRING_VALUE, -- block pricing
5605 p_SELECTED_VOLUME_ATTR,
5606 p_ROUNDING_FACTOR,
5607 p_UPDATED_FLAG,
5608 nvl(p_PROCESS_CODE,G_STATUS_NEW),
5609 p_CHARGE_TYPE_CODE,
5610 p_CHARGE_SUBTYPE_CODE,
5611 p_GROUP_QUANTITY,
5612 p_GROUP_AMOUNT,
5613 p_CALCULATION_CODE,
5614 P_CURRENCY_DETAIL_ID, /*vivek */
5615 P_CURRENCY_HEADER_ID, /*vivek */
5616 P_SELLING_ROUNDING_FACTOR, /*vivek */
5617 P_ORDER_CURRENCY, /*vivek */
5618 P_PRICING_EFFECTIVE_DATE,/*vivek */
5619 P_BASE_CURRENCY_CODE,/*vivek */
5620 p_CHANGE_REASON_CODE,
5621 p_CHANGE_REASON_TEXT,
5622 p_LINE_QUANTITY
5623 ,p_BREAK_UOM_CODE /* Proration */
5624 ,p_BREAK_UOM_CONTEXT /* Proration */
5625 ,p_BREAK_UOM_ATTRIBUTE /* Proration */
5626 );
5627 EXCEPTION
5628 WHEN OTHERS THEN
5629 x_status_code := FND_API.G_RET_STS_ERROR;
5630 x_status_text :=l_routine||' '||SQLERRM;
5631 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
5632 engine_debug(l_routine||' '||SQLERRM);
5633 engine_debug(SQLERRM);
5634 END IF;
5635 END;
5636
5637 /*+----------------------------------------------------------------------
5638 |Procedure INSERT_LDETS_PRICE_LIST_PVT
5639 +----------------------------------------------------------------------
5640 */
5641 PROCEDURE INSERT_LDETS_PRICE_LIST_PVT
5642 (p_LINE_DETAIL_index IN PLS_INTEGER_TYPE,
5643 p_LINE_DETAIL_TYPE_CODE IN VARCHAR_TYPE,
5644 p_PRICE_BREAK_TYPE_CODE IN VARCHAR_TYPE,
5645 p_LINE_INDEX IN PLS_INTEGER_TYPE,
5646 p_CREATED_FROM_LIST_HEADER_ID IN NUMBER_TYPE,
5647 p_CREATED_FROM_LIST_LINE_ID IN NUMBER_TYPE,
5648 p_CREATED_FROM_LIST_LINE_TYPE IN VARCHAR_TYPE,
5649 p_CREATED_FROM_LIST_TYPE_CODE IN VARCHAR_TYPE,
5650 p_CREATED_FROM_SQL IN VARCHAR_TYPE,
5651 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER_TYPE,
5652 P_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
5653 p_OPERAND_CALCULATION_CODE IN VARCHAR_TYPE,
5654 p_OPERAND_VALUE IN VARCHAR_TYPE,
5655 p_PRICE_FORMULA_ID IN NUMBER_TYPE,
5656 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
5657 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE,
5658 p_PRODUCT_PRECEDENCE IN PLS_INTEGER_TYPE,
5659 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR_TYPE,
5660 p_PROCESSED_FLAG IN VARCHAR_TYPE,
5661 p_APPLIED_FLAG IN VARCHAR_TYPE,
5662 p_AUTOMATIC_FLAG IN VARCHAR_TYPE,
5663 p_PRIMARY_UOM_FLAG IN VARCHAR_TYPE,
5664 p_MODIFIER_LEVEL_CODE IN VARCHAR_TYPE,
5665 p_LIST_LINE_NO IN VARCHAR_TYPE,
5666 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
5667 p_BREAK_UOM_CODE IN VARCHAR_TYPE, /* Proration */
5668 p_BREAK_UOM_CONTEXT IN VARCHAR_TYPE, /* Proration */
5669 p_BREAK_UOM_ATTRIBUTE IN VARCHAR_TYPE, /* Proration */
5670 x_status_code OUT NOCOPY VARCHAR2,
5671 x_status_text OUT NOCOPY VARCHAR2)
5672 AS
5673 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS_PRICE_LIST_PVT';
5674
5675 BEGIN
5676
5677 FORALL i in p_line_index.FIRST..p_line_index.LAST
5678 INSERT INTO qp_npreq_ldets_tmp
5679 (LINE_DETAIL_INDEX,
5680 LINE_DETAIL_TYPE_CODE,
5681 PRICE_BREAK_TYPE_CODE,
5682 LINE_INDEX,
5683 CREATED_FROM_LIST_HEADER_ID,
5684 CREATED_FROM_LIST_LINE_ID,
5685 CREATED_FROM_LIST_LINE_TYPE,
5686 CREATED_FROM_LIST_TYPE_CODE,
5687 CREATED_FROM_SQL,
5688 PRICING_GROUP_SEQUENCE,
5689 PRICING_PHASE_ID,
5690 OPERAND_CALCULATION_CODE,
5691 OPERAND_VALUE,
5692 PRICE_FORMULA_ID,
5693 PRICING_STATUS_CODE,
5694 PRICING_STATUS_TEXT,
5695 PRODUCT_PRECEDENCE,
5696 INCOMPATABILITY_GRP_CODE,
5697 PROCESSED_FLAG,
5698 APPLIED_FLAG,
5699 AUTOMATIC_FLAG,
5700 PRIMARY_UOM_FLAG,
5701 MODIFIER_LEVEL_CODE,
5702 LIST_LINE_NO,
5703 PROCESS_CODE,
5704 ROUNDING_FACTOR
5705 ,BREAK_UOM_CODE /* Proration */
5706 ,BREAK_UOM_CONTEXT /* Proration */
5707 ,BREAK_UOM_ATTRIBUTE /* Proration */
5708 )
5709 VALUES ( p_LINE_DETAIL_INDEX(i),
5710 p_LINE_DETAIL_TYPE_CODE(i),
5711 p_PRICE_BREAK_TYPE_CODE(i),
5712 p_LINE_INDEX(i),
5713 p_CREATED_FROM_LIST_HEADER_ID(i),
5714 p_CREATED_FROM_LIST_LINE_ID(i),
5715 p_CREATED_FROM_LIST_LINE_TYPE(i),
5716 p_CREATED_FROM_LIST_TYPE_CODE(i),
5717 p_CREATED_FROM_SQL(i),
5718 p_PRICING_GROUP_SEQUENCE(i),
5719 p_PRICING_PHASE_ID(i),
5720 p_OPERAND_CALCULATION_CODE(i),
5721 p_OPERAND_VALUE(i),
5722 p_PRICE_FORMULA_ID(i),
5723 p_PRICING_STATUS_CODE(i),
5724 p_PRICING_STATUS_TEXT(i),
5725 p_PRODUCT_PRECEDENCE(i),
5726 p_INCOMPATABLILITY_GRP_CODE(i),
5727 p_PROCESSED_FLAG(i),
5728 p_APPLIED_FLAG(i),
5729 p_AUTOMATIC_FLAG(i),
5730 p_PRIMARY_UOM_FLAG(i),
5731 p_MODIFIER_LEVEL_CODE(i),
5732 p_LIST_LINE_NO(i),
5733 G_STATUS_NEW,
5734 p_ROUNDING_FACTOR(i)
5735 ,p_BREAK_UOM_CODE(i) /* Proration */
5736 ,p_BREAK_UOM_CONTEXT(i) /* Proration */
5737 ,p_BREAK_UOM_ATTRIBUTE(i) /* Proration */
5738 );
5739 EXCEPTION
5740 WHEN OTHERS THEN
5741 x_status_code := FND_API.G_RET_STS_ERROR;
5742 x_status_text :=l_routine||' '||SQLERRM;
5743 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
5744 engine_debug(l_routine||' '||SQLERRM);
5745 engine_debug(SQLERRM);
5746 END IF;
5747 END;
5748
5749 /*+----------------------------------------------------------------------
5750 |Procedure INSERT_LDETS_PRICE_LIST_MULT
5751 +----------------------------------------------------------------------
5752 */
5753 PROCEDURE INSERT_LDETS_PRICE_LIST_MULT
5754 (p_LINE_DETAIL_index IN PLS_INTEGER_TYPE,
5755 p_LINE_DETAIL_TYPE_CODE IN VARCHAR_TYPE,
5756 p_PRICE_BREAK_TYPE_CODE IN VARCHAR_TYPE,
5757 p_LINE_INDEX IN PLS_INTEGER_TYPE,
5758 p_CREATED_FROM_LIST_HEADER_ID IN NUMBER_TYPE,
5759 p_CREATED_FROM_LIST_LINE_ID IN NUMBER_TYPE,
5760 p_CREATED_FROM_LIST_LINE_TYPE IN VARCHAR_TYPE,
5761 p_CREATED_FROM_LIST_TYPE_CODE IN VARCHAR_TYPE,
5762 p_CREATED_FROM_SQL IN VARCHAR_TYPE,
5763 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER_TYPE,
5764 P_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
5765 p_OPERAND_CALCULATION_CODE IN VARCHAR_TYPE,
5766 p_OPERAND_VALUE IN VARCHAR_TYPE,
5767 p_PRICE_FORMULA_ID IN NUMBER_TYPE,
5768 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
5769 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE,
5770 p_PRODUCT_PRECEDENCE IN PLS_INTEGER_TYPE,
5771 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR_TYPE,
5772 p_PROCESSED_FLAG IN VARCHAR_TYPE,
5773 p_APPLIED_FLAG IN VARCHAR_TYPE,
5774 p_AUTOMATIC_FLAG IN VARCHAR_TYPE,
5775 p_PRIMARY_UOM_FLAG IN VARCHAR_TYPE,
5776 p_MODIFIER_LEVEL_CODE IN VARCHAR_TYPE,
5777 p_LIST_LINE_NO IN VARCHAR_TYPE,
5778 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
5779 p_CURRENCY_DETAIL_ID IN NUMBER_TYPE,
5780 p_CURRENCY_HEADER_ID IN NUMBER_TYPE,
5781 p_SELLING_ROUNDING_FACTOR IN NUMBER_TYPE,
5782 p_ORDER_CURRENCY IN VARCHAR_TYPE,
5783 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE,
5784 p_BASE_CURRENCY_CODE IN VARCHAR_TYPE,
5785 p_BREAK_UOM_CODE IN VARCHAR_TYPE, /* Proration */
5786 p_BREAK_UOM_CONTEXT IN VARCHAR_TYPE, /* Proration */
5787 p_BREAK_UOM_ATTRIBUTE IN VARCHAR_TYPE, /* Proration */
5788 x_status_code OUT NOCOPY VARCHAR2,
5789 x_status_text OUT NOCOPY VARCHAR2)
5790 AS
5791 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS_PRICE_LIST_MULT';
5792
5793 BEGIN
5794
5795 FORALL i in p_line_index.FIRST..p_line_index.LAST
5796 INSERT INTO qp_npreq_ldets_tmp
5797 (LINE_DETAIL_INDEX,
5798 LINE_DETAIL_TYPE_CODE,
5799 PRICE_BREAK_TYPE_CODE,
5800 LINE_INDEX,
5801 CREATED_FROM_LIST_HEADER_ID,
5802 CREATED_FROM_LIST_LINE_ID,
5803 CREATED_FROM_LIST_LINE_TYPE,
5804 CREATED_FROM_LIST_TYPE_CODE,
5805 CREATED_FROM_SQL,
5806 PRICING_GROUP_SEQUENCE,
5807 PRICING_PHASE_ID,
5808 OPERAND_CALCULATION_CODE,
5809 OPERAND_VALUE,
5810 PRICE_FORMULA_ID,
5811 PRICING_STATUS_CODE,
5812 PRICING_STATUS_TEXT,
5813 PRODUCT_PRECEDENCE,
5814 INCOMPATABILITY_GRP_CODE,
5815 PROCESSED_FLAG,
5816 APPLIED_FLAG,
5817 AUTOMATIC_FLAG,
5818 PRIMARY_UOM_FLAG,
5819 MODIFIER_LEVEL_CODE,
5820 LIST_LINE_NO,
5821 ROUNDING_FACTOR,
5822 CURRENCY_DETAIL_ID,
5823 CURRENCY_HEADER_ID,
5824 SELLING_ROUNDING_FACTOR,
5825 ORDER_CURRENCY,
5826 PRICING_EFFECTIVE_DATE,
5827 PROCESS_CODE,
5828 BASE_CURRENCY_CODE
5829 ,BREAK_UOM_CODE /* Proration */
5830 ,BREAK_UOM_CONTEXT /* Proration */
5831 ,BREAK_UOM_ATTRIBUTE /* Proration */
5832 )
5833 VALUES ( p_LINE_DETAIL_INDEX(i),
5834 p_LINE_DETAIL_TYPE_CODE(i),
5835 p_PRICE_BREAK_TYPE_CODE(i),
5836 p_LINE_INDEX(i),
5837 p_CREATED_FROM_LIST_HEADER_ID(i),
5838 p_CREATED_FROM_LIST_LINE_ID(i),
5839 p_CREATED_FROM_LIST_LINE_TYPE(i),
5840 p_CREATED_FROM_LIST_TYPE_CODE(i),
5841 p_CREATED_FROM_SQL(i),
5842 p_PRICING_GROUP_SEQUENCE(i),
5843 p_PRICING_PHASE_ID(i),
5844 p_OPERAND_CALCULATION_CODE(i),
5845 p_OPERAND_VALUE(i),
5846 p_PRICE_FORMULA_ID(i),
5847 p_PRICING_STATUS_CODE(i),
5848 p_PRICING_STATUS_TEXT(i),
5849 p_PRODUCT_PRECEDENCE(i),
5850 p_INCOMPATABLILITY_GRP_CODE(i),
5851 p_PROCESSED_FLAG(i),
5852 p_APPLIED_FLAG(i),
5853 p_AUTOMATIC_FLAG(i),
5854 p_PRIMARY_UOM_FLAG(i),
5855 p_MODIFIER_LEVEL_CODE(i),
5856 p_LIST_LINE_NO(i),
5857 p_ROUNDING_FACTOR(i),
5858 p_CURRENCY_DETAIL_ID(i),
5859 p_CURRENCY_HEADER_ID(i),
5860 p_SELLING_ROUNDING_FACTOR(i),
5861 p_ORDER_CURRENCY(i),
5862 p_PRICING_EFFECTIVE_DATE(i),
5863 G_STATUS_NEW,
5864 p_BASE_CURRENCY_CODE(i)
5865 ,p_BREAK_UOM_CODE(i) /* Proration */
5866 ,p_BREAK_UOM_CONTEXT(i) /* Proration */
5867 ,p_BREAK_UOM_ATTRIBUTE(i) /* Proration */
5868 );
5869
5870 EXCEPTION
5871 WHEN OTHERS THEN
5872 x_status_code := FND_API.G_RET_STS_ERROR;
5873 x_status_text :=l_routine||' '||SQLERRM;
5874 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
5875 engine_debug(l_routine||' '||SQLERRM);
5876 engine_debug(SQLERRM);
5877 END IF;
5878 END;
5879
5880 /*+----------------------------------------------------------------------
5881 |Procedure Group INSERT_LDETS2_AT
5882 +----------------------------------------------------------------------
5883 */
5884
5885 PROCEDURE INSERT_LDETS2_AT
5886 (p_LINE_DETAIL_INDEX IN PLS_INTEGER_TYPE,
5887 p_LINE_DETAIL_TYPE_CODE IN VARCHAR_TYPE,
5888 p_PRICE_BREAK_TYPE_CODE IN VARCHAR_TYPE,
5889 p_LINE_INDEX IN NUMBER_TYPE,
5890 p_LIST_HEADER_ID IN NUMBER_TYPE,
5891 p_LIST_LINE_ID IN NUMBER_TYPE,
5892 p_LIST_LINE_TYPE_CODE IN VARCHAR_TYPE,
5893 p_LIST_TYPE_CODE IN VARCHAR_TYPE,
5894 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER_TYPE,
5895 p_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
5896 p_OPERAND_CALCULATION_CODE IN VARCHAR_TYPE,
5897 p_OPERAND_VALUE IN VARCHAR_TYPE,
5898 p_SUBSTITUTION_TYPE_CODE IN VARCHAR_TYPE,
5899 p_SUBSTITUTION_VALUE_FROM IN VARCHAR_TYPE,
5900 p_SUBSTITUTION_VALUE_TO IN VARCHAR_TYPE,
5901 p_PRICE_FORMULA_ID IN NUMBER_TYPE,
5902 p_PRODUCT_PRECEDENCE IN PLS_INTEGER_TYPE,
5903 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR_TYPE,
5904 p_APPLIED_FLAG IN VARCHAR_TYPE,
5905 p_AUTOMATIC_FLAG IN VARCHAR_TYPE,
5906 p_OVERRIDE_FLAG IN VARCHAR_TYPE,
5907 p_MODIFIER_LEVEL_CODE IN VARCHAR_TYPE,
5908 p_BENEFIT_QTY IN NUMBER_TYPE,
5909 p_BENEFIT_UOM_CODE IN VARCHAR_TYPE,
5910 p_LIST_LINE_NO IN VARCHAR_TYPE,
5911 p_ACCRUAL_FLAG IN VARCHAR_TYPE,
5912 p_ACCRUAL_CONVERSION_RATE IN NUMBER_TYPE,
5913 p_ESTIM_ACCRUAL_RATE IN NUMBER_TYPE,
5914 p_CHARGE_TYPE_CODE IN VARCHAR_TYPE,
5915 p_CHARGE_SUBTYPE_CODE IN VARCHAR_TYPE,
5916 p_LINE_QUANTITY IN NUMBER_TYPE,
5917 p_UPDATED_FLAG IN VARCHAR_TYPE,
5918 p_CALCULATION_CODE IN VARCHAR_TYPE,
5919 p_CHANGE_REASON_CODE IN VARCHAR_TYPE,
5920 p_CHANGE_REASON_TEXT IN VARCHAR_TYPE,
5921 p_ACCUM_CONTEXT IN VARCHAR_TYPE, -- accum range break
5922 p_ACCUM_ATTRIBUTE IN VARCHAR_TYPE, -- accum range break
5923 p_ACCUM_FLAG IN VARCHAR_TYPE, -- accum range break
5924 p_BREAK_UOM_CODE IN VARCHAR_TYPE, /* Proration*/
5925 p_BREAK_UOM_CONTEXT IN VARCHAR_TYPE, /* Proration*/
5926 p_BREAK_UOM_ATTRIBUTE IN VARCHAR_TYPE, /* Proration*/
5927 x_status_code OUT NOCOPY VARCHAR2,
5928 x_status_text OUT NOCOPY VARCHAR2) AS
5929 PRAGMA AUTONOMOUS_TRANSACTION;
5930 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS2_AT';
5931 l_request_id number;
5932 BEGIN
5933 l_request_id := nvl(SYS_CONTEXT('QP_CONTEXT','request_id'),-9999);
5934 FORALL i in p_line_index.FIRST..p_line_index.LAST
5935 /*INSERT INTO QP_INT_LDETS
5936 (LINE_DETAIL_INDEX,
5937 LINE_DETAIL_TYPE_CODE,
5938 PRICE_BREAK_TYPE_CODE,
5939 LINE_INDEX,
5940 CREATED_FROM_LIST_HEADER_ID,
5941 CREATED_FROM_LIST_LINE_ID,
5942 CREATED_FROM_LIST_LINE_TYPE,
5943 CREATED_FROM_LIST_TYPE_CODE,
5944 PRICING_GROUP_SEQUENCE,
5945 PRICING_PHASE_ID,
5946 OPERAND_CALCULATION_CODE,
5947 OPERAND_VALUE,
5948 SUBSTITUTION_TYPE_CODE,
5949 SUBSTITUTION_VALUE_FROM,
5950 SUBSTITUTION_VALUE_TO,
5951 PRICE_FORMULA_ID,
5952 PRICING_STATUS_CODE,
5953 PRODUCT_PRECEDENCE,
5954 INCOMPATABILITY_GRP_CODE,
5955 APPLIED_FLAG,
5956 AUTOMATIC_FLAG,
5957 OVERRIDE_FLAG,
5958 MODIFIER_LEVEL_CODE,
5959 BENEFIT_QTY,
5960 BENEFIT_UOM_CODE,
5961 LIST_LINE_NO,
5962 ACCRUAL_FLAG,
5963 ACCRUAL_CONVERSION_RATE,
5964 ESTIM_ACCRUAL_RATE,
5965 CHARGE_TYPE_CODE,
5966 CHARGE_SUBTYPE_CODE,
5967 PROCESS_CODE,
5968 LINE_QUANTITY,
5969 UPDATED_FLAG, -- begin shu, fix Bug 2599822
5970 CALCULATION_CODE,
5971 CHANGE_REASON_CODE,
5972 CHANGE_REASON_TEXT,
5973 ACCUM_CONTEXT, -- accum range break
5974 ACCUM_ATTRIBUTE, -- accum range break
5975 ACCUM_ATTR_RUN_SRC_FLAG,
5976 BREAK_UOM_CODE,
5977 BREAK_UOM_CONTEXT,
5978 BREAK_UOM_ATTRIBUTE)
5979 VALUES (
5980 p_LINE_DETAIL_INDEX(i),
5981 'NULL',
5982 p_PRICE_BREAK_TYPE_CODE(i),
5983 p_LINE_INDEX(i),
5984 p_LIST_HEADER_ID(i),
5985 p_LIST_LINE_ID(i),
5986 p_LIST_LINE_TYPE_CODE(i),
5987 p_LIST_TYPE_CODE(i),
5988 p_PRICING_GROUP_SEQUENCE(i),
5989 p_PRICING_PHASE_ID(i),
5990 p_OPERAND_CALCULATION_CODE(i),
5991 p_OPERAND_VALUE(i),
5992 p_SUBSTITUTION_TYPE_CODE(i),
5993 p_SUBSTITUTION_VALUE_FROM(i),
5994 p_SUBSTITUTION_VALUE_TO(i),
5995 p_PRICE_FORMULA_ID(i),
5996 G_STATUS_NEW,
5997 p_PRODUCT_PRECEDENCE(i),
5998 p_INCOMPATABLILITY_GRP_CODE(i),
5999 p_APPLIED_FLAG(i),
6000 p_AUTOMATIC_FLAG(i),
6001 p_OVERRIDE_FLAG(i),
6002 p_MODIFIER_LEVEL_CODE(i),
6003 p_BENEFIT_QTY(i),
6004 p_BENEFIT_UOM_CODE(i),
6005 p_LIST_LINE_NO(i),
6006 p_ACCRUAL_FLAG(i),
6007 p_ACCRUAL_CONVERSION_RATE(i),
6008 p_ESTIM_ACCRUAL_RATE(i),
6009 p_CHARGE_TYPE_CODE(i),
6010 p_CHARGE_SUBTYPE_CODE(i),
6011 G_STATUS_NEW,
6012 p_LINE_QUANTITY(i),
6013 p_UPDATED_FLAG(i),
6014 p_CALCULATION_CODE(i),
6015 p_CHANGE_REASON_CODE(i),
6016 p_CHANGE_REASON_TEXT(i),
6017 p_ACCUM_CONTEXT(i), -- accum range break
6018 p_ACCUM_ATTRIBUTE(i), -- accum range break
6019 p_ACCUM_FLAG(i)
6020 ,p_BREAK_UOM_CODE(i)
6021 ,p_BREAK_UOM_CONTEXT(i)
6022 ,p_BREAK_UOM_ATTRIBUTE(i)
6023 );*/
6024 INSERT INTO QP_INT_LDETS_T
6025 (LINE_DETAIL_INDEX,
6026 LINE_DETAIL_TYPE_CODE,
6027 PRICE_BREAK_TYPE_CODE,
6028 LINE_INDEX,
6029 CREATED_FROM_LIST_HEADER_ID,
6030 CREATED_FROM_LIST_LINE_ID,
6031 CREATED_FROM_LIST_LINE_TYPE,
6032 CREATED_FROM_LIST_TYPE_CODE,
6033 PRICING_GROUP_SEQUENCE,
6034 PRICING_PHASE_ID,
6035 OPERAND_CALCULATION_CODE,
6036 OPERAND_VALUE,
6037 SUBSTITUTION_TYPE_CODE,
6038 SUBSTITUTION_VALUE_FROM,
6039 SUBSTITUTION_VALUE_TO,
6040 PRICE_FORMULA_ID,
6041 PRICING_STATUS_CODE,
6042 PRODUCT_PRECEDENCE,
6043 INCOMPATABILITY_GRP_CODE,
6044 APPLIED_FLAG,
6045 AUTOMATIC_FLAG,
6046 OVERRIDE_FLAG,
6047 MODIFIER_LEVEL_CODE,
6048 BENEFIT_QTY,
6049 BENEFIT_UOM_CODE,
6050 LIST_LINE_NO,
6051 ACCRUAL_FLAG,
6052 ACCRUAL_CONVERSION_RATE,
6053 ESTIM_ACCRUAL_RATE,
6054 CHARGE_TYPE_CODE,
6055 CHARGE_SUBTYPE_CODE,
6056 PROCESS_CODE,
6057 LINE_QUANTITY,
6058 UPDATED_FLAG, -- begin shu, fix Bug 2599822
6059 CALCULATION_CODE,
6060 CHANGE_REASON_CODE,
6061 CHANGE_REASON_TEXT,
6062 ACCUM_CONTEXT, -- accum range break
6063 ACCUM_ATTRIBUTE, -- accum range break
6064 ACCUM_ATTR_RUN_SRC_FLAG,
6065 BREAK_UOM_CODE, /* Proration */
6066 BREAK_UOM_CONTEXT, /* Proration */
6067 BREAK_UOM_ATTRIBUTE, /* Proration */
6068 request_id)
6069 VALUES (
6070 p_LINE_DETAIL_INDEX(i),
6071 'NULL',
6072 p_PRICE_BREAK_TYPE_CODE(i),
6073 p_LINE_INDEX(i),
6074 p_LIST_HEADER_ID(i),
6075 p_LIST_LINE_ID(i),
6076 p_LIST_LINE_TYPE_CODE(i),
6077 p_LIST_TYPE_CODE(i),
6078 p_PRICING_GROUP_SEQUENCE(i),
6079 p_PRICING_PHASE_ID(i),
6080 p_OPERAND_CALCULATION_CODE(i),
6081 p_OPERAND_VALUE(i),
6082 p_SUBSTITUTION_TYPE_CODE(i),
6083 p_SUBSTITUTION_VALUE_FROM(i),
6084 p_SUBSTITUTION_VALUE_TO(i),
6085 p_PRICE_FORMULA_ID(i),
6086 G_STATUS_NEW,
6087 p_PRODUCT_PRECEDENCE(i),
6088 p_INCOMPATABLILITY_GRP_CODE(i),
6089 p_APPLIED_FLAG(i),
6090 p_AUTOMATIC_FLAG(i),
6091 p_OVERRIDE_FLAG(i),
6092 p_MODIFIER_LEVEL_CODE(i),
6093 p_BENEFIT_QTY(i),
6094 p_BENEFIT_UOM_CODE(i),
6095 p_LIST_LINE_NO(i),
6096 p_ACCRUAL_FLAG(i),
6097 p_ACCRUAL_CONVERSION_RATE(i),
6098 p_ESTIM_ACCRUAL_RATE(i),
6099 p_CHARGE_TYPE_CODE(i),
6100 p_CHARGE_SUBTYPE_CODE(i),
6101 G_STATUS_NEW,
6102 p_LINE_QUANTITY(i),
6103 p_UPDATED_FLAG(i),
6104 p_CALCULATION_CODE(i),
6105 p_CHANGE_REASON_CODE(i),
6106 p_CHANGE_REASON_TEXT(i),
6107 p_ACCUM_CONTEXT(i), -- accum range break
6108 p_ACCUM_ATTRIBUTE(i), -- accum range break
6109 p_ACCUM_FLAG(i)
6110 ,p_BREAK_UOM_CODE(i) /* Proration */
6111 ,p_BREAK_UOM_CONTEXT(i) /* Proration */
6112 ,p_BREAK_UOM_ATTRIBUTE(i), /* Proration */
6113 l_request_id
6114 );
6115 QP_PREQ_GRP.G_INT_LDETS_NO := QP_PREQ_GRP.G_INT_LDETS_NO + p_LINE_DETAIL_INDEX.count;
6116 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
6117 QP_PREQ_GRP.engine_debug('QP_PREQ_GRP.G_INT_LDETS_NO='||QP_PREQ_GRP.G_INT_LDETS_NO);
6118 END IF;
6119
6120 COMMIT;
6121 EXCEPTION
6122 WHEN OTHERS THEN
6123 x_status_code := FND_API.G_RET_STS_ERROR;
6124 x_status_text :=l_routine||' '||SQLERRM;
6125 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
6126 QP_PREQ_GRP.engine_debug(l_routine||' '||SQLERRM);
6127 QP_PREQ_GRP.engine_debug(SQLERRM);
6128 END IF;
6129 END;
6130
6131 /*+----------------------------------------------------------------------
6132 |Procedure Group INSERT_LDETS2
6133 +----------------------------------------------------------------------
6134 */
6135
6136 PROCEDURE INSERT_LDETS2
6137 (p_LINE_DETAIL_INDEX IN PLS_INTEGER_TYPE,
6138 p_LINE_DETAIL_TYPE_CODE IN VARCHAR_TYPE,
6139 p_PRICE_BREAK_TYPE_CODE IN VARCHAR_TYPE,
6140 p_LINE_INDEX IN NUMBER_TYPE,
6141 p_LIST_HEADER_ID IN NUMBER_TYPE,
6142 p_LIST_LINE_ID IN NUMBER_TYPE,
6143 p_LIST_LINE_TYPE_CODE IN VARCHAR_TYPE,
6144 p_LIST_TYPE_CODE IN VARCHAR_TYPE,
6145 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER_TYPE,
6146 p_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
6147 p_OPERAND_CALCULATION_CODE IN VARCHAR_TYPE,
6148 p_OPERAND_VALUE IN VARCHAR_TYPE,
6149 p_SUBSTITUTION_TYPE_CODE IN VARCHAR_TYPE,
6150 p_SUBSTITUTION_VALUE_FROM IN VARCHAR_TYPE,
6151 p_SUBSTITUTION_VALUE_TO IN VARCHAR_TYPE,
6152 p_PRICE_FORMULA_ID IN NUMBER_TYPE,
6153 p_PRODUCT_PRECEDENCE IN PLS_INTEGER_TYPE,
6154 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR_TYPE,
6155 p_APPLIED_FLAG IN VARCHAR_TYPE,
6156 p_AUTOMATIC_FLAG IN VARCHAR_TYPE,
6157 p_OVERRIDE_FLAG IN VARCHAR_TYPE,
6158 p_MODIFIER_LEVEL_CODE IN VARCHAR_TYPE,
6159 p_BENEFIT_QTY IN NUMBER_TYPE,
6160 p_BENEFIT_UOM_CODE IN VARCHAR_TYPE,
6161 p_SERVICE_DURATION IN NUMBER_TYPE, -- SERVICE PROJECT
6162 p_SERVICE_PERIOD IN VARCHAR_TYPE, -- SERVICE PROJECT
6163 p_LIST_LINE_NO IN VARCHAR_TYPE,
6164 p_ACCRUAL_FLAG IN VARCHAR_TYPE,
6165 p_ACCRUAL_CONVERSION_RATE IN NUMBER_TYPE,
6166 p_ESTIM_ACCRUAL_RATE IN NUMBER_TYPE,
6167 p_CHARGE_TYPE_CODE IN VARCHAR_TYPE,
6168 p_CHARGE_SUBTYPE_CODE IN VARCHAR_TYPE,
6169 p_LINE_QUANTITY IN NUMBER_TYPE,
6170 p_UPDATED_FLAG IN VARCHAR_TYPE,
6171 p_CALCULATION_CODE IN VARCHAR_TYPE,
6172 p_CHANGE_REASON_CODE IN VARCHAR_TYPE,
6173 p_CHANGE_REASON_TEXT IN VARCHAR_TYPE,
6174 p_ACCUM_CONTEXT IN VARCHAR_TYPE, -- accum range break
6175 p_ACCUM_ATTRIBUTE IN VARCHAR_TYPE, -- accum range break
6176 p_ACCUM_FLAG IN VARCHAR_TYPE, -- accum range break
6177 p_BREAK_UOM_CODE IN VARCHAR_TYPE, /* Proration*/
6178 p_BREAK_UOM_CONTEXT IN VARCHAR_TYPE, /* Proration*/
6179 p_BREAK_UOM_ATTRIBUTE IN VARCHAR_TYPE, /* Proration*/
6180 x_status_code OUT NOCOPY VARCHAR2,
6181 x_status_text OUT NOCOPY VARCHAR2) AS
6182
6183 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS2';
6184 --added by yangli for Java Engine project
6185 l_debug varchar2(3);
6186 --added by yangli for Java Engine project
6187 BEGIN
6188 --added by yangli for Java Engine project
6189 -- Set the global variable G_DEBUG_ENGINE
6190 QP_PREQ_GRP.Set_QP_Debug;
6191
6192 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
6193
6194 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
6195 IF l_debug = FND_API.G_TRUE THEN
6196 ENGINE_DEBUG('Java Engine not Installed ----------');
6197 END IF;
6198 --added by yangli for Java Engine project
6199
6200 FORALL i in p_line_index.FIRST..p_line_index.LAST
6201 INSERT INTO qp_npreq_ldets_tmp
6202 (LINE_DETAIL_INDEX,
6203 LINE_DETAIL_TYPE_CODE,
6204 PRICE_BREAK_TYPE_CODE,
6205 LINE_INDEX,
6206 CREATED_FROM_LIST_HEADER_ID,
6207 CREATED_FROM_LIST_LINE_ID,
6208 CREATED_FROM_LIST_LINE_TYPE,
6209 CREATED_FROM_LIST_TYPE_CODE,
6210 PRICING_GROUP_SEQUENCE,
6211 PRICING_PHASE_ID,
6212 OPERAND_CALCULATION_CODE,
6213 OPERAND_VALUE,
6214 SUBSTITUTION_TYPE_CODE,
6215 SUBSTITUTION_VALUE_FROM,
6216 SUBSTITUTION_VALUE_TO,
6217 PRICE_FORMULA_ID,
6218 PRICING_STATUS_CODE,
6219 PRODUCT_PRECEDENCE,
6220 INCOMPATABILITY_GRP_CODE,
6221 APPLIED_FLAG,
6222 AUTOMATIC_FLAG,
6223 OVERRIDE_FLAG,
6224 MODIFIER_LEVEL_CODE,
6225 BENEFIT_QTY,
6226 BENEFIT_UOM_CODE,
6227 SERVICE_DURATION, -- SERVICE PROJECT
6228 SERVICE_PERIOD, -- SERVICE PROJECT
6229 LIST_LINE_NO,
6230 ACCRUAL_FLAG,
6231 ACCRUAL_CONVERSION_RATE,
6232 ESTIM_ACCRUAL_RATE,
6233 CHARGE_TYPE_CODE,
6234 CHARGE_SUBTYPE_CODE,
6235 PROCESS_CODE,
6236 LINE_QUANTITY,
6237 UPDATED_FLAG, -- begin shu, fix Bug 2599822
6238 CALCULATION_CODE,
6239 CHANGE_REASON_CODE,
6240 CHANGE_REASON_TEXT,
6241 ACCUM_CONTEXT, -- accum range break
6242 ACCUM_ATTRIBUTE, -- accum range break
6243 ACCUM_ATTR_RUN_SRC_FLAG
6244 ,BREAK_UOM_CODE /* Proration */
6245 ,BREAK_UOM_CONTEXT /* Proration */
6246 ,BREAK_UOM_ATTRIBUTE /* Proration */
6247 )
6248 VALUES (
6249 p_LINE_DETAIL_INDEX(i),
6250 'NULL',
6251 p_PRICE_BREAK_TYPE_CODE(i),
6252 p_LINE_INDEX(i),
6253 p_LIST_HEADER_ID(i),
6254 p_LIST_LINE_ID(i),
6255 p_LIST_LINE_TYPE_CODE(i),
6256 p_LIST_TYPE_CODE(i),
6257 p_PRICING_GROUP_SEQUENCE(i),
6258 p_PRICING_PHASE_ID(i),
6259 p_OPERAND_CALCULATION_CODE(i),
6260 p_OPERAND_VALUE(i),
6261 p_SUBSTITUTION_TYPE_CODE(i),
6262 p_SUBSTITUTION_VALUE_FROM(i),
6263 p_SUBSTITUTION_VALUE_TO(i),
6264 p_PRICE_FORMULA_ID(i),
6265 G_STATUS_NEW,
6266 p_PRODUCT_PRECEDENCE(i),
6267 p_INCOMPATABLILITY_GRP_CODE(i),
6268 p_APPLIED_FLAG(i),
6269 p_AUTOMATIC_FLAG(i),
6270 p_OVERRIDE_FLAG(i),
6271 p_MODIFIER_LEVEL_CODE(i),
6272 p_BENEFIT_QTY(i),
6273 p_BENEFIT_UOM_CODE(i),
6274 p_SERVICE_DURATION(i), -- SERVICE PROJECT
6275 p_SERVICE_PERIOD(i), -- SERVICE PROJECT
6276 p_LIST_LINE_NO(i),
6277 p_ACCRUAL_FLAG(i),
6278 p_ACCRUAL_CONVERSION_RATE(i),
6279 p_ESTIM_ACCRUAL_RATE(i),
6280 p_CHARGE_TYPE_CODE(i),
6281 p_CHARGE_SUBTYPE_CODE(i),
6282 G_STATUS_NEW,
6283 p_LINE_QUANTITY(i),
6284 p_UPDATED_FLAG(i),
6285 p_CALCULATION_CODE(i),
6286 p_CHANGE_REASON_CODE(i),
6287 p_CHANGE_REASON_TEXT(i),
6288 p_ACCUM_CONTEXT(i), -- accum range break
6289 p_ACCUM_ATTRIBUTE(i), -- accum range break
6290 p_ACCUM_FLAG(i)
6291 ,p_BREAK_UOM_CODE(i) /* Proration */
6292 ,p_BREAK_UOM_CONTEXT(i) /* Proration */
6293 ,p_BREAK_UOM_ATTRIBUTE(i) /* Proration */
6294 );
6295 --added by yangli for Java Engine project
6296 ELSE
6297 IF l_debug = FND_API.G_TRUE THEN
6298 ENGINE_DEBUG('Java Engine Installed ----------');
6299 END IF;
6300 QP_PREQ_GRP.INSERT_LDETS2_AT
6301 (p_LINE_DETAIL_INDEX ,
6302 p_LINE_DETAIL_TYPE_CODE ,
6303 p_PRICE_BREAK_TYPE_CODE ,
6304 p_LINE_INDEX ,
6305 p_LIST_HEADER_ID ,
6306 p_LIST_LINE_ID ,
6307 p_LIST_LINE_TYPE_CODE ,
6308 p_LIST_TYPE_CODE ,
6309 p_PRICING_GROUP_SEQUENCE ,
6310 p_PRICING_PHASE_ID ,
6311 p_OPERAND_CALCULATION_CODE ,
6312 p_OPERAND_VALUE ,
6313 p_SUBSTITUTION_TYPE_CODE ,
6314 p_SUBSTITUTION_VALUE_FROM ,
6315 p_SUBSTITUTION_VALUE_TO ,
6316 p_PRICE_FORMULA_ID ,
6317 p_PRODUCT_PRECEDENCE ,
6318 p_INCOMPATABLILITY_GRP_CODE ,
6319 p_APPLIED_FLAG ,
6320 p_AUTOMATIC_FLAG ,
6321 p_OVERRIDE_FLAG ,
6322 p_MODIFIER_LEVEL_CODE ,
6323 p_BENEFIT_QTY ,
6324 p_BENEFIT_UOM_CODE ,
6325 p_LIST_LINE_NO ,
6326
6327 p_ACCRUAL_FLAG ,
6328
6329 p_ACCRUAL_CONVERSION_RATE ,
6330 p_ESTIM_ACCRUAL_RATE ,
6331
6332 p_CHARGE_TYPE_CODE ,
6333 p_CHARGE_SUBTYPE_CODE ,
6334 p_LINE_QUANTITY ,
6335 p_UPDATED_FLAG ,
6336 p_CALCULATION_CODE ,
6337 p_CHANGE_REASON_CODE ,
6338 p_CHANGE_REASON_TEXT ,
6339 p_ACCUM_CONTEXT, -- accum range break
6340 p_ACCUM_ATTRIBUTE, -- accum range break
6341 p_ACCUM_FLAG,
6342 p_BREAK_UOM_CODE, /* Proration */
6343 p_BREAK_UOM_CONTEXT, /* Proration */
6344 p_BREAK_UOM_ATTRIBUTE, /* Proration */
6345 x_status_code ,
6346 x_status_text );
6347 END IF;
6348 --added by yangli for Java Engine project
6349
6350 EXCEPTION
6351 WHEN OTHERS THEN
6352 x_status_code := FND_API.G_RET_STS_ERROR;
6353 x_status_text :=l_routine||' '||SQLERRM;
6354 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
6355 engine_debug(l_routine||' '||SQLERRM);
6356 engine_debug(SQLERRM);
6357 END IF;
6358 END;
6359
6360 /*+----------------------------------------------------------------------
6361 |Procedure INSERT_LDETS_PVT
6362 +----------------------------------------------------------------------
6363 */
6364 PROCEDURE INSERT_LDETS_PVT
6365 (p_LINE_DETAIL_INDEX IN PLS_INTEGER_TYPE,
6366 p_LINE_DETAIL_TYPE_CODE IN VARCHAR_TYPE,
6367 p_PRICE_BREAK_TYPE_CODE IN VARCHAR_TYPE,
6368 p_LINE_INDEX IN PLS_INTEGER_TYPE,
6369 p_CREATED_FROM_LIST_HEADER_ID IN NUMBER_TYPE,
6370 p_CREATED_FROM_LIST_LINE_ID IN NUMBER_TYPE,
6371 p_CREATED_FROM_LIST_LINE_TYPE IN VARCHAR_TYPE,
6372 p_CREATED_FROM_LIST_TYPE_CODE IN VARCHAR_TYPE,
6373 p_CREATED_FROM_SQL IN VARCHAR_TYPE,
6374 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER_TYPE,
6375 P_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
6376 p_OPERAND_CALCULATION_CODE IN VARCHAR_TYPE,
6377 p_OPERAND_VALUE IN VARCHAR_TYPE,
6378 p_NET_AMOUNT_FLAG IN VARCHAR_TYPE, --2720717, net_amount
6379 p_ASK_FOR_FLAG IN VARCHAR_TYPE,
6380 p_PRICE_FORMULA_ID IN NUMBER_TYPE,
6381 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
6382 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE,
6383 p_PRODUCT_PRECEDENCE IN PLS_INTEGER_TYPE,
6384 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR_TYPE,
6385 p_PROCESSED_FLAG IN VARCHAR_TYPE,
6386 p_APPLIED_FLAG IN VARCHAR_TYPE,
6387 p_AUTOMATIC_FLAG IN VARCHAR_TYPE,
6388 p_OVERRIDE_FLAG IN VARCHAR_TYPE,
6389 p_PRIMARY_UOM_FLAG IN VARCHAR_TYPE,
6390 p_MODIFIER_LEVEL_CODE IN VARCHAR_TYPE,
6391 p_BENEFIT_QTY IN NUMBER_TYPE,
6392 p_BENEFIT_UOM_CODE IN VARCHAR_TYPE,
6393 p_SERVICE_DURATION IN NUMBER_TYPE, -- SERVICE PROJECT
6394 p_SERVICE_PERIOD IN VARCHAR_TYPE, -- SERVICE PROJECT
6395 p_LIST_LINE_NO IN VARCHAR_TYPE,
6396 p_ACCRUAL_FLAG IN VARCHAR_TYPE,
6397 p_ACCRUAL_CONVERSION_RATE IN NUMBER_TYPE,
6398 p_ESTIM_ACCRUAL_RATE IN NUMBER_TYPE,
6399 p_HEADER_LIMIT_EXISTS IN VARCHAR_TYPE,
6400 p_LINE_LIMIT_EXISTS IN VARCHAR_TYPE,
6401 p_CHARGE_TYPE_CODE IN VARCHAR_TYPE,
6402 p_CHARGE_SUBTYPE_CODE IN VARCHAR_TYPE,
6403 p_ACCUM_CONTEXT IN VARCHAR_TYPE, -- accum range break
6404 p_ACCUM_ATTRIBUTE IN VARCHAR_TYPE, -- accum range break
6405 p_ACCUM_FLAG IN VARCHAR_TYPE, -- accum range break
6406 x_status_code OUT NOCOPY VARCHAR2,
6407 x_status_text OUT NOCOPY VARCHAR2)
6408 AS
6409 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS_PVT';
6410
6411 BEGIN
6412
6413 FORALL i in p_line_index.FIRST..p_line_index.LAST
6414 INSERT INTO qp_npreq_ldets_tmp
6415 (LINE_DETAIL_INDEX,
6416 LINE_DETAIL_TYPE_CODE,
6417 PRICE_BREAK_TYPE_CODE,
6418 LINE_INDEX,
6419 CREATED_FROM_LIST_HEADER_ID,
6420 CREATED_FROM_LIST_LINE_ID,
6421 CREATED_FROM_LIST_LINE_TYPE,
6422 CREATED_FROM_LIST_TYPE_CODE,
6423 CREATED_FROM_SQL,
6424 PRICING_GROUP_SEQUENCE,
6425 PRICING_PHASE_ID,
6426 OPERAND_CALCULATION_CODE,
6427 OPERAND_VALUE,
6428 NET_AMOUNT_FLAG, --2720717, net_amount
6429 ASK_FOR_FLAG,
6430 PRICE_FORMULA_ID,
6431 PRICING_STATUS_CODE,
6432 PRICING_STATUS_TEXT,
6433 PRODUCT_PRECEDENCE,
6434 INCOMPATABILITY_GRP_CODE,
6435 PROCESSED_FLAG,
6436 APPLIED_FLAG,
6437 AUTOMATIC_FLAG,
6438 OVERRIDE_FLAG,
6439 PRIMARY_UOM_FLAG,
6440 MODIFIER_LEVEL_CODE,
6441 BENEFIT_QTY,
6442 BENEFIT_UOM_CODE,
6443 SERVICE_DURATION, -- SERVICE PROJECT
6444 SERVICE_PERIOD, -- SERVICE PROJECT
6445 LIST_LINE_NO,
6446 ACCRUAL_FLAG,
6447 ACCRUAL_CONVERSION_RATE,
6448 ESTIM_ACCRUAL_RATE,
6449 HEADER_LIMIT_EXISTS,
6450 LINE_LIMIT_EXISTS,
6451 PROCESS_CODE,
6452 CHARGE_TYPE_CODE,
6453 CHARGE_SUBTYPE_CODE,
6454 ACCUM_CONTEXT,
6455 ACCUM_ATTRIBUTE,
6456 ACCUM_ATTR_RUN_SRC_FLAG)
6457 VALUES ( p_LINE_DETAIL_INDEX(i),
6458 p_LINE_DETAIL_TYPE_CODE(i),
6459 p_PRICE_BREAK_TYPE_CODE(i),
6460 p_LINE_INDEX(i),
6461 p_CREATED_FROM_LIST_HEADER_ID(i),
6462 p_CREATED_FROM_LIST_LINE_ID(i),
6463 p_CREATED_FROM_LIST_LINE_TYPE(i),
6464 p_CREATED_FROM_LIST_TYPE_CODE(i),
6465 p_CREATED_FROM_SQL(i),
6466 p_PRICING_GROUP_SEQUENCE(i),
6467 p_PRICING_PHASE_ID(i),
6468 p_OPERAND_CALCULATION_CODE(i),
6469 p_OPERAND_VALUE(i),
6470 p_NET_AMOUNT_FLAG(i), --2720717, net_amount
6471 p_ASK_FOR_FLAG(i),
6472 p_PRICE_FORMULA_ID(i),
6473 p_PRICING_STATUS_CODE(i),
6474 p_PRICING_STATUS_TEXT(i),
6475 p_PRODUCT_PRECEDENCE(i),
6476 p_INCOMPATABLILITY_GRP_CODE(i),
6477 p_PROCESSED_FLAG(i),
6478 p_APPLIED_FLAG(i),
6479 p_AUTOMATIC_FLAG(i),
6480 p_OVERRIDE_FLAG(i),
6481 p_PRIMARY_UOM_FLAG(i),
6482 p_MODIFIER_LEVEL_CODE(i),
6483 p_BENEFIT_QTY(i),
6484 p_BENEFIT_UOM_CODE(i),
6485 p_SERVICE_DURATION(i), -- SERVICE PROJECT
6486 p_SERVICE_PERIOD(i), -- SERVICE PROJECT
6487 p_LIST_LINE_NO(i),
6488 p_ACCRUAL_FLAG(i),
6489 p_ACCRUAL_CONVERSION_RATE(i),
6490 p_ESTIM_ACCRUAL_RATE(i),
6491 decode(p_HEADER_LIMIT_EXISTS(i),'Y','Y',decode(p_LINE_LIMIT_EXISTS(i),'Y','Y','N')),
6492 p_LINE_LIMIT_EXISTS(i),
6493 G_STATUS_NEW,
6494 p_CHARGE_TYPE_CODE(i),
6495 p_CHARGE_SUBTYPE_CODE(i),
6496 p_ACCUM_CONTEXT(i),
6497 p_ACCUM_ATTRIBUTE(i),
6498 p_ACCUM_FLAG(i));
6499 EXCEPTION
6500 WHEN OTHERS THEN
6501 x_status_code := FND_API.G_RET_STS_ERROR;
6502 x_status_text :=l_routine||' '||SQLERRM;
6503 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
6504 engine_debug(l_routine||' '||SQLERRM);
6505 engine_debug(SQLERRM);
6506 END IF;
6507 END;
6508
6509 /*+----------------------------------------------------------------------
6510 |Procedure Public INSERT_LDETS2_AT
6511 +----------------------------------------------------------------------
6512 */
6513 PROCEDURE INSERT_LDETS2_AT
6514 (p_LINE_DETAIL_index IN PLS_INTEGER_TYPE,
6515 p_LINE_DETAIL_TYPE_CODE IN VARCHAR_TYPE,
6516 p_PRICE_BREAK_TYPE_CODE IN VARCHAR_TYPE,
6517 p_LIST_PRICE IN NUMBER_TYPE,
6518 p_LINE_INDEX IN PLS_INTEGER_TYPE,
6519 p_CREATED_FROM_LIST_HEADER_ID IN NUMBER_TYPE,
6520 p_CREATED_FROM_LIST_LINE_ID IN NUMBER_TYPE,
6521 p_CREATED_FROM_LIST_LINE_TYPE IN VARCHAR_TYPE,
6522 p_CREATED_FROM_LIST_TYPE_CODE IN VARCHAR_TYPE,
6523 p_CREATED_FROM_SQL IN VARCHAR_TYPE,
6524 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER_TYPE,
6525 P_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
6526 p_OPERAND_CALCULATION_CODE IN VARCHAR_TYPE,
6527 p_OPERAND_VALUE IN VARCHAR_TYPE,
6528 p_SUBSTITUTION_TYPE_CODE IN VARCHAR_TYPE,
6529 p_SUBSTITUTION_VALUE_FROM IN VARCHAR_TYPE,
6530 p_SUBSTITUTION_VALUE_TO IN VARCHAR_TYPE,
6531 p_ASK_FOR_FLAG IN VARCHAR_TYPE,
6532 p_PRICE_FORMULA_ID IN NUMBER_TYPE,
6533 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
6534 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE,
6535 p_PRODUCT_PRECEDENCE IN PLS_INTEGER_TYPE,
6536 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR_TYPE,
6537 p_PROCESSED_FLAG IN VARCHAR_TYPE,
6538 p_APPLIED_FLAG IN VARCHAR_TYPE,
6539 p_AUTOMATIC_FLAG IN VARCHAR_TYPE,
6540 p_OVERRIDE_FLAG IN VARCHAR_TYPE,
6541 p_PRIMARY_UOM_FLAG IN VARCHAR_TYPE,
6542 p_PRINT_ON_INVOICE_FLAG IN VARCHAR_TYPE,
6543 p_MODIFIER_LEVEL_CODE IN VARCHAR_TYPE,
6544 p_BENEFIT_QTY IN NUMBER_TYPE,
6545 p_BENEFIT_UOM_CODE IN VARCHAR_TYPE,
6546 p_LIST_LINE_NO IN VARCHAR_TYPE,
6547 p_ACCRUAL_FLAG IN VARCHAR_TYPE,
6548 p_ACCRUAL_CONVERSION_RATE IN NUMBER_TYPE,
6549 p_ESTIM_ACCRUAL_RATE IN NUMBER_TYPE,
6550 p_RECURRING_FLAG IN VARCHAR_TYPE,
6551 p_SELECTED_VOLUME_ATTR IN VARCHAR_TYPE,
6552 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
6553 p_HEADER_LIMIT_EXISTS IN VARCHAR_TYPE,
6554 p_LINE_LIMIT_EXISTS IN VARCHAR_TYPE,
6555 p_CHARGE_TYPE_CODE IN VARCHAR_TYPE,
6556 p_CHARGE_SUBTYPE_CODE IN VARCHAR_TYPE,
6557 p_CURRENCY_DETAIL_ID IN NUMBER_TYPE,
6558 p_CURRENCY_HEADER_ID IN NUMBER_TYPE,
6559 p_SELLING_ROUNDING_FACTOR IN NUMBER_TYPE,
6560 p_ORDER_CURRENCY IN VARCHAR_TYPE,
6561 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE,
6562 p_BASE_CURRENCY_CODE IN VARCHAR_TYPE,
6563 p_LINE_QUANTITY IN NUMBER_TYPE,
6564 p_UPDATED_FLAG IN VARCHAR_TYPE,
6565 p_CALCULATION_CODE IN VARCHAR_TYPE,
6566 p_CHANGE_REASON_CODE IN VARCHAR_TYPE,
6567 p_CHANGE_REASON_TEXT IN VARCHAR_TYPE,
6568 p_PRICE_ADJUSTMENT_ID IN NUMBER_TYPE, -- bug 3099847
6569 p_ACCUM_CONTEXT IN VARCHAR_TYPE, -- accum range break
6570 p_ACCUM_ATTRIBUTE IN VARCHAR_TYPE, -- accum range break
6571 p_ACCUM_FLAG IN VARCHAR_TYPE, -- accum range break
6572 p_BREAK_UOM_CODE IN VARCHAR_TYPE, /* Proration*/
6573 p_BREAK_UOM_CONTEXT IN VARCHAR_TYPE, /* Proration*/
6574 p_BREAK_UOM_ATTRIBUTE IN VARCHAR_TYPE, /* Proration*/
6575 p_PROCESS_CODE IN VARCHAR_TYPE, -- 3215497
6576 x_status_code OUT NOCOPY VARCHAR2,
6577 x_status_text OUT NOCOPY VARCHAR2)
6578 AS
6579 PRAGMA AUTONOMOUS_TRANSACTION;
6580 l_request_id number;
6581 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS2';
6582 BEGIN
6583 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
6584 QP_PREQ_GRP.engine_debug('G_LINE_DETAIL_INDEX b4 insert_ldets2 '||G_LINE_DETAIL_INDEX);
6585 QP_PREQ_GRP.engine_debug('current request_id: '||sys_context('qp_context','request_id'));
6586 END IF;
6587 l_request_id := nvl(SYS_CONTEXT('QP_CONTEXT','request_id'),-9999);
6588
6589 FORALL i in p_line_index.FIRST..p_line_index.LAST
6590 INSERT INTO QP_INT_LDETS_T
6591 ( LINE_DETAIL_INDEX,
6592 LINE_DETAIL_TYPE_CODE,
6593 PRICE_BREAK_TYPE_CODE,
6594 LINE_INDEX,
6595 CREATED_FROM_LIST_HEADER_ID,
6596 CREATED_FROM_LIST_LINE_ID,
6597 CREATED_FROM_LIST_LINE_TYPE,
6598 CREATED_FROM_LIST_TYPE_CODE,
6599 CREATED_FROM_SQL,
6600 PRICING_GROUP_SEQUENCE,
6601 PRICING_PHASE_ID,
6602 OPERAND_CALCULATION_CODE,
6603 OPERAND_VALUE,
6604 SUBSTITUTION_TYPE_CODE,
6605 SUBSTITUTION_VALUE_FROM,
6606 SUBSTITUTION_VALUE_TO,
6607 ASK_FOR_FLAG,
6608 PRICE_FORMULA_ID,
6609 PRICING_STATUS_CODE,
6610 PRICING_STATUS_TEXT,
6611 PRODUCT_PRECEDENCE,
6612 INCOMPATABILITY_GRP_CODE,
6613 PROCESSED_FLAG,
6614 APPLIED_FLAG,
6615 AUTOMATIC_FLAG,
6616 OVERRIDE_FLAG,
6617 PRINT_ON_INVOICE_FLAG,
6618 PRIMARY_UOM_FLAG,
6619 MODIFIER_LEVEL_CODE,
6620 BENEFIT_QTY,
6621 BENEFIT_UOM_CODE,
6622 LIST_LINE_NO,
6623 ACCRUAL_FLAG,
6624 ACCRUAL_CONVERSION_RATE,
6625 ESTIM_ACCRUAL_RATE,
6626 RECURRING_FLAG,
6627 SELECTED_VOLUME_ATTR,
6628 ROUNDING_FACTOR,
6629 HEADER_LIMIT_EXISTS,
6630 LINE_LIMIT_EXISTS,
6631 CHARGE_TYPE_CODE,
6632 CHARGE_SUBTYPE_CODE,
6633 CURRENCY_DETAIL_ID, /*sunilpandey */
6634 CURRENCY_HEADER_ID, /*vivek */
6635 SELLING_ROUNDING_FACTOR, /*vivek */
6636 ORDER_CURRENCY, /*vivek */
6637 PRICING_EFFECTIVE_DATE,/*vivek */
6638 BASE_CURRENCY_CODE,/*vivek */
6639 PROCESS_CODE,
6640 LINE_QUANTITY,
6641 UPDATED_FLAG, -- begin shu fix bug 2599822
6642 CALCULATION_CODE,
6643 CHANGE_REASON_CODE,
6644 CHANGE_REASON_TEXT, -- end shu fix bug 2599822
6645 PRICE_ADJUSTMENT_ID, -- bug 3099847
6646 ACCUM_CONTEXT, -- accum range break
6647 ACCUM_ATTRIBUTE, -- accum range break
6648 ACCUM_ATTR_RUN_SRC_FLAG, -- accum range break
6649 BREAK_UOM_CODE, /* Proration */
6650 BREAK_UOM_CONTEXT, /* Proration */
6651 BREAK_UOM_ATTRIBUTE, /* Proration */
6652 request_id
6653 )
6654 VALUES ( p_LINE_DETAIL_INDEX(i),
6655 p_LINE_DETAIL_TYPE_CODE(i),
6656 p_PRICE_BREAK_TYPE_CODE(i),
6657 p_LINE_INDEX(i),
6658 p_CREATED_FROM_LIST_HEADER_ID(i),
6659 p_CREATED_FROM_LIST_LINE_ID(i),
6660 p_CREATED_FROM_LIST_LINE_TYPE(i),
6661 p_CREATED_FROM_LIST_TYPE_CODE(i),
6662 p_CREATED_FROM_SQL(i),
6663 p_PRICING_GROUP_SEQUENCE(i),
6664 p_PRICING_PHASE_ID(i),
6665 p_OPERAND_CALCULATION_CODE(i),
6666 p_OPERAND_VALUE(i),
6667 p_SUBSTITUTION_TYPE_CODE(i),
6668 p_SUBSTITUTION_VALUE_FROM(i),
6669 p_SUBSTITUTION_VALUE_TO(i),
6670 p_ASK_FOR_FLAG(i),
6671 p_PRICE_FORMULA_ID(i),
6672 p_PRICING_STATUS_CODE(i),
6673 p_PRICING_STATUS_TEXT(i),
6674 p_PRODUCT_PRECEDENCE(i),
6675 p_INCOMPATABLILITY_GRP_CODE(i),
6676 p_PROCESSED_FLAG(i),
6677 p_APPLIED_FLAG(i),
6678 p_AUTOMATIC_FLAG(i),
6679 p_OVERRIDE_FLAG(i),
6680 p_PRINT_ON_INVOICE_FLAG(i),
6681 p_PRIMARY_UOM_FLAG(i),
6682 p_MODIFIER_LEVEL_CODE(i),
6683 p_BENEFIT_QTY(i),
6684 p_BENEFIT_UOM_CODE(i),
6685 p_LIST_LINE_NO(i),
6686 p_ACCRUAL_FLAG(i),
6687 p_ACCRUAL_CONVERSION_RATE(i),
6688 p_ESTIM_ACCRUAL_RATE(i),
6689 p_RECURRING_FLAG(i),
6690 p_SELECTED_VOLUME_ATTR(i),
6691 p_ROUNDING_FACTOR(i),
6692 decode(p_HEADER_LIMIT_EXISTS(i),'Y','Y',decode(p_LINE_LIMIT_EXISTS(i),'Y','Y','N')),
6693 p_LINE_LIMIT_EXISTS(i),
6694 p_CHARGE_TYPE_CODE(i),
6695 p_CHARGE_SUBTYPE_CODE(i),
6696 p_CURRENCY_DETAIL_ID(i), /* sunilpandey */
6697 p_CURRENCY_HEADER_ID(i), /* vivek */
6698 p_SELLING_ROUNDING_FACTOR(i), /* vivek */
6699 p_ORDER_CURRENCY(i), /* vivek */
6700 p_PRICING_EFFECTIVE_DATE(i), /* vivek */
6701 p_BASE_CURRENCY_CODE(i), /* vivek */
6702 p_PROCESS_CODE(i), -- 3215497, changed from G_STATUS_NEW
6703 p_LINE_QUANTITY(i),
6704 p_UPDATED_FLAG(i), -- begin shu fix bug 2599822
6705 p_CALCULATION_CODE(i),
6706 p_CHANGE_REASON_CODE(i),
6707 p_CHANGE_REASON_TEXT(i), -- end shu fix bug 2599822
6708 p_PRICE_ADJUSTMENT_ID(i), -- bug 3099847
6709 p_ACCUM_CONTEXT(i), -- accum range break
6710 p_ACCUM_ATTRIBUTE(i), -- accum range break
6711 p_ACCUM_FLAG(i), -- accum range break
6712 p_BREAK_UOM_CODE(i), /* Proration */
6713 p_BREAK_UOM_CONTEXT(i), /* Proration */
6714 p_BREAK_UOM_ATTRIBUTE(i), /* Proration */
6715 l_request_id
6716 );
6717 QP_PREQ_GRP.G_INT_LDETS_NO := QP_PREQ_GRP.G_INT_LDETS_NO + p_LINE_DETAIL_INDEX.count;
6718 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
6719 QP_PREQ_GRP.engine_debug('QP_PREQ_GRP.G_INT_LDETS_NO='||QP_PREQ_GRP.G_INT_LDETS_NO);
6720 END IF;
6721 COMMIT;
6722
6723 EXCEPTION
6724 WHEN OTHERS THEN
6725 x_status_code := FND_API.G_RET_STS_ERROR;
6726 x_status_text :=l_routine||' '||SQLERRM;
6727 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
6728 QP_PREQ_GRP.engine_debug(l_routine||' '||SQLERRM);
6729 QP_PREQ_GRP.engine_debug(SQLERRM);
6730 END IF;
6731 END;
6732
6733 /*+----------------------------------------------------------------------
6734 |Procedure Public INSERT_LDETS2
6735 +----------------------------------------------------------------------
6736 */
6737 PROCEDURE INSERT_LDETS2
6738 (p_LINE_DETAIL_index IN PLS_INTEGER_TYPE,
6739 p_LINE_DETAIL_TYPE_CODE IN VARCHAR_TYPE,
6740 p_PRICE_BREAK_TYPE_CODE IN VARCHAR_TYPE,
6741 p_LIST_PRICE IN NUMBER_TYPE,
6742 p_LINE_INDEX IN PLS_INTEGER_TYPE,
6743 p_CREATED_FROM_LIST_HEADER_ID IN NUMBER_TYPE,
6744 p_CREATED_FROM_LIST_LINE_ID IN NUMBER_TYPE,
6745 p_CREATED_FROM_LIST_LINE_TYPE IN VARCHAR_TYPE,
6746 p_CREATED_FROM_LIST_TYPE_CODE IN VARCHAR_TYPE,
6747 p_CREATED_FROM_SQL IN VARCHAR_TYPE,
6748 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER_TYPE,
6749 P_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
6750 p_OPERAND_CALCULATION_CODE IN VARCHAR_TYPE,
6751 p_OPERAND_VALUE IN VARCHAR_TYPE,
6752 p_SUBSTITUTION_TYPE_CODE IN VARCHAR_TYPE,
6753 p_SUBSTITUTION_VALUE_FROM IN VARCHAR_TYPE,
6754 p_SUBSTITUTION_VALUE_TO IN VARCHAR_TYPE,
6755 p_ASK_FOR_FLAG IN VARCHAR_TYPE,
6756 p_PRICE_FORMULA_ID IN NUMBER_TYPE,
6757 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
6758 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE,
6759 p_PRODUCT_PRECEDENCE IN PLS_INTEGER_TYPE,
6760 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR_TYPE,
6761 p_PROCESSED_FLAG IN VARCHAR_TYPE,
6762 p_APPLIED_FLAG IN VARCHAR_TYPE,
6763 p_AUTOMATIC_FLAG IN VARCHAR_TYPE,
6764 p_OVERRIDE_FLAG IN VARCHAR_TYPE,
6765 p_PRIMARY_UOM_FLAG IN VARCHAR_TYPE,
6766 p_PRINT_ON_INVOICE_FLAG IN VARCHAR_TYPE,
6767 p_MODIFIER_LEVEL_CODE IN VARCHAR_TYPE,
6768 p_BENEFIT_QTY IN NUMBER_TYPE,
6769 p_BENEFIT_UOM_CODE IN VARCHAR_TYPE,
6770 p_SERVICE_DURATION IN NUMBER_TYPE, -- SERVICE PROJECT
6771 p_SERVICE_PERIOD IN VARCHAR_TYPE, -- SERVICE PROJECT
6772 p_LIST_LINE_NO IN VARCHAR_TYPE,
6773 p_ACCRUAL_FLAG IN VARCHAR_TYPE,
6774 p_ACCRUAL_CONVERSION_RATE IN NUMBER_TYPE,
6775 p_ESTIM_ACCRUAL_RATE IN NUMBER_TYPE,
6776 p_RECURRING_FLAG IN VARCHAR_TYPE,
6777 p_SELECTED_VOLUME_ATTR IN VARCHAR_TYPE,
6778 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
6779 p_HEADER_LIMIT_EXISTS IN VARCHAR_TYPE,
6780 p_LINE_LIMIT_EXISTS IN VARCHAR_TYPE,
6781 p_CHARGE_TYPE_CODE IN VARCHAR_TYPE,
6782 p_CHARGE_SUBTYPE_CODE IN VARCHAR_TYPE,
6783 p_CURRENCY_DETAIL_ID IN NUMBER_TYPE,
6784 p_CURRENCY_HEADER_ID IN NUMBER_TYPE,
6785 p_SELLING_ROUNDING_FACTOR IN NUMBER_TYPE,
6786 p_ORDER_CURRENCY IN VARCHAR_TYPE,
6787 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE,
6788 p_BASE_CURRENCY_CODE IN VARCHAR_TYPE,
6789 p_LINE_QUANTITY IN NUMBER_TYPE,
6790 p_UPDATED_FLAG IN VARCHAR_TYPE,
6791 p_CALCULATION_CODE IN VARCHAR_TYPE,
6792 p_CHANGE_REASON_CODE IN VARCHAR_TYPE,
6793 p_CHANGE_REASON_TEXT IN VARCHAR_TYPE,
6794 p_PRICE_ADJUSTMENT_ID IN NUMBER_TYPE, -- bug 3099847
6795 p_ACCUM_CONTEXT IN VARCHAR_TYPE, -- accum range break
6796 p_ACCUM_ATTRIBUTE IN VARCHAR_TYPE, -- accum range break
6797 p_ACCUM_FLAG IN VARCHAR_TYPE, -- accum range break
6798 p_BREAK_UOM_CODE IN VARCHAR_TYPE, /* Proration*/
6799 p_BREAK_UOM_CONTEXT IN VARCHAR_TYPE, /* Proration*/
6800 p_BREAK_UOM_ATTRIBUTE IN VARCHAR_TYPE, /* Proration*/
6801 p_PROCESS_CODE IN VARCHAR_TYPE, -- 3215497
6802 x_status_code OUT NOCOPY VARCHAR2,
6803 x_status_text OUT NOCOPY VARCHAR2)
6804 AS
6805 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS2';
6806 --added by yangli for Java Engine project
6807 l_debug varchar2(3);
6808 --added by yangli for Java Engine project
6809 BEGIN
6810 --added by yangli for Java Engine project
6811 -- Set the global variable G_DEBUG_ENGINE
6812 QP_PREQ_GRP.Set_QP_Debug;
6813
6814 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
6815 --added by yangli for Java Engine project
6816
6817 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
6818 engine_debug('G_LINE_DETAIL_INDEX b4 insert_ldets2 '||G_LINE_DETAIL_INDEX);
6819
6820 engine_debug('current request_id: '||sys_context('qp_context','request_id'));
6821
6822 END IF;
6823 -- sunilpandey, begin defaulting for multi-currency
6824 IF (p_currency_detail_id.count = 0) THEN -- p_currency_detail_id not passed at all
6825 FOR i in p_line_index.FIRST .. p_line_index.LAST
6826 LOOP
6827 G_CURRENCY_DETAIL_ID_DEF_TBL(i) := NULL;
6828 END LOOP;
6829 ELSE
6830 FOR i in p_line_index.FIRST .. p_line_index.LAST
6831 LOOP
6832 G_CURRENCY_DETAIL_ID_DEF_TBL(i) := p_currency_detail_id(i);
6833 END LOOP;
6834 END IF;
6835 -- sunilpandey, begin defaulting for multi-currency
6836
6837 -- vivek, begin defaulting for multi-currency
6838 IF (p_currency_header_id.count = 0) THEN -- p_currency_header_id not passed at all
6839 FOR i in p_line_index.FIRST .. p_line_index.LAST
6840 LOOP
6841 G_CURRENCY_HEADER_ID_DEF_TBL(i) := NULL;
6842 END LOOP;
6843 ELSE
6844 FOR i in p_line_index.FIRST .. p_line_index.LAST
6845 LOOP
6846 G_CURRENCY_HEADER_ID_DEF_TBL(i) := p_currency_header_id(i);
6847 END LOOP;
6848 END IF;
6849
6850 -- vivek, begin defaulting for multi-currency - selling_rounding_factor
6851 IF (p_selling_rounding_factor.count = 0) THEN -- p_selling_rounding_factor not passed at all
6852 FOR i in p_line_index.FIRST .. p_line_index.LAST
6853 LOOP
6854 G_SELLING_ROUNDING_DEF_TBL(i) := NULL;
6855 END LOOP;
6856 ELSE
6857 FOR i in p_line_index.FIRST .. p_line_index.LAST
6858 LOOP
6859 G_SELLING_ROUNDING_DEF_TBL(i) := p_selling_rounding_factor(i);
6860 END LOOP;
6861 END IF;
6862
6863 IF (p_order_currency.count = 0) THEN -- p_order_currency not passed at all
6864 FOR i in p_line_index.FIRST .. p_line_index.LAST
6865 LOOP
6866 G_ORDER_CURRENCY_DEF_TBL(i) := NULL;
6867 END LOOP;
6868 ELSE
6869 FOR i in p_line_index.FIRST .. p_line_index.LAST
6870 LOOP
6871 G_ORDER_CURRENCY_DEF_TBL(i) := p_order_currency(i);
6872 END LOOP;
6873 END IF;
6874
6875 IF (p_pricing_effective_date.count = 0) THEN -- p_pricing_effective_date not passed at all
6876 FOR i in p_line_index.FIRST .. p_line_index.LAST
6877 LOOP
6878 G_PRICING_EFF_DATE_DEF_TBL(i) := NULL;
6879 END LOOP;
6880 ELSE
6881 FOR i in p_line_index.FIRST .. p_line_index.LAST
6882 LOOP
6883 G_PRICING_EFF_DATE_DEF_TBL(i) := p_pricing_effective_date(i);
6884 END LOOP;
6885 END IF;
6886
6887 IF (p_base_currency_code.count = 0) THEN -- p_base_currency_code not passed at all
6888 FOR i in p_line_index.FIRST .. p_line_index.LAST
6889 LOOP
6890 G_BASE_CURRENCY_DEF_TBL(i) := NULL;
6891 END LOOP;
6892 ELSE
6893 FOR i in p_line_index.FIRST .. p_line_index.LAST
6894 LOOP
6895 G_BASE_CURRENCY_DEF_TBL(i) := p_base_currency_code(i);
6896 END LOOP;
6897 END IF;
6898
6899 -- vivek, end defaulting for multi-currency
6900
6901 --added by spgopal for user-passed line_quantity
6902 IF p_LINE_QUANTITY.count = 0
6903 THEN
6904 FOR i IN p_LINE_DETAIL_INDEX.FIRST..p_LINE_DETAIL_INDEX.LAST
6905 LOOP
6906 G_LDET_LINE_QUANTITY_TBL(i) := NULL;
6907 END LOOP;
6908 ELSE
6909 FOR i IN p_LINE_DETAIL_INDEX.FIRST..p_LINE_DETAIL_INDEX.LAST
6910 LOOP
6911 G_LDET_LINE_QUANTITY_TBL(i) := p_LINE_QUANTITY(i);
6912 END LOOP;
6913 END IF;--p_LINE_QUANTITY.count
6914
6915 -- begin shu fix bug 2599822
6916 IF p_UPDATED_FLAG.count = 0 THEN
6917 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6918 G_UPDATED_FLAG_DEF_TBL(i) := NULL;
6919 END LOOP;
6920 ELSE
6921 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6922 G_UPDATED_FLAG_DEF_TBL(i) := p_UPDATED_FLAG(i);
6923 END LOOP;
6924 END IF;
6925
6926 IF p_CALCULATION_CODE.count = 0 THEN
6927 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6928 G_CALCULATION_CODE_DEF_TBL(i) := NULL;
6929 END LOOP;
6930 ELSE
6931 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6932 G_CALCULATION_CODE_DEF_TBL(i) := p_CALCULATION_CODE(i);
6933 END LOOP;
6934 END IF;
6935
6936
6937 IF p_CHANGE_REASON_CODE.count = 0 THEN
6938 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6939 G_CHANGE_REASON_CODE_DEF_TBL(i) := NULL;
6940 END LOOP;
6941 ELSE
6942 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6943 G_CHANGE_REASON_CODE_DEF_TBL(i) := p_CHANGE_REASON_CODE(i);
6944 END LOOP;
6945 END IF;
6946
6947 IF p_CHANGE_REASON_TEXT.count = 0 THEN
6948 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6949 G_CHANGE_REASON_TEXT_DEF_TBL(i) := NULL;
6950 END LOOP;
6951 ELSE
6952 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6953 G_CHANGE_REASON_TEXT_DEF_TBL(i) := p_CHANGE_REASON_TEXT(i);
6954 END LOOP;
6955 END IF; -- end shu fix bug 2599822
6956
6957 -- bug 3099847
6958 IF p_PRICE_ADJUSTMENT_ID.count = 0 THEN
6959 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6960 G_PRICE_ADJUSTMENT_ID_DEF_TBL(i) := null;
6961 END LOOP;
6962 ELSE
6963 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6964 G_PRICE_ADJUSTMENT_ID_DEF_TBL(i) := p_PRICE_ADJUSTMENT_ID(i);
6965 END LOOP;
6966 END IF;
6967
6968 -- begin accum range break
6969 IF p_ACCUM_CONTEXT.count = 0 THEN
6970 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6971 G_ACCUM_CONTEXT_DEF_TBL(i) := null;
6972 END LOOP;
6973 ELSE
6974 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6975 G_ACCUM_CONTEXT_DEF_TBL(i) := p_ACCUM_CONTEXT(i);
6976 END LOOP;
6977 END IF;
6978
6979 IF p_ACCUM_ATTRIBUTE.count = 0 THEN
6980 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6981 G_ACCUM_ATTRIBUTE_DEF_TBL(i) := null;
6982 END LOOP;
6983 ELSE
6984 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6985 G_ACCUM_ATTRIBUTE_DEF_TBL(i) := p_ACCUM_ATTRIBUTE(i);
6986 END LOOP;
6987 END IF;
6988
6989 IF p_ACCUM_FLAG.count = 0 THEN
6990 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6991 G_ACCUM_FLAG_DEF_TBL(i) := null;
6992 END LOOP;
6993 ELSE
6994 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6995 G_ACCUM_FLAG_DEF_TBL(i) := p_ACCUM_FLAG(i);
6996 END LOOP;
6997 END IF;
6998 -- end accum range break
6999 /* Proration defaulting START*/
7000 IF p_BREAK_UOM_CODE.count = 0 THEN
7001 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
7002 G_BREAK_UOM_CODE_DEF_TBL(i) := NULL;
7003 END LOOP;
7004 ELSE
7005 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
7006 G_BREAK_UOM_CODE_DEF_TBL(i) := p_BREAK_UOM_CODE(i);
7007 END LOOP;
7008 END IF;
7009
7010 IF p_BREAK_UOM_CONTEXT.count = 0 THEN
7011 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
7012 G_BREAK_UOM_CONTEXT_DEF_TBL(i) := NULL;
7013 END LOOP;
7014 ELSE
7015 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
7016 G_BREAK_UOM_CONTEXT_DEF_TBL(i) := p_BREAK_UOM_CONTEXT(i);
7017 END LOOP;
7018 END IF;
7019
7020 IF p_BREAK_UOM_ATTRIBUTE.count = 0 THEN
7021 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
7022 G_BREAK_UOM_ATTRIBUTE_DEF_TBL(i) := NULL;
7023 END LOOP;
7024 ELSE
7025 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
7026 G_BREAK_UOM_ATTRIBUTE_DEF_TBL(i) := p_BREAK_UOM_ATTRIBUTE(i);
7027 END LOOP;
7028 END IF;
7029 /* Proration defaulting END*/
7030
7031 -- 3215497, defaulting process_code
7032 IF p_PROCESS_CODE.count = 0 THEN
7033 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
7034 G_PROCESS_CODE_DEF_TBL(i) := G_STATUS_NEW;
7035 END LOOP;
7036 ELSE
7037 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
7038 G_PROCESS_CODE_DEF_TBL(i) := p_PROCESS_CODE(i);
7039 END LOOP;
7040 END IF;
7041 -- SERVICE PROJECT
7042 IF p_SERVICE_DURATION.count = 0 THEN
7043 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
7044 G_SERVICE_DURATION_DEF_TBL(i) := NULL;
7045 END LOOP;
7046 ELSE
7047 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
7048 G_SERVICE_DURATION_DEF_TBL(i) := p_SERVICE_DURATION(i);
7049 END LOOP;
7050 END IF;
7051
7052 IF p_SERVICE_PERIOD.count = 0 THEN
7053 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
7054 G_SERVICE_PERIOD_DEF_TBL(i) := NULL;
7055 END LOOP;
7056 ELSE
7057 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
7058 G_SERVICE_PERIOD_DEF_TBL(i) := p_SERVICE_PERIOD(i);
7059 END LOOP;
7060 END IF;
7061 -- SERVICE PROJECT
7062 --added by yangli for Java Engine project
7063 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
7064 IF l_debug = FND_API.G_TRUE THEN
7065 ENGINE_DEBUG('Java Engine not Installed ----------');
7066 END IF;
7067
7068 --added by yangli for Java Engine project
7069 FORALL i in p_line_index.FIRST..p_line_index.LAST
7070 INSERT INTO qp_npreq_ldets_tmp
7071 (LINE_DETAIL_INDEX,
7072 LINE_DETAIL_TYPE_CODE,
7073 PRICE_BREAK_TYPE_CODE,
7074 LINE_INDEX,
7075 CREATED_FROM_LIST_HEADER_ID,
7076 CREATED_FROM_LIST_LINE_ID,
7077 CREATED_FROM_LIST_LINE_TYPE,
7078 CREATED_FROM_LIST_TYPE_CODE,
7079 CREATED_FROM_SQL,
7080 PRICING_GROUP_SEQUENCE,
7081 PRICING_PHASE_ID,
7082 OPERAND_CALCULATION_CODE,
7083 OPERAND_VALUE,
7084 SUBSTITUTION_TYPE_CODE,
7085 SUBSTITUTION_VALUE_FROM,
7086 SUBSTITUTION_VALUE_TO,
7087 ASK_FOR_FLAG,
7088 PRICE_FORMULA_ID,
7089 PRICING_STATUS_CODE,
7090 PRICING_STATUS_TEXT,
7091 PRODUCT_PRECEDENCE,
7092 INCOMPATABILITY_GRP_CODE,
7093 PROCESSED_FLAG,
7094 APPLIED_FLAG,
7095 AUTOMATIC_FLAG,
7096 OVERRIDE_FLAG,
7097 PRINT_ON_INVOICE_FLAG,
7098 PRIMARY_UOM_FLAG,
7099 MODIFIER_LEVEL_CODE,
7100 BENEFIT_QTY,
7101 BENEFIT_UOM_CODE,
7102 SERVICE_DURATION, -- SERVICE PROJECT
7103 SERVICE_PERIOD, -- SERVICE PROJECT
7104 LIST_LINE_NO,
7105 ACCRUAL_FLAG,
7106 ACCRUAL_CONVERSION_RATE,
7107 ESTIM_ACCRUAL_RATE,
7108 RECURRING_FLAG,
7109 SELECTED_VOLUME_ATTR,
7110 ROUNDING_FACTOR,
7111 HEADER_LIMIT_EXISTS,
7112 LINE_LIMIT_EXISTS,
7113 CHARGE_TYPE_CODE,
7114 CHARGE_SUBTYPE_CODE,
7115 CURRENCY_DETAIL_ID, /*sunilpandey */
7116 CURRENCY_HEADER_ID, /*vivek */
7117 SELLING_ROUNDING_FACTOR, /*vivek */
7118 ORDER_CURRENCY, /*vivek */
7119 PRICING_EFFECTIVE_DATE,/*vivek */
7120 BASE_CURRENCY_CODE,/*vivek */
7121 PROCESS_CODE,
7122 LINE_QUANTITY,
7123 UPDATED_FLAG, -- begin shu fix bug 2599822
7124 CALCULATION_CODE,
7125 CHANGE_REASON_CODE,
7126 CHANGE_REASON_TEXT, -- end shu fix bug 2599822
7127 PRICE_ADJUSTMENT_ID, -- bug 3099847
7128 ACCUM_CONTEXT, -- accum range break
7129 ACCUM_ATTRIBUTE, -- accum range break
7130 ACCUM_ATTR_RUN_SRC_FLAG, -- accum range break
7131 BREAK_UOM_CODE, /* Proration */
7132 BREAK_UOM_CONTEXT, /* Proration */
7133 BREAK_UOM_ATTRIBUTE /* Proration */
7134 )
7135 VALUES ( p_LINE_DETAIL_INDEX(i),
7136 p_LINE_DETAIL_TYPE_CODE(i),
7137 p_PRICE_BREAK_TYPE_CODE(i),
7138 p_LINE_INDEX(i),
7139 p_CREATED_FROM_LIST_HEADER_ID(i),
7140 p_CREATED_FROM_LIST_LINE_ID(i),
7141 p_CREATED_FROM_LIST_LINE_TYPE(i),
7142 p_CREATED_FROM_LIST_TYPE_CODE(i),
7143 p_CREATED_FROM_SQL(i),
7144 p_PRICING_GROUP_SEQUENCE(i),
7145 p_PRICING_PHASE_ID(i),
7146 p_OPERAND_CALCULATION_CODE(i),
7147 p_OPERAND_VALUE(i),
7148 p_SUBSTITUTION_TYPE_CODE(i),
7149 p_SUBSTITUTION_VALUE_FROM(i),
7150 p_SUBSTITUTION_VALUE_TO(i),
7151 p_ASK_FOR_FLAG(i),
7152 p_PRICE_FORMULA_ID(i),
7153 p_PRICING_STATUS_CODE(i),
7154 p_PRICING_STATUS_TEXT(i),
7155 p_PRODUCT_PRECEDENCE(i),
7156 p_INCOMPATABLILITY_GRP_CODE(i),
7157 p_PROCESSED_FLAG(i),
7158 p_APPLIED_FLAG(i),
7159 p_AUTOMATIC_FLAG(i),
7160 p_OVERRIDE_FLAG(i),
7161 p_PRINT_ON_INVOICE_FLAG(i),
7162 p_PRIMARY_UOM_FLAG(i),
7163 p_MODIFIER_LEVEL_CODE(i),
7164 p_BENEFIT_QTY(i),
7165 p_BENEFIT_UOM_CODE(i),
7166 p_SERVICE_DURATION(i), -- SERVICE PROJECT
7167 p_SERVICE_PERIOD(i), -- SERVICE PROJECT
7168 p_LIST_LINE_NO(i),
7169 p_ACCRUAL_FLAG(i),
7170 p_ACCRUAL_CONVERSION_RATE(i),
7171 p_ESTIM_ACCRUAL_RATE(i),
7172 p_RECURRING_FLAG(i),
7173 p_SELECTED_VOLUME_ATTR(i),
7174 p_ROUNDING_FACTOR(i),
7175 decode(p_HEADER_LIMIT_EXISTS(i),'Y','Y',decode(p_LINE_LIMIT_EXISTS(i),'Y','Y','N')),
7176 p_LINE_LIMIT_EXISTS(i),
7177 p_CHARGE_TYPE_CODE(i),
7178 p_CHARGE_SUBTYPE_CODE(i),
7179 G_CURRENCY_DETAIL_ID_DEF_TBL(i), /* sunilpandey */
7180 G_CURRENCY_HEADER_ID_DEF_TBL(i), /* vivek */
7181 G_SELLING_ROUNDING_DEF_TBL(i), /* vivek */
7182 G_ORDER_CURRENCY_DEF_TBL(i), /* vivek */
7183 G_PRICING_EFF_DATE_DEF_TBL(i), /* vivek */
7184 G_BASE_CURRENCY_DEF_TBL(i), /* vivek */
7185 G_PROCESS_CODE_DEF_TBL(i), -- 3215497, changed from G_STATUS_NEW,
7186 G_LDET_LINE_QUANTITY_TBL(i),
7187 G_UPDATED_FLAG_DEF_TBL(i), -- begin shu fix bug 2599822
7188 G_CALCULATION_CODE_DEF_TBL(i),
7189 G_CHANGE_REASON_CODE_DEF_TBL(i),
7190 G_CHANGE_REASON_TEXT_DEF_TBL(i), -- end shu fix bug 2599822
7191 G_PRICE_ADJUSTMENT_ID_DEF_TBL(i), -- bug 3099847
7192 G_ACCUM_CONTEXT_DEF_TBL(i), -- accum range break
7193 G_ACCUM_ATTRIBUTE_DEF_TBL(i), -- accum range break
7194 G_ACCUM_FLAG_DEF_TBL(i), -- accum range break
7195 G_BREAK_UOM_CODE_DEF_TBL(i), /* Proration */
7196 G_BREAK_UOM_CONTEXT_DEF_TBL(i), /* Proration */
7197 G_BREAK_UOM_ATTRIBUTE_DEF_TBL(i) /* Proration */
7198 );
7199 --added by yangli for Java Engine project
7200 ELSE
7201 IF l_debug = FND_API.G_TRUE THEN
7202 ENGINE_DEBUG('Java Engine Installed ----------');
7203 END IF;
7204 QP_PREQ_GRP.INSERT_LDETS2_AT
7205 (p_LINE_DETAIL_index ,
7206 p_LINE_DETAIL_TYPE_CODE ,
7207 p_PRICE_BREAK_TYPE_CODE ,
7208 p_LIST_PRICE ,
7209 p_LINE_INDEX ,
7210 p_CREATED_FROM_LIST_HEADER_ID ,
7211 p_CREATED_FROM_LIST_LINE_ID ,
7212 p_CREATED_FROM_LIST_LINE_TYPE ,
7213 p_CREATED_FROM_LIST_TYPE_CODE ,
7214 p_CREATED_FROM_SQL ,
7215 p_PRICING_GROUP_SEQUENCE ,
7216 P_PRICING_PHASE_ID ,
7217 p_OPERAND_CALCULATION_CODE ,
7218 p_OPERAND_VALUE ,
7219 p_SUBSTITUTION_TYPE_CODE ,
7220 p_SUBSTITUTION_VALUE_FROM ,
7221 p_SUBSTITUTION_VALUE_TO ,
7222 p_ASK_FOR_FLAG ,
7223 p_PRICE_FORMULA_ID ,
7224 p_PRICING_STATUS_CODE ,
7225 p_PRICING_STATUS_TEXT ,
7226 p_PRODUCT_PRECEDENCE ,
7227 p_INCOMPATABLILITY_GRP_CODE ,
7228 p_PROCESSED_FLAG ,
7229 p_APPLIED_FLAG ,
7230 p_AUTOMATIC_FLAG ,
7231 p_OVERRIDE_FLAG ,
7232 p_PRIMARY_UOM_FLAG ,
7233 p_PRINT_ON_INVOICE_FLAG ,
7234 p_MODIFIER_LEVEL_CODE ,
7235 p_BENEFIT_QTY ,
7236 p_BENEFIT_UOM_CODE ,
7237 p_LIST_LINE_NO ,
7238 p_ACCRUAL_FLAG ,
7239 p_ACCRUAL_CONVERSION_RATE ,
7240 p_ESTIM_ACCRUAL_RATE ,
7241 p_RECURRING_FLAG ,
7242 p_SELECTED_VOLUME_ATTR ,
7243 p_ROUNDING_FACTOR ,
7244 p_HEADER_LIMIT_EXISTS ,
7245 p_LINE_LIMIT_EXISTS ,
7246 p_CHARGE_TYPE_CODE ,
7247 p_CHARGE_SUBTYPE_CODE ,
7248 G_CURRENCY_DETAIL_ID_DEF_TBL, /* sunilpandey */
7249 G_CURRENCY_HEADER_ID_DEF_TBL, /* vivek */
7250 G_SELLING_ROUNDING_DEF_TBL, /* vivek */
7251 G_ORDER_CURRENCY_DEF_TBL, /* vivek */
7252 G_PRICING_EFF_DATE_DEF_TBL, /* vivek */
7253 G_BASE_CURRENCY_DEF_TBL, /* vivek */
7254 G_LDET_LINE_QUANTITY_TBL,
7255 G_UPDATED_FLAG_DEF_TBL, -- begin shu fix bug 2599822
7256 G_CALCULATION_CODE_DEF_TBL,
7257 G_CHANGE_REASON_CODE_DEF_TBL,
7258 G_CHANGE_REASON_TEXT_DEF_TBL, -- end shu fix bug 2599822
7259 G_PRICE_ADJUSTMENT_ID_DEF_TBL, -- bug 3099847
7260 G_ACCUM_CONTEXT_DEF_TBL, -- accum range break
7261 G_ACCUM_ATTRIBUTE_DEF_TBL, -- accum range break
7262 G_ACCUM_FLAG_DEF_TBL, -- accum range break
7263 G_BREAK_UOM_CODE_DEF_TBL, /* Proration */
7264 G_BREAK_UOM_CONTEXT_DEF_TBL, /* Proration */
7265 G_BREAK_UOM_ATTRIBUTE_DEF_TBL, /* Proration */
7266 G_PROCESS_CODE_DEF_TBL, -- 3215497
7267 x_status_code ,
7268 x_status_text );
7269 END IF;
7270 --added by yangli for Java Engine project
7271
7272 G_CURRENCY_DETAIL_ID_DEF_TBL.delete;
7273 G_CURRENCY_HEADER_ID_DEF_TBL.delete;
7274 G_SELLING_ROUNDING_DEF_TBL.delete;
7275 G_ORDER_CURRENCY_DEF_TBL.delete;
7276 G_PRICING_EFF_DATE_DEF_TBL.delete;
7277 G_BASE_CURRENCY_DEF_TBL.delete;
7278 G_LDET_LINE_QUANTITY_TBL.delete;
7279 G_UPDATED_FLAG_DEF_TBL.delete; -- begin shu fix bug 2599822
7280 G_CALCULATION_CODE_DEF_TBL.delete;
7281 G_CHANGE_REASON_CODE_DEF_TBL.delete;
7282 G_CHANGE_REASON_TEXT_DEF_TBL.delete; -- end shu fix bug 2599822
7283 G_PRICE_ADJUSTMENT_ID_DEF_TBL.delete; -- bug 3099847
7284 G_ACCUM_CONTEXT_DEF_TBL.delete; -- accum range break
7285 G_ACCUM_ATTRIBUTE_DEF_TBL.delete; -- accum range break
7286 G_ACCUM_FLAG_DEF_TBL.delete; -- accum range break
7287 G_BREAK_UOM_CODE_DEF_TBL.delete; /* Proration */
7288 G_BREAK_UOM_CONTEXT_DEF_TBL.delete; /* Proration */
7289 G_BREAK_UOM_ATTRIBUTE_DEF_TBL.delete; /* Proration */
7290 G_PROCESS_CODE_DEF_TBL.delete; -- 3215497
7291 G_SERVICE_DURATION_DEF_TBL.delete; -- service project
7292 G_SERVICE_PERIOD_DEF_TBL.delete; -- service project
7293
7294
7295 EXCEPTION
7296 WHEN OTHERS THEN
7297 x_status_code := FND_API.G_RET_STS_ERROR;
7298 x_status_text :=l_routine||' '||SQLERRM;
7299 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7300 engine_debug(l_routine||' '||SQLERRM);
7301 engine_debug(SQLERRM);
7302 END IF;
7303 END;
7304
7305 /*+----------------------------------------------------------------------
7306 |Procedure INSERT_RLTD_LINES2_AT, API to insert relationship data
7307 +----------------------------------------------------------------------
7308 */
7309 PROCEDURE INSERT_RLTD_LINES2_AT(
7310 p_LINE_INDEX IN PLS_INTEGER_TYPE,
7311 p_LINE_DETAIL_INDEX IN PLS_INTEGER_TYPE,
7312 p_RELATIONSHIP_TYPE_CODE IN VARCHAR_TYPE,
7313 p_RELATED_LINE_INDEX IN PLS_INTEGER_TYPE,
7314 p_RELATED_LINE_DETAIL_INDEX IN PLS_INTEGER_TYPE,
7315 x_status_code OUT NOCOPY VARCHAR2,
7316 x_status_text OUT NOCOPY VARCHAR2,
7317 p_LIST_LINE_ID IN NUMBER_TYPE, /* bug 3020816 */
7318 p_RELATED_LIST_LINE_ID IN NUMBER_TYPE, /* bug 3020816 */
7319 p_pricing_status_text IN VARCHAR_TYPE)
7320 IS
7321 PRAGMA AUTONOMOUS_TRANSACTION;
7322 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_RLTD_LINES2_AT';
7323 l_request_id number;
7324 BEGIN
7325 l_request_id := nvl(SYS_CONTEXT('QP_CONTEXT','request_id'),-9999);
7326 FORALL i in p_line_index.FIRST..p_line_index.LAST
7327 INSERT INTO QP_INT_RLTD_LINES_T (
7328 LINE_INDEX,
7329 LINE_DETAIL_INDEX,
7330 RELATIONSHIP_TYPE_CODE,
7331 RELATED_LINE_INDEX,
7332 RELATED_LINE_DETAIL_INDEX,
7333 REQUEST_TYPE_CODE,
7334 PRICING_STATUS_CODE,
7335 LIST_LINE_ID,
7336 RELATED_LIST_LINE_ID,
7337 PRICING_STATUS_TEXT,
7338 request_id)
7339
7340 VALUES ( p_LINE_INDEX (i),
7341 p_LINE_DETAIL_INDEX(i),
7342 p_RELATIONSHIP_TYPE_CODE(i),
7343 p_RELATED_LINE_INDEX(i),
7344 p_RELATED_LINE_DETAIL_INDEX(i),
7345 'NULL', -- ASK PRIYA
7346 G_STATUS_NEW, -- SHOULD THIS BE UNCHANGED??, SHU, WHAT HAPPENED TO SERVICE LINE
7347 p_list_line_id(i),
7348 p_related_list_line_id(i),
7349 p_pricing_status_text(i),
7350 l_request_id
7351 );
7352 QP_PREQ_GRP.G_INT_RELS_NO := QP_PREQ_GRP.G_INT_RELS_NO + p_LINE_INDEX.count;
7353 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7354 QP_PREQ_GRP.engine_debug('QP_PREQ_GRP.G_INT_RELS_NO='||QP_PREQ_GRP.G_INT_RELS_NO);
7355 END IF;
7356 COMMIT;
7357 EXCEPTION
7358 WHEN OTHERS THEN
7359 x_status_code := FND_API.G_RET_STS_ERROR;
7360 x_status_text :=l_routine||' '||SQLERRM;
7361 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7362 QP_PREQ_GRP.engine_debug(l_routine||' '||SQLERRM);
7363 QP_PREQ_GRP.engine_debug(SQLERRM);
7364 END IF;
7365 END;
7366
7367
7368 /*+----------------------------------------------------------------------
7369 |Procedure INSERT_RLTD_LINES2, API to insert relationship data
7370 +----------------------------------------------------------------------
7371 */
7372 PROCEDURE INSERT_RLTD_LINES2(
7373 p_LINE_INDEX IN PLS_INTEGER_TYPE,
7374 p_LINE_DETAIL_INDEX IN PLS_INTEGER_TYPE,
7375 p_RELATIONSHIP_TYPE_CODE IN VARCHAR_TYPE,
7376 p_RELATED_LINE_INDEX IN PLS_INTEGER_TYPE,
7377 p_RELATED_LINE_DETAIL_INDEX IN PLS_INTEGER_TYPE,
7378 x_status_code OUT NOCOPY VARCHAR2,
7379 x_status_text OUT NOCOPY VARCHAR2,
7380 p_LIST_LINE_ID IN NUMBER_TYPE, /* bug 3020816 */
7381 p_RELATED_LIST_LINE_ID IN NUMBER_TYPE, /* bug 3020816 */
7382 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE) --added for Java Engine
7383 IS
7384 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_RLTD_LINES2';
7385 --added by yangli for Java Engine project
7386 l_debug varchar2(3);
7387 --added by yangli for Java Engine project
7388 BEGIN
7389 --added by yangli for Java Engine project
7390 -- Set the global variable G_DEBUG_ENGINE
7391 QP_PREQ_GRP.Set_QP_Debug;
7392
7393 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
7394 --added by yangli for Java Engine project
7395
7396 -- bug 3020816 - need to allow insert into list_line_id and related_list_line_id columns
7397 IF (p_list_line_id.count = 0) THEN -- p_list_line_id not passed at all
7398 FOR i in p_line_index.FIRST .. p_line_index.LAST
7399 LOOP
7400 G_LIST_LINE_ID_DEF_TBL(i) := NULL;
7401 END LOOP;
7402 ELSE
7403 FOR i in p_line_index.FIRST .. p_line_index.LAST
7404 LOOP
7405 G_LIST_LINE_ID_DEF_TBL(i) := p_list_line_id(i);
7406 END LOOP;
7407 END IF;
7408
7409 IF (p_related_list_line_id.count = 0) THEN -- p_related_list_line_id not passed at all
7410 FOR i in p_line_index.FIRST .. p_line_index.LAST
7411 LOOP
7412 G_RLTD_LIST_LINE_ID_DEF_TBL(i) := NULL;
7413 END LOOP;
7414 ELSE
7415 FOR i in p_line_index.FIRST .. p_line_index.LAST
7416 LOOP
7417 G_RLTD_LIST_LINE_ID_DEF_TBL(i) := p_related_list_line_id(i);
7418 END LOOP;
7419 END IF;
7420
7421 --added by yangli for Java Engine project
7422 IF (p_pricing_status_text.count = 0) THEN -- p_pricing_status_text not passed at all
7423 FOR i in p_line_index.FIRST .. p_line_index.LAST
7424 LOOP
7425 G_PRICING_STATUS_TEXT_DEF_TBL(i) := NULL;
7426 END LOOP;
7427 ELSE
7428 FOR i in p_line_index.FIRST .. p_line_index.LAST
7429 LOOP
7430 G_PRICING_STATUS_TEXT_DEF_TBL(i) := p_pricing_status_text(i);
7431 END LOOP;
7432 END IF;
7433
7434 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
7435 IF l_debug = FND_API.G_TRUE THEN
7436 ENGINE_DEBUG('Java Engine not Installed ----------');
7437 END IF;
7438 --added by yangli for Java Engine project
7439
7440 FORALL i in p_line_index.FIRST..p_line_index.LAST
7441 INSERT INTO qp_npreq_rltd_lines_tmp (
7442 LINE_INDEX,
7443 LINE_DETAIL_INDEX,
7444 RELATIONSHIP_TYPE_CODE,
7445 RELATED_LINE_INDEX,
7446 RELATED_LINE_DETAIL_INDEX,
7447 REQUEST_TYPE_CODE,
7448 PRICING_STATUS_CODE,
7449 LIST_LINE_ID,
7450 RELATED_LIST_LINE_ID)
7451
7452 VALUES (
7453 p_LINE_INDEX (i),
7454 p_LINE_DETAIL_INDEX(i),
7455 p_RELATIONSHIP_TYPE_CODE(i),
7456 p_RELATED_LINE_INDEX(i),
7457 p_RELATED_LINE_DETAIL_INDEX(i),
7458 'NULL', -- ASK PRIYA
7459 G_STATUS_NEW, -- SHOULD THIS BE UNCHANGED??, SHU, WHAT HAPPENED TO SERVICE LINE
7460 G_LIST_LINE_ID_DEF_TBL(i),
7461 G_RLTD_LIST_LINE_ID_DEF_TBL(i)
7462 );
7463 --added by yangli for Java Engine project
7464 ELSE
7465 IF l_debug = FND_API.G_TRUE THEN
7466 ENGINE_DEBUG('Java Engine Installed ----------');
7467 END IF;
7468 QP_PREQ_GRP.INSERT_RLTD_LINES2_AT
7469 (p_LINE_INDEX ,
7470 p_LINE_DETAIL_INDEX ,
7471 p_RELATIONSHIP_TYPE_CODE ,
7472 p_RELATED_LINE_INDEX ,
7473 p_RELATED_LINE_DETAIL_INDEX ,
7474 x_status_code ,
7475 x_status_text,
7476 G_LIST_LINE_ID_DEF_TBL,
7477 G_RLTD_LIST_LINE_ID_DEF_TBL,
7478 G_PRICING_STATUS_TEXT_DEF_TBL);
7479 END IF;
7480 --added by yangli for Java Engine project
7481
7482 G_LIST_LINE_ID_DEF_TBL.delete;
7483 G_RLTD_LIST_LINE_ID_DEF_TBL.delete;
7484 --added by yangli for Java Engine project
7485 G_PRICING_STATUS_TEXT_DEF_TBL.delete;
7486 EXCEPTION
7487 WHEN OTHERS THEN
7488 x_status_code := FND_API.G_RET_STS_ERROR;
7489 x_status_text :=l_routine||' '||SQLERRM;
7490 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7491 engine_debug(l_routine||' '||SQLERRM);
7492 engine_debug(SQLERRM);
7493 END IF;
7494 END INSERT_RLTD_LINES2; -- public version
7495
7496 /*+----------------------------------------------------------------------
7497 |Procedure INSERT_RLTD_LINES2, overloaded version, bug 3215497
7498 +----------------------------------------------------------------------*/
7499 PROCEDURE INSERT_RLTD_LINES2(
7500 p_LINE_INDEX IN NUMBER_TYPE,
7501 p_LINE_DETAIL_INDEX IN NUMBER_TYPE,
7502 p_RELATIONSHIP_TYPE_CODE IN VARCHAR_TYPE,
7503 p_RELATED_LINE_INDEX IN NUMBER_TYPE,
7504 p_RELATED_LINE_DETAIL_INDEX IN NUMBER_TYPE,
7505 x_status_code OUT NOCOPY VARCHAR2,
7506 x_status_text OUT NOCOPY VARCHAR2,
7507 p_LIST_LINE_ID IN NUMBER_TYPE, /* bug 3020816 */
7508 p_RELATED_LIST_LINE_ID IN NUMBER_TYPE, /* bug 3020816 */
7509 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE) --added for Java Engine
7510 IS
7511 i NUMBER;
7512 l_line_index PLS_INTEGER_TYPE;
7513 l_ldet_index PLS_INTEGER_TYPE;
7514 l_rltd_line_index PLS_INTEGER_TYPE;
7515 l_rltd_ldet_index PLS_INTEGER_TYPE;
7516 BEGIN
7517 FOR i IN p_LINE_INDEX.FIRST .. p_LINE_INDEX.LAST LOOP
7518 l_line_index(i) := p_LINE_INDEX(i);
7519 END LOOP;
7520 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
7521 l_ldet_index(i) := p_LINE_DETAIL_INDEX(i);
7522 END LOOP;
7523 FOR i IN p_RELATED_LINE_INDEX.FIRST .. p_RELATED_LINE_INDEX.LAST LOOP
7524 l_rltd_line_index(i) := p_RELATED_LINE_INDEX(i);
7525 END LOOP;
7526 FOR i IN p_RELATED_LINE_DETAIL_INDEX.FIRST .. p_RELATED_LINE_DETAIL_INDEX.LAST LOOP
7527 l_rltd_ldet_index(i) := p_RELATED_LINE_DETAIL_INDEX(i);
7528 END LOOP;
7529
7530 -- call new version
7531 INSERT_RLTD_LINES2(
7532 p_LINE_INDEX => l_line_index,
7533 p_LINE_DETAIL_INDEX => l_ldet_index,
7534 p_RELATIONSHIP_TYPE_CODE => p_RELATIONSHIP_TYPE_CODE,
7535 p_RELATED_LINE_INDEX => l_rltd_line_index,
7536 p_RELATED_LINE_DETAIL_INDEX => l_rltd_ldet_index,
7537 x_status_code => x_status_code,
7538 x_status_text => x_status_text,
7539 p_LIST_LINE_ID => p_LIST_LINE_ID,
7540 p_RELATED_LIST_LINE_ID => p_RELATED_LIST_LINE_ID,
7541 p_PRICING_STATUS_TEXT => p_PRICING_STATUS_TEXT
7542 );
7543 END INSERT_RLTD_LINES2; -- overloaded version
7544
7545 /*
7546 +------------------------------------------------------------------------
7547 |PROCEDURE Source_Vol_Contexts_Attributes
7548 +-------------------------------------------------------------------------
7549 */
7550
7551 PROCEDURE Source_Vol_Contexts_Attributes(p_pricing_phase_seq PLS_INTEGER,
7552 p_freeze_override_flag VARCHAR2,
7553 p_ordr_amt_flag VARCHAR2,
7554 x_status_code OUT NOCOPY VARCHAR2,
7555 x_status_text OUT NOCOPY VARCHAR2) AS
7556 /*
7557 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.get_request_lines_cur,- No Index Used-,NA,NA
7558 */
7559 CURSOR get_request_lines_cur IS
7560 SELECT LINE_INDEX,
7561 LINE_QUANTITY,
7562 PRICED_QUANTITY,
7563 UNIT_PRICE,
7564 LINE_TYPE_CODE,
7565 LINE_UOM_CODE,
7566 PRICED_UOM_CODE,
7567 PRICE_FLAG
7568 FROM qp_npreq_lines_tmp;
7569 --WHERE LINE_UOM_CODE <> PRICED_UOM_CODE;
7570 /*WHERE (PRICE_FLAG = G_YES
7571 OR
7572 (PRICE_FLAG = G_PHASE
7573 AND
7574 p_freeze_override_flag = G_YES)
7575 );*/
7576
7577 /*
7578 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.get_inventory_item_id_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
7579 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.get_inventory_item_id_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
7580 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.get_inventory_item_id_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
7581 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.get_inventory_item_id_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
7582 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.get_inventory_item_id_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
7583 */
7584 CURSOR get_inventory_item_id_cur(p_line_index PLS_INTEGER) IS
7585 SELECT /*+ dynamic_sampling(1) */ to_number(VALUE_FROM)
7586 FROM qp_npreq_line_attrs_tmp
7587 WHERE CONTEXT = G_PRIC_ITEM_CONTEXT
7588 AND ATTRIBUTE = G_PRIC_ATTRIBUTE1
7589 AND ATTRIBUTE_TYPE = G_PRODUCT_TYPE
7590 AND LINE_INDEX = p_line_index
7591 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED;
7592
7593 /*
7594 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.order_amount_cur,- No Index Used -,NA,NA
7595 */
7596 CURSOR order_amount_cur IS
7597 --SELECT nvl(SUM(UNIT_PRICE * PRICED_QUANTITY),0)
7598 select nvl(sum(nvl(line_unit_price * line_quantity, UNIT_PRICE * PRICED_QUANTITY)),0) /* 3143535 */
7599 FROM qp_npreq_lines_tmp
7600 WHERE charge_periodicity_code is NULL; -- added for recurring charges Bug # 4465168
7601
7602
7603
7604 v_order_amt NUMBER;
7605 v_count PLS_INTEGER;
7606 v_inventory_item_id NUMBER;
7607 v_uom_rate NUMBER;
7608 l_status_code VARCHAR2(30);
7609 l_status_text VARCHAR2(240);
7610 l_routine CONSTANT VARCHAR2(240) := 'QP_PREQ_GRP.Source_Vol_Contexts_Attributes';
7611
7612 l_l_line_index_tbl NUMBER_TYPE;
7613 l_l_line_quantity_tbl NUMBER_TYPE;
7614 l_l_priced_quantity_tbl NUMBER_TYPE;
7615 l_l_unit_price_tbl NUMBER_TYPE;
7616 l_l_line_type_code_tbl VARCHAR_30_TYPE;
7617 l_l_line_uom_code_tbl VARCHAR_30_TYPE;
7618 l_l_priced_uom_code_tbl VARCHAR_30_TYPE;
7619 l_l_price_flag_tbl VARCHAR_30_TYPE;
7620
7621 l_co_line_index_tbl NUMBER_TYPE;
7622 l_co_bulk_count NUMBER := 0;
7623
7624 l_ia_value_from_tbl VARCHAR_TYPE;
7625 l_ia_line_index_tbl NUMBER_TYPE;
7626 l_ia_attribute_tbl VARCHAR_TYPE;
7627 l_ia_bulk_count NUMBER := 0;
7628 l_lin_qty_exists number:=0;
7629 BEGIN
7630 qp_debug_util.tstart('SOURCE_VOL_CONTEXTS_ATTRIBUTES','Procedure SOURCE_VOL_CONTEXTS_ATTRIBUTES');
7631 -- julin [3805113]: bulk fetch request lines
7632 OPEN get_request_lines_cur;
7633 LOOP
7634 FETCH get_request_lines_cur BULK COLLECT INTO
7635 l_l_line_index_tbl,
7636 l_l_line_quantity_tbl,
7637 l_l_priced_quantity_tbl,
7638 l_l_unit_price_tbl,
7639 l_l_line_type_code_tbl,
7640 l_l_line_uom_code_tbl,
7641 l_l_priced_uom_code_tbl,
7642 l_l_price_flag_tbl
7643 LIMIT G_BATCH_SIZE;
7644 EXIT WHEN l_l_line_index_tbl.count = 0;
7645
7646 l_co_line_index_tbl.delete;
7647 l_ia_value_from_tbl.delete;
7648 l_ia_line_index_tbl.delete;
7649 l_ia_attribute_tbl.delete;
7650
7651 FOR I in l_l_line_index_tbl.first .. l_l_line_index_tbl.last
7652 LOOP
7653
7654 -- ITEM QUANTITY(Price List Sequence)
7655 /* IF (p_pricing_phase_seq = G_PRICE_LIST_SEQUENCE AND i.LINE_TYPE_CODE = G_LINE_LEVEL) THEN
7656
7657 UPDATE qp_npreq_line_attrs_tmp
7658 SET VALUE_FROM = qp_number.number_to_canonical(nvl(I.LINE_QUANTITY,0))
7659 WHERE LINE_INDEX = I.LINE_INDEX
7660 AND CONTEXT = G_PRIC_VOLUME_CONTEXT
7661 AND ATTRIBUTE = G_QUANTITY_ATTRIBUTE
7662 AND ATTRIBUTE_TYPE = G_PRICING_TYPE
7663 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED;
7664
7665 IF SQL%ROWCOUNT = 0 THEN
7666 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7667 engine_debug('No volume context in temp table, inserting one');
7668 END IF;
7669 INSERT_LINE_ATTRS
7670 (p_LINE_INDEX =>I.LINE_INDEX,
7671 p_ATTRIBUTE_LEVEL =>G_LINE_LEVEL,
7672 p_ATTRIBUTE_TYPE =>G_PRICING_TYPE,
7673 p_CONTEXT =>G_PRIC_VOLUME_CONTEXT,
7674 p_ATTRIBUTE =>G_QUANTITY_ATTRIBUTE,
7675 p_VALUE_FROM =>qp_number.number_to_canonical(NVL(I.LINE_QUANTITY,0)),
7676 p_VALIDATED_FLAG =>G_NO,
7677 p_APPLIED_FLAG =>G_LIST_NOT_APPLIED,
7678 p_PRICING_STATUS_CODE =>G_STATUS_UNCHANGED,
7679 P_PRICING_ATTR_FLAG =>G_PRICING_YES,
7680 x_status_code =>l_status_code,
7681 x_status_text =>l_status_text);
7682
7683 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
7684 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7685 END IF;
7686 END IF;
7687 -- Reset the unit price if price event occurs
7688 IF (i.PRICE_FLAG = G_YES OR (i.PRICE_FLAG = G_PHASE AND p_freeze_override_flag = G_YES)) THEN
7689 UPDATE qp_npreq_lines_tmp
7690 SET UNIT_PRICE = NULL
7691 WHERE LINE_INDEX = I.LINE_INDEX;
7692 END IF;
7693
7694 END IF; */
7695
7696 -- PRICED QUANTITY(Discounts Sequence)
7697 -- bug 3572594 - update the cross order volume period qty even if there is no price phase in the current engine call
7698 IF (p_pricing_phase_seq <> G_PRICE_LIST_SEQUENCE AND l_l_line_type_code_tbl(I) = G_LINE_LEVEL ) THEN
7699 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7700 engine_debug('Trying to update cross order volume period qty in temp table');
7701
7702 END IF;
7703 -- Cross Order Quantities
7704 OPEN get_inventory_item_id_cur(l_l_line_index_tbl(I));
7705 FETCH get_inventory_item_id_cur INTO v_inventory_item_id;
7706 CLOSE get_inventory_item_id_cur;
7707
7708 -- Get the pricing uom qty with the uom conversion routine
7709 Inv_convert.inv_um_conversion(l_l_line_uom_code_tbl(I),
7710 l_l_priced_uom_code_tbl(I),
7711 v_inventory_item_id,
7712 v_uom_rate);
7713
7714 -- Update Period1 Item Qty, Period2 Item Qty , Period3 Item Qty with conversion from order uom to pricing uom
7715 IF (v_uom_rate = -99999) THEN
7716 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7717 engine_debug('Uom Rate cannot be -99999');
7718 END IF;
7719 ELSE
7720 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7721 engine_debug('Uom Rate Is: ' || v_uom_rate );
7722 END IF;
7723
7724 -- bug 3572594 - round the multiplied value to profile QP_INV_DECIMAL_PRECISION
7725 if G_INV_DECIMAL_PRECISION is null then
7726 G_INV_DECIMAL_PRECISION := nvl(FND_PROFILE.Value('QP_INV_DECIMAL_PRECISION'),10);
7727 end if;
7728 /*
7729 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd4,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
7730 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd4,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
7731 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd4,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
7732 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd4,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
7733 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd4,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
7734 */
7735
7736 -- julin [3805113]: bulk update
7737 l_co_line_index_tbl(l_co_bulk_count) := l_l_line_index_tbl(I);
7738 l_co_bulk_count := l_co_bulk_count + 1;
7739 END IF;
7740 END IF;
7741
7742 -- ITEM AMOUNT(Discounts Sequence)
7743 IF (p_pricing_phase_seq <> G_PRICE_LIST_SEQUENCE AND l_l_line_type_code_tbl(I) = G_LINE_LEVEL AND G_PRICE_PHASE_FLAG = TRUE) THEN
7744 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7745 engine_debug ('Trying to update line quantity and line amount in temp table');
7746
7747 END IF;
7748 /*
7749 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd3,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
7750 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd3,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
7751 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd3,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
7752 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd3,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
7753 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd3,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
7754 */
7755 -- julin [3805113]: bulk update
7756 l_ia_value_from_tbl(l_ia_bulk_count) := qp_number.number_to_canonical(nvl(nvl(l_l_priced_quantity_tbl(I),l_l_line_quantity_tbl(I)),0));
7757 l_ia_line_index_tbl(l_ia_bulk_count) := l_l_line_index_tbl(I);
7758 l_ia_attribute_tbl(l_ia_bulk_count) := G_QUANTITY_ATTRIBUTE;
7759 l_ia_bulk_count := l_ia_bulk_count + 1;
7760
7761 IF G_LIN_QTY_ATTR_SRCD <> G_YES THEN
7762 BEGIN
7763 SELECT 1
7764 INTO l_lin_qty_exists
7765 FROM dual
7766 WHERE EXISTS (SELECT 1
7767 FROM qp_npreq_line_attrs_tmp
7768 WHERE CONTEXT = G_PRIC_VOLUME_CONTEXT
7769 AND ATTRIBUTE = G_QUANTITY_ATTRIBUTE
7770 AND ATTRIBUTE_TYPE = G_PRICING_TYPE
7771 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED);
7772 engine_debug ('After select statment ');
7773 EXCEPTION
7774 WHEN NO_DATA_FOUND THEN
7775 FORALL j in l_l_line_index_tbl.FIRST..l_l_line_index_tbl.LAST
7776 INSERT INTO qp_npreq_line_attrs_tmp
7777 (LINE_INDEX,
7778 ATTRIBUTE_LEVEL,
7779 ATTRIBUTE_TYPE,
7780 CONTEXT,
7781 ATTRIBUTE,
7782 VALUE_FROM,
7783 VALIDATED_FLAG,
7784 APPLIED_FLAG ,
7785 PRICING_STATUS_CODE,
7786 PRICING_STATUS_TEXT,
7787 PRICING_ATTR_FLAG
7788 )
7789 VALUES (l_l_line_index_tbl(j),
7790 G_LINE_LEVEL,
7791 G_PRICING_TYPE,
7792 G_PRIC_VOLUME_CONTEXT,
7793 G_QUANTITY_ATTRIBUTE,
7794 qp_number.number_to_canonical(nvl(nvl(l_l_priced_quantity_tbl(j),l_l_line_quantity_tbl(j)),0)),
7795 G_NO,
7796 G_LIST_NOT_APPLIED,
7797 G_STATUS_UNCHANGED,
7798 'Unchanged',
7799 G_PRICING_YES
7800 );
7801 G_LIN_QTY_ATTR_SRCD := G_YES;
7802 WHEN OTHERS THEN
7803 NULL;
7804 END;
7805 END IF;
7806
7807 /* IF SQL%ROWCOUNT = 0 THEN
7808 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7809 engine_debug('No volume context in temp table, inserting one');
7810 END IF;
7811 INSERT_LINE_ATTRS
7812 (p_LINE_INDEX =>I.LINE_INDEX,
7813 p_ATTRIBUTE_LEVEL =>G_LINE_LEVEL,
7814 p_ATTRIBUTE_TYPE =>G_PRICING_TYPE,
7815 p_CONTEXT =>G_PRIC_VOLUME_CONTEXT,
7816 p_ATTRIBUTE =>G_QUANTITY_ATTRIBUTE,
7817 p_VALUE_FROM =>qp_number.number_to_canonical(nvl(NVL(I.PRICED_QUANTITY,I.LINE_QUANTITY),0)),
7818 p_VALIDATED_FLAG =>G_NO,
7819 p_APPLIED_FLAG =>G_LIST_NOT_APPLIED,
7820 p_PRICING_STATUS_CODE =>G_STATUS_UNCHANGED,
7821 P_PRICING_ATTR_FLAG =>G_PRICING_YES,
7822 x_status_code =>l_status_code,
7823 x_status_text =>l_status_text);
7824 END IF; */ -- Attribute Mapping is sourcing Volume Attributes 01/14/02, AC Nielsen Performance
7825
7826 /*
7827 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd5,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
7828 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd5,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
7829 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd5,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
7830 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd5,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
7831 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd5,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
7832 */
7833 -- julin [3805113]: bulk update
7834 l_ia_value_from_tbl(l_ia_bulk_count) := qp_number.number_to_canonical(nvl(nvl(l_l_priced_quantity_tbl(I),l_l_line_quantity_tbl(I)) * l_l_unit_price_tbl(I),0));
7835 l_ia_line_index_tbl(l_ia_bulk_count) := l_l_line_index_tbl(I);
7836 l_ia_attribute_tbl(l_ia_bulk_count) := G_LINE_AMT_ATTRIBUTE;
7837 l_ia_bulk_count := l_ia_bulk_count + 1;
7838
7839 /* IF SQL%ROWCOUNT = 0 THEN
7840 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7841 engine_debug('No volume context and line amt in temp table, inserting one');
7842 END IF;
7843 INSERT_LINE_ATTRS
7844 (p_LINE_INDEX =>I.LINE_INDEX,
7845 p_ATTRIBUTE_LEVEL =>G_LINE_LEVEL,
7846 p_ATTRIBUTE_TYPE =>G_PRICING_TYPE,
7847 p_CONTEXT =>G_PRIC_VOLUME_CONTEXT,
7848 p_ATTRIBUTE =>G_LINE_AMT_ATTRIBUTE,
7849 p_VALUE_FROM =>qp_number.number_to_canonical(nvl(nvl(I.PRICED_QUANTITY,I.LINE_QUANTITY) * I.UNIT_PRICE ,0)),
7850 p_VALIDATED_FLAG =>G_NO,
7851 p_APPLIED_FLAG =>G_LIST_NOT_APPLIED,
7852 p_PRICING_STATUS_CODE =>G_STATUS_UNCHANGED,
7853 P_PRICING_ATTR_FLAG =>G_PRICING_YES,
7854 x_status_code =>l_status_code,
7855 x_status_text =>l_status_text);
7856 END IF; */ -- Attribute Mapping is sourcing Volume Attributes 01/14/02, AC Nielsen Performance
7857
7858
7859 /*UPDATE qp_npreq_lines_tmp
7860 SET LINE_AMOUNT = nvl(nvl(I.PRICED_QUANTITY,I.LINE_QUANTITY) * I.UNIT_PRICE,0)
7861 WHERE LINE_INDEX = I.LINE_INDEX; */
7862
7863 G_QUALIFIER_TEMP := 'N';
7864
7865 END IF;
7866
7867 END LOOP;
7868
7869 -- julin [3805113]: bulk update for CROSS ORDER VOLUME
7870 IF (l_co_line_index_tbl.count > 0) THEN
7871 FORALL I IN l_co_line_index_tbl.first..l_co_line_index_tbl.last
7872 UPDATE /*+ index(qp_npreq_line_attrs_tmp qp_preq_line_attrs_tmp_n2) */ qp_npreq_line_attrs_tmp --upd4
7873 SET VALUE_FROM = qp_number.number_to_canonical(round(qp_number.canonical_to_number(nvl(VALUE_FROM,0)) * v_uom_rate, G_INV_DECIMAL_PRECISION))
7874 WHERE LINE_INDEX = l_co_line_index_tbl(I)
7875 AND CONTEXT = G_PRIC_VOLUME_CONTEXT
7876 AND ATTRIBUTE IN ('PRICING_ATTRIBUTE3','PRICING_ATTRIBUTE1','PRICING_ATTRIBUTE11')
7877 AND ATTRIBUTE_TYPE = G_PRICING_TYPE
7878 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED;
7879 END IF;
7880
7881 -- julin [3805113]: bulk update for ITEM AMOUNT
7882 IF (l_ia_line_index_tbl.count > 0) THEN
7883 FORALL I IN l_ia_line_index_tbl.first..l_ia_line_index_tbl.last
7884 UPDATE /*+ index(qp_npreq_line_attrs_tmp qp_preq_line_attrs_tmp_n2) */ qp_npreq_line_attrs_tmp --upd3, upd5
7885 SET VALUE_FROM = l_ia_value_from_tbl(I)
7886 WHERE LINE_INDEX = l_ia_line_index_tbl(I)
7887 AND CONTEXT = G_PRIC_VOLUME_CONTEXT
7888 AND ATTRIBUTE = l_ia_attribute_tbl(I)
7889 AND ATTRIBUTE_TYPE = G_PRICING_TYPE
7890 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED;
7891 END IF;
7892
7893 -- ORDER AMOUNT(Discounts Sequence) only for BATCH event
7894 IF (p_pricing_phase_seq <> G_PRICE_LIST_SEQUENCE and p_ordr_amt_flag = G_YES) THEN
7895 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7896 engine_debug ('Trying to update order amount in temp table');
7897
7898 END IF;
7899 OPEN order_amount_cur;
7900 FETCH order_amount_cur INTO v_order_amt;
7901 CLOSE order_amount_cur;
7902
7903 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7904 engine_debug ('v_order_amt = ' || v_order_amt);
7905 engine_debug ('G_BEFORE_PRICING_ORD_AMT = ' || G_BEFORE_PRICING_ORD_AMT);
7906 END IF;
7907
7908 /*
7909 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd6,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
7910 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd6,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
7911 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd6,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
7912 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd6,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
7913 */
7914 -- Bug 3143535 - ORDER AMOUNT CALCULATION ISSUE
7915 UPDATE qp_npreq_line_attrs_tmp --upd6
7916 --SET VALUE_FROM = qp_number.number_to_canonical(v_order_amt)
7917 SET VALUE_FROM = qp_number.number_to_canonical(qp_number.canonical_to_number(value_from)
7918 - G_BEFORE_PRICING_ORD_AMT
7919 + v_order_amt)
7920 WHERE
7921 CONTEXT = G_PRIC_VOLUME_CONTEXT
7922 AND ATTRIBUTE = G_ORDER_AMOUNT_ATTRIBUTE
7923 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
7924 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED;
7925
7926 IF SQL%ROWCOUNT = 0 THEN
7927 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7928 engine_debug('No volume context and order amt in temp table, inserting one');
7929
7930 END IF;
7931 INSERT INTO qp_npreq_line_attrs_tmp
7932 (LINE_INDEX,ATTRIBUTE_LEVEL,ATTRIBUTE_TYPE,CONTEXT,ATTRIBUTE,VALUE_FROM,
7933 VALIDATED_FLAG,APPLIED_FLAG,PRICING_STATUS_CODE,PRICING_ATTR_FLAG)
7934 SELECT
7935 LINE_INDEX,
7936 LINE_TYPE_CODE,
7937 G_QUALIFIER_TYPE,
7938 G_PRIC_VOLUME_CONTEXT,
7939 G_ORDER_AMOUNT_ATTRIBUTE,
7940 qp_number.number_to_canonical(v_order_amt),
7941 G_NO,
7942 G_NO,
7943 G_STATUS_UNCHANGED,
7944 G_NO
7945 FROM qp_npreq_lines_tmp;
7946
7947 END IF;
7948
7949 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7950 declare
7951 l_value_from varchar2(240);
7952 begin
7953 select value_from
7954 into l_value_from
7955 from qp_npreq_line_attrs_tmp
7956 where CONTEXT = G_PRIC_VOLUME_CONTEXT
7957 AND ATTRIBUTE = G_ORDER_AMOUNT_ATTRIBUTE
7958 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
7959 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
7960 and rownum = 1;
7961
7962 engine_debug ('final order amount attribute = ' || l_value_from);
7963 exception
7964 when no_data_found then
7965 null;
7966 when others then
7967 null;
7968 end;
7969 END IF;
7970
7971 END IF;
7972
7973 END LOOP;
7974 CLOSE get_request_lines_cur;
7975 qp_debug_util.tstop('SOURCE_VOL_CONTEXTS_ATTRIBUTES');
7976 EXCEPTION
7977 WHEN OTHERS THEN
7978 x_status_code := FND_API.G_RET_STS_ERROR;
7979 x_status_text := l_routine ||': '||SQLERRM;
7980 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7981 engine_debug(x_status_text);
7982 END IF;
7983 qp_debug_util.tstop('SOURCE_VOL_CONTEXTS_ATTRIBUTES');
7984 END Source_Vol_Contexts_Attributes;
7985
7986 PROCEDURE Update_Distinct_Qualifier_Flag( x_status_code OUT NOCOPY VARCHAR2,
7987 x_status_text OUT NOCOPY VARCHAR2) AS
7988
7989 l_routine VARCHAR2(40) := 'Update_Distinct_Qualifier_Flag';
7990 BEGIN
7991 qp_debug_util.tstart('UPDATE_DISTINCT_QUALIFIER_FLAG','Procedure UPDATE_DISTINCT_QUALIFIER_FLAG');
7992 /*
7993 INDX,QP_PREQ_GRP.update_distinct_qualifier_flag.sel1,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
7994 INDX,QP_PREQ_GRP.update_distinct_qualifier_flag.sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
7995 INDX,QP_PREQ_GRP.update_distinct_qualifier_flag.sel1,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
7996 INDX,QP_PREQ_GRP.update_distinct_qualifier_flag.sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
7997 INDX,QP_PREQ_GRP.update_distinct_qualifier_flag.sel1,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
7998 INDX,QP_PREQ_GRP.update_distinct_qualifier_flag.sel1,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
7999 */
8000 UPDATE /*+ dynamic_sampling(1) */ qp_npreq_line_attrs_tmp a
8001 SET distinct_qualifier_flag = 'Y'
8002 WHERE pricing_status_code = G_STATUS_UNCHANGED
8003 AND attribute_type = G_QUALIFIER_TYPE
8004 AND rowid = (SELECT /*+ dynamic_sampling(1) INDEX(b QP_PREQ_LINE_ATTRS_TMP_N6) */ min(rowid) --bug 14464004
8005 FROM qp_npreq_line_attrs_tmp b
8006 WHERE a.context = b.context
8007 AND a.attribute = b.attribute
8008 AND a.value_from = b.value_from
8009 AND b.attribute_type = G_QUALIFIER_TYPE
8010 AND b.pricing_status_code = G_STATUS_UNCHANGED);
8011
8012 -- This is much performant than the previous sql
8013 /* UPDATE qp_npreq_line_attrs_tmp a
8014 SET distinct_qualifier_flag = 'Y'
8015 WHERE pricing_status_code = G_STATUS_UNCHANGED
8016 AND attribute_type = G_QUALIFIER_TYPE
8017 AND rowid = (SELECT min(rowid)
8018 FROM qp_npreq_line_attrs_tmp b
8019 WHERE b.attribute_type = G_QUALIFIER_TYPE
8020 AND b.pricing_status_code = G_STATUS_UNCHANGED
8021 GROUP BY b.context , b.attribute , b.value_from); */
8022 qp_debug_util.tstop('UPDATE_DISTINCT_QUALIFIER_FLAG');
8023 EXCEPTION
8024 WHEN OTHERS THEN
8025 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8026 engine_debug(l_routine||' '||SQLERRM);
8027 END IF;
8028 x_status_code := FND_API.G_RET_STS_ERROR;
8029 x_status_text := 'Error in '||l_routine||SQLERRM;
8030 qp_debug_util.tstop('UPDATE_DISTINCT_QUALIFIER_FLAG');
8031 END Update_Distinct_Qualifier_Flag;
8032
8033
8034 /*+-----------------------------------------------------------------------
8035 |PROCEDURE Delete_Duplicate_List_Lines
8036 +------------------------------------------------------------------------
8037 */
8038
8039 -- shu fix bug 1915355
8040
8041 PROCEDURE Delete_Duplicate_List_Lines(p_pricing_phase_id NUMBER,
8042 x_status_code OUT NOCOPY VARCHAR2,
8043 x_status_text OUT NOCOPY VARCHAR2) AS
8044
8045 l_routine VARCHAR2(40) := 'Delete_Duplicate_List_Lines';
8046
8047 CURSOR get_duplicate_list_lines_count IS
8048 SELECT count(*)
8049 FROM qp_npreq_ldets_tmp
8050 WHERE pricing_status_code = G_STATUS_NEW
8051 AND pricing_phase_id = p_pricing_phase_id
8052 GROUP BY line_index,created_from_list_line_id
8053 HAVING count(*) > 1;
8054
8055 l_count NUMBER := 0;
8056
8057 BEGIN
8058
8059 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8060 engine_debug('In Delete Duplicate List Lines procedure');
8061
8062 END IF;
8063 OPEN get_duplicate_list_lines_count;
8064 FETCH get_duplicate_list_lines_count INTO l_count;
8065 CLOSE get_duplicate_list_lines_count;
8066
8067 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8068 engine_debug('Duplicate List Lines Count : ' || l_count);
8069 END IF;
8070
8071 IF (l_count > 0) THEN
8072 UPDATE qp_npreq_ldets_tmp a
8073 SET pricing_status_code = 'DUPLICATE_LIST_LINE'
8074 WHERE pricing_status_code = G_STATUS_NEW
8075 AND pricing_phase_id = p_pricing_phase_id
8076 AND rowid not in (SELECT min(rowid)
8077 FROM qp_npreq_ldets_tmp
8078 WHERE pricing_status_code = G_STATUS_NEW
8079 AND pricing_phase_id = p_pricing_phase_id
8080 GROUP BY line_index,created_from_list_line_id);
8081 END IF;
8082 EXCEPTION
8083 WHEN OTHERS THEN
8084 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8085 engine_debug(l_routine||' '||SQLERRM);
8086 END IF;
8087 x_status_code := FND_API.G_RET_STS_ERROR;
8088 x_status_text := 'Error in '||l_routine||SQLERRM;
8089
8090 END Delete_Duplicate_List_Lines;
8091 --Added new procedure Delete_Hdrs_With_No_ProdAttr for 3520634
8092 /*+-----------------------------------------------------------------------
8093 |PROCEDURE Delete_Hdrs_With_No_ProdAttr
8094 +------------------------------------------------------------------------
8095 */
8096 --Added index hints for bug#7480862
8097 PROCEDURE Delete_Hdrs_With_No_ProdAttr(p_pricing_phase_id NUMBER,
8098 x_status_code OUT NOCOPY VARCHAR2,
8099 x_status_text OUT NOCOPY VARCHAR2) AS
8100
8101 l_routine VARCHAR2(40) := 'Delete_Hdrs_With_No_ProdAttr';
8102
8103 BEGIN
8104
8105 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8106 engine_debug('Entering '||l_routine);
8107 END IF;
8108 UPDATE /*+ index(a qpprod QP_PREQ_QUAL_TMP_N1) dynamic_sampling(1) */ qp_preq_qual_tmp a --5658579
8109 --UPDATE qp_preq_qual_tmp a
8110 SET pricing_status_code = G_STATUS_DELETED
8111 WHERE pricing_status_code = G_STATUS_UNCHANGED
8112 AND pricing_phase_id = p_pricing_phase_id
8113 AND list_line_id = -1
8114 AND NOT EXISTS (select /*+ NO_UNNEST
8115 leading (c)
8116 use_nl (c qpprod)
8117 index (qpprod, QP_PREQ_LINE_ATTRS_TMP_N6)
8118 index(c qp_pricing_attributes_n13) */
8119 'x'
8120 FROM qp_npreq_line_attrs_tmp qpprod, qp_pricing_attributes c
8121 WHERE c.list_header_id = a.list_header_id -- delete header for which product does
8122 AND c.pricing_phase_id = p_pricing_phase_id -- not match
8123 AND qpprod.context = c.product_attribute_context
8124 AND qpprod.attribute = c.product_attribute
8125 AND qpprod.value_from = c.product_attr_value
8126 AND qpprod.pricing_status_code = G_STATUS_UNCHANGED
8127 AND c.qualification_ind in (G_YES_PROD_HDR_LINE_QUAL_IND, G_YES_PROD_HDR_QUAL_IND,
8128 G_YES_PROD_PRIC_HDR_QUAL_IND, G_YES_PRIC_HDR_LINE_QUAL_IND)
8129 AND qpprod.attribute_type = G_PRODUCT_TYPE
8130 AND c.excluder_flag = G_NO
8131 AND rownum = 1
8132 --UNION
8133 --SELECT /*+ ORDERED USE_NL(d qppric) index(d qp_pricing_attributes_n5) */ 'x'
8134 /*FROM qp_npreq_line_attrs_tmp qpprod,
8135 qp_pricing_attributes d,
8136 qp_preq_line_attrs_tmp qppric
8137 WHERE d.list_header_id = a.list_header_id -- delete header for which product and
8138 AND d.pricing_phase_id = p_pricing_phase_id -- pricing attrbutes do not match
8139 AND d.QUALIFICATION_IND in (G_YES_PROD_PRIC_HDR_QUAL_IND, G_YES_PRIC_HDR_LINE_QUAL_IND)
8140 AND d.product_attribute_context = qpprod.context
8141 AND d.product_attribute = qpprod.attribute
8142 AND d.product_attr_value = qpprod.value_from
8143 AND d.excluder_flag = G_NO
8144 AND d.pricing_attribute_context = qppric.context
8145 AND d.pricing_attribute = qppric.attribute
8146 AND (d.pricing_attr_value_from = qppric.value_from
8147 or d.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN))
8148 AND qpprod.attribute_type='PRODUCT'
8149 AND qpprod.pricing_status_code=G_STATUS_UNCHANGED
8150 AND qppric.attribute_type = 'PRICING'
8151 AND qppric.pricing_status_code = G_STATUS_UNCHANGED
8152 AND qpprod.line_index = qppric.line_index
8153 AND rownum = 1*/
8154 )
8155 AND NOT EXISTS (SELECT 'x' --do not delete header for which product is not defined
8156 FROM qp_list_lines d
8157 WHERE d.list_header_id = a.list_header_id
8158 AND d.qualification_ind in (G_YES_HDR_LINE_QUAL_IND,G_YES_HDR_QUAL_IND)
8159 AND d.pricing_phase_id = p_pricing_phase_id
8160 AND rownum=1);
8161
8162 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8163 engine_debug('No of headers deleted from qual tmp due to non-matching of product : ' || l_routine || ' ' || SQL%ROWCOUNT);
8164 END IF;
8165
8166 EXCEPTION
8167 WHEN OTHERS THEN
8168 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8169 engine_debug(l_routine||' '||SQLERRM);
8170 END IF;
8171 x_status_code := FND_API.G_RET_STS_ERROR;
8172 x_status_text := 'Error in '||l_routine||SQLERRM;
8173
8174 END Delete_Hdrs_With_No_ProdAttr;
8175
8176
8177
8178 PROCEDURE Delete_Un_Asked_For_Promotions (p_line_index IN NUMBER,
8179 p_pricing_phase_id IN NUMBER,
8180 p_incompat_resolve_code IN VARCHAR2,
8181 x_return_status OUT NOCOPY
8182 VARCHAR2,
8183 x_return_status_txt OUT NOCOPY
8184 VARCHAR2) AS
8185 l_debug varchar2(3);
8186 l_pricing_status_code varchar2(30);
8187 BEGIN
8188 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
8189
8190 -- [julin/4116856]: moved from QP_Resolve_Incompatability_PVT.Best_Price_-
8191 -- For_Phase; required to delete un-asked-for promotions before they are
8192 -- processed.
8193 -- Delete lines which are actually ask_for in setup , but are not asked for in the Order
8194 -- Because Engine selects these lines irrespective of their ask_for_flag
8195 -- Index Certificate
8196 /*
8197 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
8198 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_ldets_tmp_N3,PRICING_PHASE_ID,2
8199 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_ldets_tmp_N3,ASK_FOR_FLAG,3
8200 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
8201 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
8202 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
8203 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
8204 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
8205 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
8206 */
8207 IF (p_incompat_resolve_code = G_INCOMP_BEST_PRICE) THEN
8208 l_pricing_status_code := QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL;
8209 ELSE
8210 l_pricing_status_code := QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC;
8211 END IF;
8212
8213
8214 UPDATE qp_npreq_ldets_tmp a --upd1
8215 SET PRICING_STATUS_CODE = l_pricing_status_code
8216 WHERE a.ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
8217 AND a.PRICING_PHASE_ID = p_pricing_phase_id
8218 AND a.LINE_INDEX = p_line_index
8219 AND NOT EXISTS (
8220 SELECT /*+ index(b QP_PREQ_LINE_ATTRS_TMP_N2) */ 'X' -- This can use N2 instead of N7
8221 FROM qp_npreq_line_attrs_tmp b
8222 WHERE b.LINE_INDEX = p_line_index
8223 AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UNCHANGED
8224 AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_QUALIFIER_TYPE
8225 AND b.CONTEXT = QP_PREQ_GRP.G_LIST_HEADER_CONTEXT
8226 AND b.ATTRIBUTE IN (QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,
8227 QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,
8228 QP_PREQ_GRP.G_QUAL_ATTRIBUTE6)
8229 AND b.VALUE_FROM = decode(b.ATTRIBUTE,
8230 QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,to_char(a.CREATED_FROM_LIST_HEADER_ID),
8231 QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,to_char(a.CREATED_FROM_LIST_LINE_ID),
8232 QP_PREQ_GRP.G_QUAL_ATTRIBUTE6,to_char(a.CREATED_FROM_LIST_HEADER_ID)));
8233
8234 IF l_debug = FND_API.G_TRUE THEN
8235 QP_PREQ_GRP.engine_debug ('Deleted Un Asked for promotions:'||l_pricing_status_code);
8236 END IF;
8237
8238 EXCEPTION
8239 WHEN OTHERS THEN
8240 x_return_status := FND_API.G_RET_STS_ERROR;
8241 x_return_status_txt := 'Unexpected error in QP_PREQ_GRP.Delete_Un_Asked_For_Promotions: ' || SQLERRM;
8242 END Delete_Un_Asked_For_Promotions;
8243
8244
8245
8246 /*+-----------------------------------------------------------------------
8247 |PROCEDURE Populate_Temp_Tables
8248 +------------------------------------------------------------------------
8249 */
8250 PROCEDURE Populate_Temp_Tables
8251 (p_line_tbl IN LINE_TBL_TYPE,
8252 p_qual_tbl IN QUAL_TBL_TYPE,
8253 p_line_attr_tbl IN LINE_ATTR_TBL_TYPE,
8254 p_LINE_DETAIL_tbl IN LINE_DETAIL_TBL_TYPE,
8255 p_LINE_DETAIL_qual_tbl IN LINE_DETAIL_QUAL_TBL_TYPE,
8256 p_LINE_DETAIL_attr_tbl IN LINE_DETAIL_ATTR_TBL_TYPE,
8257 p_rltd_lines_tbl IN RELATED_LINES_TBL_TYPE,
8258 p_rounding_flag IN VARCHAR2,
8259 p_pricing_status_code IN VARCHAR2,
8260 p_price_phase_flag IN BOOLEAN,
8261 p_freeze_override_flag IN VARCHAR2,
8262 p_pricing_event IN VARCHAR2,
8263 p_calculate_flag IN VARCHAR2,
8264 x_status_code OUT NOCOPY VARCHAR2,
8265 x_status_text OUT NOCOPY VARCHAR2
8266 )
8267
8268 AS
8269
8270 I PLS_INTEGER;
8271 v_error_code NUMBER;
8272 v_error_message VARCHAR2(255);
8273 l_message VARCHAR2(255);
8274 l_status_code VARCHAR2(240);
8275 l_status_text VARCHAR2(240);
8276 l_pricing_status_code VARCHAR2(30);
8277 v_pricing_status_code VARCHAR2(30);
8278 J PLS_INTEGER:=1;
8279 K PLS_INTEGER:=1;
8280 TYPE line_index_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
8281 l_line_index_tbl line_index_type;
8282 E_DATE_IS_NULL EXCEPTION;
8283 E_CURRENCY_CODE_IS_NULL EXCEPTION;
8284 l_routine VARCHAR2(240):='QP_PREQ_GRP.Populate_Temp_Tables';
8285 l_count PLS_INTEGER;
8286 l_attribute_type VARCHAR2(30);
8287 l_line_quantity NUMBER;
8288 l_line_amount NUMBER;
8289 l_unit_price NUMBER;
8290 l_order_header_id VARCHAR2(200) := 'MISSING HEADER';
8291 l_order_line_id NUMBER;
8292 l_not_insert_order_line_flag BOOLEAN := FALSE;
8293 l_summary_line_index PLS_INTEGER;
8294 l_price_flag VARCHAR2(1);
8295 l_source_qty_flag VARCHAR2(1);
8296 l_source_amt_flag VARCHAR2(1);
8297
8298 E_ROUTINE_ERRORS EXCEPTION;
8299
8300 /*
8301 INDX,QP_PREQ_GRP.populate_temp_tables.l_get_count_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
8302 */
8303 CURSOR l_get_count_cur IS
8304 SELECT COUNT(*)
8305 FROM qp_npreq_line_attrs_tmp
8306 WHERE PRICING_STATUS_CODE = 'X';
8307
8308 --added by yangli for Java Engine project
8309 /*
8310 INDX,QP_PREQ_GRP.populate_temp_tables.l_int_count_cur,qp_int_line_attrs_N2,PRICING_STATUS_CODE,1
8311 */
8312 CURSOR l_int_count_cur IS
8313 SELECT COUNT(*)
8314 FROM qp_int_line_attrs
8315 WHERE PRICING_STATUS_CODE = 'X';
8316 --added by yangli for Java Engine project
8317
8318 -- begin declare shu fix bug 1728757
8319 l_list_header_id qp_qualifiers.list_header_id%type := NULL;
8320 --l_cascade_ask_for_profile VARCHAR2(2):= nvl(FND_PROFILE.value ('QP_CASCADE_ASK_FOR_PROMOTION'), G_NO);
8321 l_cascade_ask_for_profile VARCHAR2(2):= G_NO;
8322 l_ask_for_flag qp_list_headers_b.ask_for_flag%type := NULL;
8323
8324 CURSOR get_ask_for_flag_cur (l_list_header_id IN NUMBER) IS
8325 SELECT a.ask_for_flag
8326 FROM qp_list_headers_b a
8327 WHERE a.list_header_id = l_list_header_id;
8328
8329 CURSOR l_ask_for_child_ids (l_list_header_id IN NUMBER) IS
8330 SELECT
8331 qp_lhdr_b.list_header_id
8332 FROM
8333 qp_list_headers_b qp_lhdr_b
8334 WHERE
8335 qp_lhdr_b.parent_list_header_id = l_list_header_id AND qp_lhdr_b.ask_for_flag = G_YES;
8336
8337 -- end shu fix bug 1728757
8338
8339 BEGIN
8340 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8341 engine_debug('Rounding Flag: '||p_rounding_flag);
8342 engine_debug ('Passed in Attribute Count : ' || p_line_attr_tbl.count);
8343 engine_debug ('Passed in Qualifier Count : ' || p_qual_tbl.count);
8344 engine_debug ('Passed in Lines Count : ' || p_line_tbl.count);
8345 engine_debug ('Passed in Line dtls Count : ' || p_LINE_DETAIL_tbl.count);
8346 engine_debug ('-----Line information passed-----');
8347 END IF;
8348 I:= p_line_tbl.FIRST;
8349
8350 --if the control record says it is calculate_only
8351 --then it will bypass search so, pricing_status_code should
8352 --be G_STATUS_NEW as is it is selected by search engine.
8353
8354 l_pricing_status_code := p_pricing_status_code;
8355
8356
8357 --Reset_all_tbls;
8358 Reset_All_Tbls(l_status_code ,l_status_text );
8359 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
8360 RAISE E_ROUTINE_ERRORS;
8361 END IF;
8362
8363 K:=1;
8364 WHILE I IS NOT NULL LOOP
8365
8366
8367 IF ( p_line_tbl(I).CURRENCY_CODE IS NULL or
8368 p_line_tbl(I).CURRENCY_CODE = FND_API.G_MISS_CHAR ) THEN
8369 RAISE E_CURRENCY_CODE_IS_NULL;
8370 ELSE
8371 --IF (G_CURRENCY_CODE IS NULL) THEN
8372 G_CURRENCY_CODE := p_line_tbl(I).CURRENCY_CODE;
8373 --END IF;
8374 END IF;
8375
8376
8377 IF ( p_line_tbl(I).PRICING_EFFECTIVE_DATE IS NULL ) THEN
8378 RAISE E_DATE_IS_NULL;
8379 END IF;
8380 --Begin Bug# 7833575
8381 --uncommented the commenting done for FP 7321922
8382 IF (G_MIN_PRICING_DATE IS NULL) THEN
8383 G_MIN_PRICING_DATE := TRUNC(p_line_tbl(I).PRICING_EFFECTIVE_DATE);
8384 G_MAX_PRICING_DATE := TRUNC(p_line_tbl(I).PRICING_EFFECTIVE_DATE);
8385 --/* --FP 7321922
8386 ELSE
8387 IF (TRUNC(p_line_tbl(I).PRICING_EFFECTIVE_DATE) < TRUNC(G_MIN_PRICING_DATE) AND
8388 p_line_tbl(I).LINE_TYPE_CODE <> 'ORDER') THEN
8389 G_MIN_PRICING_DATE := TRUNC(p_line_tbl(I).PRICING_EFFECTIVE_DATE);
8390 END IF;
8391 IF (TRUNC(p_line_tbl(I).PRICING_EFFECTIVE_DATE) > TRUNC(G_MAX_PRICING_DATE) AND
8392 p_line_tbl(I).LINE_TYPE_CODE <> 'ORDER') THEN
8393 G_MAX_PRICING_DATE := TRUNC(p_line_tbl(I).PRICING_EFFECTIVE_DATE);
8394 END IF;
8395 END IF;
8396 --*/
8397 --End Bug# 7833575
8398 IF (instr(p_pricing_event || ',' ,'PRICE,',1,1) > 0 OR instr(p_pricing_event || ',' ,'LINE,',1,1) > 0) THEN
8399 --IF (p_pricing_event in ('PRICE','LINE')) THEN
8400 l_not_insert_order_line_flag := TRUE;
8401 ELSE
8402 l_not_insert_order_line_flag := FALSE;
8403 END IF;
8404
8405 l_summary_line_index := -99999; -- Reset
8406 l_price_flag := p_line_tbl(I).price_flag ; -- Default/Reset
8407
8408 IF (p_line_tbl(I).LINE_TYPE_CODE = G_ORDER_LEVEL) THEN
8409 l_summary_line_index := p_line_tbl(I).LINE_INDEX;
8410 l_order_header_id := to_char(p_line_tbl(I).LINE_ID);
8411 G_ORDER_ID := p_line_tbl(I).LINE_ID; -- accum range break
8412 --Global variable for limits
8413 G_ORDER_PRICE_REQUEST_CODE := p_line_tbl(I).REQUEST_TYPE_CODE || '-' || l_order_header_id;
8414 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8415 engine_debug( ' Order Price Request Code : ' || G_ORDER_PRICE_REQUEST_CODE);
8416 END IF;
8417 END IF;
8418
8419 IF (p_line_tbl(I).LINE_TYPE_CODE = G_ORDER_LEVEL AND l_not_insert_order_line_flag = TRUE) THEN
8420 l_price_flag := 'N'; -- for summary line
8421 END IF;
8422
8423 --dbms_output.put_line ('Min Sysdate : ' || G_MIN_PRICING_DATE);
8424 --dbms_output.put_line ('Max Sysdate : ' || G_MAX_PRICING_DATE);
8425
8426 -- do not overwrite the list price if it is a calculate call
8427 IF ((p_line_tbl(I).PRICE_FLAG = G_YES OR (p_line_tbl(I).PRICE_FLAG = G_PHASE AND p_freeze_override_flag = G_YES))
8428 AND p_price_phase_flag = TRUE AND G_MANUAL_ADJUSTMENTS_CALL_FLAG = G_NO
8429 AND p_calculate_flag IN (G_SEARCH_ONLY,G_SEARCH_N_CALCULATE))
8430 AND NVL (p_line_tbl(I).LIST_PRICE_OVERRIDE_FLAG, 'N') = 'N' --po integration
8431 THEN
8432 l_unit_price := NULL;
8433 ELSE
8434 l_unit_price := p_line_tbl(I).UNIT_PRICE;
8435 END IF;
8436
8437 --IF (l_not_insert_order_line_flag = TRUE and p_line_tbl(I).LINE_TYPE_CODE <> G_ORDER_LEVEL or
8438 -- l_not_insert_order_line_flag = FALSE) THEN
8439 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8440 engine_debug (' Loading the line info into plsql tables');
8441
8442 END IF;
8443 G_LINE_INDEX_TBL(K) := p_line_tbl(I).LINE_INDEX;
8444 G_LINE_TYPE_CODE_TBL(K) := p_line_tbl(I).LINE_TYPE_CODE;
8445 G_PRICING_EFFECTIVE_DATE_TBL(K):= TRUNC(p_line_tbl(I).PRICING_EFFECTIVE_DATE);
8446 G_ACTIVE_DATE_FIRST_TBL(K) := TRUNC(p_line_tbl(I).ACTIVE_DATE_FIRST);
8447 G_ACTIVE_DATE_FIRST_TYPE_TBL(K):= p_line_tbl(I).ACTIVE_DATE_FIRST_TYPE;
8448 G_ACTIVE_DATE_SECOND_TBL(K) := TRUNC(p_line_tbl(I).ACTIVE_DATE_SECOND);
8449 G_ACTIVE_DATE_SECOND_TYPE_TBL(K):= p_line_tbl(I).ACTIVE_DATE_SECOND_TYPE;
8450 G_LINE_QUANTITY_TBL(K) := p_line_tbl(I).LINE_QUANTITY;
8451 G_LINE_UOM_CODE_TBL(K) := p_line_tbl(I).LINE_UOM_CODE;
8452 G_REQUEST_TYPE_CODE_TBL(K) := p_line_tbl(I).REQUEST_TYPE_CODE;
8453 G_UOM_QUANTITY_TBL(K) := p_line_tbl(I).UOM_QUANTITY;
8454
8455 If p_price_phase_flag = TRUE AND p_line_tbl(I).LIST_PRICE_OVERRIDE_FLAG IN (
8456 'Y', 'O')
8457 Then --po integration
8458 G_PRICED_QUANTITY_TBL(K) := p_line_tbl(I).LINE_QUANTITY;
8459 G_PRICED_UOM_CODE_TBL(K) := p_line_tbl(I).LINE_UOM_CODE;
8460 G_ADJUSTED_UNIT_PRICE_TBL(K) := l_unit_price;
8461 G_LINE_UNIT_PRICE_TBL(K) := l_unit_price; /* shu_latest */
8462 Else
8463 G_PRICED_QUANTITY_TBL(K) := p_line_tbl(I).PRICED_QUANTITY;
8464 G_PRICED_UOM_CODE_TBL(K) := p_line_tbl(I).PRICED_UOM_CODE;
8465 G_ADJUSTED_UNIT_PRICE_TBL(K) := p_line_tbl(I).ADJUSTED_UNIT_PRICE;
8466 G_LINE_UNIT_PRICE_TBL(K) := p_line_tbl(I).LINE_UNIT_PRICE; /* shu_latest */
8467 End If; --po integration
8468
8469 G_CURRENCY_CODE_TBL(K) := p_line_tbl(I).CURRENCY_CODE;
8470 G_UNIT_PRICE_TBL(K) := l_unit_price;
8471 G_PERCENT_PRICE_TBL(K) := p_line_tbl(I).PERCENT_PRICE;
8472 G_UPD_ADJUSTED_UNIT_PRICE_TBL(K):= p_line_tbl(I).UPDATED_ADJUSTED_UNIT_PRICE;
8473 G_PROCESSED_FLAG_TBL(K) := G_NOT_PROCESSED;
8474 G_PRICE_FLAG_TBL(K) := l_price_flag;
8475 G_LINE_ID_TBL(K) := p_line_tbl(I).LINE_ID;
8476 G_ROUNDING_FLAG_TBL(K) := p_rounding_flag;
8477 G_ROUNDING_FACTOR_TBL(K) := p_line_tbl(I).ROUNDING_FACTOR;
8478 G_PROCESSING_ORDER_TBL(K) := NULL;
8479 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_UNCHANGED; -- always when inserted
8480 G_PRICING_STATUS_TEXT_tbl(K) := NULL;
8481 G_QUALIFIERS_EXIST_FLAG_TBL(K) := 'N';
8482 G_PRICING_ATTRS_EXIST_FLAG_TBL(K) := 'N';
8483 G_PRICE_LIST_ID_TBL(K) := -9999;
8484 G_PL_VALIDATED_FLAG_TBL(K) := 'N';
8485 G_USAGE_PRICING_TYPE_TBL(K) := nvl(p_line_tbl(I).USAGE_PRICING_TYPE,G_REGULAR_USAGE_TYPE);
8486 G_LINE_CATEGORY_TBL(K) := p_line_tbl(I).LINE_CATEGORY;
8487 G_CONTRACT_START_DATE_TBL(K) := p_line_tbl(I).CONTRACT_START_DATE; /* shulin */
8488 G_CONTRACT_END_DATE_TBL(K) := p_line_tbl(I).CONTRACT_END_DATE; /* shulin */
8489 G_LIST_PRICE_OVERRIDE_FLAG_TBL(K) := nvl (p_line_tbl(I).LIST_PRICE_OVERRIDE_FLAG, 'N'); --po integration
8490 G_CHARGE_PERIODICITY_CODE_TBL(K) := p_line_tbl(I).CHARGE_PERIODICITY_CODE;
8491 G_SERVICE_DURATION_DEF_TBL(K) := p_line_tbl(I).SERVICE_DURATION; -- SERVICE PROJECT
8492 G_SERVICE_PERIOD_DEF_TBL(K) := p_line_tbl(I).SERVICE_PERIOD; -- SERVICE PROJECT
8493
8494 /* IF (p_line_tbl(I).HEADER_ID IS NULL) THEN
8495 l_order_header_id := 'MISSING HEADER';
8496 ELSE
8497 l_order_header_id := to_char(p_line_tbl(I).HEADER_ID);
8498 END IF; */
8499
8500 IF (p_line_tbl(I).LINE_ID IS NULL) THEN
8501 SELECT qp_limit_price_request_code_s.nextval
8502 INTO l_order_line_id
8503 FROM dual;
8504 ELSE
8505 l_order_line_id := p_line_tbl(I).LINE_ID;
8506 END IF;
8507
8508 IF (p_line_tbl(I).LINE_TYPE_CODE = G_LINE_LEVEL) THEN
8509 IF (p_line_tbl(I).PRICE_REQUEST_CODE IS NULL) THEN
8510 G_PRICE_REQUEST_CODE_TBL(K):=p_line_tbl(I).REQUEST_TYPE_CODE || '-' || l_order_header_id || '-' || l_order_line_id;
8511 ELSE
8512 G_PRICE_REQUEST_CODE_TBL(K):=p_line_tbl(I).PRICE_REQUEST_CODE;
8513 END IF;
8514 ELSE
8515 IF (p_line_tbl(I).PRICE_REQUEST_CODE IS NULL) THEN
8516 G_PRICE_REQUEST_CODE_TBL(K):=p_line_tbl(I).REQUEST_TYPE_CODE || '-' || l_order_header_id;
8517 ELSE
8518 G_PRICE_REQUEST_CODE_TBL(K):=p_line_tbl(I).PRICE_REQUEST_CODE;
8519 END IF;
8520 END IF;
8521
8522 --END IF;
8523
8524 I:= p_line_tbl.NEXT(I);
8525 K:=K+1;
8526 END LOOP;
8527
8528 IF K > 1 THEN
8529 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8530 engine_debug ('Bulk Inserting the actual lines : ' || G_PRICE_LIST_ID_TBL(1));
8531 END IF;
8532 INSERT_LINES2
8533 (p_LINE_INDEX => G_LINE_INDEX_TBL,
8534 p_LINE_TYPE_CODE => G_LINE_TYPE_CODE_TBL,
8535 p_PRICING_EFFECTIVE_DATE =>G_PRICING_EFFECTIVE_DATE_TBL,
8536 p_ACTIVE_DATE_FIRST =>G_ACTIVE_DATE_FIRST_TBL,
8537 p_ACTIVE_DATE_FIRST_TYPE =>G_ACTIVE_DATE_FIRST_TYPE_TBL,
8538 p_ACTIVE_DATE_SECOND =>G_ACTIVE_DATE_SECOND_TBL,
8539 p_ACTIVE_DATE_SECOND_TYPE =>G_ACTIVE_DATE_SECOND_TYPE_TBL,
8540 p_LINE_QUANTITY => G_LINE_QUANTITY_TBL,
8541 p_LINE_UOM_CODE => G_LINE_UOM_CODE_TBL,
8542 p_REQUEST_TYPE_CODE => G_REQUEST_TYPE_CODE_TBL,
8543 p_PRICED_QUANTITY => G_PRICED_QUANTITY_TBL,
8544 p_PRICED_UOM_CODE => G_PRICED_UOM_CODE_TBL,
8545 p_CURRENCY_CODE => G_CURRENCY_CODE_TBL,
8546 p_UNIT_PRICE => G_UNIT_PRICE_TBL,
8547 p_PERCENT_PRICE => G_PERCENT_PRICE_TBL,
8548 p_UOM_QUANTITY => G_UOM_QUANTITY_TBL,
8549 p_ADJUSTED_UNIT_PRICE =>G_ADJUSTED_UNIT_PRICE_TBL,
8550 p_UPD_ADJUSTED_UNIT_PRICE =>G_UPD_ADJUSTED_UNIT_PRICE_TBL,
8551 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_TBL,
8552 p_PRICE_FLAG =>G_PRICE_FLAG_TBL,
8553 p_LINE_ID =>G_LINE_ID_TBL,
8554 p_PROCESSING_ORDER =>G_PROCESSING_ORDER_TBL,
8555 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_tbl,
8556 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_tbl,
8557 p_ROUNDING_FLAG =>G_ROUNDING_FLAG_TBL,
8558 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
8559 p_QUALIFIERS_EXIST_FLAG => G_QUALIFIERS_EXIST_FLAG_TBL,
8560 p_PRICING_ATTRS_EXIST_FLAG =>G_PRICING_ATTRS_EXIST_FLAG_TBL,
8561 p_PRICE_LIST_ID => G_PRICE_LIST_ID_TBL,
8562 p_VALIDATED_FLAG => G_PL_VALIDATED_FLAG_TBL,
8563 p_PRICE_REQUEST_CODE => G_PRICE_REQUEST_CODE_TBL,
8564 p_USAGE_PRICING_TYPE =>G_USAGE_PRICING_TYPE_tbl,
8565 p_LINE_CATEGORY =>G_LINE_CATEGORY_TBL,
8566 p_CONTRACT_START_DATE =>G_CONTRACT_START_DATE_TBL, /* shulin */
8567 p_CONTRACT_END_DATE =>G_CONTRACT_END_DATE_TBL, /* shulin */
8568 p_LINE_UNIT_PRICE =>G_LINE_UNIT_PRICE_TBL, /* shu_latest */
8569 p_LIST_PRICE_OVERRIDE_FLAG => G_LIST_PRICE_OVERRIDE_FLAG_TBL, -- po integration
8570 p_CHARGE_PERIODICITY_CODE => G_CHARGE_PERIODICITY_CODE_TBL,
8571 p_SERVICE_DURATION => G_SERVICE_DURATION_DEF_TBL, -- SERVICE PROJECT
8572 p_SERVICE_PERIOD => G_SERVICE_PERIOD_DEF_TBL, -- SERVICE PROJECT
8573 x_status_code =>l_status_code,
8574 x_status_text =>l_status_text);
8575
8576 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
8577 RAISE E_ROUTINE_ERRORS;
8578 END IF;
8579 END IF;
8580
8581 /*************************populating line attributes *****************************/
8582
8583 --Reset_all_tbls;
8584 Reset_All_Tbls(l_status_code ,l_status_text );
8585 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
8586 RAISE E_ROUTINE_ERRORS;
8587 END IF;
8588
8589 I:= p_qual_tbl.FIRST;
8590 K:=1;
8591
8592 WHILE (I IS NOT NULL AND
8593 (l_not_insert_order_line_flag = TRUE
8594 and p_qual_tbl(I).LINE_INDEX <> l_summary_line_index or
8595 l_not_insert_order_line_flag = FALSE)) LOOP
8596 G_LINE_INDEX_tbl(K) := p_qual_tbl(I).LINE_INDEX;
8597 G_ATTRIBUTE_LEVEL_tbl(K) := G_LINE_LEVEL;
8598 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
8599 G_CONTEXT_tbl(K) := p_qual_tbl(I).QUALIFIER_CONTEXT;
8600 G_ATTRIBUTE_tbl(K) := p_qual_tbl(I).QUALIFIER_ATTRIBUTE;
8601 G_VALUE_FROM_tbl(K) := p_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM;
8602 G_VALUE_TO_tbl(K) := p_qual_tbl(I).QUALIFIER_ATTR_VALUE_TO;
8603 G_COMPARISON_OPERATOR_TYPE_tbl(K):=p_qual_tbl(I).COMPARISON_OPERATOR_CODE;
8604 G_VALIDATED_FLAG_tbl(K) := p_qual_tbl(I).VALIDATED_FLAG;
8605 G_APPLIED_FLAG_tbl(K) := G_LIST_NOT_APPLIED;
8606 G_PRICING_STATUS_CODE_tbl(K) := l_pricing_status_code;
8607 G_PRICING_ATTR_FLAG_tbl(K) := G_YES;
8608 G_LINE_DETAIL_INDEX_tbl(K) := NULL;
8609 G_LIST_HEADER_ID_tbl(K) :=NULL;
8610 G_LIST_LINE_ID_tbl(K) :=NULL;
8611 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
8612 G_SETUP_VALUE_TO_tbl(K) :=NULL;
8613 G_GROUPING_NUMBER_tbl(K) :=NULL;
8614 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
8615 G_PRICING_STATUS_TEXT_tbl(K) :=NULL;
8616 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
8617 G_DATATYPE_tbl(K) :=NULL;
8618 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
8619 G_QUALIFIER_TYPE_TBL(K) :=NULL;
8620 G_EXCLUDER_FLAG_TBL(K) :=NULL;
8621 G_PRICING_PHASE_ID_TBL_A(K) :=NULL;
8622 G_INCOMP_GRP_CODE_TBL_A(K) := NULL;
8623 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := NULL;
8624 G_MODIFIER_LEVEL_CODE_TBL_A(K) := NULL;
8625 G_PRIMARY_UOM_FLAG_TBL_A(K) := NULL;
8626
8627 -- begin shu_promo, fix bug 1728757
8628
8629 IF p_qual_tbl(I).QUALIFIER_CONTEXT = 'MODLIST' AND
8630 p_qual_tbl(I).QUALIFIER_ATTRIBUTE IN ('QUALIFIER_ATTRIBUTE1','QUALIFIER_ATTRIBUTE6')-- promotion no.
8631 THEN
8632 G_LIST_HEADER_ID_TBL(K) := p_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM; -- promotion hdr id
8633 END IF;
8634
8635 IF p_qual_tbl(I).QUALIFIER_CONTEXT = 'MODLIST' AND
8636 p_qual_tbl(I).QUALIFIER_ATTRIBUTE IN ('QUALIFIER_ATTRIBUTE2')-- list line id
8637 THEN
8638 --G_LIST_LINE_ID_TBL(K) := p_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM; -- promotion list line id
8639 -- Get the list header id for the list line
8640 BEGIN
8641 SELECT list_header_id
8642 INTO G_LIST_HEADER_ID_TBL(K)
8643 FROM qp_list_lines
8644 WHERE list_line_id = to_number(p_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM);
8645 EXCEPTION
8646 WHEN NO_DATA_FOUND THEN
8647 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8648 engine_debug('Error in Finding List Header Id for List Line : '||
8649 p_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM);
8650 END IF;
8651 l_status_code := FND_API.G_RET_STS_ERROR;
8652 l_status_text := 'Error in Finding List Header Id for List Line : '||
8653 p_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM;
8654 RAISE E_ROUTINE_ERRORS;
8655 END ;
8656 END IF;
8657
8658 -- if it is a promotion
8659 IF p_qual_tbl(I).QUALIFIER_CONTEXT = 'MODLIST' AND
8660 p_qual_tbl(I).QUALIFIER_ATTRIBUTE = 'QUALIFIER_ATTRIBUTE1' -- promotion no.
8661 THEN
8662 l_list_header_id := p_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM; -- promotion hdr id
8663 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8664 engine_debug ('promotion hdr id: '|| l_list_header_id);
8665 END IF;
8666
8667 -- get ask_for_flag of this promotion
8668 OPEN get_ask_for_flag_cur(l_list_header_id);
8669 FETCH get_ask_for_flag_cur INTO l_ask_for_flag;
8670 CLOSE get_ask_for_flag_cur;
8671
8672 IF ( l_cascade_ask_for_profile = G_YES AND l_ask_for_flag = G_YES) THEN
8673 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8674 engine_debug ('perform cascading ask for pormotion to ask for deals...');
8675 END IF;
8676 -- cascade ask_for_promotion to ask_for_deals
8677
8678 --cursor gets ask for deals' list_header_ids
8679 for l_ask_for_child_ids_data in l_ask_for_child_ids (l_list_header_id) loop
8680 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8681 engine_debug ('cascaded ask for deals: ' || l_ask_for_child_ids_data.list_header_id);
8682 END IF;
8683 K:= K+1;
8684 G_LINE_INDEX_tbl(K) := p_qual_tbl(I).LINE_INDEX;
8685 G_ATTRIBUTE_LEVEL_tbl(K) := G_LINE_LEVEL;
8686 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
8687 G_CONTEXT_tbl(K) := p_qual_tbl(I).QUALIFIER_CONTEXT;
8688 G_ATTRIBUTE_tbl(K) := p_qual_tbl(I).QUALIFIER_ATTRIBUTE;
8689 G_VALUE_FROM_tbl(K) := l_ask_for_child_ids_data.list_header_id;
8690 G_VALUE_TO_tbl(K) := p_qual_tbl(I).QUALIFIER_ATTR_VALUE_TO;
8691 G_COMPARISON_OPERATOR_TYPE_tbl(K):=p_qual_tbl(I).COMPARISON_OPERATOR_CODE;
8692 G_VALIDATED_FLAG_tbl(K) := p_qual_tbl(I).VALIDATED_FLAG;
8693 G_APPLIED_FLAG_tbl(K) := G_LIST_NOT_APPLIED;
8694 G_PRICING_STATUS_CODE_tbl(K) := l_pricing_status_code;
8695 G_PRICING_ATTR_FLAG_tbl(K) := G_YES;
8696 G_LINE_DETAIL_INDEX_tbl(K) := NULL;
8697 G_LIST_HEADER_ID_tbl(K) :=NULL;
8698 G_LIST_LINE_ID_tbl(K) :=NULL;
8699 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
8700 G_SETUP_VALUE_TO_tbl(K) :=NULL;
8701 G_GROUPING_NUMBER_tbl(K) :=NULL;
8702 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
8703 G_PRICING_STATUS_TEXT_tbl(K) :=NULL;
8704 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
8705 G_DATATYPE_tbl(K) :=NULL;
8706 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
8707 G_QUALIFIER_TYPE_TBL(K) :=NULL;
8708 G_EXCLUDER_FLAG_TBL(K) :=NULL;
8709 G_PRICING_PHASE_ID_TBL_A(K) :=NULL;
8710 G_INCOMP_GRP_CODE_TBL_A(K) := NULL;
8711 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := NULL;
8712 G_MODIFIER_LEVEL_CODE_TBL_A(K) := NULL;
8713 G_PRIMARY_UOM_FLAG_TBL_A(K) := NULL;
8714 end loop; --end cursor l_ask_for_child_ids loop
8715 END IF; -- end if cascade ask_for_promotion
8716 END IF; -- end if if is a promotion
8717
8718 -- end shu_promo
8719 K:= K+1;
8720 I:= p_qual_tbl.NEXT(I);
8721 END LOOP;
8722
8723 I := p_line_attr_tbl.FIRST;
8724
8725 WHILE I IS NOT NULL LOOP
8726 IF (p_line_attr_tbl(I).PRICING_CONTEXT = G_ITEM_CONTEXT) THEN
8727 l_attribute_type := G_PRODUCT_TYPE;
8728 ELSE
8729 l_attribute_type := G_PRICING_TYPE;
8730 END IF;
8731
8732 G_LINE_INDEX_tbl(K) := p_line_attr_tbl(I).LINE_INDEX;
8733 G_ATTRIBUTE_LEVEL_tbl(K) := G_LINE_LEVEL;
8734 G_ATTRIBUTE_TYPE_tbl(K) := l_attribute_type;
8735 G_CONTEXT_tbl(K) := p_line_attr_tbl(I).PRICING_CONTEXT;
8736 G_ATTRIBUTE_tbl(K) := p_line_attr_tbl(I).PRICING_ATTRIBUTE;
8737 G_VALUE_FROM_tbl(K) := p_line_attr_tbl(I).PRICING_ATTR_VALUE_FROM;
8738 G_VALUE_TO_tbl(K) := p_line_attr_tbl(I).PRICING_ATTR_VALUE_TO;
8739 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
8740 G_VALIDATED_FLAG_tbl(K) := p_line_attr_tbl(I).VALIDATED_FLAG;
8741 G_APPLIED_FLAG_tbl(K) := G_LIST_NOT_APPLIED;
8742 G_PRICING_STATUS_CODE_tbl(K) := l_pricing_status_code;
8743 G_PRICING_ATTR_FLAG_tbl(K) := G_YES;
8744 G_LINE_DETAIL_INDEX_tbl(K) := NULL;
8745 G_LIST_HEADER_ID_tbl(K) :=NULL;
8746 G_LIST_LINE_ID_tbl(K) :=NULL;
8747 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
8748 G_SETUP_VALUE_TO_tbl(K) :=NULL;
8749 G_GROUPING_NUMBER_tbl(K) :=NULL;
8750 G_NO_QUALIFIERS_IN_GRP_tbl(K):=NULL;
8751 G_PRICING_STATUS_TEXT_tbl(K) :=NULL;
8752 G_QUALIFIER_PRECEDENCE_tbl(K):=NULL;
8753 G_DATATYPE_tbl(K) :=NULL;
8754 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
8755 G_QUALIFIER_TYPE_TBL(K) :=NULL;
8756 G_EXCLUDER_FLAG_TBL(K) :=NULL;
8757 G_PRICING_PHASE_ID_TBL_A(K) :=NULL;
8758 G_INCOMP_GRP_CODE_TBL_A(K) := NULL;
8759 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := NULL;
8760 G_MODIFIER_LEVEL_CODE_TBL_A(K) := NULL;
8761 G_PRIMARY_UOM_FLAG_TBL_A(K) := NULL;
8762 K:= K+1;
8763 I:= p_line_attr_tbl.NEXT(I);
8764 END LOOP;
8765
8766
8767 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8768 engine_debug('Before Sourcing Volume Attributes');
8769
8770 END IF;
8771 l_source_qty_flag := QP_BUILD_SOURCING_PVT.Is_Attribute_Used('VOLUME','PRICING_ATTRIBUTE10');
8772 l_source_amt_flag := QP_BUILD_SOURCING_PVT.Is_Attribute_Used('VOLUME','PRICING_ATTRIBUTE12');
8773
8774 IF (l_source_qty_flag = G_YES) THEN
8775
8776 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8777 engine_debug('Sourcing Quantity Attribute');
8778
8779 END IF;
8780 FOR G IN p_line_tbl.first .. p_line_tbl.last
8781 LOOP
8782
8783 IF (p_price_phase_flag = TRUE) THEN
8784 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8785 engine_debug('Pricing Phase Exists.. Sourcing Line Quantity');
8786 END IF;
8787 l_line_quantity := nvl(p_line_tbl(G).LINE_QUANTITY,0);
8788 ELSE
8789 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8790 engine_debug('Pricing Phase Does not Exist.. Sourcing Priced Quantity');
8791 END IF;
8792 l_line_quantity := nvl(nvl(p_line_tbl(G).PRICED_QUANTITY,p_line_tbl(G).LINE_QUANTITY),0);
8793 END IF;
8794
8795 --dbms_output.put_line ('Sourcing Item Qty for Line : ' ||p_line_tbl(G).LINE_INDEX );
8796
8797 -- Source Item Quantity
8798 G_LINE_INDEX_tbl(K) := p_line_tbl(G).LINE_INDEX;
8799 G_ATTRIBUTE_LEVEL_tbl(K) := G_LINE_LEVEL;
8800 G_ATTRIBUTE_TYPE_tbl(K) := G_PRICING_TYPE;
8801 G_CONTEXT_tbl(K) := G_PRIC_VOLUME_CONTEXT;
8802 G_ATTRIBUTE_tbl(K) := G_QUANTITY_ATTRIBUTE;
8803 G_VALUE_FROM_tbl(K) := qp_number.number_to_canonical(l_line_quantity);
8804 G_VALUE_TO_tbl(K) := NULL;
8805 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
8806 G_VALIDATED_FLAG_tbl(K) := G_NO;
8807 G_APPLIED_FLAG_tbl(K) := G_LIST_NOT_APPLIED;
8808 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_UNCHANGED;
8809 G_PRICING_ATTR_FLAG_tbl(K) := G_YES;
8810 G_LINE_DETAIL_INDEX_tbl(K) := NULL;
8811 G_LIST_HEADER_ID_tbl(K) :=NULL;
8812 G_LIST_LINE_ID_tbl(K) :=NULL;
8813 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
8814 G_SETUP_VALUE_TO_tbl(K) :=NULL;
8815 G_GROUPING_NUMBER_tbl(K) :=NULL;
8816 G_NO_QUALIFIERS_IN_GRP_tbl(K):=NULL;
8817 G_PRICING_STATUS_TEXT_tbl(K) :=NULL;
8818 G_QUALIFIER_PRECEDENCE_tbl(K):=NULL;
8819 G_DATATYPE_tbl(K) :=NULL;
8820 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
8821 G_QUALIFIER_TYPE_TBL(K) :=NULL;
8822 G_EXCLUDER_FLAG_TBL(K) :=NULL;
8823 G_PRICING_PHASE_ID_TBL_A(K) :=NULL;
8824 G_INCOMP_GRP_CODE_TBL_A(K) := NULL;
8825 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := NULL;
8826 G_MODIFIER_LEVEL_CODE_TBL_A(K) := NULL;
8827 G_PRIMARY_UOM_FLAG_TBL_A(K) := NULL;
8828
8829 K:= K+1;
8830
8831 END LOOP; -- Attribute Mapping is sourcing Volume Attributes 01/14/02, AC Nielsen Performance
8832 END IF;
8833
8834 IF (l_source_amt_flag = G_YES) THEN
8835
8836 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8837 engine_debug('Sourcing Amount Attribute');
8838
8839 END IF;
8840 FOR G IN p_line_tbl.first .. p_line_tbl.last
8841 LOOP
8842
8843 IF (p_price_phase_flag = TRUE) THEN
8844 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8845 engine_debug('Pricing Phase Exists.. Sourcing Line Quantity');
8846 END IF;
8847 l_line_amount := nvl(p_line_tbl(G).LINE_QUANTITY * p_line_tbl(G).UNIT_PRICE,0);
8848 ELSE
8849 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8850 engine_debug('Pricing Phase Does not Exist.. ,l_status_textSourcing Priced Quantity');
8851 END IF;
8852 l_line_amount := nvl(nvl(p_line_tbl(G).PRICED_QUANTITY,p_line_tbl(G).LINE_QUANTITY) * p_line_tbl(G).UNIT_PRICE,0);
8853 END IF;
8854
8855 --dbms_output.put_line ('Sourcing Item Qty for Line : ' ||p_line_tbl(G).LINE_INDEX );
8856
8857 -- Source Item Amount
8858 G_LINE_INDEX_tbl(K) := p_line_tbl(G).LINE_INDEX;
8859 G_ATTRIBUTE_LEVEL_tbl(K) := G_LINE_LEVEL;
8860 G_ATTRIBUTE_TYPE_tbl(K) := G_PRICING_TYPE;
8861 G_CONTEXT_tbl(K) := G_PRIC_VOLUME_CONTEXT;
8862 G_ATTRIBUTE_tbl(K) := G_LINE_AMT_ATTRIBUTE;
8863 G_VALUE_FROM_tbl(K) := qp_number.number_to_canonical(l_line_amount);
8864 G_VALUE_TO_tbl(K) := NULL;
8865 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
8866 G_VALIDATED_FLAG_tbl(K) := G_NO;
8867 G_APPLIED_FLAG_tbl(K) := G_LIST_NOT_APPLIED;
8868 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_UNCHANGED;
8869 G_PRICING_ATTR_FLAG_tbl(K) := G_YES;
8870 G_LINE_DETAIL_INDEX_tbl(K) := NULL;
8871 G_LIST_HEADER_ID_tbl(K) :=NULL;
8872 G_LIST_LINE_ID_tbl(K) :=NULL;
8873 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
8874 G_SETUP_VALUE_TO_tbl(K) :=NULL;
8875 G_GROUPING_NUMBER_tbl(K) :=NULL;
8876 G_NO_QUALIFIERS_IN_GRP_tbl(K):=NULL;
8877 G_PRICING_STATUS_TEXT_tbl(K) :=NULL;
8878 G_QUALIFIER_PRECEDENCE_tbl(K):=NULL;
8879 G_DATATYPE_tbl(K) :=NULL;
8880 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
8881 G_QUALIFIER_TYPE_TBL(K) :=NULL;
8882 G_EXCLUDER_FLAG_TBL(K) :=NULL;
8883 G_PRICING_PHASE_ID_TBL_A(K) :=NULL;
8884 G_INCOMP_GRP_CODE_TBL_A(K) := NULL;
8885 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := NULL;
8886 G_MODIFIER_LEVEL_CODE_TBL_A(K) := NULL;
8887 G_PRIMARY_UOM_FLAG_TBL_A(K) := NULL;
8888
8889 K:= K+1;
8890
8891 END LOOP; -- Attribute Mapping is sourcing Volume Attributes 01/14/02, AC Nielsen Performance
8892 END IF;
8893
8894 --Insert record only if there is record
8895 IF K > 1 THEN
8896 INSERT_LINE_ATTRS2
8897 ( G_LINE_INDEX_tbl,
8898 G_LINE_DETAIL_INDEX_tbl ,
8899 G_ATTRIBUTE_LEVEL_tbl ,
8900 G_ATTRIBUTE_TYPE_tbl ,
8901 G_LIST_HEADER_ID_tbl ,
8902 G_LIST_LINE_ID_tbl ,
8903 G_CONTEXT_tbl ,
8904 G_ATTRIBUTE_tbl ,
8905 G_VALUE_FROM_tbl ,
8906 G_SETUP_VALUE_FROM_tbl ,
8907 G_VALUE_TO_tbl ,
8908 G_SETUP_VALUE_TO_tbl ,
8909 G_GROUPING_NUMBER_tbl ,
8910 G_NO_QUALIFIERS_IN_GRP_tbl ,
8911 G_COMPARISON_OPERATOR_TYPE_tbl ,
8912 G_VALIDATED_FLAG_tbl ,
8913 G_APPLIED_FLAG_tbl ,
8914 G_PRICING_STATUS_CODE_tbl ,
8915 G_PRICING_STATUS_TEXT_tbl ,
8916 G_QUALIFIER_PRECEDENCE_tbl ,
8917 G_DATATYPE_tbl ,
8918 G_PRICING_ATTR_FLAG_tbl ,
8919 G_QUALIFIER_TYPE_tbl ,
8920 G_PRODUCT_UOM_CODE_TBL ,
8921 G_EXCLUDER_FLAG_TBL ,
8922 G_PRICING_PHASE_ID_TBL_A ,
8923 G_INCOMP_GRP_CODE_TBL_A ,
8924 G_LINE_DETAIL_TYPE_CODE_TBL_A ,
8925 G_MODIFIER_LEVEL_CODE_TBL_A ,
8926 G_PRIMARY_UOM_FLAG_TBL_A ,
8927 l_status_code ,
8928 l_status_text );
8929
8930 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
8931 RAISE E_ROUTINE_ERRORS;
8932 END IF;
8933
8934 END IF;
8935
8936 /* begin bulk insert ldets -- 3215497 */
8937 -- first reset global tables
8938 Reset_All_Tbls(l_status_code, l_status_text);
8939 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
8940 RAISE E_ROUTINE_ERRORS;
8941 END IF;
8942
8943 I := p_LINE_DETAIL_tbl.FIRST;
8944 K := 1;
8945
8946 IF (G_PUBLIC_API_CALL_FLAG = G_YES) THEN
8947 v_pricing_status_code := G_STATUS_UNCHANGED; -- insert passed adjustments with X
8948 ELSE
8949 v_pricing_status_code := G_STATUS_NEW; -- passed adjustments with N if called from qp_preq_grp
8950 END IF;
8951
8952 WHILE (I IS NOT NULL AND
8953 (l_not_insert_order_line_flag = TRUE and
8954 p_line_detail_tbl(I).LINE_INDEX <> l_summary_line_index or
8955 l_not_insert_order_line_flag = FALSE)
8956 )
8957 LOOP
8958 -- populate relevant tables
8959 G_LINE_DETAIL_INDEX_tbl(K) := p_LINE_DETAIL_tbl(I).LINE_DETAIL_INDEX;
8960 G_LINE_DETAIL_TYPE_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).LINE_DETAIL_TYPE_CODE;
8961 G_PRICE_BREAK_TYPE_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).PRICE_BREAK_TYPE_CODE;
8962 G_LINE_INDEX_tbl(K) := p_LINE_DETAIL_tbl(I).LINE_INDEX;
8963 G_LIST_HEADER_ID_tbl(K) := p_LINE_DETAIL_tbl(I).LIST_HEADER_ID;
8964 G_LIST_LINE_ID_tbl(K) := p_LINE_DETAIL_tbl(I).LIST_LINE_ID;
8965 G_LIST_LINE_TYPE_TBL(K) := p_LINE_DETAIL_tbl(I).LIST_LINE_TYPE_CODE;
8966 G_LIST_TYPE_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).CREATED_FROM_LIST_TYPE_CODE;
8967 G_PRICING_GROUP_SEQUENCE_TBL(K) := p_LINE_DETAIL_tbl(I).PRICING_GROUP_SEQUENCE;
8968 G_PRICING_PHASE_ID_TBL(K) := p_LINE_DETAIL_tbl(I).PRICING_PHASE_ID; --added for usage_pricing
8969 G_OPERAND_CALCULATION_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).OPERAND_CALCULATION_CODE;
8970 G_OPERAND_VALUE_TBL(K) := p_LINE_DETAIL_tbl(I).OPERAND_VALUE;
8971 G_SUBSTITUTION_TYPE_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).SUBSTITUTION_TYPE_CODE;
8972 G_SUBSTITUTION_VALUE_FROM_TBL(K) := p_LINE_DETAIL_tbl(I).SUBSTITUTION_FROM;
8973 G_SUBSTITUTION_VALUE_TO_TBL(K) := p_LINE_DETAIL_tbl(I).SUBSTITUTION_TO;
8974 G_PRICING_STATUS_CODE_tbl(K) := v_pricing_status_code;
8975 G_APPLIED_FLAG_tbl(K) := p_LINE_DETAIL_tbl(I).APPLIED_FLAG;
8976 G_AUTOMATIC_FLAG_TBL(K) := p_LINE_DETAIL_tbl(I).AUTOMATIC_FLAG;
8977 G_OVERRIDE_FLAG_TBL(K) := p_LINE_DETAIL_tbl(I).OVERRIDE_FLAG;
8978 G_PRINT_ON_INVOICE_FLAG_TBL(K) := p_LINE_DETAIL_tbl(I).PRINT_ON_INVOICE_FLAG;
8979 G_MODIFIER_LEVEL_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).MODIFIER_LEVEL_CODE;
8980 G_LIST_LINE_NO_TBL(K) := p_LINE_DETAIL_tbl(I).LIST_LINE_NO; --shu, fix bug 2226344
8981 G_CHARGE_TYPE_CODE_TBL(K) := nvl(p_LINE_DETAIL_tbl(I).CHARGE_TYPE_CODE,'');
8982 G_CHARGE_SUBTYPE_CODE_TBL(K) := nvl(p_LINE_DETAIL_tbl(I).CHARGE_SUBTYPE_CODE,'');
8983 G_LINE_QUANTITY_TBL(K) := p_LINE_DETAIL_tbl(I).LINE_QUANTITY;
8984 G_UPDATED_FLAG_TBL(K) := p_LINE_DETAIL_tbl(I).UPDATED_FLAG;
8985 G_CALCULATION_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).CALCULATION_CODE;
8986 G_CHANGE_REASON_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).CHANGE_REASON_CODE;
8987 G_CHANGE_REASON_TEXT_TBL(K) := p_LINE_DETAIL_tbl(I).CHANGE_REASON_TEXT;
8988 G_PROCESS_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).PROCESS_CODE;
8989 -- remaining tables defaulted to null
8990 G_LIST_PRICE_TBL(K) := null;
8991 G_CREATED_FROM_SQL_TBL(K) := null;
8992 G_ASK_FOR_FLAG_TBL(K) := null;
8993 G_PRICE_FORMULA_ID_TBL(K) := null;
8994 G_PRICING_STATUS_TEXT_tbl(K) := null;
8995 G_PRODUCT_PRECEDENCE_TBL(K) := null;
8996 G_INCOMP_GRP_CODE_TBL(K) := null;
8997 G_PROCESSED_FLAG_TBL(K) := null;
8998 G_PRIMARY_UOM_FLAG_TBL(K) := null;
8999 G_BENEFIT_QTY_TBL(K) := null;
9000 G_BENEFIT_UOM_CODE_TBL(K) := null;
9001 G_SERVICE_DURATION_TBL(K) := null; -- SERVICE PROJECT
9002 G_SERVICE_PERIOD_TBL(K) := null; -- SERVICE PROJECT
9003 G_ACCRUAL_FLAG_TBL(K) := null;
9004 G_ACCRUAL_CONVERSION_RATE_TBL(K) := null;
9005 G_ESTIM_ACCRUAL_RATE_TBL(K) := null;
9006 G_RECURRING_FLAG_TBL(K) := null;
9007 G_SELECTED_VOLUME_ATTR_TBL(K) := null;
9008 G_ROUNDING_FACTOR_TBL(K) := null;
9009 G_HEADER_LIMIT_EXISTS_TBL(K) := null;
9010 G_LINE_LIMIT_EXISTS_TBL(K) := null;
9011
9012 I := p_LINE_DETAIL_tbl.NEXT(I);
9013 K := K+1;
9014 END LOOP;
9015
9016 -- perform bulk insert (using public API) if any records present
9017 IF (K > 1) THEN
9018 INSERT_LDETS2(
9019 p_LINE_DETAIL_index => G_LINE_DETAIL_INDEX_tbl,
9020 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
9021 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
9022 p_LIST_PRICE => G_LIST_PRICE_TBL,
9023 p_LINE_INDEX => G_LINE_INDEX_tbl,
9024 p_CREATED_FROM_LIST_HEADER_ID => G_LIST_HEADER_ID_tbl,
9025 p_CREATED_FROM_LIST_LINE_ID => G_LIST_LINE_ID_tbl,
9026 p_CREATED_FROM_LIST_LINE_TYPE => G_LIST_LINE_TYPE_TBL,
9027 p_CREATED_FROM_LIST_TYPE_CODE => G_LIST_TYPE_CODE_TBL,
9028 p_CREATED_FROM_SQL => G_CREATED_FROM_SQL_TBL,
9029 p_PRICING_GROUP_SEQUENCE => G_PRICING_GROUP_SEQUENCE_TBL,
9030 p_PRICING_PHASE_ID => G_PRICING_PHASE_ID_TBL,
9031 p_OPERAND_CALCULATION_CODE => G_OPERAND_CALCULATION_CODE_TBL,
9032 p_OPERAND_VALUE => G_OPERAND_VALUE_TBL,
9033 p_SUBSTITUTION_TYPE_CODE => G_SUBSTITUTION_TYPE_CODE_TBL,
9034 p_SUBSTITUTION_VALUE_FROM => G_SUBSTITUTION_VALUE_FROM_TBL,
9035 p_SUBSTITUTION_VALUE_TO => G_SUBSTITUTION_VALUE_TO_TBL,
9036 p_ASK_FOR_FLAG => G_ASK_FOR_FLAG_TBL,
9037 p_PRICE_FORMULA_ID => G_PRICE_FORMULA_ID_TBL,
9038 p_PRICING_STATUS_CODE => G_PRICING_STATUS_CODE_tbl,
9039 p_PRICING_STATUS_TEXT => G_PRICING_STATUS_TEXT_tbl,
9040 p_PRODUCT_PRECEDENCE => G_PRODUCT_PRECEDENCE_TBL,
9041 p_INCOMPATABLILITY_GRP_CODE => G_INCOMP_GRP_CODE_TBL,
9042 p_PROCESSED_FLAG => G_PROCESSED_FLAG_TBL,
9043 p_APPLIED_FLAG => G_APPLIED_FLAG_tbl,
9044 p_AUTOMATIC_FLAG => G_AUTOMATIC_FLAG_TBL,
9045 p_OVERRIDE_FLAG => G_OVERRIDE_FLAG_TBL,
9046 p_PRIMARY_UOM_FLAG => G_PRIMARY_UOM_FLAG_TBL,
9047 p_PRINT_ON_INVOICE_FLAG => G_PRINT_ON_INVOICE_FLAG_TBL,
9048 p_MODIFIER_LEVEL_CODE => G_MODIFIER_LEVEL_CODE_TBL,
9049 p_BENEFIT_QTY => G_BENEFIT_QTY_TBL,
9050 p_BENEFIT_UOM_CODE => G_BENEFIT_UOM_CODE_TBL,
9051 p_SERVICE_DURATION => G_SERVICE_DURATION_TBL, -- SERVICE PROJECT
9052 p_SERVICE_PERIOD => G_SERVICE_PERIOD_TBL, -- SERVICE PROJECT
9053 p_LIST_LINE_NO => G_LIST_LINE_NO_TBL,
9054 p_ACCRUAL_FLAG => G_ACCRUAL_FLAG_TBL,
9055 p_ACCRUAL_CONVERSION_RATE => G_ACCRUAL_CONVERSION_RATE_TBL,
9056 p_ESTIM_ACCRUAL_RATE => G_ESTIM_ACCRUAL_RATE_TBL,
9057 p_RECURRING_FLAG => G_RECURRING_FLAG_TBL,
9058 p_SELECTED_VOLUME_ATTR => G_SELECTED_VOLUME_ATTR_TBL,
9059 p_ROUNDING_FACTOR => G_ROUNDING_FACTOR_TBL,
9060 p_HEADER_LIMIT_EXISTS => G_HEADER_LIMIT_EXISTS_TBL,
9061 p_LINE_LIMIT_EXISTS => G_LINE_LIMIT_EXISTS_TBL,
9062 p_CHARGE_TYPE_CODE => G_CHARGE_TYPE_CODE_TBL,
9063 p_CHARGE_SUBTYPE_CODE => G_CHARGE_SUBTYPE_CODE_TBL,
9064 p_LINE_QUANTITY => G_LINE_QUANTITY_TBL,
9065 p_UPDATED_FLAG => G_UPDATED_FLAG_TBL,
9066 p_CALCULATION_CODE => G_CALCULATION_CODE_TBL,
9067 p_CHANGE_REASON_CODE =>G_CHANGE_REASON_CODE_TBL,
9068 p_CHANGE_REASON_TEXT => G_CHANGE_REASON_TEXT_TBL,
9069 p_PROCESS_CODE => G_PROCESS_CODE_TBL,
9070 x_status_code => l_status_code,
9071 x_status_text => l_status_text
9072 );
9073 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
9074 RAISE E_ROUTINE_ERRORS;
9075 END IF;
9076 END IF;
9077 /* end bulk insert ldets */
9078
9079
9080 /* begin bulk insert ldet qualifiers -- 3215497 */
9081 -- first reset global tables
9082 Reset_All_Tbls(l_status_code, l_status_text);
9083 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
9084 RAISE E_ROUTINE_ERRORS;
9085 END IF;
9086
9087 I := p_LINE_DETAIL_qual_tbl.FIRST;
9088 K := 1;
9089 WHILE I IS NOT NULL LOOP
9090 -- populate relevant tables
9091 G_LINE_DETAIL_INDEX_tbl(K) := p_LINE_DETAIL_qual_tbl(I).LINE_DETAIL_INDEX;
9092 G_ATTRIBUTE_LEVEL_tbl(K) := G_DETAIL_LEVEL;
9093 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
9094 G_CONTEXT_tbl(K) := p_LINE_DETAIL_qual_tbl(I).QUALIFIER_CONTEXT;
9095 G_ATTRIBUTE_tbl(K) := p_LINE_DETAIL_qual_tbl(I).QUALIFIER_ATTRIBUTE;
9096 G_VALUE_FROM_tbl(K) := p_LINE_DETAIL_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM;
9097 G_VALUE_TO_tbl(K) := p_LINE_DETAIL_qual_tbl(I).QUALIFIER_ATTR_VALUE_TO;
9098 G_COMPARISON_OPERATOR_TYPE_tbl(K) := p_LINE_DETAIL_qual_tbl(I).COMPARISON_OPERATOR_CODE;
9099 G_VALIDATED_FLAG_tbl(K) := p_LINE_DETAIL_qual_tbl(I).VALIDATED_FLAG;
9100 -- remaining tables defaulted to null
9101 G_LINE_INDEX_tbl(K) := null;
9102 G_LIST_HEADER_ID_tbl(K) := null;
9103 G_LIST_LINE_ID_tbl(K) := null;
9104 G_SETUP_VALUE_FROM_tbl(K) := null;
9105 G_SETUP_VALUE_TO_tbl(K) := null;
9106 G_GROUPING_NUMBER_tbl(K) := null;
9107 G_NO_QUALIFIERS_IN_GRP_tbl(K) := null;
9108 G_APPLIED_FLAG_tbl(K) := null;
9109 G_PRICING_STATUS_CODE_tbl(K) := null;
9110 G_PRICING_STATUS_TEXT_tbl(K) := null;
9111 G_QUALIFIER_PRECEDENCE_tbl(K) := null;
9112 G_DATATYPE_tbl(K) := null;
9113 G_PRICING_ATTR_FLAG_tbl(K) := null;
9114 G_QUALIFIER_TYPE_tbl(K) := null;
9115 G_PRODUCT_UOM_CODE_tbl(K) := null;
9116 G_EXCLUDER_FLAG_tbl(K) := null;
9117 G_PRICING_PHASE_ID_tbl(K) := null;
9118 G_INCOMP_GRP_CODE_tbl(K) := null;
9119 G_LINE_DETAIL_TYPE_CODE_tbl(K) := null;
9120 G_MODIFIER_LEVEL_CODE_tbl(K) := null;
9121 G_PRIMARY_UOM_FLAG_tbl(K) := null;
9122
9123 I := p_LINE_DETAIL_qual_tbl.NEXT(I);
9124 K := K+1;
9125 END LOOP;
9126
9127 -- the next piece of code, which handles ldet line attributes, also calls
9128 -- INSERT_LINE_ATTRS2, so don't reset the global tables, and wait until the
9129 -- tables are completely populated before making one call to the insert API
9130 /* end bulk insert ldet qualifiers */
9131
9132 /* begin bulk insert ldet line attributes -- 3215497 */
9133 -- continue using global tables where last left off
9134 I := p_LINE_DETAIL_attr_tbl.FIRST;
9135 WHILE I IS NOT NULL LOOP
9136 -- populate relevant tables
9137 G_LINE_INDEX_tbl(K) := p_LINE_DETAIL_attr_tbl(I).LINE_INDEX;
9138 G_LINE_DETAIL_INDEX_tbl(K) := p_LINE_DETAIL_attr_tbl(I).LINE_DETAIL_INDEX;
9139 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
9140 G_ATTRIBUTE_LEVEL_tbl(K) := G_LINE_LEVEL;
9141 G_CONTEXT_tbl(K) := p_LINE_DETAIL_attr_tbl(I).PRICING_CONTEXT;
9142 G_ATTRIBUTE_tbl(K) := p_LINE_DETAIL_attr_tbl(I).PRICING_ATTRIBUTE;
9143 G_VALUE_FROM_tbl(K) := p_LINE_DETAIL_attr_tbl(I).PRICING_ATTR_VALUE_FROM;
9144 G_VALIDATED_FLAG_tbl(K) := p_LINE_DETAIL_attr_tbl(I).VALIDATED_FLAG;
9145 IF (p_LINE_DETAIL_attr_tbl(I).PRICING_CONTEXT = G_ITEM_CONTEXT) THEN
9146 G_ATTRIBUTE_TYPE_tbl(K) := G_PRODUCT_TYPE;
9147 G_VALUE_TO_tbl(K) := null;
9148 ELSIF (p_LINE_DETAIL_attr_tbl(I).PRICING_CONTEXT IS NOT NULL) THEN
9149 G_ATTRIBUTE_TYPE_tbl(K) := G_PRICING_TYPE;
9150 G_VALUE_TO_tbl(K) := p_LINE_DETAIL_attr_tbl(I).PRICING_ATTR_VALUE_TO;
9151 ELSE
9152 G_ATTRIBUTE_TYPE_tbl(K) := null;
9153 G_VALUE_TO_tbl(K) := null;
9154 END IF;
9155 -- remaining tables defaulted to null
9156 G_LIST_HEADER_ID_tbl(K) := null;
9157 G_LIST_LINE_ID_tbl(K) := null;
9158 G_SETUP_VALUE_FROM_tbl(K) := null;
9159 G_SETUP_VALUE_TO_tbl(K) := null;
9160 G_GROUPING_NUMBER_tbl(K) := null;
9161 G_NO_QUALIFIERS_IN_GRP_tbl(K) := null;
9162 G_COMPARISON_OPERATOR_TYPE_tbl(K) := null;
9163 G_APPLIED_FLAG_tbl(K) := null;
9164 G_PRICING_STATUS_TEXT_tbl(K) := null;
9165 G_QUALIFIER_PRECEDENCE_tbl(K) := null;
9166 G_DATATYPE_tbl(K) := null;
9167 G_PRICING_ATTR_FLAG_tbl(K) := null;
9168 G_QUALIFIER_TYPE_tbl(K) := null;
9169 G_PRODUCT_UOM_CODE_tbl(K) := null;
9170 G_EXCLUDER_FLAG_tbl(K) := null;
9171 G_PRICING_PHASE_ID_tbl(K) := null;
9172 G_INCOMP_GRP_CODE_tbl(K) := null;
9173 G_LINE_DETAIL_TYPE_CODE_tbl(K) := null;
9174 G_MODIFIER_LEVEL_CODE_tbl(K) := null;
9175 G_PRIMARY_UOM_FLAG_tbl(K) := null;
9176
9177 I := p_LINE_DETAIL_attr_tbl.NEXT(I);
9178 K := K+1;
9179 END LOOP;
9180
9181 -- perform bulk insert (using public API) if any records present
9182 IF (K > 1) THEN
9183 INSERT_LINE_ATTRS2(
9184 p_LINE_INDEX_tbl => G_LINE_INDEX_tbl,
9185 p_LINE_DETAIL_INDEX_tbl => G_LINE_DETAIL_INDEX_tbl,
9186 p_ATTRIBUTE_LEVEL_tbl => G_ATTRIBUTE_LEVEL_tbl,
9187 p_ATTRIBUTE_TYPE_tbl => G_ATTRIBUTE_TYPE_tbl,
9188 p_LIST_HEADER_ID_tbl => G_LIST_HEADER_ID_tbl,
9189 p_LIST_LINE_ID_tbl => G_LIST_LINE_ID_tbl,
9190 p_CONTEXT_tbl => G_CONTEXT_tbl,
9191 p_ATTRIBUTE_tbl => G_ATTRIBUTE_tbl,
9192 p_VALUE_FROM_tbl => G_VALUE_FROM_tbl,
9193 p_SETUP_VALUE_FROM_tbl => G_SETUP_VALUE_FROM_tbl,
9194 p_VALUE_TO_tbl => G_VALUE_TO_tbl,
9195 p_SETUP_VALUE_TO_tbl => G_SETUP_VALUE_TO_tbl,
9196 p_GROUPING_NUMBER_tbl => G_GROUPING_NUMBER_tbl,
9197 p_NO_QUALIFIERS_IN_GRP_tbl => G_NO_QUALIFIERS_IN_GRP_tbl,
9198 p_COMPARISON_OPERATOR_TYPE_tbl => G_COMPARISON_OPERATOR_TYPE_tbl,
9199 p_VALIDATED_FLAG_tbl => G_VALIDATED_FLAG_tbl,
9200 p_APPLIED_FLAG_tbl => G_APPLIED_FLAG_tbl,
9201 p_PRICING_STATUS_CODE_tbl => G_PRICING_STATUS_CODE_tbl,
9202 p_PRICING_STATUS_TEXT_tbl => G_PRICING_STATUS_TEXT_tbl,
9203 p_QUALIFIER_PRECEDENCE_tbl => G_QUALIFIER_PRECEDENCE_tbl,
9204 p_DATATYPE_tbl => G_DATATYPE_tbl,
9205 p_PRICING_ATTR_FLAG_tbl => G_PRICING_ATTR_FLAG_tbl,
9206 p_QUALIFIER_TYPE_tbl => G_QUALIFIER_TYPE_tbl,
9207 p_PRODUCT_UOM_CODE_TBL => G_PRODUCT_UOM_CODE_tbl,
9208 p_EXCLUDER_FLAG_TBL => G_EXCLUDER_FLAG_tbl,
9209 p_PRICING_PHASE_ID_TBL => G_PRICING_PHASE_ID_tbl,
9210 p_INCOMPATABILITY_GRP_CODE_TBL => G_INCOMP_GRP_CODE_tbl,
9211 p_LINE_DETAIL_TYPE_CODE_TBL => G_LINE_DETAIL_TYPE_CODE_tbl,
9212 p_MODIFIER_LEVEL_CODE_TBL => G_MODIFIER_LEVEL_CODE_tbl,
9213 p_PRIMARY_UOM_FLAG_TBL => G_PRIMARY_UOM_FLAG_tbl,
9214 x_status_code => l_status_code,
9215 x_status_text => l_status_text
9216 );
9217 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
9218 RAISE E_ROUTINE_ERRORS;
9219 END IF;
9220 END IF;
9221 /* end bulk insert ldet line attributes */
9222
9223
9224 /* begin bulk insert rltd lines -- 3215497 */
9225 -- first reset global tables
9226 Reset_All_Tbls(l_status_code, l_status_text);
9227 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
9228 RAISE E_ROUTINE_ERRORS;
9229 END IF;
9230
9231 I := p_rltd_lines_tbl.FIRST;
9232 K := 1;
9233 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9234 engine_debug('RLTD first in populate_temp_table: '||I);
9235 END IF;
9236 WHILE I IS NOT NULL LOOP
9237 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9238 engine_debug('Collecting in rltd table');
9239 END IF;
9240 -- populate relevant tables
9241 G_LINE_INDEX_tbl(K) := p_rltd_lines_tbl(I).LINE_INDEX;
9242 G_LINE_DETAIL_INDEX_tbl(K) := p_rltd_lines_tbl(I).LINE_DETAIL_INDEX;
9243 G_RELATIONSHIP_TYPE_TBL(K) := p_rltd_lines_tbl(I).RELATIONSHIP_TYPE_CODE;
9244 G_RLTD_LINE_INDEX_TBL(K) := p_rltd_lines_tbl(I).RELATED_LINE_INDEX;
9245 G_RLTD_LINE_DETAIL_INDEX_TBL(K) := p_rltd_lines_tbl(I).RELATED_LINE_DETAIL_INDEX;
9246
9247 I := p_rltd_lines_tbl.NEXT(I);
9248 K := K+1;
9249 END LOOP;
9250
9251 -- perform bulk insert (using public API) if any records present
9252 IF (K > 1) THEN
9253 INSERT_RLTD_LINES2(
9254 p_LINE_INDEX => G_LINE_INDEX_tbl,
9255 p_LINE_DETAIL_INDEX => G_LINE_DETAIL_INDEX_tbl,
9256 p_RELATIONSHIP_TYPE_CODE => G_RELATIONSHIP_TYPE_TBL,
9257 p_RELATED_LINE_INDEX => G_RLTD_LINE_INDEX_TBL,
9258 p_RELATED_LINE_DETAIL_INDEX => G_RLTD_LINE_DETAIL_INDEX_TBL,
9259 x_status_code => l_status_code,
9260 x_status_text => l_status_text
9261 );
9262 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
9263 RAISE E_ROUTINE_ERRORS;
9264 END IF;
9265 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9266 engine_debug('after bulk insert rltd lines');
9267 END IF;
9268 END IF;
9269 /* end bulk insert rltd lines */
9270
9271
9272
9273 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9274 OPEN l_get_count_cur;
9275 FETCH l_get_count_cur INTO l_count;
9276 CLOSE l_get_count_cur;
9277 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9278 engine_debug ('Culprit Attribute Count :' || l_count);
9279 END IF;
9280 END IF;
9281
9282 --x_status_code := FND_API.G_RET_STS_SUCCESS;
9283
9284
9285 --Reset_all_tbls;
9286 Reset_All_Tbls(l_status_code ,l_status_text );
9287 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
9288 RAISE E_ROUTINE_ERRORS;
9289 END IF;
9290
9291 EXCEPTION
9292 WHEN E_ROUTINE_ERRORS THEN
9293 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9294 engine_debug(l_routine||': '||l_status_text);
9295 END IF;
9296 x_status_text := l_status_text;
9297 x_status_code := FND_API.G_RET_STS_ERROR;
9298 WHEN E_DATE_IS_NULL THEN
9299 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9300 engine_debug('Date or date type is null');
9301 engine_debug('Date or date type is null');
9302 END IF;
9303 x_status_code := FND_API.G_RET_STS_ERROR;
9304 x_status_text := 'Error in QP_PREQ_GRP.populate_temp_tables: One of the three dates is null';
9305 WHEN E_CURRENCY_CODE_IS_NULL THEN
9306 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9307 engine_debug('Currency code can not be null');
9308 engine_debug('Currency code can not be null');
9309 END IF;
9310 x_status_code := FND_API.G_RET_STS_ERROR;
9311 x_status_text := 'Error in QP_PREQ_GRP.populate_temp_tables: Currency can not be null';
9312 WHEN OTHERS THEN
9313 v_error_code :=SQLCODE;
9314 v_error_message:=SQLERRM;
9315 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9316 engine_debug('Error in QP_PREQ_GRP.populate_temp_tables: '||SQLERRM);
9317 END IF;
9318 x_status_code := FND_API.G_RET_STS_ERROR;
9319 x_status_text :='Error in QP_PREQ_GRP.populate_temp_tables:'||SQLERRM;
9320
9321 END Populate_Temp_Tables;
9322
9323 /*+------------------------------------------------------------
9324 |PROCEDURE SET_EXPIRATION_DATES
9325 +------------------------------------------------------------
9326 */
9327
9328 PROCEDURE SET_EXPIRATION_DATES (p_number_expiration_period IN NUMBER,
9329 p_expiration_period_uom_code IN VARCHAR2,
9330 p_line_index IN NUMBER,
9331 x_expiration_period_end_date OUT NOCOPY DATE,
9332 x_status_code OUT NOCOPY VARCHAR2,
9333 x_status_text OUT NOCOPY VARCHAR2) AS
9334 E_Coupon_Error EXCEPTION;
9335 l_expiration_period_end_date Date;
9336 l_dummy Date;
9337 l_status_code VARCHAR2(240);
9338 l_status_text VARCHAR2(240);
9339 l_routine VARCHAR2(240):='QP_PRQ_GRP.SET_EXPIRATION_DATES';
9340 l_pricing_effective_date Date;
9341 l_debug varchar2(3);
9342
9343 /*
9344 INDX,QP_PREQ_GRP.set_expiration_dates.l_get_pricing_effective_date,qp_npreq_lines_tmp_N1,LINE_INDEX,1
9345 */
9346 CURSOR l_get_pricing_effective_date (p_line_index IN PLS_INTEGER) IS
9347 SELECT pricing_effective_date
9348 FROM qp_npreq_lines_tmp
9349 WHERE line_index = p_line_index;
9350
9351 --added by yangli for Java Engine interface tables
9352 /*
9353 INDX,QP_PREQ_GRP.set_expiration_dates.l_int_pricing_effective_date,qp_int_lines_N1,LINE_INDEX,1
9354 */
9355 CURSOR l_int_pricing_effective_date (p_line_index IN PLS_INTEGER) IS
9356 SELECT pricing_effective_date
9357 FROM qp_int_lines
9358 WHERE line_index = p_line_index;
9359
9360 BEGIN
9361 x_status_code := FND_API.G_RET_STS_SUCCESS;
9362
9363 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
9364 --ADDED BY YANGLI FOR JAVA ENGINE PUB 3086881
9365 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
9366 IF l_debug = FND_API.G_TRUE THEN
9367 QP_PREQ_GRP.ENGINE_DEBUG('Populate_Price_Adj_ID: Java Engine not Installed ----------');
9368 END IF;
9369 --ADDED BY YANGLI FOR JAVA ENGINE PUB 3086881
9370 OPEN l_get_pricing_effective_date (p_line_index);
9371 FETCH l_get_pricing_effective_date into l_pricing_effective_date;
9372 CLOSE l_get_pricing_effective_date;
9373 ELSE
9374 IF l_debug = FND_API.G_TRUE THEN
9375 QP_PREQ_GRP.ENGINE_DEBUG('Set_Expiration_Dates: Java Engine is Installed ----------');
9376 END IF;
9377 OPEN l_int_pricing_effective_date (p_line_index);
9378 FETCH l_int_pricing_effective_date into l_pricing_effective_date;
9379 CLOSE l_int_pricing_effective_date;
9380 END IF;
9381
9382 QP_COUPON_PVT.Set_Expiration_Dates
9383 (l_dummy,
9384 l_expiration_period_end_date,
9385 p_number_expiration_period,
9386 p_expiration_period_uom_code,
9387 l_pricing_effective_date,
9388 l_status_code,
9389 l_status_text);
9390
9391 IF (l_status_code <> FND_API.G_RET_STS_SUCCESS) Then
9392 Raise E_Coupon_Error;
9393 END IF;
9394
9395 x_expiration_period_end_date := l_expiration_period_end_date;
9396
9397 EXCEPTION
9398
9399 WHEN E_Coupon_Error THEN
9400 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9401 engine_debug('Error returned by QP_COUPON_PVT.Set_Expiration_Dates');
9402 END IF;
9403 x_status_code := FND_API.G_RET_STS_ERROR;
9404 x_status_text :=l_routine||':'||l_status_text;
9405 WHEN OTHERS THEN
9406 x_status_code := FND_API.G_RET_STS_ERROR;
9407 x_status_code := l_routine||':'||SQLERRM;
9408 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9409 engine_debug(l_routine||':'||SQLERRM);
9410 END IF;
9411 END;
9412
9413
9414 /*+-----------------------------------------------------------
9415 |PROCEDURE Populate_OutPut
9416 +-----------------------------------------------------------
9417 */
9418 PROCEDURE Populate_Output
9419 (x_line_tbl OUT NOCOPY LINE_TBL_TYPE,
9420 x_line_qual_tbl OUT NOCOPY QUAL_TBL_TYPE,
9421 x_line_attr_tbl OUT NOCOPY LINE_ATTR_TBL_TYPE,
9422 x_line_detail_tbl OUT NOCOPY LINE_DETAIL_TBL_TYPE,
9423 x_line_detail_qual_tbl OUT NOCOPY LINE_DETAIL_QUAL_TBL_TYPE,
9424 x_line_detail_attr_tbl OUT NOCOPY LINE_DETAIL_ATTR_TBL_TYPE,
9425 x_related_lines_tbl OUT NOCOPY RELATED_LINES_TBL_TYPE)
9426 AS
9427 /*
9428 INDX,QP_PREQ_GRP.populate_output.l_lines_cur,- No Index Used -,NA,NA
9429 */
9430 CURSOR l_lines_cur IS
9431 SELECT LINE_INDEX,
9432 LINE_ID,
9433 PRICE_LIST_HEADER_ID, -- shu, print out this
9434 LINE_TYPE_CODE,
9435 LINE_QUANTITY,
9436 LINE_UOM_CODE,
9437 LINE_UNIT_PRICE, -- shu
9438 ROUNDING_FACTOR, -- shu
9439 PRICED_QUANTITY,
9440 UOM_QUANTITY,
9441 PRICED_UOM_CODE,
9442 CURRENCY_CODE,
9443 UNIT_PRICE,
9444 PERCENT_PRICE,
9445 PARENT_PRICE,
9446 PARENT_QUANTITY,
9447 PARENT_UOM_CODE,
9448 PRICE_FLAG,
9449 ADJUSTED_UNIT_PRICE,
9450 UPDATED_ADJUSTED_UNIT_PRICE,
9451 PROCESSING_ORDER,
9452 PROCESSED_CODE,
9453 PRICING_STATUS_CODE,
9454 PRICING_STATUS_TEXT,
9455 HOLD_CODE,
9456 HOLD_TEXT,
9457 PRICE_REQUEST_CODE,
9458 PRICING_EFFECTIVE_DATE,
9459 EXTENDED_PRICE /* block pricing */
9460 --EXTENDED_SELLING_PRICE_UR, --[prarasto:Post Round]New fields for unrounded values, [julin/postround] redesign
9461 --ORDER_UOM_SELLING_PRICE_UR, --[prarasto:Post Round]
9462 --ADJUSTED_UNIT_PRICE_UR --[prarasto:Post Round]
9463 FROM qp_npreq_lines_tmp;
9464
9465 /*
9466 INDX,QP_PREQ_GRP.populate_output.l_qual_cur,qp_npreq_ldets_tmp_N4,PRICING_STATUS_CODE,1
9467
9468 INDX,QP_PREQ_GRP.populate_output.l_qual_cur,qp_npreq_line_attrs_tmp_N3,LINE_DETAIL_INDEX,1
9469 INDX,QP_PREQ_GRP.populate_output.l_qual_cur,qp_npreq_line_attrs_tmp_N3,ATTRIBUTE_TYPE,2
9470 */
9471 CURSOR l_qual_cur (L_ATTRIBUTE_LEVEL VARCHAR2)IS
9472 SELECT /*+ dynamic_sampling(1) */ QPLAT.LINE_INDEX,
9473 QPLAT.LINE_DETAIL_INDEX,
9474 QPLAT.CONTEXT,
9475 QPLAT.ATTRIBUTE,
9476 QPLAT.SETUP_VALUE_FROM,
9477 QPLAT.SETUP_VALUE_TO,
9478 QPLAT.COMPARISON_OPERATOR_TYPE_CODE,
9479 QPLAT.VALIDATED_FLAG,
9480 QPLAT.PRICING_STATUS_CODE,
9481 QPLAT.PRICING_STATUS_TEXT
9482 FROM qp_npreq_ldets_tmp QPLD ,
9483 qp_npreq_line_attrs_tmp QPLAT
9484 WHERE QPLD.LINE_DETAIL_INDEX = QPLAT.LINE_DETAIL_INDEX
9485 AND QPLD.PRICING_STATUS_CODE = G_STATUS_NEW
9486 AND QPLAT.ATTRIBUTE_TYPE = 'QUALIFIER';
9487 --AND QPLAT.PRICING_STATUS_CODE = G_STATUS_NEW;
9488
9489 /*
9490 INDX,QP_PREQ_GRP.populate_output.l_pricing_attr_cur,qp_npreq_ldets_tmp_N4,PRICING_STATUS_CODE,1
9491
9492 INDX,QP_PREQ_GRP.populate_output.l_pricing_attr_cur,qp_npreq_line_attrs_tmp_N3,LINE_DETAIL_INDEX,1
9493 INDX,QP_PREQ_GRP.populate_output.l_pricing_attr_cur,qp_npreq_line_attrs_tmp_N3,ATTRIBUTE_TYPE,2
9494 */
9495 CURSOR l_pricing_attr_cur IS
9496 SELECT /*+ dynamic_sampling(1) index(QPLAT_PRICING QP_PREQ_LINE_ATTRS_TMP_N3) */ --bug8359591
9497 QPLAT_PRICING.CONTEXT PRICING_CONTEXT,
9498 QPLAT_PRICING.ATTRIBUTE PRICING_ATTRIBUTE,
9499 nvl(QPLAT_PRICING.SETUP_VALUE_FROM,QPLAT_PRICING.VALUE_FROM) PRICING_ATTR_VALUE_FROM,
9500 QPLAT_PRICING.SETUP_VALUE_TO PRICING_ATTR_VALUE_TO,
9501 QPLAT_PRICING.COMPARISON_OPERATOR_TYPE_CODE,
9502 QPLAT_PRICING.LINE_DETAIL_INDEX,
9503 QPLAT_PRICING.LINE_INDEX,
9504 QPLAT_PRICING.VALIDATED_FLAG
9505 FROM qp_npreq_ldets_tmp QPLD ,
9506 qp_npreq_line_attrs_tmp QPLAT_PRICING
9507 WHERE QPLD.LINE_DETAIL_INDEX = QPLAT_PRICING.LINE_DETAIL_INDEX
9508 AND QPLD.PRICING_STATUS_CODE = G_STATUS_NEW
9509 AND QPLAT_PRICING.ATTRIBUTE_TYPE IN ('PRICING','PRODUCT');
9510 --AND QPLAT_PRICING.PRICING_STATUS_CODE = G_STATUS_NEW;
9511
9512 /*
9513 INDX,QP_PREQ_GRP.populate_output.l_ldets_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
9514
9515 INDX,QP_PREQ_GRP.populate_output.l_ldets_cur,qp_npreq_ldets_tmp_N4,PRICING_STATUS_CODE,1
9516
9517 INDX,QP_PREQ_GRP.populate_output.l_ldets_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
9518 */
9519 CURSOR l_ldets_cur IS
9520
9521 SELECT /*+ ORDERED USE_NL(A B C) l_ldets_cur */
9522
9523 a.LINE_DETAIL_INDEX,
9524 a.LINE_DETAIL_TYPE_CODE,
9525 a.LINE_INDEX,
9526 a.CREATED_FROM_LIST_HEADER_ID LIST_HEADER_ID,
9527 a.CREATED_FROM_LIST_LINE_ID LIST_LINE_ID,
9528 a.CREATED_FROM_LIST_LINE_TYPE LIST_LINE_TYPE_CODE,
9529 a.PRICE_BREAK_TYPE_CODE,
9530 a.LINE_QUANTITY,
9531 a.ADJUSTMENT_AMOUNT,
9532 a.AUTOMATIC_FLAG,
9533 a.PRICING_PHASE_ID,
9534 a.OPERAND_CALCULATION_CODE,
9535 a.OPERAND_VALUE,
9536 a.PRICING_GROUP_SEQUENCE,
9537 a.CREATED_FROM_LIST_TYPE_CODE,
9538 a.APPLIED_FLAG,
9539 a.PRICING_STATUS_CODE,
9540 a.PRICING_STATUS_TEXT,
9541 a.LIMIT_CODE,
9542 a.LIMIT_TEXT,
9543 a.LIST_LINE_NO,
9544 a.GROUP_QUANTITY,
9545 a.GROUP_AMOUNT, -- 2388011_new
9546 a.UPDATED_FLAG,
9547 a.PROCESS_CODE,
9548 a.CALCULATION_CODE,
9549 a.CHANGE_REASON_CODE,
9550 a.CHANGE_REASON_TEXT,
9551 b.SUBSTITUTION_VALUE SUBSTITUTION_VALUE_TO,
9552 b.SUBSTITUTION_ATTRIBUTE,
9553 b.ACCRUAL_FLAG,
9554 b.modifier_level_code,
9555 b.ESTIM_GL_VALUE,
9556 b.ACCRUAL_CONVERSION_RATE,
9557 --Pass throuh components
9558 b.OVERRIDE_FLAG,
9559 b.PRINT_ON_INVOICE_FLAG,
9560 b.INVENTORY_ITEM_ID,
9561 b.ORGANIZATION_ID,
9562 b.RELATED_ITEM_ID,
9563 b.RELATIONSHIP_TYPE_ID,
9564 b.ESTIM_ACCRUAL_RATE,
9565 b.EXPIRATION_DATE,
9566 b.BENEFIT_PRICE_LIST_LINE_ID,
9567 b.RECURRING_FLAG,
9568 b.RECURRING_VALUE, --for block pricing bug 3657116
9569 b.BENEFIT_LIMIT,
9570 b.CHARGE_TYPE_CODE,
9571 b.CHARGE_SUBTYPE_CODE,
9572 b.BENEFIT_QTY,
9573 b.BENEFIT_UOM_CODE,
9574 b.SERVICE_DURATION, -- service project
9575 b.SERVICE_PERIOD, -- service project
9576 b.PRORATION_TYPE_CODE,
9577 b.INCLUDE_ON_RETURNS_FLAG,
9578 b.REBATE_TRANSACTION_TYPE_CODE,
9579 b.NUMBER_EXPIRATION_PERIODS,
9580 b.EXPIRATION_PERIOD_UOM,
9581 b.COMMENTS,
9582 b.break_uom_code, /* proration */
9583 b.break_uom_context, /* proration */
9584 b.break_uom_attribute /* proration */
9585 FROM qp_npreq_ldets_tmp a,
9586 QP_LIST_LINES b
9587 WHERE a.CREATED_FROM_LIST_LINE_ID = b.LIST_LINE_ID
9588 AND a.PRICING_STATUS_CODE = G_STATUS_NEW;
9589
9590 /*
9591 INDX,QP_PREQ_GRP.populate_output.l_rltd_lines_cur,- No Index Used -,NA,NA
9592 */
9593 CURSOR l_rltd_lines_cur IS
9594 SELECT LINE_INDEX,
9595 LINE_DETAIL_INDEX,
9596 RELATIONSHIP_TYPE_CODE,
9597 RELATED_LINE_INDEX,
9598 RELATED_LINE_DETAIL_INDEX,
9599 PRICING_STATUS_CODE,
9600 PRICING_STATUS_TEXT
9601 FROM qp_npreq_rltd_lines_tmp
9602 WHERE PRICING_STATUS_CODE = G_STATUS_NEW
9603 ORDER BY SETUP_VALUE_FROM;
9604
9605 --for Java Engine interface tables
9606 /*
9607 INDX,QP_PREQ_GRP.populate_output.l_int_lines_cur,- No Index Used -,NA,NA
9608 */
9609 CURSOR l_int_lines_cur IS
9610 SELECT LINE_INDEX,
9611 LINE_ID,
9612 PRICE_LIST_HEADER_ID, -- shu, print out this
9613 LINE_TYPE_CODE,
9614 LINE_QUANTITY,
9615 LINE_UOM_CODE,
9616 LINE_UNIT_PRICE, -- shu
9617 ROUNDING_FACTOR, -- shu
9618 PRICED_QUANTITY,
9619 UOM_QUANTITY,
9620 PRICED_UOM_CODE,
9621 CURRENCY_CODE,
9622 UNIT_PRICE,
9623 PERCENT_PRICE,
9624 PARENT_PRICE,
9625 PARENT_QUANTITY,
9626 PARENT_UOM_CODE,
9627 PRICE_FLAG,
9628 ADJUSTED_UNIT_PRICE,
9629 UPDATED_ADJUSTED_UNIT_PRICE,
9630 PROCESSING_ORDER,
9631 PROCESSED_CODE,
9632 PRICING_STATUS_CODE,
9633 PRICING_STATUS_TEXT,
9634 HOLD_CODE,
9635 HOLD_TEXT,
9636 PRICE_REQUEST_CODE,
9637 PRICING_EFFECTIVE_DATE,
9638 EXTENDED_PRICE /* block pricing */
9639 FROM qp_int_lines;
9640
9641 /*
9642 INDX,QP_PREQ_GRP.populate_output.l_int_qual_cur,qp_int_ldets_N4,PRICING_STATUS_CODE,1
9643
9644 INDX,QP_PREQ_GRP.populate_output.l_int_qual_cur,qp_int_line_attrs_N3,LINE_DETAIL_INDEX,1
9645 INDX,QP_PREQ_GRP.populate_output.l_int_qual_cur,qp_int_line_attrs_N3,ATTRIBUTE_TYPE,2
9646 */
9647 CURSOR l_int_qual_cur (L_ATTRIBUTE_LEVEL VARCHAR2)IS
9648 SELECT /*+ dynamic_sampling(1) */ QPLAT.LINE_INDEX,
9649 QPLAT.LINE_DETAIL_INDEX,
9650 QPLAT.CONTEXT,
9651 QPLAT.ATTRIBUTE,
9652 QPLAT.SETUP_VALUE_FROM,
9653 QPLAT.SETUP_VALUE_TO,
9654 QPLAT.COMPARISON_OPERATOR_TYPE_CODE,
9655 QPLAT.VALIDATED_FLAG,
9656 QPLAT.PRICING_STATUS_CODE,
9657 QPLAT.PRICING_STATUS_TEXT
9658 FROM qp_int_ldets QPLD ,
9659 qp_int_line_attrs QPLAT
9660 WHERE QPLD.LINE_DETAIL_INDEX = QPLAT.LINE_DETAIL_INDEX
9661 AND QPLD.PRICING_STATUS_CODE = G_STATUS_NEW
9662 AND QPLAT.ATTRIBUTE_TYPE = 'QUALIFIER';
9663 --AND QPLAT.PRICING_STATUS_CODE = G_STATUS_NEW;
9664
9665 /*
9666 INDX,QP_PREQ_GRP.populate_output.l_int_pricing_attr_cur,qp_int_ldets_N4,PRICING_STATUS_CODE,1
9667
9668 INDX,QP_PREQ_GRP.populate_output.l_int_pricing_attr_cur,qp_int_line_attrs_N3,LINE_DETAIL_INDEX,1
9669 INDX,QP_PREQ_GRP.populate_output.l_int_pricing_attr_cur,qp_int_line_attrs_N3,ATTRIBUTE_TYPE,2
9670 */
9671 CURSOR l_int_pricing_attr_cur IS
9672 SELECT QPLAT_PRICING.CONTEXT PRICING_CONTEXT,
9673 QPLAT_PRICING.ATTRIBUTE PRICING_ATTRIBUTE,
9674 nvl(QPLAT_PRICING.SETUP_VALUE_FROM,QPLAT_PRICING.VALUE_FROM) PRICING_ATTR_VALUE_FROM,
9675 QPLAT_PRICING.SETUP_VALUE_TO PRICING_ATTR_VALUE_TO,
9676 QPLAT_PRICING.COMPARISON_OPERATOR_TYPE_CODE,
9677 QPLAT_PRICING.LINE_DETAIL_INDEX,
9678 QPLAT_PRICING.LINE_INDEX,
9679 QPLAT_PRICING.VALIDATED_FLAG
9680 FROM qp_int_ldets QPLD ,
9681 qp_int_line_attrs QPLAT_PRICING
9682 WHERE QPLD.LINE_DETAIL_INDEX = QPLAT_PRICING.LINE_DETAIL_INDEX
9683 AND QPLD.PRICING_STATUS_CODE = G_STATUS_NEW
9684 AND QPLAT_PRICING.ATTRIBUTE_TYPE IN ('PRICING','PRODUCT');
9685 --AND QPLAT_PRICING.PRICING_STATUS_CODE = G_STATUS_NEW;
9686
9687 /*
9688 INDX,QP_PREQ_GRP.populate_output.l_int_ldets_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
9689
9690 INDX,QP_PREQ_GRP.populate_output.l_int_ldets_cur,qp_int_ldets_N4,PRICING_STATUS_CODE,1
9691
9692 INDX,QP_PREQ_GRP.populate_output.l_int_ldets_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
9693 */
9694 CURSOR l_int_ldets_cur IS
9695
9696 SELECT /*+ ORDERED USE_NL(A B C) l_int_ldets_cur */
9697
9698 a.LINE_DETAIL_INDEX,
9699 a.LINE_DETAIL_TYPE_CODE,
9700 a.LINE_INDEX,
9701 a.CREATED_FROM_LIST_HEADER_ID LIST_HEADER_ID,
9702 a.CREATED_FROM_LIST_LINE_ID LIST_LINE_ID,
9703 a.CREATED_FROM_LIST_LINE_TYPE LIST_LINE_TYPE_CODE,
9704 a.PRICE_BREAK_TYPE_CODE,
9705 a.LINE_QUANTITY,
9706 a.ADJUSTMENT_AMOUNT,
9707 a.AUTOMATIC_FLAG,
9708 a.PRICING_PHASE_ID,
9709 a.OPERAND_CALCULATION_CODE,
9710 a.OPERAND_VALUE,
9711 a.PRICING_GROUP_SEQUENCE,
9712 a.CREATED_FROM_LIST_TYPE_CODE,
9713 a.APPLIED_FLAG,
9714 a.PRICING_STATUS_CODE,
9715 a.PRICING_STATUS_TEXT,
9716 a.LIMIT_CODE,
9717 a.LIMIT_TEXT,
9718 a.LIST_LINE_NO,
9719 a.GROUP_QUANTITY,
9720 a.GROUP_AMOUNT, -- 2388011_new
9721 a.UPDATED_FLAG,
9722 a.PROCESS_CODE,
9723 a.CALCULATION_CODE,
9724 a.CHANGE_REASON_CODE,
9725 a.CHANGE_REASON_TEXT,
9726 b.SUBSTITUTION_VALUE SUBSTITUTION_VALUE_TO,
9727 b.SUBSTITUTION_ATTRIBUTE,
9728 b.ACCRUAL_FLAG,
9729 b.modifier_level_code,
9730 b.ESTIM_GL_VALUE,
9731 b.ACCRUAL_CONVERSION_RATE,
9732 --Pass throuh components
9733 b.OVERRIDE_FLAG,
9734 b.PRINT_ON_INVOICE_FLAG,
9735 b.INVENTORY_ITEM_ID,
9736 b.ORGANIZATION_ID,
9737 b.RELATED_ITEM_ID,
9738 b.RELATIONSHIP_TYPE_ID,
9739 b.ESTIM_ACCRUAL_RATE,
9740 b.EXPIRATION_DATE,
9741 b.BENEFIT_PRICE_LIST_LINE_ID,
9742 b.RECURRING_FLAG,
9743 b.BENEFIT_LIMIT,
9744 b.CHARGE_TYPE_CODE,
9745 b.CHARGE_SUBTYPE_CODE,
9746 b.BENEFIT_QTY,
9747 b.BENEFIT_UOM_CODE,
9748 b.PRORATION_TYPE_CODE,
9749 b.INCLUDE_ON_RETURNS_FLAG,
9750 b.REBATE_TRANSACTION_TYPE_CODE,
9751 b.NUMBER_EXPIRATION_PERIODS,
9752 b.EXPIRATION_PERIOD_UOM,
9753 b.COMMENTS,
9754 b.break_uom_code, /* proration */
9755 b.break_uom_context, /* proration */
9756 b.break_uom_attribute /* proration */
9757 FROM qp_int_ldets a,
9758 QP_LIST_LINES b
9759 WHERE a.CREATED_FROM_LIST_LINE_ID = b.LIST_LINE_ID
9760 AND a.PRICING_STATUS_CODE = G_STATUS_NEW;
9761
9762 /*
9763 INDX,QP_PREQ_GRP.populate_output.l_int_rltd_lines_cur,- No Index Used -,NA,NA
9764 */
9765 CURSOR l_int_rltd_lines_cur IS
9766 SELECT LINE_INDEX,
9767 LINE_DETAIL_INDEX,
9768 RELATIONSHIP_TYPE_CODE,
9769 RELATED_LINE_INDEX,
9770 RELATED_LINE_DETAIL_INDEX,
9771 PRICING_STATUS_CODE,
9772 PRICING_STATUS_TEXT
9773 FROM qp_int_rltd_lines
9774 WHERE PRICING_STATUS_CODE = G_STATUS_NEW
9775 ORDER BY SETUP_VALUE_FROM;
9776
9777 I PLS_INTEGER :=1;
9778 J PLS_INTEGER :=1;
9779 l_expiration_period_end_date Date;
9780 l_status_code VARCHAR2(30);
9781 l_status_text VARCHAR2(30);
9782 E_ROUTINE_ERROR EXCEPTION;
9783 l_routine VARCHAR2(240):='QP_PREQ_GRP.POPULATE_OUTPUT';
9784 l_debug varchar2(3);
9785
9786 BEGIN
9787 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
9788
9789 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9790 engine_debug('----Before populate l_line_tbl-----');
9791 engine_debug('----Line information return back to caller----');
9792 END IF;
9793
9794 --ADDED BY YANGLI FOR JAVA ENGINE PUB 3086881
9795 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
9796 IF l_debug = FND_API.G_TRUE THEN
9797 QP_PREQ_GRP.ENGINE_DEBUG('Populate_output: Java Engine not Installed ----------');
9798 END IF;
9799 --ADDED BY YANGLI FOR JAVA ENGINE PUB 3086881
9800
9801 FOR l_line IN l_lines_cur LOOP
9802 --requirement from Jay, will cause holes in pl/sql table.
9803 I := l_line.LINE_INDEX;
9804 x_line_tbl(I).LINE_INDEX := l_line.LINE_INDEX;
9805 x_line_tbl(I).LINE_ID := l_line.LINE_ID;
9806 x_line_tbl(I).HEADER_ID := l_line.PRICE_LIST_HEADER_ID;
9807 x_line_tbl(I).LINE_TYPE_CODE := l_line.LINE_TYPE_CODE;
9808 x_line_tbl(I).PRICED_QUANTITY := l_line.PRICED_QUANTITY;
9809 x_line_tbl(I).CURRENCY_CODE := l_line.CURRENCY_CODE;
9810 x_line_tbl(I).ROUNDING_FACTOR := l_line.ROUNDING_FACTOR;
9811 x_line_tbl(I).PRICED_UOM_CODE := l_line.PRICED_UOM_CODE;
9812 x_line_tbl(I).UNIT_PRICE := l_line.UNIT_PRICE; --shu_latest
9813 x_line_tbl(I).LINE_QUANTITY:=l_line.LINE_QUANTITY;
9814 x_line_tbl(I).LINE_UOM_CODE:=l_line.LINE_UOM_CODE;
9815 x_line_tbl(I).LINE_UNIT_PRICE := l_line.LINE_UNIT_PRICE; --shu_latest
9816 x_line_tbl(I).UOM_QUANTITY := l_line.UOM_QUANTITY; --shu_latest
9817 x_line_tbl(I).PERCENT_PRICE := l_line.PERCENT_PRICE;
9818 x_line_tbl(I).ADJUSTED_UNIT_PRICE := l_line.ADJUSTED_UNIT_PRICE;
9819 x_line_tbl(I).UPDATED_ADJUSTED_UNIT_PRICE := l_line.UPDATED_ADJUSTED_UNIT_PRICE;
9820 x_line_tbl(I).PARENT_PRICE := l_line.PARENT_PRICE;
9821 x_line_tbl(I).PARENT_QUANTITY := l_line.PARENT_QUANTITY;
9822 x_line_tbl(I).PARENT_UOM_CODE := l_line.PARENT_UOM_CODE;
9823 x_line_tbl(I).PROCESSED_CODE := l_line.PROCESSED_CODE;
9824 x_line_tbl(I).PRICE_FLAG := l_line.PRICE_FLAG;
9825 x_line_tbl(I).STATUS_CODE := l_line.PRICING_STATUS_CODE;
9826 x_line_tbl(I).STATUS_TEXT := substr(l_line.PRICING_STATUS_TEXT,1,2000); -- shulin, fix bug 1745788
9827 x_line_tbl(I).HOLD_CODE := l_line.HOLD_CODE;
9828 x_line_tbl(I).HOLD_TEXT := substr(l_line.HOLD_TEXT,1,240);
9829 x_line_tbl(I).PRICE_REQUEST_CODE := l_line.PRICE_REQUEST_CODE;
9830 x_line_tbl(I).PRICING_EFFECTIVE_DATE := l_line.PRICING_EFFECTIVE_DATE;
9831 x_line_tbl(I).EXTENDED_PRICE := l_line.EXTENDED_PRICE; -- block pricing
9832 --x_line_tbl(I).EXTENDED_SELLING_PRICE_UR := l_line.EXTENDED_SELLING_PRICE_UR; --[prarasto:Post Round], [julin/postround] redesign
9833 --x_line_tbl(I).ORDER_UOM_SELLING_PRICE_UR := l_line.ORDER_UOM_SELLING_PRICE_UR; --[prarasto:Post Round]
9834 --x_line_tbl(I).ADJUSTED_UNIT_PRICE_UR := l_line.ADJUSTED_UNIT_PRICE_UR; --[prarasto:Post Round]
9835
9836 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9837 engine_debug('LINE_INDEX :='||l_line.LINE_INDEX);
9838 engine_debug('LINE_ID :='||l_line.LINE_ID);
9839 engine_debug('PRICE_LIST_HEADER_ID :='||l_line.PRICE_LIST_HEADER_ID); -- shu, print out this
9840 engine_debug('LINE_TYPE_CODE :='||l_line.LINE_TYPE_CODE);
9841 engine_debug('UOM_QUANTITY :='||l_line.UOM_QUANTITY);
9842 engine_debug('CURRENCY_CODE :='||l_line.CURRENCY_CODE);
9843 engine_debug('ROUNDING_FACTOR :='||l_line.ROUNDING_FACTOR);
9844 engine_debug('PRICED_QUANTITY :='||l_line.PRICED_QUANTITY);
9845 engine_debug('PRICED_UOM_CODE :='||l_line.PRICED_UOM_CODE);
9846 engine_debug('UNIT_PRICE :='||l_line.UNIT_PRICE);
9847 engine_debug('LINE_QUANTITY:='||l_line.LINE_QUANTITY);
9848 engine_debug('LINE_UOM_CODE:='||l_line.LINE_UOM_CODE);
9849 engine_debug('LINE_UNIT_PRICE:='||l_line.LINE_UNIT_PRICE); -- shu_latest
9850 engine_debug('PERCENT_PRICE :='||l_line.PERCENT_PRICE);
9851 engine_debug('ADJUSTED_UNIT_PRICE :='||l_line.ADJUSTED_UNIT_PRICE);
9852 engine_debug('PARENT_PRICE :='||l_line.PARENT_PRICE);
9853 engine_debug('PARENT_QUANTITY :='||l_line.PARENT_QUANTITY);
9854 engine_debug('PARENT_UOM_CODE :='||l_line.PARENT_UOM_CODE);
9855 engine_debug('processed_code :='||l_line.processed_code);
9856 engine_debug('Price Flag :='||l_line.price_flag);
9857 engine_debug('STATUS_CODE :='||l_line.PRICING_STATUS_CODE);
9858 engine_debug('STATUS_TEXT :='|| substr(l_line.PRICING_STATUS_TEXT,1,2000));
9859 engine_debug('HOLD_CODE := '||l_line.HOLD_CODE);
9860 engine_debug('HOLD_TEXT := '||substr(l_line.HOLD_TEXT,1,240));
9861 engine_debug('PRICE_REQUEST_CODE := '||l_line.PRICE_REQUEST_CODE);
9862 engine_debug('PRICING_DATE := '||l_line.PRICING_EFFECTIVE_DATE);
9863 engine_debug('EXTENDED_PRICE := '||l_line.EXTENDED_PRICE);
9864 --engine_debug('EXTENDED_SELLING_PRICE_UR := '|| l_line.EXTENDED_SELLING_PRICE_UR); --[prarasto:Post Round], [julin/postround] redesign
9865 --engine_debug('ORDER_UOM_SELLING_PRICE_UR := '|| l_line.ORDER_UOM_SELLING_PRICE_UR); --[prarasto:Post Round]
9866 --engine_debug('ADJUSTED_UNIT_PRICE_UR := '|| l_line.ADJUSTED_UNIT_PRICE_UR); --[prarasto:Post Round]
9867 END IF;
9868
9869 END LOOP;
9870 I:=1;
9871
9872
9873 --Populate Line detail
9874 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9875 engine_debug('----Line detail information return back to caller----');
9876 END IF;
9877 FOR l_dets IN l_ldets_cur LOOP
9878 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9879 engine_debug('----populating line detail output------');
9880 END IF;
9881
9882 --requirement by Jay, will cause holes in pl/sql tbl
9883 I := l_dets.line_detail_index;
9884 x_line_detail_tbl(I).LINE_DETAIL_INDEX := l_dets.LINE_DETAIL_INDEX;
9885 x_line_detail_tbl(I).LINE_DETAIL_TYPE_CODE:=l_dets.LINE_DETAIL_TYPE_CODE;
9886 x_line_detail_tbl(I).LINE_INDEX:=l_dets.LINE_INDEX;
9887 x_line_detail_tbl(I).LIST_HEADER_ID:=l_dets.LIST_HEADER_ID;
9888 x_line_detail_tbl(I).LIST_LINE_ID:=l_dets.LIST_LINE_ID;
9889 x_line_detail_tbl(I).LIST_LINE_TYPE_CODE:=l_dets.LIST_LINE_TYPE_CODE;
9890 x_line_detail_tbl(I).SUBSTITUTION_TO:=l_dets.SUBSTITUTION_VALUE_TO;
9891 x_line_detail_tbl(I).LINE_QUANTITY :=l_dets.LINE_QUANTITY;
9892 x_line_detail_tbl(I).ADJUSTMENT_AMOUNT := l_dets.ADJUSTMENT_AMOUNT;
9893 x_line_detail_tbl(I).AUTOMATIC_FLAG := l_dets.AUTOMATIC_FLAG;
9894 x_line_detail_tbl(I).APPLIED_FLAG := l_dets.APPLIED_FLAG;
9895 x_line_detail_tbl(I).PRICING_GROUP_SEQUENCE := l_dets.PRICING_GROUP_SEQUENCE;
9896 x_line_detail_tbl(I).CREATED_FROM_LIST_TYPE_CODE:=l_dets.CREATED_FROM_LIST_TYPE_CODE;
9897 x_line_detail_tbl(I).PRICE_BREAK_TYPE_CODE := l_dets.PRICE_BREAK_TYPE_CODE;
9898 x_line_detail_tbl(I).OVERRIDE_FLAG := l_dets.override_flag;
9899 x_line_detail_tbl(I).PRINT_ON_INVOICE_FLAG :=l_dets.print_on_invoice_flag;
9900 x_line_detail_tbl(I).PRICING_PHASE_ID := l_dets.PRICING_PHASE_ID;
9901 x_line_detail_tbl(I).APPLIED_FLAG := l_dets.APPLIED_FLAG;
9902 x_line_detail_tbl(I).OPERAND_CALCULATION_CODE := l_dets.OPERAND_CALCULATION_CODE;
9903 x_line_detail_tbl(I).OPERAND_VALUE := l_dets.OPERAND_VALUE;
9904 x_line_detail_tbl(I).STATUS_CODE:=l_dets.PRICING_STATUS_CODE;
9905 x_line_detail_tbl(I).STATUS_TEXT:=substr(l_dets.PRICING_STATUS_TEXT,1,240);
9906 x_line_detail_tbl(I).SUBSTITUTION_ATTRIBUTE:=l_dets.SUBSTITUTION_ATTRIBUTE;
9907 x_line_detail_tbl(I).ACCRUAL_FLAG:=l_dets.ACCRUAL_FLAG;
9908 x_line_detail_tbl(I).LIST_LINE_NO:=l_dets.LIST_LINE_NO;
9909 x_line_detail_tbl(I).ESTIM_GL_VALUE:=l_dets.ESTIM_GL_VALUE;
9910 x_line_detail_tbl(I).ACCRUAL_CONVERSION_RATE:=l_dets.ACCRUAL_CONVERSION_RATE;
9911 --Pass throuh components
9912 x_line_detail_tbl(I).OVERRIDE_FLAG:= l_dets.OVERRIDE_FLAG;
9913 x_line_detail_tbl(I).PRINT_ON_INVOICE_FLAG:=l_dets.PRINT_ON_INVOICE_FLAG;
9914 x_line_detail_tbl(I).INVENTORY_ITEM_ID:=l_dets.INVENTORY_ITEM_ID;
9915 x_line_detail_tbl(I).ORGANIZATION_ID:=l_dets.ORGANIZATION_ID;
9916 x_line_detail_tbl(I).RELATED_ITEM_ID:= l_dets.RELATED_ITEM_ID;
9917 x_line_detail_tbl(I).RELATIONSHIP_TYPE_ID:=l_dets.RELATIONSHIP_TYPE_ID;
9918 x_line_detail_tbl(I).ESTIM_ACCRUAL_RATE:=l_dets.ESTIM_ACCRUAL_RATE;
9919
9920 x_line_detail_tbl(I).BENEFIT_PRICE_LIST_LINE_ID:=l_dets.BENEFIT_PRICE_LIST_LINE_ID;
9921 x_line_detail_tbl(I).RECURRING_FLAG:= l_dets.RECURRING_FLAG;
9922 x_line_detail_tbl(I).RECURRING_VALUE:= l_dets.RECURRING_VALUE; --for block pricing bug 3657116
9923 x_line_detail_tbl(I).BENEFIT_LIMIT:= l_dets.BENEFIT_LIMIT;
9924 x_line_detail_tbl(I).CHARGE_TYPE_CODE:= l_dets.CHARGE_TYPE_CODE;
9925 x_line_detail_tbl(I).CHARGE_SUBTYPE_CODE:=l_dets.CHARGE_SUBTYPE_CODE;
9926 x_line_detail_tbl(I).BENEFIT_QTY:=l_dets.BENEFIT_QTY;
9927 x_line_detail_tbl(I).BENEFIT_UOM_CODE:=l_dets.BENEFIT_UOM_CODE;
9928 x_line_detail_tbl(I).SERVICE_DURATION:=l_dets.SERVICE_DURATION; -- service project
9929 x_line_detail_tbl(I).SERVICE_PERIOD:=l_dets.SERVICE_PERIOD; -- service project
9930 x_line_detail_tbl(I).PRORATION_TYPE_CODE:=l_dets.PRORATION_TYPE_CODE;
9931 x_line_detail_tbl(I).INCLUDE_ON_RETURNS_FLAG := l_dets.INCLUDE_ON_RETURNS_FLAG;
9932 x_line_detail_tbl(I).LIST_LINE_NO := l_dets.LIST_LINE_NO;
9933 x_line_detail_tbl(I).MODIFIER_LEVEL_CODE := l_dets.MODIFIER_LEVEL_CODE;
9934 x_line_detail_tbl(I).GROUP_VALUE := nvl(l_dets.GROUP_QUANTITY,l_dets.GROUP_AMOUNT); -- 2388011_new
9935 x_line_detail_tbl(I).COMMENTS := l_dets.COMMENTS;
9936 x_line_detail_tbl(I).UPDATED_FLAG := l_dets.UPDATED_FLAG;
9937 x_line_detail_tbl(I).PROCESS_CODE := l_dets.PROCESS_CODE;
9938 x_line_detail_tbl(I).LIMIT_CODE := l_dets.LIMIT_CODE;
9939 x_line_detail_tbl(I).LIMIT_TEXT := substr(l_dets.LIMIT_TEXT,1,240);
9940 x_line_detail_tbl(I).CALCULATION_CODE := l_dets.CALCULATION_CODE;
9941 x_line_detail_tbl(I).CHANGE_REASON_CODE := l_dets.CHANGE_REASON_CODE;
9942 x_line_detail_tbl(I).CHANGE_REASON_CODE := substr(l_dets.CHANGE_REASON_CODE,1,240);
9943 x_line_detail_tbl(I).BREAK_UOM_CODE := l_dets.BREAK_UOM_CODE; /* proration */
9944 x_line_detail_tbl(I).BREAK_UOM_CONTEXT := l_dets.BREAK_UOM_CONTEXT; /* proration */
9945 x_line_detail_tbl(I).BREAK_UOM_ATTRIBUTE := l_dets.BREAK_UOM_ATTRIBUTE; /* proration */
9946
9947 IF (l_dets.LINE_DETAIL_TYPE_CODE = G_COUPON_ISSUE) THEN
9948 SET_EXPIRATION_DATES (l_dets.number_expiration_periods,
9949 l_dets.EXPIRATION_PERIOD_UOM,
9950 l_dets.line_index,
9951 l_expiration_period_end_date,
9952 l_status_code,
9953 l_status_text);
9954 END IF;
9955
9956 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
9957 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9958 engine_debug(l_routine||':'||substr(l_status_text,1,240));
9959 END IF;
9960 END IF;
9961
9962 x_line_detail_tbl(I).EXPIRATION_DATE :=l_expiration_period_end_date;
9963 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9964 engine_debug('LINE_DETAIL_INDEX :='|| l_dets.LINE_DETAIL_INDEX);
9965 engine_debug('LINE_DETAIL_TYPE_CODE:='||l_dets.LINE_DETAIL_TYPE_CODE);
9966 engine_debug('LINE_INDEX:='||l_dets.LINE_INDEX);
9967 engine_debug('LIST_HEADER_ID:='||l_dets.LIST_HEADER_ID);
9968 engine_debug('LIST_LINE_ID:='||l_dets.LIST_LINE_ID);
9969 engine_debug('LIST_LINE_TYPE_CODE:='||l_dets.LIST_LINE_TYPE_CODE);
9970 engine_debug('SUBSTITUTION_TO:='||l_dets.SUBSTITUTION_VALUE_TO);
9971 engine_debug('LINE_QUANTITY :='||l_dets.LINE_QUANTITY);
9972 engine_debug('ADJUSTMENT_AMOUNT :='|| l_dets.ADJUSTMENT_AMOUNT);
9973 engine_debug('AUTOMATIC_FLAG :='|| l_dets.AUTOMATIC_FLAG);
9974 engine_debug('APPLIED_FLAG :='|| l_dets.APPLIED_FLAG);
9975 engine_debug('PRICING_GROUP_SEQUENCE :='|| l_dets.PRICING_GROUP_SEQUENCE);
9976 engine_debug('CREATED_FROM_LIST_TYPE_CODE:='||l_dets.CREATED_FROM_LIST_TYPE_CODE);
9977 engine_debug('PRICE_BREAK_TYPE_CODE :='|| l_dets.PRICE_BREAK_TYPE_CODE);
9978 engine_debug('OVERRIDE_FLAG :='|| l_dets.override_flag);
9979 engine_debug('PRINT_ON_INVOICE_FLAG :='||l_dets.print_on_invoice_flag);
9980 engine_debug('PRICING_PHASE_ID :='|| l_dets.PRICING_PHASE_ID);
9981 engine_debug('OPERAND_CALCULATION_CODE :='|| l_dets.OPERAND_CALCULATION_CODE);
9982 engine_debug('OPERAND_VALUE :='|| l_dets.OPERAND_VALUE);
9983 engine_debug('STATUS_CODE:='||l_dets.PRICING_STATUS_CODE);
9984 engine_debug('STATUS_TEXT:='||substr(l_dets.PRICING_STATUS_TEXT,1,240));
9985 engine_debug('SUBSTITUTION_ATTRIBUTE:='||l_dets.SUBSTITUTION_ATTRIBUTE);
9986 engine_debug('ACCRUAL_FLAG:='||l_dets.ACCRUAL_FLAG);
9987 engine_debug('LIST_LINE_NO:='||l_dets.LIST_LINE_NO);
9988 engine_debug('ESTIM_GL_VALUE:='||l_dets.ESTIM_GL_VALUE);
9989 engine_debug('ACCRUAL_CONVERSION_RATE:='||l_dets.ACCRUAL_CONVERSION_RATE);
9990 END IF;
9991 --Pass throuh components
9992 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9993 engine_debug('OVERRIDE_FLAG:='|| l_dets.OVERRIDE_FLAG);
9994 engine_debug('INVENTORY_ITEM_ID:='||l_dets.INVENTORY_ITEM_ID);
9995 engine_debug('ORGANIZATION_ID:='||l_dets.ORGANIZATION_ID);
9996 engine_debug('RELATED_ITEM_ID:='|| l_dets.RELATED_ITEM_ID);
9997 engine_debug('RELATIONSHIP_TYPE_ID:='||l_dets.RELATIONSHIP_TYPE_ID);
9998 engine_debug('ESTIM_ACCRUAL_RATE:='||l_dets.ESTIM_ACCRUAL_RATE);
9999 engine_debug('EXPIRATION_DATE:='||l_dets.EXPIRATION_DATE);
10000 engine_debug('BENEFIT_PRICE_LIST_LINE_ID:='||l_dets.BENEFIT_PRICE_LIST_LINE_ID);
10001 engine_debug('RECURRING_FLAG:='|| l_dets.RECURRING_FLAG);
10002 engine_debug('BENEFIT_LIMIT:='|| l_dets.BENEFIT_LIMIT);
10003 engine_debug('CHARGE_TYPE_CODE:='|| l_dets.CHARGE_TYPE_CODE);
10004 engine_debug('CHARGE_SUBTYPE_CODE:='||l_dets.CHARGE_SUBTYPE_CODE);
10005 engine_debug('BENEFIT_QTY:='||l_dets.BENEFIT_QTY);
10006 engine_debug('BENEFIT_UOM_CODE:='||l_dets.BENEFIT_UOM_CODE);
10007 engine_debug('SERVICE_DURATION:='||l_dets.SERVICE_DURATION); -- service project
10008 engine_debug('SERVICE_PERIOD:='||l_dets.SERVICE_PERIOD); -- service project
10009 engine_debug('PRORATION_TYPE_CODE:='||l_dets.PRORATION_TYPE_CODE);
10010 engine_debug('INCLUDE_ON_RETURNS_FLAG :='|| l_dets.INCLUDE_ON_RETURNS_FLAG);
10011 engine_debug('MODIFIER_LEVEL_CODE :='|| l_dets.MODIFIER_LEVEL_CODE);
10012 engine_debug('GROUP VALUE :='|| l_dets.GROUP_QUANTITY);
10013 engine_debug('LIMIT_CODE :='|| l_dets.LIMIT_CODE);
10014 engine_debug('LIMIT_TEXT :='|| substr(l_dets.LIMIT_TEXT,1,240));
10015 engine_debug('CHANGE_REASON_CODE :='|| l_dets.CHANGE_REASON_CODE);
10016 engine_debug('CHANGE_REASON_TEXT :='|| substr(l_dets.CHANGE_REASON_TEXT,1,240));
10017 engine_debug('BREAK_UOM_CODE :='|| l_dets.BREAK_UOM_CODE); /* proration */
10018 engine_debug('BREAK_UOM_CONTEXT :='|| l_dets.BREAK_UOM_CONTEXT); /* proration */
10019 engine_debug('BREAK_UOM_ATTRIBUTE :='|| l_dets.BREAK_UOM_ATTRIBUTE); /* proration */
10020
10021 END IF;
10022 --I:=I+1;
10023 END LOOP;
10024 I:=1;
10025
10026 --Populate Qualifier detail
10027 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10028 engine_debug('----Before populate x_qual_tbl-----');
10029 END IF;
10030 FOR l_qual IN l_qual_cur(G_DETAIL_LEVEL) LOOP
10031 x_line_detail_qual_tbl(I).LINE_DETAIL_INDEX := l_qual.LINE_DETAIL_INDEX;
10032 x_line_detail_qual_tbl(I).QUALIFIER_CONTEXT := l_qual.CONTEXT;
10033 x_line_detail_qual_tbl(I).QUALIFIER_ATTRIBUTE := l_qual.ATTRIBUTE;
10034 x_line_detail_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM := l_qual.SETUP_VALUE_FROM;
10035 x_line_detail_qual_tbl(I).QUALIFIER_ATTR_VALUE_TO := l_qual.SETUP_VALUE_TO;
10036 x_line_detail_qual_tbl(I).COMPARISON_OPERATOR_CODE := l_qual.COMPARISON_OPERATOR_TYPE_CODE;
10037 x_line_detail_qual_tbl(I).status_code := l_qual.PRICING_STATUS_CODE;
10038 x_line_detail_qual_tbl(I).VALIDATED_FLAG :=l_qual.VALIDATED_FLAG;
10039
10040 I:=I+1;
10041 END LOOP;
10042 I:=1;
10043
10044 --LINE ATTRIBUTE DETAIL NEEDED
10045 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10046 engine_debug('----Before populate attr_tbl-----');
10047 END IF;
10048 FOR l_prc IN l_pricing_attr_cur LOOP
10049 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10050 engine_debug('--------populating x_line_detail_attr----------');
10051 engine_debug('Line Detail Index: '||l_prc.LINE_DETAIL_INDEX);
10052 END IF;
10053 x_line_detail_attr_tbl(I).LINE_DETAIL_INDEX := l_prc.LINE_DETAIL_INDEX;
10054 x_line_detail_attr_tbl(I).PRICING_CONTEXT := l_prc.PRICING_CONTEXT;
10055 x_line_detail_attr_tbl(I).PRICING_ATTRIBUTE := l_prc.PRICING_ATTRIBUTE;
10056 x_line_detail_attr_tbl(I).PRICING_ATTR_VALUE_FROM :=l_prc.PRICING_ATTR_VALUE_FROM;
10057 x_line_detail_attr_tbl(I).PRICING_ATTR_VALUE_TO :=l_prc.PRICING_ATTR_VALUE_TO;
10058 x_line_detail_attr_tbl(I).VALIDATED_FLAG :=l_prc.VALIDATED_FLAG;
10059 --x_line_attr_tbl(I).PRICING_STATUS_CODE := l_prc.PRICING_STATUS_CODE;
10060 --x_line_attr_tbl(I).PRICING_STATUS_TEXT := l_prc.PRICING_STATUS_TEXT;
10061 I:=I+1;
10062 END LOOP;
10063
10064 I:=1;
10065
10066 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10067 engine_debug('----Before populate l_rltd_lines_tbl-----');
10068 END IF;
10069 FOR l_rltd IN l_rltd_lines_cur LOOP
10070 x_related_lines_tbl(I).LINE_INDEX := l_rltd.Line_index;
10071 x_related_lines_tbl(I).LINE_DETAIL_INDEX := l_rltd.LINE_DETAIL_INDEX;
10072 x_related_lines_tbl(I).RELATIONSHIP_TYPE_CODE :=l_rltd.RELATIONSHIP_TYPE_CODE;
10073 x_related_lines_tbl(I).RELATED_LINE_INDEX :=l_rltd.RELATED_LINE_INDEX;
10074 x_related_lines_tbl(I).RELATED_LINE_DETAIL_INDEX :=l_rltd.RELATED_LINE_DETAIL_INDEX;
10075 x_related_lines_tbl(I).STATUS_CODE :=l_rltd.PRICING_STATUS_CODE;
10076 x_related_lines_tbl(I).STATUS_TEXT :=l_rltd.PRICING_STATUS_TEXT;
10077 I:=I+1;
10078 END LOOP;
10079 ELSE
10080 IF l_debug = FND_API.G_TRUE THEN
10081 QP_PREQ_GRP.ENGINE_DEBUG('Populate_output: Java Engine is Installed ----------');
10082 END IF;
10083 --ADDED BY YANGLI FOR JAVA ENGINE PUB 3086881
10084
10085 FOR l_line IN l_int_lines_cur LOOP
10086 --requirement from Jay, will cause holes in pl/sql table.
10087 I := l_line.LINE_INDEX;
10088 x_line_tbl(I).LINE_INDEX := l_line.LINE_INDEX;
10089 x_line_tbl(I).LINE_ID := l_line.LINE_ID;
10090 x_line_tbl(I).HEADER_ID := l_line.PRICE_LIST_HEADER_ID;
10091 x_line_tbl(I).LINE_TYPE_CODE := l_line.LINE_TYPE_CODE;
10092 x_line_tbl(I).PRICED_QUANTITY := l_line.PRICED_QUANTITY;
10093 x_line_tbl(I).CURRENCY_CODE := l_line.CURRENCY_CODE;
10094 x_line_tbl(I).ROUNDING_FACTOR := l_line.ROUNDING_FACTOR;
10095 x_line_tbl(I).PRICED_UOM_CODE := l_line.PRICED_UOM_CODE;
10096 x_line_tbl(I).UNIT_PRICE := l_line.UNIT_PRICE; --shu_latest
10097 x_line_tbl(I).LINE_QUANTITY:=l_line.LINE_QUANTITY;
10098 x_line_tbl(I).LINE_UOM_CODE:=l_line.LINE_UOM_CODE;
10099 x_line_tbl(I).LINE_UNIT_PRICE := l_line.LINE_UNIT_PRICE; --shu_latest
10100 x_line_tbl(I).UOM_QUANTITY := l_line.UOM_QUANTITY; --shu_latest
10101 x_line_tbl(I).PERCENT_PRICE := l_line.PERCENT_PRICE;
10102 x_line_tbl(I).ADJUSTED_UNIT_PRICE := l_line.ADJUSTED_UNIT_PRICE;
10103 x_line_tbl(I).UPDATED_ADJUSTED_UNIT_PRICE := l_line.UPDATED_ADJUSTED_UNIT_PRICE;
10104 x_line_tbl(I).PARENT_PRICE := l_line.PARENT_PRICE;
10105 x_line_tbl(I).PARENT_QUANTITY := l_line.PARENT_QUANTITY;
10106 x_line_tbl(I).PARENT_UOM_CODE := l_line.PARENT_UOM_CODE;
10107 x_line_tbl(I).PROCESSED_CODE := l_line.PROCESSED_CODE;
10108 x_line_tbl(I).PRICE_FLAG := l_line.PRICE_FLAG;
10109 x_line_tbl(I).STATUS_CODE := l_line.PRICING_STATUS_CODE;
10110 x_line_tbl(I).STATUS_TEXT := substr(l_line.PRICING_STATUS_TEXT,1,2000); -- shulin, fix bug 1745788
10111 x_line_tbl(I).HOLD_CODE := l_line.HOLD_CODE;
10112 x_line_tbl(I).HOLD_TEXT := substr(l_line.HOLD_TEXT,1,240);
10113 x_line_tbl(I).PRICE_REQUEST_CODE := l_line.PRICE_REQUEST_CODE;
10114 x_line_tbl(I).PRICING_EFFECTIVE_DATE := l_line.PRICING_EFFECTIVE_DATE;
10115 x_line_tbl(I).EXTENDED_PRICE := l_line.EXTENDED_PRICE; -- block pricing
10116
10117 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10118 engine_debug('LINE_INDEX :='||l_line.LINE_INDEX);
10119 engine_debug('LINE_ID :='||l_line.LINE_ID);
10120 engine_debug('PRICE_LIST_HEADER_ID :='||l_line.PRICE_LIST_HEADER_ID); -- shu, print out this
10121 engine_debug('LINE_TYPE_CODE :='||l_line.LINE_TYPE_CODE);
10122 engine_debug('UOM_QUANTITY :='||l_line.UOM_QUANTITY);
10123 engine_debug('CURRENCY_CODE :='||l_line.CURRENCY_CODE);
10124 engine_debug('ROUNDING_FACTOR :='||l_line.ROUNDING_FACTOR);
10125 engine_debug('PRICED_QUANTITY :='||l_line.PRICED_QUANTITY);
10126 engine_debug('PRICED_UOM_CODE :='||l_line.PRICED_UOM_CODE);
10127 engine_debug('UNIT_PRICE :='||l_line.UNIT_PRICE);
10128 engine_debug('LINE_QUANTITY:='||l_line.LINE_QUANTITY);
10129 engine_debug('LINE_UOM_CODE:='||l_line.LINE_UOM_CODE);
10130 engine_debug('LINE_UNIT_PRICE:='||l_line.LINE_UNIT_PRICE); -- shu_latest
10131 engine_debug('PERCENT_PRICE :='||l_line.PERCENT_PRICE);
10132 engine_debug('ADJUSTED_UNIT_PRICE :='||l_line.ADJUSTED_UNIT_PRICE);
10133 engine_debug('PARENT_PRICE :='||l_line.PARENT_PRICE);
10134 engine_debug('PARENT_QUANTITY :='||l_line.PARENT_QUANTITY);
10135 engine_debug('PARENT_UOM_CODE :='||l_line.PARENT_UOM_CODE);
10136 engine_debug('processed_code :='||l_line.processed_code);
10137 engine_debug('Price Flag :='||l_line.price_flag);
10138 engine_debug('STATUS_CODE :='||l_line.PRICING_STATUS_CODE);
10139 engine_debug('STATUS_TEXT :='|| substr(l_line.PRICING_STATUS_TEXT,1,2000));
10140 engine_debug('HOLD_CODE := '||l_line.HOLD_CODE);
10141 engine_debug('HOLD_TEXT := '||substr(l_line.HOLD_TEXT,1,240));
10142 engine_debug('PRICE_REQUEST_CODE := '||l_line.PRICE_REQUEST_CODE);
10143 engine_debug('PRICING_DATE := '||l_line.PRICING_EFFECTIVE_DATE);
10144 engine_debug('EXTENDED_PRICE := '||l_line.EXTENDED_PRICE);
10145 END IF;
10146
10147 END LOOP;
10148 I:=1;
10149
10150
10151 --Populate Line detail
10152 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10153 engine_debug('----Line detail information return back to caller----');
10154 END IF;
10155 FOR l_dets IN l_int_ldets_cur LOOP
10156 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10157 engine_debug('----populating line detail output------');
10158 END IF;
10159
10160 --requirement by Jay, will cause holes in pl/sql tbl
10161 I := l_dets.line_detail_index;
10162 x_line_detail_tbl(I).LINE_DETAIL_INDEX := l_dets.LINE_DETAIL_INDEX;
10163 x_line_detail_tbl(I).LINE_DETAIL_TYPE_CODE:=l_dets.LINE_DETAIL_TYPE_CODE;
10164 x_line_detail_tbl(I).LINE_INDEX:=l_dets.LINE_INDEX;
10165 x_line_detail_tbl(I).LIST_HEADER_ID:=l_dets.LIST_HEADER_ID;
10166 x_line_detail_tbl(I).LIST_LINE_ID:=l_dets.LIST_LINE_ID;
10167 x_line_detail_tbl(I).LIST_LINE_TYPE_CODE:=l_dets.LIST_LINE_TYPE_CODE;
10168 x_line_detail_tbl(I).SUBSTITUTION_TO:=l_dets.SUBSTITUTION_VALUE_TO;
10169 x_line_detail_tbl(I).LINE_QUANTITY :=l_dets.LINE_QUANTITY;
10170 x_line_detail_tbl(I).ADJUSTMENT_AMOUNT := l_dets.ADJUSTMENT_AMOUNT;
10171 x_line_detail_tbl(I).AUTOMATIC_FLAG := l_dets.AUTOMATIC_FLAG;
10172 x_line_detail_tbl(I).APPLIED_FLAG := l_dets.APPLIED_FLAG;
10173 x_line_detail_tbl(I).PRICING_GROUP_SEQUENCE := l_dets.PRICING_GROUP_SEQUENCE;
10174 x_line_detail_tbl(I).CREATED_FROM_LIST_TYPE_CODE:=l_dets.CREATED_FROM_LIST_TYPE_CODE;
10175 x_line_detail_tbl(I).PRICE_BREAK_TYPE_CODE := l_dets.PRICE_BREAK_TYPE_CODE;
10176 x_line_detail_tbl(I).OVERRIDE_FLAG := l_dets.override_flag;
10177 x_line_detail_tbl(I).PRINT_ON_INVOICE_FLAG :=l_dets.print_on_invoice_flag;
10178 x_line_detail_tbl(I).PRICING_PHASE_ID := l_dets.PRICING_PHASE_ID;
10179 x_line_detail_tbl(I).APPLIED_FLAG := l_dets.APPLIED_FLAG;
10180 x_line_detail_tbl(I).OPERAND_CALCULATION_CODE := l_dets.OPERAND_CALCULATION_CODE;
10181 x_line_detail_tbl(I).OPERAND_VALUE := l_dets.OPERAND_VALUE;
10182 x_line_detail_tbl(I).STATUS_CODE:=l_dets.PRICING_STATUS_CODE;
10183 x_line_detail_tbl(I).STATUS_TEXT:=substr(l_dets.PRICING_STATUS_TEXT,1,240);
10184 x_line_detail_tbl(I).SUBSTITUTION_ATTRIBUTE:=l_dets.SUBSTITUTION_ATTRIBUTE;
10185 x_line_detail_tbl(I).ACCRUAL_FLAG:=l_dets.ACCRUAL_FLAG;
10186 x_line_detail_tbl(I).LIST_LINE_NO:=l_dets.LIST_LINE_NO;
10187 x_line_detail_tbl(I).ESTIM_GL_VALUE:=l_dets.ESTIM_GL_VALUE;
10188 x_line_detail_tbl(I).ACCRUAL_CONVERSION_RATE:=l_dets.ACCRUAL_CONVERSION_RATE;
10189 --Pass throuh components
10190 x_line_detail_tbl(I).OVERRIDE_FLAG:= l_dets.OVERRIDE_FLAG;
10191 x_line_detail_tbl(I).PRINT_ON_INVOICE_FLAG:=l_dets.PRINT_ON_INVOICE_FLAG;
10192 x_line_detail_tbl(I).INVENTORY_ITEM_ID:=l_dets.INVENTORY_ITEM_ID;
10193 x_line_detail_tbl(I).ORGANIZATION_ID:=l_dets.ORGANIZATION_ID;
10194 x_line_detail_tbl(I).RELATED_ITEM_ID:= l_dets.RELATED_ITEM_ID;
10195 x_line_detail_tbl(I).RELATIONSHIP_TYPE_ID:=l_dets.RELATIONSHIP_TYPE_ID;
10196 x_line_detail_tbl(I).ESTIM_ACCRUAL_RATE:=l_dets.ESTIM_ACCRUAL_RATE;
10197
10198 x_line_detail_tbl(I).BENEFIT_PRICE_LIST_LINE_ID:=l_dets.BENEFIT_PRICE_LIST_LINE_ID;
10199 x_line_detail_tbl(I).RECURRING_FLAG:= l_dets.RECURRING_FLAG;
10200 x_line_detail_tbl(I).BENEFIT_LIMIT:= l_dets.BENEFIT_LIMIT;
10201 x_line_detail_tbl(I).CHARGE_TYPE_CODE:= l_dets.CHARGE_TYPE_CODE;
10202 x_line_detail_tbl(I).CHARGE_SUBTYPE_CODE:=l_dets.CHARGE_SUBTYPE_CODE;
10203 x_line_detail_tbl(I).BENEFIT_QTY:=l_dets.BENEFIT_QTY;
10204 x_line_detail_tbl(I).BENEFIT_UOM_CODE:=l_dets.BENEFIT_UOM_CODE;
10205 x_line_detail_tbl(I).PRORATION_TYPE_CODE:=l_dets.PRORATION_TYPE_CODE;
10206 x_line_detail_tbl(I).INCLUDE_ON_RETURNS_FLAG := l_dets.INCLUDE_ON_RETURNS_FLAG;
10207 x_line_detail_tbl(I).LIST_LINE_NO := l_dets.LIST_LINE_NO;
10208 x_line_detail_tbl(I).MODIFIER_LEVEL_CODE := l_dets.MODIFIER_LEVEL_CODE;
10209 x_line_detail_tbl(I).GROUP_VALUE := nvl(l_dets.GROUP_QUANTITY,l_dets.GROUP_AMOUNT); -- 2388011_new
10210 x_line_detail_tbl(I).COMMENTS := l_dets.COMMENTS;
10211 x_line_detail_tbl(I).UPDATED_FLAG := l_dets.UPDATED_FLAG;
10212 x_line_detail_tbl(I).PROCESS_CODE := l_dets.PROCESS_CODE;
10213 x_line_detail_tbl(I).LIMIT_CODE := l_dets.LIMIT_CODE;
10214 x_line_detail_tbl(I).LIMIT_TEXT := substr(l_dets.LIMIT_TEXT,1,240);
10215 x_line_detail_tbl(I).CALCULATION_CODE := l_dets.CALCULATION_CODE;
10216 x_line_detail_tbl(I).CHANGE_REASON_CODE := l_dets.CHANGE_REASON_CODE;
10217 x_line_detail_tbl(I).CHANGE_REASON_CODE := substr(l_dets.CHANGE_REASON_CODE,1,240);
10218 x_line_detail_tbl(I).BREAK_UOM_CODE := l_dets.BREAK_UOM_CODE; /* proration */
10219 x_line_detail_tbl(I).BREAK_UOM_CONTEXT := l_dets.BREAK_UOM_CONTEXT; /* proration */
10220 x_line_detail_tbl(I).BREAK_UOM_ATTRIBUTE := l_dets.BREAK_UOM_ATTRIBUTE; /* proration */
10221
10222 IF (l_dets.LINE_DETAIL_TYPE_CODE = G_COUPON_ISSUE) THEN
10223 SET_EXPIRATION_DATES (l_dets.number_expiration_periods,
10224 l_dets.EXPIRATION_PERIOD_UOM,
10225 l_dets.line_index,
10226 l_expiration_period_end_date,
10227 l_status_code,
10228 l_status_text);
10229 END IF;
10230
10231 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
10232 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10233 engine_debug(l_routine||':'||substr(l_status_text,1,240));
10234 END IF;
10235 END IF;
10236
10237 x_line_detail_tbl(I).EXPIRATION_DATE :=l_expiration_period_end_date;
10238 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10239 engine_debug('LINE_DETAIL_INDEX :='|| l_dets.LINE_DETAIL_INDEX);
10240 engine_debug('LINE_DETAIL_TYPE_CODE:='||l_dets.LINE_DETAIL_TYPE_CODE);
10241 engine_debug('LINE_INDEX:='||l_dets.LINE_INDEX);
10242 engine_debug('LIST_HEADER_ID:='||l_dets.LIST_HEADER_ID);
10243 engine_debug('LIST_LINE_ID:='||l_dets.LIST_LINE_ID);
10244 engine_debug('LIST_LINE_TYPE_CODE:='||l_dets.LIST_LINE_TYPE_CODE);
10245 engine_debug('SUBSTITUTION_TO:='||l_dets.SUBSTITUTION_VALUE_TO);
10246 engine_debug('LINE_QUANTITY :='||l_dets.LINE_QUANTITY);
10247 engine_debug('ADJUSTMENT_AMOUNT :='|| l_dets.ADJUSTMENT_AMOUNT);
10248 engine_debug('AUTOMATIC_FLAG :='|| l_dets.AUTOMATIC_FLAG);
10249 engine_debug('APPLIED_FLAG :='|| l_dets.APPLIED_FLAG);
10250 engine_debug('PRICING_GROUP_SEQUENCE :='|| l_dets.PRICING_GROUP_SEQUENCE);
10251 engine_debug('CREATED_FROM_LIST_TYPE_CODE:='||l_dets.CREATED_FROM_LIST_TYPE_CODE);
10252 engine_debug('PRICE_BREAK_TYPE_CODE :='|| l_dets.PRICE_BREAK_TYPE_CODE);
10253 engine_debug('OVERRIDE_FLAG :='|| l_dets.override_flag);
10254 engine_debug('PRINT_ON_INVOICE_FLAG :='||l_dets.print_on_invoice_flag);
10255 engine_debug('PRICING_PHASE_ID :='|| l_dets.PRICING_PHASE_ID);
10256 engine_debug('OPERAND_CALCULATION_CODE :='|| l_dets.OPERAND_CALCULATION_CODE);
10257 engine_debug('OPERAND_VALUE :='|| l_dets.OPERAND_VALUE);
10258 engine_debug('STATUS_CODE:='||l_dets.PRICING_STATUS_CODE);
10259 engine_debug('STATUS_TEXT:='||substr(l_dets.PRICING_STATUS_TEXT,1,240));
10260 engine_debug('SUBSTITUTION_ATTRIBUTE:='||l_dets.SUBSTITUTION_ATTRIBUTE);
10261 engine_debug('ACCRUAL_FLAG:='||l_dets.ACCRUAL_FLAG);
10262 engine_debug('LIST_LINE_NO:='||l_dets.LIST_LINE_NO);
10263 engine_debug('ESTIM_GL_VALUE:='||l_dets.ESTIM_GL_VALUE);
10264 engine_debug('ACCRUAL_CONVERSION_RATE:='||l_dets.ACCRUAL_CONVERSION_RATE);
10265 END IF;
10266 --Pass throuh components
10267 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10268 engine_debug('OVERRIDE_FLAG:='|| l_dets.OVERRIDE_FLAG);
10269 engine_debug('INVENTORY_ITEM_ID:='||l_dets.INVENTORY_ITEM_ID);
10270 engine_debug('ORGANIZATION_ID:='||l_dets.ORGANIZATION_ID);
10271 engine_debug('RELATED_ITEM_ID:='|| l_dets.RELATED_ITEM_ID);
10272 engine_debug('RELATIONSHIP_TYPE_ID:='||l_dets.RELATIONSHIP_TYPE_ID);
10273 engine_debug('ESTIM_ACCRUAL_RATE:='||l_dets.ESTIM_ACCRUAL_RATE);
10274 engine_debug('EXPIRATION_DATE:='||l_dets.EXPIRATION_DATE);
10275 engine_debug('BENEFIT_PRICE_LIST_LINE_ID:='||l_dets.BENEFIT_PRICE_LIST_LINE_ID);
10276 engine_debug('RECURRING_FLAG:='|| l_dets.RECURRING_FLAG);
10277 engine_debug('BENEFIT_LIMIT:='|| l_dets.BENEFIT_LIMIT);
10278 engine_debug('CHARGE_TYPE_CODE:='|| l_dets.CHARGE_TYPE_CODE);
10279 engine_debug('CHARGE_SUBTYPE_CODE:='||l_dets.CHARGE_SUBTYPE_CODE);
10280 engine_debug('BENEFIT_QTY:='||l_dets.BENEFIT_QTY);
10281 engine_debug('BENEFIT_UOM_CODE:='||l_dets.BENEFIT_UOM_CODE);
10282 engine_debug('PRORATION_TYPE_CODE:='||l_dets.PRORATION_TYPE_CODE);
10283 engine_debug('INCLUDE_ON_RETURNS_FLAG :='|| l_dets.INCLUDE_ON_RETURNS_FLAG);
10284 engine_debug('MODIFIER_LEVEL_CODE :='|| l_dets.MODIFIER_LEVEL_CODE);
10285 engine_debug('GROUP VALUE :='|| l_dets.GROUP_QUANTITY);
10286 engine_debug('LIMIT_CODE :='|| l_dets.LIMIT_CODE);
10287 engine_debug('LIMIT_TEXT :='|| substr(l_dets.LIMIT_TEXT,1,240));
10288 engine_debug('CHANGE_REASON_CODE :='|| l_dets.CHANGE_REASON_CODE);
10289 engine_debug('CHANGE_REASON_TEXT :='|| substr(l_dets.CHANGE_REASON_TEXT,1,240));
10290 engine_debug('BREAK_UOM_CODE :='|| l_dets.BREAK_UOM_CODE); /* proration */
10291 engine_debug('BREAK_UOM_CONTEXT :='|| l_dets.BREAK_UOM_CONTEXT); /* proration */
10292 engine_debug('BREAK_UOM_ATTRIBUTE :='|| l_dets.BREAK_UOM_ATTRIBUTE); /* proration */
10293
10294 END IF;
10295 --I:=I+1;
10296 END LOOP;
10297 I:=1;
10298
10299 --Populate Qualifier detail
10300 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10301 engine_debug('----Before populate x_qual_tbl-----');
10302 END IF;
10303 FOR l_qual IN l_int_qual_cur(G_DETAIL_LEVEL) LOOP
10304 x_line_detail_qual_tbl(I).LINE_DETAIL_INDEX := l_qual.LINE_DETAIL_INDEX;
10305 x_line_detail_qual_tbl(I).QUALIFIER_CONTEXT := l_qual.CONTEXT;
10306 x_line_detail_qual_tbl(I).QUALIFIER_ATTRIBUTE := l_qual.ATTRIBUTE;
10307 x_line_detail_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM := l_qual.SETUP_VALUE_FROM;
10308 x_line_detail_qual_tbl(I).QUALIFIER_ATTR_VALUE_TO := l_qual.SETUP_VALUE_TO;
10309 x_line_detail_qual_tbl(I).COMPARISON_OPERATOR_CODE := l_qual.COMPARISON_OPERATOR_TYPE_CODE;
10310 x_line_detail_qual_tbl(I).status_code := l_qual.PRICING_STATUS_CODE;
10311 x_line_detail_qual_tbl(I).VALIDATED_FLAG :=l_qual.VALIDATED_FLAG;
10312
10313 I:=I+1;
10314 END LOOP;
10315 I:=1;
10316
10317 --LINE ATTRIBUTE DETAIL NEEDED
10318 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10319 engine_debug('----Before populate attr_tbl-----');
10320 END IF;
10321 FOR l_prc IN l_int_pricing_attr_cur LOOP
10322 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10323 engine_debug('--------populating x_line_detail_attr----------');
10324 engine_debug('Line Detail Index: '||l_prc.LINE_DETAIL_INDEX);
10325 END IF;
10326 x_line_detail_attr_tbl(I).LINE_DETAIL_INDEX := l_prc.LINE_DETAIL_INDEX;
10327 x_line_detail_attr_tbl(I).PRICING_CONTEXT := l_prc.PRICING_CONTEXT;
10328 x_line_detail_attr_tbl(I).PRICING_ATTRIBUTE := l_prc.PRICING_ATTRIBUTE;
10329 x_line_detail_attr_tbl(I).PRICING_ATTR_VALUE_FROM :=l_prc.PRICING_ATTR_VALUE_FROM;
10330 x_line_detail_attr_tbl(I).PRICING_ATTR_VALUE_TO :=l_prc.PRICING_ATTR_VALUE_TO;
10331 x_line_detail_attr_tbl(I).VALIDATED_FLAG :=l_prc.VALIDATED_FLAG;
10332 --x_line_attr_tbl(I).PRICING_STATUS_CODE := l_prc.PRICING_STATUS_CODE;
10333 --x_line_attr_tbl(I).PRICING_STATUS_TEXT := l_prc.PRICING_STATUS_TEXT;
10334 I:=I+1;
10335 END LOOP;
10336
10337 I:=1;
10338
10339 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10340 engine_debug('----Before populate l_rltd_lines_tbl-----');
10341 END IF;
10342 FOR l_rltd IN l_int_rltd_lines_cur LOOP
10343 x_related_lines_tbl(I).LINE_INDEX := l_rltd.Line_index;
10344 x_related_lines_tbl(I).LINE_DETAIL_INDEX := l_rltd.LINE_DETAIL_INDEX;
10345 x_related_lines_tbl(I).RELATIONSHIP_TYPE_CODE :=l_rltd.RELATIONSHIP_TYPE_CODE;
10346 x_related_lines_tbl(I).RELATED_LINE_INDEX :=l_rltd.RELATED_LINE_INDEX;
10347 x_related_lines_tbl(I).RELATED_LINE_DETAIL_INDEX :=l_rltd.RELATED_LINE_DETAIL_INDEX;
10348 x_related_lines_tbl(I).STATUS_CODE :=l_rltd.PRICING_STATUS_CODE;
10349 x_related_lines_tbl(I).STATUS_TEXT :=l_rltd.PRICING_STATUS_TEXT;
10350 I:=I+1;
10351 END LOOP;
10352 END IF;
10353
10354 EXCEPTION
10355 WHEN E_ROUTINE_ERROR THEN
10356 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10357 engine_debug(l_routine||':'||substr(l_status_text,1,240));
10358 END IF;
10359
10360 END;
10361
10362 PROCEDURE Eliminate_Multiple_Hierarchies(p_pricing_phase_id NUMBER,
10363 x_status_code OUT NOCOPY VARCHAR2,
10364 x_status_text OUT NOCOPY VARCHAR2) AS
10365
10366 /*
10367 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_multiple_exclude_cur,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
10368 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_multiple_exclude_cur,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
10369 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_multiple_exclude_cur,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
10370 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_multiple_exclude_cur,qp_npreq_line_attrs_tmp_N5,LINE_INDEX,4
10371 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_multiple_exclude_cur,qp_npreq_line_attrs_tmp_N5,COMPARISON_OPERATOR_CODE,5
10372
10373 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_multiple_exclude_cur,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
10374
10375 */
10376
10377 --Pricing Phase Change
10378 CURSOR l_get_multiple_exclude_cur IS
10379 SELECT /*+ ORDERED USE_NL(b) index(a qp_preq_line_attrs_tmp_N5) l_get_multiple_exclude_cur */
10380 distinct a.line_index , a.list_header_id , a.list_line_id , a.grouping_number grouping_no,
10381 a.context , a.attribute , a.setup_value_from
10382 FROM qp_npreq_line_attrs_tmp a , qp_npreq_ldets_tmp b
10383 WHERE
10384 a.comparison_operator_type_code = 'NOT ='
10385 AND a.attribute_type IN (G_PRICING_TYPE,G_QUALIFIER_TYPE)
10386 AND a.pricing_status_code = G_STATUS_NEW
10387 AND a.pricing_phase_id = p_pricing_phase_id
10388 AND a.line_index > 0
10389 AND a.line_detail_index = b.line_detail_index
10390 AND b.pricing_status_code = G_STATUS_NEW
10391 order by a.line_index,a.list_header_id,a.list_line_id, a.grouping_number;
10392
10393 /*
10394 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_passed_hierarchy_cur,qp_npreq_line_attrs_tmp_N2,line_index,1
10395 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_passed_hierarchy_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
10396 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_passed_hierarchy_cur,qp_npreq_line_attrs_tmp_N2,context,3
10397 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_passed_hierarchy_cur,qp_npreq_line_attrs_tmp_N2,attribute,4
10398 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_passed_hierarchy_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
10399 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_passed_hierarchy_cur,qp_npreq_line_attrs_tmp_N2,value_from,6
10400 */
10401 CURSOR l_get_passed_hierarchy_cur(p_line_index NUMBER,
10402 p_context VARCHAR2,
10403 p_attribute VARCHAR2,
10404 p_value VARCHAR2) IS
10405 SELECT value_from
10406 FROM qp_npreq_line_attrs_tmp
10407 WHERE context = p_context
10408 AND attribute = p_attribute
10409 AND value_from = p_value
10410 AND line_index = p_line_index
10411 AND attribute_type IN (G_PRICING_TYPE,G_QUALIFIER_TYPE )
10412 AND pricing_status_code = G_STATUS_UNCHANGED;
10413
10414 l_del_list_line_tbl NUMBER_TYPE;
10415 l_del_list_header_tbl NUMBER_TYPE;
10416 l_del_line_index_tbl NUMBER_TYPE;
10417 l_del_ind PLS_INTEGER := 0;
10418 l_list_line_index NUMBER := -9999;
10419 l_list_line_id NUMBER := -9999;
10420 l_list_header_id NUMBER := -9999;
10421 l_list_attr_type VARCHAR2(30) := 'NULL';
10422 l_grouping_no NUMBER := -9999999999999;
10423 l_setup_context VARCHAR2(240);
10424 l_setup_attribute VARCHAR2(240);
10425 l_setup_value_from VARCHAR2(240);
10426 l_passed_value_from VARCHAR2(240);
10427 l_deleted_flag BOOLEAN := FALSE;
10428 l_status_code VARCHAR2(30);
10429 l_status_text VARCHAR2(240);
10430 l_routine CONSTANT VARCHAR2(240) := 'QP_PREQ_GRP.Eliminate_Multiple_Hierarchies';
10431
10432 E_ROUTINE_ERRORS EXCEPTION;
10433
10434 BEGIN
10435 qp_debug_util.tstart('Eliminate_Multiple_Hierarchies','Procedure Eliminate_Multiple_Hierarchies');
10436 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10437 engine_debug('In procedure Eliminate_Multiple_Hierarchies');
10438
10439 END IF;
10440 FOR i IN l_get_multiple_exclude_cur
10441 LOOP
10442
10443 IF (l_list_line_index <> i.line_index or l_list_line_id <> i.list_line_id or l_grouping_no <> i.grouping_no or
10444 l_deleted_flag = FALSE) THEN
10445
10446 l_passed_value_from := NULL; -- Init
10447 l_deleted_flag := FALSE;
10448
10449 --l_setup_context := i.context;
10450 --l_setup_attribute := i.attribute;
10451 --l_setup_value_from := i.setup_value_from;
10452
10453 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10454 engine_debug('EMH Context:' || i.context || ' EMH Attribute:' || i.attribute || ' EMH Passed Value : '||i.setup_value_from);
10455 engine_debug('EMH Excluded Passed Value From Setup: ' || i.setup_value_from);
10456
10457 END IF;
10458 OPEN l_get_passed_hierarchy_cur(i.line_index,i.context,i.attribute,i.setup_value_from);
10459 FETCH l_get_passed_hierarchy_cur INTO l_passed_value_from;
10460 CLOSE l_get_passed_hierarchy_cur;
10461
10462 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10463 engine_debug('EMH Excluded Passed Value From Sourcing: ' || l_passed_value_from);
10464
10465 END IF;
10466 IF (l_passed_value_from IS NOT NULL) THEN
10467 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10468 engine_debug('EMH Deleted Flag is True');
10469 END IF;
10470 l_del_ind := l_del_ind + 1;
10471 l_del_list_line_tbl(l_del_ind) := i.list_line_id;
10472 l_del_list_header_tbl(l_del_ind) := i.list_header_id;
10473 l_del_line_index_tbl(l_del_ind) := i.line_index;
10474 l_deleted_flag := TRUE;
10475 END IF;
10476
10477 END IF;
10478
10479 l_list_line_index := i.line_index;
10480 l_list_line_id := i.list_line_id;
10481 l_list_header_id := i.list_header_id;
10482 l_grouping_no := i.grouping_no;
10483
10484 END LOOP;
10485
10486 -- Delete the multiple hierarchies
10487 IF (l_del_list_line_tbl.COUNT > 0) THEN
10488 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10489 engine_debug('Actually Deleting');
10490 END IF;
10491 FORALL j IN l_del_list_line_tbl.FIRST .. l_del_list_line_tbl.LAST
10492 /*
10493 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.upd1,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
10494 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.upd1,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
10495 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.upd1,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
10496 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.upd1,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
10497 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.upd1,qp_npreq_line_attrs_tmp_N1,LIST_LINE_ID,5
10498 */
10499 UPDATE qp_npreq_line_attrs_tmp --upd1
10500 SET pricing_status_code = G_DELETED_EXCLUDER
10501 WHERE list_header_id = l_del_list_header_tbl(j)
10502 AND list_line_id = l_del_list_line_tbl(j)
10503 AND line_index = l_del_line_index_tbl(j)
10504 AND comparison_operator_type_code = 'NOT ='
10505 AND pricing_status_code = G_STATUS_NEW -- Expect an issue because of this join condition
10506 AND attribute_type IN (G_PRICING_TYPE,G_QUALIFIER_TYPE);
10507
10508 /* FORALL j IN l_del_list_line_tbl.FIRST .. l_del_list_line_tbl.LAST
10509 UPDATE qp_npreq_ldets_tmp
10510 SET pricing_status_code = G_DELETED_EXCLUDER
10511 WHERE created_from_list_header_id = l_del_list_header_tbl(j)
10512 AND created_from_list_line_id = l_del_list_line_tbl(j)
10513 AND line_index = l_del_line_index_tbl(j)
10514 AND pricing_phase_id = p_pricing_phase_id; */
10515 END IF;
10516
10517 -- shu fix bug 1915355
10518 -- To delete duplicate list lines selected by ask for and regular cursors
10519 IF (p_pricing_phase_id <> G_PRICE_LIST_PHASE_ID) THEN
10520 Delete_Duplicate_List_Lines(p_pricing_phase_id,l_status_code,l_status_text);
10521 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
10522 RAISE E_ROUTINE_ERRORS;
10523 END IF;
10524 END IF;
10525 qp_debug_util.tstop('Eliminate_Multiple_Hierarchies');
10526 EXCEPTION
10527 WHEN E_ROUTINE_ERRORS THEN
10528 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10529 engine_debug(l_routine||': '||l_status_text);
10530 END IF;
10531 x_status_code := FND_API.G_RET_STS_ERROR;
10532 x_status_text := l_routine||': '||l_status_text;
10533 qp_debug_util.tstop('Eliminate_Multiple_Hierarchies');
10534 WHEN OTHERS THEN
10535 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10536 engine_debug(l_routine||' '||SQLERRM);
10537 END IF;
10538 x_status_code := FND_API.G_RET_STS_ERROR;
10539 x_status_text := 'Error in '||l_routine||SQLERRM;
10540 qp_debug_util.tstop('Eliminate_Multiple_Hierarchies');
10541 END Eliminate_Multiple_Hierarchies;
10542
10543 /*+--------------------------------------------------------
10544 |PROCEDURE PROCESS_LINE_GROUP
10545 |This procedure sum OUT quantity/amt
10546 |across all lines that have same product context,attribute,value
10547 |, pricing context,attribute and have list_line which is
10548 |line group. The output on the sum will be populated
10549 |either on GROUP_QUANTITY or qualifier_amt column
10550 |of qp_npreq_lines_tmp.
10551 +--------------------------------------------------------
10552 */
10553
10554 PROCEDURE PROCESS_LINE_GROUP(p_pricing_phase_id NUMBER,
10555 x_status_code OUT NOCOPY VARCHAR2,
10556 x_status_text OUT NOCOPY VARCHAR2) AS
10557 /*
10558 -- Might need a new index with pricing_phase_id
10559 */
10560
10561 l_routine VARCHAR2(30) := 'Process_Line_Group';
10562
10563 CURSOR line_grp_cur IS
10564 select /*+ ORDERED USE_NL(c a ) index(a qp_pricing_attributes_n2) line_grp_cur */
10565 b.created_from_list_line_id list_line_id , c.context , c.attribute ,
10566 sum(qp_number.canonical_to_number(c.value_from)) group_value
10567 from
10568 qp_npreq_ldets_tmp b , qp_npreq_line_attrs_tmp c , qp_pricing_attributes a
10569 where
10570 b.modifier_level_code = G_LINE_GROUP
10571 and b.pricing_phase_id = p_pricing_phase_id
10572 and c.pricing_status_code = G_STATUS_UNCHANGED
10573 and c.context = G_PRIC_VOLUME_CONTEXT
10574 and c.attribute_type = G_PRICING_TYPE
10575 and b.line_index = c.line_index
10576 and b.pricing_status_code = G_STATUS_NEW
10577 and a.list_line_id = b.created_from_list_line_id
10578 and a.pricing_attribute_context = G_PRIC_VOLUME_CONTEXT
10579 and a.pricing_attribute = c.attribute
10580 group by b.created_from_list_line_id , c.context , c.attribute;
10581
10582 /*select c.list_line_id list_line_id , c.context , c.attribute ,
10583 sum(qp_number.canonical_to_number(c.value_from)) group_value
10584 from
10585 qp_npreq_line_attrs_tmp c
10586 where
10587 c.modifier_level_code = G_LINE_GROUP
10588 and c.pricing_phase_id = p_pricing_phase_id
10589 and c.pricing_status_code = G_STATUS_NEW
10590 and c.context = G_PRIC_VOLUME_CONTEXT
10591 and c.attribute_type = G_PRICING_TYPE
10592 and c.pricing_status_code = G_STATUS_NEW
10593 group by c.list_line_id , c.context , c.attribute ; */
10594
10595 --begin 2388011, grp_pbh_amt
10596 CURSOR l_get_list_price_cur(p_list_line_id NUMBER) IS
10597 SELECT a.LINE_INDEX ,a.UNIT_PRICE
10598 FROM qp_npreq_lines_tmp a,qp_npreq_ldets_tmp b
10599 WHERE a.LINE_INDEX = b.LINE_INDEX
10600 AND b.CREATED_FROM_LIST_LINE_ID = p_list_line_id;
10601 --end 2388011, grp_pbh_amt
10602
10603 l_GROUP_QUANTITY NUMBER;
10604 l_GROUP_AMOUNT NUMBER;
10605 l_dummy VARCHAR2(1);
10606
10607 -- begin shu, 2388011, grp_pbh_amt
10608 l_list_price NUMBER;
10609 l_group_amount_per_unit NUMBER;
10610 G_LINE_INDEX_TBL_G PLS_INTEGER_TYPE;
10611 G_UNIT_PRICE_TBL_G NUMBER_TYPE;
10612 G_GROUP_AMOUNT_PER_UNIT_TBL_G NUMBER_TYPE;
10613 nROWS CONSTANT NUMBER := 1000;
10614 -- end shu, 2388011, grp_pbh_amt
10615
10616
10617 BEGIN
10618
10619 --If no data has LINE_GROUP Modifier
10620 --don't bother to proceed
10621
10622 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10623 engine_debug('Starting process linegroup');
10624
10625 END IF;
10626 FOR J IN line_grp_cur LOOP
10627
10628 IF J.attribute = G_QUANTITY_ATTRIBUTE THEN
10629 l_group_quantity := J.group_value;
10630 l_group_amount := NULL;
10631 ELSE
10632 l_group_amount := J.group_value;
10633 l_group_quantity := NULL;
10634 END IF;
10635
10636 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10637 engine_debug('J.context : '||J.context);
10638 engine_debug('J.product_attribute : '||J.attribute);
10639 engine_debug('J.value_from : '||J.group_value);
10640 engine_debug('l_GROUP_QUANTITY: '||l_group_quantity);
10641 engine_debug('l_GROUP_AMOUNT: ' ||l_group_amount);
10642 engine_debug('List Line Id: ' ||j.list_line_id);
10643
10644 END IF;
10645 IF (j.attribute = G_QUANTITY_ATTRIBUTE) THEN
10646
10647 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10648 engine_debug('Updating Quantity Attribute');
10649
10650 END IF;
10651
10652 /*
10653 INDX,QP_PREQ_GRP.process_line_group.upd1,-No Index Used-,NA,NA
10654 */
10655 /*UPDATE qp_npreq_line_attrs_tmp --upd1
10656 SET GROUP_QUANTITY = l_group_quantity
10657 WHERE LIST_LINE_ID = j.list_line_id;*/
10658
10659 /*
10660 INDX,QP_PREQ_GRP.process_line_group.upd2,-No Index Used-,NA,NA
10661 */
10662 UPDATE qp_npreq_ldets_tmp --upd2
10663 SET LINE_QUANTITY = l_group_quantity, -- 2388011_latest, shu fix pbh_grp_amt
10664 GROUP_QUANTITY = l_group_quantity, -- 2388011_latest, shu fix pbh_grp_amt
10665 SELECTED_VOLUME_ATTR = G_QUANTITY -- 2388011_latest
10666 WHERE CREATED_FROM_LIST_LINE_ID = j.list_line_id;
10667
10668 ELSE
10669 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10670 engine_debug('Updating Amount Attribute');
10671 END IF;
10672
10673 -- begin shu, fix group of lines lumpsum based on ITEM_AMOUNT, 2388011
10674
10675 OPEN l_get_list_price_cur(j.list_line_id);
10676
10677 LOOP
10678 G_LINE_INDEX_TBL_G.delete;
10679 G_UNIT_PRICE_TBL_G.delete;
10680
10681 FETCH l_get_list_price_cur BULK COLLECT INTO
10682 G_LINE_INDEX_TBL_G
10683 , G_UNIT_PRICE_TBL_G LIMIT nROWS;
10684 EXIT WHEN G_LINE_INDEX_TBL_G.COUNT = 0;
10685
10686 IF (G_LINE_INDEX_TBL_G.COUNT > 0) THEN
10687 FOR I in G_LINE_INDEX_TBL_G.FIRST .. G_LINE_INDEX_TBL_G.LAST
10688 LOOP
10689 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10690 engine_debug('Line Index : ' ||g_line_index_tbl_g(I));
10691 engine_debug('Unit Price : ' ||g_unit_price_tbl_g(I));
10692 END IF; -- 4033618
10693 IF (G_UNIT_PRICE_TBL_G(I) IS NOT NULL and G_UNIT_PRICE_TBL_G(I) <> 0) THEN -- avoid division by zero
10694 G_GROUP_AMOUNT_PER_UNIT_TBL_G(I) := l_group_amount/G_UNIT_PRICE_TBL_G(I);
10695 ELSE
10696 IF (G_UNIT_PRICE_TBL_G(I) = 0 ) THEN
10697 G_GROUP_AMOUNT_PER_UNIT_TBL_G(I):= 0;
10698 ELSE -- unit price is NULL
10699 G_GROUP_AMOUNT_PER_UNIT_TBL_G(I) :=l_group_amount; -- ASK RAVI? why not 0
10700 END IF;
10701 END IF;
10702 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10703 engine_debug('Group Amount Per Unit: ' ||g_group_amount_per_unit_tbl_g(I));
10704 END IF; -- 4033618
10705 END LOOP;
10706 END IF;
10707
10708 /*
10709 INDX,QP_PREQ_GRP11.process_line_group.upd4,-No Index Used-,NA,NA
10710 */
10711 IF (G_LINE_INDEX_TBL_G.COUNT > 0) THEN
10712 FORALL I IN G_LINE_INDEX_TBL_G.FIRST .. G_LINE_INDEX_TBL_G.LAST
10713 UPDATE qp_npreq_ldets_tmp --upd4
10714 SET GROUP_AMOUNT = G_GROUP_AMOUNT_PER_UNIT_TBL_G(I),
10715 LINE_QUANTITY = l_group_amount, -- 2388011_latest
10716 SELECTED_VOLUME_ATTR = G_AMOUNT -- 2388011_latest
10717 WHERE CREATED_FROM_LIST_LINE_ID = j.list_line_id
10718 AND LINE_INDEX = G_LINE_INDEX_TBL_G(I);
10719 END IF;
10720
10721 END LOOP;
10722 CLOSE l_get_list_price_cur;
10723 END IF;
10724
10725 END LOOP;
10726
10727 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10728 engine_debug('End process line group');
10729
10730 END IF;
10731 EXCEPTION
10732 WHEN NO_DATA_FOUND THEN
10733 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10734 engine_debug('No line group data');
10735 engine_debug('End process line group');
10736 END IF;
10737 RETURN;
10738 WHEN OTHERS THEN
10739 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10740 engine_debug(l_routine||' '||SQLERRM);
10741 END IF;
10742 x_status_code := FND_API.G_RET_STS_ERROR;
10743 x_status_text := l_routine||': '||SQLERRM;
10744 END PROCESS_LINE_GROUP;
10745
10746 /*+----------------------------------------------------------
10747 |Is_Line_Group
10748 +---------------------------------------------------------
10749 */
10750 FUNCTION Is_Line_Group (p_line_detail_index IN PLS_INTEGER:=NULL,
10751 p_line_index IN NUMBER:=NULL) RETURN BOOLEAN
10752 AS
10753 l_dummy VARCHAR2(30);
10754 l_routine VARCHAR2(240):='QP_PREQ_GRP.Is_Line_Group';
10755 BEGIN
10756
10757 IF (p_line_detail_index IS NOT NULL) THEN
10758 /*
10759 INDX,QP_PREQ_GRP.is_line_group.is_line_group_sel1,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
10760 */
10761 SELECT 'X'
10762 INTO l_dummy
10763 FROM qp_npreq_ldets_tmp
10764 WHERE line_detail_index = p_line_detail_index
10765 AND modifier_level_code = G_LINE_GROUP;
10766 ELSE
10767 /*
10768 INDX,QP_PREQ_GRP.is_line_group.is_line_group_sel2,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
10769 */
10770 SELECT 'X'
10771 INTO l_dummy
10772 FROM qp_npreq_ldets_tmp
10773 WHERE line_index = p_line_index
10774 AND modifier_level_code = G_LINE_GROUP;
10775 END IF;
10776
10777 RETURN TRUE;
10778
10779 EXCEPTION
10780 WHEN NO_DATA_FOUND THEN
10781 RETURN FALSE;
10782 END Is_Line_Group;
10783
10784 /*+------------------------------------------------------
10785 |Is_Uom_Match
10786 |
10787 +-----------------------------------------------------
10788 */
10789
10790 Function Is_Uom_Match(p_line_index IN PLS_INTEGER,
10791 p_product_uom_code IN VARCHAR2
10792 ) RETURN BOOLEAN
10793 AS
10794
10795 l_dummy VARCHAR2(1);
10796
10797 BEGIN
10798 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10799 engine_debug('p_line_index : '||p_line_index);
10800 engine_debug('p_product_uom_code: '||nvl(p_product_uom_code,'Null'));
10801 END IF;
10802 /*
10803 INDX,QP_PREQ_GRP.is_uom_match.is_uom_match_sel1,qp_npreq_lines_tmp_N1,LINE_INDEX,1
10804 */
10805 SELECT 'X'
10806 INTO l_dummy
10807 FROM qp_npreq_lines_tmp qplines
10808 WHERE qplines.LINE_INDEX = p_line_index
10809 AND nvl(qplines.PRICED_UOM_CODE,qplines.LINE_UOM_CODE) =
10810 nvl(p_product_uom_code,nvl(qplines.PRICED_UOM_CODE,qplines.LINE_UOM_CODE));
10811
10812 RETURN TRUE;
10813
10814 EXCEPTION
10815 WHEN NO_DATA_FOUND THEN
10816 RETURN FALSE;
10817
10818 END;
10819
10820 /*+-----------------------------------------------------------
10821 |Covert_Uom
10822 |This procedure will try to convert ordered uom to
10823 |primary uom.
10824 +-----------------------------------------------------------
10825 */
10826
10827 PROCEDURE Convert_Uom(p_order_uom_code IN VARCHAR2,
10828 p_primary_uom_code IN VARCHAR2,
10829 p_value IN NUMBER,
10830 x_converted_value OUT NOCOPY NUMBER,
10831 x_status_code OUT NOCOPY VARCHAR2,
10832 x_status_text OUT NOCOPY VARCHAR2) AS
10833
10834 --l_primary_uom VARCHAR2(3):=NULL;
10835 --l_line_uom_code VARCHAR2(3):=NULL;
10836 E_INVALID_UOM EXCEPTION;
10837 l_item_id NUMBER := 0;
10838 l_uom_rate NUMBER;
10839 l_routine VARCHAR2(240):= 'QP_PREQ_GRP.Convert_Uom';
10840 BEGIN
10841
10842 x_status_code := FND_API.G_RET_STS_SUCCESS;
10843
10844 INV_CONVERT.INV_UM_CONVERSION(p_order_uom_code,
10845 p_primary_uom_code,
10846 l_item_id,
10847 l_uom_rate);
10848
10849 IF (l_uom_rate >= 0) THEN
10850 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10851 engine_debug ('conversion rate: '||l_uom_rate);
10852 END IF;
10853 x_converted_value := p_value * l_uom_rate;
10854 ELSE
10855 Raise E_INVALID_UOM;
10856 END IF;
10857
10858
10859 EXCEPTION
10860
10861 WHEN E_INVALID_UOM THEN
10862 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10863 engine_debug('Invalid UOM');
10864 END IF;
10865 x_status_code := FND_API.G_RET_STS_ERROR;
10866 x_status_text := 'Invalid UOM';
10867 WHEN OTHERS THEN
10868 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10869 engine_debug(l_routine||': '||SQLERRM);
10870 END IF;
10871 x_status_code := FND_API.G_RET_STS_ERROR;
10872 x_status_text := l_routine||': '||SQLERRM;
10873 END Convert_Uom;
10874
10875 /*+----------------------------------------------------------
10876 |Update_Request_Line_Status(For request lines that have price list passed)
10877 +----------------------------------------------------------
10878 */
10879 PROCEDURE Update_Request_Line_Status(p_control_rec CONTROL_RECORD_TYPE,
10880 p_status_code VARCHAR2,
10881 p_freeze_override_flag IN VARCHAR2, --[julin/4708044]
10882 x_status_code OUT NOCOPY VARCHAR2,
10883 x_status_text OUT NOCOPY VARCHAR2) AS
10884
10885 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.Update_Request_Line_Status';
10886 l_rounding_factor NUMBER:= NULL;
10887
10888 BEGIN
10889 qp_debug_util.tstart('UPDATE_REQUEST_LINE_STATUS','Procedure UPDATE_REQUEST_LINE_STATUS');
10890 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10891 engine_debug('In Update Request Line Status : ' || p_status_code);
10892 END IF;
10893
10894 /* --po integration start
10895 UPDATE qp_npreq_lines_tmp a
10896 SET pricing_status_code = G_STATUS_UPDATED
10897 Where list_price_override_flag in ('Y', 'O') --po integration
10898 AND line_type_code <> G_ORDER_LEVEL;
10899 --po integration end
10900 */
10901
10902
10903 IF (p_status_code = 'SUCCESS') THEN
10904 /*
10905 INDX,QP_PREQ_GRP.update_request_line_status.update_request_line_status_upd1,-No Index Used-,NA,NA
10906 */
10907 /*
10908 INDX,QP_PREQ_GRP.update_request_line_status.sel1,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
10909 INDX,QP_PREQ_GRP.update_request_line_status.sel1,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
10910 INDX,QP_PREQ_GRP.update_request_line_status.sel1,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
10911 */
10912
10913 UPDATE qp_npreq_lines_tmp a
10914 SET pricing_status_code = G_STATUS_UPDATED
10915 ,processed_code = NULL -- bug 3501150
10916 WHERE EXISTS (SELECT 'x'
10917 from qp_npreq_ldets_tmp b
10918 WHERE a.line_index = b.line_index
10919 AND b.pricing_status_code = G_STATUS_NEW
10920 AND b.pricing_phase_id = G_PRICE_LIST_PHASE_ID)
10921 AND line_type_code <> G_ORDER_LEVEL;
10922
10923 -- To make sure lines which did not get the price and do not have a record in qp_npreq_ldets_tmp get picked up
10924 UPDATE qp_npreq_lines_tmp a
10925 SET processed_code = G_STS_LHS_NOT_FOUND
10926 WHERE NOT EXISTS (SELECT 'x'
10927 FROM qp_npreq_ldets_tmp b
10928 WHERE a.line_index = b.line_index
10929 AND b.pricing_status_code = G_STATUS_NEW
10930 AND b.pricing_phase_id = G_PRICE_LIST_PHASE_ID)
10931 AND line_type_code <> G_ORDER_LEVEL
10932 AND list_price_override_flag = 'N' --po integration
10933 AND pricing_status_code NOT IN (G_STATUS_DUP_PRICE_LIST,G_STATUS_INVALID_UOM_CONV)
10934 AND (price_flag = G_YES OR --[julin/4708044]
10935 (price_flag = G_PHASE AND p_freeze_override_flag = G_YES));
10936
10937
10938 /* --IF (nvl(p_control_rec.rounding_flag,G_YES) = G_YES) THEN
10939 -- need rounding_factor when 'Y', 'Q', 'U'
10940 IF (nvl(p_control_rec.rounding_flag,G_YES) <> 'N') THEN -- shu new rounding
10941
10942 DECLARE
10943
10944 CURSOR tmp_data IS
10945 SELECT rounding_factor FROM qp_npreq_lines_tmp;
10946 BEGIN
10947
10948 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10949 engine_debug ('G_MCURR_PROFILE: '||G_MULTI_CURRENCY_PROFILE);
10950 engine_debug ('p_control_rec.use_multi_currency: '||p_control_rec.use_multi_currency);
10951 END IF;
10952 -- cannot use IF G_MCURR_INSTALLED_USED here, it is null
10953 IF G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
10954
10955 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10956 engine_debug ('get rounding_factor from qp_currency_details table...');
10957 END IF;
10958
10959 UPDATE qp_npreq_lines_tmp a
10960 SET ROUNDING_FACTOR = (SELECT qcdt.selling_rounding_factor
10961 FROM qp_currency_details qcdt, qp_list_headers_b qhdr
10962 WHERE qhdr.list_header_id = a.price_list_header_id
10963 AND qhdr.currency_header_id = qcdt.currency_header_id
10964 AND qcdt.to_currency_code = a.currency_code
10965 AND a.pricing_effective_date BETWEEN
10966 NVL(TRUNC(qcdt.start_date_active),a.pricing_effective_date)
10967 AND NVL(TRUNC(qcdt.end_date_active),a.pricing_effective_date)
10968 AND ROWNUM <2) -- there maybe more than one rows rtrns here
10969 WHERE ROUNDING_FACTOR IS NULL;
10970
10971 ELSE -- multi curr not installed not used, obtain rounding_factor from qp_list_headers_b
10972
10973 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10974 engine_debug('get rounding factor from qp_list_headers_b...');
10975 END IF;
10976 UPDATE qp_npreq_lines_tmp a
10977 SET ROUNDING_FACTOR = (SELECT qhdr.rounding_factor
10978 FROM qp_list_headers_b qhdr
10979 WHERE qhdr.list_header_id = a.price_list_header_id)
10980 WHERE ROUNDING_FACTOR IS NULL;
10981
10982 END IF; -- END IF G_MCURR_INSTALLED_USED = G_YES
10983
10984
10985 FOR i IN tmp_data LOOP
10986 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10987 engine_debug ('final rounding_factor ' ||i.rounding_factor);
10988 END IF;
10989 end LOOP;
10990
10991
10992 EXCEPTION
10993 WHEN no_data_found THEN
10994 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10995 engine_debug ('no_data_found occurred while obtaining rounding_factor');
10996 END IF;
10997 WHEN others THEN
10998 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10999 engine_debug ('error obtaining_rounding_factor: ' || SQLERRM);
11000 END IF;
11001 END; -- end declare
11002 END IF; -- end p_rounding_flag = 'Y' */
11003
11004 ELSE
11005
11006 /*
11007 INDX,QP_PREQ_GRP.update_request_line_status.sel3,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
11008 INDX,QP_PREQ_GRP.update_request_line_status.sel3,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
11009 INDX,QP_PREQ_GRP.update_request_line_status.sel3,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
11010 */
11011
11012 UPDATE qp_npreq_lines_tmp a
11013 SET processed_code = G_STS_LHS_NOT_FOUND
11014 WHERE NOT EXISTS (SELECT 'x'
11015 FROM qp_npreq_ldets_tmp b
11016 WHERE a.line_index = b.line_index
11017 AND b.pricing_status_code = G_STATUS_NEW
11018 AND b.pricing_phase_id = G_PRICE_LIST_PHASE_ID)
11019 AND line_type_code <> G_ORDER_LEVEL
11020 AND list_price_override_flag in ( 'N', 'O') --po integration
11021 AND (price_flag = G_YES OR --[julin/4708044]
11022 (price_flag = G_PHASE AND p_freeze_override_flag = G_YES));
11023
11024 END IF;
11025 qp_debug_util.tstop('UPDATE_REQUEST_LINE_STATUS');
11026 EXCEPTION
11027 WHEN OTHERS THEN
11028 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11029 engine_debug(l_routine || ' ' || SQLERRM);
11030 END IF;
11031 x_status_code := FND_API.G_RET_STS_ERROR;
11032 x_status_text := l_routine||' '||SQLERRM;
11033 qp_debug_util.tstop('UPDATE_REQUEST_LINE_STATUS');
11034 END Update_Request_Line_Status;
11035
11036 /*+----------------------------------------------------------
11037 |Evaluate_Between
11038 +----------------------------------------------------------
11039 */
11040 -- Pricing Phase Change
11041 PROCEDURE Evaluate_Between (p_pricing_phase_id IN PLS_INTEGER,
11042 p_line_group_flag IN VARCHAR2 :=NULL,
11043 p_line_index IN NUMBER := NULL,
11044 x_status_code OUT NOCOPY VARCHAR2,
11045 x_status_text OUT NOCOPY VARCHAR2) AS
11046
11047
11048 /*
11049 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
11050 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
11051 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
11052 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_line_attrs_tmp_N5,LINE_INDEX,4
11053 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_line_attrs_tmp_N5,COMPARISON_OPERATOR_CODE,5
11054 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_line_attrs_tmp_N5,DATATYPE,6
11055
11056 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11057
11058 */
11059
11060 CURSOR l_pric_between_cur(p_datatype VARCHAR2) IS
11061 SELECT /*+ ORDERED USE_NL(ldets) index(pricing qp_preq_line_attrs_tmp_N5) l_pric_between_cur */
11062 pricing.line_detail_index,
11063 pricing.line_index,
11064 pricing.value_from,
11065 -- line group not applicable for price lists.ignore any code around line group for price lists
11066 pricing.group_quantity,
11067 pricing.group_amount,
11068 pricing.setup_value_from,
11069 pricing.setup_value_to,
11070 pricing.product_uom_code,
11071 pricing.attribute,
11072 pricing.context,
11073 pricing.attribute_type
11074 FROM qp_npreq_line_attrs_tmp pricing,qp_npreq_ldets_tmp ldets
11075 WHERE pricing.comparison_operator_type_code = G_OPERATOR_BETWEEN
11076 AND pricing.datatype = p_datatype
11077 AND pricing.pricing_phase_id = G_PRICE_LIST_PHASE_ID
11078 AND pricing.attribute_type IN (G_PRICING_TYPE,G_QUALIFIER_TYPE)
11079 AND pricing.pricing_status_code IN (G_STATUS_UNCHANGED, G_STATUS_NEW)
11080 AND pricing.line_index > 0
11081 AND pricing.line_detail_index = ldets.line_detail_index
11082 AND ldets.pricing_status_code = G_STATUS_NEW
11083 FOR UPDATE of pricing.pricing_status_code;
11084
11085 /*
11086 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
11087 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_between_cur,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
11088 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
11089 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_between_cur,qp_npreq_line_attrs_tmp_N5,LINE_INDEX,4
11090 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_between_cur,qp_npreq_line_attrs_tmp_N5,COMPARISON_OPERATOR_CODE,5
11091 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_between_cur,qp_npreq_line_attrs_tmp_N5,DATATYPE,6
11092
11093 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11094
11095 */
11096
11097 CURSOR l_mod_between_cur(p_datatype VARCHAR2) IS
11098 SELECT /*+ ORDERED USE_NL(ldets) index(pricing qp_preq_line_attrs_tmp_N5) l_mod_between_cur */
11099 pricing.line_detail_index,
11100 pricing.line_index,
11101 pricing.value_from,
11102 ldets.group_quantity,
11103 ldets.line_quantity group_amount,
11104 pricing.setup_value_from,
11105 pricing.setup_value_to,
11106 pricing.product_uom_code,
11107 pricing.attribute,
11108 pricing.context,
11109 pricing.attribute_type
11110 FROM qp_npreq_line_attrs_tmp pricing,qp_npreq_ldets_tmp ldets
11111 WHERE pricing.comparison_operator_type_code = G_OPERATOR_BETWEEN
11112 AND pricing.datatype = p_datatype
11113 AND pricing.pricing_phase_id = p_pricing_phase_id
11114 AND pricing.attribute_type = G_PRICING_TYPE
11115 AND pricing.pricing_status_code IN (G_STATUS_UNCHANGED, G_STATUS_NEW)
11116 AND pricing.line_index > 0
11117 AND pricing.line_detail_index = ldets.line_detail_index
11118 AND ldets.pricing_status_code = G_STATUS_NEW
11119 FOR UPDATE of pricing.pricing_status_code;
11120
11121 /*
11122 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
11123 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
11124 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
11125 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_line_attrs_tmp_N5,LINE_INDEX,4
11126 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_line_attrs_tmp_N5,COMPARISON_OPERATOR_CODE,5
11127 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_line_attrs_tmp_N5,DATATYPE,6
11128
11129 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11130
11131 */
11132
11133 CURSOR l_pric_character_between_cur IS
11134 SELECT /*+ ORDERED USE_NL(c) index(b qp_preq_line_attrs_tmp_N5) l_pric_character_between_cur */
11135 b.line_detail_index,
11136 b.line_index,
11137 b.value_from,
11138 b.setup_value_from,
11139 b.setup_value_to,
11140 b.product_uom_code,
11141 b.attribute,
11142 b.context,
11143 b.attribute_type
11144 FROM qp_npreq_line_attrs_tmp b,qp_npreq_ldets_tmp c
11145 WHERE comparison_operator_type_code = G_OPERATOR_BETWEEN
11146 AND b.pricing_phase_id = G_PRICE_LIST_PHASE_ID
11147 AND datatype in (G_DATE_X,G_DATE_Y,G_VARCHAR)
11148 AND attribute_type IN (G_PRICING_TYPE,G_QUALIFIER_TYPE)
11149 AND b.pricing_status_code IN (G_STATUS_UNCHANGED,G_STATUS_NEW)
11150 AND b.pricing_phase_id = p_pricing_phase_id
11151 AND b.line_index > 0
11152 AND b.line_detail_index = c.line_detail_index
11153 AND c.pricing_status_code = G_STATUS_NEW
11154 FOR update of b.pricing_status_code;
11155
11156 /*
11157 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_character_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
11158 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_character_between_cur,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
11159 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_character_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
11160 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_character_between_cur,qp_npreq_line_attrs_tmp_N5,LINE_INDEX,4
11161 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_character_between_cur,qp_npreq_line_attrs_tmp_N5,COMPARISON_OPERATOR_CODE,5
11162 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_character_between_cur,qp_npreq_line_attrs_tmp_N5,DATATYPE,6
11163
11164 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11165
11166 */
11167
11168 CURSOR l_mod_character_between_cur IS
11169 SELECT /*+ ORDERED USE_NL(c) index(b qp_preq_line_attrs_tmp_N5) l_mod_character_between_cur */
11170 b.line_detail_index,
11171 b.line_index,
11172 b.value_from,
11173 b.setup_value_from,
11174 b.setup_value_to,
11175 b.product_uom_code,
11176 b.attribute,
11177 b.context,
11178 b.attribute_type
11179 FROM qp_npreq_line_attrs_tmp b,qp_npreq_ldets_tmp c
11180 WHERE comparison_operator_type_code = G_OPERATOR_BETWEEN
11181 AND b.pricing_phase_id = p_pricing_phase_id
11182 AND datatype in (G_DATE_X,G_DATE_Y,G_VARCHAR)
11183 AND attribute_type = G_PRICING_TYPE
11184 AND b.pricing_status_code IN (G_STATUS_UNCHANGED,G_STATUS_NEW)
11185 AND b.pricing_phase_id = p_pricing_phase_id
11186 AND b.line_index > 0
11187 AND b.line_detail_index = c.line_detail_index
11188 AND c.pricing_status_code = G_STATUS_NEW
11189 FOR update of b.pricing_status_code;
11190
11191 --[julin/5085310]
11192 CURSOR l_line_amount_cur(p_line_index NUMBER,
11193 p_line_detail_index NUMBER,
11194 p_context VARCHAR2,
11195 p_attribute VARCHAR2,
11196 p_attribute_type VARCHAR2)
11197 IS
11198 SELECT /*+ ORDERED USE_NL(a) l_line_amount_cur */
11199 fnd_number.canonical_to_number(c.value_from) group_value,
11200 a.priced_quantity
11201 FROM qp_npreq_line_attrs_tmp c, qp_npreq_lines_tmp a
11202 WHERE a.line_index = p_line_index
11203 AND a.LINE_INDEX = c.LINE_INDEX
11204 AND c.line_detail_index = p_line_detail_index
11205 AND c.context = p_context
11206 AND c.attribute_type = p_attribute_type
11207 AND c.attribute = p_attribute;
11208
11209 l_group_amount NUMBER; --shu
11210 l_list_price NUMBER; --shu
11211
11212 l_line_amount NUMBER;
11213 l_priced_quantity NUMBER;
11214
11215 l_value_from_date DATE;
11216 l_setup_value_from_date DATE;
11217 l_setup_value_to_date DATE;
11218 l_value_from_num NUMBER;
11219 l_setup_value_from_num NUMBER;
11220 l_setup_value_to_num NUMBER;
11221 l_dummy VARCHAR2(3);
11222 l_qualifier_qty NUMBER;
11223 l_qualifier_amt NUMBER;
11224 l_primary_uom VARCHAR2(3);
11225 l_item_id NUMBER;
11226 l_uom_rate NUMBER;
11227 l_line_uom_code VARCHAR2(3);
11228 l_status_code VARCHAR2(30);
11229 l_status_text VARCHAR2(240);
11230 l_deleted_between VARCHAR2(1);
11231 l_is_line_group_flag VARCHAR2(1);
11232 l_line_detail_tbl NUMBER_TYPE;
11233 l_count PLS_INTEGER := 0;
11234 l_selected_volume_attr VARCHAR2(1); -- 2388011_new
11235
11236 l_routine VARCHAR2(30) := 'Evaluate_Between';
11237 BEGIN
11238 qp_debug_util.tstart('Evaluate_Between','Procedure Evaluate_Between');
11239 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11240 QP_PREQ_GRP.engine_debug('In Evaluate Between' );
11241
11242 END IF;
11243 --Evaluate Between operator
11244 IF (p_line_group_flag IS NULL) THEN
11245
11246 --Character and date between
11247 IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
11248 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11249 QP_PREQ_GRP.engine_debug('Before Opening Price List Character Date Between Cur');
11250 END IF;
11251 FOR I IN l_pric_character_between_cur LOOP
11252 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11253 QP_PREQ_GRP.engine_debug('In Price List Character Date Between Cur');
11254 END IF;
11255 IF (I.value_from NOT BETWEEN nvl(I.setup_value_from,I.value_from) and nvl(I.setup_value_to,I.value_from)) THEN
11256
11257 -- If it is a pricing attribute and it fails on between we can delete it right away
11258 IF (I.attribute_type = 'PRICING') THEN
11259 l_count := l_count + 1;
11260 l_line_detail_tbl(l_count) := I.line_detail_index;
11261 ELSE
11262 UPDATE qp_npreq_line_attrs_tmp
11263 SET PRICING_STATUS_CODE = G_DELETED_BETWEEN
11264 WHERE CURRENT OF l_pric_character_between_cur;
11265 END IF;
11266 END IF;
11267 END LOOP;
11268 ELSE
11269 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11270 QP_PREQ_GRP.engine_debug('Before Opening Modifiers Character Date Between Cur');
11271 END IF;
11272 FOR I IN l_mod_character_between_cur LOOP
11273 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11274 QP_PREQ_GRP.engine_debug('In Modifiers Character Date Between Cur');
11275 END IF;
11276 IF (I.value_from NOT BETWEEN nvl(I.setup_value_from,I.value_from) and nvl(I.setup_value_to,I.value_from)) THEN
11277
11278 -- If it is a pricing attribute and it fails on between we can delete it right away
11279 IF (I.attribute_type = 'PRICING') THEN
11280 l_count := l_count + 1;
11281 l_line_detail_tbl(l_count) := I.line_detail_index;
11282 ELSE
11283 UPDATE qp_npreq_line_attrs_tmp
11284 SET PRICING_STATUS_CODE = G_DELETED_BETWEEN
11285 WHERE CURRENT OF l_mod_character_between_cur;
11286 END IF;
11287 END IF;
11288 END LOOP;
11289 END IF; -- IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID)
11290
11291 END IF; -- p_line_group_flag is null
11292
11293 --Handle between with numeric data type
11294
11295 IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
11296 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11297 QP_PREQ_GRP.engine_debug('Before Opening Price List Numeric Between Cur');
11298
11299 END IF;
11300 FOR I IN l_pric_between_cur(p_datatype => G_NUMERIC) LOOP
11301
11302 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11303 QP_PREQ_GRP.engine_debug('In Price List Numeric Between Cur');
11304
11305 END IF;
11306 l_deleted_between := 'F';
11307
11308 IF I.context = G_PRIC_VOLUME_CONTEXT THEN
11309 IF(Is_Line_Group(p_line_detail_index => I.line_detail_index) = TRUE) THEN
11310 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11311 QP_PREQ_GRP.engine_debug('Is Line Group #100');
11312
11313 END IF;
11314 l_is_line_group_flag := 'T';
11315
11316 IF (p_line_group_flag IS NOT NULL) THEN
11317 IF I.attribute = G_QUANTITY_ATTRIBUTE THEN
11318 l_value_from_num := I.group_quantity;
11319 l_selected_volume_attr := G_QUANTITY; -- 2388011_new
11320 ELSIF (I.attribute = G_LINE_AMT_ATTRIBUTE) THEN
11321 IF (p_pricing_phase_id <> G_PRICE_LIST_PHASE_ID) THEN
11322 l_value_from_num := I.group_amount;
11323 END IF;
11324 l_selected_volume_attr := G_AMOUNT; -- 2388011_new
11325 ELSE -- For Order Amount,Period1 Amount kind of attributes
11326 l_value_from_num := qp_number.canonical_to_number(I.value_from);
11327 END IF;
11328 ELSE -- Make it a success,because line group between is done again,so do not delete
11329 l_value_from_num := NULL;
11330 END IF;
11331
11332 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11333 engine_debug('Is line group');
11334 engine_debug('Group Quantity : ' || l_value_from_num);
11335 engine_debug('Line detail index: '||I.line_detail_index);
11336 END IF;
11337 ELSE -- is not a line group
11338 l_is_line_group_flag := 'F';
11339 l_value_from_num := qp_number.canonical_to_number(I.value_from);
11340 -- begin 2388011_new
11341 IF (I.attribute = G_QUANTITY_ATTRIBUTE) THEN
11342 l_selected_volume_attr := G_QUANTITY;
11343 ELSIF (I.attribute = G_LINE_AMT_ATTRIBUTE) THEN
11344 l_selected_volume_attr := G_AMOUNT;
11345 ELSE -- 2388011_latest
11346 l_selected_volume_attr := 'O'; -- 2388011_latest, for weight volume attribute
11347 END IF;
11348 -- end 2388011_new
11349 END IF;-- END is a line group
11350 ELSE --else Not a Volume Context
11351 l_is_line_group_flag := 'F';
11352 l_value_from_num := qp_number.canonical_to_number(I.value_from);
11353 END IF;
11354
11355
11356 IF (I.setup_value_from IS NULL) THEN
11357 l_setup_value_from_num := l_value_from_num;
11358 ELSE
11359 l_setup_value_from_num := qp_number.canonical_to_number(I.setup_value_from);
11360 END IF;
11361
11362 IF (I.setup_value_to IS NULL) THEN
11363 l_setup_value_to_num := l_value_from_num;
11364 ELSE
11365 l_setup_value_to_num := qp_number.canonical_to_number(I.setup_value_to);
11366 END IF;
11367
11368 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11369 engine_debug('1VALUE: '||l_value_from_num);
11370 engine_debug('2VALUE_FROM: '||l_setup_value_from_num);
11371 engine_debug('3VALUE_TO: '||l_setup_value_to_num);
11372
11373 END IF;
11374 IF (l_value_from_num NOT BETWEEN l_setup_value_from_num and l_setup_value_to_num) and l_value_from_num IS NOT NULL THEN
11375
11376 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11377 engine_debug('4NOT BETWEEN');
11378
11379 END IF;
11380 -- If it is a pricing attribute and it fails on between we can delete it right away
11381 IF (I.attribute_type = 'PRICING') THEN
11382 l_count := l_count + 1;
11383 l_line_detail_tbl(l_count) := I.line_detail_index;
11384 ELSE
11385 UPDATE qp_npreq_line_attrs_tmp
11386 SET PRICING_STATUS_CODE = G_DELETED_BETWEEN
11387 WHERE CURRENT OF l_pric_between_cur;
11388 l_deleted_between := 'T';
11389 END IF;
11390 END IF;
11391
11392 IF (l_deleted_between = 'F') THEN
11393
11394 IF (I.group_quantity IS NOT NULL and I.group_quantity <> l_value_from_num and l_value_from_num IS NOT NULL
11395 and p_line_group_flag IS NOT NULL) THEN
11396 /*
11397 INDX,QP_PREQ_GRP.evaluate_between.evaluate_between_upd1,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11398 */
11399 UPDATE qp_npreq_ldets_tmp
11400 SET GROUP_QUANTITY = l_value_from_num
11401 WHERE LINE_INDEX = i.line_index
11402 AND LINE_DETAIL_INDEX = i.line_detail_index;
11403 END IF;
11404
11405 -- shu debug msg
11406 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11407 QP_PREQ_GRP.engine_debug('check condition...');
11408 QP_PREQ_GRP.engine_debug('i.group_amount: : '||i.group_amount);
11409 QP_PREQ_GRP.engine_debug('l_value_from_num: '||l_value_from_num);
11410 QP_PREQ_GRP.engine_debug('p_line_group_flag: '||p_line_group_flag);
11411 END IF;
11412
11413
11414 IF (I.group_amount IS NOT NULL and l_value_from_num IS NOT NULL -- shu
11415 and p_line_group_flag IS NOT NULL) THEN
11416 /*
11417 INDX,QP_PREQ_GRP.evaluate_between.evaluate_between_upd2,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11418 */
11419
11420
11421 -- begin shu, fix group of lines lumpsum based on ITEM_AMOUNT
11422
11423 SELECT UNIT_PRICE INTO l_list_price
11424 FROM qp_npreq_lines_tmp
11425 WHERE LINE_INDEX = i.line_index;
11426
11427 /* Handled l_list_price = 0 bug2385874 */
11428 IF (l_list_price IS NOT NULL and l_list_price <>0) THEN -- avoid division by zero
11429
11430 l_group_amount := I.group_amount /l_list_price;
11431 ELSE
11432 if l_list_price = 0 then
11433 l_group_amount := 0;
11434 else
11435 l_group_amount :=I.group_amount;
11436 end if;
11437 END IF;
11438
11439 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11440 QP_PREQ_GRP.engine_debug('line_index: '||i.line_index);
11441 QP_PREQ_GRP.engine_debug('list price: '||l_list_price);
11442 QP_PREQ_GRP.engine_debug('i.group_amount: '||i.group_amount);
11443 QP_PREQ_GRP.engine_debug('group_value: '||l_group_amount);
11444 END IF;
11445 -- end shu fix
11446
11447 UPDATE qp_npreq_ldets_tmp
11448 SET GROUP_AMOUNT = l_group_amount -- shu
11449 WHERE LINE_INDEX = i.line_index
11450 AND LINE_DETAIL_INDEX = i.line_detail_index;
11451
11452 END IF;
11453
11454 --Need the LINE_QUANTITY column to be updated for regular lines with volume attributes, for Calculation purposes
11455 IF (p_line_group_flag IS NULL and l_is_line_group_flag = 'F'
11456 and i.context = G_PRIC_VOLUME_CONTEXT) -- added for [5005328/4911264]
11457 THEN
11458 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11459 QP_PREQ_GRP.engine_debug('Line Index: ' || i.line_index || ' LD Index : ' || i.line_detail_index ||
11460 ' '||l_value_from_num);
11461 END IF;
11462 /*
11463 INDX,QP_PREQ_GRP.evaluate_between.evaluate_between_upd3,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11464 */
11465 UPDATE qp_npreq_ldets_tmp
11466 SET LINE_QUANTITY = l_value_from_num
11467 WHERE LINE_INDEX = i.line_index
11468 AND LINE_DETAIL_INDEX = i.line_detail_index;
11469 END IF;
11470
11471 END IF;
11472 END LOOP;
11473 ELSE
11474 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11475 QP_PREQ_GRP.engine_debug('Before Opening Modifiers Numeric Between Cur');
11476 END IF;
11477 FOR I IN l_mod_between_cur(p_datatype => G_NUMERIC) LOOP
11478
11479 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11480 QP_PREQ_GRP.engine_debug('In Modifiers Numeric Between Cur');
11481
11482 END IF;
11483 l_deleted_between := 'F';
11484
11485 IF I.context = G_PRIC_VOLUME_CONTEXT THEN
11486 IF(Is_Line_Group(p_line_detail_index => I.line_detail_index) = TRUE) THEN
11487 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11488 QP_PREQ_GRP.engine_debug('Is Line Group #100');
11489
11490 END IF;
11491 l_is_line_group_flag := 'T';
11492
11493 IF (p_line_group_flag IS NOT NULL) THEN
11494 IF I.attribute = G_QUANTITY_ATTRIBUTE THEN
11495 l_value_from_num := I.group_quantity;
11496 ELSIF (I.attribute = G_LINE_AMT_ATTRIBUTE) THEN
11497 IF (p_pricing_phase_id <> G_PRICE_LIST_PHASE_ID) THEN
11498 l_value_from_num := I.group_amount;
11499 END IF;
11500 ELSE -- For Order Amount,Period1 Amount kind of attributes
11501 l_value_from_num := qp_number.canonical_to_number(I.value_from);
11502 END IF;
11503 ELSE -- Make it a success,because line group between is done again,so do not delete
11504 l_value_from_num := NULL;
11505 END IF;
11506
11507 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11508 engine_debug('Is line group');
11509 engine_debug('Group Quantity : ' || l_value_from_num);
11510 engine_debug('Line detail index: '||I.line_detail_index);
11511 END IF;
11512 ELSE -- is not a line group
11513 l_is_line_group_flag := 'F';
11514 l_value_from_num := qp_number.canonical_to_number(I.value_from);
11515 END IF;
11516 ELSE --else Not a Volume Context
11517 l_is_line_group_flag := 'F';
11518 l_value_from_num := qp_number.canonical_to_number(I.value_from);
11519 END IF;
11520
11521
11522 IF (I.setup_value_from IS NULL) THEN
11523 l_setup_value_from_num := l_value_from_num;
11524 ELSE
11525 l_setup_value_from_num := qp_number.canonical_to_number(I.setup_value_from);
11526 END IF;
11527
11528 IF (I.setup_value_to IS NULL) THEN
11529 l_setup_value_to_num := l_value_from_num;
11530 ELSE
11531 l_setup_value_to_num := qp_number.canonical_to_number(I.setup_value_to);
11532 END IF;
11533
11534 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11535 engine_debug('1VALUE: '||l_value_from_num);
11536 engine_debug('2VALUE_FROM: '||l_setup_value_from_num);
11537 engine_debug('3VALUE_TO: '||l_setup_value_to_num);
11538
11539 END IF;
11540 IF (l_value_from_num NOT BETWEEN l_setup_value_from_num and l_setup_value_to_num) and l_value_from_num IS NOT NULL THEN
11541
11542 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11543 engine_debug('4NOT BETWEEN');
11544
11545 END IF;
11546 -- If it is a pricing attribute and it fails on between we can delete it right away
11547 IF (I.attribute_type = 'PRICING') THEN
11548 l_count := l_count + 1;
11549 l_line_detail_tbl(l_count) := I.line_detail_index;
11550 ELSE
11551 UPDATE qp_npreq_line_attrs_tmp
11552 SET PRICING_STATUS_CODE = G_DELETED_BETWEEN
11553 WHERE CURRENT OF l_mod_between_cur;
11554 l_deleted_between := 'T';
11555 END IF;
11556 END IF;
11557
11558 IF (l_deleted_between = 'F') THEN
11559
11560 IF (I.group_quantity IS NOT NULL and I.group_quantity <> l_value_from_num and l_value_from_num IS NOT NULL
11561 and p_line_group_flag IS NOT NULL) THEN
11562 /*
11563 INDX,QP_PREQ_GRP.evaluate_between.evaluate_between_upd1,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11564 */
11565 UPDATE qp_npreq_ldets_tmp
11566 SET GROUP_QUANTITY = l_value_from_num, --2388011_new
11567 SELECTED_VOLUME_ATTR = l_selected_volume_attr -- 2388011_new
11568 WHERE LINE_INDEX = i.line_index
11569 AND LINE_DETAIL_INDEX = i.line_detail_index;
11570 END IF;
11571
11572 -- shu debug msg
11573 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11574 QP_PREQ_GRP.engine_debug('for modifiers...');
11575 QP_PREQ_GRP.engine_debug('check condition...');
11576 QP_PREQ_GRP.engine_debug('i.group_amount: : '||i.group_amount);
11577 QP_PREQ_GRP.engine_debug('l_value_from_num: '||l_value_from_num);
11578 QP_PREQ_GRP.engine_debug('p_line_group_flag: '||p_line_group_flag);
11579
11580 END IF;
11581 IF (I.group_amount IS NOT NULL and l_value_from_num IS NOT NULL
11582 and p_line_group_flag IS NOT NULL) THEN
11583 /*
11584 INDX,QP_PREQ_GRP.evaluate_between.evaluate_between_upd2,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11585 */
11586
11587
11588 -- [julin/5085310]
11589 IF (i.attribute = G_LINE_AMT_ATTRIBUTE) THEN
11590
11591 SELECT UNIT_PRICE INTO l_list_price
11592 FROM qp_npreq_lines_tmp
11593 WHERE LINE_INDEX = i.line_index;
11594
11595 /* Handled l_list_price = 0 bug2385874 */
11596 IF (l_list_price IS NOT NULL and l_list_price <>0) THEN -- avoid division by zero
11597
11598 l_group_amount := I.group_amount /l_list_price;
11599 ELSE
11600 if l_list_price = 0 then
11601 l_group_amount := 0;
11602 else
11603 l_group_amount :=I.group_amount;
11604 end if;
11605 END IF;
11606 ELSE
11607 OPEN l_line_amount_cur(i.line_index, i.line_detail_index, i.context, i.attribute, i.attribute_type);
11608 FETCH l_line_amount_cur into l_line_amount, l_priced_quantity;
11609 CLOSE l_line_amount_cur;
11610
11611 IF (l_line_amount IS NOT NULL and l_line_amount <>0) THEN -- avoid division by zero
11612 l_group_amount := (I.group_amount /l_line_amount) * l_priced_quantity;
11613 ELSE
11614 if l_line_amount = 0 then
11615 l_group_amount := 0;
11616 else
11617 l_group_amount :=I.group_amount;
11618 end if;
11619 END IF;
11620 END IF;
11621
11622 -- shu, for modifiers
11623 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11624 QP_PREQ_GRP.engine_debug('for modifiers...');
11625 QP_PREQ_GRP.engine_debug('line_index: '||i.line_index);
11626 QP_PREQ_GRP.engine_debug('list price: '||l_list_price);
11627 QP_PREQ_GRP.engine_debug('i.group_amount: '||i.group_amount);
11628 QP_PREQ_GRP.engine_debug('group_value: '||l_group_amount);
11629 END IF;
11630
11631 UPDATE qp_npreq_ldets_tmp
11632 SET GROUP_AMOUNT = l_group_amount, -- 2388011_new, fix group of lines lumpsum based on ITEM_AMOUNT
11633 SELECTED_VOLUME_ATTR = l_selected_volume_attr -- 2388011_new
11634 WHERE LINE_INDEX = i.line_index
11635 AND LINE_DETAIL_INDEX = i.line_detail_index;
11636 END IF;
11637
11638 --Need the LINE_QUANTITY column to be updated for regular lines with volume attributes, for Calculation purposes
11639 IF (p_line_group_flag IS NULL and l_is_line_group_flag = 'F'
11640 and i.context = G_PRIC_VOLUME_CONTEXT) -- added for [5005328/4911264]
11641 THEN
11642 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11643 QP_PREQ_GRP.engine_debug('Line Index: ' || i.line_index || ' LD Index : ' || i.line_detail_index ||
11644 ' '||l_value_from_num);
11645 END IF;
11646 /*
11647 INDX,QP_PREQ_GRP.evaluate_between.evaluate_between_upd3,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11648 */
11649 UPDATE qp_npreq_ldets_tmp
11650 SET LINE_QUANTITY = l_value_from_num, --2388011_new
11651 SELECTED_VOLUME_ATTR = l_selected_volume_attr --2388011_new
11652 WHERE LINE_INDEX = i.line_index
11653 AND LINE_DETAIL_INDEX = i.line_detail_index;
11654 END IF;
11655
11656 END IF;
11657
11658 END LOOP;
11659
11660 END IF; -- IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID)
11661
11662 -- If it is a pricing attribute and it fails on between we can delete it right away..Delete all line details where pricing
11663 -- attribute BETWEEN fails
11664 FORALL I IN 1 .. l_line_detail_tbl.COUNT
11665
11666 /*
11667 INDX,QP_PREQ_GRP.evaluate_between.upd4,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11668 */
11669 UPDATE qp_npreq_ldets_tmp --upd4
11670 SET PRICING_STATUS_CODE = G_DELETED_BETWEEN
11671 WHERE LINE_DETAIL_INDEX = l_line_detail_tbl(i);
11672 qp_debug_util.tstop('Evaluate_Between');
11673 EXCEPTION
11674 WHEN OTHERS THEN
11675 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11676 engine_debug(l_routine||' '||SQLERRM);
11677 END IF;
11678 x_status_code := FND_API.G_RET_STS_ERROR;
11679 x_status_text := l_routine||': '||SQLERRM;
11680 qp_debug_util.tstop('Evaluate_Between');
11681 END Evaluate_Between;
11682
11683 /*+---------------------------------------------------------
11684 |PROCEDURE handle_break called by get_eligible_break_lines
11685 +----------------------------------------------------------
11686 */
11687
11688 PROCEDURE Handle_Break(p_list_header_id IN NUMBER,
11689 p_list_line_id IN NUMBER,
11690 p_pricing_phase_id IN PLS_INTEGER,
11691 p_line_detail_index IN PLS_INTEGER,
11692 p_line_index IN PLS_INTEGER,
11693 p_group_quantity IN NUMBER,
11694 p_group_amount IN NUMBER,
11695 p_list_type_code IN VARCHAR2, /* Vivek */
11696 x_is_break_satisfy OUT NOCOPY BOOLEAN,
11697 x_status_code OUT NOCOPY VARCHAR2,
11698 x_status_text OUT NOCOPY VARCHAR2) AS
11699
11700 /*
11701 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,QP_RLTD_MODIFIERS_N1,FROM_RLTD_MODIFIER_ID,1
11702
11703 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
11704 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
11705 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
11706 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
11707 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
11708
11709 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
11710
11711 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,QP_PRICING_ATTRIBUTES_N4,PRICING_ATTRIBUTE_CONTEXT,1
11712 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,QP_PRICING_ATTRIBUTES_N4,PRICING_ATTRIBUTE,2
11713
11714 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
11715 */
11716
11717 cursor l_price_break_detail_multi_cur(p_reduced_pbh_processing VARCHAR2) is
11718 SELECT /*+ ordered use_nl(qplines, qprm, qppa, qpll, qph, qcdt) */
11719 qpll.pricing_group_sequence,
11720 qpll.list_header_id,
11721 qppa.list_line_id,
11722 qppa.product_attribute_context, --setup values
11723 qppa.product_attribute,
11724 qppa.product_attr_value,
11725 qppa.pricing_attribute_context,
11726 qppa.pricing_attribute,
11727 qppa.pricing_attr_value_from,
11728 qppa.pricing_attr_value_to,
11729 qppa.product_uom_code,
11730 qplat_pricing.value_from,
11731 qplat_pricing.attribute,
11732 nvl(qplines.priced_uom_code,qplines.line_uom_code) line_uom_code,
11733 qplines.line_uom_code order_uom_code, -- shulin, for total_item_quantity uom conversion
11734 qplines.line_index,
11735 nvl(qplines.priced_quantity,qplines.line_quantity) line_quantity,
11736 qpll.list_line_type_code,
11737 qpll.modifier_level_code,
11738 qpll.benefit_qty,
11739 qpll.benefit_uom_code,
11740 qpll.service_duration, -- service project
11741 qpll.service_period, -- service project
11742 qpll.list_line_no,
11743 qpll.accrual_flag,
11744 qpll.accrual_conversion_rate,
11745 qpll.estim_accrual_rate,
11746 qpll.recurring_value, -- block pricing
11747 qpll.arithmetic_operator,
11748 qpll.operand,
11749 qpll.list_price,
11750 qpll.pricing_phase_id,
11751 qpll.automatic_flag,
11752 qpll.price_break_type_code,
11753 qpll.incompatibility_GRP_CODE,
11754 qpll.override_flag,
11755 qpll.print_on_invoice_flag,
11756 qpll.price_by_formula_id,
11757 qpll.product_precedence,
11758 nvl(qplines.usage_pricing_type,G_REGULAR_USAGE_TYPE) usage_pricing_type,
11759 QCDT.ROUNDING_FACTOR, /* vivek */
11760 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
11761 QCDT.CURRENCY_HEADER_ID, /* vivek */
11762 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
11763 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
11764 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
11765 QPH.CURRENCY_CODE BASE_CURRENCY_CODE, /* vivek */
11766 qplines.contract_start_date, -- R12 partial period pricing
11767 qplines.contract_end_date -- R12 partial period pricing
11768 FROM
11769 qp_npreq_line_attrs_tmp qplat_pricing,
11770 qp_npreq_lines_tmp qplines,
11771 qp_rltd_modifiers qprm,
11772 qp_pricing_attributes qppa,
11773 qp_list_lines qpll
11774 ,qp_list_headers_b qph /* Vivek */
11775 ,qp_currency_details qcdt /* Vivek */
11776 WHERE qprm.from_rltd_modifier_id = p_list_line_id
11777 AND qprm.to_rltd_modifier_id = qppa.list_line_id
11778 AND qppa.list_line_id = qpll.list_line_id
11779 AND qplat_pricing.context = G_PRIC_VOLUME_CONTEXT
11780 AND qppa.pricing_attribute_context = G_PRIC_VOLUME_CONTEXT
11781 AND qplat_pricing.attribute = qppa.pricing_attribute
11782 AND qplat_pricing.attribute_type = G_PRICING_TYPE
11783 AND qplat_pricing.line_index = qplines.line_index
11784 AND qplat_pricing.pricing_status_code = G_STATUS_UNCHANGED
11785 AND qplat_pricing.line_index = p_line_index
11786 -- and qp_number.canonical_to_number(qplat_pricing.value_from) <> 0 -- 5158413
11787 -- commented above for bug#6896139 as fix for bug#5158413 did not consider for G_LINE_GROUP,lines with line qty as 0
11788 --(i.e qplat_pricing.value_from=0) even when the qualifier group count for G_LINE_GROUP was greater than zero
11789 and qpll.list_header_id = qph.list_header_id /* Vivek */
11790 and QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
11791 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
11792 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
11793 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
11794 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
11795 AND ( /* Vivek */
11796 (qcdt.curr_attribute_context is null /* Vivek */
11797 and not exists /* Vivek */
11798 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
11799 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
11800 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
11801 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
11802 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
11803 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
11804 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
11805 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
11806 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
11807 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
11808 and pa_tmp.line_index = qplines.line_index /* Vivek */
11809 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
11810 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
11811 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
11812 ) /* Vivek */
11813 ) /* Vivek */
11814 OR /* Vivek */
11815 (qcdt.curr_attribute_context is not null /* Vivek */
11816 and qcdt.precedence =
11817 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
11818 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
11819 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
11820 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
11821 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
11822 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
11823 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
11824 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
11825 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
11826 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
11827 and pa_tmp1.line_index = qplines.line_index /* Vivek */
11828 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
11829 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
11830 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
11831 ) /* Vivek */
11832 ) /* Vivek */
11833 ) /* Vivek */
11834 and (( (p_reduced_pbh_processing = G_YES) --[julin/3783009/4712794]
11835 and (nvl(qplines.usage_pricing_type,G_REGULAR_USAGE_TYPE) <> G_AUTHORING_TYPE)
11836 and ( (qpll.price_break_type_code = G_POINT_BREAK and qp_number.canonical_to_number(qplat_pricing.value_from)
11837 between qp_number.canonical_to_number(qppa.pricing_attr_value_from)
11838 and qp_number.canonical_to_number(qppa.pricing_attr_value_to)
11839 ) OR
11840 (qpll.price_break_type_code = G_RANGE_BREAK and qp_number.canonical_to_number(qppa.pricing_attr_value_from)
11841 <= qp_number.canonical_to_number(qplat_pricing.value_from)
11842 )
11843 )
11844 )
11845 or
11846 (p_reduced_pbh_processing = G_NO)
11847 )
11848 ORDER BY qp_number.canonical_to_number(qppa.pricing_attr_value_from); --bug#1819397
11849
11850 cursor l_price_break_detail_cur(p_reduced_pbh_processing VARCHAR2) is
11851 SELECT /*+ ordered use_nl(qplines, qprm, qppa, qpll) */
11852 qpll.pricing_group_sequence,
11853 qpll.list_header_id,
11854 qppa.list_line_id,
11855 qppa.product_attribute_context, --setup values
11856 qppa.product_attribute,
11857 qppa.product_attr_value,
11858 qppa.pricing_attribute_context,
11859 qppa.pricing_attribute,
11860 qppa.pricing_attr_value_from,
11861 qppa.pricing_attr_value_to,
11862 qppa.product_uom_code,
11863 qplat_pricing.value_from,
11864 qplat_pricing.attribute,
11865 nvl(qplines.priced_uom_code,qplines.line_uom_code) line_uom_code,
11866 qplines.line_uom_code order_uom_code, -- shulin, for total_item_quantity uom conversion
11867 qplines.line_index,
11868 nvl(qplines.priced_quantity,qplines.line_quantity) line_quantity,
11869 qpll.list_line_type_code,
11870 qpll.modifier_level_code,
11871 qpll.benefit_qty,
11872 qpll.benefit_uom_code,
11873 qpll.service_duration, -- service project
11874 qpll.service_period, -- service project
11875 qpll.list_line_no,
11876 qpll.accrual_flag,
11877 qpll.accrual_conversion_rate,
11878 qpll.estim_accrual_rate,
11879 qpll.recurring_value, -- block pricing
11880 qpll.arithmetic_operator,
11881 qpll.operand,
11882 qpll.list_price,
11883 qpll.pricing_phase_id,
11884 qpll.automatic_flag,
11885 qpll.price_break_type_code,
11886 qpll.incompatibility_GRP_CODE,
11887 qpll.override_flag,
11888 qpll.print_on_invoice_flag,
11889 qpll.price_by_formula_id,
11890 qpll.product_precedence,
11891 nvl(qplines.usage_pricing_type,G_REGULAR_USAGE_TYPE) usage_pricing_type,
11892 NULL ROUNDING_FACTOR, /* vivek */
11893 NULL CURRENCY_DETAIL_ID, /* sunilpandey */
11894 NULL CURRENCY_HEADER_ID, /* vivek */
11895 NULL SELLING_ROUNDING_FACTOR, /* vivek */
11896 NULL ORDER_CURRENCY, /* vivek */
11897 NULL PRICING_EFFECTIVE_DATE, /* vivek */
11898 NULL BASE_CURRENCY_CODE, /* vivek */
11899 qplines.contract_start_date, -- R12 partial period pricing
11900 qplines.contract_end_date -- R12 partial period pricing
11901 FROM
11902 qp_npreq_line_attrs_tmp qplat_pricing,
11903 qp_npreq_lines_tmp qplines,
11904 qp_rltd_modifiers qprm,
11905 qp_pricing_attributes qppa,
11906 qp_list_lines qpll
11907 WHERE qprm.from_rltd_modifier_id = p_list_line_id
11908 AND qprm.to_rltd_modifier_id = qppa.list_line_id
11909 AND qppa.list_line_id = qpll.list_line_id
11910 AND qplat_pricing.context = G_PRIC_VOLUME_CONTEXT
11911 AND qppa.pricing_attribute_context = G_PRIC_VOLUME_CONTEXT
11912 AND qplat_pricing.attribute = qppa.pricing_attribute
11913 AND qplat_pricing.attribute_type = G_PRICING_TYPE
11914 AND qplat_pricing.line_index = qplines.line_index
11915 AND qplat_pricing.pricing_status_code = G_STATUS_UNCHANGED
11916 AND qplat_pricing.line_index = p_line_index
11917 -- and qp_number.canonical_to_number(qplat_pricing.value_from) <> 0 -- 5158413
11918 -- commented above for bug#6896139 as fix for bug#5158413 did not consider for G_LINE_GROUP,lines with line qty as 0
11919 --(i.e qplat_pricing.value_from=0) even when the qualifier group count for G_LINE_GROUP was greater than zero
11920 and (( (p_reduced_pbh_processing = G_YES) --[julin/3783009/4712794]
11921 and (nvl(qplines.usage_pricing_type,G_REGULAR_USAGE_TYPE) <> G_AUTHORING_TYPE)
11922 and ( (qpll.price_break_type_code = G_POINT_BREAK and qp_number.canonical_to_number(qplat_pricing.value_from)
11923 between qp_number.canonical_to_number(qppa.pricing_attr_value_from)
11924 and qp_number.canonical_to_number(qppa.pricing_attr_value_to)
11925 ) OR
11926 (qpll.price_break_type_code = G_RANGE_BREAK and qp_number.canonical_to_number(qppa.pricing_attr_value_from)
11927 <= qp_number.canonical_to_number(qplat_pricing.value_from)
11928 )
11929 )
11930 )
11931 or
11932 (p_reduced_pbh_processing = G_NO)
11933 )
11934 ORDER BY qp_number.canonical_to_number(qppa.pricing_attr_value_from); --bug#1819397
11935
11936 CURSOR l_pbh_cur IS
11937 SELECT net_amount_flag
11938 FROM qp_list_lines
11939 WHERE list_line_id = p_list_line_id;
11940
11941 J PLS_INTEGER:=1;
11942 N PLS_INTEGER:=1;
11943 --l_line_detail_index PLS_INTEGER;
11944 --l_line_detail_tbl LINE_DETAIL_TBL_TYPE;
11945 --l_line_attrs_tbl LINE_ATTR_TBL_TYPE;
11946 l_VALID_PBH_FLAG VARCHAR2(1):='N';
11947 l_VALUE_TO NUMBER:=0;
11948 l_VALUE_FROM NUMBER;
11949 l_order_uom_code VARCHAR2(3);
11950 l_primary_uom VARCHAR2(3);
11951 l_product_uom VARCHAR2(3);
11952 l_quantity NUMBER;
11953 l_item_id NUMBER;
11954 l_uom_rate NUMBER;
11955 l_status_code VARCHAR2(30);
11956 l_status_text VARCHAR2(240);
11957 E_INVALID_PRICE_BREAK_TYPE EXCEPTION;
11958 E_INVALID_UOM_CONVERSION EXCEPTION;
11959 e_proration_fac_oks_error exception; /* Proration */
11960 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.HANDLE_BREAK';
11961 rowid_tbl ROWID_TYPE;
11962 index_tbl PLS_INTEGER_TYPE;
11963 l_count PLS_INTEGER:=0;
11964 l_grp_quantity NUMBER:=0;
11965 l_selected_volume_attr VARCHAR2(1);
11966 l_setup_value_from NUMBER;
11967 l_continuous_flag BOOLEAN := FALSE; -- 4061138, maintained only if proration involved
11968
11969 -- julin [3805113]: local tables populated via cursor
11970 l_h_pricing_group_sequence_tbl NUMBER_TYPE;
11971 l_h_list_header_id_tbl NUMBER_TYPE;
11972 l_h_list_line_id_tbl NUMBER_TYPE;
11973 l_h_product_attr_context_tbl VARCHAR_TYPE;
11974 l_h_product_attribute_tbl VARCHAR_TYPE;
11975 l_h_product_attr_value_tbl VARCHAR_TYPE;
11976 l_h_pricing_attr_context_tbl VARCHAR_TYPE;
11977 l_h_pricing_attribute_tbl VARCHAR_TYPE;
11978 l_h_pricing_attr_val_from_tbl VARCHAR_TYPE;
11979 l_h_pricing_attr_val_to_tbl VARCHAR_TYPE;
11980 l_h_product_uom_code_tbl VARCHAR_30_TYPE;
11981 l_h_value_from_tbl VARCHAR_TYPE;
11982 l_h_attribute_tbl VARCHAR_TYPE;
11983 l_h_line_uom_code_tbl VARCHAR_30_TYPE;
11984 l_h_order_uom_code_tbl VARCHAR_30_TYPE; -- shu, for total_item_qty
11985 l_h_line_index_tbl NUMBER_TYPE;
11986 l_h_line_quantity_tbl NUMBER_TYPE;
11987 l_h_list_line_type_code_tbl VARCHAR_30_TYPE;
11988 l_h_modifier_level_code_tbl VARCHAR_30_TYPE;
11989 l_h_benefit_qty_tbl NUMBER_TYPE;
11990 l_h_benefit_uom_code_tbl VARCHAR_30_TYPE;
11991 l_h_service_duration_tbl NUMBER_TYPE; -- service project
11992 l_h_service_period_tbl VARCHAR_30_TYPE; -- service project
11993 l_h_list_line_no_tbl VARCHAR_TYPE; -- 9387258 changed from number to varchar
11994 l_h_accrual_flag_tbl VARCHAR_30_TYPE;
11995 l_h_accrual_conv_rate_tbl NUMBER_TYPE;
11996 l_h_estim_accrual_rate_tbl NUMBER_TYPE;
11997 l_h_recurring_value_tbl NUMBER_TYPE; -- block pricing
11998 l_h_arithmetic_operator_tbl VARCHAR_30_TYPE;
11999 l_h_operand_tbl NUMBER_TYPE;
12000 l_h_list_price_tbl NUMBER_TYPE;
12001 l_h_pricing_phase_id_tbl NUMBER_TYPE;
12002 l_h_automatic_flag_tbl VARCHAR_30_TYPE;
12003 l_h_price_break_type_code_tbl VARCHAR_30_TYPE;
12004 l_h_incompat_grp_code_tbl VARCHAR_30_TYPE;
12005 l_h_override_flag_tbl VARCHAR_30_TYPE;
12006 l_h_print_on_invoice_flag_tbl VARCHAR_30_TYPE;
12007 l_h_price_by_formula_id_tbl NUMBER_TYPE;
12008 l_h_product_precedence_tbl NUMBER_TYPE;
12009 l_h_usage_pricing_type_tbl VARCHAR_30_TYPE;
12010 l_h_rounding_factor_tbl NUMBER_TYPE; /* Vivek */
12011 l_h_currency_detail_id_tbl NUMBER_TYPE; /* Vivek */
12012 l_h_currency_header_id_tbl NUMBER_TYPE; /* Vivek */
12013 l_h_selling_round_factor_tbl NUMBER_TYPE; /* Vivek */
12014 l_h_order_currency_tbl VARCHAR_30_TYPE; /* Vivek */
12015 l_h_pricing_effective_date_tbl DATE_TYPE; /* Vivek */
12016 l_h_base_currency_code_tbl VARCHAR_30_TYPE; /* Vivek */
12017 l_h_contract_start_date_tbl DATE_TYPE; -- R12 partial period pricing
12018 l_h_contract_end_date_tbl DATE_TYPE; -- R12 partial period pricing
12019
12020 -- julin [3805113]: local tables not populated via cursor
12021 l_l_line_detail_index_tbl NUMBER_TYPE;
12022 l_l_selected_volume_attr_tbl FLAG_TYPE; -- only need VARCHAR(1)
12023 l_l_G_CHILD_DETAIL_TYPE_tbl VARCHAR_30_TYPE;
12024 l_l_p_line_index_tbl PLS_INTEGER_TYPE;
12025 l_l_G_STATUS_NEW_tbl VARCHAR_30_TYPE;
12026 l_l_G_NOT_PROCESSED_tbl VARCHAR_30_TYPE;
12027 l_l_group_quantity_tbl NUMBER_TYPE;
12028 l_l_group_amount_tbl NUMBER_TYPE;
12029 l_l_list_type_code_tbl VARCHAR_TYPE;
12030 l_l_G_DETAIL_LEVEL_tbl VARCHAR_30_TYPE;
12031 l_l_G_PRICING_TYPE_tbl VARCHAR_30_TYPE;
12032 l_l_G_BY_PBH_tbl VARCHAR_30_TYPE;
12033 l_l_G_OPERATOR_BETWEEN_tbl VARCHAR_30_TYPE;
12034 l_l_p_list_line_id_tbl NUMBER_TYPE;
12035 l_l_G_PBH_LINE_tbl VARCHAR_30_TYPE;
12036 l_l_G_PROCESSED_tbl VARCHAR_30_TYPE;
12037 l_l_quantity_tbl NUMBER_TYPE;
12038 l_l_p_line_detail_index_tbl NUMBER_TYPE;
12039
12040 --type refcur is ref cursor;
12041
12042 --l_price_break_detail_cur refcur;
12043 l_total_item_quantity NUMBER; -- shu
12044 l_max_decimal_digits PLS_INTEGER := nvl(FND_PROFILE.Value ('QP_INV_DECIMAL_PRECISION'),10); --shu
12045
12046 l_break_uom_code VARCHAR2(3); /* Proration */
12047 l_break_uom_context VARCHAR2(30); /* Proration */
12048 l_break_uom_attribute VARCHAR2(30); /* Proration */
12049 l_passed_break_uom VARCHAR2(3); /* Proration */
12050 l_proration_factor NUMBER; /* Proration */
12051 l_contract_start_date date; /* Proration */
12052 l_contract_end_date date; /* Proration */
12053 l_proration_processed VARCHAR2(1) := 'N'; /* Proration */
12054 l_value_temp NUMBER; /* Proration */
12055 l_first_time_flag VARCHAR2(1) := 'Y'; /* Proration */
12056 l_prev_setup_to_value number; /* ER 3637202 */
12057 l_prev_prorated_to_value number; /* ER 3637202 */
12058 l_gap number; /* ER 3637202 */
12059 l_reduced_pbh_processing varchar2(1); --[julin/3783009/4712794]
12060 l_net_amount_flag varchar2(1); --[julin/4671446]
12061
12062 BEGIN
12063
12064 --product uom code is different than order uom code
12065 --and attribute is quantity than we need to do uom conversion
12066 if G_BREAK_UOM_PRORATION is null then
12067 G_BREAK_UOM_PRORATION := nvl(fnd_profile.value('QP_BREAK_UOM_PRORATION'), G_NULL_PROFILE_VALUE);
12068 end if;
12069
12070 N := 1;
12071
12072 --[julin/3783009/4712794] ER - reduced pbh process should be done when following conditions are met
12073 if G_BREAK_UOM_PRORATION <> 'Y' and p_list_type_code = G_PRICE_LIST_HEADER and QP_PARAM_UTIL.GET_PARAMETER_VALUE('REQ', G_REQUEST_TYPE_CODE, 'QP_PL_BRK_RET_SATISFIED_ONLY') = G_YES then
12074 l_reduced_pbh_processing := G_YES;
12075 else
12076 l_reduced_pbh_processing := G_NO;
12077 end if;
12078
12079 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12080 engine_debug('G_BREAK_UOM_PRORATION ' || G_BREAK_UOM_PRORATION);
12081 engine_debug('p_list_type_code ' || p_list_type_code);
12082 engine_debug('G_REQUEST_TYPE_CODE ' || G_REQUEST_TYPE_CODE);
12083 engine_debug('l_reduced_pbh_processing ' || l_reduced_pbh_processing);
12084
12085 END IF;
12086
12087 --[julin/4671446]
12088 OPEN l_pbh_cur;
12089 FETCH l_pbh_cur into l_net_amount_flag;
12090 CLOSE l_pbh_cur;
12091
12092 -- julin [3805113]: bulk fetch
12093 IF (p_pricing_phase_id = 1 and G_MULTI_CURRENCY_PROFILE = G_YES
12094 and G_USE_MULTI_CURRENCY = G_YES) THEN
12095 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12096 engine_debug ('Multi-Currency Pricing Phase Price Break');
12097 END IF;
12098 OPEN l_price_break_detail_multi_cur(l_reduced_pbh_processing);
12099 FETCH l_price_break_detail_multi_cur BULK COLLECT INTO
12100 l_h_pricing_group_sequence_tbl,
12101 l_h_list_header_id_tbl,
12102 l_h_list_line_id_tbl,
12103 l_h_product_attr_context_tbl,
12104 l_h_product_attribute_tbl,
12105 l_h_product_attr_value_tbl,
12106 l_h_pricing_attr_context_tbl,
12107 l_h_pricing_attribute_tbl,
12108 l_h_pricing_attr_val_from_tbl,
12109 l_h_pricing_attr_val_to_tbl,
12110 l_h_product_uom_code_tbl,
12111 l_h_value_from_tbl,
12112 l_h_attribute_tbl,
12113 l_h_line_uom_code_tbl,
12114 l_h_order_uom_code_tbl, -- shulin_tbl, for total_item_quantity uom conversion
12115 l_h_line_index_tbl,
12116 l_h_line_quantity_tbl,
12117 l_h_list_line_type_code_tbl,
12118 l_h_modifier_level_code_tbl,
12119 l_h_benefit_qty_tbl,
12120 l_h_benefit_uom_code_tbl,
12121 l_h_service_duration_tbl, -- service project
12122 l_h_service_period_tbl, -- service project
12123 l_h_list_line_no_tbl,
12124 l_h_accrual_flag_tbl,
12125 l_h_accrual_conv_rate_tbl,
12126 l_h_estim_accrual_rate_tbl,
12127 l_h_recurring_value_tbl, -- block pricing
12128 l_h_arithmetic_operator_tbl,
12129 l_h_operand_tbl,
12130 l_h_list_price_tbl,
12131 l_h_pricing_phase_id_tbl,
12132 l_h_automatic_flag_tbl,
12133 l_h_price_break_type_code_tbl,
12134 l_h_incompat_grp_code_tbl,
12135 l_h_override_flag_tbl,
12136 l_h_print_on_invoice_flag_tbl,
12137 l_h_price_by_formula_id_tbl,
12138 l_h_product_precedence_tbl,
12139 l_h_usage_pricing_type_tbl,
12140 l_h_rounding_factor_tbl, /* Vivek */
12141 l_h_currency_detail_id_tbl, /* Vivek */
12142 l_h_currency_header_id_tbl, /* Vivek */
12143 l_h_selling_round_factor_tbl, /* Vivek */
12144 l_h_order_currency_tbl, /* Vivek */
12145 l_h_pricing_effective_date_tbl, /* Vivek */
12146 l_h_base_currency_code_tbl, /* Vivek */
12147 l_h_contract_start_date_tbl, -- R12 partial period pricing
12148 l_h_contract_end_date_tbl; -- R12 partial period pricing
12149 CLOSE l_price_break_detail_multi_cur;
12150 ELSE
12151 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12152 engine_debug ('Discounts Based Price Break');
12153 END IF;
12154 OPEN l_price_break_detail_cur(l_reduced_pbh_processing);
12155 FETCH l_price_break_detail_cur BULK COLLECT INTO
12156 l_h_pricing_group_sequence_tbl,
12157 l_h_list_header_id_tbl,
12158 l_h_list_line_id_tbl,
12159 l_h_product_attr_context_tbl,
12160 l_h_product_attribute_tbl,
12161 l_h_product_attr_value_tbl,
12162 l_h_pricing_attr_context_tbl,
12163 l_h_pricing_attribute_tbl,
12164 l_h_pricing_attr_val_from_tbl,
12165 l_h_pricing_attr_val_to_tbl,
12166 l_h_product_uom_code_tbl,
12167 l_h_value_from_tbl,
12168 l_h_attribute_tbl,
12169 l_h_line_uom_code_tbl,
12170 l_h_order_uom_code_tbl, -- shulin_tbl, for total_item_quantity uom conversion
12171 l_h_line_index_tbl,
12172 l_h_line_quantity_tbl,
12173 l_h_list_line_type_code_tbl,
12174 l_h_modifier_level_code_tbl,
12175 l_h_benefit_qty_tbl,
12176 l_h_benefit_uom_code_tbl,
12177 l_h_service_duration_tbl, -- service project
12178 l_h_service_period_tbl, -- service project
12179 l_h_list_line_no_tbl,
12180 l_h_accrual_flag_tbl,
12181 l_h_accrual_conv_rate_tbl,
12182 l_h_estim_accrual_rate_tbl,
12183 l_h_recurring_value_tbl, -- block pricing
12184 l_h_arithmetic_operator_tbl,
12185 l_h_operand_tbl,
12186 l_h_list_price_tbl,
12187 l_h_pricing_phase_id_tbl,
12188 l_h_automatic_flag_tbl,
12189 l_h_price_break_type_code_tbl,
12190 l_h_incompat_grp_code_tbl,
12191 l_h_override_flag_tbl,
12192 l_h_print_on_invoice_flag_tbl,
12193 l_h_price_by_formula_id_tbl,
12194 l_h_product_precedence_tbl,
12195 l_h_usage_pricing_type_tbl,
12196 l_h_rounding_factor_tbl, /* Vivek */
12197 l_h_currency_detail_id_tbl, /* Vivek */
12198 l_h_currency_header_id_tbl, /* Vivek */
12199 l_h_selling_round_factor_tbl, /* Vivek */
12200 l_h_order_currency_tbl, /* Vivek */
12201 l_h_pricing_effective_date_tbl, /* Vivek */
12202 l_h_base_currency_code_tbl, /* Vivek */
12203 l_h_contract_start_date_tbl, -- R12 partial period pricing
12204 l_h_contract_end_date_tbl; -- R12 partial period pricing
12205 CLOSE l_price_break_detail_cur;
12206 END IF;
12207
12208 IF (l_h_list_line_id_tbl.COUNT > 0) THEN
12209 FOR I in l_h_list_line_id_tbl.FIRST .. l_h_list_line_id_tbl.LAST
12210 LOOP
12211
12212 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12213 engine_debug('Modifier_level_code: '||l_h_modifier_level_code_tbl(i));
12214 engine_debug('Attribute: '||l_h_ATTRIBUTE_tbl(i));
12215
12216 END IF;
12217 IF qp_number.canonical_to_number(l_h_value_from_tbl(i)) <> 0 OR (qp_number.canonical_to_number(l_h_value_from_tbl(i)) = 0 AND--bug#6896139.If Condition to consider 0 value only for G_LINE_GROUP
12218 l_h_modifier_level_code_tbl(i) = G_LINE_GROUP) THEN --since 0 value is now being considered in the cursor l_price_break_detail_cur --9475080 added
12219 IF l_h_modifier_level_code_tbl(i) = G_LINE_GROUP THEN
12220 IF l_h_attribute_tbl(i) = G_QUANTITY_ATTRIBUTE THEN
12221 l_quantity := p_group_quantity;
12222 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12223 engine_debug('l_quantity :'||l_quantity);
12224 END IF;
12225 l_selected_volume_attr := G_QUANTITY;
12226 ELSE
12227 l_quantity := p_group_amount;
12228 l_selected_volume_attr := G_AMOUNT;
12229 END IF;
12230
12231 IF (p_group_quantity <> l_quantity) THEN
12232
12233 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12234 engine_debug('UOM l_quantity : '||l_quantity);
12235 engine_debug('UOM p_group_quantity :'||p_group_quantity);
12236
12237 END IF;
12238 /*
12239 INDX,QP_PREQ_GRP.handle_break.upd1,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
12240 INDX,QP_PREQ_GRP.handle_break.upd1,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,2
12241 INDX,QP_PREQ_GRP.handle_break.upd1,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,3
12242 INDX,QP_PREQ_GRP.handle_break.upd1,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_HEADER_ID,4
12243 INDX,QP_PREQ_GRP.handle_break.upd1,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_LINE_ID,5
12244 */
12245
12246 UPDATE qp_npreq_ldets_tmp --upd1
12247 SET GROUP_QUANTITY = l_quantity, --2388011_new
12248 SELECTED_VOLUME_ATTR = l_selected_volume_attr -- 2388011_new, ASK RAVI, commented out??
12249 WHERE CREATED_FROM_LIST_HEADER_ID = p_list_header_id
12250 AND PRICING_PHASE_ID = p_pricing_phase_id
12251 AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
12252 AND CREATED_FROM_LIST_LINE_ID = p_list_line_id
12253 AND LINE_INDEX = p_line_index;
12254
12255 END IF;
12256
12257 ELSE --not a line group
12258
12259 IF l_h_ATTRIBUTE_tbl(i) = G_QUANTITY_ATTRIBUTE THEN
12260 IF l_h_product_uom_code_tbl(i) IS NULL THEN
12261 l_product_uom := l_h_line_uom_code_tbl(i);
12262 ELSE
12263 l_product_uom := l_h_product_uom_code_tbl(i);
12264 END IF;
12265 l_quantity := l_h_line_quantity_tbl(i);
12266 l_selected_volume_attr := G_QUANTITY;
12267
12268 -- begin, shu fix
12269 ELSIF l_h_ATTRIBUTE_tbl(i) = 'PRICING_ATTRIBUTE20' THEN -- shulin, for fte total_item_quantity uom conversion
12270 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12271 engine_debug ('TOTAL_ITEM_QUANTITY...');
12272 END IF;
12273 IF (l_h_line_uom_code_tbl(i) = l_h_order_uom_code_tbl(i) ) THEN -- no uom conversion if pricing_uom_code is same as order_uom_code
12274 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12275 engine_debug ('no uom conversion, pricing_uom_code is same as order_uom_code: '||l_h_line_uom_code_tbl(i));
12276 END IF;
12277 l_quantity := qp_number.canonical_to_number(l_h_value_from_tbl(i));
12278 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12279 engine_debug ('l_quantity: '||l_quantity);
12280 END IF;
12281 ELSE -- uom conversion
12282 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12283 engine_debug ('uom conversion...');
12284 engine_debug ('order_uom_code: '||l_h_order_uom_code_tbl(i));
12285 engine_debug ('primary_uom_code: '||l_h_product_uom_code_tbl(i));
12286 END IF;
12287 l_total_item_quantity := qp_number.canonical_to_number(l_h_value_from_tbl(i));
12288 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12289 engine_debug ('l_quantity before uom convertion: '||l_total_item_quantity );
12290 END IF;
12291
12292 convert_uom ( l_h_order_uom_code_tbl(i),
12293 l_h_product_uom_code_tbl(i),
12294 l_total_item_quantity, --total_item_qty
12295 l_quantity, -- qty_after_uom_conversion
12296 l_status_code,
12297 l_status_text);
12298 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
12299 raise E_INVALID_UOM_CONVERSION;
12300 END IF;
12301
12302 -- shu, fix bug2368445
12303 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12304 engine_debug ('l_quantity before rounded by inv_decimal_precision: '||l_quantity);
12305 engine_debug ('inv_decimal_precision: '||l_max_decimal_digits);
12306 END IF;
12307 IF (l_quantity IS NOT NULL AND l_max_decimal_digits IS NOT NULL) THEN -- it will have sql err if null
12308 l_quantity := round (l_quantity, l_max_decimal_digits);
12309 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12310 engine_debug ('l_quantity after rounded by inv_decimal_precision: '||l_quantity);
12311 END IF;
12312 END IF;
12313 END IF;
12314 l_selected_volume_attr := 'O'; --2388011_latest
12315 -- end, shu fix
12316 ELSE
12317 l_quantity := qp_number.canonical_to_number(l_h_value_from_tbl(i));
12318 l_selected_volume_attr := G_AMOUNT;
12319 END IF;
12320
12321 -- This LINE_QUANTITY is column is needed for knowing the right value for
12322 -- PBH based on modifier level code 'LINE' for calculation purposes
12323
12324 /*
12325 INDX,QP_PREQ_GRP.handle_break.upd2,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
12326 INDX,QP_PREQ_GRP.handle_break.upd2,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,2
12327 INDX,QP_PREQ_GRP.handle_break.upd2,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,3
12328 INDX,QP_PREQ_GRP.handle_break.upd2,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_HEADER_ID,4
12329 INDX,QP_PREQ_GRP.handle_break.upd2,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_LINE_ID,5
12330 */
12331
12332 UPDATE qp_npreq_ldets_tmp --upd2
12333 SET LINE_QUANTITY = l_quantity, --2388011_new
12334 SELECTED_VOLUME_ATTR = l_selected_volume_attr -- 2388011_new
12335 WHERE CREATED_FROM_LIST_HEADER_ID = p_list_header_id
12336 AND PRICING_PHASE_ID = p_pricing_phase_id
12337 AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
12338 AND CREATED_FROM_LIST_LINE_ID = p_list_line_id
12339 AND LINE_INDEX = p_line_index;
12340
12341 END IF;
12342
12343
12344 l_setup_value_from := qp_number.canonical_to_number(l_h_pricing_attr_val_from_tbl(i));
12345
12346 --handle the case when value_to is null
12347 IF (l_h_pricing_attr_val_to_tbl(i) IS NULL) THEN
12348 IF l_quantity >= l_setup_value_from THEN
12349 l_value_to := l_quantity;
12350 ELSIF l_quantity < l_setup_value_from THEN
12351 l_value_to := l_setup_value_from;
12352 END IF;
12353 ELSE
12354 l_value_to := qp_number.canonical_to_number(l_h_pricing_attr_val_to_tbl(i));
12355 END IF;
12356
12357 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12358 engine_debug(l_routine||' Line quantity: '||l_quantity);
12359 engine_debug(l_routine||' value from: '||l_setup_value_from);
12360 engine_debug(l_routine||' value to : '||l_value_to);
12361 engine_debug(l_routine||' usage pricing type: '||l_h_usage_pricing_type_tbl(i));
12362
12363 END IF;
12364
12365 /* Proration Changes START */
12366 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12367 engine_debug(l_routine||' QP_CODE_CONTROL.CODE_RELEASE_LEVEL : '|| QP_CODE_CONTROL.CODE_RELEASE_LEVEL);
12368 engine_debug(l_routine||' profile QP_BREAK_UOM_PRORATION : '|| G_BREAK_UOM_PRORATION);
12369 engine_debug(l_routine||' G_REGULAR_USAGE_TYPE : '|| G_REGULAR_USAGE_TYPE);
12370 END IF;
12371
12372 -- feb 22 toi comment start
12373 -- proration makes sense for regular usage call and not for authoring call
12374 -- proration is not supported for the authoring call from Calling application
12375 -- feb 22 toi comment end
12376
12377 if QP_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510'
12378 and G_BREAK_UOM_PRORATION = 'Y'
12379 and l_h_usage_pricing_type_tbl(i) = G_REGULAR_USAGE_TYPE
12380 then
12381
12382 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12383 engine_debug(l_routine||' Proration allowed profile is set ');
12384 END IF;
12385
12386 -- feb 22 toi comment start
12387 -- Using l_first_time_flag ensures that the follwoing logic is executed once
12388 -- only since break related information is same across all the break lines
12389 -- feb 22 toi comment end
12390 -- get the proration set up data only once
12391
12392 if l_first_time_flag = 'Y' then
12393 select break_uom_code, break_uom_context, break_uom_attribute
12394 into l_break_uom_code, l_break_uom_context, l_break_uom_attribute
12395 from qp_npreq_ldets_tmp
12396 where line_detail_index = p_line_detail_index;
12397
12398 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12399 engine_debug(l_routine||' l_break_uom_code = ' || l_break_uom_code);
12400 engine_debug(l_routine||' l_break_uom_context = ' || l_break_uom_context);
12401 engine_debug(l_routine||' l_break_uom_attribute = ' || l_break_uom_attribute);
12402 END IF;
12403 end if; --l_first_time_flag = 'Y'
12404
12405 IF l_break_uom_code IS NOT null THEN
12406 -- feb 22 toi comment start
12407 -- if break uom was set up, then get the passed break uom
12408 -- if break_uom is not set up, then no proration and proceed with normal price break evaluation
12409 -- feb 22 toi comment end
12410 -- price book
12411 IF nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES THEN
12412 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12413 engine_debug('call from price book with proration ==> skip this break entirely');
12414 END IF;
12415 EXIT; -- exit big loop to stop processing remaining child lines
12416 END IF;
12417 begin
12418 if l_first_time_flag = 'Y' then
12419 -- get the passed break uom only once
12420 select value_from
12421 into l_passed_break_uom
12422 from qp_npreq_line_attrs_tmp
12423 where line_index = p_line_index
12424 and context = l_break_uom_context
12425 and attribute = l_break_uom_attribute
12426 and pricing_status_code = G_STATUS_UNCHANGED
12427 and attribute_type = G_PRICING_TYPE;
12428 end if; --l_first_time_flag = 'Y'
12429
12430 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12431 engine_debug(l_routine||' l_passed_break_uom = '|| l_passed_break_uom);
12432 END IF;
12433
12434 -- break uom has been passed, do the proration
12435 l_proration_processed := 'Y';
12436
12437 --if G_TIME_UOM_CONVERSION = 'ORACLE_CONTRACTS' then
12438 -- changed for R12 partial period pricing
12439 if (l_h_contract_start_date_tbl(i) is not null and
12440 l_h_contract_end_date_tbl(i) is not null)
12441 then
12442 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12443 engine_debug(l_routine||' OKS UOM conversion ');
12444 END IF;
12445
12446 -- get the conversion factor by calling oks api
12447 -- call the oks api only once
12448 if l_first_time_flag = 'Y' then
12449 select contract_start_date, contract_end_date
12450 into l_contract_start_date, l_contract_end_date
12451 from qp_npreq_lines_tmp
12452 where line_index = p_line_index;
12453
12454 -- OKS_QP_INT.get_conversion_factor was replaced by
12455 -- OKS_OMINT_PUB.get_quantity in R12 for partial period pricing
12456 l_proration_factor := OKS_OMINT_PUB.get_quantity(
12457 p_start_date => l_contract_start_date,
12458 p_end_date => l_contract_end_date,
12459 p_source_uom => l_break_uom_code,
12460 p_org_id => QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT);
12461
12462 IF l_proration_factor = 0 THEN
12463 raise e_proration_fac_oks_error;
12464 END IF;
12465 end if;
12466
12467 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12468 engine_debug(l_routine||' l_proration_factor = '|| l_proration_factor);
12469 END IF;
12470
12471 if l_proration_factor is not null then
12472 /* ER 3637202
12473 bug fix 3715261 - after multiplying with proration factor, truncate the values
12474 For 1st break line prorate as below
12475 -----------------------------------
12476 trunc(From * Proration Factor) trunc(To * Proration Factor) ** changed behavior
12477
12478 For remaining break lines follow the below steps -
12479 --------------------------------------------------
12480 Gap = BreakLine (n) "From" - BreakLine (n-1) "To"
12481
12482 If Gap = 1
12483 Prorated BreakLine (n-1) To + 1 trunc(To * Proration Factor) ** changed behaviour
12484 Else
12485 trunc(BreakLine (n) From * Proration Factor) trunc(To * Proration Factor) ** changed behavior
12486 End If
12487
12488 -- feb 22 toi comment start
12489 Setup with fraction may cause issue as previous to value and current from value may become same and
12490 currently pricing engine does not support overlapping price break ranges.
12491 e.g Value from Value to
12492 2 5
12493 5.1 10
12494
12495 If this needs to be prorated by proration factor 2 the new price_break ranges will be
12496 Value from Value to
12497 1 2
12498 2 5
12499 Thus, first break's value_to becomes equal to the second break's value_from.
12500 This needs to be added to the Implementation Manual.
12501 -- feb 22 toi comment end
12502
12503 ER 4061138 (Continuous Price Breaks)
12504 For prorated break lines that are CONTINUOUS, the unrounded Value From is copied into
12505 the previous break's Value To. This deals with the problem inherent to mixed price
12506 breaks with proration.
12507 e.g. Value From Value To
12508 1 100 <-- non-continuous break
12509 100 200 <-- continuous
12510
12511 Apply a proration factor of 1/3
12512 New From New To
12513 0 33 <-- 33 is trunc(33 1/3), old proration rule
12514 33 1/3 66 2/3 <-- continuous = no trunc
12515
12516 Problem here is that the proration has introduced a gap between the first and
12517 second break lines, and result can be that total satisfied qty <> ordered qty.
12518 To fix this, we "borrow" the Value From to eliminate the unwanted gap.
12519 New From Newer To
12520 0 33 1/3 <-- magic!
12521 33 1/3 66 2/3
12522
12523 Refer to the enhancement document on Continuous Price Breaks for more details.
12524 */
12525 if l_first_time_flag = 'Y' then --means first price break
12526 l_setup_value_from := trunc(l_setup_value_from * l_proration_factor);
12527 l_prev_setup_to_value := l_value_to; -- store the un-prorated to value to determine setup gap
12528 l_value_to := trunc(l_value_to * l_proration_factor);
12529 l_prev_prorated_to_value := l_value_to; -- store the prorated to value to determine prorated value from for next break if setup gap is 1
12530 else -- second break onwards
12531 l_gap := l_setup_value_from - l_prev_setup_to_value;
12532 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12533 engine_debug(l_routine||' l_gap = '|| l_gap);
12534 END IF;
12535 if l_gap = 0 then
12536 -- 4061138, only for continuous breaks
12537 l_continuous_flag := TRUE;
12538 l_setup_value_from := l_setup_value_from * l_proration_factor;
12539 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12540 engine_debug(l_routine||' * continuous price break');
12541 END IF;
12542 elsif l_gap = 1 then
12543 -- non-continuous breaks with gap 1
12544 -- 4687551, gap becomes precision of previous prorated to value
12545 l_gap := abs(l_prev_prorated_to_value);
12546 l_gap := power(10, -(length(to_char(l_gap-trunc(l_gap))) - 1));
12547 l_setup_value_from := l_prev_prorated_to_value + l_gap;
12548 else
12549 l_setup_value_from := trunc(l_setup_value_from * l_proration_factor);
12550 end if; -- if l_gap = 0
12551 l_prev_setup_to_value := l_value_to;
12552 l_value_to := l_value_to * l_proration_factor;
12553 IF l_continuous_flag <> TRUE THEN
12554 l_value_to := trunc(l_value_to);
12555 END IF;
12556 l_prev_prorated_to_value := l_value_to;
12557 end if; -- if l_first_time_flag
12558 end if; -- if l_proration_factor is not null
12559 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12560 engine_debug(l_routine||' l_setup_value_from = '|| l_setup_value_from);
12561 engine_debug(l_routine||' l_value_to = '|| l_value_to);
12562 END IF;
12563
12564 else
12565 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12566 engine_debug(l_routine||' Standard UOM conversion ');
12567 END IF;
12568
12569 -- OKS profile is not set, do standard uom conversion
12570 if l_first_time_flag = 'Y' then --means first price break
12571 convert_uom(l_passed_break_uom,
12572 l_break_uom_code,
12573 l_setup_value_from, -- before conversion
12574 l_value_temp, -- after conversion
12575 l_status_code,
12576 l_status_text);
12577 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
12578 raise E_INVALID_UOM_CONVERSION;
12579 END IF;
12580
12581 -- 4061138 continuous break
12582 -- remain non-continuous when value_from = 0, for OKS proration requirement
12583 IF l_setup_value_from = 0 THEN
12584 l_continuous_flag := FALSE;
12585 END IF;
12586
12587 l_setup_value_from := trunc(l_value_temp);
12588
12589 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12590 engine_debug(l_routine||' l_setup_value_from = '|| l_setup_value_from);
12591 END IF;
12592
12593 l_prev_setup_to_value := l_value_to; -- store the un-prorated to value to determine setup gap
12594
12595 convert_uom(l_passed_break_uom,
12596 l_break_uom_code,
12597 l_value_to, -- before conversion
12598 l_value_temp, -- after conversion
12599 l_status_code,
12600 l_status_text);
12601 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
12602 raise E_INVALID_UOM_CONVERSION;
12603 END IF;
12604
12605 -- 4061138, rewritten for continuous break logic
12606 IF l_continuous_flag = TRUE THEN
12607 -- first continuous break: do not trunc Value To
12608 -- also, unset l_continuous flag even though this is continuous, because
12609 -- later on when updating ldets, we don't want the flag to trigger an update
12610 -- of the non-existent previous break's Value To
12611 l_value_to := l_value_temp;
12612 l_continuous_flag := FALSE;
12613 ELSE
12614 l_value_to := trunc(l_value_temp);
12615 END IF;
12616
12617 l_prev_prorated_to_value := l_value_to; -- store the prorated to value to determine prorated value from for next break if setup gap is 1
12618 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12619 engine_debug(l_routine||' l_value_to = '|| l_value_to);
12620 END IF;
12621 else -- second breaks onwards
12622 l_gap := l_setup_value_from - l_prev_setup_to_value;
12623 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12624 engine_debug(l_routine||' l_gap = '|| l_gap);
12625 END IF;
12626
12627 if l_gap = 1 then
12628 -- 4687551, gap becomes precision of previous prorated to value
12629 l_gap := abs(l_prev_prorated_to_value);
12630 l_gap := power(10, -(length(to_char(l_gap-trunc(l_gap))) - 1));
12631 l_setup_value_from := l_prev_prorated_to_value + l_gap;
12632 else
12633 convert_uom(l_passed_break_uom,
12634 l_break_uom_code,
12635 l_setup_value_from, -- before conversion
12636 l_value_temp, -- after conversion
12637 l_status_code,
12638 l_status_text);
12639 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
12640 raise E_INVALID_UOM_CONVERSION;
12641 END IF;
12642
12643 -- 4061138 continuous breaks
12644 IF l_gap = 0 THEN
12645 l_continuous_flag := TRUE;
12646 l_setup_value_from := l_value_temp;
12647 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12648 engine_debug(l_routine||' * continuous price break');
12649 END IF;
12650 ELSE
12651 l_setup_value_from := trunc(l_value_temp);
12652 END IF;
12653
12654 end if; -- if l_gap = 1
12655
12656 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12657 engine_debug(l_routine||' l_setup_value_from = '|| l_setup_value_from);
12658 END IF;
12659
12660 l_prev_setup_to_value := l_value_to;
12661
12662 convert_uom(l_passed_break_uom,
12663 l_break_uom_code,
12664 l_value_to, -- before conversion
12665 l_value_temp, -- after conversion
12666 l_status_code,
12667 l_status_text);
12668 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
12669 raise E_INVALID_UOM_CONVERSION;
12670 END IF;
12671
12672 l_value_to := l_value_temp;
12673 IF l_continuous_flag <> TRUE THEN -- 4061138
12674 l_value_to := trunc(l_value_to);
12675 END IF;
12676
12677 l_prev_prorated_to_value := l_value_to; -- store the prorated to value to determine prorated value from for next break if setup gap is 1
12678 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12679 engine_debug(l_routine||' l_value_to = '|| l_value_to);
12680 END IF;
12681 end if; -- if l_first_time_flag
12682
12683 end if; -- OKS profile
12684
12685 exception
12686 when no_data_found then
12687 -- if proration attribute is not passed, then no proration
12688 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12689 engine_debug(l_routine||' no proration attribute passed ');
12690 END IF;
12691 null;
12692
12693 when others then
12694 -- if proration attribute is not passed, then no proration
12695 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12696 engine_debug(l_routine||' others exception, trying to find whether proration attr passed');
12697 END IF;
12698 null;
12699 end;
12700
12701 end if; --l_break_uom_code is not null
12702 end if;
12703 /* Proration Changes END */
12704
12705 --pricing engine shd insert child lines for auth call even if no qty passed
12706 --if atleast one range is satisfied for RANGE break then only insert the chld lines
12707 -- for RANGE break bug# 2723612
12708 -- note for 4061138 continuous breaks: at this point, l_value_to has not
12709 -- been remapped with the next break's l_setup_value_from, so the between
12710 -- check may erroneously fail. Further down the code during remapping
12711 -- the check if performed again.
12712 IF ((ABS(l_quantity) BETWEEN l_setup_value_from AND l_value_to) OR -- for POINT--bug#15895472
12713 (l_h_price_break_type_code_tbl(i) = G_RANGE_BREAK AND ABS(l_quantity) >= l_setup_value_from) OR -- for RANGE --bug#15895472
12714 (l_h_usage_pricing_type_tbl(i) = G_AUTHORING_TYPE) OR -- for AUTHORING call
12715 (nvl(l_net_amount_flag, 'N') <> 'N')) --[julin/4671446] all net amount breaks pass here, to be qualified during calculation
12716 THEN
12717 l_VALID_PBH_FLAG := G_YES;
12718 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12719 engine_debug('In price break detail');
12720 END IF;
12721 END IF;
12722
12723 -- Invariably insert the line details as we need all the line details even for POINT BREAK
12724 --IF (l_VALID_PBH_FLAG = G_YES) THEN
12725 -- julin [3805113]: table of records replaced by record of tables for bulk operations
12726 /*
12727 l_line_detail_tbl(N).list_header_id := l_h_list_header_id_tbl(i);
12728 l_line_detail_tbl(N).list_line_id := l_h_list_line_id_tbl(i);
12729 l_line_detail_tbl(N).list_line_type_code := l_h_list_line_type_code_tbl(i);
12730 l_line_detail_tbl(N).operand_calculation_code := l_h_arithmetic_operator_tbl(i);
12731 l_line_detail_tbl(N).operand_value := l_h_operand_tbl(i);
12732 l_line_detail_tbl(N).list_price := l_h_list_price_tbl(i);
12733 l_line_detail_tbl(N).pricing_group_sequence := l_h_pricing_group_sequence_tbl(i);
12734 l_line_detail_tbl(N).price_break_type_code := l_h_price_break_type_code_tbl(i);
12735 l_line_detail_tbl(N).pricing_phase_id := l_h_pricing_phase_id_tbl(i);
12736 l_line_detail_tbl(N).modifier_level_code := l_h_modifier_level_code_tbl(i);
12737 l_line_detail_tbl(N).benefit_qty := l_h_benefit_qty_tbl(i);
12738 l_line_detail_tbl(N).benefit_uom_code := l_h_benefit_uom_code_tbl(i);
12739 l_line_detail_tbl(N).list_line_no := l_h_list_line_no_tbl(i);
12740 l_line_detail_tbl(N).accrual_flag := l_h_accrual_flag_tbl(i);
12741 l_line_detail_tbl(N).accrual_conversion_rate:= l_h_accrual_conv_rate_tbl(i);
12742 l_line_detail_tbl(N).estim_accrual_rate := l_h_estim_accrual_rate_tbl(i);
12743 l_line_detail_tbl(N).recurring_value := l_h_recurring_value_tbl(i); -- block pricing
12744 l_line_attrs_tbl(N).pricing_context := l_h_pricing_attr_context_tbl(i);
12745 l_line_attrs_tbl(N).pricing_attribute := l_h_pricing_attribute_tbl(i);
12746
12747 l_line_detail_tbl(N).automatic_flag := l_h_automatic_flag_tbl(i);
12748 l_line_detail_tbl(N).override_flag := l_h_override_flag_tbl(i);
12749 l_line_detail_tbl(N).print_on_invoice_flag := l_h_print_on_invoice_flag_tbl(i);
12750 l_line_detail_tbl(N).formula_id := l_h_price_by_formula_id_tbl(i);
12751 l_line_detail_tbl(N).rounding_factor := l_h_rounding_factor_tbl(i); /* Vivek /
12752 l_line_detail_tbl(N).currency_detail_id := l_h_currency_detail_id_tbl(i); /* Vivek /
12753 l_line_detail_tbl(N).currency_header_id := l_h_currency_header_id_tbl(i); /* Vivek /
12754 l_line_detail_tbl(N).selling_rounding_factor := l_h_selling_round_factor_tbl(i); /* Vivek /
12755 l_line_detail_tbl(N).order_currency := l_h_order_currency_tbl(i); /* Vivek /
12756 l_line_detail_tbl(N).pricing_effective_date := l_h_pricing_effective_date_tbl(i); /* Vivek /
12757 l_line_detail_tbl(N).base_currency_code := l_h_base_currency_code_tbl(i); /* Vivek /
12758 */
12759 /* Proration START */
12760 if l_proration_processed = 'Y' then
12761 l_h_pricing_attr_val_from_tbl(i) := qp_number.number_to_canonical(l_setup_value_from);
12762 l_h_pricing_attr_val_to_tbl(i) := qp_number.number_to_canonical(l_value_to);
12763 if l_continuous_flag = TRUE then
12764 -- 4061138
12765 l_h_pricing_attr_val_to_tbl(i-1) := l_h_pricing_attr_val_from_tbl(i);
12766 -- here, we do the aforementioned BETWEEN check again to catch the
12767 -- corner case where it failed because l_value_to was not remapped
12768 IF l_VALID_PBH_FLAG = G_NO and i>1 THEN
12769 -- only need to recheck the POINT break condition
12770 IF (l_quantity BETWEEN l_h_pricing_attr_val_from_tbl(i-1)
12771 AND l_h_pricing_attr_val_to_tbl(i-1))
12772 THEN
12773 l_VALID_PBH_FLAG := G_YES;
12774 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12775 engine_debug(l_routine||' * passed between check after continuous break remapping');
12776 END IF;
12777 END IF;
12778 END IF;
12779 end if;
12780 else
12781 l_h_pricing_attr_val_to_tbl(i) := nvl(l_h_pricing_attr_val_to_tbl(i),l_value_to);
12782 end if;
12783 --l_line_attrs_tbl(N).pricing_attr_value_from := l_h_pricing_attr_val_from_tbl(i);
12784 --l_line_attrs_tbl(N).pricing_attr_value_to := nvl(l_h_pricing_attr_val_to_tbl(i),l_value_to);
12785 /* Proration END */
12786
12787 N:=N+1;
12788 --END IF;
12789 l_first_time_flag := 'N';
12790
12791 l_l_line_detail_index_tbl(i) := GET_LINE_DETAIL_INDEX;
12792
12793 --VALIDATE price_break_type_code
12794 IF (l_h_price_break_type_code_tbl(i) IS NULL) OR
12795 (l_h_price_break_type_code_tbl(i) NOT IN(G_RANGE_BREAK,G_POINT_BREAK))
12796 THEN
12797 --Data error, ignore this goto the end of loop
12798 RAISE E_INVALID_PRICE_BREAK_TYPE;
12799 END IF;
12800
12801 l_l_selected_volume_attr_tbl(i) := l_selected_volume_attr;
12802 l_l_G_CHILD_DETAIL_TYPE_tbl(i) := G_CHILD_DETAIL_TYPE;
12803 l_l_p_line_index_tbl(i) := p_line_index;
12804 l_l_G_STATUS_NEW_tbl(i) := G_STATUS_NEW;
12805 l_l_G_NOT_PROCESSED_tbl(i) := G_NOT_PROCESSED;
12806 l_l_group_quantity_tbl(i) := p_group_quantity;
12807 l_l_group_amount_tbl(i) := p_group_amount;
12808 l_l_list_type_code_tbl(i) := p_list_type_code;
12809 l_l_G_DETAIL_LEVEL_tbl(i) := G_DETAIL_LEVEL;
12810 l_l_G_PRICING_TYPE_tbl(i) := G_PRICING_TYPE;
12811 l_l_G_BY_PBH_tbl(i) := G_BY_PBH;
12812 l_l_G_OPERATOR_BETWEEN_tbl(i) := G_OPERATOR_BETWEEN;
12813 l_l_p_list_line_id_tbl(i) := p_list_line_id;
12814 l_l_G_PBH_LINE_tbl(i) := G_PBH_LINE;
12815 l_l_G_PROCESSED_tbl(i) := G_PROCESSED;
12816 l_l_quantity_tbl(i) := l_quantity;
12817 l_l_p_line_detail_index_tbl(i) := p_line_detail_index;
12818
12819 -- julin [3805113]: storing to be used in call_calculation_engine()
12820 G_CHILD_VALUE_FROM_TBL(l_l_line_detail_index_tbl(i)) := l_h_pricing_attr_val_from_tbl(i);
12821 G_CHILD_VALUE_TO_TBL(l_l_line_detail_index_tbl(i)) := l_h_pricing_attr_val_to_tbl(i);
12822 G_PARENT_LINE_DETAIL_INDEX_TBL(l_l_line_detail_index_tbl(i)) := l_l_p_line_detail_index_tbl(i);
12823 -- 4061138
12824 if l_continuous_flag = TRUE then
12825 G_CHILD_VALUE_TO_TBL(l_l_line_detail_index_tbl(i-1)) := l_h_pricing_attr_val_from_tbl(i);
12826 end if;
12827
12828 l_continuous_flag := FALSE; -- reset every break
12829 END IF;--bug#6896139
12830 END LOOP;
12831 END IF; -- l_h_list_line_id_tbl.COUNT > 0
12832
12833 --after checking each break line, if any one of the break lines satified, insert all
12834 --the break lines to qp_npreq_ldets_tmp table and qp_npreq_rltd_lines_tmp table
12835 --and do not delete the parent line
12836 -- This flag tells that either it was a range break or atleast one of the break lines was satisfied in case of point break
12837 IF (l_VALID_PBH_FLAG = G_YES) THEN
12838 --FOR J IN 1..N-1 LOOP
12839
12840
12841 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12842 engine_debug('Inserting line_detail');
12843 END IF;
12844
12845 -- julin [3805113]: bulk insert into qp_npreq_ldets_tmp
12846 IF (l_l_p_line_index_tbl.COUNT > 0) THEN
12847 FORALL i in l_l_p_line_index_tbl.FIRST..l_l_p_line_index_tbl.LAST
12848 INSERT INTO qp_npreq_ldets_tmp
12849 (LINE_DETAIL_INDEX,
12850 LINE_DETAIL_TYPE_CODE,
12851 PRICE_BREAK_TYPE_CODE,
12852 LINE_INDEX,
12853 CREATED_FROM_LIST_HEADER_ID,
12854 CREATED_FROM_LIST_LINE_ID,
12855 CREATED_FROM_LIST_LINE_TYPE,
12856 CREATED_FROM_LIST_TYPE_CODE,
12857 PRICING_GROUP_SEQUENCE,
12858 PRICING_PHASE_ID,
12859 OPERAND_CALCULATION_CODE,
12860 OPERAND_VALUE,
12861 PRICE_FORMULA_ID,
12862 PRICING_STATUS_CODE,
12863 PROCESSED_FLAG,
12864 AUTOMATIC_FLAG,
12865 OVERRIDE_FLAG,
12866 PRINT_ON_INVOICE_FLAG,
12867 MODIFIER_LEVEL_CODE,
12868 BENEFIT_QTY,
12869 BENEFIT_UOM_CODE,
12870 SERVICE_DURATION, -- service project
12871 SERVICE_PERIOD, -- service project
12872 LIST_LINE_NO,
12873 ACCRUAL_FLAG,
12874 ACCRUAL_CONVERSION_RATE,
12875 ESTIM_ACCRUAL_RATE,
12876 RECURRING_VALUE,
12877 SELECTED_VOLUME_ATTR,
12878 GROUP_QUANTITY,
12879 GROUP_AMOUNT,
12880 ROUNDING_FACTOR,
12881 CURRENCY_DETAIL_ID,
12882 CURRENCY_HEADER_ID,
12883 SELLING_ROUNDING_FACTOR,
12884 ORDER_CURRENCY,
12885 PRICING_EFFECTIVE_DATE,
12886 BASE_CURRENCY_CODE
12887 )
12888 VALUES (l_l_line_detail_index_tbl(i),
12889 l_l_G_CHILD_DETAIL_TYPE_tbl(i),
12890 l_h_price_break_type_code_tbl(i),
12891 l_l_p_line_index_tbl(i),
12892 l_h_list_header_id_tbl(i),
12893 l_h_list_line_id_tbl(i),
12894 l_h_list_line_type_code_tbl(i),
12895 l_l_list_type_code_tbl(i),
12896 l_h_pricing_group_sequence_tbl(i),
12897 l_h_pricing_phase_id_tbl(i),
12898 l_h_arithmetic_operator_tbl(i),
12899 l_h_operand_tbl(i),
12900 l_h_price_by_formula_id_tbl(i),
12901 l_l_G_STATUS_NEW_tbl(i),
12902 l_l_G_NOT_PROCESSED_tbl(i),
12903 l_h_automatic_flag_tbl(i),
12904 l_h_override_flag_tbl(i),
12905 l_h_print_on_invoice_flag_tbl(i),
12906 l_h_modifier_level_code_tbl(i),
12907 l_h_BENEFIT_QTY_tbl(i),
12908 l_h_BENEFIT_UOM_CODE_tbl(i),
12909 l_h_service_duration_tbl(i), -- service project
12910 l_h_service_period_tbl(i), -- service project
12911 l_h_LIST_LINE_NO_tbl(i),
12912 l_h_ACCRUAL_FLAG_tbl(i),
12913 l_h_accrual_conv_rate_tbl(i),
12914 l_h_ESTIM_ACCRUAL_RATE_tbl(i),
12915 l_h_RECURRING_VALUE_tbl(i), -- block pricing
12916 l_l_selected_volume_attr_tbl(i),
12917 l_l_group_quantity_tbl(i),
12918 l_l_group_amount_tbl(i),
12919 l_h_ROUNDING_FACTOR_tbl(i),
12920 l_h_CURRENCY_DETAIL_ID_tbl(i),
12921 l_h_CURRENCY_HEADER_ID_tbl(i),
12922 l_h_selling_round_factor_tbl(i),
12923 l_h_ORDER_CURRENCY_tbl(i),
12924 l_h_PRICING_EFFECTIVE_DATE_tbl(i),
12925 l_h_BASE_CURRENCY_CODE_tbl(i)
12926 );
12927 END IF;
12928
12929 --set the parents PBH type. PBH can be either discount break or price list break
12930 --also set the processed_flag to indicate that this parent have been processed.
12931
12932 /*
12933 INDX,QP_PREQ_GRP.handle_break.upd3,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
12934 */
12935 UPDATE qp_npreq_ldets_tmp --upd3
12936 SET processed_flag = G_PROCESSED -- indicates that this PBH is processed
12937 WHERE line_detail_index = p_line_detail_index;
12938
12939 IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
12940 engine_debug('#L1');
12941 END IF;
12942
12943 -- julin [3805113]: bulk insert into qp_npreq_line_attrs_tmp
12944 IF (l_l_p_line_index_tbl.COUNT > 0) THEN
12945 FORALL J IN l_l_p_line_index_tbl.first..l_l_p_line_index_tbl.last
12946 INSERT INTO qp_npreq_line_attrs_tmp
12947 (LINE_INDEX,
12948 LINE_DETAIL_INDEX,
12949 ATTRIBUTE_LEVEL,
12950 ATTRIBUTE_TYPE,
12951 CONTEXT,
12952 ATTRIBUTE,
12953 VALUE_FROM,
12954 VALUE_TO,
12955 SETUP_VALUE_FROM,
12956 SETUP_VALUE_TO,
12957 PROCESSED_CODE,
12958 COMPARISON_OPERATOR_TYPE_CODE,
12959 PRICING_STATUS_CODE
12960 )
12961 VALUES (l_l_p_line_index_tbl(J),
12962 l_l_line_detail_index_tbl(J),
12963 l_l_G_DETAIL_LEVEL_tbl(J),
12964 l_l_G_PRICING_TYPE_tbl(J),
12965 l_h_pricing_attr_context_tbl(J),
12966 l_h_pricing_attribute_tbl(J),
12967 l_h_pricing_attr_val_from_tbl(J),
12968 l_h_pricing_attr_val_to_tbl(J),
12969 l_h_pricing_attr_val_from_tbl(J),
12970 l_h_pricing_attr_val_to_tbl(J),
12971 l_l_G_BY_PBH_tbl(J),
12972 l_l_G_OPERATOR_BETWEEN_tbl(J),
12973 l_l_G_STATUS_NEW_tbl(J)
12974 );
12975 END IF;
12976
12977 IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
12978 engine_debug('#L2');
12979 END IF;
12980
12981 -- julin [3805113]: bulk insert into qp_npreq_rltd_lines_tmp
12982 IF (l_l_p_line_index_tbl.COUNT > 0) THEN
12983 FORALL J IN l_l_p_line_index_tbl.first..l_l_p_line_index_tbl.last
12984 INSERT INTO qp_npreq_rltd_lines_tmp
12985 (LINE_INDEX,
12986 LINE_DETAIL_INDEX,
12987 RELATIONSHIP_TYPE_CODE,
12988 RELATED_LINE_INDEX,
12989 RELATED_LINE_DETAIL_INDEX,
12990 PRICING_STATUS_CODE,
12991 PRICING_STATUS_TEXT,
12992 LIST_LINE_ID,
12993 RELATED_LIST_LINE_ID,
12994 RELATED_LIST_LINE_TYPE,
12995 OPERAND_CALCULATION_CODE,
12996 OPERAND,
12997 PRICING_GROUP_SEQUENCE,
12998 RELATIONSHIP_TYPE_DETAIL,
12999 SETUP_VALUE_FROM,
13000 SETUP_VALUE_TO,
13001 QUALIFIER_VALUE
13002 )
13003 VALUES (l_l_p_line_index_tbl(J),
13004 l_l_p_line_detail_index_tbl(J),
13005 l_l_G_PBH_LINE_tbl(J),
13006 l_l_p_line_index_tbl(J),
13007 l_l_line_detail_index_tbl(J),
13008 l_l_G_STATUS_NEW_tbl(J),
13009 l_l_G_PROCESSED_tbl(J),
13010 l_l_p_list_line_id_tbl(J),
13011 l_h_list_line_id_tbl(J),
13012 l_h_list_line_type_code_tbl(J),
13013 l_h_arithmetic_operator_tbl(J),
13014 l_h_operand_tbl(J),
13015 l_h_pricing_group_sequence_tbl(J),
13016 l_h_price_break_type_code_tbl(J),
13017 qp_number.canonical_to_number(l_h_pricing_attr_val_from_tbl(J)),
13018 qp_number.canonical_to_number(l_h_pricing_attr_val_to_tbl(J)),
13019 l_l_quantity_tbl(J));
13020 END IF;
13021
13022 IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
13023 engine_debug('#L3');
13024 END IF;
13025 --END LOOP; --END J LOOP
13026
13027 IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
13028 engine_debug('#L4');
13029 END IF;
13030 ELSE
13031 --None of the child price break statifies, hence parent is disqualified
13032 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13033 engine_debug(l_routine||' CHILD LINES ARE NOT SATISFIED');
13034
13035 END IF;
13036 x_is_break_satisfy := FALSE;
13037
13038 END IF;
13039
13040 IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
13041 engine_debug('#L5');
13042 END IF;
13043
13044 l_VALID_PBH_FLAG := 'N';
13045 l_total_item_quantity := NULL; -- shu, reset
13046 l_quantity := NULL; --shu, reset
13047
13048 EXCEPTION
13049 WHEN E_INVALID_PRICE_BREAK_TYPE THEN
13050 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13051 engine_debug('PRICE BREAK TYPE CODE IS NULL OR INVALID');
13052 END IF;
13053 SET_STATUS_CODE(G_STATUS_OTHER_ERRORS,
13054 'PRICE BREAK TYPE CODE IS EITHER NULL OR INVALID: '||l_h_price_break_type_code_tbl(J)||'list_line_id: '|| l_h_list_line_id_tbl(J),
13055 P_LINE_INDEX,
13056 NULL,
13057 'LINES',
13058 l_status_code,
13059 l_status_text);
13060 WHEN E_INVALID_UOM_CONVERSION THEN-- shulin
13061 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13062 engine_debug('INVALID UOM CONVERSION FOR TOTAL_ITEM_QUANTITY');
13063 END IF;
13064 SET_STATUS_CODE(G_STATUS_OTHER_ERRORS,
13065 'INVALID UOM CONVERSION FOR TOTAL_ITEM_QUANTITY : '||l_status_text,
13066 P_LINE_INDEX,
13067 NULL,
13068 'LINES',
13069 l_status_code,
13070 l_status_text);
13071 -- Proration Start
13072 WHEN e_proration_fac_oks_error then
13073 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13074 engine_debug('Error while calling oks api to get proration factor');
13075 END IF;
13076 SET_STATUS_CODE(G_STATUS_OTHER_ERRORS,
13077 'Error while calling oks api to get proration factor',
13078 P_LINE_INDEX,
13079 NULL,
13080 'LINES',
13081 l_status_code,
13082 l_status_text);
13083
13084 -- Proration End
13085
13086 WHEN OTHERS THEN
13087 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13088 engine_debug('#Exception L6');
13089 engine_debug(l_routine || ' ' || SQLERRM);
13090 END IF;
13091 x_status_code := FND_API.G_RET_STS_ERROR;
13092 x_status_text := l_routine||': '||SQLERRM;
13093
13094 END Handle_Break; --end procedure
13095
13096 /*+------------------------------------------------------------
13097 |delete children pbh lines if the parent fails
13098 +-----------------------------------------------------------
13099 */
13100
13101 PROCEDURE Delete_Invalid_PBH_Children(p_line_index IN PLS_INTEGER,
13102 p_pricing_phase_id NUMBER,
13103 x_status_code OUT NOCOPY VARCHAR2,
13104 x_status_text OUT NOCOPY VARCHAR2) AS
13105 /*
13106 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
13107 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,PRICING_PHASE_ID,2
13108 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,ASK_FOR_FLAG,3
13109 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,CREATED_FROM_LIST_LINE_TYPE,4
13110 */
13111 CURSOR l_check_deleted_pbh_cur(p_line_index IN PLS_INTEGER) IS
13112 SELECT line_detail_index
13113 FROM qp_npreq_ldets_tmp
13114 WHERE created_from_list_line_type = G_PRICE_BREAK_TYPE
13115 AND line_index = p_line_index
13116 AND pricing_phase_id = p_pricing_phase_id
13117 AND pricing_status_code <> G_STATUS_NEW
13118 AND nvl(updated_flag,'N') = 'N'; -- to not delete passed adj by the calling app since updated_flag='Y'
13119
13120 l_routine VARCHAR2(240):='QP_PREQ_GRP.Delete_invalid_PBH_Children';
13121 BEGIN
13122 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13123 engine_debug('in Delete_Invalid_PBH_Children');
13124 END IF;
13125 FOR I IN l_check_deleted_pbh_cur(p_line_index) LOOP
13126 /*
13127 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.delete_invalid_pbh_children_upd1,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
13128 */
13129 /*
13130 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.delete_invalid_pbh_children_sel1,-No Index Used-,NA,NA
13131 */
13132 UPDATE qp_npreq_ldets_tmp a
13133 SET PRICING_STATUS_CODE = G_DELETED_PARENT_FAILS
13134 WHERE line_detail_index IN
13135 (SELECT related_line_detail_index
13136 FROM qp_npreq_rltd_lines_tmp
13137 WHERE line_detail_index = I.line_detail_index);
13138 /*
13139 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.upd2,-No Index Used-,NA,NA
13140 */
13141 UPDATE qp_npreq_rltd_lines_tmp --upd2
13142 SET PRICING_STATUS_CODE = G_DELETED_PARENT_FAILS
13143 WHERE line_detail_index = I.line_detail_index;
13144
13145 END LOOP;
13146
13147 EXCEPTION
13148 WHEN OTHERS THEN
13149 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13150 engine_debug(l_routine||' '||SQLERRM);
13151 END IF;
13152 x_status_code := FND_API.G_RET_STS_ERROR;
13153 x_status_text := l_routine||': '||SQLERRM;
13154 END Delete_Invalid_PBH_Children;
13155
13156 /*+------------------------------------------------------------
13157 |GET_ELIGIBLE_PRICE_BREAK
13158 +--------------------------------------------------------------
13159 */
13160
13161 PROCEDURE GET_ELIGIBLE_PRICE_BREAK(p_pricing_phase_id NUMBER,
13162 p_line_index NUMBER := NULL,
13163 x_status_code OUT NOCOPY VARCHAR2,
13164 x_status_text OUT NOCOPY VARCHAR2)
13165 AS
13166 --Index Certificate
13167 /*
13168 Can use N2 instead of N4
13169 INDX,QP_PREQ_GRP.get_eligible_price_break.l_price_break_parent_cur,qp_npreq_ldets_tmp_N2,PRICING_PHASE_ID,1
13170 INDX,QP_PREQ_GRP.get_eligible_price_break.l_price_break_parent_cur,qp_npreq_ldets_tmp_N2,PRICING_STATUS_CODE,2
13171 INDX,QP_PREQ_GRP.get_eligible_price_break.l_price_break_parent_cur,qp_npreq_ldets_tmp_N2,LINE_INDEX,3
13172 INDX,QP_PREQ_GRP.get_eligible_price_break.l_price_break_parent_cur,qp_npreq_ldets_tmp_N2,CREATED_FROM_LIST_LINE_TYPE,4
13173 */
13174 -- Do price break processing only for unprocessed lines(line_index) in a phase bug 2386934
13175 -- without the not exists clause price break processing was hapenning 2 times if there is an
13176 -- order line where in price list is not passed and there is an order line where price list was passed and
13177 -- price break processing was done for the passed price list line. Price break processing is hapenning again
13178 -- when big search is done for the line where price list not passed.
13179 -- process only the price break lines that are not processed -- Bug #2717117
13180 CURSOR l_price_break_parent_cur IS
13181 SELECT /*+ index(a qp_npreq_ldets_tmp_N2) */ --bug 9362867
13182 created_from_list_header_id list_header_id , created_from_list_line_id list_line_id,
13183 group_quantity ,group_amount, line_detail_index, line_index, line_quantity -- 2388011, pbh_grp_lines
13184 , created_from_list_type_code
13185 FROM qp_npreq_ldets_tmp a
13186 WHERE created_from_list_line_type = G_PRICE_BREAK_TYPE
13187 AND pricing_status_code = G_STATUS_NEW
13188 AND pricing_phase_id = p_pricing_phase_id
13189 AND nvl(processed_flag,G_NOT_PROCESSED) = G_NOT_PROCESSED;
13190 --AND line_index > 0
13191 --AND not exists (select 'X'
13192 -- from qp_npreq_rltd_lines_tmp b
13193 -- where a.line_index = b.line_index
13194 -- and a.created_from_list_line_id = b.list_line_id
13195 -- and b.relationship_type_code = G_PBH_LINE
13196 -- and nvl(b.pricing_status_text,G_NOT_PROCESSED) <> G_PROCESSED);
13197
13198 --AND line_index = nvl(p_line_index,line_index);
13199
13200 l_routine VARCHAR2(240):='Routine: QP_PREQ_GRP.GET_ELIGIBLE_PRICE_BREAK';
13201 l_is_break_satisfy Boolean:=TRUE;
13202 G_LIST_HEADER_ID_TBL_G NUMBER_TYPE;
13203 G_LIST_LINE_ID_TBL_G NUMBER_TYPE;
13204 G_GROUP_QUANTITY_TBL_G NUMBER_TYPE;
13205 G_GROUP_AMOUNT_TBL_G NUMBER_TYPE;
13206 G_LINE_DETAIL_INDEX_TBL_G NUMBER_TYPE;
13207 G_LINE_INDEX_TBL_G NUMBER_TYPE;
13208 G_LINE_QUANTITY_TBL_G NUMBER_TYPE;
13209 G_LIST_TYPE_CODE_TBL_G VARCHAR_TYPE;
13210 g_failed_ld_tbl_g NUMBER_TYPE;
13211 v_count PLS_INTEGER := 1;
13212 l_status_code VARCHAR2(30);
13213 l_status_text VARCHAR2(240);
13214
13215 nROWS CONSTANT NUMBER := 1000;
13216 E_ROUTINE_ERRORS EXCEPTION;
13217
13218 BEGIN
13219 qp_debug_util.tstart('GET_ELIGIBLE_PRICE_BREAK','Procedure GET_ELIGIBLE_PRICE_BREAK');
13220 OPEN l_price_break_parent_cur;
13221
13222 LOOP
13223
13224 G_LIST_HEADER_ID_TBL_G.delete;
13225 G_LIST_LINE_ID_TBL_G.delete;
13226 G_GROUP_QUANTITY_TBL_G.delete;
13227 G_GROUP_AMOUNT_TBL_G.delete;
13228 G_LINE_DETAIL_INDEX_TBL_G.delete;
13229 G_LINE_INDEX_TBL_G.delete;
13230 G_LINE_QUANTITY_TBL_G.delete;
13231 G_LIST_TYPE_CODE_TBL_G.delete;
13232
13233 FETCH l_price_break_parent_cur BULK COLLECT INTO
13234 G_LIST_HEADER_ID_TBL_G
13235 , G_LIST_LINE_ID_TBL_G
13236 , G_GROUP_QUANTITY_TBL_G
13237 , G_GROUP_AMOUNT_TBL_G
13238 , G_LINE_DETAIL_INDEX_TBL_G
13239 , G_LINE_INDEX_TBL_G
13240 , G_LINE_QUANTITY_TBL_G
13241 , G_LIST_TYPE_CODE_TBL_G LIMIT nROWS;
13242 EXIT WHEN G_LINE_INDEX_TBL_G.COUNT = 0;
13243
13244 IF (G_LINE_INDEX_TBL_G.COUNT > 0) THEN
13245 FOR I in G_LINE_INDEX_TBL_G.FIRST .. G_LINE_INDEX_TBL_G.LAST
13246 LOOP
13247
13248 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13249 engine_debug('Checking break for: '||g_list_line_id_tbl_g(i) || ' Line Index : ' || g_line_index_tbl_g(i));
13250 END IF;
13251
13252 l_is_break_satisfy := TRUE;
13253
13254 HANDLE_BREAK(p_list_header_id => g_list_header_id_tbl_g(i),
13255 p_list_line_id => g_list_line_id_tbl_g(i),
13256 p_pricing_phase_id => p_pricing_phase_id,
13257 p_line_detail_index => g_line_detail_index_tbl_g(i),
13258 p_line_index => g_line_index_tbl_g(i),
13259 p_group_quantity => g_group_quantity_tbl_g(i),
13260 --p_group_amount => I.group_amount,
13261 p_group_amount => g_line_quantity_tbl_g(i), -- 2388011
13262 p_list_type_code => g_list_type_code_tbl_g(i),
13263 x_is_break_satisfy => l_is_break_satisfy,
13264 x_status_code => l_status_code,
13265 x_status_text => l_status_text);
13266 IF l_status_code=FND_API.G_RET_STS_ERROR THEN
13267 RAISE E_ROUTINE_ERRORS;
13268 END IF;
13269
13270 IF(l_is_break_satisfy = FALSE) THEN
13271 v_count := v_count + 1;
13272 g_failed_ld_tbl_g(v_count) := g_line_detail_index_tbl_g(i);
13273 END IF;
13274
13275 END LOOP;
13276 END IF;
13277 --END LOOP;
13278 END LOOP;
13279 CLOSE l_price_break_parent_cur;
13280
13281 IF (g_failed_ld_tbl_g.count > 0) THEN
13282 FORALL i in g_failed_ld_tbl_g.first .. g_failed_ld_tbl_g.last
13283 UPDATE qp_npreq_ldets_tmp
13284 SET PRICING_STATUS_CODE = G_DELETED_PBH
13285 WHERE LINE_DETAIL_INDEX = g_failed_ld_tbl_g(i);
13286 END IF;
13287
13288 -- if price break price lists are deleted at this point , then mark the status on the line for
13289 -- secondary or big search. Do this only for pricing phase
13290 IF (g_failed_ld_tbl_g.count > 0 and p_pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
13291 -- To make sure lines which did not get the price and do not have a record in qp_npreq_ldets_tmp get picked up
13292 UPDATE qp_npreq_lines_tmp a
13293 SET processed_code = G_STS_LHS_NOT_FOUND
13294 WHERE NOT EXISTS (SELECT 'x'
13295 FROM qp_npreq_ldets_tmp b
13296 WHERE a.line_index = b.line_index
13297 AND b.pricing_status_code = G_STATUS_NEW
13298 AND b.pricing_phase_id = G_PRICE_LIST_PHASE_ID)
13299 AND line_type_code <> G_ORDER_LEVEL;
13300
13301 END IF;
13302 qp_debug_util.tstop('GET_ELIGIBLE_PRICE_BREAK');
13303 EXCEPTION
13304 WHEN E_ROUTINE_ERRORS THEN
13305 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13306 engine_debug(l_routine || ': ' ||l_status_text);
13307 END IF;
13308 x_status_code := FND_API.G_RET_STS_ERROR;
13309 x_status_text := l_routine || ': ' ||l_status_text;
13310 qp_debug_util.tstop('GET_ELIGIBLE_PRICE_BREAK');
13311 WHEN OTHERS THEN
13312 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13313 engine_debug(l_routine || ' ' || SQLERRM);
13314 END IF;
13315 x_status_code := FND_API.G_RET_STS_ERROR;
13316 x_status_text := l_routine||' '||SQLERRM;
13317 qp_debug_util.tstop('GET_ELIGIBLE_PRICE_BREAK');
13318 END Get_Eligible_Price_Break;
13319
13320 /*+--------------------------------------------------------
13321 | PROCEDURE PERFORM_GROUPING
13322 +--------------------------------------------------------
13323 */
13324 PROCEDURE PERFORM_GROUPING(p_pricing_phase_id NUMBER,
13325 p_line_index NUMBER := NULL,
13326 x_status_code OUT NOCOPY VARCHAR2,
13327 x_status_text OUT NOCOPY VARCHAR2) AS
13328
13329 -- Header Level Quals Passed
13330 -- We need to include the records deleted in NOT= and Between Processing here , otherwise the cursor
13331 -- would not fetch any records and grouping would be successful .
13332 -- Even when deleted in NOT= and Between processing they need to go thru grouping and get deleted
13333
13334 /*
13335 INDX,QP_PREQ_GRP.Perform_Grouping.header_level_qual_attrs_cur,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
13336 INDX,QP_PREQ_GRP.Perform_Grouping.header_level_qual_attrs_cur,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
13337 INDX,QP_PREQ_GRP.Perform_Grouping.header_level_qual_attrs_cur,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
13338
13339 INDX,QP_PREQ_GRP.Perform_Grouping.header_level_qual_attrs_cur,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
13340
13341 */
13342
13343 --Pricing Phase Change
13344 CURSOR header_level_qual_attrs_cur IS
13345 SELECT /*+ ORDERED USE_NL(b) index(a qp_preq_line_attrs_tmp_N5) header_level_qual_attrs_cur */
13346 a.LIST_HEADER_ID,
13347 a.LIST_LINE_ID,
13348 a.LINE_INDEX,
13349 a.GROUPING_NUMBER,
13350 a.LINE_DETAIL_INDEX,
13351 COUNT(distinct CONTEXT || ATTRIBUTE || SETUP_VALUE_FROM ) NO_OF_QUALIFIERS_IN_GRP --#bug1761272
13352 FROM qp_npreq_line_attrs_tmp a,qp_npreq_ldets_tmp b
13353 WHERE a.PRICING_PHASE_ID = p_pricing_phase_id
13354 AND a.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
13355 AND a.QUALIFIER_TYPE = G_HEADER_QUALIFIER
13356 AND a.LINE_DETAIL_INDEX = b.LINE_DETAIL_INDEX
13357 AND b.PRICING_STATUS_CODE = G_STATUS_NEW
13358 AND a.PRICING_STATUS_CODE IN (G_STATUS_NEW,G_DELETED_EXCLUDER,G_DELETED_BETWEEN)
13359 GROUP BY a.LIST_HEADER_ID, a.LINE_INDEX,a.LINE_DETAIL_INDEX,a.LIST_LINE_ID,a.GROUPING_NUMBER
13360 ORDER BY a.LIST_HEADER_ID, a.LINE_INDEX,a.LINE_DETAIL_INDEX,a.LIST_LINE_ID,a.GROUPING_NUMBER ;
13361
13362 -- Index Certificate
13363 --Pricing Phase Change
13364 /*
13365 INDX,QP_PREQ_GRP.Perform_Grouping.line_level_qual_attrs_cur2,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
13366 INDX,QP_PREQ_GRP.Perform_Grouping.line_level_qual_attrs_cur2,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
13367 INDX,QP_PREQ_GRP.Perform_Grouping.line_level_qual_attrs_cur2,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
13368
13369 INDX,QP_PREQ_GRP.Perform_Grouping.line_level_qual_attrs_cur2,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
13370
13371 */
13372
13373 CURSOR line_level_qual_attrs_cur2 IS
13374 SELECT /*+ ORDERED USE_NL(b) index(a qp_preq_line_attrs_tmp_N5) line_level_qual_attrs_cur2 */
13375 a.LIST_HEADER_ID,
13376 a.LIST_LINE_ID,
13377 a.LINE_INDEX,
13378 a.GROUPING_NUMBER,
13379 a.LINE_DETAIL_INDEX,
13380 COUNT(distinct CONTEXT || ATTRIBUTE || SETUP_VALUE_FROM ) NO_OF_QUALIFIERS_IN_GRP --#bug1761272
13381 FROM qp_npreq_line_attrs_tmp a,qp_npreq_ldets_tmp b
13382 WHERE a.PRICING_PHASE_ID = p_pricing_phase_id
13383 AND a.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
13384 AND a.QUALIFIER_TYPE = G_LINE_QUALIFIER
13385 AND a.PRICING_STATUS_CODE IN (G_STATUS_NEW,G_DELETED_EXCLUDER,G_DELETED_BETWEEN)
13386 AND a.LINE_DETAIL_INDEX = b.LINE_DETAIL_INDEX
13387 AND b.PRICING_STATUS_CODE = G_STATUS_NEW
13388 GROUP BY a.LIST_HEADER_ID, a.LINE_INDEX,a.LINE_DETAIL_INDEX,a.LIST_LINE_ID,a.GROUPING_NUMBER
13389 ORDER BY a.LIST_HEADER_ID, a.LINE_INDEX,a.LINE_DETAIL_INDEX,a.LIST_LINE_ID,a.GROUPING_NUMBER ;
13390
13391 -- Get the count of records where Price list is a qualifier(for secondary price lists only)
13392 /*
13393 INDX,QP_PREQ_GRP.perform_grouping.hdr_lvl_setup_pl_quals_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13394 INDX,QP_PREQ_GRP.perform_grouping.hdr_lvl_setup_pl_quals_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13395
13396 INDX,QP_PREQ_GRP.perform_grouping.hdr_lvl_setup_pl_quals_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
13397 */
13398 CURSOR hdr_lvl_setup_pl_quals_cur(p_list_header_id NUMBER) IS
13399 SELECT /*+ ORDERED index(a QP_QUALIFIERS_N1) */ COUNT(*) NO_OF_QUALIFIERS_IN_GRP --bug 12867791
13400 FROM QP_QUALIFIERS a , QP_LIST_HEADERS_B b
13401 WHERE a.LIST_HEADER_ID = p_list_header_id
13402 AND a.list_line_id = -1
13403 AND a.QUALIFIER_CONTEXT = 'MODLIST'
13404 AND a.QUALIFIER_ATTRIBUTE = 'QUALIFIER_ATTRIBUTE4'
13405 AND a.LIST_HEADER_ID = b.LIST_HEADER_ID
13406 AND b.LIST_TYPE_CODE IN ('AGR', 'PRL') ;
13407
13408 -- Get the count of records where Price list is a qualifier(for secondary price lists only)
13409 /*
13410 INDX,QP_PREQ_GRP.perform_grouping.line_level_setup_pl_quals_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13411 INDX,QP_PREQ_GRP.perform_grouping.line_level_setup_pl_quals_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13412
13413 INDX,QP_PREQ_GRP.perform_grouping.line_level_setup_pl_quals_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
13414 */
13415
13416 CURSOR line_level_setup_pl_quals_cur(p_list_header_id NUMBER,
13417 p_list_line_id NUMBER) IS
13418 SELECT COUNT(*) NO_OF_QUALIFIERS_IN_GRP
13419 FROM QP_QUALIFIERS a , QP_LIST_HEADERS_B b
13420 WHERE a.LIST_HEADER_ID = p_list_header_id
13421 AND a.list_line_id = p_list_line_id
13422 AND a.QUALIFIER_CONTEXT = 'MODLIST'
13423 AND a.QUALIFIER_ATTRIBUTE = 'QUALIFIER_ATTRIBUTE4'
13424 AND a.LIST_HEADER_ID = b.LIST_HEADER_ID
13425 AND b.LIST_TYPE_CODE IN ('AGR', 'PRL') ;
13426
13427
13428 /*
13429 INDX,QP_PREQ_GRP.perform_grouping.header_level_setup_quals_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13430 INDX,QP_PREQ_GRP.perform_grouping.header_level_setup_quals_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13431 INDX,QP_PREQ_GRP.perform_grouping.header_level_setup_quals_cur,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
13432 */
13433 CURSOR header_level_setup_quals_cur(p_list_header_id NUMBER,
13434 p_grouping_number NUMBER) IS
13435 SELECT COUNT(*) NO_OF_QUALIFIERS_IN_GRP
13436 FROM QP_QUALIFIERS a
13437 WHERE a.LIST_HEADER_ID = p_list_header_id
13438 AND a.list_line_id = -1
13439 AND a.qualifier_grouping_no = p_grouping_number ;
13440 --AND COMPARISON_OPERATOR_CODE <> 'NOT =';
13441
13442 --Null grouping number under same list_header_id is also an 'AND' condition
13443 --for all groups that share the same list_header_id.
13444 --That is, it need to present for a modifier/price list to get selected. Hence
13445 --it need to be condisered when counting number of qualifier in group
13446
13447 /*
13448 INDX,QP_PREQ_GRP.perform_grouping.header_setup_null_group_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13449 */
13450 CURSOR header_setup_null_group_cur(p_list_header_id NUMBER) IS
13451 SELECT count(*)
13452 FROM qp_qualifiers
13453 WHERE list_header_id = p_list_header_id
13454 AND qualifier_grouping_no = -1
13455 AND list_line_id = -1;
13456 --AND comparison_operator_code <> 'NOT =';
13457
13458 --count including null and not null group
13459 /*
13460 INDX,QP_PREQ_GRP.perform_grouping.header_setup_null_group_cur2,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13461 INDX,QP_PREQ_GRP.perform_grouping.header_setup_null_group_cur2,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13462 INDX,QP_PREQ_GRP.perform_grouping.header_setup_null_group_cur2,QP_QUALIFIERS_N1,COMPARISON_OPERATOR_CODE,4
13463 */
13464 CURSOR header_setup_null_group_cur2(p_list_header_id NUMBER) IS
13465 SELECT count(*)
13466 FROM qp_qualifiers
13467 WHERE list_header_id = p_list_header_id
13468 AND list_line_id = -1
13469 AND comparison_operator_code <> 'NOT =';
13470
13471
13472 /*
13473 INDX,QP_PREQ_GRP.perform_grouping.line_setup_null_group_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13474 INDX,QP_PREQ_GRP.perform_grouping.line_setup_null_group_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13475 INDX,QP_PREQ_GRP.perform_grouping.line_setup_null_group_cur,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
13476 */
13477 CURSOR line_setup_null_group_cur(p_list_header_id NUMBER,
13478 p_list_line_id NUMBER) IS
13479 SELECT count(*)
13480 FROM qp_qualifiers
13481 WHERE list_header_id = p_list_header_id
13482 AND list_line_id = p_list_line_id
13483 AND qualifier_grouping_no = -1;
13484 --AND comparison_operator_code <> 'NOT =';
13485
13486 --count including null and not null group for line level qualifier
13487 /*
13488 INDX,QP_PREQ_GRP.perform_grouping.line_setup_null_group_cur2,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13489 INDX,QP_PREQ_GRP.perform_grouping.line_setup_null_group_cur2,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13490 */
13491 CURSOR line_setup_null_group_cur2(p_list_header_id NUMBER,p_list_line_id NUMBER) IS
13492 SELECT count(*)
13493 FROM qp_qualifiers
13494 WHERE list_header_id = p_list_header_id
13495 AND list_line_id = p_list_line_id;
13496 --AND comparison_operator_code <> 'NOT =';
13497
13498 /*
13499 -- Can use N2 instead of N6 , but a better index is needed for this query
13500 */
13501 CURSOR line_level_qual_attrs_cur(p_list_header_id NUMBER,
13502 p_list_line_id NUMBER) IS
13503 SELECT LIST_HEADER_ID,
13504 LIST_LINE_ID ,
13505 LINE_INDEX,
13506 GROUPING_NUMBER,
13507 LINE_DETAIL_INDEX,
13508 COUNT(distinct CONTEXT || ATTRIBUTE || SETUP_VALUE_FROM ) NO_OF_QUALIFIERS_IN_GRP --#bug1761272
13509 FROM qp_npreq_line_attrs_tmp
13510 WHERE ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
13511 AND QUALIFIER_TYPE = G_LINE_QUALIFIER
13512 AND PRICING_STATUS_CODE IN (G_STATUS_NEW,G_DELETED_EXCLUDER,G_DELETED_BETWEEN)
13513 AND LIST_HEADER_ID = p_list_header_id
13514 AND LIST_LINE_ID = p_list_line_id
13515 --AND LINE_INDEX = nvl(p_line_index,LINE_INDEX)
13516 GROUP BY LIST_HEADER_ID,LIST_LINE_ID,LINE_INDEX,LINE_DETAIL_INDEX,GROUPING_NUMBER
13517 ORDER BY LIST_HEADER_ID,LIST_LINE_ID,LINE_INDEX,LINE_DETAIL_INDEX,GROUPING_NUMBER ;
13518
13519 /*
13520 INDX,QP_PREQ_GRP.perform_grouping.line_level_setup_quals_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13521 INDX,QP_PREQ_GRP.perform_grouping.line_level_setup_quals_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13522 INDX,QP_PREQ_GRP.perform_grouping.line_level_setup_quals_cur,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
13523 */
13524 CURSOR line_level_setup_quals_cur(p_list_header_id NUMBER,
13525 p_list_line_id NUMBER,
13526 p_grouping_no NUMBER) IS
13527 SELECT COUNT(*) NO_OF_QUALIFIERS_IN_GRP
13528 FROM QP_QUALIFIERS a
13529 WHERE a.LIST_HEADER_ID = p_list_header_id
13530 AND a.list_line_id = p_list_line_id
13531 AND a.qualifier_grouping_no = p_grouping_no;
13532 --AND COMPARISON_OPERATOR_CODE <> 'NOT =';
13533
13534 --check if there is header_level_qual passed in at all
13535 /*
13536 INDX,QP_PREQ_GRP.perform_grouping.header_level_quals_exist_cur,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
13537 INDX,QP_PREQ_GRP.perform_grouping.header_level_quals_exist_cur,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
13538 INDX,QP_PREQ_GRP.perform_grouping.header_level_quals_exist_cur,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
13539 INDX,QP_PREQ_GRP.perform_grouping.header_level_quals_exist_cur,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
13540 -- Change
13541 */
13542 CURSOR header_level_quals_exist_cur(p_list_header_id NUMBER,p_line_index PLS_INTEGER) IS
13543 SELECT 'X'
13544 FROM qp_npreq_line_attrs_tmp
13545 WHERE list_header_id = p_list_header_id
13546 AND line_index = p_line_index
13547 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
13548 AND QUALIFIER_TYPE = G_HEADER_QUALIFIER
13549 AND PRICING_STATUS_CODE = G_STATUS_NEW;
13550
13551 /*
13552 INDX,QP_PREQ_GRP.perform_grouping.line_lvl_setup_exist_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13553 INDX,QP_PREQ_GRP.perform_grouping.line_lvl_setup_exist_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13554 */
13555 CURSOR line_lvl_setup_exist_cur(p_list_header_id NUMBER,
13556 p_list_line_id NUMBER) IS
13557 SELECT 'X'
13558 FROM qp_qualifiers
13559 WHERE list_header_id = p_list_header_id
13560 AND list_line_id = p_list_line_id;
13561
13562 /*
13563 INDX,QP_PREQ_GRP.perform_grouping.hdr_lvl_setup_quals_exist_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13564 INDX,QP_PREQ_GRP.perform_grouping.hdr_lvl_setup_quals_exist_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13565 */
13566 CURSOR hdr_lvl_setup_quals_exist_cur(p_list_header_id NUMBER) IS
13567 SELECT 'X'
13568 FROM qp_qualifiers
13569 WHERE LIST_HEADER_ID = p_list_header_id
13570 AND list_line_id = -1;
13571
13572 -- volume attributes that are sourced in engine , we do not want to look at these attrs when doing product grouping
13573 -- Quantity Attribute and Line Amount Attribute
13574 -- Need not actually look at Pricing attribute , because there is always a product associated with it
13575 -- When looking at pricing attributes , we need to get distinct pricing attributes as , a same pricing attribute for the
13576 -- same list line id and line index can be there in the temp table more than once. Combination of Context and Attribute's
13577 -- distinctness is what is looked for
13578
13579 /*
13580 INDX,QP_PREQ_GRP.perform_grouping.product_level_attrs_cur,QP_RLTD_MODIFIERS_N2,TO_RLTD_MODIFIER_ID,1
13581 */
13582
13583 /*
13584 INDX,QP_PREQ_GRP.Perform_Grouping.product_level_attrs_cur,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
13585 INDX,QP_PREQ_GRP.Perform_Grouping.product_level_attrs_cur,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
13586 INDX,QP_PREQ_GRP.Perform_Grouping.product_level_attrs_cur,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
13587
13588 INDX,QP_PREQ_GRP.Perform_Grouping.product_level_attrs_cur,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
13589
13590 */
13591 --Pricing Phase Change
13592 CURSOR product_level_attrs_cur IS
13593 SELECT /*+ ORDERED USE_NL(b) index(a qp_preq_line_attrs_tmp_N5) index(b QP_PREQ_LDETS_TMP_U1) product_level_attrs_cur */ --5658579
13594 a.LIST_HEADER_ID , a.LIST_LINE_ID , a.LINE_INDEX,
13595 SUM(distinct(decode(a.attribute_type,G_PRODUCT_TYPE,1,0))) +
13596 COUNT(distinct(decode(a.attribute_type,G_PRICING_TYPE, a.context || ' ' || a.attribute || ' ' || setup_value_from ,NULL)))
13597 NO_OF_PATTS_IN_GRP -- Bug No: 7129919
13598 FROM qp_npreq_line_attrs_tmp a , qp_npreq_ldets_tmp b
13599 WHERE a.PRICING_PHASE_ID = p_pricing_phase_id
13600 AND a.CONTEXT <> G_PRIC_VOLUME_CONTEXT
13601 AND a.ATTRIBUTE_TYPE in ( G_PRICING_TYPE,G_PRODUCT_TYPE)
13602 AND a.PRICING_STATUS_CODE = G_STATUS_NEW
13603 AND a.LINE_DETAIL_INDEX = b.LINE_DETAIL_INDEX
13604 AND b.PRICING_STATUS_CODE = G_STATUS_NEW
13605 AND NOT EXISTS (SELECT 'X'
13606 FROM QP_RLTD_MODIFIERS b
13607 WHERE a.LIST_LINE_ID = b.TO_RLTD_MODIFIER_ID
13608 and b.rltd_modifier_grp_type <> 'COUPON') -- 5439022
13609 GROUP BY a.LIST_HEADER_ID , a.LIST_LINE_ID,a.LINE_INDEX;
13610
13611 /*
13612 INDX,QP_PREQ_GRP.perform_grouping.product_level_setup_attrs_cur,QP_PRICING_ATTRIBUTES_N2,LIST_LINE_ID,1
13613 INDX,QP_PREQ_GRP.perform_grouping.product_level_setup_attrs_cur,QP_PRICING_ATTRIBUTES_N2,EXCLUDER_FLAG,2
13614 */
13615 CURSOR product_level_setup_attrs_cur(p_list_line_id NUMBER) IS
13616 SELECT COUNT(*) NO_OF_PATTS_IN_GRP
13617 FROM QP_PRICING_ATTRIBUTES a
13618 WHERE a.LIST_LINE_ID = p_list_line_id
13619 AND a.EXCLUDER_FLAG <> G_YES;
13620 --AND a.PRICING_ATTRIBUTE_CONTEXT IS NOT NULL
13621 --GROUP BY LIST_LINE_ID,ATTRIBUTE_GROUPING_NO;
13622
13623 /*
13624 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_exists,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13625 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_exists,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13626 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_exists,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
13627 */
13628 CURSOR is_not_null_grp_exists (p_list_header_id NUMBER ,p_list_line_id NUMBER) IS
13629 SELECT 'X'
13630 FROM qp_qualifiers
13631 WHERE list_header_id = p_list_header_id
13632 AND list_line_id = p_list_line_id
13633 AND qualifier_grouping_no <> -1;
13634
13635 /*
13636 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
13637 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
13638 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
13639 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
13640 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed,qp_npreq_line_attrs_tmp_N1,LIST_LINE_ID,5
13641 -- This query is tuned for performance , expect some issues here with functionality
13642 */
13643 CURSOR is_not_null_grp_passed (p_line_index PLS_INTEGER ,p_list_line_id NUMBER,p_list_header_id NUMBER) IS
13644 SELECT 'X'
13645 FROM qp_npreq_line_attrs_tmp
13646 WHERE line_index = p_line_index
13647 AND list_line_id = p_list_line_id
13648 AND list_header_id = p_list_header_id
13649 AND attribute_type = G_QUALIFIER_TYPE
13650 AND qualifier_type = G_LINE_QUALIFIER
13651 AND pricing_status_code = G_STATUS_NEW -- Expect a bug with this join condition
13652 AND grouping_number <> -1;
13653
13654 /*
13655 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_exists2,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13656 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_exists2,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13657 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_exists2,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
13658 */
13659 CURSOR is_not_null_grp_exists2 (p_list_header_id NUMBER) IS
13660 SELECT 'X'
13661 FROM qp_qualifiers
13662 WHERE list_header_id = p_list_header_id
13663 AND list_line_id = -1
13664 AND qualifier_grouping_no <> -1;
13665
13666 /*
13667 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed2,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
13668 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
13669 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
13670 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed2,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
13671 -- Change
13672 */
13673 CURSOR is_not_null_grp_passed2 (p_line_index PLS_INTEGER ,p_list_header_id NUMBER) IS
13674 SELECT 'X'
13675 FROM qp_npreq_line_attrs_tmp
13676 WHERE line_index = p_line_index
13677 AND list_header_id = p_list_header_id
13678 AND attribute_type = G_QUALIFIER_TYPE
13679 AND qualifier_type = G_HEADER_QUALIFIER
13680 AND pricing_status_code = G_STATUS_NEW -- Expect a bug with this join condition
13681 AND grouping_number <> -1;
13682
13683 -- This cursor would get the count of records that got deleted as part of NOT= and Between for
13684 -- header level qualifiers. This count is deleted from the actual passed in qualifier count
13685 -- Then the resulting count of qualifiers is compared with the count in the setup
13686
13687 /*
13688 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_hdr_quals,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
13689 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_hdr_quals,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
13690 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_hdr_quals,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
13691 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_hdr_quals,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
13692 */
13693 CURSOR get_excluded_hdr_quals(p_line_index PLS_INTEGER,
13694 p_list_header_id PLS_INTEGER ,
13695 p_grouping_no PLS_INTEGER) IS
13696 SELECT COUNT(*)
13697 FROM qp_npreq_line_attrs_tmp
13698 WHERE LINE_INDEX = p_line_index
13699 AND LIST_HEADER_ID = p_list_header_id
13700 AND nvl(GROUPING_NUMBER,0) = nvl(p_grouping_no,0)
13701 AND PRICING_STATUS_CODE IN (G_DELETED_EXCLUDER , G_DELETED_BETWEEN)
13702 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
13703 AND QUALIFIER_TYPE = G_HEADER_QUALIFIER;
13704
13705 -- This cursor would get the count of records that got deleted as part of NOT= and Between for
13706 -- line level qualifiers
13707
13708 /*
13709 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_line_quals,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
13710 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_line_quals,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
13711 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_line_quals,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
13712 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_line_quals,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
13713 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_line_quals,qp_npreq_line_attrs_tmp_N1,LIST_LINE_ID,5
13714 */
13715 CURSOR get_excluded_line_quals(p_line_index PLS_INTEGER,
13716 p_list_header_id PLS_INTEGER ,
13717 p_list_line_id PLS_INTEGER,
13718 p_grouping_no PLS_INTEGER) IS
13719 SELECT COUNT(*)
13720 FROM qp_npreq_line_attrs_tmp
13721 WHERE LINE_INDEX = p_line_index
13722 AND LIST_HEADER_ID = p_list_header_id
13723 AND LIST_LINE_ID = p_list_line_id
13724 AND nvl(GROUPING_NUMBER,0) = nvl(p_grouping_no,0)
13725 AND PRICING_STATUS_CODE IN (G_DELETED_EXCLUDER , G_DELETED_BETWEEN)
13726 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
13727 AND QUALIFIER_TYPE = G_LINE_QUALIFIER;
13728
13729 -- This cursor would get the count of records that got deleted as part of Between for product (Volume based
13730 -- discounts like ITEM_QUANTITY and ITEM_AMOUNT)
13731
13732 /*
13733 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_prods_between,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
13734 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_prods_between,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
13735 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_prods_between,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
13736 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_prods_between,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
13737 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_prods_between,qp_npreq_line_attrs_tmp_N1,LIST_LINE_ID,5
13738 */
13739 --[julin/4744915/5139512] modified sql
13740 CURSOR get_excluded_prods_between(p_line_index PLS_INTEGER,
13741 p_list_header_id PLS_INTEGER,
13742 p_list_line_id PLS_INTEGER) IS
13743 SELECT 1
13744 FROM DUAL
13745 WHERE EXISTS
13746 (SELECT /*+ index(QP_PREQ_LINE_ATTRS_TMP QP_PREQ_LINE_ATTRS_TMP_N10) */ 'x' --9679930
13747 FROM QP_PREQ_LINE_ATTRS_TMP
13748 WHERE LINE_INDEX = p_line_index
13749 AND LIST_HEADER_ID = p_list_header_id
13750 AND LIST_LINE_ID = p_list_line_id
13751 AND PRICING_STATUS_CODE = G_DELETED_BETWEEN
13752 AND ATTRIBUTE_TYPE = G_PRICING_TYPE);
13753
13754 /*
13755 SELECT COUNT(*)
13756 FROM qp_npreq_line_attrs_tmp
13757 WHERE LINE_INDEX = p_line_index
13758 AND LIST_HEADER_ID = p_list_header_id
13759 AND LIST_LINE_ID = p_list_line_id
13760 AND PRICING_STATUS_CODE = G_DELETED_BETWEEN
13761 AND ATTRIBUTE_TYPE = G_PRICING_TYPE;
13762 */
13763
13764 v_list_header_id NUMBER;
13765 v_list_hdr_id NUMBER;
13766 v_list_line_id NUMBER;
13767 v_line_index NUMBER;
13768 v_grouping_number NUMBER;
13769 v_line_detail_index NUMBER;
13770 v_no_of_qualifiers_in_grp NUMBER;
13771 v_setup_list_header_id NUMBER;
13772 v_passed_line_level_quals_flag VARCHAR2(30):= 'FALSE';
13773 v_price_list_count NUMBER;
13774 l_dummy VARCHAR2(1);
13775 l_setup_null_grp_cnt PLS_INTEGER:=0;
13776 l_null_grp_cnt PLS_INTEGER:=0;
13777 l_diff_list_header_id NUMBER;
13778 l_diff_line_index PLS_INTEGER;
13779 l_diff_line_detail_index PLS_INTEGER;
13780 l_setup_grp_count PLS_INTEGER;
13781 l_excluded_count PLS_INTEGER;
13782 l_null_excl_count PLS_INTEGER;
13783 l_null_excl_count1 PLS_INTEGER;
13784 l_null_excl_count2 PLS_INTEGER;
13785 l_excl_prod_count PLS_INTEGER;
13786 l_excl_prod_count1 PLS_INTEGER;
13787
13788 l_setup_null_grp_cnt2 PLS_INTEGER:=0;
13789 l_null_grp_cnt2 PLS_INTEGER:=0;
13790 l_diff_list_header_id2 NUMBER;
13791 l_diff_list_line_id2 NUMBER;
13792 l_diff_line_index2 PLS_INTEGER;
13793 l_diff_line_detail_index2 PLS_INTEGER;
13794 l_setup_grp_count2 PLS_INTEGER;
13795 l_has_setup_line_lvl BOOLEAN:= FALSE;
13796 l_has_passed_in_line_lvl BOOLEAN:= FALSE;
13797 l_deleted_flag BOOLEAN:= FALSE;
13798 l_passed_in_cnt PLS_INTEGER;
13799 l_passed_in_cnt2 PLS_INTEGER;
13800 l_passed_in_cnt3 PLS_INTEGER;
13801 l_del_tbl PLS_INTEGER_TYPE;
13802 l_success_tbl PLS_INTEGER_TYPE;
13803 l_ind BINARY_INTEGER:=0;
13804 l_success_ind BINARY_INTEGER:=0;
13805 l_success_ind_flag VARCHAR2(1);
13806 l_index BINARY_INTEGER:=0;
13807 l_status_text VARCHAR2(240);
13808 nROWS CONSTANT NUMBER := 1000;
13809 E_ROUTINE_ERRORS EXCEPTION;
13810
13811 BEGIN
13812
13813 qp_debug_util.tstart('PERFORM_GROUPING','Perform Grouping');
13814 x_status_code := FND_API.G_RET_STS_SUCCESS;
13815
13816 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13817 engine_debug('Grouping begin');
13818 engine_debug('Pricing phase id: ' || p_pricing_phase_id);
13819
13820 END IF;
13821 -- Header Level Qualifiers Grouping
13822 --grouping for the records with header level qualifies
13823 -- +/- line level qualifiers.
13824
13825 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13826 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13827 engine_debug('In grouping');
13828 END IF;
13829 FOR i IN header_level_qual_attrs_cur LOOP
13830 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13831 engine_debug('-----------------------');
13832 engine_debug('list_header_id:'||i.list_header_id);
13833 engine_debug('list_line_id:'||i.list_line_id);
13834 engine_debug('line_index:'||i.line_index);
13835 engine_debug('grouping no:'||i.grouping_number);
13836 engine_debug('line detail index:'||i.line_detail_index);
13837 engine_debug('Qualifiers in Grp:'||i.NO_OF_QUALIFIERS_IN_GRP);
13838 END IF;
13839 END LOOP;
13840 END IF;
13841
13842 l_status_text := '#1';
13843
13844 IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
13845
13846 FOR i IN header_level_qual_attrs_cur LOOP
13847 v_line_index := i.LINE_INDEX;
13848 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13849 engine_debug('Header Level Qualifier Attributes Passed');
13850
13851 END IF;
13852 --this group is an AND condition for all qualifiers under the same header
13853 IF i.GROUPING_NUMBER = -1 THEN
13854 l_null_excl_count := 0;
13855 l_null_grp_cnt := i.NO_OF_QUALIFIERS_IN_GRP;
13856 l_passed_in_cnt := i.NO_OF_QUALIFIERS_IN_GRP;
13857 l_diff_list_header_id := i.list_header_id;
13858 l_diff_line_index := i.line_index;
13859 l_diff_line_detail_index := i.line_detail_index;
13860 ELSIF (i.list_header_id = l_diff_list_header_id)
13861 AND (i.line_index = l_diff_line_index)
13862 AND (i.line_detail_index = l_diff_line_detail_index) THEN
13863 l_passed_in_cnt := l_null_grp_cnt + i.NO_OF_QUALIFIERS_IN_GRP;
13864 NULL;
13865 --If no change then
13866 --do nothing, l_null_grp_cnt from prveious loop is still good
13867 ELSE --list header has changed, reset the count and previous list_header_id etc
13868 l_null_grp_cnt := 0;
13869 l_null_excl_count := 0;
13870 l_diff_list_header_id := -1975;
13871 l_diff_line_index := -1975;
13872 l_diff_line_detail_index := -1975;
13873 l_passed_in_cnt := i.NO_OF_QUALIFIERS_IN_GRP;
13874 END IF;
13875
13876 --Now working on setup grp count
13877 IF i.grouping_number = -1 THEN
13878 OPEN header_setup_null_group_cur(i.LIST_HEADER_ID);
13879 FETCH header_setup_null_group_cur INTO l_setup_null_grp_cnt;
13880 CLOSE header_setup_null_group_cur;
13881 l_setup_grp_count:=l_setup_null_grp_cnt;
13882 ELSE
13883 OPEN header_level_setup_quals_cur(i.LIST_HEADER_ID,i.grouping_number);
13884 FETCH header_level_setup_quals_cur INTO l_setup_grp_count;
13885 CLOSE header_level_setup_quals_cur;
13886
13887 OPEN header_setup_null_group_cur(i.LIST_HEADER_ID);
13888 FETCH header_setup_null_group_cur INTO l_setup_null_grp_cnt;
13889 CLOSE header_setup_null_group_cur;
13890
13891 l_setup_grp_count:= l_setup_grp_count + l_setup_null_grp_cnt;
13892
13893 END IF;
13894
13895 -- Delete the no of quals where pl is a qualifier(for price lists only)
13896 OPEN hdr_lvl_setup_pl_quals_cur(i.list_header_id);
13897 FETCH hdr_lvl_setup_pl_quals_cur INTO v_price_list_count;
13898 CLOSE hdr_lvl_setup_pl_quals_cur;
13899
13900 l_setup_grp_count:= l_setup_grp_count - v_price_list_count ;
13901
13902 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13903 engine_debug('Checking header lvl qualifier count');
13904 engine_debug('Header Level Qualifiers in setup: '||l_setup_grp_count);
13905
13906 END IF;
13907 -- Init
13908 l_excluded_count :=0;
13909 --l_null_excl_count := 0;
13910
13911 -- Determine actual passed in count
13912 OPEN get_excluded_hdr_quals(i.line_index,i.list_header_id,i.grouping_number);
13913 FETCH get_excluded_hdr_quals into l_excluded_count;
13914 CLOSE get_excluded_hdr_quals;
13915
13916 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13917 engine_debug('Excluded quals : '||l_excluded_count || ' Grouping Number:' || i.grouping_number);
13918
13919 END IF;
13920 -- l_null_excl_count is applicable when NOT= , or BETWEEN is there on the NULL grouping number
13921 -- and that gets D_EXCL or D_BETWEEN.
13922 -- Then the actual passed in count will be other grp count(ex:grp no 1 ) + null_grp_count -
13923 -- l_null_excl_count
13924 -- l_excluded_count is for getting the excluded records for that particular grp no
13925
13926 IF (i.grouping_number = -1) THEN
13927 l_null_excl_count := l_excluded_count;
13928 l_passed_in_cnt := l_passed_in_cnt - nvl(l_excluded_count,0);
13929 ELSE
13930 l_passed_in_cnt := l_passed_in_cnt - nvl(l_excluded_count,0) - nvl(l_null_excl_count,0);
13931 END IF;
13932
13933 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13934 engine_debug('Null Excluded quals : '||l_null_excl_count);
13935 engine_debug('Header Level Qualifiers passsed in: '||l_passed_in_cnt);
13936
13937 END IF;
13938 IF (l_passed_in_cnt >= l_setup_grp_count) THEN
13939 --l_success_ind := l_success_ind+1;
13940 --l_success_tbl(l_success_ind):= i.LINE_DETAIL_INDEX;
13941
13942 l_deleted_flag := FALSE;
13943 l_success_ind_flag := G_NO;
13944 IF i.grouping_number = -1 THEN
13945 --check if this is a pure null grp
13946 OPEN is_not_null_grp_exists2(i.list_header_id);
13947 FETCH is_not_null_grp_exists2 into l_dummy;
13948 IF is_not_null_grp_exists2%FOUND THEN
13949 --is not a pure null grp, then check if any other grp passed in
13950 OPEN is_not_null_grp_passed2(i.line_index,i.list_header_id);
13951 FETCH is_not_null_grp_passed2 into l_dummy;
13952 IF is_not_null_grp_passed2%NOTFOUND THEN
13953 -- other required grp is not passed
13954 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13955 engine_debug('Update #7');
13956 END IF;
13957 l_deleted_flag := TRUE;
13958 l_ind := l_ind+1;
13959 l_del_tbl(l_ind):= i.LINE_DETAIL_INDEX;
13960 END IF;
13961 CLOSE is_not_null_grp_passed2;
13962 ELSE
13963 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13964 engine_debug ('Successful on Header Level Quals Success Flag');
13965 END IF;
13966 l_success_ind_flag := G_YES; -- Mark it as success , for line level quals evaluation
13967 --l_success_ind := l_success_ind+1;
13968 --l_success_tbl(l_success_ind):= i.LINE_DETAIL_INDEX;
13969 END IF; --is a pure null grp
13970 CLOSE is_not_null_grp_exists2;
13971 ELSE
13972 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13973 engine_debug ('Successful on Header Level Quals Success Flag Not null Group');
13974 END IF;
13975 l_success_ind_flag := G_YES;
13976 --l_success_ind := l_success_ind+1;
13977 --l_success_tbl(l_success_ind):= i.LINE_DETAIL_INDEX;
13978 END IF;
13979
13980 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13981 engine_debug('Line Level Quals LH Id :' || i.list_header_id);
13982 engine_debug('Line Level Quals LL Id :' || i.list_line_id);
13983
13984 END IF;
13985 OPEN line_lvl_setup_exist_cur(i.LIST_HEADER_ID,i.list_line_id);
13986 FETCH line_lvl_setup_exist_cur INTO l_dummy;
13987 l_has_setup_line_lvl := FALSE;
13988 l_has_passed_in_line_lvl := FALSE;
13989
13990 IF line_lvl_setup_exist_cur%FOUND AND l_deleted_flag = FALSE THEN --has line level qualifiers
13991 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13992 engine_debug('Has Line Level Qualifiers');
13993 END IF;
13994 l_has_setup_line_lvl := TRUE;
13995 FOR k IN line_level_qual_attrs_cur(i.LIST_HEADER_ID,i.list_line_id) LOOP
13996 l_has_passed_in_line_lvl := TRUE;
13997 IF k.GROUPING_NUMBER = -1 THEN
13998 l_null_grp_cnt2 := k.NO_OF_QUALIFIERS_IN_GRP;
13999 l_null_excl_count1 := 0;
14000 l_passed_in_cnt2 := k.NO_OF_QUALIFIERS_IN_GRP;
14001 l_diff_list_header_id2 := k.list_header_id;
14002 l_diff_list_line_id2 := k.list_line_id;
14003 l_diff_line_index2 := k.line_index;
14004 l_diff_line_detail_index2 := k.line_detail_index;
14005 ELSIF (k.list_header_id = l_diff_list_header_id2)
14006 AND (k.list_line_id = l_diff_list_line_id2)
14007 AND (k.line_index = l_diff_line_index2)
14008 AND (k.line_detail_index = l_diff_line_detail_index2) THEN
14009 NULL;
14010 l_passed_in_cnt2 := k.NO_OF_QUALIFIERS_IN_GRP + l_null_grp_cnt2;
14011 ELSE
14012 l_passed_in_cnt2 := k.NO_OF_QUALIFIERS_IN_GRP;
14013 l_null_grp_cnt2:= 0;
14014 l_null_excl_count1 := 0;
14015 l_diff_list_header_id2 := -1975;
14016 l_diff_list_line_id2 := -1975;
14017 l_diff_line_index2 := -1975;
14018 l_diff_line_detail_index2 := -1975;
14019 END IF;
14020
14021 IF k.grouping_number = -1 THEN
14022 OPEN line_setup_null_group_cur(K.list_header_id,K.list_line_id);
14023 FETCH line_setup_null_group_cur INTO l_setup_grp_count2;
14024 CLOSE line_setup_null_group_cur;
14025 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14026 engine_debug('Setup grp null cnt: '||l_setup_grp_count2);
14027 END IF;
14028 ELSE
14029 OPEN line_setup_null_group_cur(K.list_header_id,K.list_line_id);
14030 FETCH line_setup_null_group_cur INTO l_setup_null_grp_cnt2;
14031 CLOSE line_setup_null_group_cur;
14032
14033 OPEN line_level_setup_quals_cur(K.list_header_id,K.list_line_id,K.grouping_number);
14034 FETCH line_level_setup_quals_cur INTO l_setup_grp_count2;
14035 CLOSE line_level_setup_quals_cur;
14036
14037 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14038 engine_debug('setup grp cnt: '||l_setup_grp_count2);
14039 END IF;
14040 l_setup_grp_count2 := l_setup_grp_count2 + l_setup_null_grp_cnt2;
14041 END IF;
14042
14043 -- Delete the no of quals where pl is a qualifier(for price lists only)
14044 OPEN line_level_setup_pl_quals_cur(K.list_header_id,K.list_line_id);
14045 FETCH line_level_setup_pl_quals_cur INTO v_price_list_count;
14046 CLOSE line_level_setup_pl_quals_cur;
14047
14048 l_setup_grp_count2 := l_setup_grp_count2 - v_price_list_count;
14049
14050 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14051 engine_debug('Null Line Level Quals count in Setup: '||l_setup_null_grp_cnt2);
14052 engine_debug('Passed in null line level quals count: '|| l_null_grp_cnt2);
14053
14054 END IF;
14055 -- Init
14056 l_excluded_count :=0;
14057 --l_null_excl_count1 := 0;
14058
14059 -- Determine actual passed in count
14060 OPEN get_excluded_line_quals(k.line_index,k.list_header_id,k.list_line_id,k.grouping_number);
14061 FETCH get_excluded_line_quals into l_excluded_count;
14062 CLOSE get_excluded_line_quals;
14063
14064 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14065 engine_debug('Excluded Line quals : '||l_excluded_count);
14066
14067 END IF;
14068 IF (i.grouping_number = -1) THEN
14069 l_null_excl_count1 := l_excluded_count;
14070 l_passed_in_cnt2 := l_passed_in_cnt2 - nvl(l_excluded_count,0);
14071 ELSE
14072 l_passed_in_cnt2 := l_passed_in_cnt2 - nvl(l_excluded_count,0) - nvl(l_null_excl_count1,0);
14073 END IF;
14074
14075 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14076 engine_debug('Passed in line lvl count: '||l_passed_in_cnt2);
14077 engine_debug('Line Level Quals count in Setup: '||l_setup_grp_count2);
14078
14079 END IF;
14080 IF(l_passed_in_cnt2 >= l_setup_grp_count2) THEN
14081 IF k.grouping_number = -1 THEN
14082 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14083 engine_debug('Line Level Quals #123');
14084 END IF;
14085 --check if this is a pure null grp, if no, and other
14086 OPEN is_not_null_grp_exists(k.list_header_id,k.list_line_id);
14087 FETCH is_not_null_grp_exists into l_dummy;
14088 IF is_not_null_grp_exists%FOUND THEN
14089 --is not a pure null grp, then check if any other grp passed in
14090 OPEN is_not_null_grp_passed(k.line_index,k.list_line_id,k.list_header_id);
14091 FETCH is_not_null_grp_passed into l_dummy;
14092 IF is_not_null_grp_passed%NOTFOUND THEN
14093 --no other required grp passed
14094 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14095 engine_debug('Update #7');
14096 END IF;
14097 l_ind := l_ind+1;
14098 l_del_tbl(l_ind):= k.LINE_DETAIL_INDEX;
14099 END IF;
14100 CLOSE is_not_null_grp_passed;
14101 ELSE
14102 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14103 engine_debug('Pure Null Line Level Quals #124');
14104 END IF;
14105 l_success_ind := l_success_ind+1;
14106 l_success_tbl(l_success_ind):= i.line_detail_index;
14107 END IF; --is a pure null grp
14108 CLOSE is_not_null_grp_exists;
14109 ELSE -- not a null group approve the line
14110 l_success_ind := l_success_ind+1;
14111 l_success_tbl(l_success_ind):= k.LINE_DETAIL_INDEX;
14112 END IF;
14113 ELSE -- Count did not match
14114 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14115 engine_debug ('Not successful on the Line Level Qualifiers Count Mismatch: ' || k.LIST_LINE_ID);
14116 engine_debug('The whole List Line is getting deleted');
14117 engine_debug('Update #1');
14118 END IF;
14119 l_ind := l_ind+1;
14120 l_del_tbl(l_ind):= k.LINE_DETAIL_INDEX;
14121 END IF;
14122 END LOOP; --end K loop
14123 --we need to delete lists that has line lvl qualifier but not passed in.
14124 IF (l_has_passed_in_line_lvl = FALSE) THEN
14125 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14126 engine_debug ('Fails in line lvl bcause exists in Setup but Not Passed');
14127 engine_debug('List header id that has line level qualifier:'|| i.list_header_id);
14128 engine_debug('The whole List Line is getting deleted#1');
14129 engine_debug('Update #2');
14130 END IF;
14131 l_ind := l_ind+1;
14132 l_del_tbl(l_ind):= i.LINE_DETAIL_INDEX;
14133 END IF;
14134 ELSE
14135 -- No line level qualifiers exist , but header level quals satisfied
14136 IF(l_success_ind_flag = G_YES) THEN
14137 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14138 engine_debug('Header Level Quals satisfied and no line level quals exist');
14139 END IF;
14140 l_success_ind := l_success_ind+1;
14141 l_success_tbl(l_success_ind):= i.line_detail_index;
14142 END IF;
14143 END IF; -- end if for line_lvl_setup_exist_cur%FOUND
14144 CLOSE line_lvl_setup_exist_cur;
14145 ELSE --else for if (i.NO_OF_QUALIFIER_IN_GRP + l_null_grp_cnt >= l_setup_grp_count)
14146 --grouping count did not match for header level qualifier
14147 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14148 engine_debug('Header lvl qualifier doesn''t match');
14149 engine_debug('Update #3');
14150 END IF;
14151 l_ind := l_ind+1;
14152 l_del_tbl(l_ind):= i.LINE_DETAIL_INDEX;
14153 END IF; --end if for if (i.NO_OF_QUALIFIER_IN_GRP + l_null_grp_cnt >= l_setup_grp_count)
14154 END LOOP; --end i loop
14155 l_status_text := '#2';
14156
14157 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14158 engine_debug('Deleted Line Details in Table');
14159 END IF;
14160 FOR i in 1..l_del_tbl.count
14161 LOOP
14162 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14163 engine_debug('Line Detail Index: ' || l_del_tbl(i));
14164 END IF;
14165 END LOOP;
14166
14167 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14168 engine_debug('Successful Line Details in Table');
14169 END IF;
14170 FOR i in 1..l_success_tbl.count
14171 LOOP
14172 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14173 engine_debug('Line Detail Index: ' || l_success_tbl(i));
14174 END IF;
14175 END LOOP;
14176
14177 IF l_del_tbl.FIRST IS NOT NULL THEN
14178 FORALL i in l_del_tbl.FIRST..l_del_tbl.LAST
14179 /*
14180 INDX,QP_PREQ_GRP.perform_grouping.upd1,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
14181 */
14182 --bug 14464004
14183 UPDATE /*+ index(qp_npreq_ldets_tmp QP_PREQ_LDETS_TMP_U1) */ qp_npreq_ldets_tmp --upd1
14184 SET PRICING_STATUS_CODE = G_DELETED_GRP,
14185 PRICING_STATUS_TEXT = 'Deleted in header+/-line grouping'
14186 WHERE line_detail_index = l_del_tbl(i);
14187
14188 /* FORALL i in l_del_tbl.FIRST..l_del_tbl.LAST
14189 UPDATE qp_npreq_line_attrs_tmp
14190 SET PRICING_STATUS_CODE = G_DELETED_GRP,
14191 PRICING_STATUS_TEXT = 'Deleted in header +/- line grouping'
14192 WHERE line_detail_index = l_del_tbl(i)
14193 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE; */
14194
14195 END IF;
14196
14197 IF l_success_tbl.FIRST IS NOT NULL THEN
14198 FORALL i in l_success_tbl.FIRST..l_success_tbl.LAST
14199 /*
14200 INDX,QP_PREQ_GRP.perform_grouping.upd2,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
14201 */
14202 UPDATE qp_npreq_ldets_tmp --upd2
14203 SET PRICING_STATUS_CODE = G_STATUS_NEW
14204 WHERE line_detail_index = l_success_tbl(i);
14205
14206 /* FORALL i in l_success_tbl.FIRST..l_success_tbl.LAST
14207 UPDATE qp_npreq_line_attrs_tmp
14208 SET PRICING_STATUS_CODE = G_STATUS_NEW
14209 WHERE line_detail_index = l_success_tbl(i)
14210 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE; */
14211
14212 END IF;
14213
14214 l_del_tbl.delete;
14215 l_success_tbl.delete;
14216 l_ind:=0;
14217 l_success_ind:=0;
14218 l_status_text :='#3';
14219
14220 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14221 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14222 engine_debug('In Pure Line Level grouping');
14223 END IF;
14224 FOR k IN line_level_qual_attrs_cur2 LOOP
14225 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14226 engine_debug('-----------------------');
14227 engine_debug('list_header_id:'||k.list_header_id);
14228 engine_debug('list_line_id:'||k.list_line_id);
14229 engine_debug('line_index:'||k.line_index);
14230 engine_debug('grouping no:'||k.grouping_number);
14231 engine_debug('line detail index:'||k.line_detail_index);
14232 engine_debug('Qualifiers in Grp:'||k.NO_OF_QUALIFIERS_IN_GRP);
14233 END IF;
14234 END LOOP;
14235 END IF;
14236
14237 --grouping for the records with ONLY line level qualifies
14238 FOR k in line_level_qual_attrs_cur2 LOOP
14239 IF k.GROUPING_NUMBER = -1 THEN
14240 l_null_grp_cnt2 := k.NO_OF_QUALIFIERS_IN_GRP;
14241 l_null_excl_count2 := 0;
14242 l_passed_in_cnt3 := k.NO_OF_QUALIFIERS_IN_GRP;
14243 l_diff_list_header_id2 := k.list_header_id;
14244 l_diff_list_line_id2 := k.list_line_id;
14245 l_diff_line_index2 := k.line_index;
14246 l_diff_line_detail_index2 := k.line_detail_index;
14247 ELSIF (k.list_header_id = l_diff_list_header_id2)
14248 AND (k.list_line_id = l_diff_list_line_id2)
14249 AND (k.line_index = l_diff_line_index2)
14250 AND (k.line_detail_index = l_diff_line_detail_index2) THEN
14251 NULL;
14252 --if l_null_grp_cnt2 set by previous loop then add that
14253 l_passed_in_cnt3 := k.NO_OF_QUALIFIERS_IN_GRP + l_null_grp_cnt2;
14254 ELSE
14255 l_null_grp_cnt2:= 0;
14256 l_null_excl_count2 := 0;
14257 l_diff_list_header_id2 := -1976;
14258 l_diff_list_line_id2 := -1976;
14259 l_diff_line_index2 := -1976;
14260 l_diff_line_detail_index2 := -1976;
14261 l_passed_in_cnt3 := k.NO_OF_QUALIFIERS_IN_GRP;
14262 END IF;
14263
14264 --now working on setup grouping
14265 IF k.grouping_number = -1 THEN
14266 OPEN line_setup_null_group_cur(K.list_header_id,K.list_line_id);
14267 FETCH line_setup_null_group_cur INTO l_setup_grp_count2;
14268 CLOSE line_setup_null_group_cur;
14269 ELSE
14270 OPEN line_setup_null_group_cur(K.list_header_id,K.list_line_id);
14271 FETCH line_setup_null_group_cur INTO l_setup_null_grp_cnt2;
14272 CLOSE line_setup_null_group_cur;
14273
14274 OPEN line_level_setup_quals_cur(K.list_header_id,K.list_line_id,K.grouping_number);
14275 FETCH line_level_setup_quals_cur INTO l_setup_grp_count2;
14276 CLOSE line_level_setup_quals_cur;
14277
14278 l_setup_grp_count2 := l_setup_grp_count2 + l_setup_null_grp_cnt2;
14279 END IF;
14280
14281 -- Delete the no of quals where pl is a qualifier(for price lists only)
14282 OPEN line_level_setup_pl_quals_cur(K.list_header_id,K.list_line_id);
14283 FETCH line_level_setup_pl_quals_cur INTO v_price_list_count;
14284 CLOSE line_level_setup_pl_quals_cur;
14285
14286 l_setup_grp_count2 := l_setup_grp_count2 - v_price_list_count;
14287
14288 -- Init
14289 l_excluded_count :=0;
14290 --l_null_excl_count2 := 0;
14291
14292 -- Determine actual passed in count
14293 OPEN get_excluded_line_quals(k.line_index,k.list_header_id,k.list_line_id,k.grouping_number);
14294 FETCH get_excluded_line_quals into l_excluded_count;
14295 CLOSE get_excluded_line_quals;
14296
14297 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14298 engine_debug('Excluded Pure Line Level quals : '||l_excluded_count);
14299
14300 END IF;
14301 -- l_null_excl_count is applicable when NOT= is there on the NULL grouping number and that gets D_EXCL
14302 -- Then the actual passed in count will be other grp count(ex:grp no 1 ) +
14303 -- null_grp_count - l_null_excl_count
14304
14305 IF (k.grouping_number = -1 ) THEN
14306 l_null_excl_count2 := l_excluded_count;
14307 l_passed_in_cnt3 := l_passed_in_cnt3 - nvl(l_excluded_count,0);
14308 ELSE
14309 l_passed_in_cnt3 := l_passed_in_cnt3 - nvl(l_excluded_count,0) - nvl(l_null_excl_count2,0);
14310 END IF;
14311
14312 IF(l_passed_in_cnt3 >= l_setup_grp_count2) THEN
14313
14314 --check if this is a pure null grp, if no, and other
14315 --not null grps are not passed then delete them.
14316 --if yes, then approve this line (do nothing).
14317
14318 IF k.grouping_number = -1 THEN
14319 OPEN is_not_null_grp_exists(k.list_header_id,k.list_line_id);
14320 FETCH is_not_null_grp_exists into l_dummy;
14321 IF is_not_null_grp_exists%FOUND THEN
14322 --is not a pure null grp, then check if any other grp passed in
14323 OPEN is_not_null_grp_passed(k.line_index,k.list_line_id,k.list_header_id);
14324 FETCH is_not_null_grp_passed into l_dummy;
14325 IF is_not_null_grp_passed%NOTFOUND THEN
14326 --no other required grp passed
14327 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14328 engine_debug('Update #6');
14329 END IF;
14330 l_ind := l_ind+1;
14331 l_del_tbl(l_ind):= k.LINE_DETAIL_INDEX;
14332 END IF;
14333 CLOSE is_not_null_grp_passed;
14334 ELSE
14335 l_success_ind := l_success_ind+1;
14336 l_success_tbl(l_success_ind):= k.LINE_DETAIL_INDEX;
14337 END IF;
14338 CLOSE is_not_null_grp_exists;
14339 ELSE
14340 OPEN hdr_lvl_setup_quals_exist_cur(k.list_header_id);
14341 FETCH hdr_lvl_setup_quals_exist_cur into l_dummy;
14342 IF hdr_lvl_setup_quals_exist_cur%FOUND THEN
14343 OPEN header_level_quals_exist_cur(K.list_header_id,K.line_index);
14344 FETCH header_level_quals_exist_cur INTO l_dummy;
14345 --If in setup it has header level qualifier, it must fullfill the header grouping first
14346 --if this is the case, the pricing_status_code should have been updated by
14347 --previous header_level +/- line level check operation. It didn't get updated
14348 --that means no header level qualifier has passed in, hence we need to eliminate this
14349 --list line
14350 IF header_level_quals_exist_cur%NOTFOUND THEN
14351 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14352 engine_debug('--------------------------------------');
14353 engine_debug('Deleting list line id:'||K.list_line_id);
14354 engine_debug('Update #4');
14355 END IF;
14356 l_ind := l_ind+1;
14357 l_del_tbl(l_ind):= k.LINE_DETAIL_INDEX;
14358 ELSE
14359 l_success_ind := l_success_ind+1;
14360 l_success_tbl(l_success_ind):= k.LINE_DETAIL_INDEX;
14361 END IF;
14362 CLOSE header_level_quals_exist_cur;
14363 ELSE
14364 l_success_ind := l_success_ind+1;
14365 l_success_tbl(l_success_ind):= k.LINE_DETAIL_INDEX;
14366 END IF;
14367 CLOSE hdr_lvl_setup_quals_exist_cur;
14368 END IF;
14369
14370 ELSE -- Count did not match
14371 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14372 engine_debug ('Not successful on the Line Level Qualifiers Count Mismatch: ' || k.LIST_LINE_ID);
14373 engine_debug('The whole List Line is getting deleted');
14374 engine_debug('Update #5');
14375
14376 END IF;
14377 l_ind := l_ind+1;
14378 l_del_tbl(l_ind):= k.LINE_DETAIL_INDEX;
14379
14380 END IF;
14381 END LOOP; --end K loop
14382 l_status_text := '#4';
14383
14384 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14385 engine_debug('Deleted Line Details in Pure Line Grouping Table');
14386 END IF;
14387 FOR i in 1..l_del_tbl.count
14388 LOOP
14389 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14390 engine_debug('Line Detail Index: ' || l_del_tbl(i));
14391 END IF;
14392 END LOOP;
14393
14394 IF l_del_tbl.FIRST IS NOT NULL THEN
14395 FORALL i in l_del_tbl.FIRST..l_del_tbl.LAST
14396 /*
14397 INDX,QP_PREQ_GRP.perform_grouping.upd3,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
14398 */
14399 UPDATE qp_npreq_ldets_tmp --upd3
14400 SET PRICING_STATUS_CODE = G_DELETED_GRP,
14401 PRICING_STATUS_TEXT = 'Deleted in pure line grouping'
14402 WHERE line_detail_index = l_del_tbl(i);
14403
14404 /* FORALL i in l_del_tbl.FIRST..l_del_tbl.LAST
14405 UPDATE qp_npreq_line_attrs_tmp
14406 SET PRICING_STATUS_CODE = G_DELETED_GRP,
14407 PRICING_STATUS_TEXT = 'Deleted in pure line grouping'
14408 WHERE line_detail_index = l_del_tbl(i)
14409 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE; */
14410
14411 END IF;
14412
14413 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14414 engine_debug('Successful Line Details in Pure Line Grouping Table');
14415 END IF;
14416 FOR i in 1..l_success_tbl.count
14417 LOOP
14418 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14419 engine_debug('Line Detail Index: ' || l_success_tbl(i));
14420 END IF;
14421 END LOOP;
14422
14423 IF l_success_tbl.FIRST IS NOT NULL THEN
14424 FORALL i in l_success_tbl.FIRST..l_success_tbl.LAST
14425 /*
14426 INDX,QP_PREQ_GRP.perform_grouping.upd4,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
14427 */
14428 UPDATE qp_npreq_ldets_tmp --upd4
14429 SET PRICING_STATUS_CODE = G_STATUS_NEW
14430 WHERE line_detail_index = l_success_tbl(i);
14431
14432 /* FORALL i in l_success_tbl.FIRST..l_success_tbl.LAST
14433 UPDATE qp_npreq_line_attrs_tmp
14434 SET PRICING_STATUS_CODE = G_STATUS_NEW
14435 WHERE line_detail_index = l_success_tbl(i)
14436 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE; */
14437
14438 END IF;
14439
14440 l_del_tbl.delete;
14441 l_success_tbl.delete;
14442 l_ind:=0;
14443 l_success_ind:=0;
14444
14445 END IF;
14446
14447 l_status_text := '#5';
14448 -- product grouping
14449
14450 OPEN product_level_attrs_cur;
14451
14452 LOOP
14453 G_LIST_HEADER_ID_TBL_G.delete;
14454 G_LIST_LINE_ID_TBL_G.delete;
14455 G_LINE_INDEX_TBL_G.delete;
14456 G_NO_OF_PATTS_IN_GRP_TBL_G.delete;
14457
14458 FETCH product_level_attrs_cur BULK COLLECT INTO
14459 G_LIST_HEADER_ID_TBL_G
14460 , G_LIST_LINE_ID_TBL_G
14461 , G_LINE_INDEX_TBL_G
14462 , G_NO_OF_PATTS_IN_GRP_TBL_G LIMIT nROWS;
14463 EXIT WHEN G_LINE_INDEX_TBL_G.COUNT = 0;
14464
14465 IF (G_LINE_INDEX_TBL_G.COUNT > 0) THEN
14466 FOR I in G_LINE_INDEX_TBL_G.FIRST .. G_LINE_INDEX_TBL_G.LAST
14467 LOOP
14468 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14469 engine_debug('Went into product grouping');
14470
14471 END IF;
14472 OPEN get_excluded_prods_between(G_LINE_INDEX_TBL_G(I),G_LIST_HEADER_ID_TBL_G(I),G_LIST_LINE_ID_TBL_G(I));
14473 FETCH get_excluded_prods_between INTO l_excl_prod_count;
14474 CLOSE get_excluded_prods_between;
14475
14476 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14477 engine_debug('Product list line id:'||G_LIST_LINE_ID_TBL_G(I));
14478 engine_debug('Product Between Exclude Count:'||l_excl_prod_count);
14479
14480 END IF;
14481 -- If this line already got deleted as part of between , then delete this line
14482 IF (l_excl_prod_count > 0 ) THEN
14483 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14484 engine_debug('Getting Deleted in Product Grouping');
14485
14486 END IF;
14487 /*
14488 INDX,QP_PREQ_GRP.perform_grouping.upd5,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
14489 INDX,QP_PREQ_GRP.perform_grouping.upd5,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,2
14490 INDX,QP_PREQ_GRP.perform_grouping.upd5,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,3
14491 INDX,QP_PREQ_GRP.perform_grouping.upd5,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_HEADER_ID,4
14492 INDX,QP_PREQ_GRP.perform_grouping.upd5,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_LINE_ID,5
14493 */
14494 UPDATE qp_npreq_ldets_tmp --upd5
14495 SET PRICING_STATUS_CODE = G_DELETED_GRP
14496 WHERE PRICING_PHASE_ID = p_pricing_phase_id
14497 AND PRICING_STATUS_CODE = G_STATUS_NEW
14498 AND CREATED_FROM_LIST_HEADER_ID = G_LIST_HEADER_ID_TBL_G(I)
14499 AND CREATED_FROM_LIST_LINE_ID = G_LIST_LINE_ID_TBL_G(I)
14500 AND LINE_INDEX = G_LINE_INDEX_TBL_G(I);
14501
14502 /* UPDATE qp_npreq_ldets_tmp
14503 SET PRICING_STATUS_CODE = G_DELETED_GRP
14504 WHERE CREATED_FROM_LIST_LINE_ID = G_LIST_LINE_ID_TBL_G(I)
14505 AND LINE_INDEX = G_LINE_INDEX_TBL_G(I); */
14506
14507 /* UPDATE qp_npreq_line_attrs_tmp
14508 SET PRICING_STATUS_CODE = G_DELETED_GRP
14509 WHERE LIST_LINE_ID = G_LIST_LINE_ID_TBL_G(I)
14510 AND LINE_INDEX = G_LINE_INDEX_TBL_G(I); */
14511
14512 ELSE
14513 FOR j IN product_level_setup_attrs_cur(G_LIST_LINE_ID_TBL_G(I))
14514 LOOP
14515
14516 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14517 engine_debug('product level attrs no '||g_no_of_patts_in_grp_tbl_g(I));
14518 engine_debug('product level set up attrs no '||j.no_of_patts_in_grp);
14519
14520 END IF;
14521 IF (G_NO_OF_PATTS_IN_GRP_TBL_G(I) = j.NO_OF_PATTS_IN_GRP) THEN
14522 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14523 engine_debug ('Successful on the product grouping: ' || G_LIST_LINE_ID_TBL_G(I));
14524 END IF;
14525 ELSE
14526 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14527 engine_debug('Getting Deleted in Product Grouping');
14528 END IF;
14529 /*
14530 INDX,QP_PREQ_GRP.perform_grouping.upd6,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
14531 INDX,QP_PREQ_GRP.perform_grouping.upd6,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,2
14532 INDX,QP_PREQ_GRP.perform_grouping.upd6,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,3
14533 INDX,QP_PREQ_GRP.perform_grouping.upd6,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_HEADER_ID,4
14534 INDX,QP_PREQ_GRP.perform_grouping.upd6,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_LINE_ID,5
14535 */
14536 UPDATE qp_npreq_ldets_tmp --upd6
14537 SET PRICING_STATUS_CODE = G_DELETED_GRP
14538 WHERE PRICING_PHASE_ID = p_pricing_phase_id
14539 AND PRICING_STATUS_CODE = G_STATUS_NEW
14540 AND CREATED_FROM_LIST_HEADER_ID = G_LIST_HEADER_ID_TBL_G(I)
14541 AND CREATED_FROM_LIST_LINE_ID = G_LIST_LINE_ID_TBL_G(I)
14542 AND LINE_INDEX = G_LINE_INDEX_TBL_G(I);
14543
14544 /* UPDATE qp_npreq_ldets_tmp
14545 SET PRICING_STATUS_CODE = G_DELETED_GRP
14546 WHERE CREATED_FROM_LIST_LINE_ID = G_LIST_LINE_ID_TBL_G(I)
14547 AND LINE_INDEX = G_LINE_INDEX_TBL_G(I); */
14548
14549 /* UPDATE qp_npreq_line_attrs_tmp
14550 SET PRICING_STATUS_CODE = G_DELETED_GRP
14551 WHERE LIST_LINE_ID = G_LIST_LINE_ID_TBL_G(I)
14552 AND LINE_INDEX = G_LINE_INDEX_TBL_G(I); */
14553
14554 END IF;
14555 END LOOP;
14556 END IF;
14557 END LOOP;
14558 END IF;
14559
14560 END LOOP;
14561 CLOSE product_level_attrs_cur;
14562
14563 -- Update all the records with pricing_status_code= 'T' to 'N'
14564 /* UPDATE qp_npreq_line_attrs_tmp
14565 SET PRICING_STATUS_CODE = G_STATUS_NEW
14566 WHERE PRICING_STATUS_CODE = G_STATUS_NEW
14567 AND LINE_INDEX = nvl(p_line_index,LINE_INDEX);
14568
14569 --Update all the line details records with pricing_status_code = 'T' to 'N'
14570 UPDATE qp_npreq_ldets_tmp a
14571 SET PRICING_STATUS_CODE = G_STATUS_NEW
14572 WHERE PRICING_PHASE_ID = p_pricing_phase_id
14573 AND PRICING_STATUS_CODE = G_STATUS_NEW
14574 AND LINE_INDEX = nvl(p_line_index,LINE_INDEX); */
14575 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14576 engine_debug('grouping ends');
14577 END IF;
14578 qp_debug_util.tstop('PERFORM_GROUPING');
14579 EXCEPTION
14580 WHEN OTHERS THEN
14581 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14582 engine_debug(SQLERRM);
14583 END IF;
14584 x_status_code:= FND_API.G_RET_STS_ERROR;
14585 x_status_text:= 'In perform grouping '||SQLERRM||' '||l_status_text;
14586 END PERFORM_GROUPING;
14587
14588 /*+--------------------------------------------------------
14589 | PROCEDURE Update_Price_List_Information
14590 +--------------------------------------------------------
14591 */
14592
14593 PROCEDURE Update_Price_List_Information(
14594 p_freeze_override_flag IN VARCHAR2,
14595 x_status_code OUT NOCOPY VARCHAR2,
14596 x_status_text OUT NOCOPY VARCHAR2) AS
14597
14598 l_routine VARCHAR2(240):='QP_PREQ_GRP.Update_Price_List_Information';
14599
14600 BEGIN
14601
14602 --Update The Request Lines That Have
14603 --No List Header Passed , so that big search can look at it
14604 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14605 engine_debug ('In Procedure Update_Price_List_Information...');
14606 END IF;
14607 /*
14608 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel1,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
14609 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel1,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
14610 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel1,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
14611 */
14612 IF (G_PRICE_PHASE_FLAG = TRUE ) THEN -- Ravi
14613 UPDATE /*+ dynamic_sampling(1) */ qp_npreq_lines_tmp a
14614 SET processed_code = G_NO_LIST_PASSED,
14615 validated_flag = G_NO
14616 WHERE not exists (SELECT 'x'
14617 FROM qp_npreq_line_attrs_tmp b
14618 WHERE a.line_index = b.line_index
14619 AND b.context in (G_LIST_HEADER_CONTEXT,G_LIST_LINE_CONTEXT)
14620 AND b.attribute_type = G_QUALIFIER_TYPE
14621 AND b.pricing_status_code = G_STATUS_UNCHANGED)
14622 AND nvl(PROCESSED_CODE,'X') <> G_BY_ENGINE
14623 AND (price_flag = G_YES OR --[julin/4708044]
14624 (price_flag = G_PHASE AND p_freeze_override_flag = G_YES));
14625 END IF;
14626
14627 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14628 engine_debug ('after update1...');
14629 END IF;
14630
14631 /*
14632 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_upd3,qp_npreq_lines_tmp_N3,VALIDATED_FLAG,1
14633 */
14634 /*
14635 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel2,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
14636 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel2,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
14637 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel2,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
14638 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel2,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
14639 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel2,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
14640 */
14641
14642 IF (G_PRICE_PHASE_FLAG = TRUE ) THEN -- Ravi
14643
14644 --[julin/pricebook] added hint
14645 --[julin/5223502] price_list_header_id directly passed in via lines_tmp has precedence over sourced value
14646 UPDATE /*+ dynamic_sampling(1) */ qp_npreq_lines_tmp a
14647 SET (price_list_header_id,validated_flag) =
14648 (SELECT /*+ index(b QP_PREQ_LINE_ATTRS_TMP_N2) */ distinct
14649 CASE WHEN (a.PRICE_LIST_HEADER_ID < 0) THEN qp_number.canonical_to_number(value_from)
14650 ELSE a.PRICE_LIST_HEADER_ID
14651 END price_list_header_id,
14652 validated_flag
14653 FROM qp_npreq_line_attrs_tmp b
14654 WHERE a.line_index = b.line_index
14655 AND context = G_LIST_HEADER_CONTEXT
14656 AND attribute = G_PRICELIST_ATTRIBUTE
14657 AND attribute_type = G_QUALIFIER_TYPE
14658 AND pricing_status_code = G_STATUS_UNCHANGED); -- bug 3668963 - commented following 2 lines
14659 --AND a.PRICE_LIST_HEADER_ID < 0 )
14660 --WHERE a.PRICE_LIST_HEADER_ID < 0;
14661 END IF;
14662
14663 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14664 engine_debug ('after update2');
14665 END IF;
14666
14667 -- To clear the unit_price if the call is from public API
14668 IF (G_PUBLIC_API_CALL_FLAG = G_YES) THEN
14669 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14670 engine_debug('Call from Public API , Update_Price_List_Information');
14671 END IF;
14672 IF (G_PRICE_PHASE_FLAG = TRUE AND G_MANUAL_ADJUSTMENTS_CALL_FLAG = G_NO) THEN
14673 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14674 engine_debug('Trying to Update Unit Price To Null');
14675 END IF;
14676 UPDATE qp_npreq_lines_tmp a
14677 SET unit_price = NULL
14678 WHERE (price_flag = G_YES
14679 OR
14680 (price_flag = G_PHASE
14681 AND p_freeze_override_flag = G_YES))
14682 AND line_type_code <> G_ORDER_LEVEL
14683 AND list_price_override_flag = 'N';
14684 END IF;
14685 END IF;
14686
14687 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14688 engine_debug ('after update3');
14689 END IF;
14690
14691 /*
14692 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_upd4,qp_npreq_lines_tmp_N3,VALIDATED_FLAG,1
14693 */
14694 /*
14695 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel3,QP_QUALIFIERS_N7,QUALIFIER_CONTEXT,1
14696 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel3,QP_QUALIFIERS_N7,QUALIFIER_ATTRIBUTE,2
14697 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel3,QP_QUALIFIERS_N7,LIST_HEADER_ID,3
14698 */
14699 IF (G_PRICE_PHASE_FLAG = TRUE) THEN -- Ravi,
14700 UPDATE qp_npreq_lines_tmp a
14701 SET qualifiers_exist_flag = G_YES
14702 WHERE price_list_header_id IS NOT NULL
14703 AND validated_flag = G_NO
14704 AND EXISTS (SELECT 'x'
14705 FROM QP_QUALIFIERS
14706 WHERE LIST_HEADER_ID = a.PRICE_LIST_HEADER_ID
14707 AND QUALIFIER_CONTEXT <> 'MODLIST'
14708 AND QUALIFIER_ATTRIBUTE <> 'QUALIFIER_ATTRIBUTE4'
14709 AND ROWNUM = 1);
14710 /*
14711 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel4,QP_PRICING_ATTRIBUTES_N6,LIST_HEADER_ID,1
14712 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel4,QP_PRICING_ATTRIBUTES_N6,QUALIFICATION_IND,2
14713 */
14714
14715 UPDATE qp_npreq_lines_tmp a
14716 SET pricing_attrs_exist_flag = G_YES
14717 WHERE price_list_header_id IS NOT NULL
14718 AND EXISTS
14719 (SELECT 'x'
14720 FROM QP_PRICING_ATTRIBUTES
14721 WHERE LIST_HEADER_ID = a.PRICE_LIST_HEADER_ID
14722 AND QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_PRIC_IND)
14723 AND ROWNUM = 1) ;
14724 END IF;
14725 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14726 engine_debug ('after update4');
14727 END IF;
14728
14729 EXCEPTION
14730
14731 WHEN OTHERS THEN
14732 x_status_code:= FND_API.G_RET_STS_ERROR;
14733 x_status_text:= 'QP_PREQ_GRP.Update_Price_List_Information: '||SQLERRM;
14734 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14735 engine_debug(l_routine||' '||SQLERRM);
14736 END IF;
14737
14738 END Update_Price_List_Information;
14739
14740 /*+--------------------------------------------------------
14741 | PROCEDURE Update_Sec_Price_List_Info
14742 +--------------------------------------------------------
14743 */
14744 PROCEDURE Update_Sec_Price_List_Info( x_status_code OUT NOCOPY VARCHAR2,
14745 x_status_text OUT NOCOPY VARCHAR2) AS
14746
14747 l_routine VARCHAR2(240):='QP_PREQ_GRP.Update_Sec_Price_List_Info';
14748 BEGIN
14749
14750 /*
14751 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_upd1,-No Index Used-,NA,NA
14752 */
14753 /*
14754 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel1,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
14755
14756 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel1,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
14757 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
14758 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel1,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
14759 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
14760 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel1,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
14761 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel1,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
14762 */
14763 UPDATE qp_npreq_lines_tmp c
14764 SET primary_qualifiers_match_flag = 'Y'
14765 WHERE EXISTS(
14766 SELECT /*+ index(a QP_QUALIFIERS_N7) */ 'x' --bug#11924681
14767 FROM QP_QUALIFIERS a,
14768 qp_npreq_line_attrs_tmp b
14769 WHERE b.CONTEXT = a.QUALIFIER_CONTEXT
14770 AND b.ATTRIBUTE = a.QUALIFIER_ATTRIBUTE
14771 AND b.VALUE_FROM = a.QUALIFIER_ATTR_VALUE
14772 AND b.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
14773 AND a.COMPARISON_OPERATOR_CODE = '='
14774 AND b.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
14775 AND trunc(c.pricing_effective_date) BETWEEN trunc(NVL(a.START_DATE_ACTIVE, c.pricing_effective_date))
14776 AND trunc(NVL(a.END_DATE_ACTIVE,c.pricing_effective_date))
14777 AND a.LIST_HEADER_ID = c.PRICE_LIST_HEADER_ID
14778 AND a.ACTIVE_FLAG = G_YES
14779 AND b.LINE_INDEX = c.LINE_INDEX
14780 AND c.VALIDATED_FLAG = G_NO)
14781 AND c.VALIDATED_FLAG = G_NO;
14782
14783 /*
14784 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_upd2,-No Index Used-,NA,NA
14785 */
14786 /*
14787 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel2,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
14788 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel2,QP_QUALIFIERS_N1,COMPARISON_OPERATOR_CODE,4
14789
14790 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel2,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
14791 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel2,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
14792 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel2,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
14793 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel2,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
14794 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel2,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
14795 */
14796 UPDATE qp_npreq_lines_tmp c
14797 SET primary_qualifiers_match_flag = 'Y'
14798 WHERE EXISTS(
14799 SELECT 'x'
14800 FROM qp_npreq_line_attrs_tmp b ,QP_QUALIFIERS a
14801 WHERE b.CONTEXT = a.QUALIFIER_CONTEXT
14802 AND b.ATTRIBUTE = a.QUALIFIER_ATTRIBUTE
14803 AND a.COMPARISON_OPERATOR_CODE = 'BETWEEN'
14804 AND b.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
14805 AND b.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
14806 AND trunc(c.pricing_effective_date) BETWEEN NVL(a.START_DATE_ACTIVE, trunc(c.pricing_effective_date))
14807 AND NVL(a.END_DATE_ACTIVE,trunc(c.pricing_effective_date))
14808 AND a.LIST_HEADER_ID = c.PRICE_LIST_HEADER_ID
14809 AND a.ACTIVE_FLAG = G_YES
14810 AND b.LINE_INDEX = c.LINE_INDEX
14811 AND c.VALIDATED_FLAG = G_NO)
14812 AND c.VALIDATED_FLAG = G_NO ;
14813
14814 UPDATE qp_npreq_lines_tmp c
14815 SET primary_qualifiers_match_flag = 'Y'
14816 WHERE EXISTS(
14817 SELECT 'x'
14818 FROM qp_npreq_line_attrs_tmp b ,QP_QUALIFIERS a
14819 WHERE b.CONTEXT = a.QUALIFIER_CONTEXT
14820 AND b.ATTRIBUTE = a.QUALIFIER_ATTRIBUTE
14821 AND b.VALUE_FROM <> a.QUALIFIER_ATTR_VALUE
14822 AND a.COMPARISON_OPERATOR_CODE = 'NOT ='
14823 AND b.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
14824 AND b.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
14825 AND trunc(c.pricing_effective_date) BETWEEN NVL(a.START_DATE_ACTIVE, trunc(c.pricing_effective_date))
14826 AND NVL(a.END_DATE_ACTIVE,trunc(c.pricing_effective_date))
14827 AND a.LIST_HEADER_ID = c.PRICE_LIST_HEADER_ID
14828 AND a.ACTIVE_FLAG = G_YES
14829 AND b.LINE_INDEX = c.LINE_INDEX
14830 AND c.VALIDATED_FLAG = G_NO)
14831 AND c.VALIDATED_FLAG = G_NO ;
14832
14833 EXCEPTION
14834 WHEN OTHERS THEN
14835 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14836 engine_debug(l_routine||' '||SQLERRM);
14837 END IF;
14838 x_status_code := FND_API.G_RET_STS_ERROR;
14839 x_status_text := 'Error in '||l_routine||SQLERRM;
14840 END Update_Sec_Price_List_Info;
14841
14842 /*+--------------------------------------------------------
14843 | PROCEDURE Perform_Secondary_Search
14844 +--------------------------------------------------------
14845 */
14846
14847 PROCEDURE Perform_Secondary_Search(P_FREEZE_OVERRIDE_FLAG VARCHAR2,
14848 p_control_rec CONTROL_RECORD_TYPE,
14849 x_status_code OUT NOCOPY VARCHAR2,
14850 x_status_text OUT NOCOPY VARCHAR2)
14851 AS
14852
14853 /*
14854 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_QUALIFIERS_N4,QUALIFIER_CONTEXT,1
14855 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_QUALIFIERS_N4,QUALIFIER_ATTRIBUTE,2
14856 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_QUALIFIERS_N4,QUALIFIER_ATTR_VALUE,3
14857
14858 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
14859 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
14860 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
14861 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
14862 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
14863 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
14864
14865 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
14866 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
14867 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
14868 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
14869 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
14870 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,EXCLUDER_FLAG,6
14871 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,LIST_HEADER_ID,7
14872 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,LIST_LINE_ID,8
14873
14874 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
14875
14876 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
14877
14878 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
14879
14880 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_LIST_HEADERS_B_PK,LINE_TYPE_CODE,2
14881
14882 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
14883 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICE_REQ_SOURCES_PK,SOURCE_SYSTEM_CODE,2
14884
14885 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
14886 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
14887 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
14888 */
14889 CURSOR L_SEC_LIST_CUR IS
14890 SELECT /*+ ORDERED USE_NL(QPQ QPLAT_PROD QPA QPL QPH) INDEX(QPA QP_PRICING_ATTRIBUTES_N5) index(qph qp_list_headers_b_n2) l_sec_list_cur */
14891 QPLAT_PROD.LINE_INDEX,
14892 QPL.LIST_LINE_ID,
14893 QPL.ARITHMETIC_OPERATOR,
14894 QPL.OPERAND,
14895 QPL.PRICING_GROUP_SEQUENCE,
14896 QPL.LIST_LINE_TYPE_CODE,
14897 QPL.PRICING_PHASE_ID,
14898 QPL.AUTOMATIC_FLAG,
14899 QPL.INCOMPATIBILITY_GRP_CODE,
14900 QPL.PRICE_BY_FORMULA_ID,
14901 QPL.PRODUCT_PRECEDENCE,
14902 QPL.PRIMARY_UOM_FLAG,
14903 QPL.MODIFIER_LEVEL_CODE,
14904 QPL.LIST_LINE_NO,
14905 QPA.PRODUCT_UOM_CODE,
14906 QPA.EXCLUDER_FLAG,
14907 QPH.LIST_TYPE_CODE,
14908 QPH.ROUNDING_FACTOR,
14909 QPLAT_PROD.LINE_DETAIL_INDEX,
14910 QPH.LIST_HEADER_ID LIST_HEADER_ID,
14911 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
14912 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
14913 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
14914 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
14915 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
14916 QPLAT_PROD.APPLIED_FLAG,
14917 NULL PRODUCT_OPERATOR_TYPE,
14918 NULL PRICING_ATTRIBUTE_CONTEXT,
14919 NULL PRICING_ATTRIBUTE,
14920 NULL PRICING_ATTR_VALUE_FROM,
14921 NULL PRICING_SETUP_VALUE_FROM,
14922 NULL PRICING_SETUP_VALUE_TO,
14923 NULL PRICING_ATTRIBUTE_LEVEL,
14924 NULL PRICING_ATTRIBUTE_TYPE,
14925 NULL PRICING_OPERATOR_TYPE,
14926 NULL PRICING_ATTRIBUTE_DATATYPE,
14927 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
14928 NULL QUALIFIER_ATTRIBUTE,
14929 NULL QUALIFIER_ATTR_VALUE_FROM,
14930 NULL QUALIFIER_PRICING_ATTR_FLAG,
14931 to_number(NULL) QUALIFIER_GROUPING_NO,
14932 NULL QUALIFIER_DATATYPE,
14933 NULL SETUP_VALUE_FROM,
14934 NULL SETUP_VALUE_TO,
14935 NULL QUALIFIER_OPERATOR_TYPE,
14936 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE
14937 ,QPL.BREAK_UOM_CODE /* Proration */
14938 ,QPL.BREAK_UOM_CONTEXT /* Proration */
14939 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
14940 ,NULL QUALIFIER_TYPE -- 3863226
14941 ,QPLAT_PROD.DERIVED_QUALIFIER_FLAG -- Added for TCA
14942 FROM
14943 qp_npreq_lines_tmp QPLINES,
14944 QP_QUALIFIERS QPQ,
14945 qp_npreq_line_attrs_tmp QPLAT_PROD,
14946 QP_PRICING_ATTRIBUTES QPA,
14947 QP_LIST_LINES QPL,
14948 QP_LIST_HEADERS_B QPH,
14949 --QP_PRICE_REQ_SOURCES QPRS
14950 QP_PRICE_REQ_SOURCES_V QPRS /*yangli*/
14951 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
14952 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
14953 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
14954 AND QPQ.COMPARISON_OPERATOR_CODE = '='
14955 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
14956 AND QPQ.LIST_HEADER_ID = QPA.LIST_HEADER_ID
14957 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
14958 AND QPA.QUALIFICATION_IND IN ( QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_IND)
14959 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
14960 AND (QPLINES.PRICE_FLAG = G_YES
14961 OR
14962 (QPLINES.PRICE_FLAG = G_PHASE
14963 AND
14964 P_FREEZE_OVERRIDE_FLAG = G_YES))
14965 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
14966 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
14967 AND (QPLINES.VALIDATED_FLAG = G_YES --9443496
14968 OR
14969 ((QPLINES.VALIDATED_FLAG = G_NO AND --9443496
14970 QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES)
14971 OR
14972 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO) AND
14973 (G_QUALIFY_SECONDARY = G_NO
14974 OR
14975 QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_IND
14976 ))
14977 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
14978 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
14979 AND QPA.EXCLUDER_FLAG = G_NO
14980 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
14981 AND QPL.LIST_HEADER_ID = QPH.LIST_HEADER_ID
14982 --added for moac -- commented references to security profile
14983 --security will be built into qp_list_headers_b
14984 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
14985 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
14986 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
14987 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
14988 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14989 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14990 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
14991 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14992 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14993 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
14994 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
14995 -- OR
14996 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
14997 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
14998 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
14999 AND QPH.ACTIVE_FLAG = G_YES
15000 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
15001 AND QPQ.ACTIVE_FLAG = G_YES
15002 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15003 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
15004 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
15005 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
15006 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15007 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15008 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
15009 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
15010 UNION ALL
15011 SELECT /*+ ORDERED USE_NL(QPQ QPLAT_PROD QPA QPLAT_PRIC QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) index(qph qp_list_headers_b_n2) index(qplat_pric qp_preq_line_attrs_tmp_n2) l_sec_list_cur */
15012 QPLAT_PROD.LINE_INDEX,
15013 QPL.LIST_LINE_ID,
15014 QPL.ARITHMETIC_OPERATOR,
15015 QPL.OPERAND,
15016 QPL.PRICING_GROUP_SEQUENCE,
15017 QPL.LIST_LINE_TYPE_CODE,
15018 QPL.PRICING_PHASE_ID,
15019 QPL.AUTOMATIC_FLAG,
15020 QPL.INCOMPATIBILITY_GRP_CODE,
15021 QPL.PRICE_BY_FORMULA_ID,
15022 QPL.PRODUCT_PRECEDENCE,
15023 QPL.PRIMARY_UOM_FLAG,
15024 QPL.MODIFIER_LEVEL_CODE,
15025 QPL.LIST_LINE_NO,
15026 QPA.PRODUCT_UOM_CODE,
15027 QPA.EXCLUDER_FLAG,
15028 QPH.LIST_TYPE_CODE,
15029 QPH.ROUNDING_FACTOR,
15030 QPLAT_PROD.LINE_DETAIL_INDEX,
15031 QPH.LIST_HEADER_ID LIST_HEADER_ID,
15032 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
15033 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
15034 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
15035 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
15036 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
15037 QPLAT_PROD.APPLIED_FLAG,
15038 NULL PRODUCT_OPERATOR_TYPE,
15039 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
15040 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
15041 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
15042 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
15043 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
15044 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
15045 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
15046 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
15047 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
15048 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
15049 NULL QUALIFIER_ATTRIBUTE,
15050 NULL QUALIFIER_ATTR_VALUE_FROM,
15051 NULL QUALIFIER_PRICING_ATTR_FLAG,
15052 to_number(NULL) QUALIFIER_GROUPING_NO,
15053 NULL QUALIFIER_DATATYPE,
15054 NULL SETUP_VALUE_FROM,
15055 NULL SETUP_VALUE_TO,
15056 NULL QUALIFIER_OPERATOR_TYPE,
15057 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE
15058 ,QPL.BREAK_UOM_CODE /* Proration */
15059 ,QPL.BREAK_UOM_CONTEXT /* Proration */
15060 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
15061 ,NULL QUALIFIER_TYPE -- 3863226
15062 ,QPLAT_PRIC.DERIVED_QUALIFIER_FLAG -- Added for TCA
15063 FROM
15064 qp_npreq_lines_tmp qplines,
15065 QP_QUALIFIERS qpq,
15066 qp_npreq_line_attrs_tmp qplat_prod,
15067 QP_PRICING_ATTRIBUTES qpa,
15068 qp_npreq_line_attrs_tmp qplat_pric,
15069 QP_LIST_LINES qpl,
15070 QP_LIST_HEADERS_B qph,
15071 --QP_PRICE_REQ_SOURCES qprs
15072 QP_PRICE_REQ_SOURCES_V qprs /* yangli */
15073 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
15074 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
15075 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
15076 AND QPQ.COMPARISON_OPERATOR_CODE = '='
15077 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
15078 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15079 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_PRIC_IND)
15080 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
15081 AND (QPLINES.PRICE_FLAG = G_YES
15082 OR
15083 (QPLINES.PRICE_FLAG = G_PHASE
15084 AND
15085 P_FREEZE_OVERRIDE_FLAG = G_YES))
15086 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
15087 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
15088 AND ((QPLINES.VALIDATED_FLAG = G_YES
15089 OR
15090 (QPLINES.VALIDATED_FLAG = G_NO AND
15091 QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES)
15092 OR
15093 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO) AND
15094 (G_QUALIFY_SECONDARY = G_NO
15095 OR
15096 QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
15097 ))
15098 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
15099 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
15100 AND QPA.EXCLUDER_FLAG = G_NO
15101 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15102 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
15103 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
15104 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
15105 OR
15106 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
15107 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
15108 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15109 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
15110 AND QPA.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
15111 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
15112 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
15113 --added for moac -- commented references to security profile
15114 --security will be built into qp_list_headers_b
15115 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
15116 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
15117 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
15118 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15119 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15120 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15121 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15122 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15123 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15124 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
15125 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
15126 -- OR
15127 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
15128 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
15129 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
15130 AND QPH.ACTIVE_FLAG = G_YES
15131 AND QPQ.ACTIVE_FLAG = G_YES
15132 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
15133 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
15134 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15135 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
15136 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
15137 UNION ALL
15138 SELECT /*+ ORDERED USE_NL(QPQ QPLAT_PROD QPA QPL QPH) INDEX(QPA QP_PRICING_ATTRIBUTES_N5) index(qph qp_list_headers_b_n2) l_sec_list_cur */
15139 QPLAT_PROD.LINE_INDEX,
15140 QPL.LIST_LINE_ID,
15141 QPL.ARITHMETIC_OPERATOR,
15142 QPL.OPERAND,
15143 QPL.PRICING_GROUP_SEQUENCE,
15144 QPL.LIST_LINE_TYPE_CODE,
15145 QPL.PRICING_PHASE_ID,
15146 QPL.AUTOMATIC_FLAG,
15147 QPL.INCOMPATIBILITY_GRP_CODE,
15148 QPL.PRICE_BY_FORMULA_ID,
15149 QPL.PRODUCT_PRECEDENCE,
15150 QPL.PRIMARY_UOM_FLAG,
15151 QPL.MODIFIER_LEVEL_CODE,
15152 QPL.LIST_LINE_NO,
15153 QPA.PRODUCT_UOM_CODE,
15154 QPA.EXCLUDER_FLAG,
15155 QPH.LIST_TYPE_CODE,
15156 QPH.ROUNDING_FACTOR,
15157 QPLAT_PROD.LINE_DETAIL_INDEX,
15158 QPH.LIST_HEADER_ID LIST_HEADER_ID,
15159 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
15160 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
15161 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
15162 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
15163 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
15164 QPLAT_PROD.APPLIED_FLAG,
15165 NULL PRODUCT_OPERATOR_TYPE,
15166 NULL PRICING_ATTRIBUTE_CONTEXT,
15167 NULL PRICING_ATTRIBUTE,
15168 NULL PRICING_ATTR_VALUE_FROM,
15169 NULL PRICING_SETUP_VALUE_FROM,
15170 NULL PRICING_SETUP_VALUE_TO,
15171 NULL PRICING_ATTRIBUTE_LEVEL,
15172 NULL PRICING_ATTRIBUTE_TYPE,
15173 NULL PRICING_OPERATOR_TYPE,
15174 NULL PRICING_ATTRIBUTE_DATATYPE,
15175 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
15176 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
15177 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
15178 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
15179 QPSQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
15180 QPSQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
15181 QPSQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
15182 QPSQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
15183 QPSQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
15184 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE
15185 ,QPL.BREAK_UOM_CODE /* Proration */
15186 ,QPL.BREAK_UOM_CONTEXT /* Proration */
15187 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
15188 ,DECODE(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE -- 3863226
15189 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
15190 FROM
15191 qp_npreq_lines_tmp QPLINES,
15192 QP_QUALIFIERS QPQ,
15193 QP_QUALIFIERS QPSQ,
15194 qp_npreq_line_attrs_tmp QPLAT_PROD,
15195 qp_npreq_line_attrs_tmp QPLAT_Q,
15196 QP_PRICING_ATTRIBUTES QPA,
15197 QP_LIST_LINES QPL,
15198 QP_LIST_HEADERS_B QPH,
15199 --QP_PRICE_REQ_SOURCES QPRS
15200 QP_PRICE_REQ_SOURCES_V QPRS /*yangli*/
15201 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
15202 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
15203 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
15204 AND QPQ.COMPARISON_OPERATOR_CODE = '='
15205 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
15206 AND QPQ.LIST_HEADER_ID = QPA.LIST_HEADER_ID
15207 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15208 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
15209 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
15210 AND (QPLINES.PRICE_FLAG = G_YES
15211 OR
15212 (QPLINES.PRICE_FLAG = G_PHASE
15213 AND
15214 P_FREEZE_OVERRIDE_FLAG = G_YES))
15215 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
15216 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
15217 AND QPLINES.VALIDATED_FLAG = G_NO
15218 AND (QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES
15219 OR
15220 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
15221 )
15222 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
15223 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
15224 AND QPA.EXCLUDER_FLAG = G_NO
15225 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
15226 AND QPL.LIST_HEADER_ID = QPH.LIST_HEADER_ID
15227 --added for moac -- commented references to security profile
15228 --security will be built into qp_list_headers_b
15229 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
15230 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
15231 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
15232 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15233 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15234 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15235 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15236 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15237 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15238 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
15239 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
15240 -- OR
15241 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
15242 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
15243 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
15244 AND QPH.ACTIVE_FLAG = G_YES
15245 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
15246 AND QPQ.ACTIVE_FLAG = G_YES
15247 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15248 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
15249 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
15250 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
15251 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15252 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15253 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
15254 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
15255 -- 3594459, context and attribute OR'd together
15256 AND (QPSQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
15257 OR QPSQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
15258 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
15259 AND QPLAT_Q.CONTEXT = QPSQ.QUALIFIER_CONTEXT
15260 AND QPLAT_Q.ATTRIBUTE = QPSQ.QUALIFIER_ATTRIBUTE
15261 AND QPSQ.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
15262 AND QPSQ.ACTIVE_FLAG = G_YES
15263 AND ((QPLAT_Q.VALUE_FROM = QPSQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
15264 AND QPSQ.COMPARISON_OPERATOR_CODE = '=')
15265 OR (QPLAT_Q.VALUE_FROM <> QPSQ.QUALIFIER_ATTR_VALUE
15266 AND QPSQ.COMPARISON_OPERATOR_CODE = 'NOT =')
15267 OR
15268 QPSQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
15269 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
15270 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15271 NVL(QPSQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
15272 AND NVL(QPSQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
15273 AND QPLAT_PROD.LINE_INDEX = QPLAT_Q.LINE_INDEX
15274 AND QPLAT_Q. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15275 AND G_QUALIFY_SECONDARY = G_YES
15276 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
15277 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPSQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
15278 UNION ALL
15279 SELECT /*+ ORDERED USE_NL(QPQ QPLAT_PROD QPA QPLAT_PRIC QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) index(qph qp_list_headers_b_n2) index(qplat_pric qp_preq_line_attrs_tmp_n2) l_sec_list_cur */
15280 QPLAT_PROD.LINE_INDEX,
15281 QPL.LIST_LINE_ID,
15282 QPL.ARITHMETIC_OPERATOR,
15283 QPL.OPERAND,
15284 QPL.PRICING_GROUP_SEQUENCE,
15285 QPL.LIST_LINE_TYPE_CODE,
15286 QPL.PRICING_PHASE_ID,
15287 QPL.AUTOMATIC_FLAG,
15288 QPL.INCOMPATIBILITY_GRP_CODE,
15289 QPL.PRICE_BY_FORMULA_ID,
15290 QPL.PRODUCT_PRECEDENCE,
15291 QPL.PRIMARY_UOM_FLAG,
15292 QPL.MODIFIER_LEVEL_CODE,
15293 QPL.LIST_LINE_NO,
15294 QPA.PRODUCT_UOM_CODE,
15295 QPA.EXCLUDER_FLAG,
15296 QPH.LIST_TYPE_CODE,
15297 QPH.ROUNDING_FACTOR,
15298 QPLAT_PROD.LINE_DETAIL_INDEX,
15299 QPH.LIST_HEADER_ID LIST_HEADER_ID,
15300 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
15301 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
15302 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
15303 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
15304 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
15305 QPLAT_PROD.APPLIED_FLAG,
15306 NULL PRODUCT_OPERATOR_TYPE,
15307 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
15308 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
15309 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
15310 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
15311 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
15312 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
15313 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
15314 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
15315 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
15316 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
15317 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
15318 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
15319 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
15320 QPSQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
15321 QPSQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
15322 QPSQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
15323 QPSQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
15324 QPSQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
15325 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE
15326 ,QPL.BREAK_UOM_CODE /* Proration */
15327 ,QPL.BREAK_UOM_CONTEXT /* Proration */
15328 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
15329 ,DECODE(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE -- 3863226
15330 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
15331 FROM
15332 qp_npreq_lines_tmp qplines,
15333 QP_QUALIFIERS qpq,
15334 QP_QUALIFIERS qpsq,
15335 qp_npreq_line_attrs_tmp qplat_prod,
15336 QP_PRICING_ATTRIBUTES qpa,
15337 qp_npreq_line_attrs_tmp qplat_pric,
15338 qp_npreq_line_attrs_tmp qplat_q,
15339 QP_LIST_LINES qpl,
15340 QP_LIST_HEADERS_B qph,
15341 --QP_PRICE_REQ_SOURCES qprs
15342 QP_PRICE_REQ_SOURCES_V qprs /* yangli */
15343 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
15344 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
15345 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
15346 AND QPQ.COMPARISON_OPERATOR_CODE = '='
15347 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
15348 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15349 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
15350 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
15351 AND (QPLINES.PRICE_FLAG = G_YES
15352 OR
15353 (QPLINES.PRICE_FLAG = G_PHASE
15354 AND
15355 P_FREEZE_OVERRIDE_FLAG = G_YES))
15356 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
15357 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
15358 AND QPLINES.VALIDATED_FLAG = G_NO
15359 AND (QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES
15360 OR
15361 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
15362 )
15363 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
15364 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
15365 AND QPA.EXCLUDER_FLAG = G_NO
15366 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15367 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
15368 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
15369 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
15370 OR
15371 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
15372 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
15373 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15374 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
15375 AND QPA.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
15376 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
15377 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
15378 --added for moac -- commented references to security profile
15379 --security will be built into qp_list_headers_b
15380 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
15381 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
15382 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
15383 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15384 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15385 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15386 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15387 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15388 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15389 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
15390 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
15391 -- OR
15392 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
15393 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
15394 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
15395 AND QPH.ACTIVE_FLAG = G_YES
15396 AND QPQ.ACTIVE_FLAG = G_YES
15397 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
15398 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
15399 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
15400 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15401 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
15402 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
15403 -- 3594459, context and attribute OR'd together
15404 AND (QPSQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
15405 OR QPSQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
15406 AND QPLAT_Q.CONTEXT = QPSQ.QUALIFIER_CONTEXT
15407 AND QPLAT_Q.ATTRIBUTE = QPSQ.QUALIFIER_ATTRIBUTE
15408 AND QPSQ.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
15409 AND QPSQ.ACTIVE_FLAG = G_YES
15410 AND ((QPLAT_Q.VALUE_FROM = QPSQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
15411 AND QPSQ.COMPARISON_OPERATOR_CODE = '=')
15412 OR (QPLAT_Q.VALUE_FROM <> QPSQ.QUALIFIER_ATTR_VALUE
15413 AND QPSQ.COMPARISON_OPERATOR_CODE = 'NOT =')
15414 OR
15415 QPSQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
15416 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
15417 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15418 NVL(QPSQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
15419 AND NVL(QPSQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
15420 AND QPLAT_PROD.LINE_INDEX = QPLAT_Q.LINE_INDEX
15421 AND QPLAT_Q. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15422 AND G_QUALIFY_SECONDARY = G_YES
15423 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
15424 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPSQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
15425 ORDER BY 1,2;
15426
15427 -- vivek
15428 --[julin/4865213] using qp_list_headers_b_n7 instead of qp_list_headers_b_n2
15429 CURSOR L_SEC_LIST_CUR_CURRENCY IS
15430 SELECT /*+ ORDERED USE_NL(QPQ QPLAT_PROD QPA QPL QPH) INDEX(QPA QP_PRICING_ATTRIBUTES_N5) index(qph qp_list_headers_b_n7) l_sec_list_cur */
15431 QPLAT_PROD.LINE_INDEX,
15432 QPL.LIST_LINE_ID,
15433 QPL.ARITHMETIC_OPERATOR,
15434 QPL.OPERAND,
15435 QPL.PRICING_GROUP_SEQUENCE,
15436 QPL.LIST_LINE_TYPE_CODE,
15437 QPL.PRICING_PHASE_ID,
15438 QPL.AUTOMATIC_FLAG,
15439 QPL.INCOMPATIBILITY_GRP_CODE,
15440 QPL.PRICE_BY_FORMULA_ID,
15441 QPL.PRODUCT_PRECEDENCE,
15442 QPL.PRIMARY_UOM_FLAG,
15443 QPL.MODIFIER_LEVEL_CODE,
15444 QPL.LIST_LINE_NO,
15445 QPA.PRODUCT_UOM_CODE,
15446 QPA.EXCLUDER_FLAG,
15447 QPH.LIST_TYPE_CODE,
15448 /* vivek QPH.ROUNDING_FACTOR, */
15449 QCDT.ROUNDING_FACTOR, /* vivek */
15450 QPLAT_PROD.LINE_DETAIL_INDEX,
15451 QPH.LIST_HEADER_ID LIST_HEADER_ID,
15452 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
15453 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
15454 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
15455 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
15456 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
15457 QPLAT_PROD.APPLIED_FLAG,
15458 NULL PRODUCT_OPERATOR_TYPE,
15459 NULL PRICING_ATTRIBUTE_CONTEXT,
15460 NULL PRICING_ATTRIBUTE,
15461 NULL PRICING_ATTR_VALUE_FROM,
15462 NULL PRICING_SETUP_VALUE_FROM,
15463 NULL PRICING_SETUP_VALUE_TO,
15464 NULL PRICING_ATTRIBUTE_LEVEL,
15465 NULL PRICING_ATTRIBUTE_TYPE,
15466 NULL PRICING_OPERATOR_TYPE,
15467 NULL PRICING_ATTRIBUTE_DATATYPE,
15468 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
15469 NULL QUALIFIER_ATTRIBUTE,
15470 NULL QUALIFIER_ATTR_VALUE_FROM,
15471 NULL QUALIFIER_PRICING_ATTR_FLAG,
15472 to_number(NULL) QUALIFIER_GROUPING_NO,
15473 NULL QUALIFIER_DATATYPE,
15474 NULL SETUP_VALUE_FROM,
15475 NULL SETUP_VALUE_TO,
15476 NULL QUALIFIER_OPERATOR_TYPE,
15477 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
15478 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
15479 QCDT.CURRENCY_HEADER_ID, /* vivek */
15480 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
15481 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
15482 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
15483 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
15484 ,QPL.BREAK_UOM_CODE /* Proration */
15485 ,QPL.BREAK_UOM_CONTEXT /* Proration */
15486 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
15487 ,NULL QUALIFIER_TYPE -- 3863226
15488 ,QPLAT_PROD.DERIVED_QUALIFIER_FLAG -- Added for TCA
15489 FROM
15490 qp_npreq_lines_tmp QPLINES,
15491 QP_QUALIFIERS QPQ,
15492 qp_npreq_line_attrs_tmp QPLAT_PROD,
15493 QP_PRICING_ATTRIBUTES QPA,
15494 QP_LIST_LINES QPL,
15495 QP_LIST_HEADERS_B QPH,
15496 --QP_PRICE_REQ_SOURCES QPRS,
15497 QP_PRICE_REQ_SOURCES_V QPRS, /* yangli */
15498 QP_CURRENCY_DETAILS QCDT /* Vivek */
15499 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
15500 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
15501 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
15502 AND QPQ.COMPARISON_OPERATOR_CODE = '='
15503 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
15504 AND QPQ.LIST_HEADER_ID = QPA.LIST_HEADER_ID
15505 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15506 AND QPA.QUALIFICATION_IND IN ( QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_IND)
15507 AND QPA.EXCLUDER_FLAG = G_NO
15508 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
15509 AND (QPLINES.PRICE_FLAG = G_YES
15510 OR
15511 (QPLINES.PRICE_FLAG = G_PHASE
15512 AND
15513 P_FREEZE_OVERRIDE_FLAG = G_YES))
15514 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
15515 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
15516 AND ((QPLINES.VALIDATED_FLAG = G_YES
15517 OR
15518 (QPLINES.VALIDATED_FLAG = G_NO AND
15519 QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES)
15520 OR
15521 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO) AND
15522 (G_QUALIFY_SECONDARY = G_NO
15523 OR
15524 QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_IND
15525 ))
15526 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
15527 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
15528 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
15529 AND QPL.LIST_HEADER_ID = QPH.LIST_HEADER_ID
15530 --added for moac -- commented references to security profile
15531 --security will be built into qp_list_headers_b
15532 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
15533 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
15534 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
15535 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15536 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15537 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15538 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15539 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15540 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15541 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
15542 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
15543 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
15544 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15545 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15546 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15547 AND ( /* Vivek */
15548 (qcdt.curr_attribute_context is null /* Vivek */
15549 and not exists /* Vivek */
15550 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
15551 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
15552 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
15553 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
15554 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
15555 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
15556 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
15557 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
15558 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
15559 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
15560 and pa_tmp.line_index = qplines.line_index /* Vivek */
15561 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15562 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15563 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15564 ) /* Vivek */
15565 ) /* Vivek */
15566 OR /* Vivek */
15567 (qcdt.curr_attribute_context is not null /* Vivek */
15568 and qcdt.currency_detail_id = /* Vivek */
15569 (select qcdt3.currency_detail_id
15570 from qp_currency_details qcdt3 /* Vivek */
15571 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
15572 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
15573 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15574 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15575 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15576 and qcdt3.precedence =
15577 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
15578 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
15579 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
15580 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
15581 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
15582 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
15583 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
15584 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
15585 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
15586 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
15587 and pa_tmp1.line_index = qplines.line_index /* Vivek */
15588 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15589 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15590 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15591 )) /* Vivek */
15592 ) /* Vivek */
15593 ) /* Vivek */
15594 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
15595 -- OR
15596 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
15597 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
15598 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
15599 AND QPH.ACTIVE_FLAG = G_YES
15600 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
15601 AND QPQ.ACTIVE_FLAG = G_YES
15602 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15603 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
15604 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
15605 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
15606 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15607 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15608 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
15609 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
15610 UNION ALL
15611 SELECT /*+ ORDERED USE_NL(QPQ QPLAT_PROD QPA QPLAT_PRIC QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) index(qph qp_list_headers_b_n7) index(qplat_pric qp_preq_line_attrs_tmp_n2) l_sec_list_cur */
15612 QPLAT_PROD.LINE_INDEX,
15613 QPL.LIST_LINE_ID,
15614 QPL.ARITHMETIC_OPERATOR,
15615 QPL.OPERAND,
15616 QPL.PRICING_GROUP_SEQUENCE,
15617 QPL.LIST_LINE_TYPE_CODE,
15618 QPL.PRICING_PHASE_ID,
15619 QPL.AUTOMATIC_FLAG,
15620 QPL.INCOMPATIBILITY_GRP_CODE,
15621 QPL.PRICE_BY_FORMULA_ID,
15622 QPL.PRODUCT_PRECEDENCE,
15623 QPL.PRIMARY_UOM_FLAG,
15624 QPL.MODIFIER_LEVEL_CODE,
15625 QPL.LIST_LINE_NO,
15626 QPA.PRODUCT_UOM_CODE,
15627 QPA.EXCLUDER_FLAG,
15628 QPH.LIST_TYPE_CODE,
15629 /* vivek QPH.ROUNDING_FACTOR, */
15630 QCDT.ROUNDING_FACTOR, /* vivek */
15631 QPLAT_PROD.LINE_DETAIL_INDEX,
15632 QPH.LIST_HEADER_ID LIST_HEADER_ID,
15633 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
15634 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
15635 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
15636 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
15637 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
15638 QPLAT_PROD.APPLIED_FLAG,
15639 NULL PRODUCT_OPERATOR_TYPE,
15640 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
15641 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
15642 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
15643 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
15644 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
15645 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
15646 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
15647 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
15648 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
15649 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
15650 NULL QUALIFIER_ATTRIBUTE,
15651 NULL QUALIFIER_ATTR_VALUE_FROM,
15652 NULL QUALIFIER_PRICING_ATTR_FLAG,
15653 to_number(NULL) QUALIFIER_GROUPING_NO,
15654 NULL QUALIFIER_DATATYPE,
15655 NULL SETUP_VALUE_FROM,
15656 NULL SETUP_VALUE_TO,
15657 NULL QUALIFIER_OPERATOR_TYPE,
15658 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
15659 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
15660 QCDT.CURRENCY_HEADER_ID, /* vivek */
15661 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
15662 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
15663 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
15664 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
15665 ,QPL.BREAK_UOM_CODE /* Proration */
15666 ,QPL.BREAK_UOM_CONTEXT /* Proration */
15667 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
15668 ,NULL QUALIFIER_TYPE -- 3863226
15669 ,QPLAT_PRIC.DERIVED_QUALIFIER_FLAG -- Added for TCA
15670 FROM
15671 qp_npreq_lines_tmp qplines,
15672 QP_QUALIFIERS qpq,
15673 qp_npreq_line_attrs_tmp qplat_prod,
15674 QP_PRICING_ATTRIBUTES qpa,
15675 qp_npreq_line_attrs_tmp qplat_pric,
15676 QP_LIST_LINES qpl,
15677 QP_LIST_HEADERS_B qph,
15678 --QP_PRICE_REQ_SOURCES qprs,
15679 QP_PRICE_REQ_SOURCES_V qprs, /* yangli */
15680 QP_CURRENCY_DETAILS QCDT /* Vivek */
15681 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
15682 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
15683 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
15684 AND QPQ.COMPARISON_OPERATOR_CODE = '='
15685 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
15686 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15687 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_PRIC_IND)
15688 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
15689 AND (QPLINES.PRICE_FLAG = G_YES
15690 OR
15691 (QPLINES.PRICE_FLAG = G_PHASE
15692 AND
15693 P_FREEZE_OVERRIDE_FLAG = G_YES))
15694 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
15695 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
15696 AND ((QPLINES.VALIDATED_FLAG = G_YES
15697 OR
15698 (QPLINES.VALIDATED_FLAG = G_NO AND
15699 QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES)
15700 OR
15701 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO) AND
15702 (G_QUALIFY_SECONDARY = G_NO
15703 OR
15704 QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
15705 ))
15706 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
15707 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
15708 AND QPA.EXCLUDER_FLAG = G_NO
15709 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15710 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
15711 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
15712 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
15713 OR
15714 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
15715 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
15716 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15717 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
15718 AND QPA.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
15719 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
15720 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
15721 --added for moac -- commented references to security profile
15722 --security will be built into qp_list_headers_b
15723 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
15724 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
15725 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
15726 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15727 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15728 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15729 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15730 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15731 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15732 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
15733 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
15734 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
15735 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15736 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15737 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15738 AND ( /* Vivek */
15739 (qcdt.curr_attribute_context is null /* Vivek */
15740 and not exists /* Vivek */
15741 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
15742 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
15743 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
15744 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
15745 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
15746 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
15747 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
15748 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
15749 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
15750 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
15751 and pa_tmp.line_index = qplines.line_index /* Vivek */
15752 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15753 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15754 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15755 ) /* Vivek */
15756 ) /* Vivek */
15757 OR /* Vivek */
15758 (qcdt.curr_attribute_context is not null /* Vivek */
15759 and qcdt.currency_detail_id = /* Vivek */
15760 (select qcdt3.currency_detail_id
15761 from qp_currency_details qcdt3 /* Vivek */
15762 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
15763 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
15764 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15765 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15766 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15767 and qcdt3.precedence =
15768 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
15769 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
15770 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
15771 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
15772 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
15773 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
15774 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
15775 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
15776 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
15777 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
15778 and pa_tmp1.line_index = qplines.line_index /* Vivek */
15779 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15780 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15781 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15782 )) /* Vivek */
15783 ) /* Vivek */
15784 ) /* Vivek */
15785 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
15786 -- OR
15787 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
15788 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
15789 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
15790 AND QPH.ACTIVE_FLAG = G_YES
15791 AND QPQ.ACTIVE_FLAG = G_YES
15792 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
15793 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
15794 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15795 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
15796 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
15797 UNION ALL
15798 SELECT /*+ ORDERED USE_NL(QPQ QPLAT_PROD QPA QPL QPH) INDEX(QPA QP_PRICING_ATTRIBUTES_N5) index(qph qp_list_headers_b_n7) l_sec_list_cur */
15799 QPLAT_PROD.LINE_INDEX,
15800 QPL.LIST_LINE_ID,
15801 QPL.ARITHMETIC_OPERATOR,
15802 QPL.OPERAND,
15803 QPL.PRICING_GROUP_SEQUENCE,
15804 QPL.LIST_LINE_TYPE_CODE,
15805 QPL.PRICING_PHASE_ID,
15806 QPL.AUTOMATIC_FLAG,
15807 QPL.INCOMPATIBILITY_GRP_CODE,
15808 QPL.PRICE_BY_FORMULA_ID,
15809 QPL.PRODUCT_PRECEDENCE,
15810 QPL.PRIMARY_UOM_FLAG,
15811 QPL.MODIFIER_LEVEL_CODE,
15812 QPL.LIST_LINE_NO,
15813 QPA.PRODUCT_UOM_CODE,
15814 QPA.EXCLUDER_FLAG,
15815 QPH.LIST_TYPE_CODE,
15816 /* vivek QPH.ROUNDING_FACTOR, */
15817 QCDT.ROUNDING_FACTOR, /* vivek */
15818 QPLAT_PROD.LINE_DETAIL_INDEX,
15819 QPH.LIST_HEADER_ID LIST_HEADER_ID,
15820 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
15821 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
15822 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
15823 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
15824 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
15825 QPLAT_PROD.APPLIED_FLAG,
15826 NULL PRODUCT_OPERATOR_TYPE,
15827 NULL PRICING_ATTRIBUTE_CONTEXT,
15828 NULL PRICING_ATTRIBUTE,
15829 NULL PRICING_ATTR_VALUE_FROM,
15830 NULL PRICING_SETUP_VALUE_FROM,
15831 NULL PRICING_SETUP_VALUE_TO,
15832 NULL PRICING_ATTRIBUTE_LEVEL,
15833 NULL PRICING_ATTRIBUTE_TYPE,
15834 NULL PRICING_OPERATOR_TYPE,
15835 NULL PRICING_ATTRIBUTE_DATATYPE,
15836 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
15837 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
15838 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
15839 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
15840 QPSQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
15841 QPSQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
15842 QPSQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
15843 QPSQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
15844 QPSQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
15845 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
15846 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
15847 QCDT.CURRENCY_HEADER_ID, /* vivek */
15848 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
15849 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
15850 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
15851 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
15852 ,QPL.BREAK_UOM_CODE /* Proration */
15853 ,QPL.BREAK_UOM_CONTEXT /* Proration */
15854 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
15855 ,DECODE(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE --3863226
15856 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
15857 FROM
15858 qp_npreq_lines_tmp QPLINES,
15859 QP_QUALIFIERS QPQ,
15860 QP_QUALIFIERS QPSQ,
15861 qp_npreq_line_attrs_tmp QPLAT_PROD,
15862 qp_npreq_line_attrs_tmp QPLAT_Q,
15863 QP_PRICING_ATTRIBUTES QPA,
15864 QP_LIST_LINES QPL,
15865 QP_LIST_HEADERS_B QPH,
15866 --QP_PRICE_REQ_SOURCES QPRS,
15867 QP_PRICE_REQ_SOURCES_V QPRS, /* yangli */
15868 QP_CURRENCY_DETAILS QCDT /* Vivek */
15869 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
15870 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
15871 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
15872 AND QPQ.COMPARISON_OPERATOR_CODE = '='
15873 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
15874 AND QPQ.LIST_HEADER_ID = QPA.LIST_HEADER_ID
15875 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15876 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
15877 AND QPA.EXCLUDER_FLAG = G_NO
15878 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
15879 AND (QPLINES.PRICE_FLAG = G_YES
15880 OR
15881 (QPLINES.PRICE_FLAG = G_PHASE
15882 AND
15883 P_FREEZE_OVERRIDE_FLAG = G_YES))
15884 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
15885 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
15886 AND QPLINES.VALIDATED_FLAG = G_NO
15887 AND (QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES
15888 OR
15889 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
15890 )
15891 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
15892 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
15893 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
15894 AND QPL.LIST_HEADER_ID = QPH.LIST_HEADER_ID
15895 --added for moac -- commented references to security profile
15896 --security will be built into qp_list_headers_b
15897 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
15898 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
15899 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
15900 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15901 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15902 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15903 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15904 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15905 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15906 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
15907 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
15908 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
15909 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15910 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15911 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15912 AND ( /* Vivek */
15913 (qcdt.curr_attribute_context is null /* Vivek */
15914 and not exists /* Vivek */
15915 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
15916 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
15917 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
15918 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
15919 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
15920 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
15921 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
15922 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
15923 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
15924 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
15925 and pa_tmp.line_index = qplines.line_index /* Vivek */
15926 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15927 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15928 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15929 ) /* Vivek */
15930 ) /* Vivek */
15931 OR /* Vivek */
15932 (qcdt.curr_attribute_context is not null /* Vivek */
15933 and qcdt.currency_detail_id = /* Vivek */
15934 (select qcdt3.currency_detail_id
15935 from qp_currency_details qcdt3 /* Vivek */
15936 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
15937 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
15938 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15939 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15940 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15941 and qcdt3.precedence =
15942 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
15943 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
15944 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
15945 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
15946 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
15947 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
15948 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
15949 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
15950 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
15951 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
15952 and pa_tmp1.line_index = qplines.line_index /* Vivek */
15953 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15954 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15955 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15956 )) /* Vivek */
15957 ) /* Vivek */
15958 ) /* Vivek */
15959 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
15960 -- OR
15961 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
15962 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
15963 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
15964 AND QPH.ACTIVE_FLAG = G_YES
15965 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
15966 AND QPQ.ACTIVE_FLAG = G_YES
15967 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15968 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
15969 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
15970 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
15971 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15972 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15973 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
15974 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
15975 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
15976 -- 3594459, context and attribute OR'd together
15977 AND (QPSQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
15978 OR QPSQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
15979 AND QPLAT_Q.CONTEXT = QPSQ.QUALIFIER_CONTEXT
15980 AND QPLAT_Q.ATTRIBUTE = QPSQ.QUALIFIER_ATTRIBUTE
15981 AND QPSQ.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
15982 AND QPSQ.ACTIVE_FLAG = G_YES
15983 AND ((QPLAT_Q.VALUE_FROM = QPSQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
15984 AND QPSQ.COMPARISON_OPERATOR_CODE = '=')
15985 OR (QPLAT_Q.VALUE_FROM <> QPSQ.QUALIFIER_ATTR_VALUE
15986 AND QPSQ.COMPARISON_OPERATOR_CODE = 'NOT =')
15987 OR
15988 QPSQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
15989 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
15990 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15991 NVL(QPSQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
15992 AND NVL(QPSQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
15993 AND QPLAT_PROD.LINE_INDEX = QPLAT_Q.LINE_INDEX
15994 AND QPLAT_Q.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15995 AND G_QUALIFY_SECONDARY = G_YES
15996 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
15997 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPSQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
15998 UNION ALL
15999 SELECT /*+ ORDERED USE_NL(QPQ QPLAT_PROD QPA QPLAT_PRIC QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) index(qph qp_list_headers_b_n7) index(qplat_pric qp_preq_line_attrs_tmp_n2) l_sec_list_cur */
16000 QPLAT_PROD.LINE_INDEX,
16001 QPL.LIST_LINE_ID,
16002 QPL.ARITHMETIC_OPERATOR,
16003 QPL.OPERAND,
16004 QPL.PRICING_GROUP_SEQUENCE,
16005 QPL.LIST_LINE_TYPE_CODE,
16006 QPL.PRICING_PHASE_ID,
16007 QPL.AUTOMATIC_FLAG,
16008 QPL.INCOMPATIBILITY_GRP_CODE,
16009 QPL.PRICE_BY_FORMULA_ID,
16010 QPL.PRODUCT_PRECEDENCE,
16011 QPL.PRIMARY_UOM_FLAG,
16012 QPL.MODIFIER_LEVEL_CODE,
16013 QPL.LIST_LINE_NO,
16014 QPA.PRODUCT_UOM_CODE,
16015 QPA.EXCLUDER_FLAG,
16016 QPH.LIST_TYPE_CODE,
16017 /* vivek QPH.ROUNDING_FACTOR, */
16018 QCDT.ROUNDING_FACTOR, /* vivek */
16019 QPLAT_PROD.LINE_DETAIL_INDEX,
16020 QPH.LIST_HEADER_ID LIST_HEADER_ID,
16021 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
16022 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
16023 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
16024 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
16025 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
16026 QPLAT_PROD.APPLIED_FLAG,
16027 NULL PRODUCT_OPERATOR_TYPE,
16028 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
16029 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
16030 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
16031 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
16032 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
16033 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
16034 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
16035 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
16036 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
16037 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
16038 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
16039 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
16040 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
16041 QPSQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
16042 QPSQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
16043 QPSQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
16044 QPSQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
16045 QPSQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
16046 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
16047 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
16048 QCDT.CURRENCY_HEADER_ID, /* vivek */
16049 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
16050 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
16051 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
16052 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
16053 ,QPL.BREAK_UOM_CODE /* Proration */
16054 ,QPL.BREAK_UOM_CONTEXT /* Proration */
16055 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
16056 ,DECODE(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE --3863226
16057 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
16058 FROM
16059 qp_npreq_lines_tmp qplines,
16060 QP_QUALIFIERS qpq,
16061 QP_QUALIFIERS qpsq,
16062 qp_npreq_line_attrs_tmp qplat_prod,
16063 QP_PRICING_ATTRIBUTES qpa,
16064 qp_npreq_line_attrs_tmp qplat_pric,
16065 qp_npreq_line_attrs_tmp qplat_q,
16066 QP_LIST_LINES qpl,
16067 QP_LIST_HEADERS_B qph,
16068 --QP_PRICE_REQ_SOURCES qprs,
16069 QP_PRICE_REQ_SOURCES_V qprs, /* yangli */
16070 QP_CURRENCY_DETAILS QCDT /* Vivek */
16071 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
16072 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
16073 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
16074 AND QPQ.COMPARISON_OPERATOR_CODE = '='
16075 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
16076 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
16077 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
16078 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
16079 AND (QPLINES.PRICE_FLAG = G_YES
16080 OR
16081 (QPLINES.PRICE_FLAG = G_PHASE
16082 AND
16083 P_FREEZE_OVERRIDE_FLAG = G_YES))
16084 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
16085 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
16086 AND QPLINES.VALIDATED_FLAG = G_NO
16087 AND (QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES
16088 OR
16089 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
16090 )
16091 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
16092 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
16093 AND QPA.EXCLUDER_FLAG = G_NO
16094 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
16095 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
16096 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
16097 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
16098 OR
16099 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
16100 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
16101 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
16102 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
16103 AND QPA.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
16104 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
16105 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
16106 --added for moac -- commented references to security profile
16107 --security will be built into qp_list_headers_b
16108 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
16109 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
16110 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
16111 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
16112 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
16113 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
16114 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
16115 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
16116 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
16117 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
16118 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
16119 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
16120 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
16121 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
16122 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
16123 AND ( /* Vivek */
16124 (qcdt.curr_attribute_context is null /* Vivek */
16125 and not exists /* Vivek */
16126 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
16127 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
16128 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
16129 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
16130 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
16131 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
16132 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
16133 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
16134 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
16135 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
16136 and pa_tmp.line_index = qplines.line_index /* Vivek */
16137 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
16138 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
16139 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
16140 ) /* Vivek */
16141 ) /* Vivek */
16142 OR /* Vivek */
16143 (qcdt.curr_attribute_context is not null /* Vivek */
16144 and qcdt.currency_detail_id = /* Vivek */
16145 (select qcdt3.currency_detail_id
16146 from qp_currency_details qcdt3 /* Vivek */
16147 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
16148 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
16149 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
16150 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
16151 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
16152 and qcdt3.precedence =
16153 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
16154 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
16155 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
16156 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
16157 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
16158 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
16159 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
16160 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
16161 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
16162 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
16163 and pa_tmp1.line_index = qplines.line_index /* Vivek */
16164 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
16165 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
16166 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
16167 )) /* Vivek */
16168 ) /* Vivek */
16169 ) /* Vivek */
16170 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
16171 -- OR
16172 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
16173 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
16174 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
16175 AND QPH.ACTIVE_FLAG = G_YES
16176 AND QPQ.ACTIVE_FLAG = G_YES
16177 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
16178 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
16179 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
16180 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
16181 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
16182 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
16183 -- 3594459, context and attribute OR'd together
16184 AND (QPSQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
16185 OR QPSQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
16186 AND QPLAT_Q.CONTEXT = QPSQ.QUALIFIER_CONTEXT
16187 AND QPLAT_Q.ATTRIBUTE = QPSQ.QUALIFIER_ATTRIBUTE
16188 AND QPSQ.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
16189 AND QPSQ.ACTIVE_FLAG = G_YES
16190 AND ((QPLAT_Q.VALUE_FROM = QPSQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
16191 AND QPSQ.COMPARISON_OPERATOR_CODE = '=')
16192 OR (QPLAT_Q.VALUE_FROM <> QPSQ.QUALIFIER_ATTR_VALUE
16193 AND QPSQ.COMPARISON_OPERATOR_CODE = 'NOT =')
16194 OR
16195 QPSQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
16196 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
16197 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
16198 NVL(QPSQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
16199 AND NVL(QPSQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
16200 AND QPLAT_PROD.LINE_INDEX = QPLAT_Q.LINE_INDEX
16201 AND QPLAT_Q.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
16202 AND G_QUALIFY_SECONDARY = G_YES
16203 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
16204 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPSQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
16205 ORDER BY 1,2;
16206
16207 /*
16208 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
16209 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,PRICING_PHASE_ID,2
16210 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,ASK_FOR_FLAG,3
16211 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,CREATED_FROM_LIST_LINE_TYPE,4
16212 */
16213 CURSOR l_chk_deleted_pbh_cur(p_line_index IN PLS_INTEGER,
16214 p_pricing_phase_id NUMBER) IS
16215 SELECT /*+ INDEX(qp_npreq_ldets_tmp QP_PREQ_LDETS_TMP_N2) */ 'X' --bug 14464004
16216 FROM qp_npreq_ldets_tmp
16217 WHERE created_from_list_line_type = G_PRICE_BREAK_TYPE
16218 AND line_index = p_line_index
16219 AND pricing_phase_id = p_pricing_phase_id
16220 AND pricing_status_code <> G_STATUS_NEW;
16221
16222 l_h_line_index_tbl NUMBER_TYPE;
16223 l_h_list_line_id_tbl NUMBER_TYPE;
16224 l_h_arithmetic_operator_tbl VARCHAR_30_TYPE;
16225 l_h_operand_tbl NUMBER_TYPE;
16226 l_h_pric_group_sequence_tbl NUMBER_TYPE;
16227 l_h_list_line_type_code_tbl VARCHAR_30_TYPE;
16228 l_h_pric_phase_id_tbl NUMBER_TYPE;
16229 l_h_automatic_flag_tbl FLAG_TYPE;
16230 l_h_incompat_grp_code_tbl VARCHAR_30_TYPE;
16231 l_h_price_by_formula_id_tbl NUMBER_TYPE;
16232 l_h_prod_precedence_tbl NUMBER_TYPE;
16233 l_h_primary_uom_flag_tbl FLAG_TYPE;
16234 l_h_modifier_level_code_tbl VARCHAR_30_TYPE;
16235 l_h_list_line_no_tbl VARCHAR_30_TYPE;
16236 l_h_prod_uom_code_tbl VARCHAR_30_TYPE;
16237 l_h_excluder_flag_tbl FLAG_TYPE;
16238 l_h_list_type_code_tbl VARCHAR_30_TYPE;
16239 l_h_rounding_factor_tbl NUMBER_TYPE;
16240 l_h_line_detail_index_tbl NUMBER_TYPE;
16241 l_h_list_header_id_tbl NUMBER_TYPE;
16242 l_h_prod_attr_context_tbl VARCHAR_30_TYPE;
16243 l_h_prod_attr_tbl VARCHAR_30_TYPE;
16244 l_h_prod_attr_val_from_tbl VARCHAR_TYPE;
16245 l_h_prod_attr_level_tbl VARCHAR_30_TYPE;
16246 l_h_prod_attr_type_tbl VARCHAR_30_TYPE;
16247 l_h_applied_flag_tbl FLAG_TYPE;
16248 l_h_prod_operator_type_tbl VARCHAR_30_TYPE;
16249 l_h_pric_attr_context_tbl VARCHAR_30_TYPE;
16250 l_h_pric_attr_tbl VARCHAR_30_TYPE;
16251 l_h_pric_attr_value_from_tbl VARCHAR_TYPE;
16252 l_h_pric_setup_value_from_tbl VARCHAR_TYPE;
16253 l_h_pric_setup_value_to_tbl VARCHAR_TYPE;
16254 l_h_pric_attr_level_tbl VARCHAR_30_TYPE;
16255 l_h_pric_attr_type_tbl VARCHAR_30_TYPE;
16256 l_h_pric_operator_type_tbl VARCHAR_30_TYPE;
16257 l_h_pric_attr_datatype_tbl VARCHAR_30_TYPE;
16258 l_h_qual_attr_context_tbl VARCHAR_30_TYPE;
16259 l_h_qual_attr_tbl VARCHAR_30_TYPE;
16260 l_h_qual_attr_value_from_tbl VARCHAR_TYPE;
16261 l_h_qual_pric_attr_flag_tbl FLAG_TYPE;
16262 l_h_qual_grouping_no_tbl NUMBER_TYPE;
16263 l_h_qual_datatype_tbl VARCHAR_30_TYPE;
16264 l_h_setup_value_from_tbl VARCHAR_TYPE;
16265 l_h_setup_value_to_tbl VARCHAR_TYPE;
16266 l_h_qual_operator_type_tbl VARCHAR_30_TYPE;
16267 l_h_qual_precedence_tbl NUMBER_TYPE;
16268 l_h_break_uom_code_tbl VARCHAR_30_TYPE; /* proration */
16269 l_h_break_uom_context_tbl VARCHAR_30_TYPE; /* proration */
16270 l_h_break_uom_attr_tbl VARCHAR_30_TYPE; /* proration */
16271 l_h_qual_type_tbl VARCHAR_30_TYPE; -- 3863226
16272 l_h_derived_qualifier_flag_tbl FLAG_TYPE; -- Added for TCA
16273
16274 l_h_currency_detail_id_tbl NUMBER_TYPE;
16275 l_h_currency_header_id_tbl NUMBER_TYPE;
16276 l_h_sell_rounding_factor_tbl NUMBER_TYPE;
16277 l_h_order_currency_tbl VARCHAR_30_TYPE;
16278 l_h_pric_effective_date_tbl DATE_TYPE;
16279 l_h_base_currency_code_tbl VARCHAR_30_TYPE;
16280
16281 l_loop_count NUMBER := 0;
16282 l_list_price NUMBER;
16283 l_percent_price NUMBER;
16284 l_list_line_type_code VARCHAR2(30);
16285 v_list_header_id NUMBER;
16286 l_line_detail_index NUMBER;
16287 l_status_code VARCHAR2(30);
16288 l_status_text VARCHAR2(240);
16289 l_list_line_id NUMBER;
16290 l_dummy VARCHAR2(1);
16291 l_routine VARCHAR2(240):='QP_PREQ_GRP.SECONDARY_LIST_HEADER_SEARCH';
16292 M PLS_INTEGER:=1;
16293 D PLS_INTEGER:=1;
16294 ls_line_index NUMBER := -9999;
16295 ls_list_line_id NUMBER := -9999;
16296
16297 l_use_multi_currency VARCHAR2(1);
16298
16299 E_ROUTINE_ERRORS EXCEPTION;
16300 BEGIN
16301 qp_debug_util.tstart('PERFORM_SECONDARY_SEARCH','Performing Secondary Price List Search');
16302 -- G_QUALIFY_SECONDARY := NVL(FND_PROFILE.VALUE('QP_QUALIFY_SECONDARY_PRICE_LISTS'),'N');--profile option
16303 -- Update the price list id , validated flag , and primary_qualifiers_match flag for sec search
16304 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN --4033618
16305 engine_debug ('QP_QUALIFY_SECONDARY_PRICE_LISTS:' || G_QUALIFY_SECONDARY);
16306 END IF;
16307
16308
16309 Update_Sec_Price_List_Info(l_status_code,l_status_text);
16310 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
16311 RAISE E_ROUTINE_ERRORS;
16312 END IF;
16313
16314 -- julin [3805113]: prepare global tables for INSERT_LDETS2
16315 G_LINE_DETAIL_INDEX_TBL.delete;
16316 G_LINE_DETAIL_TYPE_CODE_TBL.delete;
16317 G_LINE_INDEX_TBL.delete;
16318 G_LIST_HEADER_ID_TBL.delete;
16319 G_LIST_LINE_ID_TBL.delete;
16320 G_LIST_LINE_TYPE_TBL.delete;
16321 G_CREATED_FROM_SQL_TBL.delete;
16322 G_PRICING_GROUP_SEQUENCE_TBL.delete;
16323 G_OPERAND_CALCULATION_CODE_TBL.delete;
16324 G_OPERAND_VALUE_TBL.delete;
16325 G_PRICING_PHASE_ID_TBL.delete;
16326 G_LIST_TYPE_CODE_TBL.delete;
16327 G_PRICING_STATUS_CODE_TBL.delete;
16328 G_PROCESSED_FLAG_TBL.delete;
16329 G_AUTOMATIC_FLAG_TBL.delete;
16330 G_MODIFIER_LEVEL_CODE_TBL.delete;
16331 G_LIST_LINE_NO_TBL.delete;
16332 G_INCOMP_GRP_CODE_TBL.delete;
16333 G_PRICE_FORMULA_ID_TBL.delete;
16334 G_PRODUCT_PRECEDENCE_TBL.delete;
16335 G_PRIMARY_UOM_FLAG_TBL.delete;
16336 G_ROUNDING_FACTOR_TBL.delete;
16337 G_SECONDARY_PRICELIST_IND_TBL.delete;
16338 G_CURRENCY_DETAIL_ID_TBL.delete;
16339 G_CURRENCY_HEADER_ID_TBL.delete;
16340 G_SELLING_ROUNDING_TBL.delete;
16341 G_ORDER_CURRENCY_TBL.delete;
16342 G_PRICING_EFFECTIVE_DATE_TBL.delete;
16343 G_BASE_CURRENCY_CODE_TBL.delete;
16344 G_BREAK_UOM_TBL.delete;
16345 G_BREAK_CONTEXT_TBL.delete;
16346 G_BREAK_ATTRIBUTE_TBL.delete;
16347
16348 -- julin [3805113]: prepare global tables for INSERT_PRICE_LIST_ATTRS
16349 G_LINE_INDEX_TBL_A.delete;
16350 G_LINE_DETAIL_INDEX_TBL_A.delete;
16351 G_ATTRIBUTE_LEVEL_tbl.delete;
16352 G_ATTRIBUTE_TYPE_tbl.delete;
16353 G_LIST_HEADER_ID_TBL_A.delete;
16354 G_LIST_LINE_ID_TBL_A.delete;
16355 G_CONTEXT_tbl.delete;
16356 G_ATTRIBUTE_tbl.delete;
16357 G_VALUE_FROM_tbl.delete;
16358 G_SETUP_VALUE_FROM_tbl.delete;
16359 G_SETUP_VALUE_TO_tbl.delete;
16360 G_GROUPING_NUMBER_tbl.delete;
16361 G_COMPARISON_OPERATOR_TYPE_tbl.delete;
16362 G_VALIDATED_FLAG_tbl.delete;
16363 G_APPLIED_FLAG_tbl.delete;
16364 G_PRICING_STATUS_CODE_TBL_Q.delete;
16365 G_PRICING_STATUS_TEXT_tbl.delete;
16366 G_QUALIFIER_PRECEDENCE_TBL.delete;
16367 G_DATATYPE_tbl.delete;
16368 G_PRICING_ATTR_FLAG_tbl.delete;
16369 G_QUALIFIER_TYPE_TBL.delete;
16370 G_PRODUCT_UOM_CODE_TBL.delete;
16371 G_EXCLUDER_FLAG_TBL.delete;
16372 G_PRICING_PHASE_ID_TBL_A.delete;
16373 G_INCOMP_GRP_CODE_TBL_A.delete;
16374 G_LINE_DETAIL_TYPE_CODE_TBL_A.delete;
16375 G_MODIFIER_LEVEL_CODE_TBL_A.delete;
16376 G_PRIMARY_UOM_FLAG_TBL_A.delete;
16377
16378 -- julin [3805113]: bulk fetch
16379 IF G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
16380 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16381 engine_debug('cursor l_sec_list_cur_currency-multi-currency TRUE');
16382 END IF;
16383 l_use_multi_currency := 'Y';
16384 qp_debug_util.tstart('L_SEC_LIST_CUR_CURRENCY','CURSOR LOOP L_SEC_LIST_CUR_CURRENCY');
16385 OPEN l_sec_list_cur_currency;
16386 ELSE
16387 qp_debug_util.tstart('L_USE_MULTI_CURRENCY','CURSOR LOOP L_USE_MULTI_CURRENCY');
16388 l_use_multi_currency := 'N';
16389 OPEN l_sec_list_cur;
16390 END IF;
16391 qp_debug_util.tstart('L_SEC_LIST_CUR/CURRENCY_FETCH','CURSOR LOOP L_SEC_LIST_CUR/CURRENCY_FETCH');
16392 LOOP
16393 IF l_use_multi_currency = 'Y' THEN
16394 FETCH l_sec_list_cur_currency BULK COLLECT INTO
16395 l_h_line_index_tbl,
16396 l_h_list_line_id_tbl,
16397 l_h_arithmetic_operator_tbl,
16398 l_h_operand_tbl,
16399 l_h_pric_group_sequence_tbl,
16400 l_h_list_line_type_code_tbl,
16401 l_h_pric_phase_id_tbl,
16402 l_h_automatic_flag_tbl,
16403 l_h_incompat_grp_code_tbl,
16404 l_h_price_by_formula_id_tbl,
16405 l_h_prod_precedence_tbl,
16406 l_h_primary_uom_flag_tbl,
16407 l_h_modifier_level_code_tbl,
16408 l_h_list_line_no_tbl,
16409 l_h_prod_uom_code_tbl,
16410 l_h_excluder_flag_tbl,
16411 l_h_list_type_code_tbl,
16412 l_h_rounding_factor_tbl,
16413 l_h_line_detail_index_tbl,
16414 l_h_list_header_id_tbl,
16415 l_h_prod_attr_context_tbl,
16416 l_h_prod_attr_tbl,
16417 l_h_prod_attr_val_from_tbl,
16418 l_h_prod_attr_level_tbl,
16419 l_h_prod_attr_type_tbl,
16420 l_h_applied_flag_tbl,
16421 l_h_prod_operator_type_tbl,
16422 l_h_pric_attr_context_tbl,
16423 l_h_pric_attr_tbl,
16424 l_h_pric_attr_value_from_tbl,
16425 l_h_pric_setup_value_from_tbl,
16426 l_h_pric_setup_value_to_tbl,
16427 l_h_pric_attr_level_tbl,
16428 l_h_pric_attr_type_tbl,
16429 l_h_pric_operator_type_tbl,
16430 l_h_pric_attr_datatype_tbl,
16431 l_h_qual_attr_context_tbl,
16432 l_h_qual_attr_tbl,
16433 l_h_qual_attr_value_from_tbl,
16434 l_h_qual_pric_attr_flag_tbl,
16435 l_h_qual_grouping_no_tbl,
16436 l_h_qual_datatype_tbl,
16437 l_h_setup_value_from_tbl,
16438 l_h_setup_value_to_tbl,
16439 l_h_qual_operator_type_tbl,
16440 l_h_qual_precedence_tbl,
16441 l_h_currency_detail_id_tbl,
16442 l_h_currency_header_id_tbl,
16443 l_h_sell_rounding_factor_tbl,
16444 l_h_order_currency_tbl,
16445 l_h_pric_effective_date_tbl,
16446 l_h_base_currency_code_tbl,
16447 l_h_break_uom_code_tbl,
16448 l_h_break_uom_context_tbl,
16449 l_h_break_uom_attr_tbl,
16450 l_h_qual_type_tbl,
16451 l_h_derived_qualifier_flag_tbl -- Added for TCA
16452 LIMIT G_BATCH_SIZE_1;
16453 EXIT WHEN l_h_line_index_tbl.COUNT = 0;
16454
16455 FOR I in l_h_line_index_tbl.first .. l_h_line_index_tbl.last
16456 LOOP
16457 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16458 engine_debug('item found in secondary list');
16459 END IF;
16460 IF (ls_line_index <> l_h_line_index_tbl(I) OR ls_list_line_id <> l_h_list_line_id_tbl(I)) THEN
16461 l_line_detail_index := GET_LINE_DETAIL_INDEX;
16462 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16463 engine_debug('Inserting Secondary Price List Detail');
16464 END IF;
16465 G_LINE_DETAIL_INDEX_TBL(D) := l_line_detail_index;
16466 G_LINE_DETAIL_TYPE_CODE_TBL(D) := 'NULL';
16467 G_LINE_INDEX_TBL(D) := l_h_LINE_INDEX_tbl(I);
16468 G_LIST_HEADER_ID_TBL(D) := l_h_LIST_HEADER_ID_tbl(I);
16469 G_LIST_LINE_ID_TBL(D) := l_h_LIST_LINE_ID_tbl(I);
16470 G_LIST_LINE_TYPE_TBL(D) := l_h_LIST_LINE_TYPE_CODE_tbl(I);
16471 G_CREATED_FROM_SQL_TBL(D) := 'LHS_SECONDARY_PRICE_LIST' ; -- nth sec price list
16472 G_PRICING_GROUP_SEQUENCE_TBL(D) := l_h_pric_GROUP_SEQUENCE_tbl(I);
16473 G_OPERAND_CALCULATION_CODE_TBL(D) := l_h_ARITHMETIC_OPERATOR_tbl(I);
16474 G_OPERAND_VALUE_TBL(D) := l_h_OPERAND_tbl(I);
16475 G_PRICING_PHASE_ID_TBL(D) := l_h_pric_PHASE_ID_tbl(I);
16476 G_LIST_TYPE_CODE_TBL(D) := l_h_LIST_TYPE_CODE_tbl(I);
16477 G_PRICING_STATUS_CODE_TBL(D) := G_STATUS_NEW;
16478 G_PROCESSED_FLAG_TBL(D) := G_NOT_PROCESSED;
16479 G_AUTOMATIC_FLAG_TBL(D) := l_h_AUTOMATIC_FLAG_tbl(I);
16480 G_MODIFIER_LEVEL_CODE_TBL(D) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16481 G_LIST_LINE_NO_TBL(D) := l_h_LIST_LINE_NO_tbl(I);
16482 G_INCOMP_GRP_CODE_TBL(D) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16483 G_PRICE_FORMULA_ID_TBL(D) := l_h_PRICE_BY_FORMULA_ID_tbl(I);
16484 G_PRODUCT_PRECEDENCE_TBL(D) := l_h_prod_PRECEDENCE_tbl(I);
16485 G_PRIMARY_UOM_FLAG_TBL(D) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16486 G_ROUNDING_FACTOR_TBL(D) := l_h_ROUNDING_FACTOR_tbl(I);
16487 G_SECONDARY_PRICELIST_IND_TBL(D) := G_YES;
16488 G_CURRENCY_DETAIL_ID_TBL(D) := l_h_CURRENCY_DETAIL_ID_tbl(I); /*vivek */
16489 G_CURRENCY_HEADER_ID_TBL(D) := l_h_CURRENCY_HEADER_ID_tbl(I); /*vivek */
16490 G_SELLING_ROUNDING_TBL(D) := l_h_SELL_ROUNDING_FACTOR_tbl(I); /*vivek */
16491 G_ORDER_CURRENCY_TBL(D) := l_h_ORDER_CURRENCY_tbl(I); /*vivek */
16492 G_PRICING_EFFECTIVE_DATE_TBL(D) := l_h_pric_EFFECTIVE_DATE_tbl(I);/*vivek */
16493 G_BASE_CURRENCY_CODE_TBL(D) := l_h_BASE_CURRENCY_CODE_tbl(I);/*vivek */
16494 G_BREAK_UOM_TBL(D) := l_h_BREAK_UOM_CODE_tbl(I); /* Proration */
16495 G_BREAK_CONTEXT_TBL(D) := l_h_BREAK_UOM_CONTEXT_tbl(I); /* Proration */
16496 G_BREAK_ATTRIBUTE_TBL(D) := l_h_BREAK_UOM_ATTR_tbl(I); /* Proration */
16497 D := D + 1;
16498
16499 ls_line_index := l_h_line_index_tbl(I);
16500 ls_list_line_id := l_h_list_line_id_tbl(I);
16501 END IF;
16502
16503 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16504 engine_debug('----BEFORE INSERTING SECONDARY PRODUCT ATTRS -------');
16505 engine_debug('Qualifier Precedence : ' || l_h_qual_precedence_tbl(I));
16506 END IF;
16507
16508 --INSERT PRODUCT ATTRIBUTES
16509 G_LINE_INDEX_TBL_A(M) := l_h_LINE_INDEX_tbl(I);
16510 G_LINE_DETAIL_INDEX_TBL_A(M) := L_LINE_DETAIL_INDEX;
16511 G_ATTRIBUTE_LEVEL_tbl(M) := l_h_prod_ATTR_LEVEL_tbl(I);
16512 G_ATTRIBUTE_TYPE_tbl(M) := l_h_prod_ATTR_TYPE_tbl(I);
16513 G_LIST_HEADER_ID_TBL_A(M) := l_h_LIST_HEADER_ID_tbl(I);
16514 G_LIST_LINE_ID_TBL_A(M) := l_h_LIST_LINE_ID_tbl(I);
16515 G_CONTEXT_tbl(M) := l_h_prod_ATTR_CONTEXT_tbl(I);
16516 G_ATTRIBUTE_tbl(M) := l_h_prod_ATTR_tbl(I);
16517 G_VALUE_FROM_tbl(M) := l_h_prod_attr_val_from_tbl(I);
16518 G_SETUP_VALUE_FROM_tbl(M) := NULL;
16519 G_SETUP_VALUE_TO_tbl(M) := NULL;
16520 G_GROUPING_NUMBER_tbl(M) := NULL;
16521 G_COMPARISON_OPERATOR_TYPE_tbl(M) := l_h_prod_OPERATOR_TYPE_tbl(I);
16522 G_VALIDATED_FLAG_tbl(M) := NULL;
16523 G_APPLIED_FLAG_tbl(M) := l_h_APPLIED_FLAG_tbl(I);
16524 G_PRICING_STATUS_CODE_TBL_Q(M) := G_STATUS_NEW;
16525 G_PRICING_STATUS_TEXT_tbl(M) := 'INSERTED IN SECONDARY LIST HEADER SEARCH';
16526 G_QUALIFIER_PRECEDENCE_TBL(M) := l_h_qual_PRECEDENCE_tbl(I);
16527 G_DATATYPE_tbl(M) := NULL;
16528 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
16529 G_QUALIFIER_TYPE_TBL(M) := NULL;
16530 G_PRODUCT_UOM_CODE_TBL(M) := l_h_prod_UOM_CODE_tbl(I);
16531 G_EXCLUDER_FLAG_TBL(M) := l_h_EXCLUDER_FLAG_tbl(I);
16532 G_PRICING_PHASE_ID_TBL_A(M) := l_h_pric_PHASE_ID_tbl(I);
16533 G_INCOMP_GRP_CODE_TBL_A(M) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16534 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
16535 G_MODIFIER_LEVEL_CODE_TBL_A(M) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16536 G_PRIMARY_UOM_FLAG_TBL_A(M) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16537 M:= M+1;
16538
16539 --INSERT PRICING ATTRIBUTES
16540 IF (l_h_pric_ATTR_CONTEXT_tbl(I) IS NOT NULL) THEN
16541 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16542 engine_debug('----BEFORE INSERTING SECONDARY PRICING ATTRS -------');
16543 END IF;
16544 G_LINE_INDEX_TBL_A(M) := l_h_LINE_INDEX_tbl(I);
16545 G_LINE_DETAIL_INDEX_TBL_A(M) := L_LINE_DETAIL_INDEX;
16546 G_ATTRIBUTE_LEVEL_tbl(M) := l_h_pric_ATTR_LEVEL_tbl(I);
16547 G_ATTRIBUTE_TYPE_tbl(M) := l_h_pric_ATTR_TYPE_tbl(I);
16548 G_LIST_HEADER_ID_TBL_A(M) := l_h_LIST_HEADER_ID_tbl(I);
16549 G_LIST_LINE_ID_TBL_A(M) := l_h_LIST_LINE_ID_tbl(I);
16550 G_CONTEXT_tbl(M) := l_h_pric_ATTR_CONTEXT_tbl(I);
16551 G_ATTRIBUTE_tbl(M) := l_h_pric_ATTR_tbl(I);
16552 G_VALUE_FROM_tbl(M) := l_h_pric_ATTR_VALUE_FROM_tbl(I);
16553 G_SETUP_VALUE_FROM_tbl(M) := l_h_pric_SETUP_VALUE_FROM_tbl(I);
16554 G_SETUP_VALUE_TO_tbl(M) := l_h_pric_SETUP_VALUE_TO_tbl(I);
16555 G_GROUPING_NUMBER_tbl(M) := NULL;
16556 G_COMPARISON_OPERATOR_TYPE_tbl(M):= l_h_pric_OPERATOR_TYPE_tbl(I);
16557 G_VALIDATED_FLAG_tbl(M) := NULL;
16558 G_APPLIED_FLAG_tbl(M) := l_h_APPLIED_FLAG_tbl(I);
16559 G_PRICING_STATUS_CODE_TBL_Q(M) := G_STATUS_NEW;
16560 G_PRICING_STATUS_TEXT_tbl(M) := 'INSERTED IN SECONDARY LIST HEADER SEARCH';
16561 G_QUALIFIER_PRECEDENCE_tbl(M) := NULL;
16562 G_DATATYPE_tbl(M) := l_h_pric_ATTR_DATATYPE_tbl(I);
16563 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
16564 G_QUALIFIER_TYPE_TBL(M) := NULL;
16565 G_PRODUCT_UOM_CODE_TBL(M) := l_h_prod_UOM_CODE_tbl(I);
16566 G_EXCLUDER_FLAG_TBL(M) := l_h_EXCLUDER_FLAG_tbl(I);
16567 G_PRICING_PHASE_ID_TBL_A(M) := l_h_pric_PHASE_ID_tbl(I);
16568 G_INCOMP_GRP_CODE_TBL_A(M) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16569 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
16570 G_MODIFIER_LEVEL_CODE_TBL_A(M) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16571 G_PRIMARY_UOM_FLAG_TBL_A(M) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16572 M:= M+1;
16573 END IF;
16574
16575 --INSERT QUALIFIER ATTRIBUTES
16576 IF (l_h_qual_ATTR_CONTEXT_tbl(I) IS NOT NULL) AND (G_QUALIFY_SECONDARY = G_YES) THEN
16577 G_LINE_INDEX_TBL_A(M) := l_h_LINE_INDEX_tbl(I);
16578 G_LINE_DETAIL_INDEX_TBL_A(M) := L_LINE_DETAIL_INDEX;
16579 G_ATTRIBUTE_LEVEL_tbl(M) := NVL(l_h_prod_ATTR_LEVEL_tbl(I),'X');
16580 G_ATTRIBUTE_TYPE_tbl(M) := G_QUALIFIER_TYPE;
16581 G_CONTEXT_tbl(M) := l_h_qual_ATTR_CONTEXT_tbl(I);
16582 G_ATTRIBUTE_tbl(M) := l_h_qual_ATTR_tbl(I);
16583 G_VALUE_FROM_tbl(M) := l_h_qual_ATTR_VALUE_FROM_tbl(I);
16584 G_COMPARISON_OPERATOR_TYPE_tbl(M):= l_h_qual_operator_type_tbl(I);
16585 G_APPLIED_FLAG_tbl(M) := l_h_APPLIED_FLAG_tbl(I);
16586 G_PRICING_STATUS_CODE_TBL_Q(M) := G_STATUS_NEW;
16587 G_LIST_HEADER_ID_tbl_A(M) := l_h_LIST_HEADER_ID_tbl(I);
16588 G_LIST_LINE_ID_tbl_A(M) := l_h_LIST_LINE_ID_tbl(I);
16589 G_SETUP_VALUE_FROM_tbl(M) := l_h_SETUP_VALUE_FROM_tbl(I);
16590 G_SETUP_VALUE_TO_tbl(M) := l_h_SETUP_VALUE_TO_tbl(I);
16591 G_GROUPING_NUMBER_tbl(M) := l_h_qual_GROUPING_NO_tbl(I);
16592 G_PRICING_STATUS_TEXT_tbl(M) := 'INSERTED IN L_SEC_LIST_CUR_CURRENCY';
16593 G_QUALIFIER_PRECEDENCE_tbl(M) := l_h_qual_PRECEDENCE_tbl(I);
16594 G_DATATYPE_tbl(M) := l_h_qual_DATATYPE_tbl(I);
16595 G_EXCLUDER_FLAG_TBL(M) := l_h_EXCLUDER_FLAG_tbl(I);
16596 G_PRODUCT_UOM_CODE_TBL(M) := l_h_prod_UOM_CODE_tbl(I);
16597 G_QUALIFIER_TYPE_TBL(M) := l_h_qual_TYPE_tbl(I);
16598 G_VALIDATED_FLAG_tbl(M) := G_NO;
16599 G_PRICING_ATTR_FLAG_tbl(M) := G_NO;
16600 G_NO_QUALIFIERS_IN_GRP_tbl(M) := NULL;
16601 G_VALUE_TO_tbl(M) := NULL;
16602 G_PRICING_PHASE_ID_TBL_A(M) := l_h_pric_PHASE_ID_tbl(I);
16603 G_INCOMP_GRP_CODE_TBL_A(M) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16604 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
16605 G_MODIFIER_LEVEL_CODE_TBL_A(M) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16606 G_PRIMARY_UOM_FLAG_TBL_A(M) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16607 M:= M+1;
16608 END IF;
16609
16610 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16611 engine_debug('AFTER END IF SECONDARY PRICE_LIST');
16612 END IF;
16613 l_loop_count := l_loop_count +1;
16614 END LOOP; -- K
16615
16616 else -- vivek, multi currency not installed, not used
16617
16618 -- julin [3805113]: bulk fetch
16619 FETCH l_sec_list_cur BULK COLLECT INTO
16620 l_h_line_index_tbl,
16621 l_h_list_line_id_tbl,
16622 l_h_arithmetic_operator_tbl,
16623 l_h_operand_tbl,
16624 l_h_pric_group_sequence_tbl,
16625 l_h_list_line_type_code_tbl,
16626 l_h_pric_phase_id_tbl,
16627 l_h_automatic_flag_tbl,
16628 l_h_incompat_grp_code_tbl,
16629 l_h_price_by_formula_id_tbl,
16630 l_h_prod_precedence_tbl,
16631 l_h_primary_uom_flag_tbl,
16632 l_h_modifier_level_code_tbl,
16633 l_h_list_line_no_tbl,
16634 l_h_prod_uom_code_tbl,
16635 l_h_excluder_flag_tbl,
16636 l_h_list_type_code_tbl,
16637 l_h_rounding_factor_tbl,
16638 l_h_line_detail_index_tbl,
16639 l_h_list_header_id_tbl,
16640 l_h_prod_attr_context_tbl,
16641 l_h_prod_attr_tbl,
16642 l_h_prod_attr_val_from_tbl,
16643 l_h_prod_attr_level_tbl,
16644 l_h_prod_attr_type_tbl,
16645 l_h_applied_flag_tbl,
16646 l_h_prod_operator_type_tbl,
16647 l_h_pric_attr_context_tbl,
16648 l_h_pric_attr_tbl,
16649 l_h_pric_attr_value_from_tbl,
16650 l_h_pric_setup_value_from_tbl,
16651 l_h_pric_setup_value_to_tbl,
16652 l_h_pric_attr_level_tbl,
16653 l_h_pric_attr_type_tbl,
16654 l_h_pric_operator_type_tbl,
16655 l_h_pric_attr_datatype_tbl,
16656 l_h_qual_attr_context_tbl,
16657 l_h_qual_attr_tbl,
16658 l_h_qual_attr_value_from_tbl,
16659 l_h_qual_pric_attr_flag_tbl,
16660 l_h_qual_grouping_no_tbl,
16661 l_h_qual_datatype_tbl,
16662 l_h_setup_value_from_tbl,
16663 l_h_setup_value_to_tbl,
16664 l_h_qual_operator_type_tbl,
16665 l_h_qual_precedence_tbl,
16666 l_h_break_uom_code_tbl,
16667 l_h_break_uom_context_tbl,
16668 l_h_break_uom_attr_tbl,
16669 l_h_qual_type_tbl,
16670 l_h_derived_qualifier_flag_tbl -- Added for TCA
16671 LIMIT G_BATCH_SIZE_1;
16672 EXIT WHEN l_h_line_index_tbl.COUNT = 0;
16673
16674 FOR I in l_h_line_index_tbl.first .. l_h_line_index_tbl.last
16675 LOOP
16676 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16677 engine_debug('item found in secondary list');
16678 END IF;
16679
16680 IF (ls_line_index <> l_h_line_index_tbl(I) OR ls_list_line_id <> l_h_list_line_id_tbl(I)) THEN
16681 l_line_detail_index := GET_LINE_DETAIL_INDEX;
16682 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16683 engine_debug('Inserting Secondary Price List Detail');
16684 END IF;
16685 G_LINE_DETAIL_INDEX_TBL(D) := l_line_detail_index;
16686 G_LINE_DETAIL_TYPE_CODE_TBL(D) := 'NULL';
16687 G_LINE_INDEX_TBL(D) := l_h_LINE_INDEX_tbl(I);
16688 G_LIST_HEADER_ID_TBL(D) := l_h_LIST_HEADER_ID_tbl(I);
16689 G_LIST_LINE_ID_TBL(D) := l_h_LIST_LINE_ID_tbl(I);
16690 G_LIST_LINE_TYPE_TBL(D) := l_h_LIST_LINE_TYPE_CODE_tbl(I);
16691 G_CREATED_FROM_SQL_TBL(D) := 'LHS_SECONDARY_PRICE_LIST' ; -- nth sec price list
16692 G_PRICING_GROUP_SEQUENCE_TBL(D) := l_h_pric_GROUP_SEQUENCE_tbl(I);
16693 G_OPERAND_CALCULATION_CODE_TBL(D) := l_h_ARITHMETIC_OPERATOR_tbl(I);
16694 G_OPERAND_VALUE_TBL(D) := l_h_OPERAND_tbl(I);
16695 G_PRICING_PHASE_ID_TBL(D) := l_h_pric_PHASE_ID_tbl(I);
16696 G_LIST_TYPE_CODE_TBL(D) := l_h_LIST_TYPE_CODE_tbl(I);
16697 G_PRICING_STATUS_CODE_TBL(D) := G_STATUS_NEW;
16698 G_PROCESSED_FLAG_TBL(D) := G_NOT_PROCESSED;
16699 G_AUTOMATIC_FLAG_TBL(D) := l_h_AUTOMATIC_FLAG_tbl(I);
16700 G_MODIFIER_LEVEL_CODE_TBL(D) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16701 G_LIST_LINE_NO_TBL(D) := l_h_LIST_LINE_NO_tbl(I);
16702 G_INCOMP_GRP_CODE_TBL(D) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16703 G_PRICE_FORMULA_ID_TBL(D) := l_h_PRICE_BY_FORMULA_ID_tbl(I);
16704 G_PRODUCT_PRECEDENCE_TBL(D) := l_h_prod_PRECEDENCE_tbl(I);
16705 G_PRIMARY_UOM_FLAG_TBL(D) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16706 G_ROUNDING_FACTOR_TBL(D) := l_h_ROUNDING_FACTOR_tbl(I);
16707 G_SECONDARY_PRICELIST_IND_TBL(D) := G_YES;
16708 G_CURRENCY_DETAIL_ID_TBL(D) := null;
16709 G_CURRENCY_HEADER_ID_TBL(D) := null;
16710 G_SELLING_ROUNDING_TBL(D) := null;
16711 G_ORDER_CURRENCY_TBL(D) := null;
16712 G_PRICING_EFFECTIVE_DATE_TBL(D) := null;
16713 G_BASE_CURRENCY_CODE_TBL(D) := null;
16714 G_BREAK_UOM_TBL(D) := l_h_BREAK_UOM_CODE_tbl(I); /* Proration */
16715 G_BREAK_CONTEXT_TBL(D) := l_h_BREAK_UOM_CONTEXT_tbl(I); /* Proration */
16716 G_BREAK_ATTRIBUTE_TBL(D) := l_h_BREAK_UOM_ATTR_tbl(I); /* Proration */
16717 D := D + 1;
16718
16719 ls_line_index := l_h_line_index_tbl(I);
16720 ls_list_line_id := l_h_list_line_id_tbl(I);
16721 END IF;
16722
16723
16724 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16725 engine_debug('----BEFORE INSERTING SECONDARY PRODUCT ATTRS -------');
16726 engine_debug('Qualifier Precedence : ' || l_h_qual_precedence_tbl(I));
16727 END IF;
16728
16729 --INSERT PRODUCT ATTRIBUTES
16730 G_LINE_INDEX_TBL_A(M) := l_h_LINE_INDEX_tbl(I);
16731 G_LINE_DETAIL_INDEX_TBL_A(M) := L_LINE_DETAIL_INDEX;
16732 G_ATTRIBUTE_LEVEL_tbl(M) := l_h_prod_ATTR_LEVEL_tbl(I);
16733 G_ATTRIBUTE_TYPE_tbl(M) := l_h_prod_ATTR_TYPE_tbl(I);
16734 G_LIST_HEADER_ID_TBL_A(M) := l_h_LIST_HEADER_ID_tbl(I);
16735 G_LIST_LINE_ID_TBL_A(M) := l_h_LIST_LINE_ID_tbl(I);
16736 G_CONTEXT_tbl(M) := l_h_prod_ATTR_CONTEXT_tbl(I);
16737 G_ATTRIBUTE_tbl(M) := l_h_prod_ATTR_tbl(I);
16738 G_VALUE_FROM_tbl(M) := l_h_prod_attr_val_from_tbl(I);
16739 G_SETUP_VALUE_FROM_tbl(M) := NULL;
16740 G_SETUP_VALUE_TO_tbl(M) := NULL;
16741 G_GROUPING_NUMBER_tbl(M) := NULL;
16742 G_COMPARISON_OPERATOR_TYPE_tbl(M) := l_h_prod_OPERATOR_TYPE_tbl(I);
16743 G_VALIDATED_FLAG_tbl(M) := NULL;
16744 G_APPLIED_FLAG_tbl(M) := l_h_APPLIED_FLAG_tbl(I);
16745 G_PRICING_STATUS_CODE_TBL_Q(M) := G_STATUS_NEW;
16746 G_PRICING_STATUS_TEXT_tbl(M) := 'INSERTED IN SECONDARY LIST HEADER SEARCH';
16747 G_QUALIFIER_PRECEDENCE_TBL(M) := l_h_qual_PRECEDENCE_tbl(I);
16748 G_DATATYPE_tbl(M) := NULL;
16749 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
16750 G_QUALIFIER_TYPE_TBL(M) := NULL;
16751 G_PRODUCT_UOM_CODE_TBL(M) := l_h_prod_UOM_CODE_tbl(I);
16752 G_EXCLUDER_FLAG_TBL(M) := l_h_EXCLUDER_FLAG_tbl(I);
16753 G_PRICING_PHASE_ID_TBL_A(M) := l_h_pric_PHASE_ID_tbl(I);
16754 G_INCOMP_GRP_CODE_TBL_A(M) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16755 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
16756 G_MODIFIER_LEVEL_CODE_TBL_A(M) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16757 G_PRIMARY_UOM_FLAG_TBL_A(M) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16758 M:= M+1;
16759
16760 --INSERT PRICING ATTRIBUTES
16761 IF (l_h_pric_ATTR_CONTEXT_tbl(I) IS NOT NULL) THEN
16762 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16763 engine_debug('----BEFORE INSERTING SECONDARY PRICING ATTRS -------');
16764 END IF;
16765 G_LINE_INDEX_TBL_A(M) := l_h_LINE_INDEX_tbl(I);
16766 G_LINE_DETAIL_INDEX_TBL_A(M) := L_LINE_DETAIL_INDEX;
16767 G_ATTRIBUTE_LEVEL_tbl(M) := l_h_pric_ATTR_LEVEL_tbl(I);
16768 G_ATTRIBUTE_TYPE_tbl(M) := l_h_pric_ATTR_TYPE_tbl(I);
16769 G_LIST_HEADER_ID_TBL_A(M) := l_h_LIST_HEADER_ID_tbl(I);
16770 G_LIST_LINE_ID_TBL_A(M) := l_h_LIST_LINE_ID_tbl(I);
16771 G_CONTEXT_tbl(M) := l_h_pric_ATTR_CONTEXT_tbl(I);
16772 G_ATTRIBUTE_tbl(M) := l_h_pric_ATTR_tbl(I);
16773 G_VALUE_FROM_tbl(M) := l_h_pric_ATTR_VALUE_FROM_tbl(I);
16774 G_SETUP_VALUE_FROM_tbl(M) := l_h_pric_SETUP_VALUE_FROM_tbl(I);
16775 G_SETUP_VALUE_TO_tbl(M) := l_h_pric_SETUP_VALUE_TO_tbl(I);
16776 G_COMPARISON_OPERATOR_TYPE_tbl(M) := l_h_pric_OPERATOR_TYPE_tbl(I);
16777 G_VALIDATED_FLAG_tbl(M) := NULL;
16778 G_APPLIED_FLAG_tbl(M) := l_h_APPLIED_FLAG_tbl(I);
16779 G_PRICING_STATUS_CODE_TBL_Q(M) := G_STATUS_NEW;
16780 G_PRICING_STATUS_TEXT_tbl(M) := 'INSERTED IN SECONDARY LIST HEADER SEARCH';
16781 G_QUALIFIER_PRECEDENCE_tbl(M) := NULL;
16782 G_DATATYPE_tbl(M) := l_h_pric_ATTR_DATATYPE_tbl(I);
16783 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
16784 G_QUALIFIER_TYPE_TBL(M) := NULL;
16785 G_PRODUCT_UOM_CODE_TBL(M) := l_h_prod_UOM_CODE_tbl(I);
16786 G_EXCLUDER_FLAG_TBL(M) := l_h_EXCLUDER_FLAG_tbl(I);
16787 G_GROUPING_NUMBER_tbl(M) := NULL;
16788 G_PRICING_PHASE_ID_TBL_A(M) := l_h_pric_PHASE_ID_tbl(I);
16789 G_INCOMP_GRP_CODE_TBL_A(M) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16790 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
16791 G_MODIFIER_LEVEL_CODE_TBL_A(M) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16792 G_PRIMARY_UOM_FLAG_TBL_A(M) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16793 M:= M+1;
16794 END IF;
16795
16796 --INSERT QUALIFIER ATTRIBUTES
16797 IF (l_h_qual_ATTR_CONTEXT_tbl(I) IS NOT NULL) AND (G_QUALIFY_SECONDARY = G_YES) THEN
16798 G_LINE_INDEX_TBL_A(M) := l_h_LINE_INDEX_tbl(I);
16799 G_LINE_DETAIL_INDEX_TBL_A(M) := L_LINE_DETAIL_INDEX;
16800 G_ATTRIBUTE_LEVEL_tbl(M) := NVL(l_h_prod_ATTR_LEVEL_tbl(I),'X');
16801 G_ATTRIBUTE_TYPE_tbl(M) := G_QUALIFIER_TYPE;
16802 G_CONTEXT_tbl(M) := l_h_qual_ATTR_CONTEXT_tbl(I);
16803 G_ATTRIBUTE_tbl(M) := l_h_qual_ATTR_tbl(I);
16804 G_VALUE_FROM_tbl(M) := l_h_qual_ATTR_VALUE_FROM_tbl(I);
16805 G_COMPARISON_OPERATOR_TYPE_tbl(M):= l_h_qual_operator_type_tbl(I);
16806 G_APPLIED_FLAG_tbl(M) := l_h_APPLIED_FLAG_tbl(I);
16807 G_PRICING_STATUS_CODE_TBL_Q(M) := G_STATUS_NEW;
16808 G_LIST_HEADER_ID_tbl_A(M) := l_h_LIST_HEADER_ID_tbl(I);
16809 G_LIST_LINE_ID_tbl_A(M) := l_h_LIST_LINE_ID_tbl(I);
16810 G_SETUP_VALUE_FROM_tbl(M) := l_h_SETUP_VALUE_FROM_tbl(I);
16811 G_SETUP_VALUE_TO_tbl(M) := l_h_SETUP_VALUE_TO_tbl(I);
16812 G_GROUPING_NUMBER_tbl(M) := l_h_qual_GROUPING_NO_tbl(I);
16813 G_PRICING_STATUS_TEXT_tbl(M) := 'INSERTED IN L_SEC_LIST_CUR';
16814 G_QUALIFIER_PRECEDENCE_tbl(M) := l_h_qual_PRECEDENCE_tbl(I);
16815 G_DATATYPE_tbl(M) := l_h_qual_DATATYPE_tbl(I);
16816 G_EXCLUDER_FLAG_TBL(M) := l_h_EXCLUDER_FLAG_tbl(I);
16817 G_PRODUCT_UOM_CODE_TBL(M) := l_h_prod_UOM_CODE_tbl(I);
16818 G_QUALIFIER_TYPE_TBL(M) := l_h_qual_TYPE_tbl(I);
16819 G_VALIDATED_FLAG_tbl(M) := G_NO;
16820 G_PRICING_ATTR_FLAG_tbl(M) := G_NO;
16821 G_NO_QUALIFIERS_IN_GRP_tbl(M) := NULL;
16822 G_VALUE_TO_tbl(M) := NULL;
16823 G_PRICING_PHASE_ID_TBL_A(M) := l_h_pric_PHASE_ID_tbl(I);
16824 G_INCOMP_GRP_CODE_TBL_A(M) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16825 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
16826 G_MODIFIER_LEVEL_CODE_TBL_A(M) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16827 G_PRIMARY_UOM_FLAG_TBL_A(M) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16828 M:= M+1;
16829 END IF;
16830
16831 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16832 engine_debug('AFTER END IF SECONDARY PRICE_LIST');
16833 END IF;
16834 l_loop_count := l_loop_count +1;
16835 END LOOP; -- K
16836
16837 end if; -- vivek, multi currency installed
16838
16839 -- julin [3805113]: bulk insert into qp_npreq_ldets_tmp
16840 IF (D>1) THEN
16841 qp_debug_util.tstart('QP_NPREQ_LDETS_TMP','Inserting into ldets QP_NPREQ_LDETS_TMP');
16842 FORALL i in G_line_index_tbl.FIRST..G_line_index_tbl.LAST
16843 INSERT INTO qp_npreq_ldets_tmp
16844 (LINE_DETAIL_INDEX,
16845 LINE_DETAIL_TYPE_CODE,
16846 LINE_INDEX,
16847 CREATED_FROM_LIST_HEADER_ID,
16848 CREATED_FROM_LIST_LINE_ID,
16849 CREATED_FROM_LIST_LINE_TYPE,
16850 CREATED_FROM_SQL,
16851 PRICING_GROUP_SEQUENCE,
16852 OPERAND_CALCULATION_CODE,
16853 OPERAND_VALUE,
16854 PRICING_PHASE_ID,
16855 CREATED_FROM_LIST_TYPE_CODE,
16856 PRICING_STATUS_CODE,
16857 PROCESSED_FLAG,
16858 AUTOMATIC_FLAG,
16859 MODIFIER_LEVEL_CODE,
16860 LIST_LINE_NO,
16861 INCOMPATABILITY_GRP_CODE,
16862 PRICE_FORMULA_ID,
16863 PRODUCT_PRECEDENCE,
16864 PRIMARY_UOM_FLAG,
16865 ROUNDING_FACTOR,
16866 SECONDARY_PRICELIST_IND,
16867 CURRENCY_DETAIL_ID,
16868 CURRENCY_HEADER_ID,
16869 SELLING_ROUNDING_FACTOR,
16870 ORDER_CURRENCY,
16871 PRICING_EFFECTIVE_DATE,
16872 BASE_CURRENCY_CODE,
16873 BREAK_UOM_CODE,
16874 BREAK_UOM_CONTEXT,
16875 BREAK_UOM_ATTRIBUTE
16876 )
16877 VALUES ( G_line_detail_index_tbl(i),
16878 G_LINE_DETAIL_TYPE_CODE_TBL(I),
16879 G_LINE_INDEX_tbl(i),
16880 G_LIST_HEADER_ID_tbl(i),
16881 G_LIST_LINE_ID_tbl(i),
16882 G_LIST_LINE_TYPE_tbl(i),
16883 G_CREATED_FROM_SQL_TBL(I), -- nth sec price list
16884 G_PRICING_GROUP_SEQUENCE_tbl(i),
16885 G_OPERAND_CALCULATION_CODE_tbl(i),
16886 G_OPERAND_VALUE_tbl(i),
16887 G_PRICING_PHASE_ID_tbl(i),
16888 G_LIST_TYPE_CODE_tbl(i),
16889 G_PRICING_STATUS_CODE_TBL(I),
16890 G_NOT_PROCESSED,
16891 G_AUTOMATIC_FLAG_tbl(i),
16892 G_MODIFIER_LEVEL_CODE_tbl(i),
16893 G_LIST_LINE_NO_tbl(i),
16894 G_INCOMP_GRP_CODE_tbl(i),
16895 G_PRICE_FORMULA_ID_tbl(i),
16896 G_PRODUCT_PRECEDENCE_tbl(i),
16897 G_PRIMARY_UOM_FLAG_tbl(i),
16898 G_ROUNDING_FACTOR_tbl(i),
16899 G_SECONDARY_PRICELIST_IND_TBL(I),
16900 G_CURRENCY_DETAIL_ID_tbl(i),
16901 G_CURRENCY_HEADER_ID_tbl(i),
16902 G_SELLING_ROUNDING_tbl(i),
16903 G_ORDER_CURRENCY_tbl(i),
16904 G_PRICING_EFFECTIVE_DATE_tbl(i),
16905 G_BASE_CURRENCY_CODE_tbl(i),
16906 G_BREAK_UOM_tbl(i), /* Proration */
16907 G_BREAK_CONTEXT_tbl(i), /* Proration */
16908 G_BREAK_ATTRIBUTE_tbl(i) /* Proration */
16909 );
16910 qp_debug_util.tstop('QP_NPREQ_LDETS_TMP');
16911 END IF;
16912
16913 IF (M>1) THEN
16914 qp_debug_util.tstart('INSERT_PRICE_LIST_ATTRS','Inserting into lin attrs INSERT_PRICE_LIST_ATTRS');
16915 INSERT_PRICE_LIST_ATTRS
16916 ( p_LINE_INDEX_tbl =>G_LINE_INDEX_TBL_A,
16917 p_LINE_DETAIL_INDEX_tbl =>G_LINE_DETAIL_INDEX_TBL_A,
16918 p_ATTRIBUTE_LEVEL_tbl =>G_ATTRIBUTE_LEVEL_tbl,
16919 p_ATTRIBUTE_TYPE_tbl =>G_ATTRIBUTE_TYPE_tbl,
16920 p_LIST_HEADER_ID_tbl =>G_LIST_HEADER_ID_tbl_A,
16921 p_LIST_LINE_ID_tbl =>G_LIST_LINE_ID_tbl_A,
16922 p_CONTEXT_tbl =>G_CONTEXT_tbl,
16923 p_ATTRIBUTE_tbl =>G_ATTRIBUTE_tbl,
16924 p_VALUE_FROM_tbl =>G_VALUE_FROM_tbl,
16925 p_SETUP_VALUE_FROM_tbl =>G_SETUP_VALUE_FROM_tbl,
16926 p_SETUP_VALUE_TO_tbl =>G_SETUP_VALUE_TO_tbl,
16927 p_GROUPING_NUMBER_tbl =>G_GROUPING_NUMBER_tbl,
16928 p_COMPARISON_OPERATOR_TYPE_tbl =>G_COMPARISON_OPERATOR_TYPE_tbl,
16929 p_VALIDATED_FLAG_tbl =>G_VALIDATED_FLAG_tbl,
16930 p_APPLIED_FLAG_tbl =>G_APPLIED_FLAG_tbl,
16931 p_PRICING_STATUS_CODE_tbl =>G_PRICING_STATUS_CODE_TBL_Q,
16932 p_PRICING_STATUS_TEXT_tbl =>G_PRICING_STATUS_TEXT_tbl,
16933 p_QUALIFIER_PRECEDENCE_tbl =>G_QUALIFIER_PRECEDENCE_tbl,
16934 p_DATATYPE_tbl =>G_DATATYPE_tbl,
16935 p_PRICING_ATTR_FLAG_tbl =>G_PRICING_ATTR_FLAG_tbl,
16936 p_QUALIFIER_TYPE_tbl =>G_QUALIFIER_TYPE_TBL,
16937 p_PRODUCT_UOM_CODE_TBL =>G_PRODUCT_UOM_CODE_TBL,
16938 p_EXCLUDER_FLAG_TBL =>G_EXCLUDER_FLAG_TBL,
16939 p_PRICING_PHASE_ID_TBL =>G_PRICING_PHASE_ID_TBL_A,
16940 p_INCOMPATABILITY_GRP_CODE_TBL =>G_INCOMP_GRP_CODE_TBL_A,
16941 p_LINE_DETAIL_TYPE_CODE_TBL =>G_LINE_DETAIL_TYPE_CODE_TBL_A,
16942 p_MODIFIER_LEVEL_CODE_TBL =>G_MODIFIER_LEVEL_CODE_TBL_A,
16943 p_PRIMARY_UOM_FLAG_TBL =>G_PRIMARY_UOM_FLAG_TBL_A,
16944 x_status_code =>l_status_code,
16945 x_status_text =>l_status_text);
16946 qp_debug_util.tstop('INSERT_PRICE_LIST_ATTRS');
16947 END IF;
16948
16949 END LOOP;
16950 qp_debug_util.tstop('L_SEC_LIST_CUR/CURRENCY_FETCH');
16951 IF l_use_multi_currency = 'Y' THEN
16952 qp_debug_util.tstop('L_SEC_LIST_CUR_CURRENCY');
16953 CLOSE l_sec_list_cur_currency;
16954 ELSE
16955 qp_debug_util.tstop('L_USE_MULTI_CURRENCY');
16956 CLOSE l_sec_list_cur;
16957 END IF;
16958
16959 IF (l_loop_count <> 0) THEN
16960
16961 --Evaluating between operator for both qualifiers and pricing attributes
16962 Evaluate_Between(G_PRICE_LIST_PHASE_ID,NULL,NULL,l_status_code,l_status_text);
16963
16964 IF(l_status_code = FND_API.G_RET_STS_ERROR) THEN
16965 RAISE E_ROUTINE_ERRORS;
16966 END IF;
16967
16968 -- Check for multiple item categories and customer classes
16969 Eliminate_Multiple_Hierarchies(G_PRICE_LIST_PHASE_ID,l_status_code,l_status_text);
16970
16971 IF(l_status_code = FND_API.G_RET_STS_ERROR) THEN
16972 RAISE E_ROUTINE_ERRORS;
16973 END IF;
16974
16975 --Handle_Excluder(G_PRICE_LIST_PHASE_ID,NULL,l_status_code,l_status_text);
16976
16977 Perform_Grouping(G_PRICE_LIST_PHASE_ID, NULL, l_status_code, l_status_text);
16978
16979 IF(l_status_code = FND_API.G_RET_STS_ERROR) THEN
16980 RAISE E_ROUTINE_ERRORS;
16981 END IF;
16982
16983 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16984 engine_debug('Secondary Price List Grouping Return Status : ' || l_status_code);
16985
16986
16987 END IF;
16988 QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty
16989 (p_line_index => NULL,
16990 p_order_uom_code => NULL,
16991 p_order_qty => NULL,
16992 p_pricing_phase_id => G_PRICE_LIST_PHASE_ID, -- pricing_phase_id,
16993 p_call_big_search => FALSE,
16994 x_list_line_id => l_list_line_id,
16995 x_return_status => l_status_code,
16996 x_return_status_txt => l_status_text);
16997
16998 IF(l_status_code = FND_API.G_RET_STS_ERROR) THEN
16999 RAISE E_ROUTINE_ERRORS;
17000 END IF;
17001
17002 -- 3773652
17003 -- re-run Evaluate_Between after UOM conversion to check PLL really qualifies
17004 begin
17005 select 'x' into l_dummy
17006 from qp_npreq_lines_tmp
17007 where LINE_UOM_CODE <> nvl(PRICED_UOM_CODE, LINE_UOM_CODE)
17008 and (PRICE_FLAG = G_YES
17009 or
17010 PRICE_FLAG = G_PHASE and p_freeze_override_flag = G_YES)
17011 and rownum = 1;
17012
17013 Evaluate_Between(G_PRICE_LIST_PHASE_ID,NULL,NULL,l_status_code,l_status_text);
17014 exception
17015 when no_data_found then
17016 null;
17017 end;
17018
17019 -- Update the request line status for lines which got valid price list
17020 Update_Request_Line_Status(p_control_rec,'SUCCESS',p_freeze_override_flag,l_status_code,l_status_text); --[julin/4708044]
17021
17022 IF(l_status_code = FND_API.G_RET_STS_ERROR) THEN
17023 RAISE E_ROUTINE_ERRORS;
17024 END IF;
17025
17026 --bug# 2091386 not reflecting the right price on change on UOM on the order line . Since
17027 --QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty determines the pricing_qty
17028 --which is needed later in Get_Eligible_Price_Break we need to call Get_Eligible_Price_Break
17029 --after QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty.
17030 --By doing this we will get the right price in the PRICE event on change of UOM on the order line
17031 --for price based on price break
17032 Get_Eligible_Price_Break(G_PRICE_LIST_PHASE_ID,NULL,l_status_code,l_status_text);
17033
17034 IF(l_status_code = FND_API.G_RET_STS_ERROR) THEN
17035 RAISE E_ROUTINE_ERRORS;
17036 END IF;
17037
17038
17039 --delete children lines of PBH if the parent PBH line get eliminated in
17040 --QP_Resolve_Incompatability_PVT
17041
17042 /* OPEN l_chk_deleted_pbh_cur(l_line_index,G_PRICE_LIST_PHASE_ID);
17043 FETCH l_chk_deleted_pbh_cur INTO l_dummy;
17044 IF l_chk_deleted_pbh_cur%FOUND THEN
17045 Delete_Invalid_PBH_Children(l_line_index,G_PRICE_LIST_PHASE_ID);
17046 END IF;
17047 CLOSE l_chk_deleted_pbh_cur; */
17048 ELSE
17049 -- Update the request line status for lines which got valid price list
17050 Update_Request_Line_Status(p_control_rec,'FAILURE',p_freeze_override_flag,l_status_code,l_status_text); --[juiln/4708044]
17051 IF(l_status_code = FND_API.G_RET_STS_ERROR) THEN
17052 RAISE E_ROUTINE_ERRORS;
17053 END IF;
17054 END IF; --l_loop_count <> 0
17055
17056 qp_debug_util.tstop('PERFORM_SECONDARY_SEARCH');
17057
17058 EXCEPTION
17059 WHEN E_ROUTINE_ERRORS THEN
17060 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
17061 engine_debug(l_routine||': '||l_status_text);
17062 END IF;
17063 x_status_code := FND_API.G_RET_STS_ERROR;
17064 x_status_text := l_routine||': '||l_status_text;
17065 WHEN OTHERS THEN
17066 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
17067 engine_debug(SQLERRM);
17068 END IF;
17069 x_status_code := FND_API.G_RET_STS_ERROR;
17070 x_status_text := l_routine||' '||SQLERRM;
17071
17072 END Perform_Secondary_Search;
17073
17074 /*+-----------------------------------------------------------
17075 | PROCEDURE LIST_HEADER_SEARCH
17076 | SEARCH lines for the phase that has search_flag='N'
17077 | The list headers were passed in as qualifiers. Only for the lines that have
17078 | MODLIST and list_lines as their context only will be included
17079 | These lines were not selected by the big union
17080 | select statement at all. Instead, they were populated by populate_temp_table
17081 | This routine has not hadled the case where a price break
17082 | list is passed in as qualifier...
17083 +-------------------------------------------------------------
17084 */
17085
17086 PROCEDURE LIST_HEADER_SEARCH (
17087 p_pricing_phase_id IN NUMBER,
17088 p_is_price_list IN BOOLEAN,
17089 p_freeze_override_flag IN VARCHAR2,
17090 p_control_rec IN CONTROL_RECORD_TYPE,
17091 p_list_mode IN VARCHAR2, --Modifier or Price list Mode
17092 x_further_search OUT NOCOPY VARCHAR2,
17093 x_status_code OUT NOCOPY VARCHAR2,
17094 x_status_text OUT NOCOPY VARCHAR2)
17095 AS
17096 /*
17097 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,qp_npreq_lines_tmp_N3,VALIDATED_FLAG,1
17098 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,qp_npreq_lines_tmp_N3,QUALIFIERS_EXIST_FLAG,2
17099 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,qp_npreq_lines_tmp_N3,PRICING_ATTRS_EXIST_FLAG,3
17100
17101 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
17102 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
17103 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
17104
17105 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
17106 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
17107 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
17108 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
17109 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
17110 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,EXCLUDER_FLAG,6
17111 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,LIST_HEADER_ID,7
17112 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,LIST_LINE_ID,8
17113
17114 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
17115
17116 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
17117
17118 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
17119 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICE_REQ_SOURCES_PK,SOURCE_SYSTEM_CODE,2
17120 */
17121 CURSOR L_LIST_CUR IS
17122 SELECT /*+ ORDERED USE_NL(QPLAT_PROD QPA QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) dynamic_sampling(1) l_list_cur */
17123 QPLAT_PROD.LINE_INDEX,
17124 QPL.LIST_LINE_ID,
17125 QPL.ARITHMETIC_OPERATOR,
17126 QPL.OPERAND,
17127 QPL.PRICING_GROUP_SEQUENCE,
17128 QPL.LIST_LINE_TYPE_CODE,
17129 QPL.PRICING_PHASE_ID,
17130 QPL.AUTOMATIC_FLAG,
17131 QPL.INCOMPATIBILITY_GRP_CODE,
17132 QPL.PRICE_BY_FORMULA_ID,
17133 QPL.PRODUCT_PRECEDENCE,
17134 QPL.PRIMARY_UOM_FLAG,
17135 QPL.MODIFIER_LEVEL_CODE,
17136 QPL.LIST_LINE_NO,
17137 QPA.PRODUCT_UOM_CODE,
17138 QPA.EXCLUDER_FLAG,
17139 QPH.LIST_TYPE_CODE,
17140 QPH.ROUNDING_FACTOR,
17141 QPH.LIST_HEADER_ID LIST_HEADER_ID,
17142 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
17143 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
17144 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
17145 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
17146 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
17147 QPLAT_PROD.APPLIED_FLAG,
17148 NULL PRICING_ATTRIBUTE_CONTEXT,
17149 NULL PRICING_ATTRIBUTE,
17150 NULL PRICING_ATTR_VALUE_FROM,
17151 NULL PRICING_SETUP_VALUE_FROM,
17152 NULL PRICING_SETUP_VALUE_TO,
17153 NULL PRICING_ATTRIBUTE_LEVEL,
17154 NULL PRICING_ATTRIBUTE_TYPE,
17155 NULL PRICING_OPERATOR_TYPE,
17156 NULL PRICING_ATTRIBUTE_DATATYPE
17157 ,QPL.BREAK_UOM_CODE /* Proration */
17158 ,QPL.BREAK_UOM_CONTEXT /* Proration */
17159 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
17160 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
17161 FROM
17162 qp_npreq_lines_tmp QPLINES,
17163 qp_npreq_line_attrs_tmp qplat_prod,
17164 QP_PRICING_ATTRIBUTES QPA,
17165 QP_LIST_LINES QPL,
17166 QP_LIST_HEADERS_B QPH,
17167 --QP_PRICE_REQ_SOURCES qprs
17168 QP_PRICE_REQ_SOURCES_V qprs /* yangli */
17169 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17170 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND, QP_PREQ_GRP.G_YES_PROD_IND)
17171 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
17172 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
17173 AND (QPLINES.PRICE_FLAG = G_YES
17174 OR
17175 (QPLINES.PRICE_FLAG = G_PHASE
17176 AND
17177 P_FREEZE_OVERRIDE_FLAG = G_YES))
17178 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
17179 AND QPLINES.VALIDATED_FLAG = G_YES
17180 AND QPLINES.QUALIFIERS_EXIST_FLAG IN (G_YES,G_NO)
17181 --AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_NO
17182 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
17183 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
17184 AND QPA.EXCLUDER_FLAG = G_NO
17185 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17186 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
17187 --added for moac -- commented references to security profile
17188 --security will be built into qp_list_headers_b
17189 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR --begin security
17190 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
17191 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
17192 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17193 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
17194 AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND, QP_PREQ_GRP.G_YES_PROD_IND)
17195 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17196 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17197 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17198 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
17199 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
17200 TRUNC(SYSDATE) )) AND
17201 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
17202 TRUNC(SYSDATE) ))
17203 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
17204 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
17205 TRUNC(SYSDATE) )) AND
17206 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
17207 TRUNC(SYSDATE) ))
17208 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
17209 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
17210 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
17211 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
17212 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17213 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17214 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17215 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
17216 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
17217 -- OR
17218 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
17219 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
17220 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
17221 AND QPH.ACTIVE_FLAG = G_YES
17222 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
17223 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
17224 AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17225 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
17226 UNION ALL
17227 SELECT /*+ ORDERED USE_NL(QPLAT_PROD QPA QPLAT_PRIC QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) index(qplat_pric qp_preq_line_attrs_tmp_N2) dynamic_sampling(1) l_list_cur */
17228 QPLAT_PROD.LINE_INDEX,
17229 QPL.LIST_LINE_ID,
17230 QPL.ARITHMETIC_OPERATOR,
17231 QPL.OPERAND,
17232 QPL.PRICING_GROUP_SEQUENCE,
17233 QPL.LIST_LINE_TYPE_CODE,
17234 QPL.PRICING_PHASE_ID,
17235 QPL.AUTOMATIC_FLAG,
17236 QPL.INCOMPATIBILITY_GRP_CODE,
17237 QPL.PRICE_BY_FORMULA_ID,
17238 QPL.PRODUCT_PRECEDENCE,
17239 QPL.PRIMARY_UOM_FLAG,
17240 QPL.MODIFIER_LEVEL_CODE,
17241 QPL.LIST_LINE_NO,
17242 QPA.PRODUCT_UOM_CODE,
17243 QPA.EXCLUDER_FLAG,
17244 QPH.LIST_TYPE_CODE,
17245 QPH.ROUNDING_FACTOR,
17246 QPH.LIST_HEADER_ID LIST_HEADER_ID,
17247 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
17248 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
17249 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
17250 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
17251 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
17252 QPLAT_PROD.APPLIED_FLAG,
17253 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
17254 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
17255 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
17256 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
17257 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
17258 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
17259 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
17260 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
17261 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE
17262 ,QPL.BREAK_UOM_CODE /* Proration */
17263 ,QPL.BREAK_UOM_CONTEXT /* Proration */
17264 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
17265 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
17266 FROM
17267 qp_npreq_lines_tmp qplines,
17268 qp_npreq_line_attrs_tmp qplat_prod,
17269 QP_PRICING_ATTRIBUTES qpa,
17270 qp_npreq_line_attrs_tmp qplat_pric,
17271 QP_LIST_LINES qpl,
17272 QP_LIST_HEADERS_B qph,
17273 --QP_PRICE_REQ_SOURCES qprs
17274 QP_PRICE_REQ_SOURCES_V qprs /* yangli */
17275 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17276 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_PRIC_IND)
17277 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
17278 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
17279 AND (QPLINES.PRICE_FLAG = G_YES
17280 OR
17281 (QPLINES.PRICE_FLAG = G_PHASE
17282 AND
17283 P_FREEZE_OVERRIDE_FLAG = G_YES))
17284 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
17285 AND QPLINES.VALIDATED_FLAG = G_YES
17286 AND QPLINES.QUALIFIERS_EXIST_FLAG IN (G_YES,G_NO)
17287 AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_YES
17288 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
17289 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
17290 AND QPA.EXCLUDER_FLAG = G_NO
17291 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17292 AND QPA.PRICING_ATTRIBUTE_CONTEXT IS NOT NULL
17293 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
17294 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
17295 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
17296 OR
17297 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
17298 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
17299 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17300 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
17301 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
17302 --added for moac -- commented references to security profile
17303 --security will be built into qp_list_headers_b
17304 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
17305 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
17306 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
17307 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17308 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
17309 AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_PRIC_IND)
17310 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17311 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17312 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17313 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
17314 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
17315 TRUNC(SYSDATE) )) AND
17316 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
17317 TRUNC(SYSDATE) ))
17318 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
17319 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
17320 TRUNC(SYSDATE) )) AND
17321 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
17322 TRUNC(SYSDATE) ))
17323 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
17324 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
17325 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
17326 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
17327 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17328 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17329 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17330 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
17331 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
17332 -- OR
17333 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
17334 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
17335 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
17336 AND QPH.ACTIVE_FLAG = G_YES
17337 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
17338 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
17339 AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17340 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
17341 ORDER BY 1,2; --ORDER BY LINE_INDEX AND LIST LINE ID
17342
17343 -- vivek
17344 CURSOR L_LIST_CUR_CURRENCY IS
17345 SELECT /*+ ORDERED USE_NL(QPLAT_PROD QPA QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5)
17346 index(qplat_prod qp_preq_line_attrs_tmp_n1) index(QPLINES QP_PREQ_LINES_TMP_N2) l_list_cur */ -- 9362867
17347 QPLAT_PROD.LINE_INDEX,
17348 QPL.LIST_LINE_ID,
17349 QPL.ARITHMETIC_OPERATOR,
17350 QPL.OPERAND,
17351 QPL.PRICING_GROUP_SEQUENCE,
17352 QPL.LIST_LINE_TYPE_CODE,
17353 QPL.PRICING_PHASE_ID,
17354 QPL.AUTOMATIC_FLAG,
17355 QPL.INCOMPATIBILITY_GRP_CODE,
17356 QPL.PRICE_BY_FORMULA_ID,
17357 QPL.PRODUCT_PRECEDENCE,
17358 QPL.PRIMARY_UOM_FLAG,
17359 QPL.MODIFIER_LEVEL_CODE,
17360 QPL.LIST_LINE_NO,
17361 QPA.PRODUCT_UOM_CODE,
17362 QPA.EXCLUDER_FLAG,
17363 QPH.LIST_TYPE_CODE,
17364 /* vivek QPH.ROUNDING_FACTOR, */
17365 QCDT.ROUNDING_FACTOR, /* vivek */
17366 QPH.LIST_HEADER_ID LIST_HEADER_ID,
17367 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
17368 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
17369 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
17370 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
17371 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
17372 QPLAT_PROD.APPLIED_FLAG,
17373 NULL PRICING_ATTRIBUTE_CONTEXT,
17374 NULL PRICING_ATTRIBUTE,
17375 NULL PRICING_ATTR_VALUE_FROM,
17376 NULL PRICING_SETUP_VALUE_FROM,
17377 NULL PRICING_SETUP_VALUE_TO,
17378 NULL PRICING_ATTRIBUTE_LEVEL,
17379 NULL PRICING_ATTRIBUTE_TYPE,
17380 NULL PRICING_OPERATOR_TYPE,
17381 NULL PRICING_ATTRIBUTE_DATATYPE,
17382 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
17383 QCDT.CURRENCY_HEADER_ID, /* vivek */
17384 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
17385 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
17386 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
17387 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
17388 ,QPL.BREAK_UOM_CODE /* Proration */
17389 ,QPL.BREAK_UOM_CONTEXT /* Proration */
17390 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
17391 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
17392 FROM
17393 qp_npreq_lines_tmp QPLINES,
17394 qp_npreq_line_attrs_tmp qplat_prod,
17395 QP_PRICING_ATTRIBUTES QPA,
17396 QP_LIST_LINES QPL,
17397 QP_LIST_HEADERS_B QPH,
17398 --QP_PRICE_REQ_SOURCES qprs,
17399 QP_PRICE_REQ_SOURCES_V qprs, /* yangli */
17400 QP_CURRENCY_DETAILS QCDT /* Vivek */
17401 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17402 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND, QP_PREQ_GRP.G_YES_PROD_IND)
17403 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
17404 AND (QPLINES.PRICE_FLAG = G_YES
17405 OR
17406 (QPLINES.PRICE_FLAG = G_PHASE
17407 AND
17408 P_FREEZE_OVERRIDE_FLAG = G_YES))
17409 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
17410 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
17411 AND QPLINES.VALIDATED_FLAG = G_YES
17412 AND QPLINES.QUALIFIERS_EXIST_FLAG IN (G_YES,G_NO)
17413 --AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_NO
17414 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
17415 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
17416 AND QPA.EXCLUDER_FLAG = G_NO
17417 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17418 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
17419 --added for moac -- commented references to security profile
17420 --security will be built into qp_list_headers_b
17421 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
17422 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
17423 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
17424 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17425 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
17426 AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND, QP_PREQ_GRP.G_YES_PROD_IND)
17427 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17428 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17429 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17430 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
17431 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
17432 TRUNC(SYSDATE) )) AND
17433 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
17434 TRUNC(SYSDATE) ))
17435 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
17436 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
17437 TRUNC(SYSDATE) )) AND
17438 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
17439 TRUNC(SYSDATE) ))
17440 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
17441 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
17442 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
17443 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
17444 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17445 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17446 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17447 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
17448 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
17449 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
17450 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
17451 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17452 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17453 AND ( /* Vivek */
17454 (qcdt.curr_attribute_context is null /* Vivek */
17455 and not exists /* Vivek */
17456 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
17457 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
17458 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
17459 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
17460 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
17461 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
17462 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
17463 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
17464 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
17465 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
17466 and pa_tmp.line_index = qplines.line_index /* Vivek */
17467 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
17468 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17469 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17470 ) /* Vivek */
17471 ) /* Vivek */
17472 OR /* Vivek */
17473 (qcdt.curr_attribute_context is not null /* Vivek */
17474 and qcdt.precedence =
17475 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
17476 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
17477 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
17478 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
17479 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
17480 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
17481 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
17482 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
17483 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
17484 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
17485 and pa_tmp1.line_index = qplines.line_index /* Vivek */
17486 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
17487 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17488 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17489 ) /* Vivek */
17490 ) /* Vivek */
17491 ) /* Vivek */
17492 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
17493 -- OR
17494 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
17495 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
17496 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
17497 AND QPH.ACTIVE_FLAG = G_YES
17498 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
17499 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
17500 AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17501 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
17502 UNION ALL
17503 SELECT /*+ ORDERED USE_NL(QPLAT_PROD QPA QPLAT_PRIC QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) index(qplat_pric qp_preq_line_attrs_tmp_N2) l_list_cur */
17504 QPLAT_PROD.LINE_INDEX,
17505 QPL.LIST_LINE_ID,
17506 QPL.ARITHMETIC_OPERATOR,
17507 QPL.OPERAND,
17508 QPL.PRICING_GROUP_SEQUENCE,
17509 QPL.LIST_LINE_TYPE_CODE,
17510 QPL.PRICING_PHASE_ID,
17511 QPL.AUTOMATIC_FLAG,
17512 QPL.INCOMPATIBILITY_GRP_CODE,
17513 QPL.PRICE_BY_FORMULA_ID,
17514 QPL.PRODUCT_PRECEDENCE,
17515 QPL.PRIMARY_UOM_FLAG,
17516 QPL.MODIFIER_LEVEL_CODE,
17517 QPL.LIST_LINE_NO,
17518 QPA.PRODUCT_UOM_CODE,
17519 QPA.EXCLUDER_FLAG,
17520 QPH.LIST_TYPE_CODE,
17521 /* vivek QPH.ROUNDING_FACTOR, */
17522 QCDT.ROUNDING_FACTOR, /* vivek */
17523 QPH.LIST_HEADER_ID LIST_HEADER_ID,
17524 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
17525 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
17526 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
17527 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
17528 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
17529 QPLAT_PROD.APPLIED_FLAG,
17530 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
17531 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
17532 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
17533 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
17534 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
17535 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
17536 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
17537 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
17538 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
17539 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
17540 QCDT.CURRENCY_HEADER_ID, /* vivek */
17541 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
17542 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
17543 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
17544 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
17545 ,QPL.BREAK_UOM_CODE /* Proration */
17546 ,QPL.BREAK_UOM_CONTEXT /* Proration */
17547 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
17548 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
17549 FROM
17550 qp_npreq_lines_tmp qplines,
17551 qp_npreq_line_attrs_tmp qplat_prod,
17552 QP_PRICING_ATTRIBUTES qpa,
17553 qp_npreq_line_attrs_tmp qplat_pric,
17554 QP_LIST_LINES qpl,
17555 QP_LIST_HEADERS_B qph,
17556 --QP_PRICE_REQ_SOURCES qprs,
17557 QP_PRICE_REQ_SOURCES_V qprs, /* yangli */
17558 QP_CURRENCY_DETAILS QCDT /* Vivek */
17559 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17560 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_PRIC_IND)
17561 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
17562 AND (QPLINES.PRICE_FLAG = G_YES
17563 OR
17564 (QPLINES.PRICE_FLAG = G_PHASE
17565 AND
17566 P_FREEZE_OVERRIDE_FLAG = G_YES))
17567 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
17568 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
17569 AND QPLINES.VALIDATED_FLAG = G_YES
17570 AND QPLINES.QUALIFIERS_EXIST_FLAG IN (G_YES,G_NO)
17571 AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_YES
17572 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
17573 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
17574 AND QPA.EXCLUDER_FLAG = G_NO
17575 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17576 AND QPA.PRICING_ATTRIBUTE_CONTEXT IS NOT NULL
17577 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
17578 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
17579 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
17580 OR
17581 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
17582 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
17583 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17584 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
17585 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
17586 --added for moac -- commented references to security profile
17587 --security will be built into qp_list_headers_b
17588 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
17589 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
17590 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
17591 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17592 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
17593 AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_PRIC_IND)
17594 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17595 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17596 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17597 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
17598 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
17599 TRUNC(SYSDATE) )) AND
17600 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
17601 TRUNC(SYSDATE) ))
17602 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
17603 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
17604 TRUNC(SYSDATE) )) AND
17605 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
17606 TRUNC(SYSDATE) ))
17607 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
17608 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
17609 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
17610 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
17611 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17612 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17613 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17614 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
17615 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
17616 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
17617 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
17618 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17619 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17620 AND ( /* Vivek */
17621 (qcdt.curr_attribute_context is null /* Vivek */
17622 and not exists /* Vivek */
17623 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
17624 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
17625 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
17626 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
17627 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
17628 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
17629 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
17630 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
17631 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
17632 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
17633 and pa_tmp.line_index = qplines.line_index /* Vivek */
17634 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
17635 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17636 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17637 ) /* Vivek */
17638 ) /* Vivek */
17639 OR /* Vivek */
17640 (qcdt.curr_attribute_context is not null /* Vivek */
17641 and qcdt.precedence =
17642 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
17643 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
17644 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
17645 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
17646 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
17647 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
17648 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
17649 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
17650 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
17651 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
17652 and pa_tmp1.line_index = qplines.line_index /* Vivek */
17653 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
17654 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17655 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17656 ) /* Vivek */
17657 ) /* Vivek */
17658 ) /* Vivek */
17659 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
17660 -- OR
17661 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
17662 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
17663 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
17664 AND QPH.ACTIVE_FLAG = G_YES
17665 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
17666 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
17667 AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17668 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
17669 ORDER BY 1,2; --ORDER BY LINE_INDEX AND LIST LINE ID
17670
17671
17672 /*
17673 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_lines_tmp_N3,VALIDATED_FLAG,1
17674 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_lines_tmp_N3,QUALIFIERS_EXIST_FLAG,2
17675 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_lines_tmp_N3,PRICING_ATTRS_EXIST_FLAG,3
17676
17677 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
17678 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_QUALIFIERS_N1,COMPARISON_OPERATOR_CODE,4
17679 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_QUALIFIERS_N1,ACTIVE_FLAG,6
17680
17681 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
17682 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
17683 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
17684 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
17685 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
17686 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
17687
17688 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N6,LIST_HEADER_ID,1
17689 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N6,QUALIFICATION_IND,2
17690 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N6,PRICING_PHASE_ID,3
17691 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N6,LIST_LINE_ID,4
17692
17693 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
17694 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
17695 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
17696
17697 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
17698
17699 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
17700
17701 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
17702 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICE_REQ_SOURCES_PK,SOURCE_SYSTEM_CODE,2
17703
17704 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
17705 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
17706 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
17707 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
17708 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
17709 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,EXCLUDER_FLAG,6
17710 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,LIST_HEADER_ID,7
17711 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,LIST_LINE_ID,8
17712 */
17713 CURSOR L_LIST_QUAL_CUR IS
17714 SELECT /*+ ORDERED USE_NL(QPQ QPLAT_Q QPLAT_PROD QPA QPL QPH) INDEX(QPQ QP_QUALIFIERS_N1) INDEX(QPLAT_Q qp_preq_line_attrs_tmp_N2) INDEX(QPA QP_PRICING_ATTRIBUTES_N5) dynamic_sampling(1) l_list_qual_cur */
17715 QPLAT_PROD.LINE_INDEX,
17716 QPL.LIST_LINE_ID,
17717 QPL.ARITHMETIC_OPERATOR,
17718 QPL.OPERAND,
17719 QPL.PRICING_GROUP_SEQUENCE,
17720 QPL.LIST_LINE_TYPE_CODE,
17721 QPL.PRICING_PHASE_ID,
17722 QPL.AUTOMATIC_FLAG,
17723 QPL.INCOMPATIBILITY_GRP_CODE,
17724 QPL.PRICE_BY_FORMULA_ID,
17725 QPL.PRODUCT_PRECEDENCE,
17726 QPL.PRIMARY_UOM_FLAG,
17727 QPL.MODIFIER_LEVEL_CODE,
17728 QPL.LIST_LINE_NO,
17729 QPA.PRODUCT_UOM_CODE,
17730 QPA.EXCLUDER_FLAG,
17731 QPH.LIST_TYPE_CODE,
17732 QPH.ROUNDING_FACTOR,
17733 QPH.LIST_HEADER_ID LIST_HEADER_ID,
17734 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
17735 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
17736 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
17737 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
17738 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
17739 QPLAT_PROD.APPLIED_FLAG,
17740 NULL PRICING_ATTRIBUTE_CONTEXT,
17741 NULL PRICING_ATTRIBUTE,
17742 NULL PRICING_ATTR_VALUE_FROM,
17743 NULL PRICING_SETUP_VALUE_FROM,
17744 NULL PRICING_SETUP_VALUE_TO,
17745 NULL PRICING_ATTRIBUTE_LEVEL,
17746 NULL PRICING_ATTRIBUTE_TYPE,
17747 NULL PRICING_OPERATOR_TYPE,
17748 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
17749 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
17750 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
17751 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
17752 QPQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
17753 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
17754 QPQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
17755 QPQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
17756 QPQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
17757 QPQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
17758 NULL PRICING_ATTRIBUTE_DATATYPE,
17759 decode(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE
17760 ,QPL.BREAK_UOM_CODE /* Proration */
17761 ,QPL.BREAK_UOM_CONTEXT /* Proration */
17762 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
17763 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
17764 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
17765 FROM
17766 qp_npreq_lines_tmp QPLINES,
17767 QP_QUALIFIERS QPQ,
17768 qp_npreq_line_attrs_tmp QPLAT_Q,
17769 qp_npreq_line_attrs_tmp QPLAT_PROD,
17770 QP_PRICING_ATTRIBUTES QPA,
17771 QP_LIST_LINES QPL,
17772 QP_LIST_HEADERS_B QPH,
17773 --QP_PRICE_REQ_SOURCES QPRS
17774 QP_PRICE_REQ_SOURCES_V QPRS /* yangli */
17775 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17776 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
17777 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
17778 AND (QPLINES.PRICE_FLAG = G_YES
17779 OR
17780 (QPLINES.PRICE_FLAG = G_PHASE
17781 AND
17782 P_FREEZE_OVERRIDE_FLAG = G_YES))
17783 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
17784 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
17785 AND QPLINES.VALIDATED_FLAG = G_NO
17786 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_YES
17787 --AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_NO
17788 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
17789 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
17790 AND QPA.EXCLUDER_FLAG = G_NO
17791 AND QPL.LIST_HEADER_ID = QPH.LIST_HEADER_ID
17792 --added for moac -- commented references to security profile
17793 --security will be built into qp_list_headers_b
17794 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
17795 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
17796 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
17797 --AND QPL.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
17798 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
17799 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17800 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17801 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17802 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17803 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17804 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17805 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17806 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
17807 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
17808 -- OR
17809 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
17810 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
17811 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
17812 AND QPH.ACTIVE_FLAG = G_YES
17813 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
17814 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
17815 -- 3594459, context and attribute OR'd together
17816 AND (QPQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
17817 OR QPQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
17818 AND QPLAT_Q.CONTEXT = QPQ.QUALIFIER_CONTEXT
17819 AND QPLAT_Q.ATTRIBUTE = QPQ.QUALIFIER_ATTRIBUTE
17820 AND QPQ.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17821 AND QPQ.ACTIVE_FLAG = G_YES
17822 AND ((QPLAT_Q.VALUE_FROM = QPQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
17823 AND QPQ.COMPARISON_OPERATOR_CODE = '=')
17824 OR (QPLAT_Q.VALUE_FROM <> QPQ.QUALIFIER_ATTR_VALUE
17825 AND QPQ.COMPARISON_OPERATOR_CODE = 'NOT =')
17826 OR
17827 QPQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
17828 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
17829 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17830 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
17831 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
17832 AND QPLAT_PROD.LINE_INDEX = QPLAT_Q.LINE_INDEX
17833 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17834 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17835 AND QPLAT_Q. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17836 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
17837 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
17838 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
17839 UNION ALL
17840 SELECT /*+ ORDERED USE_NL(QPLINES QPQ QPLAT_Q QPLAT_PROD QPA QPLAT_PRIC QPL QPH) INDEX(QPQ QP_QUALIFIERS_N1) INDEX(QPLAT_Q qp_preq_line_attrs_tmp_N2)
17841 INDEX(QPA QP_PRICING_ATTRIBUTES_N5) INDEX(QPLAT_PRIC qp_preq_line_attrs_tmp_N2) dynamic_sampling(1) l_list_qual_cur */
17842 QPLAT_PROD.LINE_INDEX,
17843 QPL.LIST_LINE_ID,
17844 QPL.ARITHMETIC_OPERATOR,
17845 QPL.OPERAND,
17846 QPL.PRICING_GROUP_SEQUENCE,
17847 QPL.LIST_LINE_TYPE_CODE,
17848 QPL.PRICING_PHASE_ID,
17849 QPL.AUTOMATIC_FLAG,
17850 QPL.INCOMPATIBILITY_GRP_CODE,
17851 QPL.PRICE_BY_FORMULA_ID,
17852 QPL.PRODUCT_PRECEDENCE,
17853 QPL.PRIMARY_UOM_FLAG,
17854 QPL.MODIFIER_LEVEL_CODE,
17855 QPL.LIST_LINE_NO,
17856 QPA.PRODUCT_UOM_CODE,
17857 QPA.EXCLUDER_FLAG,
17858 QPH.LIST_TYPE_CODE,
17859 QPH.ROUNDING_FACTOR,
17860 QPH.LIST_HEADER_ID LIST_HEADER_ID,
17861 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
17862 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
17863 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
17864 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
17865 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
17866 QPLAT_PROD.APPLIED_FLAG,
17867 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
17868 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
17869 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
17870 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
17871 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
17872 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
17873 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
17874 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
17875 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
17876 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
17877 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
17878 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
17879 QPQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
17880 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
17881 QPQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
17882 QPQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
17883 QPQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
17884 QPQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
17885 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
17886 decode(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE
17887 ,QPL.BREAK_UOM_CODE /* Proration */
17888 ,QPL.BREAK_UOM_CONTEXT /* Proration */
17889 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
17890 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
17891 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
17892 FROM
17893 qp_npreq_lines_tmp QPLINES,
17894 QP_QUALIFIERS QPQ,
17895 qp_npreq_line_attrs_tmp QPLAT_Q,
17896 qp_npreq_line_attrs_tmp QPLAT_PROD,
17897 QP_PRICING_ATTRIBUTES QPA,
17898 qp_npreq_line_attrs_tmp QPLAT_PRIC,
17899 QP_LIST_LINES QPL,
17900 QP_LIST_HEADERS_B QPH,
17901 --QP_PRICE_REQ_SOURCES QPRS
17902 QP_PRICE_REQ_SOURCES_V QPRS /* yangli */
17903 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17904 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
17905 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
17906 AND (QPLINES.PRICE_FLAG = G_YES
17907 OR
17908 (QPLINES.PRICE_FLAG = G_PHASE
17909 AND
17910 P_FREEZE_OVERRIDE_FLAG = G_YES))
17911 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
17912 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
17913 AND QPLINES.VALIDATED_FLAG = G_NO
17914 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_YES
17915 AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_YES
17916 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
17917 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
17918 AND QPA.EXCLUDER_FLAG = G_NO
17919 --AND QPA.PRICING_ATTRIBUTE_CONTEXT IS NOT NULL
17920 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
17921 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
17922 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
17923 OR
17924 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
17925 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
17926 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17927 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
17928 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
17929 --added for moac -- commented references to security profile
17930 --security will be built into qp_list_headers_b
17931 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
17932 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
17933 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
17934 --AND QPL.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
17935 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
17936 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17937 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17938 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17939 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17940 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17941 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17942 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17943 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
17944 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
17945 -- OR
17946 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
17947 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
17948 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
17949 AND QPH.ACTIVE_FLAG = G_YES
17950 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
17951 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
17952 -- 3594459, context and attribute OR'd together
17953 AND (QPQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
17954 OR QPQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
17955 AND QPLAT_Q.CONTEXT = QPQ.QUALIFIER_CONTEXT
17956 AND QPLAT_Q.ATTRIBUTE = QPQ.QUALIFIER_ATTRIBUTE
17957 AND QPQ.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17958 AND QPQ.ACTIVE_FLAG = G_YES
17959 AND ((QPLAT_Q.VALUE_FROM = QPQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
17960 AND QPQ.COMPARISON_OPERATOR_CODE = '=')
17961 OR (QPLAT_Q.VALUE_FROM <> QPQ.QUALIFIER_ATTR_VALUE
17962 AND QPQ.COMPARISON_OPERATOR_CODE = 'NOT =')
17963 OR
17964 QPQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
17965 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
17966 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17967 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
17968 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
17969 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
17970 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17971 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17972 AND QPLAT_Q.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17973 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
17974 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
17975 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
17976 UNION ALL
17977 SELECT /*+ ORDERED USE_NL(QPLINES QPLAT_PROD QPA QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) dynamic_sampling(1) l_list_cur */
17978 QPLAT_PROD.LINE_INDEX,
17979 QPL.LIST_LINE_ID,
17980 QPL.ARITHMETIC_OPERATOR,
17981 QPL.OPERAND,
17982 QPL.PRICING_GROUP_SEQUENCE,
17983 QPL.LIST_LINE_TYPE_CODE,
17984 QPL.PRICING_PHASE_ID,
17985 QPL.AUTOMATIC_FLAG,
17986 QPL.INCOMPATIBILITY_GRP_CODE,
17987 QPL.PRICE_BY_FORMULA_ID,
17988 QPL.PRODUCT_PRECEDENCE,
17989 QPL.PRIMARY_UOM_FLAG,
17990 QPL.MODIFIER_LEVEL_CODE,
17991 QPL.LIST_LINE_NO,
17992 QPA.PRODUCT_UOM_CODE,
17993 QPA.EXCLUDER_FLAG,
17994 QPH.LIST_TYPE_CODE,
17995 QPH.ROUNDING_FACTOR,
17996 QPH.LIST_HEADER_ID LIST_HEADER_ID,
17997 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
17998 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
17999 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
18000 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
18001 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
18002 QPLAT_PROD.APPLIED_FLAG,
18003 NULL PRICING_ATTRIBUTE_CONTEXT,
18004 NULL PRICING_ATTRIBUTE,
18005 NULL PRICING_ATTR_VALUE_FROM,
18006 NULL PRICING_SETUP_VALUE_FROM,
18007 NULL PRICING_SETUP_VALUE_TO,
18008 NULL PRICING_ATTRIBUTE_LEVEL,
18009 NULL PRICING_ATTRIBUTE_TYPE,
18010 NULL PRICING_OPERATOR_TYPE,
18011 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
18012 NULL QUALIFIER_ATTRIBUTE,
18013 NULL QUALIFIER_ATTR_VALUE_FROM,
18014 NULL QUALIFIER_PRICING_ATTR_FLAG,
18015 -9999 QUALIFIER_GROUPING_NO,
18016 5000 QUALIFIER_PRECEDENCE,
18017 NULL QUALIFIER_DATATYPE,
18018 NULL SETUP_VALUE_FROM,
18019 NULL SETUP_VALUE_TO,
18020 NULL QUALIFIER_OPERATOR_TYPE,
18021 NULL PRICING_ATTRIBUTE_DATATYPE,
18022 NULL QUALIFIER_TYPE
18023 ,QPL.BREAK_UOM_CODE /* Proration */
18024 ,QPL.BREAK_UOM_CONTEXT /* Proration */
18025 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
18026 ,qplat_prod.DERIVED_QUALIFIER_FLAG -- Added for TCA
18027 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
18028 FROM
18029 qp_npreq_lines_tmp QPLINES,
18030 qp_npreq_line_attrs_tmp qplat_prod,
18031 QP_PRICING_ATTRIBUTES QPA,
18032 QP_LIST_LINES QPL,
18033 QP_LIST_HEADERS_B QPH,
18034 --QP_PRICE_REQ_SOURCES qprs
18035 QP_PRICE_REQ_SOURCES_V qprs /* yangli */
18036 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18037 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_IND
18038 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
18039 AND (QPLINES.PRICE_FLAG = G_YES
18040 OR
18041 (QPLINES.PRICE_FLAG = G_PHASE
18042 AND
18043 P_FREEZE_OVERRIDE_FLAG = G_YES))
18044 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
18045 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
18046 AND QPLINES.VALIDATED_FLAG = G_NO
18047 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
18048 --AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_NO
18049 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
18050 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
18051 AND QPA.EXCLUDER_FLAG = G_NO
18052 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18053 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
18054 --added for moac -- commented references to security profile
18055 --security will be built into qp_list_headers_b
18056 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
18057 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
18058 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
18059 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
18060 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18061 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18062 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18063 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18064 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18065 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18066 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18067 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
18068 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
18069 -- OR
18070 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
18071 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
18072 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
18073 AND QPH.ACTIVE_FLAG = G_YES
18074 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
18075 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
18076 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18077 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
18078 UNION ALL
18079 SELECT /*+ ORDERED USE_NL(QPLINES QPLAT_PROD QPA QPLAT_PRIC QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) INDEX(QPLAT_PRIC qp_preq_line_attrs_tmp_N2) dynamic_sampling(1) l_list_cur */
18080 QPLAT_PROD.LINE_INDEX,
18081 QPL.LIST_LINE_ID,
18082 QPL.ARITHMETIC_OPERATOR,
18083 QPL.OPERAND,
18084 QPL.PRICING_GROUP_SEQUENCE,
18085 QPL.LIST_LINE_TYPE_CODE,
18086 QPL.PRICING_PHASE_ID,
18087 QPL.AUTOMATIC_FLAG,
18088 QPL.INCOMPATIBILITY_GRP_CODE,
18089 QPL.PRICE_BY_FORMULA_ID,
18090 QPL.PRODUCT_PRECEDENCE,
18091 QPL.PRIMARY_UOM_FLAG,
18092 QPL.MODIFIER_LEVEL_CODE,
18093 QPL.LIST_LINE_NO,
18094 QPA.PRODUCT_UOM_CODE,
18095 QPA.EXCLUDER_FLAG,
18096 QPH.LIST_TYPE_CODE,
18097 QPH.ROUNDING_FACTOR,
18098 QPH.LIST_HEADER_ID LIST_HEADER_ID,
18099 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
18100 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
18101 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
18102 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
18103 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
18104 QPLAT_PROD.APPLIED_FLAG,
18105 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
18106 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
18107 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
18108 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
18109 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
18110 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
18111 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
18112 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
18113 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
18114 NULL QUALIFIER_ATTRIBUTE,
18115 NULL QUALIFIER_ATTR_VALUE_FROM,
18116 NULL QUALIFIER_PRICING_ATTR_FLAG,
18117 -9999 QUALIFIER_GROUPING_NO,
18118 5000 QUALIFIER_PRECEDENCE,
18119 NULL QUALIFIER_DATATYPE,
18120 NULL SETUP_VALUE_FROM,
18121 NULL SETUP_VALUE_TO,
18122 NULL QUALIFIER_OPERATOR_TYPE,
18123 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
18124 NULL QUALIFIER_TYPE
18125 ,QPL.BREAK_UOM_CODE /* Proration */
18126 ,QPL.BREAK_UOM_CONTEXT /* Proration */
18127 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
18128 ,qplat_pric.DERIVED_QUALIFIER_FLAG -- Added for TCA
18129 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
18130 FROM
18131 qp_npreq_lines_tmp qplines,
18132 qp_npreq_line_attrs_tmp qplat_prod,
18133 QP_PRICING_ATTRIBUTES qpa,
18134 qp_npreq_line_attrs_tmp qplat_pric,
18135 QP_LIST_LINES qpl,
18136 QP_LIST_HEADERS_B qph,
18137 --QP_PRICE_REQ_SOURCES qprs
18138 QP_PRICE_REQ_SOURCES_V qprs /* yangli */
18139 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18140 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
18141 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
18142 AND (QPLINES.PRICE_FLAG = G_YES
18143 OR
18144 (QPLINES.PRICE_FLAG = G_PHASE
18145 AND
18146 P_FREEZE_OVERRIDE_FLAG = G_YES))
18147 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
18148 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
18149 AND QPLINES.VALIDATED_FLAG = G_NO
18150 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
18151 AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_YES
18152 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
18153 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
18154 AND QPA.EXCLUDER_FLAG = G_NO
18155 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18156 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
18157 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
18158 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
18159 OR
18160 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
18161 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
18162 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18163 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
18164 AND QPH.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18165 --added for moac -- commented references to security profile
18166 --security will be built into qp_list_headers_b
18167 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
18168 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
18169 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
18170 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
18171 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18172 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18173 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18174 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18175 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18176 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18177 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18178 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
18179 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
18180 -- OR
18181 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
18182 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
18183 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
18184 AND QPH.ACTIVE_FLAG = G_YES
18185 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
18186 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
18187 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18188 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
18189 ORDER BY 1,2;
18190
18191 -- vivek
18192 CURSOR L_LIST_QUAL_CUR_CURRENCY IS
18193 SELECT /*+ ORDERED USE_NL(QPQ QPLAT_Q QPLAT_PROD QPA QPL QPH) INDEX(QPQ QP_QUALIFIERS_N1) INDEX(QPLAT_Q qp_preq_line_attrs_tmp_N2) l_list_qual_cur */
18194 QPLAT_PROD.LINE_INDEX,
18195 QPL.LIST_LINE_ID,
18196 QPL.ARITHMETIC_OPERATOR,
18197 QPL.OPERAND,
18198 QPL.PRICING_GROUP_SEQUENCE,
18199 QPL.LIST_LINE_TYPE_CODE,
18200 QPL.PRICING_PHASE_ID,
18201 QPL.AUTOMATIC_FLAG,
18202 QPL.INCOMPATIBILITY_GRP_CODE,
18203 QPL.PRICE_BY_FORMULA_ID,
18204 QPL.PRODUCT_PRECEDENCE,
18205 QPL.PRIMARY_UOM_FLAG,
18206 QPL.MODIFIER_LEVEL_CODE,
18207 QPL.LIST_LINE_NO,
18208 QPA.PRODUCT_UOM_CODE,
18209 QPA.EXCLUDER_FLAG,
18210 QPH.LIST_TYPE_CODE,
18211 /* vivek QPH.ROUNDING_FACTOR, */
18212 QCDT.ROUNDING_FACTOR, /* vivek */
18213 QPH.LIST_HEADER_ID LIST_HEADER_ID,
18214 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
18215 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
18216 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
18217 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
18218 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
18219 QPLAT_PROD.APPLIED_FLAG,
18220 NULL PRICING_ATTRIBUTE_CONTEXT,
18221 NULL PRICING_ATTRIBUTE,
18222 NULL PRICING_ATTR_VALUE_FROM,
18223 NULL PRICING_SETUP_VALUE_FROM,
18224 NULL PRICING_SETUP_VALUE_TO,
18225 NULL PRICING_ATTRIBUTE_LEVEL,
18226 NULL PRICING_ATTRIBUTE_TYPE,
18227 NULL PRICING_OPERATOR_TYPE,
18228 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
18229 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
18230 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
18231 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
18232 QPQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
18233 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
18234 QPQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
18235 QPQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
18236 QPQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
18237 QPQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
18238 NULL PRICING_ATTRIBUTE_DATATYPE,
18239 decode(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE,
18240 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
18241 QCDT.CURRENCY_HEADER_ID, /* vivek */
18242 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
18243 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
18244 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
18245 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
18246 ,QPL.BREAK_UOM_CODE /* Proration */
18247 ,QPL.BREAK_UOM_CONTEXT /* Proration */
18248 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
18249 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
18250 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
18251 FROM
18252 qp_npreq_lines_tmp QPLINES,
18253 QP_QUALIFIERS QPQ,
18254 qp_npreq_line_attrs_tmp QPLAT_Q,
18255 qp_npreq_line_attrs_tmp QPLAT_PROD,
18256 QP_PRICING_ATTRIBUTES QPA,
18257 QP_LIST_LINES QPL,
18258 QP_LIST_HEADERS_B QPH,
18259 --QP_PRICE_REQ_SOURCES QPRS,
18260 QP_PRICE_REQ_SOURCES_V QPRS, /* yangli */
18261 QP_CURRENCY_DETAILS QCDT /* Vivek */
18262 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18263 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
18264 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
18265 AND (QPLINES.PRICE_FLAG = G_YES
18266 OR
18267 (QPLINES.PRICE_FLAG = G_PHASE
18268 AND
18269 P_FREEZE_OVERRIDE_FLAG = G_YES))
18270 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
18271 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
18272 AND QPLINES.VALIDATED_FLAG = G_NO
18273 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_YES
18274 --AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_NO
18275 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
18276 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
18277 AND QPA.EXCLUDER_FLAG = G_NO
18278 AND QPL.LIST_HEADER_ID = QPH.LIST_HEADER_ID
18279 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
18280 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18281 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18282 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18283 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18284 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18285 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18286 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18287 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
18288 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
18289 --added for moac -- commented references to security profile
18290 --security will be built into qp_list_headers_b
18291 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
18292 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
18293 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
18294 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
18295 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18296 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18297 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18298 AND ( /* Vivek */
18299 (qcdt.curr_attribute_context is null /* Vivek */
18300 and not exists /* Vivek */
18301 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
18302 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
18303 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
18304 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
18305 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
18306 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
18307 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
18308 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
18309 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
18310 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18311 and pa_tmp.line_index = qplines.line_index /* Vivek */
18312 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18313 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18314 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18315 ) /* Vivek */
18316 ) /* Vivek */
18317 OR /* Vivek */
18318 (qcdt.curr_attribute_context is not null /* Vivek */
18319 and qcdt.currency_detail_id = /* Vivek */
18320 (select qcdt3.currency_detail_id
18321 from qp_currency_details qcdt3 /* Vivek */
18322 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
18323 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
18324 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18325 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18326 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18327 and qcdt3.precedence =
18328 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
18329 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
18330 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
18331 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
18332 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
18333 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
18334 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
18335 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
18336 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
18337 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18338 and pa_tmp1.line_index = qplines.line_index /* Vivek */
18339 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18340 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18341 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18342 )) /* Vivek */
18343 ) /* Vivek */
18344 ) /* Vivek */
18345 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
18346 -- OR
18347 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
18348 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
18349 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
18350 AND QPH.ACTIVE_FLAG = G_YES
18351 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
18352 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
18353 -- 3594459, context and attribute OR'd together
18354 AND (QPQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
18355 OR QPQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
18356 AND QPLAT_Q.CONTEXT = QPQ.QUALIFIER_CONTEXT
18357 AND QPLAT_Q.ATTRIBUTE = QPQ.QUALIFIER_ATTRIBUTE
18358 AND QPQ.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18359 AND QPQ.ACTIVE_FLAG = G_YES
18360 AND ((QPLAT_Q.VALUE_FROM = QPQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
18361 AND QPQ.COMPARISON_OPERATOR_CODE = '=')
18362 OR (QPLAT_Q.VALUE_FROM <> QPQ.QUALIFIER_ATTR_VALUE
18363 AND QPQ.COMPARISON_OPERATOR_CODE = 'NOT =')
18364 OR
18365 QPQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
18366 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
18367 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18368 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
18369 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
18370 AND QPLAT_PROD.LINE_INDEX = QPLAT_Q.LINE_INDEX
18371 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18372 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18373 AND QPLAT_Q. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18374 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
18375 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
18376 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
18377 UNION ALL
18378 SELECT /*+ ORDERED USE_NL(QPLINES QPQ QPLAT_Q QPLAT_PROD QPA QPLAT_PRIC QPL QPH) INDEX(QPQ QP_QUALIFIERS_N1) INDEX(QPLAT_Q qp_preq_line_attrs_tmp_N2) INDEX(QPA QP_PRICING_ATTRIBUTES_N5) INDEX(QPLAT_PRIC qp_preq_line_attrs_tmp_N2) l_list_qual_cur */
18379 QPLAT_PROD.LINE_INDEX,
18380 QPL.LIST_LINE_ID,
18381 QPL.ARITHMETIC_OPERATOR,
18382 QPL.OPERAND,
18383 QPL.PRICING_GROUP_SEQUENCE,
18384 QPL.LIST_LINE_TYPE_CODE,
18385 QPL.PRICING_PHASE_ID,
18386 QPL.AUTOMATIC_FLAG,
18387 QPL.INCOMPATIBILITY_GRP_CODE,
18388 QPL.PRICE_BY_FORMULA_ID,
18389 QPL.PRODUCT_PRECEDENCE,
18390 QPL.PRIMARY_UOM_FLAG,
18391 QPL.MODIFIER_LEVEL_CODE,
18392 QPL.LIST_LINE_NO,
18393 QPA.PRODUCT_UOM_CODE,
18394 QPA.EXCLUDER_FLAG,
18395 QPH.LIST_TYPE_CODE,
18396 /* vivek QPH.ROUNDING_FACTOR, */
18397 QCDT.ROUNDING_FACTOR, /* vivek */
18398 QPH.LIST_HEADER_ID LIST_HEADER_ID,
18399 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
18400 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
18401 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
18402 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
18403 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
18404 QPLAT_PROD.APPLIED_FLAG,
18405 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
18406 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
18407 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
18408 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
18409 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
18410 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
18411 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
18412 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
18413 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
18414 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
18415 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
18416 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
18417 QPQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
18418 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
18419 QPQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
18420 QPQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
18421 QPQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
18422 QPQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
18423 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
18424 decode(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE,
18425 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
18426 QCDT.CURRENCY_HEADER_ID, /* vivek */
18427 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
18428 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
18429 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
18430 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
18431 ,QPL.BREAK_UOM_CODE /* Proration */
18432 ,QPL.BREAK_UOM_CONTEXT /* Proration */
18433 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
18434 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
18435 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
18436 FROM
18437 qp_npreq_lines_tmp QPLINES,
18438 QP_QUALIFIERS QPQ,
18439 qp_npreq_line_attrs_tmp QPLAT_Q,
18440 qp_npreq_line_attrs_tmp QPLAT_PROD,
18441 QP_PRICING_ATTRIBUTES QPA,
18442 qp_npreq_line_attrs_tmp QPLAT_PRIC,
18443 QP_LIST_LINES QPL,
18444 QP_LIST_HEADERS_B QPH,
18445 --QP_PRICE_REQ_SOURCES QPRS,
18446 QP_PRICE_REQ_SOURCES_V QPRS, /* yangli */
18447 QP_CURRENCY_DETAILS QCDT /* Vivek */
18448 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18449 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
18450 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
18451 AND (QPLINES.PRICE_FLAG = G_YES
18452 OR
18453 (QPLINES.PRICE_FLAG = G_PHASE
18454 AND
18455 P_FREEZE_OVERRIDE_FLAG = G_YES))
18456 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
18457 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
18458 AND QPLINES.VALIDATED_FLAG = G_NO
18459 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_YES
18460 AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_YES
18461 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
18462 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
18463 AND QPA.EXCLUDER_FLAG = G_NO
18464 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
18465 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
18466 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
18467 OR
18468 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
18469 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
18470 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18471 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
18472 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
18473 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
18474 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18475 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18476 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18477 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18478 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18479 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18480 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18481 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
18482 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
18483 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
18484 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18485 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18486 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18487 AND ( /* Vivek */
18488 (qcdt.curr_attribute_context is null /* Vivek */
18489 and not exists /* Vivek */
18490 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
18491 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
18492 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
18493 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
18494 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
18495 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
18496 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
18497 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
18498 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
18499 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18500 and pa_tmp.line_index = qplines.line_index /* Vivek */
18501 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18502 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18503 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18504 ) /* Vivek */
18505 ) /* Vivek */
18506 OR /* Vivek */
18507 (qcdt.curr_attribute_context is not null /* Vivek */
18508 and qcdt.currency_detail_id = /* Vivek */
18509 (select qcdt3.currency_detail_id
18510 from qp_currency_details qcdt3 /* Vivek */
18511 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
18512 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
18513 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18514 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18515 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18516 and qcdt3.precedence =
18517 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
18518 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
18519 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
18520 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
18521 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
18522 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
18523 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
18524 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
18525 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
18526 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18527 and pa_tmp1.line_index = qplines.line_index /* Vivek */
18528 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18529 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18530 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18531 )) /* Vivek */
18532 ) /* Vivek */
18533 ) /* Vivek */
18534 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
18535 -- OR
18536 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
18537 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
18538 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
18539 AND QPH.ACTIVE_FLAG = G_YES
18540 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
18541 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
18542 -- 3594459, context and attribute OR'd together
18543 AND (QPQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
18544 OR QPQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
18545 AND QPLAT_Q.CONTEXT = QPQ.QUALIFIER_CONTEXT
18546 AND QPLAT_Q.ATTRIBUTE = QPQ.QUALIFIER_ATTRIBUTE
18547 AND QPQ.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18548 --added for moac -- commented references to security profile
18549 --security will be built into qp_list_headers_b
18550 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
18551 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
18552 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
18553 AND QPQ.ACTIVE_FLAG = G_YES
18554 AND ((QPLAT_Q.VALUE_FROM = QPQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
18555 AND QPQ.COMPARISON_OPERATOR_CODE = '=')
18556 OR (QPLAT_Q.VALUE_FROM <> QPQ.QUALIFIER_ATTR_VALUE
18557 AND QPQ.COMPARISON_OPERATOR_CODE = 'NOT =')
18558 OR
18559 QPQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
18560 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
18561 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18562 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
18563 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
18564 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
18565 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18566 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18567 AND QPLAT_Q. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18568 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
18569 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
18570 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
18571 UNION ALL
18572 SELECT /*+ ORDERED USE_NL(QPLINES QPLAT_PROD QPA QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) l_list_cur */
18573 QPLAT_PROD.LINE_INDEX,
18574 QPL.LIST_LINE_ID,
18575 QPL.ARITHMETIC_OPERATOR,
18576 QPL.OPERAND,
18577 QPL.PRICING_GROUP_SEQUENCE,
18578 QPL.LIST_LINE_TYPE_CODE,
18579 QPL.PRICING_PHASE_ID,
18580 QPL.AUTOMATIC_FLAG,
18581 QPL.INCOMPATIBILITY_GRP_CODE,
18582 QPL.PRICE_BY_FORMULA_ID,
18583 QPL.PRODUCT_PRECEDENCE,
18584 QPL.PRIMARY_UOM_FLAG,
18585 QPL.MODIFIER_LEVEL_CODE,
18586 QPL.LIST_LINE_NO,
18587 QPA.PRODUCT_UOM_CODE,
18588 QPA.EXCLUDER_FLAG,
18589 QPH.LIST_TYPE_CODE,
18590 /* vivek QPH.ROUNDING_FACTOR, */
18591 QCDT.ROUNDING_FACTOR, /* vivek */
18592 QPH.LIST_HEADER_ID LIST_HEADER_ID,
18593 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
18594 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
18595 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
18596 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
18597 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
18598 QPLAT_PROD.APPLIED_FLAG,
18599 NULL PRICING_ATTRIBUTE_CONTEXT,
18600 NULL PRICING_ATTRIBUTE,
18601 NULL PRICING_ATTR_VALUE_FROM,
18602 NULL PRICING_SETUP_VALUE_FROM,
18603 NULL PRICING_SETUP_VALUE_TO,
18604 NULL PRICING_ATTRIBUTE_LEVEL,
18605 NULL PRICING_ATTRIBUTE_TYPE,
18606 NULL PRICING_OPERATOR_TYPE,
18607 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
18608 NULL QUALIFIER_ATTRIBUTE,
18609 NULL QUALIFIER_ATTR_VALUE_FROM,
18610 NULL QUALIFIER_PRICING_ATTR_FLAG,
18611 -9999 QUALIFIER_GROUPING_NO,
18612 5000 QUALIFIER_PRECEDENCE,
18613 NULL QUALIFIER_DATATYPE,
18614 NULL SETUP_VALUE_FROM,
18615 NULL SETUP_VALUE_TO,
18616 NULL QUALIFIER_OPERATOR_TYPE,
18617 NULL PRICING_ATTRIBUTE_DATATYPE,
18618 NULL QUALIFIER_TYPE,
18619 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
18620 QCDT.CURRENCY_HEADER_ID, /* vivek */
18621 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
18622 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
18623 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
18624 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
18625 ,QPL.BREAK_UOM_CODE /* Proration */
18626 ,QPL.BREAK_UOM_CONTEXT /* Proration */
18627 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
18628 ,qplat_prod.DERIVED_QUALIFIER_FLAG -- Added for TCA
18629 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
18630 FROM
18631 qp_npreq_lines_tmp QPLINES,
18632 qp_npreq_line_attrs_tmp qplat_prod,
18633 QP_PRICING_ATTRIBUTES QPA,
18634 QP_LIST_LINES QPL,
18635 QP_LIST_HEADERS_B QPH,
18636 --QP_PRICE_REQ_SOURCES qprs,
18637 QP_PRICE_REQ_SOURCES_V qprs, /* yangli */
18638 QP_CURRENCY_DETAILS QCDT /* Vivek */
18639 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18640 --AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND, QP_PREQ_GRP.G_YES_PROD_IND)
18641 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_IND
18642 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
18643 AND (QPLINES.PRICE_FLAG = G_YES
18644 OR
18645 (QPLINES.PRICE_FLAG = G_PHASE
18646 AND
18647 P_FREEZE_OVERRIDE_FLAG = G_YES))
18648 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
18649 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
18650 AND QPLINES.VALIDATED_FLAG = G_NO
18651 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
18652 --AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_NO
18653 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
18654 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
18655 AND QPA.EXCLUDER_FLAG = G_NO
18656 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18657 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
18658 --added for moac -- commented references to security profile
18659 --security will be built into qp_list_headers_b
18660 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
18661 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
18662 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
18663 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
18664 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18665 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18666 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18667 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18668 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18669 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18670 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18671 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
18672 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
18673 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
18674 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18675 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18676 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18677 AND ( /* Vivek */
18678 (qcdt.curr_attribute_context is null /* Vivek */
18679 and not exists /* Vivek */
18680 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
18681 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
18682 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
18683 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
18684 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
18685 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
18686 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
18687 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
18688 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
18689 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18690 and pa_tmp.line_index = qplines.line_index /* Vivek */
18691 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18692 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18693 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18694 ) /* Vivek */
18695 ) /* Vivek */
18696 OR /* Vivek */
18697 (qcdt.curr_attribute_context is not null /* Vivek */
18698 and qcdt.currency_detail_id = /* Vivek */
18699 (select qcdt3.currency_detail_id
18700 from qp_currency_details qcdt3 /* Vivek */
18701 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
18702 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
18703 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18704 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18705 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18706 and qcdt3.precedence =
18707 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
18708 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
18709 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
18710 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
18711 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
18712 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
18713 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
18714 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
18715 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
18716 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18717 and pa_tmp1.line_index = qplines.line_index /* Vivek */
18718 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18719 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18720 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18721 )) /* Vivek */
18722 ) /* Vivek */
18723 ) /* Vivek */
18724 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
18725 -- OR
18726 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
18727 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
18728 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
18729 AND QPH.ACTIVE_FLAG = G_YES
18730 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
18731 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
18732 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18733 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
18734 UNION ALL
18735 SELECT /*+ ORDERED USE_NL(QPLINES QPLAT_PROD QPA QPLAT_PRIC QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) INDEX(QPLAT_PRIC qp_preq_line_attrs_tmp_N2) l_list_cur */
18736 QPLAT_PROD.LINE_INDEX,
18737 QPL.LIST_LINE_ID,
18738 QPL.ARITHMETIC_OPERATOR,
18739 QPL.OPERAND,
18740 QPL.PRICING_GROUP_SEQUENCE,
18741 QPL.LIST_LINE_TYPE_CODE,
18742 QPL.PRICING_PHASE_ID,
18743 QPL.AUTOMATIC_FLAG,
18744 QPL.INCOMPATIBILITY_GRP_CODE,
18745 QPL.PRICE_BY_FORMULA_ID,
18746 QPL.PRODUCT_PRECEDENCE,
18747 QPL.PRIMARY_UOM_FLAG,
18748 QPL.MODIFIER_LEVEL_CODE,
18749 QPL.LIST_LINE_NO,
18750 QPA.PRODUCT_UOM_CODE,
18751 QPA.EXCLUDER_FLAG,
18752 QPH.LIST_TYPE_CODE,
18753 /* vivek QPH.ROUNDING_FACTOR, */
18754 QCDT.ROUNDING_FACTOR, /* vivek */
18755 QPH.LIST_HEADER_ID LIST_HEADER_ID,
18756 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
18757 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
18758 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
18759 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
18760 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
18761 QPLAT_PROD.APPLIED_FLAG,
18762 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
18763 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
18764 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
18765 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
18766 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
18767 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
18768 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
18769 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
18770 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
18771 NULL QUALIFIER_ATTRIBUTE,
18772 NULL QUALIFIER_ATTR_VALUE_FROM,
18773 NULL QUALIFIER_PRICING_ATTR_FLAG,
18774 -9999 QUALIFIER_GROUPING_NO,
18775 5000 QUALIFIER_PRECEDENCE,
18776 NULL QUALIFIER_DATATYPE,
18777 NULL SETUP_VALUE_FROM,
18778 NULL SETUP_VALUE_TO,
18779 NULL QUALIFIER_OPERATOR_TYPE,
18780 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
18781 NULL QUALIFIER_TYPE,
18782 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
18783 QCDT.CURRENCY_HEADER_ID, /* vivek */
18784 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
18785 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
18786 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
18787 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
18788 ,QPL.BREAK_UOM_CODE /* Proration */
18789 ,QPL.BREAK_UOM_CONTEXT /* Proration */
18790 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
18791 ,qplat_pric.DERIVED_QUALIFIER_FLAG -- Added for TCA
18792 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
18793 FROM
18794 qp_npreq_lines_tmp qplines,
18795 qp_npreq_line_attrs_tmp qplat_prod,
18796 QP_PRICING_ATTRIBUTES qpa,
18797 qp_npreq_line_attrs_tmp qplat_pric,
18798 QP_LIST_LINES qpl,
18799 QP_LIST_HEADERS_B qph,
18800 --QP_PRICE_REQ_SOURCES qprs,
18801 QP_PRICE_REQ_SOURCES_V qprs, /* yangli */
18802 QP_CURRENCY_DETAILS QCDT /* Vivek */
18803 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18804 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
18805 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
18806 AND (QPLINES.PRICE_FLAG = G_YES
18807 OR
18808 (QPLINES.PRICE_FLAG = G_PHASE
18809 AND
18810 P_FREEZE_OVERRIDE_FLAG = G_YES))
18811 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
18812 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
18813 AND QPLINES.VALIDATED_FLAG = G_NO
18814 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
18815 AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_YES
18816 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
18817 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
18818 AND QPA.EXCLUDER_FLAG = G_NO
18819 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18820 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
18821 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
18822 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
18823 OR
18824 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
18825 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
18826 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18827 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
18828 AND QPH.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18829 --added for moac -- commented references to security profile
18830 --security will be built into qp_list_headers_b
18831 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
18832 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
18833 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
18834 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
18835 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18836 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18837 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18838 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18839 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18840 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18841 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18842 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
18843 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
18844 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
18845 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18846 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18847 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18848 AND ( /* Vivek */
18849 (qcdt.curr_attribute_context is null /* Vivek */
18850 and not exists /* Vivek */
18851 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
18852 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
18853 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
18854 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
18855 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
18856 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
18857 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
18858 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
18859 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
18860 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18861 and pa_tmp.line_index = qplines.line_index /* Vivek */
18862 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18863 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18864 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18865 ) /* Vivek */
18866 ) /* Vivek */
18867 OR /* Vivek */
18868 (qcdt.curr_attribute_context is not null /* Vivek */
18869 and qcdt.currency_detail_id = /* Vivek */
18870 (select qcdt3.currency_detail_id
18871 from qp_currency_details qcdt3 /* Vivek */
18872 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
18873 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
18874 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18875 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18876 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18877 and qcdt3.precedence =
18878 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
18879 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
18880 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
18881 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
18882 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
18883 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
18884 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
18885 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
18886 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
18887 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18888 and pa_tmp1.line_index = qplines.line_index /* Vivek */
18889 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18890 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18891 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18892 )) /* Vivek */
18893 ) /* Vivek */
18894 ) /* Vivek */
18895 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
18896 -- OR
18897 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
18898 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
18899 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
18900 AND QPH.ACTIVE_FLAG = G_YES
18901 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
18902 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
18903 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18904 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
18905 ORDER BY 1,2;
18906
18907 /*
18908 INDX,QP_PREQ_GRP.list_header_search.l_validated_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
18909 INDX,QP_PREQ_GRP.list_header_search.l_validated_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
18910 INDX,QP_PREQ_GRP.list_header_search.l_validated_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
18911 INDX,QP_PREQ_GRP.list_header_search.l_validated_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
18912
18913 INDX,QP_PREQ_GRP.list_header_search.l_validated_cur,qp_npreq_lines_tmp_U1,LINE_INDEX,1
18914 INDX,QP_PREQ_GRP.list_header_search.l_validated_cur,qp_npreq_lines_tmp_U1,LINE_TYPE_CODE,2
18915 */
18916
18917 CURSOR l_validated_cur IS
18918 SELECT /*+ dynamic_sampling(1) */ LINE_INDEX,
18919 LINE_DETAIL_INDEX,
18920 ATTRIBUTE_LEVEL,
18921 ATTRIBUTE_TYPE,
18922 CONTEXT,
18923 ATTRIBUTE,
18924 VALUE_FROM,
18925 VALUE_TO,
18926 PRODUCT_UOM_CODE,
18927 COMPARISON_OPERATOR_TYPE_CODE COMPARISON_OPERATOR_TYPE
18928 FROM qp_npreq_line_attrs_tmp a
18929 WHERE PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18930 AND VALIDATED_FLAG = G_VALIDATED
18931 AND CONTEXT = G_LIST_HEADER_CONTEXT
18932 AND ATTRIBUTE IN (G_PROMOTION_ATTRIBUTE,G_QUAL_ATTRIBUTE2)
18933 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
18934 AND EXISTS
18935 (Select /*+ dynamic_sampling(1) */ 'X'
18936 FROM qp_npreq_lines_tmp b
18937 WHERE b.line_index = a.line_index
18938 AND (b.price_flag = G_YES
18939 OR
18940 (b.price_flag = G_PHASE
18941 AND
18942 p_freeze_override_flag = G_YES)
18943 )
18944 AND b.line_type_code <> G_ORDER_LEVEL
18945 );
18946
18947 --THE DIFFERENT BETWEEN THIS SEARCH AND PRICE LIST SEARCH
18948 --IS THIS SEARCH CHECKS FOR LINE LEVEL QUALIFIER ALSO
18949 /*
18950 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
18951
18952 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
18953 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
18954 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
18955
18956 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
18957 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,qp_npreq_lines_tmp_N1,LINE_TYPE_CODE,2
18958
18959 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
18960 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
18961 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
18962 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
18963 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
18964 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N5,LIST_HEADER_ID,7
18965 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N5,LIST_LINE_ID,8
18966
18967 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
18968 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICE_REQ_SOURCES_PK,SOURCE_SYSTEM_CODE,2
18969
18970 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
18971
18972 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N4,PRICING_ATTRIBUTE_CONTEXT,1
18973 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N4,PRICING_ATTRIBUTE,2
18974 */
18975
18976 CURSOR L_OTHER_LIST_CUR (L_LINE_INDEX PLS_INTEGER,
18977 L_LIST_HEADER_ID NUMBER,
18978 P_FREEZE_OVERRIDE_FLAG VARCHAR2)IS
18979 SELECT /*+ ORDERED USE_NL(QPLAT_PROD QPA QPH QPL QPRS) index(QPA QP_PRICING_ATTRIBUTES_N5) index(qph qp_list_headers_b_n7) l_other_list_cur */
18980 QPLINES.LINE_INDEX,
18981 QPL.LIST_LINE_ID,
18982 QPL.ARITHMETIC_OPERATOR,
18983 QPL.OPERAND,
18984 QPL.PRICING_GROUP_SEQUENCE,
18985 QPL.LIST_LINE_TYPE_CODE,
18986 QPL.LIST_PRICE,
18987 QPL.LIST_PRICE_UOM_CODE,
18988 QPL.PERCENT_PRICE,
18989 QPL.PRICING_PHASE_ID,
18990 QPL.AUTOMATIC_FLAG,
18991 QPL.OVERRIDE_FLAG,
18992 QPL.PRINT_ON_INVOICE_FLAG,
18993 QPL.MODIFIER_LEVEL_CODE,
18994 QPL.BENEFIT_QTY,
18995 QPL.BENEFIT_UOM_CODE,
18996 QPL.SERVICE_DURATION, -- service project
18997 QPL.SERVICE_PERIOD, -- service project
18998 QPL.LIST_LINE_NO,
18999 QPL.ACCRUAL_FLAG,
19000 QPL.ACCRUAL_CONVERSION_RATE,
19001 QPL.ESTIM_ACCRUAL_RATE,
19002 QPL.RECURRING_FLAG,
19003 QPL.INCOMPATIBILITY_GRP_CODE,
19004 QPL.PRICE_BY_FORMULA_ID,
19005 QPL.PRODUCT_PRECEDENCE,
19006 QPL.PRIMARY_UOM_FLAG,
19007 QPA.PRODUCT_UOM_CODE,
19008 QPA.EXCLUDER_FLAG,
19009 QPH.ASK_FOR_FLAG,
19010 QPH.LIST_TYPE_CODE,
19011 QPH.ROUNDING_FACTOR,
19012 QPLAT_PROD.LINE_DETAIL_INDEX,
19013 L_LIST_HEADER_ID LIST_HEADER_ID,
19014 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
19015 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
19016 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
19017 QPLAT_PROD.VALUE_TO PRODUCT_ATTR_VALUE_TO,
19018 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
19019 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
19020 QPL.AUTOMATIC_FLAG APPLIED_FLAG, -- shu fix bug 1915355
19021 QPLAT_PROD.COMPARISON_OPERATOR_TYPE_CODE PRODUCT_OPERATOR_TYPE,
19022 NULL PRICING_ATTRIBUTE_CONTEXT,
19023 NULL PRICING_ATTRIBUTE,
19024 NULL PRICING_ATTR_VALUE_FROM,
19025 NULL PRICING_SETUP_VALUE_FROM,
19026 NULL PRICING_SETUP_VALUE_TO,
19027 NULL PRICING_ATTRIBUTE_LEVEL,
19028 NULL PRICING_ATTRIBUTE_TYPE,
19029 NULL PRICING_OPERATOR_TYPE,
19030 NULL PRICING_ATTRIBUTE_DATATYPE
19031 FROM
19032 qp_npreq_lines_tmp QPLINES,
19033 qp_npreq_line_attrs_tmp QPLAT_PROD,
19034 QP_PRICING_ATTRIBUTES QPA,
19035 QP_LIST_HEADERS_B QPH,
19036 QP_LIST_LINES QPL,
19037 QP_PRICE_REQ_SOURCES_V QPRS
19038 WHERE QPA.PRICING_PHASE_ID = P_PRICING_PHASE_ID
19039 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_IND, QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND,
19040 QP_PREQ_GRP.G_YES_PROD_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_HDR_LINE_QUAL_IND)
19041 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
19042 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
19043 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
19044 AND QPLINES.PRICED_UOM_CODE = NVL(QPA.PRODUCT_UOM_CODE,QPLINES.PRICED_UOM_CODE)
19045 AND (QPLINES.PRICE_FLAG = G_YES
19046 OR
19047 (QPLINES.PRICE_FLAG = G_PHASE
19048 AND
19049 P_FREEZE_OVERRIDE_FLAG = G_YES))
19050 AND QPH.LIST_HEADER_ID = L_LIST_HEADER_ID
19051 --added for moac -- commented references to security profile
19052 --security will be built into qp_list_headers_b
19053 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
19054 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
19055 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
19056 AND QPH.ASK_FOR_FLAG = G_YES
19057 AND QPA.LIST_HEADER_ID = L_LIST_HEADER_ID
19058 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
19059 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
19060 --AND QPL.PRICING_PHASE_ID = p_pricing_phase_id
19061 --AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_IND, QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND,
19062 -- QP_PREQ_GRP.G_YES_PROD_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_HDR_LINE_QUAL_IND)
19063 AND QPLAT_PROD.LINE_INDEX = L_LINE_INDEX
19064 AND QPLINES.LINE_INDEX = L_LINE_INDEX
19065 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
19066 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19067 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19068 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
19069 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
19070 TRUNC(SYSDATE) )) AND
19071 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
19072 TRUNC(SYSDATE) ))
19073 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
19074 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
19075 TRUNC(SYSDATE) )) AND
19076 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
19077 TRUNC(SYSDATE) ))
19078 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
19079 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
19080 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
19081 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
19082 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
19083 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19084 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19085 AND ((QPH.CURRENCY_CODE IS NOT NULL AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE)
19086 OR
19087 QPH.CURRENCY_CODE IS NULL) -- optional currency
19088 AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
19089 OR
19090 QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
19091 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
19092 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
19093 AND QPH.ACTIVE_FLAG = G_YES
19094 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
19095 UNION ALL
19096 SELECT /*+ ORDERED USE_NL(QPLAT_PROD QPA QPLAT_PRIC QPH QPL QPRS) index(QPA QP_PRICING_ATTRIBUTES_N5) index(qplat_pric qp_preq_line_attrs_tmp_N2) index(qph qp_list_headers_b_n7) l_other_list_cur */
19097 QPLINES.LINE_INDEX,
19098 QPL.LIST_LINE_ID,
19099 QPL.ARITHMETIC_OPERATOR,
19100 QPL.OPERAND,
19101 QPL.PRICING_GROUP_SEQUENCE,
19102 QPL.LIST_LINE_TYPE_CODE,
19103 QPL.LIST_PRICE,
19104 QPL.LIST_PRICE_UOM_CODE,
19105 QPL.PERCENT_PRICE,
19106 QPL.PRICING_PHASE_ID,
19107 QPL.AUTOMATIC_FLAG,
19108 QPL.OVERRIDE_FLAG,
19109 QPL.PRINT_ON_INVOICE_FLAG,
19110 QPL.MODIFIER_LEVEL_CODE,
19111 QPL.BENEFIT_QTY,
19112 QPL.BENEFIT_UOM_CODE,
19113 QPL.SERVICE_DURATION, -- service project
19114 QPL.SERVICE_PERIOD, -- service project
19115 QPL.LIST_LINE_NO,
19116 QPL.ACCRUAL_FLAG,
19117 QPL.ACCRUAL_CONVERSION_RATE,
19118 QPL.ESTIM_ACCRUAL_RATE,
19119 QPL.RECURRING_FLAG,
19120 QPL.INCOMPATIBILITY_GRP_CODE,
19121 QPL.PRICE_BY_FORMULA_ID,
19122 QPL.PRODUCT_PRECEDENCE,
19123 QPL.PRIMARY_UOM_FLAG,
19124 QPA.PRODUCT_UOM_CODE,
19125 QPA.EXCLUDER_FLAG,
19126 QPH.ASK_FOR_FLAG,
19127 QPH.LIST_TYPE_CODE,
19128 QPH.ROUNDING_FACTOR,
19129 QPLAT_PROD.LINE_DETAIL_INDEX,
19130 L_LIST_HEADER_ID LIST_HEADER_ID,
19131 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
19132 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
19133 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
19134 QPLAT_PROD.VALUE_TO PRODUCT_ATTR_VALUE_TO,
19135 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
19136 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
19137 QPL.AUTOMATIC_FLAG APPLIED_FLAG, -- shu fix bug 1915355
19138 QPLAT_PROD.COMPARISON_OPERATOR_TYPE_CODE PRODUCT_OPERATOR_TYPE,
19139 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
19140 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
19141 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
19142 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
19143 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
19144 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
19145 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
19146 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
19147 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE
19148 FROM
19149 qp_npreq_lines_tmp QPLINES,
19150 qp_npreq_line_attrs_tmp QPLAT_PROD,
19151 QP_PRICING_ATTRIBUTES QPA,
19152 qp_npreq_line_attrs_tmp QPLAT_PRIC,
19153 QP_LIST_HEADERS_B QPH,
19154 QP_LIST_LINES QPL,
19155 QP_PRICE_REQ_SOURCES QPRS
19156 WHERE QPA.PRICING_PHASE_ID = p_pricing_phase_id
19157 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_IND, QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,
19158 QP_PREQ_GRP.G_YES_PROD_PRIC_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PRIC_HDR_LINE_QUAL_IND)
19159 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
19160 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
19161 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
19162 AND QPLINES.PRICED_UOM_CODE = NVL(QPA.PRODUCT_UOM_CODE,QPLINES.PRICED_UOM_CODE)
19163 AND (QPLINES.PRICE_FLAG = G_YES
19164 OR
19165 (QPLINES.PRICE_FLAG = G_PHASE
19166 AND
19167 P_FREEZE_OVERRIDE_FLAG = G_YES))
19168 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
19169 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
19170 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
19171 OR
19172 QPA.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
19173 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
19174 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
19175 AND QPLAT_PROD.LINE_INDEX = QPLAT_PRIC.LINE_INDEX
19176 AND QPH.LIST_HEADER_ID = L_LIST_HEADER_ID
19177 AND QPH.ASK_FOR_FLAG = G_YES
19178 AND QPA.LIST_HEADER_ID = L_LIST_HEADER_ID
19179 --added for moac -- commented references to security profile
19180 --security will be built into qp_list_headers_b
19181 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
19182 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
19183 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
19184 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
19185 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
19186 --AND QPL.PRICING_PHASE_ID = p_pricing_phase_id
19187 --AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_IND, QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,
19188 -- QP_PREQ_GRP.G_YES_PROD_PRIC_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PRIC_HDR_LINE_QUAL_IND)
19189 AND QPLAT_PROD.LINE_INDEX = L_LINE_INDEX
19190 AND QPLINES.LINE_INDEX = L_LINE_INDEX
19191 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
19192 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19193 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19194 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
19195 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
19196 TRUNC(SYSDATE) )) AND
19197 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
19198 TRUNC(SYSDATE) ))
19199 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
19200 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
19201 TRUNC(SYSDATE) )) AND
19202 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
19203 TRUNC(SYSDATE) ))
19204 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
19205 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
19206 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
19207 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
19208 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
19209 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19210 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19211 AND ((QPH.CURRENCY_CODE IS NOT NULL AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE)
19212 OR
19213 QPH.CURRENCY_CODE IS NULL) -- optional currency
19214 AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
19215 OR
19216 QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
19217 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
19218 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
19219 AND QPH.ACTIVE_FLAG = G_YES
19220 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
19221 ORDER BY 1,2;
19222
19223
19224 CURSOR L_OTHER_LIST_LINE_CUR (L_LINE_INDEX PLS_INTEGER,
19225 L_LIST_LINE_ID NUMBER,
19226 P_FREEZE_OVERRIDE_FLAG VARCHAR2)IS
19227 SELECT /*+ ORDERED USE_NL(QPLAT_PROD QPA QPL QPH ) index(QPA QP_PRICING_ATTRIBUTES_N5) index(qph qp_list_headers_b_n7) l_other_list_line_cur */
19228 QPLINES.LINE_INDEX,
19229 QPL.LIST_LINE_ID,
19230 QPL.ARITHMETIC_OPERATOR,
19231 QPL.OPERAND,
19232 QPL.PRICING_GROUP_SEQUENCE,
19233 QPL.LIST_LINE_TYPE_CODE,
19234 QPL.LIST_PRICE,
19235 QPL.LIST_PRICE_UOM_CODE,
19236 QPL.PERCENT_PRICE,
19237 QPL.PRICING_PHASE_ID,
19238 QPL.AUTOMATIC_FLAG,
19239 QPL.OVERRIDE_FLAG,
19240 QPL.PRINT_ON_INVOICE_FLAG,
19241 QPL.MODIFIER_LEVEL_CODE,
19242 QPL.BENEFIT_QTY,
19243 QPL.BENEFIT_UOM_CODE,
19244 QPL.SERVICE_DURATION, -- service project
19245 QPL.SERVICE_PERIOD, -- service project
19246 QPL.LIST_LINE_NO,
19247 QPL.ACCRUAL_FLAG,
19248 QPL.ACCRUAL_CONVERSION_RATE,
19249 QPL.ESTIM_ACCRUAL_RATE,
19250 QPL.RECURRING_FLAG,
19251 QPL.INCOMPATIBILITY_GRP_CODE,
19252 QPL.PRICE_BY_FORMULA_ID,
19253 QPL.PRODUCT_PRECEDENCE,
19254 QPL.PRIMARY_UOM_FLAG,
19255 QPA.PRODUCT_UOM_CODE,
19256 QPA.EXCLUDER_FLAG,
19257 QPH.ASK_FOR_FLAG,
19258 QPH.LIST_TYPE_CODE,
19259 QPH.ROUNDING_FACTOR,
19260 QPLAT_PROD.LINE_DETAIL_INDEX,
19261 QPL.LIST_HEADER_ID LIST_HEADER_ID,
19262 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
19263 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
19264 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
19265 QPLAT_PROD.VALUE_TO PRODUCT_ATTR_VALUE_TO,
19266 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
19267 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
19268 QPL.AUTOMATIC_FLAG APPLIED_FLAG, -- fix bug 1915355
19269 QPLAT_PROD.COMPARISON_OPERATOR_TYPE_CODE PRODUCT_OPERATOR_TYPE,
19270 NULL PRICING_ATTRIBUTE_CONTEXT,
19271 NULL PRICING_ATTRIBUTE,
19272 NULL PRICING_ATTR_VALUE_FROM,
19273 NULL PRICING_SETUP_VALUE_FROM,
19274 NULL PRICING_SETUP_VALUE_TO,
19275 NULL PRICING_ATTRIBUTE_LEVEL,
19276 NULL PRICING_ATTRIBUTE_TYPE,
19277 NULL PRICING_OPERATOR_TYPE,
19278 NULL PRICING_ATTRIBUTE_DATATYPE
19279 FROM
19280 qp_npreq_lines_tmp QPLINES,
19281 qp_npreq_line_attrs_tmp QPLAT_PROD,
19282 QP_PRICING_ATTRIBUTES QPA,
19283 QP_LIST_HEADERS_B QPH,
19284 QP_LIST_LINES QPL,
19285 QP_PRICE_REQ_SOURCES QPRS
19286 WHERE QPA.PRICING_PHASE_ID = P_PRICING_PHASE_ID
19287 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_IND, QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND,
19288 QP_PREQ_GRP.G_YES_PROD_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_HDR_LINE_QUAL_IND)
19289 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
19290 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
19291 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
19292 AND QPLINES.PRICED_UOM_CODE = NVL(QPA.PRODUCT_UOM_CODE,QPLINES.PRICED_UOM_CODE)
19293 AND (QPLINES.PRICE_FLAG = G_YES
19294 OR
19295 (QPLINES.PRICE_FLAG = G_PHASE
19296 AND
19297 P_FREEZE_OVERRIDE_FLAG = G_YES))
19298 AND QPH.LIST_HEADER_ID = QPA.LIST_HEADER_ID
19299 --added for moac -- commented references to security profile
19300 --security will be built into qp_list_headers_b
19301 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
19302 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
19303 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
19304 AND QPH.ASK_FOR_FLAG = G_YES
19305 AND QPA.LIST_LINE_ID = L_LIST_LINE_ID
19306 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
19307 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
19308 --AND QPL.PRICING_PHASE_ID = p_pricing_phase_id
19309 --AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_IND, QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND,
19310 -- QP_PREQ_GRP.G_YES_PROD_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_HDR_LINE_QUAL_IND)
19311 AND QPLAT_PROD.LINE_INDEX = L_LINE_INDEX
19312 AND QPLINES.LINE_INDEX = L_LINE_INDEX
19313 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
19314 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19315 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19316 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
19317 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
19318 TRUNC(SYSDATE) )) AND
19319 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
19320 TRUNC(SYSDATE) ))
19321 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
19322 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
19323 TRUNC(SYSDATE) )) AND
19324 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
19325 TRUNC(SYSDATE) ))
19326 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
19327 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
19328 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
19329 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
19330 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
19331 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19332 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19333 AND ((QPH.CURRENCY_CODE IS NOT NULL AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE)
19334 OR
19335 QPH.CURRENCY_CODE IS NULL) -- optional currency
19336 AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
19337 OR
19338 QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
19339 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
19340 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
19341 AND QPH.ACTIVE_FLAG = G_YES
19342 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
19343 UNION ALL
19344 SELECT /*+ ORDERED USE_NL(QPLATP_PROD QPA QPLAT_PRIC QPH QPL QPRS) index(QPA QP_PRICING_ATTRIBUTES_N5) index(qplat_pric qp_preq_line_attrs_tmp_N2) index(qph qp_list_headers_b_n7) l_other_list_line_cur */
19345 QPLINES.LINE_INDEX,
19346 QPL.LIST_LINE_ID,
19347 QPL.ARITHMETIC_OPERATOR,
19348 QPL.OPERAND,
19349 QPL.PRICING_GROUP_SEQUENCE,
19350 QPL.LIST_LINE_TYPE_CODE,
19351 QPL.LIST_PRICE,
19352 QPL.LIST_PRICE_UOM_CODE,
19353 QPL.PERCENT_PRICE,
19354 QPL.PRICING_PHASE_ID,
19355 QPL.AUTOMATIC_FLAG,
19356 QPL.OVERRIDE_FLAG,
19357 QPL.PRINT_ON_INVOICE_FLAG,
19358 QPL.MODIFIER_LEVEL_CODE,
19359 QPL.BENEFIT_QTY,
19360 QPL.BENEFIT_UOM_CODE,
19361 QPL.SERVICE_DURATION, -- service project
19362 QPL.SERVICE_PERIOD, -- service project
19363 QPL.LIST_LINE_NO,
19364 QPL.ACCRUAL_FLAG,
19365 QPL.ACCRUAL_CONVERSION_RATE,
19366 QPL.ESTIM_ACCRUAL_RATE,
19367 QPL.RECURRING_FLAG,
19368 QPL.INCOMPATIBILITY_GRP_CODE,
19369 QPL.PRICE_BY_FORMULA_ID,
19370 QPL.PRODUCT_PRECEDENCE,
19371 QPL.PRIMARY_UOM_FLAG,
19372 QPA.PRODUCT_UOM_CODE,
19373 QPA.EXCLUDER_FLAG,
19374 QPH.ASK_FOR_FLAG,
19375 QPH.LIST_TYPE_CODE,
19376 QPH.ROUNDING_FACTOR,
19377 QPLAT_PROD.LINE_DETAIL_INDEX,
19378 QPL.LIST_HEADER_ID LIST_HEADER_ID,
19379 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
19380 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
19381 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
19382 QPLAT_PROD.VALUE_TO PRODUCT_ATTR_VALUE_TO,
19383 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
19384 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
19385 QPL.AUTOMATIC_FLAG APPLIED_FLAG, -- shu fix bug 1915355
19386 QPLAT_PROD.COMPARISON_OPERATOR_TYPE_CODE PRODUCT_OPERATOR_TYPE,
19387 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
19388 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
19389 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
19390 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
19391 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
19392 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
19393 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
19394 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
19395 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE
19396 FROM
19397 qp_npreq_lines_tmp QPLINES,
19398 qp_npreq_line_attrs_tmp QPLAT_PROD,
19399 QP_PRICING_ATTRIBUTES QPA,
19400 qp_npreq_line_attrs_tmp QPLAT_PRIC,
19401 QP_LIST_HEADERS_B QPH,
19402 QP_LIST_LINES QPL,
19403 QP_PRICE_REQ_SOURCES QPRS
19404 WHERE QPA.PRICING_PHASE_ID = p_pricing_phase_id
19405 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_IND, QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,
19406 QP_PREQ_GRP.G_YES_PROD_PRIC_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PRIC_HDR_LINE_QUAL_IND)
19407 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
19408 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
19409 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
19410 AND QPLINES.PRICED_UOM_CODE = NVL(QPA.PRODUCT_UOM_CODE,QPLINES.PRICED_UOM_CODE)
19411 AND (QPLINES.PRICE_FLAG = G_YES
19412 OR
19413 (QPLINES.PRICE_FLAG = G_PHASE
19414 AND
19415 P_FREEZE_OVERRIDE_FLAG = G_YES))
19416 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
19417 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
19418 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
19419 OR
19420 QPA.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
19421 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
19422 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
19423 AND QPLAT_PROD.LINE_INDEX = QPLAT_PRIC.LINE_INDEX
19424 AND QPH.LIST_HEADER_ID = QPA.LIST_HEADER_ID
19425 --added for moac -- commented references to security profile
19426 --security will be built into qp_list_headers_b
19427 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
19428 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
19429 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
19430 AND QPH.ASK_FOR_FLAG = G_YES
19431 AND QPA.LIST_LINE_ID = L_LIST_LINE_ID
19432 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
19433 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
19434 --AND QPL.PRICING_PHASE_ID = p_pricing_phase_id
19435 --AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_IND, QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,
19436 -- QP_PREQ_GRP.G_YES_PROD_PRIC_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PRIC_HDR_LINE_QUAL_IND)
19437 AND QPLAT_PROD.LINE_INDEX = L_LINE_INDEX
19438 AND QPLINES.LINE_INDEX = L_LINE_INDEX
19439 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
19440 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19441 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19442 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
19443 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
19444 TRUNC(SYSDATE) )) AND
19445 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
19446 TRUNC(SYSDATE) ))
19447 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
19448 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
19449 TRUNC(SYSDATE) )) AND
19450 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
19451 TRUNC(SYSDATE) ))
19452 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
19453 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
19454 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
19455 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
19456 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
19457 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19458 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19459 AND ((QPH.CURRENCY_CODE IS NOT NULL AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE)
19460 OR
19461 QPH.CURRENCY_CODE IS NULL) -- optional currency
19462 AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
19463 OR
19464 QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
19465 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
19466 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
19467 AND QPH.ACTIVE_FLAG = G_YES
19468 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
19469 ORDER BY 1,2;
19470
19471 /*
19472 INDX,QP_PREQ_GRP.list_header_search.l_check_no_list_passed,- No Index Used-,NA,NA
19473 */
19474 CURSOR L_CHECK_NO_LIST_PASSED IS
19475 SELECT 'X'
19476 FROM qp_npreq_lines_tmp A
19477 WHERE PROCESSED_CODE IN (G_NO_LIST_PASSED,G_STS_LHS_NOT_FOUND)
19478 AND LINE_TYPE_CODE <> G_ORDER_LEVEL
19479 AND (instr(PROCESS_STATUS,'FREEGOOD')=0); -- bug 2693700
19480
19481 /*
19482 INDX,QP_PREQ_GRP.list_header_search.l_check_secondary_search,- No Index Used-,NA,NA
19483 */
19484 CURSOR l_check_secondary_search IS
19485 SELECT 'X'
19486 FROM qp_npreq_lines_tmp
19487 WHERE PROCESSED_CODE = G_STS_LHS_NOT_FOUND
19488 AND LINE_TYPE_CODE <> G_ORDER_LEVEL
19489 AND (instr(PROCESS_STATUS,'FREEGOOD')=0); -- bug 2693700
19490
19491 /*
19492 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
19493 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,PRICING_PHASE_ID,2
19494 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,ASK_FOR_FLAG,3
19495 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,CREATED_FROM_LIST_LINE_TYPE,4
19496 */
19497 CURSOR l_chk_deleted_pbh_cur(p_line_index IN PLS_INTEGER,
19498 p_pricing_phase_id NUMBER) IS
19499 SELECT/*+ INDEX(qp_npreq_ldets_tmp QP_PREQ_LDETS_TMP_N2) */ 'X' --bug 14464004
19500 FROM qp_npreq_ldets_tmp
19501 WHERE created_from_list_line_type = G_PRICE_BREAK_TYPE
19502 AND line_index = p_line_index
19503 AND pricing_phase_id = p_pricing_phase_id
19504 AND pricing_status_code <> G_STATUS_NEW;
19505
19506 L_LINE_DETAIL_INDEX PLS_INTEGER;
19507 L_OPERAND_CALCULATION_CODE VARCHAR2(30);
19508 L_OPERAND_VALUE VARCHAR2(30);
19509 L_PRICING_GROUP_SEQUENCE PLS_INTEGER;
19510 L_STATUS_CODE VARCHAR2(30);
19511 L_STATUS_TEXT VARCHAR2(240);
19512 L_LIST_HEADER_ID NUMBER;
19513 L_LIST_LINE_ID NUMBER;
19514 l_incomp_list_line_id NUMBER;
19515 l_incomp_return_status VARCHAR2(30);
19516 l_price_list_line_id NUMBER;
19517 l_sec_price_list_line_id NUMBER;
19518 l_sec_incomp_list_line_id NUMBER;
19519 l_sec_incomp_return_status VARCHAR2(30);
19520 L_LIST_LINE_TYPE_CODE VARCHAR2(30);
19521 L_LIST_PRICE NUMBER;
19522 L_LIST_PRICE_UOM_CODE VARCHAR2(30);
19523 L_PERCENT_PRICE NUMBER;
19524 L_RESULT_FLAG VARCHAR(1):='N';
19525 L_LOOP_COUNT PLS_INTEGER := 0;
19526 x_loop_count PLS_INTEGER := 0;
19527 L_ROUTINE VARCHAR2(240):='ROUTINE:QP_PREQ_GRP.LIST_HEADER_SEARCH';
19528 L_SECONDARY_LIST VARCHAR2(30);
19529 E_NO_LIST_FOUND EXCEPTION;
19530 E_SEARCH_FLAG_ERROR EXCEPTION;
19531 L_DUMMY VARCHAR2(1);
19532 L_ERROR_LINE_INDEX PLS_INTEGER;
19533 L_HAVE_NOT_VALIDATED VARCHAR2(30):= G_NO;
19534 L_EX_LINE_INDEX PLS_INTEGER:=-1;
19535 L_EX_PRECEDENCE PLS_INTEGER:=99999999;
19536 L_EX_LIST_LINE_ID PLS_INTEGER:=-1;
19537 L_BAD_LIST_LINE_ID NUMBER:=-1;
19538 L_FURTHER_SEARCH_SWITCH VARCHAR2(3):='OFF';
19539 PERFORM_SEC_PL_SEARCH BOOLEAN := FALSE;
19540 QUALIFIER_EXISTS_FLAG BOOLEAN := FALSE;
19541 v_list_header_id NUMBER;
19542 v_sec_list_header_id NUMBER;
19543 v_sec_list_line_id NUMBER;
19544 l_pricing_effective_date DATE;
19545 q BINARY_INTEGER:=NULL;
19546 l_line_quantity NUMBER;
19547 l_line_uom_code VARCHAR2(30);
19548 x_list_line_id NUMBER;
19549 l_return_status VARCHAR2(240);
19550 x_return_status VARCHAR2(240);
19551 x_return_status_txt VARCHAR2(240);
19552 l_error_status_code VARCHAR2(30);
19553 l_error_status_txt VARCHAR2(240);
19554 K PLS_INTEGER:=1;
19555 M PLS_INTEGER:=1;
19556 nROWS CONSTANT NUMBER := 5000;
19557
19558 lq_line_index NUMBER := -9999;
19559 lq_list_line_id NUMBER := -9999;
19560
19561 E_ROUTINE_ERRORS EXCEPTION;
19562 BEGIN
19563
19564 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19565 engine_debug('IN '|| L_ROUTINE);
19566
19567 END IF;
19568
19569 x_status_code := FND_API.G_RET_STS_SUCCESS;
19570
19571 IF (p_pricing_phase_id <> G_PRICE_LIST_PHASE_ID) THEN -- Only for modifiers ask for list headers/lines
19572
19573 IF (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES) THEN -- price book
19574 -- Validated List Headers / List Lines
19575
19576 qp_debug_util.tstart('L_VALIDATED_CUR_EXT','Cursor Loop L_VALIDATED_CUR exterior');
19577
19578 FOR J IN L_VALIDATED_CUR LOOP
19579
19580
19581 IF (J.ATTRIBUTE = G_PROMOTION_ATTRIBUTE) THEN
19582
19583 lq_line_index := -9999;
19584 lq_list_line_id := -9999;
19585
19586 L_LIST_HEADER_ID := TO_NUMBER(J.VALUE_FROM);
19587 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19588 ENGINE_DEBUG('Asked For List Header ID:'||L_LIST_HEADER_ID || 'Line : ' || J.LINE_INDEX);
19589 END IF;
19590
19591 qp_debug_util.tstart('L_OTHER_LIST_CUR','Cursor Loop L_OTHER_LIST_CUR');
19592
19593
19594 FOR K IN L_OTHER_LIST_CUR (J.LINE_INDEX,
19595 L_LIST_HEADER_ID,
19596 P_FREEZE_OVERRIDE_FLAG)
19597 LOOP
19598 IF (lq_line_index <> j.line_index OR lq_list_line_id <> k.list_line_id) THEN
19599
19600 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19601 engine_debug('List line id selected from asked for prom l_other_list_cur : '||K.list_line_id );
19602 END IF;
19603 L_LINE_DETAIL_INDEX := GET_LINE_DETAIL_INDEX;
19604 qp_debug_util.tstart('INSERT_LDETS','Inserting the ldets INSERT_LDETS');
19605 INSERT_LDETS(P_LINE_DETAIL_INDEX => L_LINE_DETAIL_INDEX,
19606 P_LINE_DETAIL_TYPE_CODE => 'NULL',
19607 P_LINE_INDEX => J.LINE_INDEX,
19608 P_CREATED_FROM_LIST_HEADER_ID => L_LIST_HEADER_ID,
19609 P_CREATED_FROM_LIST_LINE_ID => K.LIST_LINE_ID,
19610 P_CREATED_FROM_LIST_TYPE_CODE => K.LIST_TYPE_CODE,
19611 P_CREATED_FROM_SQL => 'LHS_MODIFIER ',
19612 P_PRICING_PHASE_ID => K.PRICING_PHASE_ID,
19613 P_CREATED_FROM_LIST_LINE_TYPE => K.LIST_LINE_TYPE_CODE,
19614 P_PRICING_GROUP_SEQUENCE => K.PRICING_GROUP_SEQUENCE,
19615 P_OPERAND_CALCULATION_CODE => K.ARITHMETIC_OPERATOR,
19616 P_OPERAND_VALUE => K.OPERAND,
19617 P_PRICING_STATUS_CODE => G_STATUS_NEW,
19618 P_PROCESSED_FLAG => G_NOT_PROCESSED,
19619 P_AUTOMATIC_FLAG => K.AUTOMATIC_FLAG,
19620 P_APPLIED_FLAG => K.APPLIED_FLAG, -- fix bug 1915355
19621 P_OVERRIDE_FLAG => K.OVERRIDE_FLAG,
19622 P_PRINT_ON_INVOICE_FLAG => K.PRINT_ON_INVOICE_FLAG,
19623 P_MODIFIER_LEVEL_CODE => K.MODIFIER_LEVEL_CODE,
19624 P_BENEFIT_QTY => K.BENEFIT_QTY,
19625 P_BENEFIT_UOM_CODE => K.BENEFIT_UOM_CODE,
19626 P_SERVICE_DURATION => K.SERVICE_DURATION, -- service project
19627 P_SERVICE_PERIOD => K.SERVICE_PERIOD, -- service project
19628 P_LIST_LINE_NO => K.LIST_LINE_NO,
19629 P_ACCRUAL_FLAG => K.ACCRUAL_FLAG,
19630 P_ACCRUAL_CONVERSION_RATE => K.ACCRUAL_CONVERSION_RATE,
19631 P_ESTIM_ACCRUAL_RATE => K.ESTIM_ACCRUAL_RATE,
19632 P_RECURRING_FLAG => K.RECURRING_FLAG,
19633 P_INCOMPATABLILITY_GRP_CODE => K.INCOMPATIBILITY_GRP_CODE,
19634 P_PRICE_FORMULA_ID => K.PRICE_BY_FORMULA_ID,
19635 P_PRODUCT_PRECEDENCE => K.PRODUCT_PRECEDENCE,
19636 P_PRIMARY_UOM_FLAG => K.PRIMARY_UOM_FLAG,
19637 P_ASK_FOR_FLAG => K.ASK_FOR_FLAG,
19638 P_ROUNDING_FACTOR => K.ROUNDING_FACTOR,
19639 X_STATUS_CODE => L_STATUS_CODE,
19640 X_STATUS_TEXT => L_STATUS_TEXT);
19641 qp_debug_util.tstop('INSERT_LDETS');
19642 lq_line_index := j.line_index;
19643 lq_list_line_id := k.list_line_id;
19644
19645 END IF;
19646
19647 --INSERT PRODUCT ATTRIBUTES
19648 G_LINE_INDEX_tbl(M) := K.LINE_INDEX;
19649 G_LINE_DETAIL_INDEX_tbl(M) := L_LINE_DETAIL_INDEX;
19650 G_ATTRIBUTE_LEVEL_tbl(M) := K.PRODUCT_ATTRIBUTE_LEVEL;
19651 G_ATTRIBUTE_TYPE_tbl(M) := K.PRODUCT_ATTRIBUTE_TYPE;
19652 G_LIST_HEADER_ID_TBL(M) := K.LIST_HEADER_ID;
19653 G_LIST_LINE_ID_TBL(M) := K.LIST_LINE_ID;
19654 G_CONTEXT_tbl(M) := K.PRODUCT_ATTRIBUTE_CONTEXT;
19655 G_ATTRIBUTE_tbl(M) := K.PRODUCT_ATTRIBUTE;
19656 G_VALUE_FROM_tbl(M) := K.PRODUCT_ATTR_VALUE_FROM;
19657 G_COMPARISON_OPERATOR_TYPE_tbl(M):= K.PRODUCT_OPERATOR_TYPE;
19658 G_APPLIED_FLAG_tbl(M) := K.APPLIED_FLAG;
19659 G_PRICING_STATUS_CODE_tbl(M) := G_STATUS_NEW;
19660 G_PRICING_STATUS_TEXT_tbl(M) :='INSERTED IN VALIDATED ASKED FOR PROMOTION SEARCH';
19661 G_EXCLUDER_FLAG_TBL(M) :=K.EXCLUDER_FLAG;
19662 G_PRODUCT_UOM_CODE_TBL(M) :=K.PRODUCT_UOM_CODE;
19663 G_VALIDATED_FLAG_tbl(M) := NULL;
19664 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
19665 G_SETUP_VALUE_FROM_tbl(M) := NULL;
19666 G_SETUP_VALUE_TO_tbl(M) := NULL;
19667 G_GROUPING_NUMBER_tbl(M) := NULL;
19668 G_QUALIFIER_PRECEDENCE_tbl(M) := NULL;
19669 G_DATATYPE_tbl(M) := NULL;
19670 G_QUALIFIER_TYPE_TBL(M) := NULL;
19671 G_PRICING_PHASE_ID_TBL_A(M) := K.PRICING_PHASE_ID;
19672 G_INCOMP_GRP_CODE_TBL_A(M) := K.INCOMPATIBILITY_GRP_CODE;
19673 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
19674 G_MODIFIER_LEVEL_CODE_TBL_A(M) := K.MODIFIER_LEVEL_CODE;
19675 G_PRIMARY_UOM_FLAG_TBL_A(M) := K.PRIMARY_UOM_FLAG;
19676 M:= M+1;
19677
19678
19679 IF (K.PRICING_ATTRIBUTE_CONTEXT IS NOT NULL) THEN
19680 --INSERT PRICING ATTRIBUTES
19681 G_LINE_INDEX_tbl(M) := K.LINE_INDEX;
19682 G_LINE_DETAIL_INDEX_tbl(M) := L_LINE_DETAIL_INDEX;
19683 G_ATTRIBUTE_LEVEL_tbl(M) := K.PRICING_ATTRIBUTE_LEVEL;
19684 G_ATTRIBUTE_TYPE_tbl(M) := K.PRICING_ATTRIBUTE_TYPE;
19685 G_LIST_HEADER_ID_TBL(M) := K.LIST_HEADER_ID;
19686 G_LIST_LINE_ID_TBL(M) := K.LIST_LINE_ID;
19687 G_CONTEXT_tbl(M) := K.PRICING_ATTRIBUTE_CONTEXT;
19688 G_ATTRIBUTE_tbl(M) := K.PRICING_ATTRIBUTE;
19689 G_VALUE_FROM_tbl(M) := K.PRICING_ATTR_VALUE_FROM;
19690 G_SETUP_VALUE_FROM_tbl(M) := K.PRICING_SETUP_VALUE_FROM;
19691 G_SETUP_VALUE_TO_tbl(M) := K.PRICING_SETUP_VALUE_TO;
19692 G_COMPARISON_OPERATOR_TYPE_tbl(M):= K.PRICING_OPERATOR_TYPE;
19693 G_APPLIED_FLAG_tbl(M) := K.APPLIED_FLAG;
19694 G_PRICING_STATUS_CODE_tbl(M) := G_STATUS_NEW;
19695 G_PRICING_STATUS_TEXT_tbl(M) :='INSERTED IN VALIDATED ASKED FOR PROMOTION SEARCH';
19696 G_EXCLUDER_FLAG_TBL(M) :=K.EXCLUDER_FLAG;
19697 G_PRODUCT_UOM_CODE_TBL(M) :=K.PRODUCT_UOM_CODE;
19698 G_VALIDATED_FLAG_tbl(M) := NULL;
19699 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
19700 G_GROUPING_NUMBER_tbl(M) := NULL;
19701 G_QUALIFIER_PRECEDENCE_tbl(M) := NULL;
19702 G_DATATYPE_tbl(M) := K.PRICING_ATTRIBUTE_DATATYPE;
19703 G_QUALIFIER_TYPE_TBL(M) := NULL;
19704 G_PRICING_PHASE_ID_TBL_A(M) := K.PRICING_PHASE_ID;
19705 G_INCOMP_GRP_CODE_TBL_A(M) := K.INCOMPATIBILITY_GRP_CODE;
19706 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
19707 G_MODIFIER_LEVEL_CODE_TBL_A(M) := K.MODIFIER_LEVEL_CODE;
19708 G_PRIMARY_UOM_FLAG_TBL_A(M) := K.PRIMARY_UOM_FLAG;
19709 M:= M+1;
19710 END IF;
19711 l_loop_count := l_loop_count +1;
19712 END LOOP;
19713
19714 qp_debug_util.tstop('L_OTHER_LIST_CUR');
19715
19716 ELSE -- Asked for list line
19717
19718 lq_line_index := -9999;
19719 lq_list_line_id := -9999;
19720
19721 L_LIST_LINE_ID := to_number(J.VALUE_FROM);
19722 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19723 ENGINE_DEBUG('Asked For List Line ID:'||L_LIST_LINE_ID || 'Line : ' || J.LINE_INDEX);
19724 ENGINE_DEBUG('Pricing Phase Id:'||p_pricing_phase_id );
19725
19726 END IF;
19727
19728 qp_debug_util.tstart('L_OTHER_LIST_LINE_CUR','Cursor Loop L_OTHER_LIST_LINE_CUR');
19729
19730 FOR K IN L_OTHER_LIST_LINE_CUR (J.LINE_INDEX,
19731 L_LIST_LINE_ID,
19732 P_FREEZE_OVERRIDE_FLAG)
19733 LOOP
19734 IF (lq_line_index <> j.line_index OR lq_list_line_id <> k.list_line_id) THEN
19735 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19736 engine_debug('List line id selected from asked for prom l_other_list_cur : '||K.list_line_id );
19737 END IF;
19738 L_LINE_DETAIL_INDEX := GET_LINE_DETAIL_INDEX;
19739 qp_debug_util.tstart('INSERT_LDETS','Inserting the ldets INSERT_LDETS');
19740 INSERT_LDETS(P_LINE_DETAIL_INDEX => L_LINE_DETAIL_INDEX,
19741 P_LINE_DETAIL_TYPE_CODE => 'NULL',
19742 P_LINE_INDEX => J.LINE_INDEX,
19743 P_CREATED_FROM_LIST_HEADER_ID => K.LIST_HEADER_ID,
19744 P_CREATED_FROM_LIST_LINE_ID => K.LIST_LINE_ID,
19745 P_CREATED_FROM_LIST_TYPE_CODE => K.LIST_TYPE_CODE,
19746 P_CREATED_FROM_SQL => 'LHS_MODIFIER ',
19747 P_PRICING_PHASE_ID => K.PRICING_PHASE_ID,
19748 P_CREATED_FROM_LIST_LINE_TYPE => K.LIST_LINE_TYPE_CODE,
19749 P_PRICING_GROUP_SEQUENCE => K.PRICING_GROUP_SEQUENCE,
19750 P_OPERAND_CALCULATION_CODE => K.ARITHMETIC_OPERATOR,
19751 P_OPERAND_VALUE => K.OPERAND,
19752 P_PRICING_STATUS_CODE => G_STATUS_NEW,
19753 P_PROCESSED_FLAG => G_NOT_PROCESSED,
19754 P_AUTOMATIC_FLAG => K.AUTOMATIC_FLAG,
19755 P_APPLIED_FLAG => K.APPLIED_FLAG,
19756 P_OVERRIDE_FLAG => K.OVERRIDE_FLAG,
19757 P_PRINT_ON_INVOICE_FLAG => K.PRINT_ON_INVOICE_FLAG,
19758 P_MODIFIER_LEVEL_CODE => K.MODIFIER_LEVEL_CODE,
19759 P_BENEFIT_QTY => K.BENEFIT_QTY,
19760 P_BENEFIT_UOM_CODE => K.BENEFIT_UOM_CODE,
19761 P_SERVICE_DURATION => K.SERVICE_DURATION, -- service project
19762 P_SERVICE_PERIOD => K.SERVICE_PERIOD, -- service project
19763 P_LIST_LINE_NO => K.LIST_LINE_NO,
19764 P_ACCRUAL_FLAG => K.ACCRUAL_FLAG,
19765 P_ACCRUAL_CONVERSION_RATE => K.ACCRUAL_CONVERSION_RATE,
19766 P_ESTIM_ACCRUAL_RATE => K.ESTIM_ACCRUAL_RATE,
19767 P_RECURRING_FLAG => K.RECURRING_FLAG,
19768 P_INCOMPATABLILITY_GRP_CODE => K.INCOMPATIBILITY_GRP_CODE,
19769 P_PRICE_FORMULA_ID => K.PRICE_BY_FORMULA_ID,
19770 P_PRODUCT_PRECEDENCE => K.PRODUCT_PRECEDENCE,
19771 P_PRIMARY_UOM_FLAG => K.PRIMARY_UOM_FLAG,
19772 P_ASK_FOR_FLAG => K.ASK_FOR_FLAG,
19773 P_ROUNDING_FACTOR => K.ROUNDING_FACTOR,
19774 X_STATUS_CODE => L_STATUS_CODE,
19775 X_STATUS_TEXT => L_STATUS_TEXT);
19776 qp_debug_util.tstop('INSERT_LDETS');
19777 lq_line_index := j.line_index;
19778 lq_list_line_id := k.list_line_id;
19779
19780 END IF;
19781
19782 --INSERT PRODUCT ATTRIBUTES
19783 G_LINE_INDEX_tbl(M) := K.LINE_INDEX;
19784 G_LINE_DETAIL_INDEX_tbl(M) := L_LINE_DETAIL_INDEX;
19785 G_ATTRIBUTE_LEVEL_tbl(M) := K.PRODUCT_ATTRIBUTE_LEVEL;
19786 G_ATTRIBUTE_TYPE_tbl(M) := K.PRODUCT_ATTRIBUTE_TYPE;
19787 G_LIST_HEADER_ID_TBL(M) := K.LIST_HEADER_ID;
19788 G_LIST_LINE_ID_TBL(M) := K.LIST_LINE_ID;
19789 G_CONTEXT_tbl(M) := K.PRODUCT_ATTRIBUTE_CONTEXT;
19790 G_ATTRIBUTE_tbl(M) := K.PRODUCT_ATTRIBUTE;
19791 G_VALUE_FROM_tbl(M) := K.PRODUCT_ATTR_VALUE_FROM;
19792 G_VALUE_TO_tbl(M) := K.PRODUCT_ATTR_VALUE_TO;
19793 G_COMPARISON_OPERATOR_TYPE_tbl(M):= K.PRODUCT_OPERATOR_TYPE;
19794 G_APPLIED_FLAG_tbl(M) := K.APPLIED_FLAG;
19795 G_PRICING_STATUS_CODE_tbl(M) := G_STATUS_NEW;
19796 G_PRICING_STATUS_TEXT_tbl(M) :='INSERTED IN VALIDATED ASKED FOR PROMOTION SEARCH';
19797 G_EXCLUDER_FLAG_TBL(M) :=K.EXCLUDER_FLAG;
19798 G_PRODUCT_UOM_CODE_TBL(M) :=K.PRODUCT_UOM_CODE;
19799 G_VALIDATED_FLAG_tbl(M) := NULL;
19800 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
19801 G_SETUP_VALUE_FROM_tbl(M) := NULL;
19802 G_SETUP_VALUE_TO_tbl(M) := NULL;
19803 G_GROUPING_NUMBER_tbl(M) := NULL;
19804 G_NO_QUALIFIERS_IN_GRP_tbl(M) := NULL;
19805 G_QUALIFIER_PRECEDENCE_tbl(M) := NULL;
19806 G_DATATYPE_tbl(M) := NULL;
19807 G_QUALIFIER_TYPE_TBL(M) := NULL;
19808 G_PRICING_PHASE_ID_TBL_A(M) := K.PRICING_PHASE_ID;
19809 G_INCOMP_GRP_CODE_TBL_A(M) := K.INCOMPATIBILITY_GRP_CODE;
19810 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
19811 G_MODIFIER_LEVEL_CODE_TBL_A(M) := K.MODIFIER_LEVEL_CODE;
19812 G_PRIMARY_UOM_FLAG_TBL_A(M) := K.PRIMARY_UOM_FLAG;
19813 M:= M+1;
19814
19815
19816 IF (K.PRICING_ATTRIBUTE_CONTEXT IS NOT NULL) THEN
19817 --INSERT PRICING ATTRIBUTES
19818 G_LINE_INDEX_tbl(M) := K.LINE_INDEX;
19819 G_LINE_DETAIL_INDEX_tbl(M) := L_LINE_DETAIL_INDEX;
19820 G_ATTRIBUTE_LEVEL_tbl(M) := K.PRICING_ATTRIBUTE_LEVEL;
19821 G_ATTRIBUTE_TYPE_tbl(M) := K.PRICING_ATTRIBUTE_TYPE;
19822 G_LIST_HEADER_ID_TBL(M) := K.LIST_HEADER_ID;
19823 G_LIST_LINE_ID_TBL(M) := K.LIST_LINE_ID;
19824 G_CONTEXT_tbl(M) := K.PRICING_ATTRIBUTE_CONTEXT;
19825 G_ATTRIBUTE_tbl(M) := K.PRICING_ATTRIBUTE;
19826 G_VALUE_FROM_tbl(M) := K.PRICING_ATTR_VALUE_FROM;
19827 G_SETUP_VALUE_FROM_tbl(M) := K.PRICING_SETUP_VALUE_FROM;
19828 G_SETUP_VALUE_TO_tbl(M) := K.PRICING_SETUP_VALUE_TO;
19829 G_COMPARISON_OPERATOR_TYPE_tbl(M):= K.PRICING_OPERATOR_TYPE;
19830 G_APPLIED_FLAG_tbl(M) := K.APPLIED_FLAG;
19831 G_PRICING_STATUS_CODE_tbl(M) := G_STATUS_NEW;
19832 G_PRICING_STATUS_TEXT_tbl(M) :='INSERTED IN VALIDATED ASKED FOR PROMOTION SEARCH';
19833 G_EXCLUDER_FLAG_TBL(M) :=K.EXCLUDER_FLAG;
19834 G_PRODUCT_UOM_CODE_TBL(M) :=K.PRODUCT_UOM_CODE;
19835 G_VALIDATED_FLAG_tbl(M) := NULL;
19836 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
19837 G_GROUPING_NUMBER_tbl(M) := NULL;
19838 G_NO_QUALIFIERS_IN_GRP_tbl(M) := NULL;
19839 G_QUALIFIER_PRECEDENCE_tbl(M) := NULL;
19840 G_DATATYPE_tbl(M) := K.PRICING_ATTRIBUTE_DATATYPE;
19841 G_QUALIFIER_TYPE_TBL(M) := NULL;
19842 G_VALUE_TO_tbl(M) := NULL;
19843 G_PRICING_PHASE_ID_TBL_A(M) := K.PRICING_PHASE_ID;
19844 G_INCOMP_GRP_CODE_TBL_A(M) := K.INCOMPATIBILITY_GRP_CODE;
19845 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
19846 G_MODIFIER_LEVEL_CODE_TBL_A(M) := K.MODIFIER_LEVEL_CODE;
19847 G_PRIMARY_UOM_FLAG_TBL_A(M) := K.PRIMARY_UOM_FLAG;
19848 M:= M+1;
19849 END IF;
19850 l_loop_count := l_loop_count +1;
19851 END LOOP;
19852
19853 qp_debug_util.tstop('L_OTHER_LIST_LINE_CUR');
19854
19855
19856 END IF; -- IF j.attribute = G_PROMOTION_ATTRIBUTE
19857
19858 IF (M>1) THEN
19859 qp_debug_util.tstart('INSERT_LINE_ATTRS2','Inserting the line attrs INSERT_LINE_ATTRS2');
19860 INSERT_LINE_ATTRS2
19861 (p_LINE_INDEX_tbl =>G_LINE_INDEX_tbl,
19862 p_LINE_DETAIL_INDEX_tbl =>G_LINE_DETAIL_INDEX_tbl,
19863 p_ATTRIBUTE_LEVEL_tbl =>G_ATTRIBUTE_LEVEL_tbl,
19864 p_ATTRIBUTE_TYPE_tbl =>G_ATTRIBUTE_TYPE_tbl,
19865 p_LIST_HEADER_ID_tbl =>G_LIST_HEADER_ID_tbl,
19866 p_LIST_LINE_ID_tbl =>G_LIST_LINE_ID_tbl,
19867 p_CONTEXT_tbl =>G_CONTEXT_tbl,
19868 p_ATTRIBUTE_tbl =>G_ATTRIBUTE_tbl,
19869 p_VALUE_FROM_tbl =>G_VALUE_FROM_tbl,
19870 p_SETUP_VALUE_FROM_tbl =>G_SETUP_VALUE_FROM_tbl,
19871 p_VALUE_TO_tbl =>G_VALUE_TO_tbl,
19872 p_SETUP_VALUE_TO_tbl =>G_SETUP_VALUE_TO_tbl,
19873 p_GROUPING_NUMBER_tbl => G_GROUPING_NUMBER_tbl,
19874 p_NO_QUALIFIERS_IN_GRP_tbl =>G_NO_QUALIFIERS_IN_GRP_tbl,
19875 p_COMPARISON_OPERATOR_TYPE_tbl =>G_COMPARISON_OPERATOR_TYPE_tbl,
19876 p_VALIDATED_FLAG_tbl =>G_VALIDATED_FLAG_tbl,
19877 p_APPLIED_FLAG_tbl =>G_APPLIED_FLAG_tbl,
19878 p_PRICING_STATUS_CODE_tbl =>G_PRICING_STATUS_CODE_tbl,
19879 p_PRICING_STATUS_TEXT_tbl =>G_PRICING_STATUS_TEXT_tbl,
19880 p_QUALIFIER_PRECEDENCE_tbl =>G_QUALIFIER_PRECEDENCE_tbl,
19881 p_DATATYPE_tbl =>G_DATATYPE_tbl,
19882 p_PRICING_ATTR_FLAG_tbl =>G_PRICING_ATTR_FLAG_tbl,
19883 p_QUALIFIER_TYPE_tbl =>G_QUALIFIER_TYPE_TBL,
19884 p_product_uom_code_tbl =>G_PRODUCT_UOM_CODE_TBL,
19885 p_excluder_flag_tbl =>G_EXCLUDER_FLAG_TBL,
19886 p_PRICING_PHASE_ID_TBL =>G_PRICING_PHASE_ID_TBL_A,
19887 p_INCOMPATABILITY_GRP_CODE_TBL =>G_INCOMP_GRP_CODE_TBL_A,
19888 p_LINE_DETAIL_TYPE_CODE_TBL =>G_LINE_DETAIL_TYPE_CODE_TBL_A,
19889 p_MODIFIER_LEVEL_CODE_TBL =>G_MODIFIER_LEVEL_CODE_TBL_A,
19890 p_PRIMARY_UOM_FLAG_TBL =>G_PRIMARY_UOM_FLAG_TBL_A,
19891 x_status_code =>l_status_code,
19892 x_status_text =>l_status_text);
19893 qp_debug_util.tstop('INSERT_LINE_ATTRS2');
19894 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
19895 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
19896 END IF;
19897
19898 END IF;
19899 M:=1;
19900
19901 END LOOP;
19902 qp_debug_util.tstop('L_VALIDATED_CUR_EXT');
19903 -- End Validated List Headers / List Lines
19904 END IF; -- if not price book
19905
19906 ELSE -- is a price list phase
19907 lq_line_index := -9999;
19908 lq_list_line_id := -9999;
19909
19910 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
19911 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19912 engine_debug('cursor open l_list_cur_currency-multi-currency TRUE');
19913
19914 END IF;
19915 OPEN l_list_cur_currency;
19916 qp_debug_util.tstart('L_LIST_CUR_CURRENCY','Cursor Loop l_list_cur_currency');
19917 else -- vivek, multi currency not installed, not used
19918 OPEN l_list_cur;
19919 qp_debug_util.tstart('L_LIST_CUR','Cursor Loop l_list_cur');
19920 end if; -- vivek, multi currency installed
19921 qp_debug_util.tstart('L_LIST_CUR/CURRENCY_FETCH','Cursor Loop L_LIST_CUR/CURRENCY_FETCH');
19922 LOOP
19923 G_LINE_INDEX_TBL_P.delete;
19924 G_LIST_LINE_ID_TBL_P.delete;
19925 G_LIST_HEADER_ID_TBL_P.delete;
19926 G_OPER_CALCULATION_CODE_TBL_P.delete;
19927 G_OPERAND_VALUE_TBL_P.delete;
19928 G_PRICING_GROUP_SEQUENCE_TBL_P.delete;
19929 G_LIST_LINE_TYPE_TBL_P.delete;
19930 G_PRICING_PHASE_ID_TBL_P.delete;
19931 G_AUTOMATIC_FLAG_TBL_P.delete;
19932 G_INCOMP_GRP_CODE_TBL_P.delete;
19933 G_PRICE_FORMULA_ID_TBL_P.delete;
19934 G_PRODUCT_PRECEDENCE_TBL_P.delete;
19935 G_PRIMARY_UOM_FLAG_TBL_P.delete;
19936 G_MODIFIER_LEVEL_CODE_TBL_P.delete;
19937 G_LIST_LINE_NO_TBL_P.delete;
19938 G_PRODUCT_UOM_CODE_TBL_P.delete;
19939 G_EXCLUDER_FLAG_TBL_P.delete;
19940 G_LIST_TYPE_CODE_TBL_P.delete;
19941 G_ROUNDING_FACTOR_TBL_P.delete;
19942 G_CONTEXT_TBL_P.delete;
19943 G_ATTRIBUTE_TBL_P.delete;
19944 G_VALUE_FROM_TBL_P.delete;
19945 G_ATTRIBUTE_LEVEL_TBL_P.delete;
19946 G_ATTRIBUTE_TYPE_TBL_P.delete;
19947 G_APPLIED_FLAG_TBL_P.delete;
19948 G_CONTEXT_TBL_PR.delete;
19949 G_ATTRIBUTE_TBL_PR.delete;
19950 G_VALUE_FROM_TBL_PR.delete;
19951 G_SETUP_VALUE_FROM_TBL_PR.delete;
19952 G_SETUP_VALUE_TO_TBL_PR.delete;
19953 G_ATTRIBUTE_LEVEL_TBL_PR.delete;
19954 G_ATTRIBUTE_TYPE_TBL_PR.delete;
19955 G_OPERATOR_TYPE_TBL_PR.delete;
19956 G_DATATYPE_TBL_PR.delete;
19957 G_BREAK_UOM_TBL_P.delete; /* Proration */
19958 G_BREAK_CONTEXT_TBL_P.delete; /* Proration */
19959 G_BREAK_ATTRIBUTE_TBL_P.delete; /* Proration */
19960 G_DERIVED_QUALIFIER_FLAG_TBL_Q.delete; -- Added for TCA
19961 G_PRICE_BREAK_TYPE_CODE_TBL_P.delete;
19962
19963 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
19964 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19965 engine_debug('cursor l_list_cur_currency-multi-currency TRUE - delete tables');
19966 END IF;
19967 G_CURRENCY_DETAIL_ID_TBL_P.delete; /* sunilpandey */
19968 G_CURRENCY_HEADER_ID_TBL_P.delete; /* vivek */
19969 G_SELLING_ROUNDING_TBL_P.delete; /* vivek */
19970 G_ORDER_CURRENCY_TBL_P.delete; /* vivek */
19971 G_PRICING_EFFECTIVE_DATE_TBL_P.delete; /* vivek */
19972 G_BASE_CURRENCY_CODE_TBL_P.delete; /* vivek */
19973 end if; /* vivek */
19974
19975 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
19976 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19977 engine_debug('cursor l_list_cur_currency-multi-currency TRUE - bulk fetch');
19978
19979 END IF;
19980
19981 FETCH l_list_cur_currency BULK COLLECT INTO
19982 G_LINE_INDEX_TBL_P
19983 , G_LIST_LINE_ID_TBL_P
19984 , G_OPER_CALCULATION_CODE_TBL_P
19985 , G_OPERAND_VALUE_TBL_P
19986 , G_PRICING_GROUP_SEQUENCE_TBL_P
19987 , G_LIST_LINE_TYPE_TBL_P
19988 , G_PRICING_PHASE_ID_TBL_P
19989 , G_AUTOMATIC_FLAG_TBL_P
19990 , G_INCOMP_GRP_CODE_TBL_P
19991 , G_PRICE_FORMULA_ID_TBL_P
19992 , G_PRODUCT_PRECEDENCE_TBL_P
19993 , G_PRIMARY_UOM_FLAG_TBL_P
19994 , G_MODIFIER_LEVEL_CODE_TBL_P
19995 , G_LIST_LINE_NO_TBL_P
19996 , G_PRODUCT_UOM_CODE_TBL_P
19997 , G_EXCLUDER_FLAG_TBL_P
19998 , G_LIST_TYPE_CODE_TBL_P
19999 , G_ROUNDING_FACTOR_TBL_P
20000 , G_LIST_HEADER_ID_TBL_P
20001 , G_CONTEXT_TBL_P
20002 , G_ATTRIBUTE_TBL_P
20003 , G_VALUE_FROM_TBL_P
20004 , G_ATTRIBUTE_LEVEL_TBL_P
20005 , G_ATTRIBUTE_TYPE_TBL_P
20006 , G_APPLIED_FLAG_TBL_P
20007 , G_CONTEXT_TBL_PR
20008 , G_ATTRIBUTE_TBL_PR
20009 , G_VALUE_FROM_TBL_PR
20010 , G_SETUP_VALUE_FROM_TBL_PR
20011 , G_SETUP_VALUE_TO_TBL_PR
20012 , G_ATTRIBUTE_LEVEL_TBL_PR
20013 , G_ATTRIBUTE_TYPE_TBL_PR
20014 , G_OPERATOR_TYPE_TBL_PR
20015 , G_DATATYPE_TBL_PR
20016 , G_CURRENCY_DETAIL_ID_TBL_P /* sunilpandey */
20017 , G_CURRENCY_HEADER_ID_TBL_P /* vivek */
20018 , G_SELLING_ROUNDING_TBL_P /* vivek */
20019 , G_ORDER_CURRENCY_TBL_P /* vivek */
20020 , G_PRICING_EFFECTIVE_DATE_TBL_P /* vivek */
20021 , G_BASE_CURRENCY_CODE_TBL_P
20022 , G_BREAK_UOM_TBL_P /* Proration */
20023 , G_BREAK_CONTEXT_TBL_P /* Proration */
20024 , G_BREAK_ATTRIBUTE_TBL_P /* Proration */
20025 , G_PRICE_BREAK_TYPE_CODE_TBL_P --[julin] for price book
20026 LIMIT nROWS;/* vivek */
20027 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
20028 else -- vivek, multi currency not installed, not used
20029 FETCH l_list_cur BULK COLLECT INTO
20030 G_LINE_INDEX_TBL_P
20031 , G_LIST_LINE_ID_TBL_P
20032 , G_OPER_CALCULATION_CODE_TBL_P
20033 , G_OPERAND_VALUE_TBL_P
20034 , G_PRICING_GROUP_SEQUENCE_TBL_P
20035 , G_LIST_LINE_TYPE_TBL_P
20036 , G_PRICING_PHASE_ID_TBL_P
20037 , G_AUTOMATIC_FLAG_TBL_P
20038 , G_INCOMP_GRP_CODE_TBL_P
20039 , G_PRICE_FORMULA_ID_TBL_P
20040 , G_PRODUCT_PRECEDENCE_TBL_P
20041 , G_PRIMARY_UOM_FLAG_TBL_P
20042 , G_MODIFIER_LEVEL_CODE_TBL_P
20043 , G_LIST_LINE_NO_TBL_P
20044 , G_PRODUCT_UOM_CODE_TBL_P
20045 , G_EXCLUDER_FLAG_TBL_P
20046 , G_LIST_TYPE_CODE_TBL_P
20047 , G_ROUNDING_FACTOR_TBL_P
20048 , G_LIST_HEADER_ID_TBL_P
20049 , G_CONTEXT_TBL_P
20050 , G_ATTRIBUTE_TBL_P
20051 , G_VALUE_FROM_TBL_P
20052 , G_ATTRIBUTE_LEVEL_TBL_P
20053 , G_ATTRIBUTE_TYPE_TBL_P
20054 , G_APPLIED_FLAG_TBL_P
20055 , G_CONTEXT_TBL_PR
20056 , G_ATTRIBUTE_TBL_PR
20057 , G_VALUE_FROM_TBL_PR
20058 , G_SETUP_VALUE_FROM_TBL_PR
20059 , G_SETUP_VALUE_TO_TBL_PR
20060 , G_ATTRIBUTE_LEVEL_TBL_PR
20061 , G_ATTRIBUTE_TYPE_TBL_PR
20062 , G_OPERATOR_TYPE_TBL_PR
20063 , G_DATATYPE_TBL_PR
20064 , G_BREAK_UOM_TBL_P /* Proration */
20065 , G_BREAK_CONTEXT_TBL_P /* Proration */
20066 , G_BREAK_ATTRIBUTE_TBL_P /* Proration */
20067 , G_PRICE_BREAK_TYPE_CODE_TBL_P --[julin] for price book
20068 LIMIT nROWS;
20069 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
20070 end if; -- vivek, multi currency installed
20071
20072 IF (G_LINE_INDEX_TBL_P.COUNT > 0 ) THEN
20073
20074 FOR I in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST LOOP
20075
20076 IF (lq_line_index <> g_line_index_tbl_p(I) OR lq_list_line_id <> g_list_line_id_tbl_p(I)) THEN
20077
20078 L_LINE_DETAIL_INDEX := GET_LINE_DETAIL_INDEX;
20079
20080 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(I);
20081 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
20082 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(I);
20083 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(I);
20084 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
20085 G_PRICING_STATUS_TEXT_LD_TBL(M) :='INSERTED IN L_LIST_CUR';
20086 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
20087 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
20088 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
20089 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(I); --[julin] for price book
20090 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(I);
20091 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(I);
20092 G_CREATED_FROM_SQL_TBL(M) :='INSERTED IN L_LIST_CUR';
20093 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(I);
20094 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(I);
20095 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(I);
20096 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(I);
20097 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(I);
20098 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(I);
20099 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(I);
20100 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
20101 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
20102 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
20103 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(I);
20104 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(I);
20105 G_BREAK_UOM_TBL(M) :=G_BREAK_UOM_TBL_P(I); /* Proration */
20106 G_BREAK_CONTEXT_TBL(M) :=G_BREAK_CONTEXT_TBL_P(I); /* Proration */
20107 G_BREAK_ATTRIBUTE_TBL(M) :=G_BREAK_ATTRIBUTE_TBL_P(I); /* Proration */
20108 if G_MULTI_CURRENCY_PROFILE = 'Y' and
20109 G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20110 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20111 engine_debug('cursor l_list_cur_currency-multi-currency TRUE - populate tables');
20112 END IF;
20113 G_CURRENCY_DETAIL_ID_TBL(M) := G_CURRENCY_DETAIL_ID_TBL_P(I); /* sunilpandey */
20114 G_CURRENCY_HEADER_ID_TBL(M) := G_CURRENCY_HEADER_ID_TBL_P(I); /* vivek */
20115 G_SELLING_ROUNDING_TBL(M) := G_SELLING_ROUNDING_TBL_P(I); /* vivek */
20116 G_ORDER_CURRENCY_TBL(M) := G_ORDER_CURRENCY_TBL_P(I); /* vivek */
20117 G_PRICING_EFFECTIVE_DATE_TBL(M) := G_PRICING_EFFECTIVE_DATE_TBL_P(I); /* vivek */
20118 G_BASE_CURRENCY_CODE_TBL(M) := G_BASE_CURRENCY_CODE_TBL_P(I); /* vivek */
20119 end if; /* vivek */
20120 M := M + 1;
20121 lq_line_index := g_line_index_tbl_p(I);
20122 lq_list_line_id := g_list_line_id_tbl_p(I);
20123 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20124 engine_debug('Rounding Factor: ' || g_rounding_factor_tbl_p(i));
20125 END IF;
20126 END IF;
20127
20128 --INSERT PRODUCT ATTRIBUTES
20129 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
20130 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_P(I);
20131 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_P(I);
20132 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_P(I);
20133 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_P(I);
20134 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_P(I);
20135 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
20136 G_VALIDATED_FLAG_tbl(K) :=G_NO;
20137 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
20138 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
20139 G_PRICING_ATTR_FLAG_tbl(K) :=G_NO;
20140 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
20141 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
20142 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
20143 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
20144 G_SETUP_VALUE_TO_tbl(K) :=NULL;
20145 G_GROUPING_NUMBER_tbl(K) :=NULL;
20146 G_PRICING_STATUS_TEXT_tbl(K) :='INSERTED IN L_LIST_CUR';
20147 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
20148 G_DATATYPE_tbl(K) :=NULL;
20149 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
20150 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
20151 G_QUALIFIER_TYPE_TBL(K) :=NULL;
20152 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
20153 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
20154 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
20155 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
20156 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
20157 K:= K+1;
20158
20159 --INSERT PRICING ATTRIBUTES
20160 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
20161 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
20162 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_PR(I);
20163 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_PR(I);
20164 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_PR(I);
20165 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_PR(I);
20166 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_PR(I);
20167 G_COMPARISON_OPERATOR_TYPE_tbl(K):=G_OPERATOR_TYPE_TBL_PR(I);
20168 G_VALIDATED_FLAG_tbl(K) :=G_NO;
20169 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
20170 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
20171 G_PRICING_ATTR_FLAG_tbl(K) :=NULL;
20172 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
20173 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
20174 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
20175 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
20176 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
20177 G_GROUPING_NUMBER_tbl(K) :=NULL;
20178 G_PRICING_STATUS_TEXT_tbl(K) :='INSERTED IN L_LIST_CUR';
20179 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
20180 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
20181 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
20182 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
20183 G_QUALIFIER_TYPE_TBL(K) :=NULL;
20184 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
20185 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
20186 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
20187 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
20188 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
20189 K:= K+1;
20190 END IF;
20191
20192 l_loop_count := l_loop_count +1;
20193 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20194 engine_debug('Primary List Validated Search Count : ' || l_loop_count);
20195 END IF;
20196 END LOOP;
20197 END IF ;
20198
20199 END LOOP;
20200 qp_debug_util.tstop('L_LIST_CUR/CURRENCY_FETCH');
20201 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20202 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20203 engine_debug('cursor close l_list_cur_currency-multi-currency TRUE');
20204 END IF;
20205 CLOSE l_list_cur_currency;
20206
20207 qp_debug_util.tstop('L_LIST_CUR_CURRENCY');
20208 else -- vivek, multi currency not installed, not used
20209 CLOSE l_list_cur;
20210 qp_debug_util.tstop('L_LIST_CUR');
20211 end if; -- vivek, multi currency installed
20212
20213 END IF; -- p_pricing_phase_id <> G_PRICE_LIST_PHASE_ID
20214
20215 IF M > 1 THEN
20216 qp_debug_util.tstart('INSERT_LDETS_PRICE_LIST_MULT/NON_MULTI','Inserting INSERT_LDETS_PRICE_LIST_MULT/NON_MULTI');
20217 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20218 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20219 engine_debug('cursor l_list_cur_currency-multi-currency TRUE - insert_ldets2');
20220 END IF;
20221 INSERT_LDETS_PRICE_LIST_MULT( p_LINE_DETAIL_index => G_LINE_DETAIL_INDEX_LD_TBL,
20222 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
20223 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
20224 p_LINE_INDEX => G_LINE_INDEX_LD_TBL,
20225 p_CREATED_FROM_LIST_HEADER_ID =>G_LIST_HEADER_ID_LD_TBL,
20226 p_CREATED_FROM_LIST_LINE_ID =>G_LIST_LINE_ID_LD_TBL,
20227 p_CREATED_FROM_LIST_LINE_TYPE =>G_LIST_LINE_TYPE_TBL,
20228 p_CREATED_FROM_LIST_TYPE_CODE =>G_LIST_TYPE_CODE_TBL,
20229 p_CREATED_FROM_SQL =>G_CREATED_FROM_SQL_TBL,
20230 p_PRICING_GROUP_SEQUENCE =>G_PRICING_GROUP_SEQUENCE_TBL,
20231 P_PRICING_PHASE_ID =>G_PRICING_PHASE_ID_TBL,
20232 p_OPERAND_CALCULATION_CODE =>G_OPERAND_CALCULATION_CODE_TBL,
20233 p_OPERAND_VALUE =>G_OPERAND_VALUE_TBL,
20234 p_PRICE_FORMULA_ID =>G_PRICE_FORMULA_ID_TBL,
20235 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_LD_TBL,
20236 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_LD_TBL,
20237 p_PRODUCT_PRECEDENCE =>G_PRODUCT_PRECEDENCE_TBL ,
20238 p_INCOMPATABLILITY_GRP_CODE =>G_INCOMP_GRP_CODE_TBL,
20239 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_LD_TBL,
20240 p_APPLIED_FLAG =>G_APPLIED_FLAG_LD_TBL,
20241 p_AUTOMATIC_FLAG =>G_AUTOMATIC_FLAG_TBL,
20242 p_PRIMARY_UOM_FLAG =>G_PRIMARY_UOM_FLAG_TBL,
20243 p_MODIFIER_LEVEL_CODE =>G_MODIFIER_LEVEL_CODE_TBL,
20244 p_LIST_LINE_NO =>G_LIST_LINE_NO_TBL,
20245 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
20246 P_CURRENCY_DETAIL_ID =>G_CURRENCY_DETAIL_ID_TBL, /* sunilpandey */
20247 P_CURRENCY_HEADER_ID =>G_CURRENCY_HEADER_ID_TBL, /* vivek */
20248 P_SELLING_ROUNDING_FACTOR =>G_SELLING_ROUNDING_TBL, /* vivek */
20249 P_ORDER_CURRENCY =>G_ORDER_CURRENCY_TBL, /* vivek */
20250 P_PRICING_EFFECTIVE_DATE =>G_PRICING_EFFECTIVE_DATE_TBL, /* vivek */
20251 P_BASE_CURRENCY_CODE =>G_BASE_CURRENCY_CODE_TBL, /* vivek */
20252 P_BREAK_UOM_CODE =>G_BREAK_UOM_TBL, /* Proration */
20253 P_BREAK_UOM_CONTEXT =>G_BREAK_CONTEXT_TBL, /* Proration */
20254 P_BREAK_UOM_ATTRIBUTE =>G_BREAK_ATTRIBUTE_TBL, /* Proration */
20255 x_status_code =>l_status_code,
20256 x_status_text =>l_status_text
20257 );
20258 else -- vivek, multi currency not installed, not used
20259 INSERT_LDETS_PRICE_LIST_PVT(
20260 p_LINE_DETAIL_index => G_LINE_DETAIL_INDEX_LD_TBL,
20261 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
20262 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
20263 p_LINE_INDEX => G_LINE_INDEX_LD_TBL,
20264 p_CREATED_FROM_LIST_HEADER_ID =>G_LIST_HEADER_ID_LD_TBL,
20265 p_CREATED_FROM_LIST_LINE_ID =>G_LIST_LINE_ID_LD_TBL,
20266 p_CREATED_FROM_LIST_LINE_TYPE =>G_LIST_LINE_TYPE_TBL,
20267 p_CREATED_FROM_LIST_TYPE_CODE =>G_LIST_TYPE_CODE_TBL,
20268 p_CREATED_FROM_SQL =>G_CREATED_FROM_SQL_TBL,
20269 p_PRICING_GROUP_SEQUENCE =>G_PRICING_GROUP_SEQUENCE_TBL,
20270 P_PRICING_PHASE_ID =>G_PRICING_PHASE_ID_TBL,
20271 p_OPERAND_CALCULATION_CODE =>G_OPERAND_CALCULATION_CODE_TBL,
20272 p_OPERAND_VALUE =>G_OPERAND_VALUE_TBL,
20273 p_PRICE_FORMULA_ID =>G_PRICE_FORMULA_ID_TBL,
20274 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_LD_TBL,
20275 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_LD_TBL,
20276 p_PRODUCT_PRECEDENCE =>G_PRODUCT_PRECEDENCE_TBL ,
20277 p_INCOMPATABLILITY_GRP_CODE =>G_INCOMP_GRP_CODE_TBL,
20278 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_LD_TBL,
20279 p_APPLIED_FLAG =>G_APPLIED_FLAG_LD_TBL,
20280 p_AUTOMATIC_FLAG =>G_AUTOMATIC_FLAG_TBL,
20281 p_PRIMARY_UOM_FLAG =>G_PRIMARY_UOM_FLAG_TBL,
20282 p_MODIFIER_LEVEL_CODE =>G_MODIFIER_LEVEL_CODE_TBL,
20283 p_LIST_LINE_NO =>G_LIST_LINE_NO_TBL,
20284 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
20285 P_BREAK_UOM_CODE =>G_BREAK_UOM_TBL, /* Proration */
20286 P_BREAK_UOM_CONTEXT =>G_BREAK_CONTEXT_TBL, /* Proration */
20287 P_BREAK_UOM_ATTRIBUTE =>G_BREAK_ATTRIBUTE_TBL, /* Proration */
20288 x_status_code =>l_status_code,
20289 x_status_text =>l_status_text
20290 );
20291 end if; -- vivek, multi currency installed
20292 qp_debug_util.tstop('INSERT_LDETS_PRICE_LIST_MULT/NON_MULTI');
20293 END IF;
20294 M := 1;
20295
20296
20297
20298 IF (K>1) THEN
20299 qp_debug_util.tstart('INSERT_PRICE_LIST_ATTRS','Inserting INSERT_PRICE_LIST_ATTRS');
20300 INSERT_PRICE_LIST_ATTRS
20301 ( p_LINE_INDEX_tbl =>G_LINE_INDEX_tbl,
20302 p_LINE_DETAIL_INDEX_tbl =>G_LINE_DETAIL_INDEX_tbl,
20303 p_ATTRIBUTE_LEVEL_tbl =>G_ATTRIBUTE_LEVEL_tbl,
20304 p_ATTRIBUTE_TYPE_tbl =>G_ATTRIBUTE_TYPE_tbl,
20305 p_LIST_HEADER_ID_tbl =>G_LIST_HEADER_ID_tbl,
20306 p_LIST_LINE_ID_tbl =>G_LIST_LINE_ID_tbl,
20307 p_CONTEXT_tbl =>G_CONTEXT_tbl,
20308 p_ATTRIBUTE_tbl =>G_ATTRIBUTE_tbl,
20309 p_VALUE_FROM_tbl =>G_VALUE_FROM_tbl,
20310 p_SETUP_VALUE_FROM_tbl =>G_SETUP_VALUE_FROM_tbl,
20311 p_SETUP_VALUE_TO_tbl =>G_SETUP_VALUE_TO_tbl,
20312 p_GROUPING_NUMBER_tbl => G_GROUPING_NUMBER_tbl,
20313 p_COMPARISON_OPERATOR_TYPE_tbl =>G_COMPARISON_OPERATOR_TYPE_tbl,
20314 p_VALIDATED_FLAG_tbl =>G_VALIDATED_FLAG_tbl,
20315 p_APPLIED_FLAG_tbl =>G_APPLIED_FLAG_tbl,
20316 p_PRICING_STATUS_CODE_tbl =>G_PRICING_STATUS_CODE_tbl,
20317 p_PRICING_STATUS_TEXT_tbl =>G_PRICING_STATUS_TEXT_tbl,
20318 p_QUALIFIER_PRECEDENCE_tbl =>G_QUALIFIER_PRECEDENCE_tbl,
20319 p_DATATYPE_tbl =>G_DATATYPE_tbl,
20320 p_PRICING_ATTR_FLAG_tbl =>G_PRICING_ATTR_FLAG_tbl,
20321 p_QUALIFIER_TYPE_tbl =>G_QUALIFIER_TYPE_TBL,
20322 p_PRODUCT_UOM_CODE_TBL =>G_PRODUCT_UOM_CODE_TBL,
20323 p_EXCLUDER_FLAG_TBL =>G_EXCLUDER_FLAG_TBL,
20324 p_PRICING_PHASE_ID_TBL =>G_PRICING_PHASE_ID_TBL_A,
20325 p_INCOMPATABILITY_GRP_CODE_TBL =>G_INCOMP_GRP_CODE_TBL_A,
20326 p_LINE_DETAIL_TYPE_CODE_TBL =>G_LINE_DETAIL_TYPE_CODE_TBL_A,
20327 p_MODIFIER_LEVEL_CODE_TBL =>G_MODIFIER_LEVEL_CODE_TBL_A,
20328 p_PRIMARY_UOM_FLAG_TBL =>G_PRIMARY_UOM_FLAG_TBL_A,
20329 x_status_code =>l_status_code,
20330 x_status_text =>l_status_text);
20331 qp_debug_util.tstop('INSERT_PRICE_LIST_ATTRS');
20332 END IF;
20333 K:=1;
20334
20335
20336 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20337 engine_debug('#100');
20338
20339 END IF;
20340 IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
20341
20342 lq_line_index := -9999;
20343 lq_list_line_id := -9999;
20344
20345 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20346 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20347 engine_debug('cursor open l_list_qual_cur_currency-multi-currency TRUE');
20348 END IF;
20349 OPEN l_list_qual_cur_currency;
20350 qp_debug_util.tstart('L_LIST_QUAL_CUR_CURRENCY','Cursor Loop l_list_qual_cur_currency');
20351 else -- vivek, multi currency not installed, not used
20352 OPEN l_list_qual_cur;
20353 qp_debug_util.tstart('L_LIST_QUAL_CUR','Cursor Loop l_list_qual_cur');
20354 end if; -- vivek, multi currency installed
20355 qp_debug_util.tstart('L_LIST_QUAL_CUR_CURRENCY_FETCH','Cursor Loop L_LIST_QUAL_CUR_CURRENCY_FETCH');
20356 LOOP
20357 G_LINE_INDEX_TBL_P.delete;
20358 G_LIST_LINE_ID_TBL_P.delete;
20359 G_OPER_CALCULATION_CODE_TBL_P.delete;
20360 G_OPERAND_VALUE_TBL_P.delete;
20361 G_PRICING_GROUP_SEQUENCE_TBL_P.delete;
20362 G_LIST_LINE_TYPE_TBL_P.delete;
20363 G_PRICING_PHASE_ID_TBL_P.delete;
20364 G_AUTOMATIC_FLAG_TBL_P.delete;
20365 G_OVERRIDE_FLAG_TBL_P.delete;
20366 G_PRINT_ON_INVOICE_FLAG_TBL_P.delete;
20367 G_INCOMP_GRP_CODE_TBL_P.delete;
20368 G_PRICE_FORMULA_ID_TBL_P.delete;
20369 G_PRODUCT_PRECEDENCE_TBL_P.delete;
20370 G_PRIMARY_UOM_FLAG_TBL_P.delete;
20371 G_MODIFIER_LEVEL_CODE_TBL_P.delete;
20372 G_LIST_LINE_NO_TBL_P.delete;
20373 G_PRODUCT_UOM_CODE_TBL_P.delete;
20374 G_EXCLUDER_FLAG_TBL_P.delete;
20375 G_LIST_TYPE_CODE_TBL_P.delete;
20376 G_ROUNDING_FACTOR_TBL_P.delete;
20377 G_LIST_HEADER_ID_TBL_P.delete;
20378 G_CONTEXT_TBL_P.delete;
20379 G_ATTRIBUTE_TBL_P.delete;
20380 G_VALUE_FROM_TBL_P.delete;
20381 G_ATTRIBUTE_LEVEL_TBL_P.delete;
20382 G_ATTRIBUTE_TYPE_TBL_P.delete;
20383 G_APPLIED_FLAG_TBL_P.delete;
20384 G_CONTEXT_TBL_PR.delete;
20385 G_ATTRIBUTE_TBL_PR.delete;
20386 G_VALUE_FROM_TBL_PR.delete;
20387 G_SETUP_VALUE_FROM_TBL_PR.delete;
20388 G_SETUP_VALUE_TO_TBL_PR.delete;
20389 G_ATTRIBUTE_LEVEL_TBL_PR.delete;
20390 G_ATTRIBUTE_TYPE_TBL_PR.delete;
20391 G_OPERATOR_TYPE_TBL_PR.delete;
20392 G_CONTEXT_TBL_Q.delete;
20393 G_ATTRIBUTE_TBL_Q.delete;
20394 G_VALUE_FROM_TBL_Q.delete;
20395 G_PRICING_ATTR_FLAG_TBL_Q.delete;
20396 G_GROUPING_NO_TBL_Q.delete;
20397 G_QUALIFIER_PRECEDENCE_TBL_Q.delete;
20398 G_DATATYPE_TBL_Q.delete;
20399 G_SETUP_VALUE_FROM_TBL_Q.delete;
20400 G_SETUP_VALUE_TO_TBL_Q.delete;
20401 G_OPERATOR_TYPE_TBL_Q .delete;
20402 G_DATATYPE_TBL_PR.delete;
20403 G_QUALIFIER_TYPE_TBL_Q.delete;
20404 G_BREAK_UOM_TBL_P.delete; /* Proration */
20405 G_BREAK_CONTEXT_TBL_P.delete; /* Proration */
20406 G_BREAK_ATTRIBUTE_TBL_P.delete; /* Proration */
20407 G_PRICE_BREAK_TYPE_CODE_TBL_P.delete; --[julin] for price book
20408
20409 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20410 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20411 engine_debug('cursor l_list_qual_cur_currency-multi-currency TRUE - delete tables');
20412 END IF;
20413 G_CURRENCY_DETAIL_ID_TBL_P.delete; /* sunilpandey */
20414 G_CURRENCY_HEADER_ID_TBL_P.delete; /* vivek */
20415 G_SELLING_ROUNDING_TBL_P.delete; /* vivek */
20416 G_ORDER_CURRENCY_TBL_P.delete; /* vivek */
20417 G_PRICING_EFFECTIVE_DATE_TBL_P.delete; /* vivek */
20418 G_BASE_CURRENCY_CODE_TBL_P.delete; /* vivek */
20419 end if; /* vivek */
20420
20421 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20422 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20423 engine_debug('cursor l_list_qual_cur_currency-multi-currency TRUE - bulk collect');
20424
20425 END IF;
20426 FETCH l_list_qual_cur_currency BULK COLLECT INTO
20427 G_LINE_INDEX_TBL_P
20428 , G_LIST_LINE_ID_TBL_P
20429 , G_OPER_CALCULATION_CODE_TBL_P
20430 , G_OPERAND_VALUE_TBL_P
20431 , G_PRICING_GROUP_SEQUENCE_TBL_P
20432 , G_LIST_LINE_TYPE_TBL_P
20433 , G_PRICING_PHASE_ID_TBL_P
20434 , G_AUTOMATIC_FLAG_TBL_P
20435 , G_INCOMP_GRP_CODE_TBL_P
20436 , G_PRICE_FORMULA_ID_TBL_P
20437 , G_PRODUCT_PRECEDENCE_TBL_P
20438 , G_PRIMARY_UOM_FLAG_TBL_P
20439 , G_MODIFIER_LEVEL_CODE_TBL_P
20440 , G_LIST_LINE_NO_TBL_P
20441 , G_PRODUCT_UOM_CODE_TBL_P
20442 , G_EXCLUDER_FLAG_TBL_P
20443 , G_LIST_TYPE_CODE_TBL_P
20444 , G_ROUNDING_FACTOR_TBL_P
20445 , G_LIST_HEADER_ID_TBL_P
20446 , G_CONTEXT_TBL_P
20447 , G_ATTRIBUTE_TBL_P
20448 , G_VALUE_FROM_TBL_P
20449 , G_ATTRIBUTE_LEVEL_TBL_P
20450 , G_ATTRIBUTE_TYPE_TBL_P
20451 , G_APPLIED_FLAG_TBL_P
20452 , G_CONTEXT_TBL_PR
20453 , G_ATTRIBUTE_TBL_PR
20454 , G_VALUE_FROM_TBL_PR
20455 , G_SETUP_VALUE_FROM_TBL_PR
20456 , G_SETUP_VALUE_TO_TBL_PR
20457 , G_ATTRIBUTE_LEVEL_TBL_PR
20458 , G_ATTRIBUTE_TYPE_TBL_PR
20459 , G_OPERATOR_TYPE_TBL_PR
20460 , G_CONTEXT_TBL_Q
20461 , G_ATTRIBUTE_TBL_Q
20462 , G_VALUE_FROM_TBL_Q
20463 , G_PRICING_ATTR_FLAG_TBL_Q
20464 , G_GROUPING_NO_TBL_Q
20465 , G_QUALIFIER_PRECEDENCE_TBL_Q
20466 , G_DATATYPE_TBL_Q
20467 , G_SETUP_VALUE_FROM_TBL_Q
20468 , G_SETUP_VALUE_TO_TBL_Q
20469 , G_OPERATOR_TYPE_TBL_Q
20470 , G_DATATYPE_TBL_PR
20471 , G_QUALIFIER_TYPE_TBL_Q
20472 , G_CURRENCY_DETAIL_ID_TBL_P /* sunilpandey */
20473 , G_CURRENCY_HEADER_ID_TBL_P /* vivek */
20474 , G_SELLING_ROUNDING_TBL_P /* vivek */
20475 , G_ORDER_CURRENCY_TBL_P /* vivek */
20476 , G_PRICING_EFFECTIVE_DATE_TBL_P /* vivek */
20477 , G_BASE_CURRENCY_CODE_TBL_P
20478 , G_BREAK_UOM_TBL_P /* Proration */
20479 , G_BREAK_CONTEXT_TBL_P /* Proration */
20480 , G_BREAK_ATTRIBUTE_TBL_P /* Proration */
20481 , G_DERIVED_QUALIFIER_FLAG_TBL_Q --- Added for TCA
20482 , G_PRICE_BREAK_TYPE_CODE_TBL_P --[julin] for price book
20483 LIMIT nROWS;/* vivek */
20484 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
20485 else -- vivek, multi currency not installed, not used
20486 FETCH l_list_qual_cur BULK COLLECT INTO
20487 G_LINE_INDEX_TBL_P
20488 , G_LIST_LINE_ID_TBL_P
20489 , G_OPER_CALCULATION_CODE_TBL_P
20490 , G_OPERAND_VALUE_TBL_P
20491 , G_PRICING_GROUP_SEQUENCE_TBL_P
20492 , G_LIST_LINE_TYPE_TBL_P
20493 , G_PRICING_PHASE_ID_TBL_P
20494 , G_AUTOMATIC_FLAG_TBL_P
20495 , G_INCOMP_GRP_CODE_TBL_P
20496 , G_PRICE_FORMULA_ID_TBL_P
20497 , G_PRODUCT_PRECEDENCE_TBL_P
20498 , G_PRIMARY_UOM_FLAG_TBL_P
20499 , G_MODIFIER_LEVEL_CODE_TBL_P
20500 , G_LIST_LINE_NO_TBL_P
20501 , G_PRODUCT_UOM_CODE_TBL_P
20502 , G_EXCLUDER_FLAG_TBL_P
20503 , G_LIST_TYPE_CODE_TBL_P
20504 , G_ROUNDING_FACTOR_TBL_P
20505 , G_LIST_HEADER_ID_TBL_P
20506 , G_CONTEXT_TBL_P
20507 , G_ATTRIBUTE_TBL_P
20508 , G_VALUE_FROM_TBL_P
20509 , G_ATTRIBUTE_LEVEL_TBL_P
20510 , G_ATTRIBUTE_TYPE_TBL_P
20511 , G_APPLIED_FLAG_TBL_P
20512 , G_CONTEXT_TBL_PR
20513 , G_ATTRIBUTE_TBL_PR
20514 , G_VALUE_FROM_TBL_PR
20515 , G_SETUP_VALUE_FROM_TBL_PR
20516 , G_SETUP_VALUE_TO_TBL_PR
20517 , G_ATTRIBUTE_LEVEL_TBL_PR
20518 , G_ATTRIBUTE_TYPE_TBL_PR
20519 , G_OPERATOR_TYPE_TBL_PR
20520 , G_CONTEXT_TBL_Q
20521 , G_ATTRIBUTE_TBL_Q
20522 , G_VALUE_FROM_TBL_Q
20523 , G_PRICING_ATTR_FLAG_TBL_Q
20524 , G_GROUPING_NO_TBL_Q
20525 , G_QUALIFIER_PRECEDENCE_TBL_Q
20526 , G_DATATYPE_TBL_Q
20527 , G_SETUP_VALUE_FROM_TBL_Q
20528 , G_SETUP_VALUE_TO_TBL_Q
20529 , G_OPERATOR_TYPE_TBL_Q
20530 , G_DATATYPE_TBL_PR
20531 , G_QUALIFIER_TYPE_TBL_Q
20532 , G_BREAK_UOM_TBL_P /* Proration */
20533 , G_BREAK_CONTEXT_TBL_P /* Proration */
20534 , G_BREAK_ATTRIBUTE_TBL_P /* Proration */
20535 , G_DERIVED_QUALIFIER_FLAG_TBL_Q
20536 , G_PRICE_BREAK_TYPE_CODE_TBL_P --[julin] for price book
20537 LIMIT nROWS;
20538 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
20539 end if; -- vivek, multi currency installed
20540
20541 IF (G_LINE_INDEX_TBL_P.COUNT > 0 ) THEN
20542
20543 FOR I in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST LOOP
20544
20545 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20546 engine_debug('#101');
20547
20548 engine_debug('List Line Id : ' || g_list_line_id_tbl_p(I));
20549 engine_debug('Line Index : ' || g_line_index_tbl_P(I));
20550
20551 END IF;
20552 IF (lq_line_index <> g_line_index_tbl_p(I) OR lq_list_line_id <> g_list_line_id_tbl_p(I)) THEN
20553
20554 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20555 engine_debug('Inserting List Line #102');
20556
20557 END IF;
20558 L_LINE_DETAIL_INDEX := GET_LINE_DETAIL_INDEX;
20559 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20560 engine_debug('Line Detail Index : ' || l_line_detail_index);
20561
20562 END IF;
20563 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(I);
20564 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
20565 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(I);
20566 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(I);
20567 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
20568 G_PRICING_STATUS_TEXT_LD_TBL(M) :='INSERTED IN L_LIST_QUAL_CUR';
20569 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
20570 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
20571 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
20572 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(I); --[julin] for price book
20573 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(I);
20574 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(I);
20575 G_CREATED_FROM_SQL_TBL(M) :='INSERTED_IN_L_LIST_QUAL_CUR';
20576 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(I);
20577 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(I);
20578 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(I);
20579 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(I);
20580 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(I);
20581 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(I);
20582 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(I);
20583 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
20584 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
20585 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
20586 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(I);
20587 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(I);
20588 G_BREAK_UOM_TBL(M) :=G_BREAK_UOM_TBL_P(I); /* Proration */
20589 G_BREAK_CONTEXT_TBL(M) :=G_BREAK_CONTEXT_TBL_P(I); /* Proration */
20590 G_BREAK_ATTRIBUTE_TBL(M) :=G_BREAK_ATTRIBUTE_TBL_P(I); /* Proration */
20591 if G_MULTI_CURRENCY_PROFILE = 'Y' and
20592 G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20593 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20594 engine_debug('cursor l_list_qual_cur_currency-multi-currency TRUE - populate tables');
20595 END IF;
20596 G_CURRENCY_DETAIL_ID_TBL(M) := G_CURRENCY_DETAIL_ID_TBL_P(I); /* sunilpandey */
20597 G_CURRENCY_HEADER_ID_TBL(M) := G_CURRENCY_HEADER_ID_TBL_P(I); /* vivek */
20598 G_SELLING_ROUNDING_TBL(M) := G_SELLING_ROUNDING_TBL_P(I); /* vivek */
20599 G_ORDER_CURRENCY_TBL(M) := G_ORDER_CURRENCY_TBL_P(I); /* vivek */
20600 G_PRICING_EFFECTIVE_DATE_TBL(M) := G_PRICING_EFFECTIVE_DATE_TBL_P(I); /* vivek */
20601 G_BASE_CURRENCY_CODE_TBL(M) := G_BASE_CURRENCY_CODE_TBL_P(I); /* vivek */
20602 end if; /* vivek */
20603 M := M+1;
20604 lq_line_index := g_line_index_tbl_p(I);
20605 lq_list_line_id := g_list_line_id_tbl_p(I);
20606 END IF;
20607
20608 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20609 engine_debug('#103');
20610 END IF;
20611 IF (G_CONTEXT_TBL_Q(I) IS NOT NULL) THEN
20612 --Qualifiers attributes
20613 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(I);
20614 G_LINE_DETAIL_INDEX_tbl(K) := L_LINE_DETAIL_INDEX;
20615 G_ATTRIBUTE_LEVEL_tbl(K) := nvl(G_ATTRIBUTE_LEVEL_TBL_P(I),'X');
20616 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
20617 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_Q(I);
20618 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_Q(I);
20619 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_Q(I);
20620 G_COMPARISON_OPERATOR_TYPE_tbl(K):= G_OPERATOR_TYPE_TBL_Q(I);
20621 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(I);
20622 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
20623 G_LIST_HEADER_ID_tbl(K) := G_LIST_HEADER_ID_TBL_P(I);
20624 G_LIST_LINE_ID_tbl(K) := G_LIST_LINE_ID_TBL_P(I);
20625 G_SETUP_VALUE_FROM_tbl(K) := G_SETUP_VALUE_FROM_TBL_Q(I);
20626 G_SETUP_VALUE_TO_tbl(K) := G_SETUP_VALUE_TO_TBL_Q(I);
20627 G_GROUPING_NUMBER_tbl(K) := G_GROUPING_NO_TBL_Q(I);
20628 G_PRICING_STATUS_TEXT_tbl(K) := 'INSERTED IN L_LIST_QUAL_CUR';
20629 G_QUALIFIER_PRECEDENCE_tbl(K) := G_QUALIFIER_PRECEDENCE_TBL_Q(I);
20630 G_DATATYPE_tbl(K) := G_DATATYPE_TBL_Q(I);
20631 G_EXCLUDER_FLAG_TBL(K) := G_EXCLUDER_FLAG_TBL_P(I);
20632 G_PRODUCT_UOM_CODE_TBL(K) := G_PRODUCT_UOM_CODE_TBL_P(I);
20633 G_QUALIFIER_TYPE_TBL(K) := G_QUALIFIER_TYPE_TBL_Q(I);
20634 G_VALIDATED_FLAG_tbl(K) := G_NO;
20635 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
20636 G_PRICING_PHASE_ID_TBL_A(K) := G_PRICING_PHASE_ID_TBL_P(I);
20637 G_INCOMP_GRP_CODE_TBL_A(K) := G_INCOMP_GRP_CODE_TBL_P(I);
20638 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := 'NULL';
20639 G_MODIFIER_LEVEL_CODE_TBL_A(K) := G_MODIFIER_LEVEL_CODE_TBL_P(I);
20640 G_PRIMARY_UOM_FLAG_TBL_A(K) := G_PRIMARY_UOM_FLAG_TBL_P(I);
20641 K:= K+1;
20642 END IF;
20643
20644 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20645 engine_debug('#1031');
20646
20647 END IF;
20648 --INSERT PRODUCT ATTRIBUTES
20649 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
20650 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_P(I);
20651 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_P(I);
20652 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_P(I);
20653 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_P(I);
20654 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_P(I);
20655 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
20656 G_VALIDATED_FLAG_tbl(K) :=G_NO;
20657 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
20658 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
20659 G_PRICING_ATTR_FLAG_tbl(K) :=G_NO;
20660 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
20661 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
20662 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
20663 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
20664 G_SETUP_VALUE_TO_tbl(K) :=NULL;
20665 G_GROUPING_NUMBER_tbl(K) :=NULL;
20666 G_PRICING_STATUS_TEXT_tbl(K) :='INSERTED IN L_LIST_QUAL_CUR';
20667 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
20668 G_DATATYPE_tbl(K) :=NULL;
20669 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
20670 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
20671 G_QUALIFIER_TYPE_TBL(K) :=NULL;
20672 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
20673 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
20674 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
20675 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
20676 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
20677 K:= K+1;
20678
20679 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20680 engine_debug('#105');
20681 END IF;
20682
20683 --INSERT PRICING ATTRIBUTES
20684 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
20685 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
20686 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_PR(I);
20687 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_PR(I);
20688 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_PR(I);
20689 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_PR(I);
20690 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_PR(I);
20691 G_COMPARISON_OPERATOR_TYPE_tbl(K):=G_OPERATOR_TYPE_TBL_PR(I);
20692 G_VALIDATED_FLAG_tbl(K) :=G_NO;
20693 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
20694 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
20695 G_PRICING_ATTR_FLAG_tbl(K) :=NULL;
20696 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
20697 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
20698 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
20699 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
20700 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
20701 G_GROUPING_NUMBER_tbl(K) :=NULL;
20702 G_PRICING_STATUS_TEXT_tbl(K) :='INSERTED IN L_LIST_QUAL_CUR';
20703 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
20704 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
20705 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
20706 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
20707 G_QUALIFIER_TYPE_TBL(K) :=NULL;
20708 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
20709 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
20710 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
20711 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
20712 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
20713 K:= K+1;
20714 END IF;
20715
20716 l_loop_count := l_loop_count +1;
20717 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20718 engine_debug('Primary List Non Validated Search Count : ' || l_loop_count);
20719 END IF;
20720 END LOOP;
20721 END IF;
20722
20723 END LOOP;
20724 qp_debug_util.tstop('L_LIST_QUAL_CUR_CURRENCY_FETCH');
20725 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20726 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20727 engine_debug('cursor close l_list_qual_cur_currency-multi-currency TRUE');
20728 END IF;
20729 CLOSE l_list_qual_cur_currency;
20730 qp_debug_util.tstop('L_LIST_QUAL_CUR_CURRENCY');
20731 else -- vivek, multi currency not installed, not used
20732 CLOSE l_list_qual_cur;
20733
20734 qp_debug_util.tstop('L_LIST_QUAL_CUR');
20735
20736 end if; -- vivek, multi currency installed
20737
20738 END IF; -- p_pricing_phase_id = G_PRICE_LIST_PHASE_ID
20739
20740 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20741 engine_debug('#106');
20742
20743 END IF;
20744 IF M > 1 THEN
20745 qp_debug_util.tstart('INSERT_LDETS_PRICE_LIST_MULT_NON_MULTI','Inserting ldets INSERT_LDETS_PRICE_LIST_MULT_NON_MULTI');
20746 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20747 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20748 engine_debug('cursor l_list_qual_cur_currency-multi-currency TRUE - insert_ldets2');
20749
20750 END IF;
20751 INSERT_LDETS_PRICE_LIST_MULT( p_LINE_DETAIL_index => G_LINE_DETAIL_INDEX_LD_TBL,
20752 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
20753 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
20754 p_LINE_INDEX => G_LINE_INDEX_LD_TBL,
20755 p_CREATED_FROM_LIST_HEADER_ID =>G_LIST_HEADER_ID_LD_TBL,
20756 p_CREATED_FROM_LIST_LINE_ID =>G_LIST_LINE_ID_LD_TBL,
20757 p_CREATED_FROM_LIST_LINE_TYPE =>G_LIST_LINE_TYPE_TBL,
20758 p_CREATED_FROM_LIST_TYPE_CODE =>G_LIST_TYPE_CODE_TBL,
20759 p_CREATED_FROM_SQL =>G_CREATED_FROM_SQL_TBL,
20760 p_PRICING_GROUP_SEQUENCE =>G_PRICING_GROUP_SEQUENCE_TBL,
20761 P_PRICING_PHASE_ID =>G_PRICING_PHASE_ID_TBL,
20762 p_OPERAND_CALCULATION_CODE =>G_OPERAND_CALCULATION_CODE_TBL,
20763 p_OPERAND_VALUE =>G_OPERAND_VALUE_TBL,
20764 p_PRICE_FORMULA_ID =>G_PRICE_FORMULA_ID_TBL,
20765 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_LD_TBL,
20766 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_LD_TBL,
20767 p_PRODUCT_PRECEDENCE =>G_PRODUCT_PRECEDENCE_TBL ,
20768 p_INCOMPATABLILITY_GRP_CODE =>G_INCOMP_GRP_CODE_TBL,
20769 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_LD_TBL,
20770 p_APPLIED_FLAG =>G_APPLIED_FLAG_LD_TBL,
20771 p_AUTOMATIC_FLAG =>G_AUTOMATIC_FLAG_TBL,
20772 p_PRIMARY_UOM_FLAG =>G_PRIMARY_UOM_FLAG_TBL,
20773 p_MODIFIER_LEVEL_CODE =>G_MODIFIER_LEVEL_CODE_TBL,
20774 p_LIST_LINE_NO =>G_LIST_LINE_NO_TBL,
20775 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
20776 P_CURRENCY_DETAIL_ID =>G_CURRENCY_DETAIL_ID_TBL, /* sunilpandey */
20777 P_CURRENCY_HEADER_ID =>G_CURRENCY_HEADER_ID_TBL, /* vivek */
20778 P_SELLING_ROUNDING_FACTOR =>G_SELLING_ROUNDING_TBL, /* vivek */
20779 P_ORDER_CURRENCY =>G_ORDER_CURRENCY_TBL, /* vivek */
20780 P_PRICING_EFFECTIVE_DATE =>G_PRICING_EFFECTIVE_DATE_TBL, /* vivek */
20781 P_BASE_CURRENCY_CODE =>G_BASE_CURRENCY_CODE_TBL, /* vivek */
20782 P_BREAK_UOM_CODE =>G_BREAK_UOM_TBL, /* Proration */
20783 P_BREAK_UOM_CONTEXT =>G_BREAK_CONTEXT_TBL, /* Proration */
20784 P_BREAK_UOM_ATTRIBUTE =>G_BREAK_ATTRIBUTE_TBL, /* Proration */
20785 x_status_code =>l_status_code,
20786 x_status_text =>l_status_text
20787 );
20788 else -- vivek, multi currency not installed, not used
20789 INSERT_LDETS_PRICE_LIST_PVT( p_LINE_DETAIL_index => G_LINE_DETAIL_INDEX_LD_TBL,
20790 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
20791 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
20792 p_LINE_INDEX => G_LINE_INDEX_LD_TBL,
20793 p_CREATED_FROM_LIST_HEADER_ID =>G_LIST_HEADER_ID_LD_TBL,
20794 p_CREATED_FROM_LIST_LINE_ID =>G_LIST_LINE_ID_LD_TBL,
20795 p_CREATED_FROM_LIST_LINE_TYPE =>G_LIST_LINE_TYPE_TBL,
20796 p_CREATED_FROM_LIST_TYPE_CODE =>G_LIST_TYPE_CODE_TBL,
20797 p_CREATED_FROM_SQL =>G_CREATED_FROM_SQL_TBL,
20798 p_PRICING_GROUP_SEQUENCE =>G_PRICING_GROUP_SEQUENCE_TBL,
20799 P_PRICING_PHASE_ID =>G_PRICING_PHASE_ID_TBL,
20800 p_OPERAND_CALCULATION_CODE =>G_OPERAND_CALCULATION_CODE_TBL,
20801 p_OPERAND_VALUE =>G_OPERAND_VALUE_TBL,
20802 p_PRICE_FORMULA_ID =>G_PRICE_FORMULA_ID_TBL,
20803 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_LD_TBL,
20804 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_LD_TBL,
20805 p_PRODUCT_PRECEDENCE =>G_PRODUCT_PRECEDENCE_TBL ,
20806 p_INCOMPATABLILITY_GRP_CODE =>G_INCOMP_GRP_CODE_TBL,
20807 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_LD_TBL,
20808 p_APPLIED_FLAG =>G_APPLIED_FLAG_LD_TBL,
20809 p_AUTOMATIC_FLAG =>G_AUTOMATIC_FLAG_TBL,
20810 p_PRIMARY_UOM_FLAG =>G_PRIMARY_UOM_FLAG_TBL,
20811 p_MODIFIER_LEVEL_CODE =>G_MODIFIER_LEVEL_CODE_TBL,
20812 p_LIST_LINE_NO =>G_LIST_LINE_NO_TBL,
20813 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
20814 P_BREAK_UOM_CODE =>G_BREAK_UOM_TBL, /* Proration */
20815 P_BREAK_UOM_CONTEXT =>G_BREAK_CONTEXT_TBL, /* Proration */
20816 P_BREAK_UOM_ATTRIBUTE =>G_BREAK_ATTRIBUTE_TBL, /* Proration */
20817 x_status_code =>l_status_code,
20818 x_status_text =>l_status_text
20819 );
20820 end if; -- vivek, multi currency installed
20821 qp_debug_util.tstop('INSERT_LDETS_PRICE_LIST_MULT_NON_MULTI');
20822 END IF;
20823 M :=1;
20824
20825
20826 IF (K>1) THEN
20827 qp_debug_util.tstart('INSERT_PRICE_LIST_ATTRS','Inserting line attrs INSERT_PRICE_LIST_ATTRS');
20828 INSERT_PRICE_LIST_ATTRS
20829 ( p_LINE_INDEX_tbl =>G_LINE_INDEX_tbl,
20830 p_LINE_DETAIL_INDEX_tbl =>G_LINE_DETAIL_INDEX_tbl,
20831 p_ATTRIBUTE_LEVEL_tbl =>G_ATTRIBUTE_LEVEL_tbl,
20832 p_ATTRIBUTE_TYPE_tbl =>G_ATTRIBUTE_TYPE_tbl,
20833 p_LIST_HEADER_ID_tbl =>G_LIST_HEADER_ID_tbl,
20834 p_LIST_LINE_ID_tbl =>G_LIST_LINE_ID_tbl,
20835 p_CONTEXT_tbl =>G_CONTEXT_tbl,
20836 p_ATTRIBUTE_tbl =>G_ATTRIBUTE_tbl,
20837 p_VALUE_FROM_tbl =>G_VALUE_FROM_tbl,
20838 p_SETUP_VALUE_FROM_tbl =>G_SETUP_VALUE_FROM_tbl,
20839 p_SETUP_VALUE_TO_tbl =>G_SETUP_VALUE_TO_tbl,
20840 p_GROUPING_NUMBER_tbl => G_GROUPING_NUMBER_tbl,
20841 p_COMPARISON_OPERATOR_TYPE_tbl =>G_COMPARISON_OPERATOR_TYPE_tbl,
20842 p_VALIDATED_FLAG_tbl =>G_VALIDATED_FLAG_tbl,
20843 p_APPLIED_FLAG_tbl =>G_APPLIED_FLAG_tbl,
20844 p_PRICING_STATUS_CODE_tbl =>G_PRICING_STATUS_CODE_tbl,
20845 p_PRICING_STATUS_TEXT_tbl =>G_PRICING_STATUS_TEXT_tbl,
20846 p_QUALIFIER_PRECEDENCE_tbl =>G_QUALIFIER_PRECEDENCE_tbl,
20847 p_DATATYPE_tbl =>G_DATATYPE_tbl,
20848 p_PRICING_ATTR_FLAG_tbl =>G_PRICING_ATTR_FLAG_tbl,
20849 p_QUALIFIER_TYPE_tbl =>G_QUALIFIER_TYPE_TBL,
20850 p_product_uom_code_tbl =>G_PRODUCT_UOM_CODE_TBL,
20851 p_excluder_flag_tbl =>G_EXCLUDER_FLAG_TBL,
20852 p_PRICING_PHASE_ID_TBL =>G_PRICING_PHASE_ID_TBL_A,
20853 p_INCOMPATABILITY_GRP_CODE_TBL =>G_INCOMP_GRP_CODE_TBL_A,
20854 p_LINE_DETAIL_TYPE_CODE_TBL =>G_LINE_DETAIL_TYPE_CODE_TBL_A,
20855 p_MODIFIER_LEVEL_CODE_TBL =>G_MODIFIER_LEVEL_CODE_TBL_A,
20856 p_PRIMARY_UOM_FLAG_TBL =>G_PRIMARY_UOM_FLAG_TBL_A,
20857 x_status_code =>l_status_code,
20858 x_status_text =>l_status_text);
20859 qp_debug_util.tstop('INSERT_PRICE_LIST_ATTRS');
20860 END IF;
20861 K:=1;
20862
20863
20864 -- Determine Pricing UOM and Qty
20865 IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
20866 IF (l_loop_count <> 0 ) THEN
20867
20868 Evaluate_Between(p_pricing_phase_id,NULL,NULL,l_return_status , l_status_text);
20869
20870 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20871 RAISE E_ROUTINE_ERRORS;
20872 END IF;
20873
20874 -- Check for multiple item categories and customer classes
20875 Eliminate_Multiple_Hierarchies(p_pricing_phase_id,l_return_status,l_status_text);
20876
20877 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20878 RAISE E_ROUTINE_ERRORS;
20879 END IF;
20880
20881 --Handle_Excluder(p_pricing_phase_id,NULL,l_return_status,l_status_text);
20882
20883 Perform_Grouping(p_pricing_phase_id, NULL, l_return_status, l_status_text);
20884 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20885 RAISE E_ROUTINE_ERRORS;
20886 END IF;
20887
20888 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20889 engine_debug('Non Validated Price List Grouping Return Status : ' || l_return_status);
20890
20891
20892 engine_debug('Calling Incomp Routine in Non Validated Price List');
20893
20894 END IF;
20895 QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty
20896 (p_line_index => NULL,
20897 p_order_uom_code => NULL,
20898 p_order_qty => NULL,
20899 p_pricing_phase_id => G_PRICE_LIST_PHASE_ID,
20900 p_call_big_search => FALSE,
20901 x_list_line_id => l_list_line_id,
20902 x_return_status => l_return_status,
20903 x_return_status_txt => l_status_text);
20904
20905 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20906 RAISE E_ROUTINE_ERRORS;
20907 END IF;
20908
20909 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20910 engine_debug('Incomp Return Status Non Validated QP_PREQ_GRP: ' || l_return_status);
20911
20912 END IF;
20913
20914 -- 3773652
20915 -- re-run Evaluate_Between after UOM conversion to check PLL really qualifies
20916 begin
20917 select 'x' into l_dummy
20918 from qp_npreq_lines_tmp
20919 where LINE_UOM_CODE <> nvl(PRICED_UOM_CODE, LINE_UOM_CODE)
20920 and (PRICE_FLAG = G_YES
20921 or
20922 PRICE_FLAG = G_PHASE and p_freeze_override_flag = G_YES)
20923 and rownum = 1;
20924
20925 Evaluate_Between(p_pricing_phase_id,NULL,NULL,l_return_status,l_status_text);
20926 exception
20927 when no_data_found then
20928 null;
20929 end;
20930
20931 -- Update the request line status for lines which got valid price list
20932 Update_Request_Line_Status(p_control_rec,'SUCCESS',p_freeze_override_flag,l_return_status,l_status_text); --[julin/4708044]
20933
20934 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20935 RAISE E_ROUTINE_ERRORS;
20936 END IF;
20937
20938 --bug# 2091386 not reflecting the right price on change on UOM on the order line . Since
20939 --QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty determines the pricing_qty
20940 --which is needed later in Get_Eligible_Price_Break we need to call Get_Eligible_Price_Break
20941 --after QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty.
20942 --By doing this we will get the right price in the PRICE event on change of UOM on the order line
20943 --for price based on price break
20944 Get_Eligible_Price_Break(p_pricing_phase_id,NULL,l_return_status,l_status_text);
20945 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20946 RAISE E_ROUTINE_ERRORS;
20947 END IF;
20948
20949
20950 OPEN l_check_secondary_search;
20951 FETCH l_check_secondary_search INTO l_dummy;
20952
20953 IF l_check_secondary_search%FOUND THEN
20954 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20955 engine_debug('Trying to Perform Secondary Search ');
20956 END IF;
20957 Perform_Secondary_Search(p_freeze_override_flag,p_control_rec,l_return_status,l_status_text);
20958 END IF;
20959 CLOSE l_check_secondary_search;
20960
20961 --delete children lines of PBH if the parent PBH line get eliminated in QP_Resolve_Incompatability_PVT
20962
20963 /*OPEN l_chk_deleted_pbh_cur(J.line_index,G_PRICE_LIST_PHASE_ID);
20964 FETCH l_chk_deleted_pbh_cur INTO l_dummy;
20965 IF l_chk_deleted_pbh_cur%FOUND THEN
20966 Delete_Invalid_PBH_Children(J.line_index,G_PRICE_LIST_PHASE_ID);
20967 END IF;
20968 CLOSE l_chk_deleted_pbh_cur;*/
20969 ELSE
20970 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20971 engine_debug('LOOOOOOOOOOOP Count : ' || l_loop_count);
20972 END IF;
20973 -- Update the request line status for lines which got valid price list
20974 Update_Request_Line_Status(p_control_rec,'FAILURE',p_freeze_override_flag,l_return_status,l_status_text); --[julin/4708044]
20975 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20976 RAISE E_ROUTINE_ERRORS;
20977 END IF;
20978
20979 OPEN l_check_secondary_search;
20980 FETCH l_check_secondary_search INTO l_dummy;
20981
20982 IF l_check_secondary_search%FOUND THEN
20983 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20984 engine_debug('Trying to Perform Secondary Search ');
20985 END IF;
20986 Perform_Secondary_Search(p_freeze_override_flag,p_control_rec,l_return_status,l_status_text);
20987 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20988 RAISE E_ROUTINE_ERRORS;
20989 END IF;
20990 END IF;
20991 CLOSE l_check_secondary_search;
20992 END IF; --l_loop_count <> 0
20993 END IF;
20994
20995 --If there are request lines that don't have price list passed
20996 --or not validated, the return further_search_flag=Yes to caller
20997
20998 IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
20999 OPEN l_check_no_list_passed;
21000 FETCH l_check_no_list_passed INTO l_dummy;
21001
21002 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21003 engine_debug('DUMMMMMMMMMMMMMMY: ' || l_dummy);
21004
21005 END IF;
21006 IF l_check_no_list_passed%FOUND THEN
21007 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21008 engine_debug('DUMMMMMMMMMMMMMMY1000: ' || l_dummy);
21009 END IF;
21010 x_further_search := G_YES;
21011 ELSE
21012 x_further_search := G_NO;
21013 END IF;
21014
21015 CLOSE l_check_no_list_passed;
21016 END IF; --p_pricing_phase_id = G_PRICE_LIST_PHASE_ID
21017
21018 --Reset_all_tbls;
21019 Reset_All_Tbls(l_return_status ,l_status_text );
21020 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
21021 RAISE E_ROUTINE_ERRORS;
21022 END IF;
21023
21024 EXCEPTION
21025 WHEN E_ROUTINE_ERRORS THEN
21026 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21027 engine_debug(l_routine||': '||l_status_text);
21028 END IF;
21029 x_status_code := FND_API.G_RET_STS_ERROR;
21030 x_status_text := l_routine||': '||l_status_text;
21031 WHEN E_NO_LIST_FOUND THEN
21032 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21033 engine_debug('No list found for a given item even after secondary fetch');
21034 END IF;
21035 WHEN TOO_MANY_ROWS THEN
21036 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21037 engine_debug('In LIST_HEADER_SEARCH procedure');
21038 engine_debug('Conflict in price list detected');
21039 engine_debug(SQLERRM);
21040 END IF;
21041 null;
21042 WHEN NO_DATA_FOUND THEN
21043 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21044 engine_debug('In LIST_HEADER_SEARCH procedure');
21045 engine_debug('Item is not in the price list');
21046 END IF;
21047 null;
21048 WHEN OTHERS THEN
21049 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21050 engine_debug(l_routine||' '||SQLERRM);
21051 END IF;
21052 x_status_code := FND_API.G_RET_STS_ERROR;
21053 x_status_text := l_routine||' '||SQLERRM;
21054 END LIST_HEADER_SEARCH;
21055
21056
21057 --skattama
21058 PROCEDURE PERFORM_SECONDARY_PATRN_SEARCH(P_FREEZE_OVERRIDE_FLAG VARCHAR2,
21059 p_search_path NUMBER,
21060 p_control_rec CONTROL_RECORD_TYPE,
21061 x_status_code OUT NOCOPY VARCHAR2,
21062 x_status_text OUT NOCOPY VARCHAR2)
21063 AS
21064
21065 CURSOR L_SEC_LST_HDR_P1_QLFY_SEC_Y IS
21066 SELECT
21067 /*+ ORDERED index(atrgrps QP_ATTRIBUTE_GROUPS_N3)
21068 index(qplines QP_PREQ_LINES_TMP_U1)
21069 index(qprs qp_pte_source_systems_u2)
21070 L_SEC_LST_HDR_P1_QLFY_SEC_Y */
21071 atrgrps.list_header_id,
21072 atrgrps.list_line_id list_line_id,
21073 qplines.line_index line_index,
21074 atrgrps.pattern_id matched_pattrn_id,
21075 G_PRICE_LIST_PHASE_ID,
21076 atrgrps.hash_key matched_hash_key,
21077 G_STAGE_CACHE_SEC_PL_HDR_SRCH stage,
21078 G_STATUS_UNCHANGED,
21079 atrgrps.source_system_code,
21080 atrgrps.header_quals_exist_flag,
21081 atrgrps.grouping_no grouping_no,
21082 atrgrps.eq_flag,
21083 QPLINES.VALIDATED_FLAG, -- VALIDATED_FLAG
21084 G_LINE_LEVEL,--MODIFIER_LEVEL_CODE,
21085 atrgrps.other_oprt_count,
21086 atrgrps.null_other_oprt_count,
21087 atrgrps.LIST_TYPE_CODE,
21088 atrgrps.ASK_FOR_FLAG,
21089 atrgrps.HEADER_LIMIT_EXISTS,
21090 atrgrps.LINE_LIMIT_EXISTS,
21091 NULL, --QCDT.CURRENCY_DETAIL_ID,
21092 NULL, --QCDT.CURRENCY_HEADER_ID,
21093 NULL, --QCDT.SELLING_ROUNDING_FACTOR,
21094 atrgrps.CURRENCY_CODE BASE_CURRENCY_CODE,
21095 qplines.pricing_effective_date,
21096 qpq.qualifier_precedence,
21097 atrgrps.descendents_quals_exist
21098 FROM
21099 qp_npreq_lines_tmp qplines,
21100 qp_npreq_line_patrns_tmp qppattmp,
21101 QP_QUALIFIERS qpq,
21102 qp_secu_attr_groups_v atrgrps,
21103 --qp_attribute_groups atrgrps,
21104 --QP_PRICE_REQ_SOURCES_V qprs /* yangli */
21105 qp_pte_source_systems qprs
21106 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
21107 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
21108 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
21109 AND QPQ.COMPARISON_OPERATOR_CODE = '='
21110 AND QPQ.LIST_TYPE_CODE = 'PRL' --3917802
21111 AND atrgrps.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
21112 AND QPQ.LIST_HEADER_ID = atrgrps.LIST_HEADER_ID
21113 AND atrgrps.list_line_id = -1 -- Filter
21114 AND atrgrps.pte_code = G_PTE_CODE
21115 -- AND qppattmp.pattern_id = atrgrps.pattern_id -- Match --13035945 13522077
21116 -- AND qppattmp.hash_key = atrgrps.hash_key -- Match --13035945 13522077
21117 AND (QPLINES.VALIDATED_FLAG = G_YES OR (QPLINES.VALIDATED_FLAG = G_NO
21118 AND qppattmp.pattern_id = atrgrps.pattern_id -- Match
21119 AND qppattmp.hash_key = atrgrps.hash_key -- Match
21120 )
21121 )--13035945 13522077
21122 AND qppattmp.line_index = qplines.line_index --Join
21123 AND (QPLINES.PRICE_FLAG = G_YES
21124 OR
21125 (QPLINES.PRICE_FLAG = G_PHASE
21126 AND
21127 P_FREEZE_OVERRIDE_FLAG = G_YES))
21128 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
21129 AND atrgrps.ACTIVE_FLAG = G_YES
21130 --AND atrgrps.source_system_code = qprs.source_system_code --join
21131 --AND qprs.request_type_code = g_request_type_code
21132 AND qprs.APPLICATION_SHORT_NAME = atrgrps.source_system_code
21133 AND qprs.pte_code = G_PTE_CODE
21134 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
21135 AND atrgrps.CURRENCY_CODE = QPLINES.CURRENCY_CODE
21136 -- AND QPLINES.VALIDATED_FLAG = G_NO --13035945 13522077
21137 AND (QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES
21138 OR
21139 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
21140 )
21141 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
21142 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
21143 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21144 NVL(TRUNC(atrgrps.START_DATE_ACTIVE_H),QPLINES.PRICING_EFFECTIVE_DATE)
21145 AND NVL(TRUNC(atrgrps.END_DATE_ACTIVE_H),QPLINES.PRICING_EFFECTIVE_DATE)
21146 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21147 NVL(TRUNC(atrgrps.START_DATE_ACTIVE_Q),QPLINES.PRICING_EFFECTIVE_DATE)
21148 AND NVL(TRUNC(atrgrps.END_DATE_ACTIVE_Q),QPLINES.PRICING_EFFECTIVE_DATE)
21149 ORDER BY 1,2;
21150
21151 CURSOR L_SEC_LST_LIN_P1_QLFY_SEC_Y IS
21152 SELECT
21153 /*+ ORDERED index(qpl QP_LIST_LINES_N16)
21154 index(qplines QP_PREQ_LINES_TMP_U1)
21155 index(qppattmp QP_NPREQ_LINE_PATRNS_T_N2)
21156 index(qppqual QP_PREQ_PATRN_QUAL_T_N2)
21157 L_SEC_LST_LIN_P1_QLFY_SEC_Y */
21158 DISTINCT qpl.list_header_id,
21159 qpl.list_line_id list_line_id,
21160 qplines.line_index line_index,
21161 qpl.pattern_id matched_pattrn_id,
21162 G_PRICE_LIST_PHASE_ID,
21163 qpl.hash_key matched_hash_key,
21164 G_STAGE_CACHE_SEC_PL_LIN_SRCH stage,
21165 G_STATUS_UNCHANGED,
21166 qppqual.source_system_code,
21167 decode(qpl.QUALIFICATION_IND,6,'Y',22,'Y',2,'Y','N'),--qpq.header_quals_exist_flag,
21168 -1 grouping_no,
21169 qpl.eq_flag, ---to be discusseed
21170 QPLINES.VALIDATED_FLAG, -- VALIDATED_FLAG
21171 G_LINE_LEVEL,--MODIFIER_LEVEL_CODE,
21172 0 other_oprt_count,
21173 qpl.null_other_oprt_count,
21174 qppqual.list_type_code,
21175 qppqual.ask_for_flag,
21176 decode(qppqual.HEADER_LIMIT_EXISTS,'Y','Y',decode(qpl.limit_exists_flag,'Y','Y','N')), -- HEADER_LIMIT_EXISTS
21177 qpl.limit_exists_flag,
21178 qpl.BREAK_UOM_CODE,
21179 qpl.BREAK_UOM_CONTEXT,
21180 qpl.BREAK_UOM_ATTRIBUTE,
21181 QPLINES.CURRENCY_CODE ORDER_CURRENCY,
21182 qplines.pricing_effective_date,
21183 qppqual.qualifier_precedence,
21184 'N' descendents_quals_exist,
21185 qpl.PRICE_BREAK_TYPE_CODE
21186 FROM qp_npreq_lines_tmp qplines,
21187 qp_npreq_line_patrns_tmp qppattmp,
21188 qp_preq_patrn_qual_tmp qppqual,
21189 qp_list_lines qpl
21190 WHERE qppattmp.LINE_INDEX = qplines.LINE_INDEX
21191 AND qppqual.LINE_INDEX = qplines.LINE_INDEX
21192 AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
21193 AND qpl.pattern_id = qppattmp.pattern_id
21194 AND qpl.hash_key = qppattmp.hash_key
21195 AND QPL.LIST_HEADER_ID = qppqual.LIST_HEADER_ID
21196 AND qppqual.stage = G_STAGE_CACHE_SEC_PL_HDR_SRCH
21197 AND (QPLINES.PRICE_FLAG = G_YES
21198 OR
21199 (QPLINES.PRICE_FLAG = G_PHASE
21200 AND
21201 P_FREEZE_OVERRIDE_FLAG = G_YES))
21202 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
21203 AND QPLINES.LINE_TYPE_CODE = QPLINES.LINE_TYPE_CODE
21204 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21205 NVL(TRUNC(qpl.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21206 AND NVL(TRUNC(qpl.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21207 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
21208 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
21209 ORDER BY 1,2;
21210
21211 CURSOR L_SEC_LST_HDR_P1_QLFY_Y_CURR IS
21212 SELECT
21213 /*+ ORDERED index(qcdt QP_CURRENCY_DETAILS_N2)
21214 index(atrgrps QP_ATTRIBUTE_GROUPS_N3)
21215 index(qplines QP_PREQ_LINES_TMP_U1)
21216 index(qprs qp_pte_source_systems_u2)
21217 L_SEC_LST_HDR_P1_QLFY_Y_CURR */
21218 DISTINCT atrgrps.list_header_id,
21219 atrgrps.list_line_id list_line_id,
21220 qplines.line_index line_index,
21221 atrgrps.pattern_id matched_pattrn_id,
21222 G_PRICE_LIST_PHASE_ID,
21223 atrgrps.hash_key matched_hash_key,
21224 G_STAGE_CACHE_SEC_PL_HDR_SRCH stage,
21225 G_STATUS_UNCHANGED,
21226 atrgrps.source_system_code,
21227 atrgrps.header_quals_exist_flag,
21228 atrgrps.grouping_no grouping_no,
21229 atrgrps.eq_flag,
21230 QPLINES.VALIDATED_FLAG, -- VALIDATED_FLAG
21231 G_LINE_LEVEL,--MODIFIER_LEVEL_CODE,
21232 atrgrps.other_oprt_count,
21233 atrgrps.null_other_oprt_count,
21234 atrgrps.LIST_TYPE_CODE,
21235 atrgrps.ASK_FOR_FLAG,
21236 atrgrps.HEADER_LIMIT_EXISTS,
21237 atrgrps.LINE_LIMIT_EXISTS,
21238 QCDT.CURRENCY_DETAIL_ID,
21239 QCDT.CURRENCY_HEADER_ID,
21240 QCDT.SELLING_ROUNDING_FACTOR,
21241 atrgrps.CURRENCY_CODE BASE_CURRENCY_CODE,
21242 qplines.pricing_effective_date,
21243 qpq.qualifier_precedence,
21244 atrgrps.descendents_quals_exist
21245 FROM
21246 qp_npreq_lines_tmp qplines,
21247 qp_npreq_line_patrns_tmp qppattmp,
21248 QP_QUALIFIERS qpq,
21249 qp_secu_attr_groups_v atrgrps,
21250 --qp_attribute_groups atrgrps,
21251 --QP_PRICE_REQ_SOURCES_V qprs, /* yangli */
21252 qp_pte_source_systems qprs,
21253 qp_currency_details qcdt
21254 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
21255 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
21256 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
21257 AND QPQ.COMPARISON_OPERATOR_CODE = '='
21258 AND QPQ.LIST_TYPE_CODE = 'PRL' --3917802
21259 AND atrgrps.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
21260 AND QPQ.LIST_HEADER_ID = atrgrps.LIST_HEADER_ID
21261 AND atrgrps.list_line_id = -1 -- Filter
21262 AND atrgrps.pte_code = G_PTE_CODE
21263 -- AND qppattmp.pattern_id = atrgrps.pattern_id -- Match --13035945 13522077
21264 -- AND qppattmp.hash_key = atrgrps.hash_key -- Match --13035945 13522077
21265 AND (QPLINES.VALIDATED_FLAG = G_YES OR (QPLINES.VALIDATED_FLAG = G_NO
21266 AND qppattmp.pattern_id = atrgrps.pattern_id -- Match
21267 AND qppattmp.hash_key = atrgrps.hash_key -- Match
21268 )
21269 ) --13035945 13522077
21270 AND qppattmp.line_index = qplines.line_index --Join
21271 AND (QPLINES.PRICE_FLAG = G_YES
21272 OR
21273 (QPLINES.PRICE_FLAG = G_PHASE
21274 AND
21275 P_FREEZE_OVERRIDE_FLAG = G_YES))
21276 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
21277 AND atrgrps.ACTIVE_FLAG = G_YES
21278 --AND atrgrps.source_system_code = qprs.source_system_code --join
21279 --AND qprs.request_type_code = g_request_type_code
21280 AND qprs.APPLICATION_SHORT_NAME = atrgrps.source_system_code
21281 AND qprs.pte_code = G_PTE_CODE
21282 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
21283 AND atrgrps.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID
21284 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE
21285 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21286 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21287 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21288 AND (
21289 (qcdt.curr_attribute_context is null
21290 and not exists
21291 (select /*+ use_nl(qcdt1) LEADING(qcdt1) index(qcdt1 QP_CURRENCY_DETAILS_N2) */ 'x'
21292 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
21293 where qcdt1.curr_attribute_context IS NOT NULL
21294 and qcdt1.curr_attribute_context = pa_tmp.context
21295 and qcdt1.curr_attribute = pa_tmp.attribute
21296 and qcdt1.curr_attribute_value = pa_tmp.value_from
21297 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE
21298 and qcdt1.to_currency_code = qcdt.to_currency_code
21299 and qcdt1.currency_header_id = qcdt.currency_header_id
21300 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
21301 and pa_tmp.line_index = qplines.line_index
21302 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21303 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21304 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21305 )
21306 )
21307 OR
21308 (qcdt.curr_attribute_context is not null
21309 and qcdt.currency_detail_id =
21310 (select qcdt3.currency_detail_id
21311 from qp_currency_details qcdt3
21312 where qcdt3.to_currency_code = qcdt.to_currency_code
21313 and qcdt3.currency_header_id = qcdt.currency_header_id
21314 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21315 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21316 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21317 and qcdt3.precedence =
21318 (select /*+ use_nl(qcdt2) LEADING(qcdt2) index(qcdt2 QP_CURRENCY_DETAILS_N2) */ min(qcdt2.precedence)
21319 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
21320 where qcdt2.curr_attribute_context IS NOT NULL
21321 and qcdt2.curr_attribute_context = pa_tmp1.context
21322 and qcdt2.curr_attribute = pa_tmp1.attribute
21323 and qcdt2.curr_attribute_value = pa_tmp1.value_from
21324 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE
21325 and qcdt2.to_currency_code = qcdt.to_currency_code
21326 and qcdt2.currency_header_id = qcdt.currency_header_id
21327 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
21328 and pa_tmp1.line_index = qplines.line_index
21329 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21330 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21331 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21332 ))
21333 )
21334 )
21335 -- AND QPLINES.VALIDATED_FLAG = G_NO --13035945 13522077
21336 AND (QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES
21337 OR
21338 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
21339 )
21340 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
21341 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
21342 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21343 NVL(TRUNC(atrgrps.START_DATE_ACTIVE_H),QPLINES.PRICING_EFFECTIVE_DATE)
21344 AND NVL(TRUNC(atrgrps.END_DATE_ACTIVE_H),QPLINES.PRICING_EFFECTIVE_DATE)
21345 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21346 NVL(TRUNC(atrgrps.START_DATE_ACTIVE_Q),QPLINES.PRICING_EFFECTIVE_DATE)
21347 AND NVL(TRUNC(atrgrps.END_DATE_ACTIVE_Q),QPLINES.PRICING_EFFECTIVE_DATE)
21348 ORDER BY 1,2;
21349
21350 CURSOR L_SEC_LST_LIN_P1_QLFY_Y_CURR IS
21351 SELECT
21352 /*+ ORDERED index(qpl QP_LIST_LINES_N16)
21353 index(qplines QP_PREQ_LINES_TMP_U1)
21354 index(qppattmp QP_NPREQ_LINE_PATRNS_T_N2)
21355 index(qppqual QP_PREQ_PATRN_QUAL_T_N2)
21356 L_SEC_LST_LIN_P1_QLFY_Y_CURR */
21357 DISTINCT qpl.list_header_id,
21358 qpl.list_line_id list_line_id,
21359 qplines.line_index line_index,
21360 qpl.pattern_id matched_pattrn_id,
21361 G_PRICE_LIST_PHASE_ID,
21362 qpl.hash_key matched_hash_key,
21363 G_STAGE_CACHE_SEC_PL_LIN_SRCH stage,
21364 G_STATUS_UNCHANGED,
21365 qppqual.source_system_code,
21366 decode(qpl.QUALIFICATION_IND,6,'Y',22,'Y',2,'Y','N'),--qpq.header_quals_exist_flag,
21367 -1 grouping_no,
21368 qpl.eq_flag, ---to be discusseed
21369 QPLINES.VALIDATED_FLAG, -- VALIDATED_FLAG
21370 G_LINE_LEVEL,--MODIFIER_LEVEL_CODE,
21371 0 other_oprt_count,
21372 qpl.null_other_oprt_count,
21373 qppqual.list_type_code,
21374 qppqual.ask_for_flag,
21375 decode(qppqual.HEADER_LIMIT_EXISTS,'Y','Y',decode(qpl.limit_exists_flag,'Y','Y','N')), -- HEADER_LIMIT_EXISTS
21376 qpl.limit_exists_flag,
21377 qpl.BREAK_UOM_CODE,
21378 qpl.BREAK_UOM_CONTEXT,
21379 qpl.BREAK_UOM_ATTRIBUTE,
21380 QPLINES.CURRENCY_CODE ORDER_CURRENCY,
21381 qplines.pricing_effective_date,
21382 qppqual.CURRENCY_DETAIL_ID,
21383 qppqual.CURRENCY_HEADER_ID,
21384 qppqual.SELLING_ROUNDING_FACTOR,
21385 qppqual.BASE_CURRENCY_CODE,
21386 qppqual.qualifier_precedence,
21387 'N' descendents_quals_exist,
21388 qpl.PRICE_BREAK_TYPE_CODE
21389 FROM qp_npreq_lines_tmp qplines,
21390 qp_npreq_line_patrns_tmp qppattmp,
21391 qp_preq_patrn_qual_tmp qppqual,
21392 qp_list_lines qpl
21393 WHERE qppattmp.LINE_INDEX = qplines.LINE_INDEX
21394 AND qppqual.LINE_INDEX = qplines.LINE_INDEX
21395 AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
21396 AND qpl.pattern_id = qppattmp.pattern_id
21397 AND qpl.hash_key = qppattmp.hash_key
21398 AND QPL.LIST_HEADER_ID = qppqual.LIST_HEADER_ID
21399 AND qppqual.stage = G_STAGE_CACHE_SEC_PL_HDR_SRCH
21400 AND (QPLINES.PRICE_FLAG = G_YES
21401 OR
21402 (QPLINES.PRICE_FLAG = G_PHASE
21403 AND
21404 P_FREEZE_OVERRIDE_FLAG = G_YES))
21405 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
21406 AND QPLINES.LINE_TYPE_CODE = QPLINES.LINE_TYPE_CODE
21407 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21408 NVL(TRUNC(qpl.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21409 AND NVL(TRUNC(qpl.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21410 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
21411 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
21412 ORDER BY 1,2;
21413
21414 CURSOR L_SEC_LST_HDR_P1_QLFY_N_CURR IS
21415 SELECT
21416 /*+ ORDERED index(qplines QP_PREQ_LINES_TMP_U1)
21417 index(qcdt QP_CURRENCY_DETAILS_N2)
21418 index(qprs qp_pte_source_systems_u2)
21419 L_SEC_LST_HDR_P1_QLFY_N_CURR */
21420 DISTINCT qph.list_header_id,
21421 -1 list_line_id,
21422 qplines.line_index line_index,
21423 -2 matched_pattrn_id,
21424 G_PRICE_LIST_PHASE_ID,
21425 NULL matched_hash_key,
21426 G_STAGE_CACHE_SEC_PL_HDR_SRCH stage,
21427 G_STATUS_UNCHANGED,
21428 qph.source_system_code,
21429 'N',--qpq.header_quals_exist_flag,
21430 -1 grouping_no,
21431 'Y' eq_flag,
21432 QPLINES.VALIDATED_FLAG, -- VALIDATED_FLAG
21433 G_LINE_LEVEL,--MODIFIER_LEVEL_CODE,
21434 0 other_oprt_count,
21435 0 null_other_oprt_count,
21436 qph.LIST_TYPE_CODE,
21437 qph.ASK_FOR_FLAG,
21438 qph.LIMIT_EXISTS_FLAG,
21439 NULL LINE_LIMIT_EXISTS,
21440 QCDT.CURRENCY_DETAIL_ID,
21441 QCDT.CURRENCY_HEADER_ID,
21442 QCDT.SELLING_ROUNDING_FACTOR,
21443 qph.CURRENCY_CODE BASE_CURRENCY_CODE,
21444 qplines.pricing_effective_date,
21445 qpq.qualifier_precedence,
21446 'N' descendents_quals_exist
21447 FROM
21448 qp_npreq_lines_tmp qplines,
21449 QP_QUALIFIERS qpq,
21450 qp_list_headers_b qph,
21451 qp_pte_source_systems qprs,
21452 --QP_PRICE_REQ_SOURCES_V qprs, /* yangli */
21453 qp_currency_details qcdt
21454 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
21455 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
21456 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
21457 AND QPQ.COMPARISON_OPERATOR_CODE = '='
21458 AND QPQ.LIST_TYPE_CODE = 'PRL' --3917802
21459 AND QPQ.LIST_HEADER_ID = qph.LIST_HEADER_ID
21460 AND (QPLINES.PRICE_FLAG = G_YES
21461 OR
21462 (QPLINES.PRICE_FLAG = G_PHASE
21463 AND
21464 P_FREEZE_OVERRIDE_FLAG = G_YES))
21465 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
21466 AND qph.ACTIVE_FLAG = G_YES
21467 AND qph.pte_code = G_PTE_CODE
21468 --AND qph.source_system_code = qprs.source_system_code --join
21469 --AND qprs.request_type_code = g_request_type_code
21470 AND qprs.APPLICATION_SHORT_NAME = qph.source_system_code
21471 AND qprs.pte_code = G_PTE_CODE
21472 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
21473 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID
21474 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE
21475 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21476 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21477 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21478 AND (
21479 (qcdt.curr_attribute_context is null
21480 and not exists
21481 (select /*+ use_nl(qcdt1) LEADING(qcdt1) index(qcdt1 QP_CURRENCY_DETAILS_N2) */ 'x'
21482 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
21483 where qcdt1.curr_attribute_context IS NOT NULL
21484 and qcdt1.curr_attribute_context = pa_tmp.context
21485 and qcdt1.curr_attribute = pa_tmp.attribute
21486 and qcdt1.curr_attribute_value = pa_tmp.value_from
21487 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE
21488 and qcdt1.to_currency_code = qcdt.to_currency_code
21489 and qcdt1.currency_header_id = qcdt.currency_header_id
21490 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
21491 and pa_tmp.line_index = qplines.line_index
21492 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21493 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21494 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21495 )
21496 )
21497 OR
21498 (qcdt.curr_attribute_context is not null
21499 and qcdt.currency_detail_id =
21500 (select qcdt3.currency_detail_id
21501 from qp_currency_details qcdt3
21502 where qcdt3.to_currency_code = qcdt.to_currency_code
21503 and qcdt3.currency_header_id = qcdt.currency_header_id
21504 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21505 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21506 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21507 and qcdt3.precedence =
21508 (select /*+ use_nl(qcdt2) LEADING(qcdt2) index(qcdt2 QP_CURRENCY_DETAILS_N2) */ min(qcdt2.precedence)
21509 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
21510 where qcdt2.curr_attribute_context IS NOT NULL
21511 and qcdt2.curr_attribute_context = pa_tmp1.context
21512 and qcdt2.curr_attribute = pa_tmp1.attribute
21513 and qcdt2.curr_attribute_value = pa_tmp1.value_from
21514 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE
21515 and qcdt2.to_currency_code = qcdt.to_currency_code
21516 and qcdt2.currency_header_id = qcdt.currency_header_id
21517 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
21518 and pa_tmp1.line_index = qplines.line_index
21519 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21520 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21521 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21522 ))
21523 )
21524 )
21525 AND (QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES
21526 OR
21527 QPLINES.QUALIFIERS_EXIST_FLAG = 'N')
21528 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
21529 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
21530 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21531 NVL(TRUNC(qph.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21532 AND NVL(TRUNC(qph.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21533 ORDER BY 1,2;
21534
21535 CURSOR L_SEC_LST_LIN_P1_QLFY_N_CURR IS
21536 SELECT
21537 /*+ ORDERED index(qpl QP_LIST_LINES_N16)
21538 index(qplines QP_PREQ_LINES_TMP_U1)
21539 index(qppattmp QP_NPREQ_LINE_PATRNS_T_N2)
21540 index(qppqual QP_PREQ_PATRN_QUAL_T_N2)
21541 L_SEC_LST_LIN_P1_QLFY_N_CURR */
21542 DISTINCT qpl.list_header_id,
21543 qpl.list_line_id list_line_id,
21544 qplines.line_index line_index,
21545 qpl.pattern_id matched_pattrn_id,
21546 G_PRICE_LIST_PHASE_ID,
21547 qpl.hash_key matched_hash_key,
21548 G_STAGE_CACHE_SEC_PL_LIN_SRCH stage,
21549 G_STATUS_UNCHANGED,
21550 qppqual.source_system_code,
21551 decode(qpl.QUALIFICATION_IND,6,'Y',22,'Y',2,'Y','N'),--qpq.header_quals_exist_flag,
21552 -1 grouping_no,
21553 qpl.eq_flag, ---to be discusseed
21554 QPLINES.VALIDATED_FLAG, -- VALIDATED_FLAG
21555 G_LINE_LEVEL,--MODIFIER_LEVEL_CODE,
21556 0 other_oprt_count,
21557 qpl.null_other_oprt_count,
21558 qppqual.list_type_code,
21559 qppqual.ask_for_flag,
21560 decode(qppqual.HEADER_LIMIT_EXISTS,'Y','Y',decode(qpl.limit_exists_flag,'Y','Y','N')), -- HEADER_LIMIT_EXISTS
21561 qpl.limit_exists_flag,
21562 qpl.BREAK_UOM_CODE,
21563 qpl.BREAK_UOM_CONTEXT,
21564 qpl.BREAK_UOM_ATTRIBUTE,
21565 QPLINES.CURRENCY_CODE ORDER_CURRENCY,
21566 qplines.pricing_effective_date,
21567 qppqual.CURRENCY_DETAIL_ID,
21568 qppqual.CURRENCY_HEADER_ID,
21569 qppqual.SELLING_ROUNDING_FACTOR,
21570 qppqual.BASE_CURRENCY_CODE,
21571 qppqual.qualifier_precedence,
21572 'N' descendents_quals_exist,
21573 qpl.PRICE_BREAK_TYPE_CODE
21574 FROM qp_npreq_lines_tmp qplines,
21575 qp_npreq_line_patrns_tmp qppattmp,
21576 qp_preq_patrn_qual_tmp qppqual,
21577 qp_list_lines qpl
21578 WHERE qppattmp.LINE_INDEX = qplines.LINE_INDEX
21579 AND qppqual.LINE_INDEX = qplines.LINE_INDEX
21580 AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
21581 AND qpl.pattern_id = qppattmp.pattern_id
21582 AND qpl.hash_key = qppattmp.hash_key
21583 AND QPL.LIST_HEADER_ID = qppqual.LIST_HEADER_ID
21584 AND qppqual.stage = G_STAGE_CACHE_SEC_PL_HDR_SRCH
21585 AND (QPLINES.PRICE_FLAG = G_YES
21586 OR
21587 (QPLINES.PRICE_FLAG = G_PHASE
21588 AND
21589 P_FREEZE_OVERRIDE_FLAG = G_YES))
21590 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
21591 AND QPLINES.LINE_TYPE_CODE = QPLINES.LINE_TYPE_CODE
21592 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21593 NVL(TRUNC(qpl.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21594 AND NVL(TRUNC(qpl.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21595 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
21596 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
21597 ORDER BY 1,2;
21598
21599 CURSOR L_SEC_LST_HDR_P1_QLFY_SEC_N IS
21600 SELECT
21601 /*+ ORDERED index(qplines QP_PREQ_LINES_TMP_U1)
21602 index(qprs qp_pte_source_systems_u2)
21603 L_SEC_LST_HDR_P1_QLFY_SEC_N */
21604 DISTINCT qph.list_header_id,
21605 -1 list_line_id,
21606 qplines.line_index line_index,
21607 NULL matched_pattrn_id,
21608 G_PRICE_LIST_PHASE_ID,
21609 NULL matched_hash_key,
21610 G_STAGE_CACHE_SEC_PL_HDR_SRCH stage,
21611 G_STATUS_UNCHANGED,
21612 qph.source_system_code,
21613 NULL,--qpq.header_quals_exist_flag,
21614 -1 grouping_no,
21615 'Y' eq_flag,
21616 QPLINES.VALIDATED_FLAG, -- VALIDATED_FLAG
21617 G_LINE_LEVEL,--MODIFIER_LEVEL_CODE,
21618 0 other_oprt_count,
21619 0 null_other_oprt_count,
21620 qph.LIST_TYPE_CODE,
21621 qph.ASK_FOR_FLAG,
21622 qph.LIMIT_EXISTS_FLAG,
21623 NULL LINE_LIMIT_EXISTS,
21624 NULL, --QCDT.CURRENCY_DETAIL_ID,
21625 NULL, --QCDT.CURRENCY_HEADER_ID,
21626 NULL, --QCDT.SELLING_ROUNDING_FACTOR,
21627 qph.CURRENCY_CODE BASE_CURRENCY_CODE,
21628 qplines.pricing_effective_date,
21629 qpq.qualifier_precedence,
21630 'N' descendents_quals_exist
21631 FROM
21632 qp_npreq_lines_tmp qplines,
21633 QP_QUALIFIERS qpq,
21634 qp_list_headers_b qph,
21635 qp_pte_source_systems qprs
21636 --QP_PRICE_REQ_SOURCES_V qprs /* yangli */
21637 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
21638 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
21639 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
21640 AND QPQ.COMPARISON_OPERATOR_CODE = '='
21641 AND QPQ.LIST_TYPE_CODE = 'PRL' --3917802
21642 AND QPQ.LIST_HEADER_ID = qph.LIST_HEADER_ID
21643 AND (QPLINES.PRICE_FLAG = G_YES
21644 OR
21645 (QPLINES.PRICE_FLAG = G_PHASE
21646 AND
21647 P_FREEZE_OVERRIDE_FLAG = G_YES))
21648 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
21649 AND qph.ACTIVE_FLAG = G_YES
21650 AND qph.pte_code = G_PTE_CODE
21651 --AND qph.source_system_code = qprs.source_system_code --join
21652 --AND qprs.request_type_code = g_request_type_code
21653 AND qprs.APPLICATION_SHORT_NAME = qph.source_system_code
21654 AND qprs.pte_code = G_PTE_CODE
21655 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
21656 AND qph.CURRENCY_CODE = QPLINES.CURRENCY_CODE
21657 AND (QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES
21658 OR QPLINES.QUALIFIERS_EXIST_FLAG = 'N')
21659 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
21660 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
21661 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21662 NVL(TRUNC(qph.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21663 AND NVL(TRUNC(qph.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21664 ORDER BY 1,2;
21665
21666 CURSOR L_SEC_LST_LIN_P1_QLFY_SEC_N IS
21667 SELECT
21668 /*+ ORDERED index(qpl QP_LIST_LINES_N16)
21669 index(qplines QP_PREQ_LINES_TMP_U1)
21670 index(qppattmp QP_NPREQ_LINE_PATRNS_T_N2)
21671 index(qppqual QP_PREQ_PATRN_QUAL_T_N2)
21672 L_SEC_LST_LIN_P1_QLFY_SEC_N */
21673 DISTINCT qpl.list_header_id,
21674 qpl.list_line_id list_line_id,
21675 qplines.line_index line_index,
21676 qpl.pattern_id matched_pattrn_id,
21677 G_PRICE_LIST_PHASE_ID,
21678 qpl.hash_key matched_hash_key,
21679 G_STAGE_CACHE_SEC_PL_LIN_SRCH stage,
21680 G_STATUS_UNCHANGED,
21681 qppqual.source_system_code,
21682 decode(qpl.QUALIFICATION_IND,6,'Y',22,'Y',2,'Y','N'),--qpq.header_quals_exist_flag,
21683 -1 grouping_no,
21684 qpl.eq_flag, ---to be discusseed
21685 QPLINES.VALIDATED_FLAG, -- VALIDATED_FLAG
21686 G_LINE_LEVEL,--MODIFIER_LEVEL_CODE,
21687 0 other_oprt_count,
21688 qpl.null_other_oprt_count,
21689 qppqual.list_type_code,
21690 qppqual.ask_for_flag,
21691 decode(qppqual.HEADER_LIMIT_EXISTS,'Y','Y',decode(qpl.limit_exists_flag,'Y','Y','N')), -- HEADER_LIMIT_EXISTS
21692 qpl.limit_exists_flag,
21693 qpl.BREAK_UOM_CODE,
21694 qpl.BREAK_UOM_CONTEXT,
21695 qpl.BREAK_UOM_ATTRIBUTE,
21696 QPLINES.CURRENCY_CODE ORDER_CURRENCY,
21697 qplines.pricing_effective_date,
21698 qppqual.qualifier_precedence,
21699 'N' descendents_quals_exist,
21700 qpl.PRICE_BREAK_TYPE_CODE
21701 FROM qp_npreq_lines_tmp qplines,
21702 qp_npreq_line_patrns_tmp qppattmp,
21703 qp_preq_patrn_qual_tmp qppqual,
21704 qp_list_lines qpl
21705 WHERE qppattmp.LINE_INDEX = qplines.LINE_INDEX
21706 AND qppqual.LINE_INDEX = qplines.LINE_INDEX
21707 AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
21708 AND qpl.pattern_id = qppattmp.pattern_id
21709 AND qpl.hash_key = qppattmp.hash_key
21710 AND QPL.LIST_HEADER_ID = qppqual.LIST_HEADER_ID
21711 AND qppqual.stage = G_STAGE_CACHE_SEC_PL_HDR_SRCH
21712 AND (QPLINES.PRICE_FLAG = G_YES
21713 OR
21714 (QPLINES.PRICE_FLAG = G_PHASE
21715 AND
21716 P_FREEZE_OVERRIDE_FLAG = G_YES))
21717 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
21718 AND QPLINES.LINE_TYPE_CODE = QPLINES.LINE_TYPE_CODE
21719 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21720 NVL(TRUNC(qpl.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21721 AND NVL(TRUNC(qpl.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21722 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
21723 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
21724 ORDER BY 1,2;
21725
21726 /****************************/
21727 CURSOR L_SEC_SRCH_BOTH_P2_QLFY_N IS
21728
21729 SELECT /*+ ORDERED index(qplines QP_PREQ_LINES_TMP_U1)
21730 index(QPQ QP_QUALIFIERS_N4)
21731 index(qpl QP_LIST_LINES_N17)
21732 index(qppattmp1 QP_NPREQ_LINE_PATRNS_T_N2)
21733 index(qpatrgrp QP_ATTRIBUTE_GROUPS_N1)
21734 index(qprs qp_pte_source_systems_u2)
21735 L_SEC_SRCH_BOTH_P2_QLFY_N */
21736 DISTINCT
21737 qpl.LIST_HEADER_ID,
21738 qpl.LIST_LINE_ID,
21739 qplines.LINE_INDEX,
21740 qpl.pattern_id QPL_MATCHED_PATTRN_ID,
21741 NULL AG_MATCHED_PATTRN_ID,
21742 G_PRICE_LIST_PHASE_ID,
21743 qpl.HASH_KEY QPL_MATCHED_HASH_KEY,
21744 NULL AG_MATCHED_HASH_KEY,
21745 G_STAGE_CACHE_SEC_PL_LIN_SRCH2 STAGE,
21746 G_STATUS_UNCHANGED PRICING_STATUS_CODE,
21747 qpatrgrp.source_system_code,
21748 --decode(bitand(qpl.qualification_ind,2),2,'Y','N') HEADER_QUALS_EXIST_FLAG,
21749 --DECODE(qpatrgrp.EQ_FLAG,'N','Y','N') HEADER_QUALS_EXIST_FLAG,
21750 DECODE(qpatrgrp.EQ_FLAG,'N','Y',DECODE(qpatrgrp.descendents_quals_exist,'Y','Y','N')) HEADER_QUALS_EXIST_FLAG,
21751 -1 qpl_grpng_num,
21752 qpatrgrp.GROUPING_NO ag_grpng_num,
21753 qpl.EQ_FLAG QPL_EQFLAG,
21754 qpatrgrp.EQ_FLAG ATRGRP_EQFLAG,
21755 qplines.VALIDATED_FLAG,
21756 qpl.MODIFIER_LEVEL_CODE,
21757 qpl.null_other_oprt_count qpl_other_oprt_cnt,
21758 qpatrgrp.other_oprt_count ag_other_oprt_cnt,
21759 qpatrgrp.null_other_oprt_count ag_null_othr_oprt_cnt,
21760 qpatrgrp.LIST_TYPE_CODE,
21761 qpatrgrp.ASK_FOR_FLAG,
21762 qpatrgrp.HEADER_LIMIT_EXISTS,
21763 qpatrgrp.LINE_LIMIT_EXISTS,
21764 NULL CURRENCY_DETAIL_ID,
21765 NULL CURRENCY_HEADER_ID,
21766 NULL SELLING_ROUNDING_FACTOR,
21767 qpatrgrp.CURRENCY_CODE BASE_CURRENCY_CODE,
21768 qplines.pricing_effective_date,
21769 qpl.BREAK_UOM_CODE,
21770 qpl.BREAK_UOM_CONTEXT,
21771 qpl.BREAK_UOM_ATTRIBUTE,
21772 QPLINES.CURRENCY_CODE ORDER_CURRENCY,
21773 qpq.qualifier_precedence,
21774 'N' descendents_quals_exist,
21775 qpl.PRICE_BREAK_TYPE_CODE
21776 FROM qp_npreq_lines_tmp qplines,
21777 QP_QUALIFIERS QPQ,
21778 qp_npreq_line_patrns_tmp qppattmp1,
21779 qp_list_lines qpl,
21780 qp_secu_attr_groups_v qpatrgrp,
21781 --qp_attribute_groups qpatrgrp,
21782 qp_pte_source_systems qprs
21783 --qp_price_req_sources_v qprs
21784 WHERE qppattmp1.line_index = qplines.line_index
21785 AND QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
21786 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
21787 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
21788 AND QPQ.COMPARISON_OPERATOR_CODE = '='
21789 AND QPQ.LIST_TYPE_CODE = 'PRL' --3917802
21790 AND QPQ.LIST_HEADER_ID = QPL.LIST_HEADER_ID
21791 AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
21792 AND (QPLINES.PRICE_FLAG = G_YES
21793 OR
21794 (QPLINES.PRICE_FLAG = G_PHASE
21795 AND
21796 P_FREEZE_OVERRIDE_FLAG = G_YES))
21797 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
21798 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
21799 AND (QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES
21800 OR
21801 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
21802 )
21803 AND qppattmp1.pattern_id = qpl.pattern_id
21804 AND qppattmp1.hash_key = qpl.hash_key
21805 AND qpl.pte_code = G_PTE_CODE
21806 AND QPQ.ACTIVE_FLAG = G_YES
21807 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
21808 AND qpl.pricing_phase_id = G_PRICE_LIST_PHASE_ID
21809 AND nvl(qplines.pricing_effective_date, TRUNC(sysdate))
21810 BETWEEN nvl(qpl.start_date_active, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
21811 AND nvl(qpl.end_date_active, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
21812 AND qpatrgrp.list_header_id = qpl.list_header_id
21813 AND qpatrgrp.pricing_phase_id = G_PRICE_LIST_PHASE_ID
21814 AND qpatrgrp.active_flag = G_YES
21815 AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = qpatrgrp.orig_org_id) OR -- begin security
21816 (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(qpatrgrp.global_flag,'Y') = 'Y') OR
21817 nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
21818 AND nvl(qplines.pricing_effective_date, TRUNC(sysdate))
21819 BETWEEN nvl(qpatrgrp.START_DATE_ACTIVE_H, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
21820 AND nvl(qpatrgrp.END_DATE_ACTIVE_H, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
21821 AND nvl(qplines.pricing_effective_date, TRUNC(sysdate))
21822 BETWEEN NVL(TRUNC(qpatrgrp.START_DATE_ACTIVE_Q),nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
21823 AND NVL(TRUNC(qpatrgrp.END_DATE_ACTIVE_Q),nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
21824 --AND qprs.source_system_code = qpatrgrp.source_system_code
21825 --AND qprs.request_type_code = qplines.request_type_code -- check it
21826 AND qprs.APPLICATION_SHORT_NAME = qpatrgrp.source_system_code
21827 AND qprs.pte_code = G_PTE_CODE
21828 AND qpatrgrp.currency_code = qplines.currency_code
21829 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0);
21830
21831 CURSOR L_SEC_SRCH_BOTH_P2_QLFY_N_CURR IS
21832
21833 SELECT /*+ ORDERED index(qplines QP_PREQ_LINES_TMP_U1)
21834 index(QPQ QP_QUALIFIERS_N4)
21835 index(qpl QP_LIST_LINES_N16)
21836 index(qppattmp1 QP_NPREQ_LINE_PATRNS_T_N2)
21837 index(qpatrgrp QP_ATTRIBUTE_GROUPS_N1)
21838 index(qcdt QP_CURRENCY_DETAILS_N2)
21839 index(qprs qp_pte_source_systems_u2)
21840 L_SEC_SRCH_BOTH_P2_QLFY_N_CURR */
21841 DISTINCT
21842 qpl.LIST_HEADER_ID,
21843 qpl.LIST_LINE_ID,
21844 qplines.LINE_INDEX,
21845 qpl.pattern_id QPL_MATCHED_PATTRN_ID,
21846 NULL AG_MATCHED_PATTRN_ID,
21847 G_PRICE_LIST_PHASE_ID,
21848 qpl.HASH_KEY QPL_MATCHED_HASH_KEY,
21849 NULL AG_MATCHED_HASH_KEY,
21850 G_STAGE_CACHE_SEC_PL_LIN_SRCH2 STAGE,
21851 G_STATUS_UNCHANGED PRICING_STATUS_CODE,
21852 qpatrgrp.source_system_code,
21853 --decode(bitand(qpl.qualification_ind,2),2,'Y','N') HEADER_QUALS_EXIST_FLAG,
21854 --DECODE(qpatrgrp.EQ_FLAG,'N','Y','N') HEADER_QUALS_EXIST_FLAG,
21855 DECODE(qpatrgrp.EQ_FLAG,'N','Y',DECODE(qpatrgrp.descendents_quals_exist,'Y','Y','N')) HEADER_QUALS_EXIST_FLAG,
21856 -1 qpl_grpng_num,
21857 qpatrgrp.GROUPING_NO ag_grpng_num,
21858 qpl.EQ_FLAG QPL_EQFLAG,
21859 qpatrgrp.EQ_FLAG ATRGRP_EQFLAG,
21860 qplines.VALIDATED_FLAG,
21861 qpl.MODIFIER_LEVEL_CODE,
21862 qpl.null_other_oprt_count qpl_other_oprt_cnt,
21863 qpatrgrp.other_oprt_count ag_other_oprt_cnt,
21864 qpatrgrp.null_other_oprt_count ag_null_othr_oprt_cnt,
21865 qpatrgrp.LIST_TYPE_CODE,
21866 qpatrgrp.ASK_FOR_FLAG,
21867 qpatrgrp.HEADER_LIMIT_EXISTS,
21868 qpatrgrp.LINE_LIMIT_EXISTS,
21869 NULL CURRENCY_DETAIL_ID,
21870 NULL CURRENCY_HEADER_ID,
21871 NULL SELLING_ROUNDING_FACTOR,
21872 qpatrgrp.CURRENCY_CODE BASE_CURRENCY_CODE,
21873 qplines.pricing_effective_date,
21874 qpl.BREAK_UOM_CODE,
21875 qpl.BREAK_UOM_CONTEXT,
21876 qpl.BREAK_UOM_ATTRIBUTE,
21877 QPLINES.CURRENCY_CODE ORDER_CURRENCY,
21878 qpq.qualifier_precedence,
21879 'N' descendents_quals_exist,
21880 qpl.PRICE_BREAK_TYPE_CODE
21881 FROM qp_npreq_lines_tmp qplines,
21882 QP_QUALIFIERS QPQ,
21883 qp_npreq_line_patrns_tmp qppattmp1,
21884 qp_list_lines qpl,
21885 qp_secu_attr_groups_v qpatrgrp,
21886 --qp_attribute_groups qpatrgrp,
21887 qp_pte_source_systems qprs,
21888 --qp_price_req_sources_v qprs,
21889 QP_CURRENCY_DETAILS QCDT
21890 WHERE qppattmp1.line_index = qplines.line_index
21891 AND QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
21892 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
21893 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
21894 AND QPQ.COMPARISON_OPERATOR_CODE = '='
21895 AND QPQ.LIST_TYPE_CODE = 'PRL' --3917802
21896 AND QPQ.LIST_HEADER_ID = QPL.LIST_HEADER_ID
21897 AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
21898 AND (QPLINES.PRICE_FLAG = G_YES
21899 OR
21900 (QPLINES.PRICE_FLAG = G_PHASE
21901 AND
21902 P_FREEZE_OVERRIDE_FLAG = G_YES))
21903 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
21904 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
21905 AND (QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES
21906 OR
21907 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
21908 )
21909 AND qppattmp1.pattern_id = qpl.pattern_id
21910 AND qppattmp1.hash_key = qpl.hash_key
21911 AND qpl.pte_code = G_PTE_CODE
21912 AND QPQ.ACTIVE_FLAG = G_YES
21913 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
21914 AND qpl.pricing_phase_id = G_PRICE_LIST_PHASE_ID
21915 AND nvl(qplines.pricing_effective_date, TRUNC(sysdate))
21916 BETWEEN nvl(qpl.start_date_active, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
21917 AND nvl(qpl.end_date_active, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
21918 AND qpatrgrp.list_header_id = qpl.list_header_id
21919 AND qpatrgrp.pricing_phase_id = G_PRICE_LIST_PHASE_ID
21920 AND qpatrgrp.active_flag = G_YES
21921 AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = qpatrgrp.orig_org_id) OR -- begin security
21922 (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(qpatrgrp.global_flag,'Y') = 'Y') OR
21923 nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
21924 AND nvl(qplines.pricing_effective_date, TRUNC(sysdate))
21925 BETWEEN nvl(qpatrgrp.START_DATE_ACTIVE_H, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
21926 AND nvl(qpatrgrp.END_DATE_ACTIVE_H, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
21927 AND nvl(qplines.pricing_effective_date, TRUNC(sysdate))
21928 BETWEEN NVL(TRUNC(qpatrgrp.START_DATE_ACTIVE_Q),nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
21929 AND NVL(TRUNC(qpatrgrp.END_DATE_ACTIVE_Q),nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
21930 --AND qprs.source_system_code = qpatrgrp.source_system_code
21931 --AND qprs.request_type_code = qplines.request_type_code -- check it
21932 AND qprs.APPLICATION_SHORT_NAME = qpatrgrp.source_system_code
21933 AND qprs.pte_code = G_PTE_CODE
21934 -- AND atrgrps.currency_code = qplines.currency_code
21935 AND qpatrgrp.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID
21936 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE
21937 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21938 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21939 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21940 AND (
21941 (qcdt.curr_attribute_context is null
21942 and not exists
21943 (select /*+ use_nl(qcdt1) LEADING(qcdt1) index(qcdt1 QP_CURRENCY_DETAILS_N2) */ 'x'
21944 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
21945 where qcdt1.curr_attribute_context IS NOT NULL
21946 and qcdt1.curr_attribute_context = pa_tmp.context
21947 and qcdt1.curr_attribute = pa_tmp.attribute
21948 and qcdt1.curr_attribute_value = pa_tmp.value_from
21949 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE
21950 and qcdt1.to_currency_code = qcdt.to_currency_code
21951 and qcdt1.currency_header_id = qcdt.currency_header_id
21952 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
21953 and pa_tmp.line_index = qplines.line_index
21954 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21955 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21956 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21957 )
21958 )
21959 OR
21960 (qcdt.curr_attribute_context is not null
21961 and qcdt.currency_detail_id =
21962 (select qcdt3.currency_detail_id
21963 from qp_currency_details qcdt3
21964 where qcdt3.to_currency_code = qcdt.to_currency_code
21965 and qcdt3.currency_header_id = qcdt.currency_header_id
21966 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21967 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21968 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21969 and qcdt3.precedence =
21970 (select /*+ use_nl(qcdt2) LEADING(qcdt2) index(qcdt2 QP_CURRENCY_DETAILS_N2) */ min(qcdt2.precedence)
21971 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
21972 where qcdt2.curr_attribute_context IS NOT NULL
21973 and qcdt2.curr_attribute_context = pa_tmp1.context
21974 and qcdt2.curr_attribute = pa_tmp1.attribute
21975 and qcdt2.curr_attribute_value = pa_tmp1.value_from
21976 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE
21977 and qcdt2.to_currency_code = qcdt.to_currency_code
21978 and qcdt2.currency_header_id = qcdt.currency_header_id
21979 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
21980 and pa_tmp1.line_index = qplines.line_index
21981 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
21982 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21983 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
21984 ))
21985 )
21986 )
21987 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0);
21988
21989 /****************************/
21990
21991 l_limit NUMBER := 5000;
21992 l_stage varchar2(300);
21993
21994 TYPE l_number IS TABLE OF NUMBER INDEX BY pls_integer;
21995 l_list_header_id_tbl l_number;
21996 l_list_line_id_tbl l_number;
21997 l_matched_pattrn_id_tbl l_number;
21998 l_ag_matched_pat_id_tbl l_number;
21999 l_line_index_tbl l_number;
22000 l_pricing_phase_id_tbl l_number;
22001 l_grouping_no l_number;
22002 l_ag_grpng_no l_number;
22003 l_other_oprt_count l_number;
22004 l_ag_othr_oprt_cnt l_number;
22005 l_null_other_oprt_count l_number;
22006 l_curr_det_id l_number;
22007 l_curr_hdr_id l_number;
22008 L_SELLNG_ROUND_FTR l_number;
22009 L_qualifier_precedence l_number;
22010
22011 TYPE l_string IS TABLE OF VARCHAR2(2000) INDEX BY pls_integer;
22012 l_matched_hash_key_tbl l_string;
22013 l_ag_mtchd_hash_key_tbl l_string;
22014 l_stage_tbl l_string;
22015 l_pricing_status_code_tbl l_string;
22016 l_ssc l_string;
22017 l_header_quals_exist_flag l_string;
22018 l_eq_flag l_string;
22019 l_ag_eq_flag l_string;
22020 l_validated_flag l_string;
22021 l_modf_lvl_code l_string;
22022 l_list_type_code l_string;
22023 l_ask_for_flag l_string;
22024 l_hdr_lmt_exists l_string;
22025 l_line_lmt_exists l_string;
22026 l_order_curr l_string;
22027 l_base_curr_code l_string;
22028 l_brk_uom_code l_string;
22029 l_brk_uom_ctxt l_string;
22030 l_brk_uom_attr l_string;
22031 l_curr_code l_string;
22032 l_descnt_quals_exist l_string;
22033 l_PRICE_BREAK_TYPE_CODE l_string;
22034
22035 TYPE l_date IS TABLE OF DATE INDEX BY pls_integer;
22036
22037 l_prcng_effctve_dt l_date;
22038
22039 l_routine VARCHAR2(40) := 'PERFORM_SECONDARY_PATRN_SEARCH';
22040 E_ROUTINE_ERRORS EXCEPTION;
22041 l_list_line_id NUMBER;
22042
22043 l_loop_count NUMBER := 0;
22044 l_dummy varchar2(200);
22045
22046
22047 BEGIN
22048
22049 --G_CURRENT_USER_OP_UNIT := NVL(p_control_rec.PRICING_ORG_ID, FND_PROFILE.VALUE('ORG_ID')); -- security
22050 x_status_code := fnd_api.g_ret_sts_success;
22051
22052 qp_debug_util.tstart('PERFORM_SECONDARY_PAT_SEARCH','Performing Secondary Price List Pattern Search', false, true);
22053
22054 Update_Sec_Price_List_Info(x_status_code,x_status_text);
22055
22056 IF g_debug_engine = fnd_api.g_true THEN
22057 engine_debug('Entering into pattern PERFORM_SECONDARY_SEARCH');
22058 END IF;
22059
22060 -- Update the price list id , validated flag , and primary_qualifiers_match flag for sec search
22061 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN --bug 4103259
22062 engine_debug ('QP_QUALIFY_SECONDARY_PRICE_LISTS:' || G_QUALIFY_SECONDARY);
22063 END IF;
22064
22065
22066
22067 IF (x_status_code = FND_API.G_RET_STS_ERROR) THEN
22068 RAISE E_ROUTINE_ERRORS;
22069 END IF;
22070
22071
22072 IF G_QUALIFY_SECONDARY = G_YES THEN
22073 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
22074 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
22075 engine_debug('cursor l_sec_list_cur_currency-multi-currency TRUE');
22076 END IF;
22077
22078 OPEN L_SEC_LST_HDR_P1_QLFY_Y_CURR;
22079 qp_debug_util.tstart('L_SEC_LST_HDR_P1_QLFY_Y_CURR', 'L_SEC_LST_HDR_P1_QLFY_Y_CURR');
22080 ELSE
22081 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
22082 engine_debug('cursor l_sec_list_cur multi-currency FALSE');
22083 END IF;
22084
22085 OPEN L_SEC_LST_HDR_P1_QLFY_SEC_Y;
22086 qp_debug_util.tstart('L_SEC_LST_HDR_P1_QLFY_SEC_Y', 'L_SEC_LST_HDR_P1_QLFY_SEC_Y');
22087
22088 END IF;
22089
22090 LOOP
22091 l_list_header_id_tbl.DELETE;
22092 l_list_line_id_tbl.DELETE;
22093 l_line_index_tbl.DELETE;
22094 l_matched_pattrn_id_tbl.DELETE;
22095 l_ag_matched_pat_id_tbl.DELETE;
22096 l_pricing_phase_id_tbl.DELETE;
22097 l_matched_hash_key_tbl.DELETE;
22098 l_ag_mtchd_hash_key_tbl.DELETE;
22099 l_stage_tbl.DELETE;
22100 l_pricing_status_code_tbl.DELETE;
22101 l_ssc.DELETE;
22102 l_header_quals_exist_flag.DELETE;
22103 l_grouping_no.DELETE;
22104 l_ag_grpng_no.DELETE;
22105 l_eq_flag.DELETE;
22106 l_ag_eq_flag.DELETE;
22107 l_validated_flag.DELETE;
22108 l_modf_lvl_code.DELETE;
22109 l_other_oprt_count.DELETE;
22110 l_ag_othr_oprt_cnt.DELETE;
22111 l_null_other_oprt_count.DELETE;
22112 l_list_type_code.DELETE;
22113 l_ask_for_flag.DELETE;
22114 l_hdr_lmt_exists.DELETE;
22115 l_line_lmt_exists.DELETE;
22116 l_curr_det_id.DELETE;
22117 l_curr_hdr_id.DELETE;
22118 L_SELLNG_ROUND_FTR.DELETE;
22119 l_base_curr_code.DELETE;
22120 l_prcng_effctve_dt.DELETE;
22121 l_brk_uom_code.DELETE;
22122 l_brk_uom_ctxt.DELETE;
22123 l_brk_uom_attr.DELETE;
22124 l_order_curr.DELETE;
22125 L_qualifier_precedence.DELETE;
22126 l_curr_det_id.DELETE;
22127 l_curr_hdr_id.DELETE;
22128 L_SELLNG_ROUND_FTR.DELETE;
22129 l_base_curr_code.DELETE;
22130 l_descnt_quals_exist.DELETE;
22131 l_PRICE_BREAK_TYPE_CODE.DELETE;
22132
22133 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
22134
22135 FETCH L_SEC_LST_HDR_P1_QLFY_Y_CURR BULK COLLECT
22136 INTO l_list_header_id_tbl,
22137 l_list_line_id_tbl,
22138 l_line_index_tbl,
22139 l_matched_pattrn_id_tbl,
22140 l_pricing_phase_id_tbl,
22141 l_matched_hash_key_tbl,
22142 l_stage_tbl,
22143 l_pricing_status_code_tbl,
22144 l_ssc,
22145 l_header_quals_exist_flag,
22146 l_grouping_no,
22147 l_eq_flag,
22148 l_validated_flag,l_modf_lvl_code,l_other_oprt_count,l_null_other_oprt_count,
22149 l_list_type_code,
22150 l_ask_for_flag,
22151 l_hdr_lmt_exists,
22152 l_line_lmt_exists,
22153 l_curr_det_id,
22154 l_curr_hdr_id,
22155 L_SELLNG_ROUND_FTR,
22156 l_curr_code,
22157 l_prcng_effctve_dt,
22158 L_qualifier_precedence,
22159 l_descnt_quals_exist
22160 limit l_limit;
22161
22162 ELSE
22163 FETCH L_SEC_LST_HDR_P1_QLFY_SEC_Y BULK COLLECT
22164 INTO l_list_header_id_tbl,
22165 l_list_line_id_tbl,
22166 l_line_index_tbl,
22167 l_matched_pattrn_id_tbl,
22168 l_pricing_phase_id_tbl,
22169 l_matched_hash_key_tbl,
22170 l_stage_tbl,
22171 l_pricing_status_code_tbl,
22172 l_ssc,
22173 l_header_quals_exist_flag,
22174 l_grouping_no,
22175 l_eq_flag,
22176 l_validated_flag,l_modf_lvl_code,l_other_oprt_count,l_null_other_oprt_count,
22177 l_list_type_code,
22178 l_ask_for_flag,
22179 l_hdr_lmt_exists,
22180 l_line_lmt_exists,
22181 l_curr_det_id,
22182 l_curr_hdr_id,
22183 L_SELLNG_ROUND_FTR,
22184 l_curr_code,
22185 l_prcng_effctve_dt,
22186 L_qualifier_precedence,
22187 l_descnt_quals_exist
22188 limit l_limit;
22189
22190 END IF;
22191
22192 EXIT WHEN l_list_header_id_tbl.COUNT = 0;
22193
22194 forall i IN 1 .. l_list_header_id_tbl.COUNT
22195 INSERT INTO qp_preq_patrn_qual_tmp(list_header_id,
22196 list_line_id,
22197 line_index,
22198 matched_pattrn_id,
22199 pricing_phase_id,
22200 matched_hash_key,
22201 stage,
22202 pricing_status_code,
22203 source_system_code,
22204 header_quals_exist_flag,
22205 grouping_no,
22206 eq_flag,
22207 validated_flag,
22208 MODIFIER_LEVEL_CODE,
22209 other_oprt_count,
22210 null_other_oprt_count,
22211 LIST_TYPE_CODE,
22212 ASK_FOR_FLAG,
22213 HEADER_LIMIT_EXISTS,
22214 LINE_LIMIT_EXISTS,
22215 CURRENCY_DETAIL_ID,
22216 CURRENCY_HEADER_ID,
22217 SELLING_ROUNDING_FACTOR,
22218 BASE_CURRENCY_CODE,
22219 PRICING_EFFECTIVE_DATE,
22220 qualifier_precedence,
22221 descendents_quals_exist
22222 )
22223 VALUES(l_list_header_id_tbl(i),
22224 l_list_line_id_tbl(i),
22225 l_line_index_tbl(i),
22226 l_matched_pattrn_id_tbl(i),
22227 l_pricing_phase_id_tbl(i),
22228 l_matched_hash_key_tbl(i),
22229 l_stage_tbl(i),
22230 l_pricing_status_code_tbl(i),
22231 l_ssc(i),
22232 l_header_quals_exist_flag(i),
22233 l_grouping_no(i),
22234 l_eq_flag(i),
22235 l_validated_flag(i),
22236 l_modf_lvl_code(i),
22237 l_other_oprt_count(i),
22238 l_null_other_oprt_count(i),
22239 l_list_type_code(i),
22240 l_ask_for_flag(i),
22241 l_hdr_lmt_exists(i),
22242 l_line_lmt_exists(i),
22243 l_curr_det_id(i),
22244 l_curr_hdr_id(i),
22245 L_SELLNG_ROUND_FTR(i),
22246 l_curr_code(i),
22247 l_prcng_effctve_dt(i),
22248 L_qualifier_precedence(i),
22249 l_descnt_quals_exist(i)
22250 );
22251
22252 l_loop_count:=l_loop_count+1;
22253 --exit when l_header_cache_cur%rowcount < l_limit;
22254 END LOOP;
22255 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
22256 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
22257 engine_debug('cursor close l_list_cur_currency-multi-currency TRUE');
22258 END IF;
22259
22260 CLOSE L_SEC_LST_HDR_P1_QLFY_Y_CURR;
22261 qp_debug_util.tstop('L_SEC_LST_HDR_P1_QLFY_Y_CURR');
22262 else
22263 CLOSE L_SEC_LST_HDR_P1_QLFY_SEC_Y;
22264 qp_debug_util.tstop('L_SEC_LST_HDR_P1_QLFY_SEC_Y');
22265 end if;
22266
22267 ELSE ----profile no
22268 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
22269 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
22270 engine_debug('cursor l_sec_list_cur_currency-multi-currency TRUE');
22271 END IF;
22272 IF p_search_path = 1 THEN
22273 OPEN L_SEC_LST_HDR_P1_QLFY_N_CURR;
22274 qp_debug_util.tstart('L_SEC_LST_HDR_P1_QLFY_N_CURR', 'L_SEC_LST_HDR_P1_QLFY_N_CURR');
22275 ELSE
22276 OPEN L_SEC_SRCH_BOTH_P2_QLFY_N_CURR;
22277 qp_debug_util.tstart('L_SEC_SRCH_BOTH_P2_QLFY_N_CURR', 'L_SEC_SRCH_BOTH_P2_QLFY_N_CURR');
22278 END IF;
22279 ELSE
22280 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
22281 engine_debug('cursor l_sec_list_cur multi-currency FALSE');
22282 END IF;
22283 IF p_search_path = 1 THEN
22284 OPEN L_SEC_LST_HDR_P1_QLFY_SEC_N;
22285 qp_debug_util.tstart('L_SEC_LST_HDR_P1_QLFY_SEC_N', 'L_SEC_LST_HDR_P1_QLFY_SEC_N');
22286 ELSE
22287 OPEN L_SEC_SRCH_BOTH_P2_QLFY_N;
22288 qp_debug_util.tstart('L_SEC_SRCH_BOTH_P2_QLFY_N', 'L_SEC_SRCH_BOTH_P2_QLFY_N');
22289 END IF;
22290 END IF;
22291
22292 LOOP
22293 l_list_header_id_tbl.DELETE;
22294 l_list_line_id_tbl.DELETE;
22295 l_line_index_tbl.DELETE;
22296 l_matched_pattrn_id_tbl.DELETE;
22297 l_ag_matched_pat_id_tbl.DELETE;
22298 l_pricing_phase_id_tbl.DELETE;
22299 l_matched_hash_key_tbl.DELETE;
22300 l_ag_mtchd_hash_key_tbl.DELETE;
22301 l_stage_tbl.DELETE;
22302 l_pricing_status_code_tbl.DELETE;
22303 l_ssc.DELETE;
22304 l_header_quals_exist_flag.DELETE;
22305 l_grouping_no.DELETE;
22306 l_ag_grpng_no.DELETE;
22307 l_eq_flag.DELETE;
22308 l_ag_eq_flag.DELETE;
22309 l_validated_flag.DELETE;
22310 l_modf_lvl_code.DELETE;
22311 l_other_oprt_count.DELETE;
22312 l_ag_othr_oprt_cnt.DELETE;
22313 l_null_other_oprt_count.DELETE;
22314 l_list_type_code.DELETE;
22315 l_ask_for_flag.DELETE;
22316 l_hdr_lmt_exists.DELETE;
22317 l_line_lmt_exists.DELETE;
22318 l_curr_det_id.DELETE;
22319 l_curr_hdr_id.DELETE;
22320 L_SELLNG_ROUND_FTR.DELETE;
22321 l_base_curr_code.DELETE;
22322 l_prcng_effctve_dt.DELETE;
22323 l_brk_uom_code.DELETE;
22324 l_brk_uom_ctxt.DELETE;
22325 l_brk_uom_attr.DELETE;
22326 l_order_curr.DELETE;
22327 L_qualifier_precedence.DELETE;
22328 l_descnt_quals_exist.DELETE;
22329 l_PRICE_BREAK_TYPE_CODE.DELETE;
22330
22331 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
22332 IF p_search_path = 1 THEN
22333 FETCH L_SEC_LST_HDR_P1_QLFY_N_CURR BULK COLLECT
22334 INTO l_list_header_id_tbl,
22335 l_list_line_id_tbl,
22336 l_line_index_tbl,
22337 l_matched_pattrn_id_tbl,
22338 l_pricing_phase_id_tbl,
22339 l_matched_hash_key_tbl,
22340 l_stage_tbl,
22341 l_pricing_status_code_tbl,
22342 l_ssc,
22343 l_header_quals_exist_flag,
22344 l_grouping_no,
22345 l_eq_flag,
22346 l_validated_flag,l_modf_lvl_code,l_other_oprt_count,l_null_other_oprt_count,
22347 l_list_type_code,
22348 l_ask_for_flag,
22349 l_hdr_lmt_exists,
22350 l_line_lmt_exists,
22351 l_curr_det_id,
22352 l_curr_hdr_id,
22353 L_SELLNG_ROUND_FTR,
22354 l_curr_code,
22355 l_prcng_effctve_dt,
22356 L_qualifier_precedence,
22357 l_descnt_quals_exist
22358 limit l_limit;
22359 ELSE
22360 FETCH L_SEC_SRCH_BOTH_P2_QLFY_N_CURR BULK COLLECT
22361 INTO l_list_header_id_tbl,
22362 l_list_line_id_tbl,
22363 l_line_index_tbl,
22364 l_matched_pattrn_id_tbl,
22365 l_ag_matched_pat_id_tbl,
22366 l_pricing_phase_id_tbl,
22367 l_matched_hash_key_tbl,
22368 l_ag_mtchd_hash_key_tbl,
22369 l_stage_tbl,
22370 l_pricing_status_code_tbl,
22371 l_ssc,
22372 l_header_quals_exist_flag,
22373 l_grouping_no,
22374 l_ag_grpng_no,
22375 l_eq_flag,
22376 l_ag_eq_flag,
22377 l_validated_flag,
22378 l_modf_lvl_code,
22379 l_other_oprt_count,
22380 l_ag_othr_oprt_cnt,
22381 l_null_other_oprt_count,
22382 l_list_type_code,
22383 l_ask_for_flag,
22384 l_hdr_lmt_exists,
22385 l_line_lmt_exists,
22386 l_curr_det_id,
22387 l_curr_hdr_id,
22388 L_SELLNG_ROUND_FTR,
22389 l_base_curr_code,
22390 l_prcng_effctve_dt,
22391 l_brk_uom_code,
22392 l_brk_uom_ctxt,
22393 l_brk_uom_attr,
22394 l_order_curr,
22395 L_qualifier_precedence,
22396 l_descnt_quals_exist,
22397 l_PRICE_BREAK_TYPE_CODE
22398 limit l_limit;
22399 END IF;
22400 ELSE
22401 IF p_search_path = 1 THEN
22402 FETCH L_SEC_LST_HDR_P1_QLFY_SEC_N BULK COLLECT
22403 INTO l_list_header_id_tbl,
22404 l_list_line_id_tbl,
22405 l_line_index_tbl,
22406 l_matched_pattrn_id_tbl,
22407 l_pricing_phase_id_tbl,
22408 l_matched_hash_key_tbl,
22409 l_stage_tbl,
22410 l_pricing_status_code_tbl,
22411 l_ssc,
22412 l_header_quals_exist_flag,
22413 l_grouping_no,
22414 l_eq_flag,
22415 l_validated_flag,l_modf_lvl_code,l_other_oprt_count,l_null_other_oprt_count,
22416 l_list_type_code,
22417 l_ask_for_flag,
22418 l_hdr_lmt_exists,
22419 l_line_lmt_exists,
22420 l_curr_det_id,
22421 l_curr_hdr_id,
22422 L_SELLNG_ROUND_FTR,
22423 l_curr_code,
22424 l_prcng_effctve_dt,
22425 L_qualifier_precedence,
22426 l_descnt_quals_exist
22427 limit l_limit;
22428 ELSE
22429 FETCH L_SEC_SRCH_BOTH_P2_QLFY_N BULK COLLECT
22430 INTO l_list_header_id_tbl,
22431 l_list_line_id_tbl,
22432 l_line_index_tbl,
22433 l_matched_pattrn_id_tbl,
22434 l_ag_matched_pat_id_tbl,
22435 l_pricing_phase_id_tbl,
22436 l_matched_hash_key_tbl,
22437 l_ag_mtchd_hash_key_tbl,
22438 l_stage_tbl,
22439 l_pricing_status_code_tbl,
22440 l_ssc,
22441 l_header_quals_exist_flag,
22442 l_grouping_no,
22443 l_ag_grpng_no,
22444 l_eq_flag,
22445 l_ag_eq_flag,
22446 l_validated_flag,
22447 l_modf_lvl_code,
22448 l_other_oprt_count,
22449 l_ag_othr_oprt_cnt,
22450 l_null_other_oprt_count,
22451 l_list_type_code,
22452 l_ask_for_flag,
22453 l_hdr_lmt_exists,
22454 l_line_lmt_exists,
22455 l_curr_det_id,
22456 l_curr_hdr_id,
22457 L_SELLNG_ROUND_FTR,
22458 l_base_curr_code,
22459 l_prcng_effctve_dt,
22460 l_brk_uom_code,
22461 l_brk_uom_ctxt,
22462 l_brk_uom_attr,
22463 l_order_curr,
22464 L_qualifier_precedence,
22465 l_descnt_quals_exist,
22466 l_PRICE_BREAK_TYPE_CODE
22467 limit l_limit;
22468 END IF;
22469 END IF;
22470 EXIT WHEN l_list_header_id_tbl.COUNT = 0;
22471 IF p_search_path = 1 THEN
22472 forall i IN 1 .. l_list_header_id_tbl.COUNT
22473 INSERT INTO qp_preq_patrn_qual_tmp(list_header_id,
22474 list_line_id,
22475 line_index,
22476 matched_pattrn_id,
22477 pricing_phase_id,
22478 matched_hash_key,
22479 stage,
22480 pricing_status_code,
22481 source_system_code,
22482 header_quals_exist_flag,
22483 grouping_no,
22484 eq_flag,
22485 validated_flag,
22486 MODIFIER_LEVEL_CODE,
22487 other_oprt_count,
22488 null_other_oprt_count,
22489 LIST_TYPE_CODE,
22490 ASK_FOR_FLAG,
22491 HEADER_LIMIT_EXISTS,
22492 LINE_LIMIT_EXISTS,
22493 CURRENCY_DETAIL_ID,
22494 CURRENCY_HEADER_ID,
22495 SELLING_ROUNDING_FACTOR,
22496 BASE_CURRENCY_CODE,
22497 PRICING_EFFECTIVE_DATE,
22498 qualifier_precedence,
22499 descendents_quals_exist
22500 )
22501 VALUES(l_list_header_id_tbl(i),
22502 l_list_line_id_tbl(i),
22503 l_line_index_tbl(i),
22504 l_matched_pattrn_id_tbl(i),
22505 l_pricing_phase_id_tbl(i),
22506 l_matched_hash_key_tbl(i),
22507 l_stage_tbl(i),
22508 l_pricing_status_code_tbl(i),
22509 l_ssc(i),
22510 l_header_quals_exist_flag(i),
22511 l_grouping_no(i),
22512 l_eq_flag(i),
22513 l_validated_flag(i),
22514 l_modf_lvl_code(i),
22515 l_other_oprt_count(i),
22516 l_null_other_oprt_count(i),
22517 l_list_type_code(i),
22518 l_ask_for_flag(i),
22519 l_hdr_lmt_exists(i),
22520 l_line_lmt_exists(i),
22521 l_curr_det_id(i),
22522 l_curr_hdr_id(i),
22523 L_SELLNG_ROUND_FTR(i),
22524 l_curr_code(i),
22525 l_prcng_effctve_dt(i),
22526 L_qualifier_precedence(i),
22527 l_descnt_quals_exist(i)
22528 );
22529 ELSE
22530
22531 forall i IN 1 .. l_list_header_id_tbl.COUNT
22532 INSERT
22533 INTO qp_preq_patrn_qual_tmp(list_header_id,
22534 list_line_id,
22535 line_index,
22536 matched_pattrn_id,
22537 pricing_phase_id,
22538 matched_hash_key,
22539 stage,
22540 pricing_status_code,
22541 source_system_code,
22542 header_quals_exist_flag,
22543 grouping_no,
22544 eq_flag,
22545 validated_flag,
22546 MODIFIER_LEVEL_CODE,
22547 other_oprt_count,
22548 null_other_oprt_count,
22549 LIST_TYPE_CODE,
22550 ASK_FOR_FLAG,
22551 HEADER_LIMIT_EXISTS,
22552 LINE_LIMIT_EXISTS,
22553 BREAK_UOM_CODE,
22554 BREAK_UOM_CONTEXT,
22555 BREAK_UOM_ATTRIBUTE,
22556 ORDER_CURRENCY,
22557 CURRENCY_DETAIL_ID,
22558 CURRENCY_HEADER_ID,
22559 SELLING_ROUNDING_FACTOR,
22560 BASE_CURRENCY_CODE,
22561 pricing_effective_date,
22562 qualifier_precedence,
22563 PRICE_BREAK_TYPE_CODE
22564 )
22565 SELECT DISTINCT l_list_header_id_tbl(i),
22566 l_list_line_id_tbl(i),
22567 l_line_index_tbl(i),
22568 l_matched_pattrn_id_tbl(i),
22569 l_pricing_phase_id_tbl(i),
22570 l_matched_hash_key_tbl(i),
22571 l_stage_tbl(i),
22572 l_pricing_status_code_tbl(i),
22573 l_ssc(i),
22574 l_header_quals_exist_flag(i),
22575 l_grouping_no(i),
22576 l_eq_flag(i),
22577 l_validated_flag(i),
22578 l_modf_lvl_code(i),
22579 l_other_oprt_count(i),
22580 l_other_oprt_count(i),
22581 l_list_type_code(i),
22582 l_ask_for_flag(i),
22583 l_hdr_lmt_exists(i),
22584 l_line_lmt_exists(i),
22585 l_brk_uom_code(i),
22586 l_brk_uom_ctxt(i),
22587 l_brk_uom_attr(i),
22588 l_order_curr(i),
22589 l_curr_det_id(i),
22590 l_curr_hdr_id(i),
22591 L_SELLNG_ROUND_FTR(i),
22592 l_base_curr_code(i),
22593 l_prcng_effctve_dt(i),
22594 L_qualifier_precedence(i),
22595 l_PRICE_BREAK_TYPE_CODE(i)
22596 FROM dual;
22597
22598
22599 forall i IN 1 .. l_list_header_id_tbl.COUNT
22600 INSERT INTO qp_preq_patrn_qual_tmp(list_header_id,
22601 list_line_id,
22602 line_index,
22603 pricing_phase_id,
22604 stage,
22605 pricing_status_code,
22606 source_system_code,
22607 header_quals_exist_flag,
22608 grouping_no,
22609 eq_flag,
22610 validated_flag,
22611 MODIFIER_LEVEL_CODE,
22612 other_oprt_count,
22613 null_other_oprt_count,
22614 descendents_quals_exist
22615 )
22616 SELECT DISTINCT l_list_header_id_tbl(i),
22617 -1, -- List line id,
22618 l_line_index_tbl(i),
22619 l_pricing_phase_id_tbl(i),
22620 l_stage_tbl(i),
22621 l_pricing_status_code_tbl(i),
22622 l_ssc(i),
22623 l_header_quals_exist_flag(i), -- Header Quals Exist,
22624 l_ag_grpng_no(i),
22625 l_ag_eq_flag(i),
22626 l_validated_flag(i),
22627 l_modf_lvl_code(i),
22628 l_ag_othr_oprt_cnt(i),
22629 l_null_other_oprt_count(i),
22630 l_descnt_quals_exist(i)
22631 FROM dual
22632 WHERE l_ag_eq_flag(i) = 'N'
22633 OR l_descnt_quals_exist(i) = 'Y';
22634
22635 END IF;
22636 l_loop_count:=l_loop_count+1;
22637 --exit when l_header_cache_cur%rowcount < l_limit;
22638 END LOOP;
22639 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
22640 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
22641 engine_debug('cursor close l_list_cur_currency-multi-currency TRUE');
22642 END IF;
22643 IF p_search_path = 1 THEN
22644 CLOSE L_SEC_LST_HDR_P1_QLFY_N_CURR;
22645 qp_debug_util.tstop('L_SEC_LST_HDR_P1_QLFY_N_CURR');
22646 ELSE
22647 CLOSE L_SEC_SRCH_BOTH_P2_QLFY_N_CURR;
22648 qp_debug_util.tstop('L_SEC_SRCH_BOTH_P2_QLFY_N_CURR');
22649 END IF;
22650 else
22651 IF p_search_path = 1 THEN
22652 CLOSE L_SEC_LST_HDR_P1_QLFY_SEC_N;
22653 qp_debug_util.tstop('L_SEC_LST_HDR_P1_QLFY_SEC_N');
22654 ELSE
22655 CLOSE L_SEC_SRCH_BOTH_P2_QLFY_N;
22656 qp_debug_util.tstop('L_SEC_SRCH_BOTH_P2_QLFY_N');
22657 END IF;
22658 end if;
22659 END IF;
22660 IF G_QUALIFY_SECONDARY = G_YES THEN
22661 l_stage :=G_STAGE_CACHE_SEC_PL_HDR_SRCH;
22662 ELSE
22663 IF p_search_path=1 THEN
22664 l_stage :=G_STAGE_CACHE_SEC_PL_HDR_SRCH;
22665 ELSE
22666 /*l_stage :=G_STAGE_CACHE_SEC_PL_LIN_SRCH;*/
22667 l_stage := G_STAGE_CACHE_SEC_PL_LIN_SRCH2;
22668 END IF;
22669 END IF;
22670
22671 qp_debug_util.tstart('Populate_Temp_Tables_NEQ_BTW_SEC_LIST_CUR', 'Populate_Temp_Tables_NEQ_BTW_SEC_LIST_CUR');
22672 Populate_Temp_Tables_NEQ_BTW(
22673 G_PRICE_LIST_PHASE_ID ,
22674 l_stage ,
22675 x_status_code ,
22676 x_status_text );
22677 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
22678 RAISE E_ROUTINE_ERRORS;
22679 END IF;
22680
22681 qp_debug_util.tstop('Populate_Temp_Tables_NEQ_BTW_SEC_LIST_CUR');
22682 qp_debug_util.tstart('QP_EVALUATE_OTHER_OPERATORS_SEC_LIST_CUR', 'QP_EVALUATE_OTHER_OPERATORS_SEC_LIST_CUR');
22683
22684 QP_EVALUATE_OTHER_OPERATORS(
22685 G_PRICE_LIST_PHASE_ID ,
22686 l_stage,
22687 x_status_code ,
22688 x_status_text );
22689
22690 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
22691 RAISE E_ROUTINE_ERRORS;
22692 END IF;
22693
22694 qp_debug_util.tstop('QP_EVALUATE_OTHER_OPERATORS_SEC_LIST_CUR');
22695
22696 qp_debug_util.tstart('SEC_SRCH_PATRN_LIST_CUR_DEL_HDR_TCA', 'Header deletion for TCA');
22697
22698 UPDATE qp_preq_patrn_qual_tmp a
22699 SET pricing_status_code = G_DELETED_TCA
22700 WHERE pricing_status_code = g_status_unchanged
22701 AND a.descendents_quals_exist = 'Y'
22702 and a.pricing_phase_id = G_PRICE_LIST_PHASE_ID
22703 and a.stage = l_stage
22704 AND EXISTS (
22705 SELECT 1
22706 FROM qp_qualifiers b, qp_npreq_line_attrs_tmp c
22707 WHERE b.list_header_id = a.list_header_id
22708 AND b.list_line_id = a.list_line_id
22709 AND (b.qualifier_grouping_no = a.grouping_no
22710 or
22711 b.qualifier_grouping_no = -1
22712 )
22713 AND b.qualify_hier_descendents_flag = 'N'
22714 AND c.segment_id = b.segment_id
22715 AND c.line_index = a.line_index
22716 AND c.derived_qualifier_flag = 'Y');
22717
22718 qp_debug_util.tstop('SEC_SRCH_PATRN_LIST_CUR_DEL_HDR_TCA');
22719
22720 IF l_stage = G_STAGE_CACHE_SEC_PL_LIN_SRCH2 THEN
22721 -- Deleting line if headers is not qualified in not=/Between evaluation
22722 -- header_quals_exist_flag will be Y only if Not=/Bet header level
22723 -- qualifiers are present for that line.
22724 qp_debug_util.tstart('SEC_SRCH_PATRN_LIST_CUR_DEL_HDR', 'Line deletion');
22725
22726 UPDATE qp_preq_patrn_qual_tmp a
22727 SET pricing_status_code = G_DELETED_LINE
22728 WHERE pricing_phase_id = G_PRICE_LIST_PHASE_ID
22729 AND pricing_status_code = g_status_unchanged
22730 AND list_line_id <> -1
22731 AND nvl(header_quals_exist_flag, 'N') = 'Y'
22732 AND a.stage = l_stage
22733 AND NOT EXISTS
22734 (SELECT /*+ index(b QP_PREQ_PATRN_QUAL_T_N2) */ 'x'
22735 FROM qp_preq_patrn_qual_tmp b
22736 WHERE b.list_header_id = a.list_header_id
22737 AND b.line_index = a.line_index
22738 AND b.list_line_id = -1
22739 AND b.pricing_phase_id = a.pricing_phase_id
22740 AND pricing_status_code = g_status_unchanged
22741 AND b.stage = l_stage );
22742
22743
22744 qp_debug_util.tstop('SEC_SRCH_PATRN_LIST_CUR_DEL_HDR');
22745
22746 END IF;
22747
22748 /************/
22749 IF (p_search_path = 1) OR (p_search_path = 2 AND G_QUALIFY_SECONDARY = G_YES) THEN
22750 IF G_QUALIFY_SECONDARY = G_YES THEN
22751 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
22752 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
22753 engine_debug('cursor l_sec_list_cur_currency-multi-currency TRUE');
22754 END IF;
22755
22756 OPEN L_SEC_LST_LIN_P1_QLFY_Y_CURR;
22757 qp_debug_util.tstart('L_SEC_LST_LIN_P1_QLFY_Y_CURR', 'L_SEC_LST_LIN_P1_QLFY_Y_CURR');
22758
22759 ELSE
22760 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
22761 engine_debug('cursor l_sec_list_cur multi-currency FALSE');
22762 END IF;
22763
22764 OPEN L_SEC_LST_LIN_P1_QLFY_SEC_Y;
22765 qp_debug_util.tstart('L_SEC_LST_LIN_P1_QLFY_SEC_Y', 'L_SEC_LST_LIN_P1_QLFY_SEC_Y');
22766 END IF;
22767
22768 LOOP
22769 l_list_header_id_tbl.DELETE;
22770 l_list_line_id_tbl.DELETE;
22771 l_line_index_tbl.DELETE;
22772 l_matched_pattrn_id_tbl.DELETE;
22773 l_pricing_phase_id_tbl.DELETE;
22774 l_stage_tbl.DELETE;
22775 l_matched_hash_key_tbl.DELETE;
22776 l_pricing_status_code_tbl.DELETE;
22777 l_ssc.DELETE;
22778 l_header_quals_exist_flag.DELETE;
22779 l_grouping_no.DELETE;
22780 l_eq_flag.DELETE;
22781 l_validated_flag.DELETE;
22782 l_modf_lvl_code.DELETE;
22783 l_other_oprt_count.DELETE;
22784 l_null_other_oprt_count.DELETE;
22785 l_list_type_code.DELETE;
22786 l_ask_for_flag.DELETE;
22787 l_hdr_lmt_exists.DELETE;
22788 l_line_lmt_exists.DELETE;
22789 l_curr_code.DELETE;
22790 l_brk_uom_code.DELETE;
22791 l_brk_uom_ctxt.DELETE;
22792 l_brk_uom_attr.DELETE;
22793 l_prcng_effctve_dt.DELETE;
22794 l_curr_det_id.DELETE;
22795 l_curr_hdr_id.DELETE;
22796 L_SELLNG_ROUND_FTR.DELETE;
22797 l_base_curr_code.DELETE;
22798 L_qualifier_precedence.DELETE;
22799 l_descnt_quals_exist.DELETE;
22800 l_PRICE_BREAK_TYPE_CODE.DELETE;
22801
22802 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
22803
22804 FETCH L_SEC_LST_LIN_P1_QLFY_Y_CURR BULK COLLECT
22805 INTO l_list_header_id_tbl,
22806 l_list_line_id_tbl,
22807 l_line_index_tbl,
22808 l_matched_pattrn_id_tbl,
22809 l_pricing_phase_id_tbl,
22810 l_matched_hash_key_tbl,
22811 l_stage_tbl,
22812 l_pricing_status_code_tbl,
22813 l_ssc,
22814 l_header_quals_exist_flag,
22815 l_grouping_no,
22816 l_eq_flag,
22817 l_validated_flag,l_modf_lvl_code,l_other_oprt_count,l_null_other_oprt_count,
22818 l_list_type_code,
22819 l_ask_for_flag,
22820 l_hdr_lmt_exists,
22821 l_line_lmt_exists,
22822 l_brk_uom_code,
22823 l_brk_uom_ctxt,
22824 l_brk_uom_attr,
22825 l_curr_code,
22826 l_prcng_effctve_dt,
22827 l_curr_det_id,
22828 l_curr_hdr_id,
22829 L_SELLNG_ROUND_FTR,
22830 l_base_curr_code,
22831 L_qualifier_precedence,
22832 l_descnt_quals_exist,
22833 l_PRICE_BREAK_TYPE_CODE
22834 limit l_limit;
22835
22836 ELSE
22837 FETCH L_SEC_LST_LIN_P1_QLFY_SEC_Y BULK COLLECT
22838 INTO l_list_header_id_tbl,
22839 l_list_line_id_tbl,
22840 l_line_index_tbl,
22841 l_matched_pattrn_id_tbl,
22842 l_pricing_phase_id_tbl,
22843 l_matched_hash_key_tbl,
22844 l_stage_tbl,
22845 l_pricing_status_code_tbl,
22846 l_ssc,
22847 l_header_quals_exist_flag,
22848 l_grouping_no,
22849 l_eq_flag,
22850 l_validated_flag,l_modf_lvl_code,l_other_oprt_count,l_null_other_oprt_count,
22851 l_list_type_code,
22852 l_ask_for_flag,
22853 l_hdr_lmt_exists,
22854 l_line_lmt_exists,
22855 l_brk_uom_code,
22856 l_brk_uom_ctxt,
22857 l_brk_uom_attr,
22858 l_curr_code,
22859 l_prcng_effctve_dt,
22860 L_qualifier_precedence,
22861 l_descnt_quals_exist,
22862 l_PRICE_BREAK_TYPE_CODE
22863 limit l_limit;
22864 END IF;
22865
22866 EXIT WHEN l_list_header_id_tbl.COUNT = 0;
22867
22868
22869
22870 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
22871 forall i IN 1 .. l_list_header_id_tbl.COUNT
22872 INSERT INTO qp_preq_patrn_qual_tmp(list_header_id,
22873 list_line_id,
22874 line_index,
22875 matched_pattrn_id,
22876 pricing_phase_id,
22877 matched_hash_key,
22878 stage,
22879 pricing_status_code,
22880 source_system_code,
22881 header_quals_exist_flag,
22882 grouping_no,
22883 eq_flag,
22884 validated_flag,
22885 MODIFIER_LEVEL_CODE,
22886 other_oprt_count,
22887 null_other_oprt_count,
22888 LIST_TYPE_CODE,
22889 ASK_FOR_FLAG,
22890 HEADER_LIMIT_EXISTS,
22891 LINE_LIMIT_EXISTS,
22892 BREAK_UOM_CODE,
22893 BREAK_UOM_CONTEXT,
22894 BREAK_UOM_ATTRIBUTE,
22895 ORDER_CURRENCY,
22896 PRICING_EFFECTIVE_DATE,
22897 CURRENCY_DETAIL_ID,
22898 CURRENCY_HEADER_ID,
22899 SELLING_ROUNDING_FACTOR,
22900 BASE_CURRENCY_CODE,
22901 qualifier_precedence,
22902 descendents_quals_exist,
22903 PRICE_BREAK_TYPE_CODE
22904 )
22905 VALUES(l_list_header_id_tbl(i),
22906 l_list_line_id_tbl(i),
22907 l_line_index_tbl(i),
22908 l_matched_pattrn_id_tbl(i),
22909 l_pricing_phase_id_tbl(i),
22910 l_matched_hash_key_tbl(i),
22911 l_stage_tbl(i),
22912 l_pricing_status_code_tbl(i),
22913 l_ssc(i),
22914 l_header_quals_exist_flag(i),
22915 l_grouping_no(i),
22916 l_eq_flag(i),
22917 l_validated_flag(i),
22918 l_modf_lvl_code(i),
22919 l_other_oprt_count(i),
22920 l_null_other_oprt_count(i),
22921 l_list_type_code(i),
22922 l_ask_for_flag(i),
22923 l_hdr_lmt_exists(i),
22924 l_line_lmt_exists(i),
22925 l_brk_uom_code(i),
22926 l_brk_uom_ctxt(i),
22927 l_brk_uom_attr(i),
22928 l_curr_code(i),
22929 l_prcng_effctve_dt(i),
22930 l_curr_det_id(i),
22931 l_curr_hdr_id(i),
22932 L_SELLNG_ROUND_FTR(i),
22933 l_base_curr_code(i),
22934 L_qualifier_precedence(i),
22935 l_descnt_quals_exist(i),
22936 l_PRICE_BREAK_TYPE_CODE(i)
22937 );
22938
22939 ELSE
22940 forall i IN 1 .. l_list_header_id_tbl.COUNT
22941 INSERT INTO qp_preq_patrn_qual_tmp(list_header_id,
22942 list_line_id,
22943 line_index,
22944 matched_pattrn_id,
22945 pricing_phase_id,
22946 matched_hash_key,
22947 stage,
22948 pricing_status_code,
22949 source_system_code,
22950 header_quals_exist_flag,
22951 grouping_no,
22952 eq_flag,
22953 validated_flag,
22954 MODIFIER_LEVEL_CODE,
22955 other_oprt_count,
22956 null_other_oprt_count,
22957 LIST_TYPE_CODE,
22958 ASK_FOR_FLAG,
22959 HEADER_LIMIT_EXISTS,
22960 LINE_LIMIT_EXISTS,
22961 BREAK_UOM_CODE,
22962 BREAK_UOM_CONTEXT,
22963 BREAK_UOM_ATTRIBUTE,
22964 ORDER_CURRENCY,
22965 PRICING_EFFECTIVE_DATE,
22966 qualifier_precedence,
22967 descendents_quals_exist,
22968 PRICE_BREAK_TYPE_CODE
22969 )
22970 VALUES(l_list_header_id_tbl(i),
22971 l_list_line_id_tbl(i),
22972 l_line_index_tbl(i),
22973 l_matched_pattrn_id_tbl(i),
22974 l_pricing_phase_id_tbl(i),
22975 l_matched_hash_key_tbl(i),
22976 l_stage_tbl(i),
22977 l_pricing_status_code_tbl(i),
22978 l_ssc(i),
22979 l_header_quals_exist_flag(i),
22980 l_grouping_no(i),
22981 l_eq_flag(i),
22982 l_validated_flag(i),
22983 l_modf_lvl_code(i),
22984 l_other_oprt_count(i),
22985 l_null_other_oprt_count(i),
22986 l_list_type_code(i),
22987 l_ask_for_flag(i),
22988 l_hdr_lmt_exists(i),
22989 l_line_lmt_exists(i),
22990 l_brk_uom_code(i),
22991 l_brk_uom_ctxt(i),
22992 l_brk_uom_attr(i),
22993 l_curr_code(i),
22994 l_prcng_effctve_dt(i),
22995 L_qualifier_precedence(i),
22996 l_descnt_quals_exist(i),
22997 l_PRICE_BREAK_TYPE_CODE(i)
22998 );
22999
23000 END IF;
23001
23002
23003 l_loop_count:=l_loop_count+1;
23004 --exit when l_header_cache_cur%rowcount < l_limit;
23005 END LOOP;
23006 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
23007 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23008 engine_debug('cursor close l_list_cur_currency-multi-currency TRUE');
23009 END IF;
23010
23011 CLOSE L_SEC_LST_LIN_P1_QLFY_Y_CURR;
23012 qp_debug_util.tstop('L_SEC_LST_LIN_P1_QLFY_Y_CURR');
23013 else
23014 CLOSE L_SEC_LST_LIN_P1_QLFY_SEC_Y;
23015 qp_debug_util.tstop('L_SEC_LST_LIN_P1_QLFY_SEC_Y');
23016 end if;
23017
23018 ELSE ----profile no
23019 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
23020 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23021 engine_debug('cursor l_sec_list_cur_currency-multi-currency TRUE');
23022 END IF;
23023
23024 OPEN L_SEC_LST_LIN_P1_QLFY_N_CURR;
23025 qp_debug_util.tstart('L_SEC_LST_LIN_P1_QLFY_N_CURR', 'L_SEC_LST_LIN_P1_QLFY_N_CURR');
23026 ELSE
23027 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23028 engine_debug('cursor l_sec_list_cur multi-currency FALSE');
23029 END IF;
23030
23031 OPEN L_SEC_LST_LIN_P1_QLFY_SEC_N;
23032 qp_debug_util.tstart('L_SEC_LST_LIN_P1_QLFY_SEC_N', 'L_SEC_LST_LIN_P1_QLFY_SEC_N');
23033 END IF;
23034
23035 LOOP
23036 l_list_header_id_tbl.DELETE;
23037 l_list_line_id_tbl.DELETE;
23038 l_line_index_tbl.DELETE;
23039 l_matched_pattrn_id_tbl.DELETE;
23040 l_pricing_phase_id_tbl.DELETE;
23041 l_stage_tbl.DELETE;
23042 l_matched_hash_key_tbl.DELETE;
23043 l_pricing_status_code_tbl.DELETE;
23044 l_ssc.DELETE;
23045 l_header_quals_exist_flag.DELETE;
23046 l_grouping_no.DELETE;
23047 l_eq_flag.DELETE;
23048 l_validated_flag.DELETE;
23049 l_modf_lvl_code.DELETE;
23050 l_other_oprt_count.DELETE;
23051 l_null_other_oprt_count.DELETE;
23052 l_list_type_code.DELETE;
23053 l_ask_for_flag.DELETE;
23054 l_hdr_lmt_exists.DELETE;
23055 l_line_lmt_exists.DELETE;
23056 l_curr_code.DELETE;
23057 l_brk_uom_code.DELETE;
23058 l_brk_uom_ctxt.DELETE;
23059 l_brk_uom_attr.DELETE;
23060 l_prcng_effctve_dt.DELETE;
23061 l_curr_det_id.DELETE;
23062 l_curr_hdr_id.DELETE;
23063 L_SELLNG_ROUND_FTR.DELETE;
23064 l_base_curr_code.DELETE;
23065 L_qualifier_precedence.DELETE;
23066 l_descnt_quals_exist.DELETE;
23067 l_PRICE_BREAK_TYPE_CODE.DELETE;
23068
23069 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
23070
23071 FETCH L_SEC_LST_LIN_P1_QLFY_N_CURR BULK COLLECT
23072 INTO l_list_header_id_tbl,
23073 l_list_line_id_tbl,
23074 l_line_index_tbl,
23075 l_matched_pattrn_id_tbl,
23076 l_pricing_phase_id_tbl,
23077 l_matched_hash_key_tbl,
23078 l_stage_tbl,
23079 l_pricing_status_code_tbl,
23080 l_ssc,
23081 l_header_quals_exist_flag,
23082 l_grouping_no,
23083 l_eq_flag,
23084 l_validated_flag,l_modf_lvl_code,l_other_oprt_count,l_null_other_oprt_count,
23085 l_list_type_code,
23086 l_ask_for_flag,
23087 l_hdr_lmt_exists,
23088 l_line_lmt_exists,
23089 l_brk_uom_code,
23090 l_brk_uom_ctxt,
23091 l_brk_uom_attr,
23092 l_curr_code,
23093 l_prcng_effctve_dt,
23094 l_curr_det_id,
23095 l_curr_hdr_id,
23096 L_SELLNG_ROUND_FTR,
23097 l_base_curr_code,
23098 L_qualifier_precedence,
23099 l_descnt_quals_exist,
23100 l_PRICE_BREAK_TYPE_CODE
23101 limit l_limit;
23102 ELSE
23103 FETCH L_SEC_LST_LIN_P1_QLFY_SEC_N BULK COLLECT
23104 INTO l_list_header_id_tbl,
23105 l_list_line_id_tbl,
23106 l_line_index_tbl,
23107 l_matched_pattrn_id_tbl,
23108 l_pricing_phase_id_tbl,
23109 l_matched_hash_key_tbl,
23110 l_stage_tbl,
23111 l_pricing_status_code_tbl,
23112 l_ssc,
23113 l_header_quals_exist_flag,
23114 l_grouping_no,
23115 l_eq_flag,
23116 l_validated_flag,l_modf_lvl_code,l_other_oprt_count,l_null_other_oprt_count,
23117 l_list_type_code,
23118 l_ask_for_flag,
23119 l_hdr_lmt_exists,
23120 l_line_lmt_exists,
23121 l_brk_uom_code,
23122 l_brk_uom_ctxt,
23123 l_brk_uom_attr,
23124 l_curr_code,
23125 l_prcng_effctve_dt,
23126 L_qualifier_precedence,
23127 l_descnt_quals_exist,
23128 l_PRICE_BREAK_TYPE_CODE
23129 limit l_limit;
23130 END IF;
23131 EXIT WHEN l_list_header_id_tbl.COUNT = 0;
23132
23133 IF G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
23134 forall i IN 1 .. l_list_header_id_tbl.COUNT
23135 INSERT INTO qp_preq_patrn_qual_tmp(list_header_id,
23136 list_line_id,
23137 line_index,
23138 matched_pattrn_id,
23139 pricing_phase_id,
23140 matched_hash_key,
23141 stage,
23142 pricing_status_code,
23143 source_system_code,
23144 header_quals_exist_flag,
23145 grouping_no,
23146 eq_flag,
23147 validated_flag,
23148 MODIFIER_LEVEL_CODE,
23149 other_oprt_count,
23150 null_other_oprt_count,
23151 LIST_TYPE_CODE,
23152 ASK_FOR_FLAG,
23153 HEADER_LIMIT_EXISTS,
23154 LINE_LIMIT_EXISTS,
23155 BREAK_UOM_CODE,
23156 BREAK_UOM_CONTEXT,
23157 BREAK_UOM_ATTRIBUTE,
23158 ORDER_CURRENCY,
23159 PRICING_EFFECTIVE_DATE,
23160 CURRENCY_DETAIL_ID,
23161 CURRENCY_HEADER_ID,
23162 SELLING_ROUNDING_FACTOR,
23163 BASE_CURRENCY_CODE,
23164 qualifier_precedence,
23165 descendents_quals_exist,
23166 PRICE_BREAK_TYPE_CODE
23167 )
23168 VALUES(l_list_header_id_tbl(i),
23169 l_list_line_id_tbl(i),
23170 l_line_index_tbl(i),
23171 l_matched_pattrn_id_tbl(i),
23172 l_pricing_phase_id_tbl(i),
23173 l_matched_hash_key_tbl(i),
23174 l_stage_tbl(i),
23175 l_pricing_status_code_tbl(i),
23176 l_ssc(i),
23177 l_header_quals_exist_flag(i),
23178 l_grouping_no(i),
23179 l_eq_flag(i),
23180 l_validated_flag(i),
23181 l_modf_lvl_code(i),
23182 l_other_oprt_count(i),
23183 l_null_other_oprt_count(i),
23184 l_list_type_code(i),
23185 l_ask_for_flag(i),
23186 l_hdr_lmt_exists(i),
23187 l_line_lmt_exists(i),
23188 l_brk_uom_code(i),
23189 l_brk_uom_ctxt(i),
23190 l_brk_uom_attr(i),
23191 l_curr_code(i),
23192 l_prcng_effctve_dt(i),
23193 l_curr_det_id(i),
23194 l_curr_hdr_id(i),
23195 L_SELLNG_ROUND_FTR(i),
23196 l_base_curr_code(i),
23197 L_qualifier_precedence(i),
23198 l_descnt_quals_exist(i),
23199 l_PRICE_BREAK_TYPE_CODE(i));
23200 ELSE
23201 forall i IN 1 .. l_list_header_id_tbl.COUNT
23202 INSERT INTO qp_preq_patrn_qual_tmp(list_header_id,
23203 list_line_id,
23204 line_index,
23205 matched_pattrn_id,
23206 pricing_phase_id,
23207 matched_hash_key,
23208 stage,
23209 pricing_status_code,
23210 source_system_code,
23211 header_quals_exist_flag,
23212 grouping_no,
23213 eq_flag,
23214 validated_flag,
23215 MODIFIER_LEVEL_CODE,
23216 other_oprt_count,
23217 null_other_oprt_count,
23218 LIST_TYPE_CODE,
23219 ASK_FOR_FLAG,
23220 HEADER_LIMIT_EXISTS,
23221 LINE_LIMIT_EXISTS,
23222 BREAK_UOM_CODE,
23223 BREAK_UOM_CONTEXT,
23224 BREAK_UOM_ATTRIBUTE,
23225 ORDER_CURRENCY,
23226 PRICING_EFFECTIVE_DATE,
23227 qualifier_precedence,
23228 descendents_quals_exist,
23229 PRICE_BREAK_TYPE_CODE
23230 )
23231 VALUES(l_list_header_id_tbl(i),
23232 l_list_line_id_tbl(i),
23233 l_line_index_tbl(i),
23234 l_matched_pattrn_id_tbl(i),
23235 l_pricing_phase_id_tbl(i),
23236 l_matched_hash_key_tbl(i),
23237 l_stage_tbl(i),
23238 l_pricing_status_code_tbl(i),
23239 l_ssc(i),
23240 l_header_quals_exist_flag(i),
23241 l_grouping_no(i),
23242 l_eq_flag(i),
23243 l_validated_flag(i),
23244 l_modf_lvl_code(i),
23245 l_other_oprt_count(i),
23246 l_null_other_oprt_count(i),
23247 l_list_type_code(i),
23248 l_ask_for_flag(i),
23249 l_hdr_lmt_exists(i),
23250 l_line_lmt_exists(i),
23251 l_brk_uom_code(i),
23252 l_brk_uom_ctxt(i),
23253 l_brk_uom_attr(i),
23254 l_curr_code(i),
23255 l_prcng_effctve_dt(i),
23256 L_qualifier_precedence(i),
23257 l_descnt_quals_exist(i),
23258 l_PRICE_BREAK_TYPE_CODE(i));
23259 END IF;
23260
23261
23262
23263 l_loop_count:=l_loop_count+1;
23264 --exit when l_header_cache_cur%rowcount < l_limit;
23265 END LOOP;
23266 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
23267 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23268 engine_debug('cursor close l_list_cur_currency-multi-currency TRUE');
23269 END IF;
23270
23271 CLOSE L_SEC_LST_LIN_P1_QLFY_N_CURR;
23272 qp_debug_util.tstop('L_SEC_LST_LIN_P1_QLFY_N_CURR');
23273 else
23274 CLOSE L_SEC_LST_LIN_P1_QLFY_SEC_N;
23275 qp_debug_util.tstop('L_SEC_LST_LIN_P1_QLFY_SEC_N');
23276 end if;
23277 END IF;
23278
23279 l_stage :=G_STAGE_CACHE_SEC_PL_LIN_SRCH;
23280
23281 qp_debug_util.tstart('Populate_Temp_Tables_NEQ_BTW_SEC_LIST_CUR', 'Populate_Temp_Tables_NEQ_BTW_SEC_LIST_CUR');
23282 Populate_Temp_Tables_NEQ_BTW(
23283 G_PRICE_LIST_PHASE_ID ,
23284 l_stage ,
23285 x_status_code ,
23286 x_status_text );
23287 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
23288 RAISE E_ROUTINE_ERRORS;
23289 END IF;
23290
23291 qp_debug_util.tstop('Populate_Temp_Tables_NEQ_BTW_SEC_LIST_CUR');
23292 qp_debug_util.tstart('QP_EVALUATE_OTHER_OPERATORS_SEC_LIST_CUR', 'QP_EVALUATE_OTHER_OPERATORS_SEC_LIST_CUR');
23293
23294 QP_EVALUATE_OTHER_OPERATORS(
23295 G_PRICE_LIST_PHASE_ID ,
23296 l_stage,
23297 x_status_code ,
23298 x_status_text );
23299
23300 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
23301 RAISE E_ROUTINE_ERRORS;
23302 END IF;
23303
23304 qp_debug_util.tstop('QP_EVALUATE_OTHER_OPERATORS_SEC_LIST_CUR');
23305
23306 qp_debug_util.tstart('SEC_SRCH_PATRN_LIST_CUR_DEL_LIN_TCA', 'Line deletion for TCA');
23307
23308 UPDATE qp_preq_patrn_qual_tmp a
23309 SET pricing_status_code = G_DELETED_TCA
23310 WHERE pricing_status_code = g_status_unchanged
23311 AND a.descendents_quals_exist = 'Y'
23312 and a.pricing_phase_id = G_PRICE_LIST_PHASE_ID
23313 and a.stage = l_stage
23314 AND EXISTS (
23315 SELECT 1
23316 FROM qp_qualifiers b, qp_npreq_line_attrs_tmp c
23317 WHERE b.list_header_id = a.list_header_id
23318 AND b.list_line_id = a.list_line_id
23319 AND (b.qualifier_grouping_no = a.grouping_no
23320 or
23321 b.qualifier_grouping_no = -1
23322 )
23323 AND b.qualify_hier_descendents_flag = 'N'
23324 AND c.segment_id = b.segment_id
23325 AND c.line_index = a.line_index
23326 AND c.derived_qualifier_flag = 'Y');
23327
23328 qp_debug_util.tstop('SEC_SRCH_PATRN_LIST_CUR_DEL_LIN_TCA');
23329
23330 qp_debug_util.tstart('PATRN_SEC_LIST_CUR_POPULATE_PAT_TEMP_TABLES', 'Populate_Pat_Temp_Tables');
23331
23332 Populate_Pat_Temp_Tables(G_PRICE_LIST_PHASE_ID,
23333 G_STAGE_CACHE_SEC_PL_LIN_SRCH,
23334 x_status_code,
23335 x_status_text);
23336
23337 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
23338 RAISE E_ROUTINE_ERRORS;
23339 END IF;
23340
23341 qp_debug_util.tstop('PATRN_SEC_LIST_CUR_POPULATE_PAT_TEMP_TABLES');
23342
23343 IF g_debug_engine = fnd_api.g_true THEN
23344 engine_debug('x_status_code-' || x_status_code);
23345 engine_debug('x_status_text-' || x_status_text);
23346 END IF;
23347 ELSE
23348 qp_debug_util.tstart('PATRN_SEC_LIST_CUR_POPULATE_PAT_TEMP_TABLES', 'Populate_Pat_Temp_Tables');
23349 /*IF G_QUALIFY_SECONDARY = G_YES THEN
23350 l_stage :=G_STAGE_CACHE_SEC_PL_HDR_SRCH;
23351 ELSE
23352 l_stage := G_STAGE_CACHE_SEC_PL_LIN_SRCH2;
23353 END IF;*/
23354 Populate_Pat_Temp_Tables(G_PRICE_LIST_PHASE_ID,
23355 G_STAGE_CACHE_SEC_PL_LIN_SRCH2,
23356 x_status_code,
23357 x_status_text);
23358
23359 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
23360 RAISE E_ROUTINE_ERRORS;
23361 END IF;
23362
23363 qp_debug_util.tstop('PATRN_SEC_LIST_CUR_POPULATE_PAT_TEMP_TABLES');
23364
23365 END IF; ---path = 1
23366 IF l_loop_count <> 0 THEN
23367 QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty
23368 (p_line_index => NULL,
23369 p_order_uom_code => NULL,
23370 p_order_qty => NULL,
23371 p_pricing_phase_id => G_PRICE_LIST_PHASE_ID, -- pricing_phase_id,
23372 p_call_big_search => FALSE,
23373 x_list_line_id => l_list_line_id,
23374 x_return_status => x_status_code,
23375 x_return_status_txt => x_status_text);
23376
23377 IF(x_status_code = FND_API.G_RET_STS_ERROR) THEN
23378 RAISE E_ROUTINE_ERRORS;
23379 END IF;
23380
23381 -- 3773652
23382 -- re-run Evaluate_Between after UOM conversion to check PLL really qualifies
23383 begin
23384 select 'x' into l_dummy
23385 from qp_npreq_lines_tmp
23386 where LINE_UOM_CODE <> nvl(PRICED_UOM_CODE, LINE_UOM_CODE)
23387 and (PRICE_FLAG = G_YES
23388 or
23389 PRICE_FLAG = G_PHASE and p_freeze_override_flag = G_YES)
23390 and rownum = 1;
23391
23392 Evaluate_Between(G_PRICE_LIST_PHASE_ID,NULL,NULL,x_status_code,x_status_text);
23393
23394 IF(x_status_code = FND_API.G_RET_STS_ERROR) THEN
23395 RAISE E_ROUTINE_ERRORS;
23396 END IF;
23397
23398 exception
23399 when no_data_found then
23400 null;
23401 end;
23402
23403 -- Update the request line status for lines which got valid price list
23404 Update_Request_Line_Status(p_control_rec,'SUCCESS',p_freeze_override_flag,x_status_code,x_status_text); --[julin/4708044]
23405
23406 IF(x_status_code = FND_API.G_RET_STS_ERROR) THEN
23407 RAISE E_ROUTINE_ERRORS;
23408 END IF;
23409
23410 --bug# 2091386 not reflecting the right price on change on UOM on the order line . Since
23411 --QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty determines the pricing_qty
23412 --which is needed later in Get_Eligible_Price_Break we need to call Get_Eligible_Price_Break
23413 --after QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty.
23414 --By doing this we will get the right price in the PRICE event on change of UOM on the order line
23415 --for price based on price break
23416 Get_Eligible_Price_Break(G_PRICE_LIST_PHASE_ID,NULL,x_status_code,x_status_text);
23417
23418 IF(x_status_code = FND_API.G_RET_STS_ERROR) THEN
23419 RAISE E_ROUTINE_ERRORS;
23420 END IF;
23421 ELSE
23422 -- Update the request line status for lines which got valid price list
23423 Update_Request_Line_Status(p_control_rec,'FAILURE',p_freeze_override_flag,x_status_code,x_status_text); --[juiln/4708044]
23424 IF(x_status_code = FND_API.G_RET_STS_ERROR) THEN
23425 RAISE E_ROUTINE_ERRORS;
23426 END IF;
23427 END IF;
23428
23429 qp_debug_util.tstop('PERFORM_SECONDARY_PAT_SEARCH');
23430
23431 EXCEPTION
23432 WHEN E_ROUTINE_ERRORS THEN
23433 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23434 engine_debug(l_routine||': '||x_status_text);
23435 END IF;
23436 x_status_code := FND_API.G_RET_STS_ERROR;
23437 x_status_text := l_routine||': '||x_status_text;
23438
23439 IF G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
23440 IF L_SEC_LST_HDR_P1_QLFY_Y_CURR%ISOPEN THEN
23441 CLOSE L_SEC_LST_HDR_P1_QLFY_Y_CURR;
23442 END if;
23443
23444 IF L_SEC_LST_HDR_P1_QLFY_N_CURR%ISOPEN THEN
23445 CLOSE L_SEC_LST_HDR_P1_QLFY_N_CURR;
23446 END if;
23447
23448 IF L_SEC_LST_LIN_P1_QLFY_N_CURR%ISOPEN THEN
23449 CLOSE L_SEC_LST_LIN_P1_QLFY_N_CURR;
23450 END if;
23451
23452 IF L_SEC_LST_LIN_P1_QLFY_Y_CURR%ISOPEN THEN
23453 CLOSE L_SEC_LST_LIN_P1_QLFY_Y_CURR;
23454 END if;
23455
23456 IF L_SEC_SRCH_BOTH_P2_QLFY_N_CURR%ISOPEN THEN
23457 CLOSE L_SEC_SRCH_BOTH_P2_QLFY_N_CURR;
23458 END if;
23459 ELSE
23460 IF L_SEC_LST_HDR_P1_QLFY_SEC_Y%ISOPEN THEN
23461 CLOSE L_SEC_LST_HDR_P1_QLFY_SEC_Y;
23462 END if;
23463
23464 IF L_SEC_LST_LIN_P1_QLFY_SEC_Y%ISOPEN THEN
23465 CLOSE L_SEC_LST_LIN_P1_QLFY_SEC_Y;
23466 END if;
23467
23468 IF L_SEC_LST_HDR_P1_QLFY_SEC_N%ISOPEN THEN
23469 CLOSE L_SEC_LST_HDR_P1_QLFY_SEC_N;
23470 END if;
23471
23472 IF L_SEC_LST_LIN_P1_QLFY_SEC_N%ISOPEN THEN
23473 CLOSE L_SEC_LST_LIN_P1_QLFY_SEC_N;
23474 END if;
23475
23476 IF L_SEC_SRCH_BOTH_P2_QLFY_N%ISOPEN THEN
23477 CLOSE L_SEC_SRCH_BOTH_P2_QLFY_N;
23478 END if;
23479
23480 END IF;
23481
23482
23483 WHEN OTHERS THEN
23484 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23485 engine_debug(SQLERRM);
23486 END IF;
23487 x_status_code := FND_API.G_RET_STS_ERROR;
23488 x_status_text := l_routine||' '||SQLERRM;
23489
23490 IF G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
23491 IF L_SEC_LST_HDR_P1_QLFY_Y_CURR%ISOPEN THEN
23492 CLOSE L_SEC_LST_HDR_P1_QLFY_Y_CURR;
23493 END if;
23494
23495 IF L_SEC_LST_HDR_P1_QLFY_N_CURR%ISOPEN THEN
23496 CLOSE L_SEC_LST_HDR_P1_QLFY_N_CURR;
23497 END if;
23498
23499 IF L_SEC_LST_LIN_P1_QLFY_N_CURR%ISOPEN THEN
23500 CLOSE L_SEC_LST_LIN_P1_QLFY_N_CURR;
23501 END if;
23502
23503 IF L_SEC_LST_LIN_P1_QLFY_Y_CURR%ISOPEN THEN
23504 CLOSE L_SEC_LST_LIN_P1_QLFY_Y_CURR;
23505 END if;
23506
23507 IF L_SEC_SRCH_BOTH_P2_QLFY_N_CURR%ISOPEN THEN
23508 CLOSE L_SEC_SRCH_BOTH_P2_QLFY_N_CURR;
23509 END if;
23510
23511 ELSE
23512 IF L_SEC_LST_HDR_P1_QLFY_SEC_Y%ISOPEN THEN
23513 CLOSE L_SEC_LST_HDR_P1_QLFY_SEC_Y;
23514 END if;
23515
23516 IF L_SEC_LST_LIN_P1_QLFY_SEC_Y%ISOPEN THEN
23517 CLOSE L_SEC_LST_LIN_P1_QLFY_SEC_Y;
23518 END if;
23519
23520 IF L_SEC_LST_HDR_P1_QLFY_SEC_N%ISOPEN THEN
23521 CLOSE L_SEC_LST_HDR_P1_QLFY_SEC_N;
23522 END if;
23523
23524 IF L_SEC_LST_LIN_P1_QLFY_SEC_N%ISOPEN THEN
23525 CLOSE L_SEC_LST_LIN_P1_QLFY_SEC_N;
23526 END if;
23527
23528 IF L_SEC_SRCH_BOTH_P2_QLFY_N%ISOPEN THEN
23529 CLOSE L_SEC_SRCH_BOTH_P2_QLFY_N;
23530 END if;
23531
23532 END IF;
23533
23534 END PERFORM_SECONDARY_PATRN_SEARCH;
23535
23536
23537 PROCEDURE LIST_HEADER_PATTERN_SEARCH (
23538 p_pricing_phase_id IN NUMBER,
23539 p_freeze_override_flag IN VARCHAR2,
23540 p_control_rec IN CONTROL_RECORD_TYPE,
23541 x_status_code OUT NOCOPY VARCHAR2,
23542 x_status_text OUT NOCOPY VARCHAR2) AS
23543
23544
23545 CURSOR l_pat_cache_both IS
23546
23547 SELECT /*+ ORDERED index(qplines QP_PREQ_LINES_TMP_N3)
23548 index(qpl QP_LIST_LINES_N16)
23549 index(qppattmp1 QP_NPREQ_LINE_PATRNS_T_N2)
23550 index(qpatrgrp QP_ATTRIBUTE_GROUPS_N1)
23551 index(qppattmp2 QP_NPREQ_LINE_PATRNS_T_N1)
23552 index(qprs qp_pte_source_systems_u2)
23553 l_pat_cache_both */
23554 DISTINCT
23555 qpl.LIST_HEADER_ID,
23556 qpl.LIST_LINE_ID,
23557 qplines.LINE_INDEX,
23558 qpl.pattern_id QPL_MATCHED_PATTRN_ID,
23559 qpatrgrp.pattern_id AG_MATCHED_PATTRN_ID,
23560 p_pricing_phase_id,
23561 qpl.HASH_KEY QPL_MATCHED_HASH_KEY,
23562 qpatrgrp.HASH_KEY AG_MATCHED_HASH_KEY,
23563 G_STAGE_CACHE_LST_HDR_LIN_SRCH STAGE,
23564 G_STATUS_UNCHANGED PRICING_STATUS_CODE,
23565 qpatrgrp.source_system_code,
23566 --decode(bitand(qpl.qualification_ind,2),2,'Y','N') HEADER_QUALS_EXIST_FLAG,
23567 DECODE(qpatrgrp.EQ_FLAG,'N','Y','N') HEADER_QUALS_EXIST_FLAG,
23568 -1 qpl_grpng_num,
23569 qpatrgrp.GROUPING_NO ag_grpng_num,
23570 qpl.EQ_FLAG QPL_EQFLAG,
23571 qpatrgrp.EQ_FLAG ATRGRP_EQFLAG,
23572 qplines.VALIDATED_FLAG,
23573 qpl.MODIFIER_LEVEL_CODE,
23574 qpl.null_other_oprt_count qpl_other_oprt_cnt,
23575 qpatrgrp.other_oprt_count ag_other_oprt_cnt,
23576 qpatrgrp.null_other_oprt_count ag_null_othr_oprt_cnt,
23577 --qpl.other_oprt_count,
23578 --qpl.null_other_oprt_count,
23579 qpatrgrp.LIST_TYPE_CODE,
23580 qpatrgrp.ASK_FOR_FLAG,
23581 qpatrgrp.HEADER_LIMIT_EXISTS,
23582 qpatrgrp.LINE_LIMIT_EXISTS,
23583 NULL CURRENCY_DETAIL_ID,
23584 qpatrgrp.CURRENCY_HEADER_ID,
23585 NULL SELLING_ROUNDING_FACTOR,
23586 qpatrgrp.CURRENCY_CODE BASE_CURRENCY_CODE,
23587 qplines.pricing_effective_date,
23588 qpl.BREAK_UOM_CODE,
23589 qpl.BREAK_UOM_CONTEXT,
23590 qpl.BREAK_UOM_ATTRIBUTE,
23591 QPLINES.CURRENCY_CODE ORDER_CURRENCY,
23592 qpatrgrp.descendents_quals_exist,
23593 QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
23594 FROM qp_npreq_lines_tmp qplines,
23595 qp_npreq_line_patrns_tmp qppattmp1,
23596 qp_list_lines qpl,
23597 qp_secu_attr_groups_v qpatrgrp,
23598 --qp_attribute_groups qpatrgrp,
23599 qp_pte_source_systems qprs,
23600 --qp_price_req_sources_v qprs,
23601 qp_npreq_line_patrns_tmp qppattmp2
23602 WHERE QPLINES.VALIDATED_FLAG = G_NO
23603 AND (qplines.price_flag = G_YES OR
23604 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
23605 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
23606 AND qppattmp1.line_index = qplines.line_index
23607 AND qpl.pricing_phase_id = p_pricing_phase_id
23608 AND qpl.list_header_id = QPLINES.PRICE_LIST_HEADER_ID
23609 AND qpl.pattern_id = qppattmp1.pattern_id
23610 AND qpl.hash_key = qppattmp1.hash_key
23611 AND qpl.pte_code = G_PTE_CODE
23612 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
23613 BETWEEN TRUNC(nvl(qpl.start_date_active, nvl(qplines.pricing_effective_date, sysdate)))
23614 AND TRUNC(nvl(qpl.end_date_active, nvl(qplines.pricing_effective_date, sysdate)))
23615 AND qpatrgrp.list_header_id = qpl.list_header_id
23616 AND qpatrgrp.pricing_phase_id = p_pricing_phase_id
23617 AND qpatrgrp.active_flag = G_YES
23618 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate))
23619 BETWEEN TRUNC(nvl(qpatrgrp.START_DATE_ACTIVE_H,nvl(qplines.pricing_effective_date,sysdate)))
23620 AND TRUNC(nvl(qpatrgrp.END_DATE_ACTIVE_H,nvl(qplines.pricing_effective_date, sysdate)))
23621 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
23622 BETWEEN TRUNC(NVL(qpatrgrp.START_DATE_ACTIVE_Q,nvl(qplines.pricing_effective_date,sysdate)))
23623 AND TRUNC(NVL(qpatrgrp.END_DATE_ACTIVE_Q,nvl(qplines.pricing_effective_date, sysdate)))
23624 --AND qprs.source_system_code = qpatrgrp.source_system_code
23625 --AND qprs.request_type_code = qplines.request_type_code -- check it
23626 AND qprs.APPLICATION_SHORT_NAME = qpatrgrp.source_system_code
23627 AND qprs.pte_code = G_PTE_CODE
23628 AND qppattmp2.line_index = qplines.line_index
23629 AND qppattmp2.pattern_id = qpatrgrp.pattern_id
23630 AND qppattmp2.hash_key = qpatrgrp.hash_key
23631 AND qpatrgrp.CURRENCY_CODE = QPLINES.CURRENCY_CODE
23632 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0)
23633 UNION ALL
23634 SELECT /*+ ORDERED index(qplines QP_PREQ_LINES_TMP_N3)
23635 index(qpl QP_LIST_LINES_N16)
23636 index(qppattmp1 QP_NPREQ_LINE_PATRNS_T_N2)
23637 index(qprs qp_pte_source_systems_u2)
23638 l_pat_cache_both */
23639 DISTINCT
23640 qpl.LIST_HEADER_ID,
23641 qpl.LIST_LINE_ID,
23642 qplines.LINE_INDEX,
23643 qpl.pattern_id QPL_MATCHED_PATTRN_ID,
23644 null, --qpatrgrp.pattern_id AG_MATCHED_PATTRN_ID,
23645 p_pricing_phase_id,
23646 qpl.HASH_KEY QPL_MATCHED_HASH_KEY,
23647 null, --qpatrgrp.HASH_KEY AG_MATCHED_HASH_KEY,
23648 G_STAGE_CACHE_LST_HDR_LIN_SRCH STAGE,
23649 G_STATUS_UNCHANGED PRICING_STATUS_CODE,
23650 qph.source_system_code,
23651 'N' ,-- DECODE(qpatrgrp.EQ_FLAG,'N','Y','N') HEADER_QUALS_EXIST_FLAG,
23652 -1 qpl_grpng_num,
23653 null, --qpatrgrp.GROUPING_NO ag_grpng_num,
23654 qpl.EQ_FLAG QPL_EQFLAG,
23655 null, --qpatrgrp.EQ_FLAG ATRGRP_EQFLAG,
23656 qplines.VALIDATED_FLAG,
23657 qpl.MODIFIER_LEVEL_CODE,
23658 qpl.null_other_oprt_count qpl_other_oprt_cnt,
23659 0, --qpatrgrp.other_oprt_count ag_other_oprt_cnt,
23660 0, --qpatrgrp.null_other_oprt_count ag_null_othr_oprt_cnt,
23661 qph.LIST_TYPE_CODE,
23662 qph.ASK_FOR_FLAG,
23663 qph.LIMIT_EXISTS_FLAG,
23664 qpl.LIMIT_EXISTS_FLAG,
23665 NULL CURRENCY_DETAIL_ID,
23666 qph.CURRENCY_HEADER_ID,
23667 NULL SELLING_ROUNDING_FACTOR,
23668 qph.CURRENCY_CODE BASE_CURRENCY_CODE,
23669 qplines.pricing_effective_date,
23670 qpl.BREAK_UOM_CODE,
23671 qpl.BREAK_UOM_CONTEXT,
23672 qpl.BREAK_UOM_ATTRIBUTE,
23673 QPLINES.CURRENCY_CODE ORDER_CURRENCY,
23674 'N' descendents_quals_exist,
23675 QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
23676 FROM qp_npreq_lines_tmp qplines,
23677 qp_npreq_line_patrns_tmp qppattmp1,
23678 qp_list_lines qpl,
23679 qp_list_headers_b qph,
23680 qp_pte_source_systems qprs
23681 --qp_price_req_sources_v qprs
23682 WHERE QPLINES.VALIDATED_FLAG = G_YES
23683 AND (qplines.price_flag = G_YES OR
23684 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
23685 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
23686 AND qppattmp1.line_index = qplines.line_index
23687 AND qpl.pricing_phase_id = p_pricing_phase_id
23688 AND qpl.list_header_id = QPLINES.PRICE_LIST_HEADER_ID
23689 AND qpl.pattern_id = qppattmp1.pattern_id
23690 AND qpl.hash_key = qppattmp1.hash_key
23691 AND qpl.pte_code = G_PTE_CODE
23692 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
23693 BETWEEN TRUNC(nvl(qpl.start_date_active, nvl(qplines.pricing_effective_date, sysdate)))
23694 AND TRUNC(nvl(qpl.end_date_active, nvl(qplines.pricing_effective_date, sysdate)))
23695 AND qph.list_header_id = qpl.list_header_id
23696 AND qph.active_flag = G_YES
23697 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate))
23698 BETWEEN TRUNC(nvl(qph.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23699 AND TRUNC(nvl(qph.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date, sysdate)))
23700 --AND qprs.source_system_code = qph.source_system_code
23701 --AND qprs.request_type_code = qplines.request_type_code -- check it
23702 AND qprs.APPLICATION_SHORT_NAME = qph.source_system_code
23703 AND qprs.pte_code = G_PTE_CODE
23704 AND qph.CURRENCY_CODE = QPLINES.CURRENCY_CODE
23705 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0);
23706
23707 CURSOR l_pat_cache_both_curr IS
23708
23709 SELECT /*+ ORDERED index(QCDT QP_CURRENCY_DETAILS_N2)
23710 index(qplines QP_PREQ_LINES_TMP_N3)
23711 index(qpl QP_LIST_LINES_N16)
23712 index(qppattmp1 QP_NPREQ_LINE_PATRNS_T_N2)
23713 index(qpatrgrp QP_ATTRIBUTE_GROUPS_N1)
23714 index(qppattmp2 QP_NPREQ_LINE_PATRNS_T_N1)
23715 index(qprs qp_pte_source_systems_u2)
23716 l_pat_cache_both_curr */
23717 DISTINCT
23718 qpl.LIST_HEADER_ID,
23719 qpl.LIST_LINE_ID,
23720 qplines.LINE_INDEX,
23721 qpl.pattern_id QPL_MATCHED_PATTRN_ID,
23722 qpatrgrp.pattern_id AG_MATCHED_PATTRN_ID,
23723 p_pricing_phase_id,
23724 qpl.HASH_KEY QPL_MATCHED_HASH_KEY,
23725 qpatrgrp.HASH_KEY AG_MATCHED_HASH_KEY,
23726 G_STAGE_CACHE_LST_HDR_LIN_SRCH STAGE,
23727 G_STATUS_UNCHANGED PRICING_STATUS_CODE,
23728 qpatrgrp.source_system_code,
23729 --decode(bitand(qpl.qualification_ind,2),2,'Y','N') HEADER_QUALS_EXIST_FLAG,
23730 DECODE(qpatrgrp.EQ_FLAG,'N','Y',DECODE(qpatrgrp.descendents_quals_exist,'Y','Y','N')) HEADER_QUALS_EXIST_FLAG,
23731 -1 qpl_grpng_num,
23732 qpatrgrp.GROUPING_NO ag_grpng_num,
23733 qpl.EQ_FLAG QPL_EQFLAG,
23734 qpatrgrp.EQ_FLAG ATRGRP_EQFLAG,
23735 qplines.VALIDATED_FLAG,
23736 qpl.MODIFIER_LEVEL_CODE,
23737 qpl.null_other_oprt_count qpl_other_oprt_cnt,
23738 qpatrgrp.other_oprt_count ag_other_oprt_cnt,
23739 qpatrgrp.null_other_oprt_count ag_null_othr_oprt_cnt,
23740 qpatrgrp.LIST_TYPE_CODE,
23741 qpatrgrp.ASK_FOR_FLAG,
23742 qpatrgrp.HEADER_LIMIT_EXISTS,
23743 qpatrgrp.LINE_LIMIT_EXISTS,
23744 QCDT.CURRENCY_DETAIL_ID,
23745 QCDT.CURRENCY_HEADER_ID,
23746 QCDT.SELLING_ROUNDING_FACTOR,
23747 qpatrgrp.CURRENCY_CODE BASE_CURRENCY_CODE,
23748 qplines.pricing_effective_date,
23749 qpl.BREAK_UOM_CODE,
23750 qpl.BREAK_UOM_CONTEXT,
23751 qpl.BREAK_UOM_ATTRIBUTE,
23752 QPLINES.CURRENCY_CODE ORDER_CURRENCY,
23753 qpatrgrp.descendents_quals_exist,
23754 QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
23755 FROM qp_npreq_lines_tmp qplines,
23756 qp_npreq_line_patrns_tmp qppattmp1,
23757 qp_list_lines qpl,
23758 qp_secu_attr_groups_v qpatrgrp,
23759 --qp_attribute_groups qpatrgrp,
23760 qp_pte_source_systems qprs,
23761 --qp_price_req_sources_v qprs,
23762 qp_npreq_line_patrns_tmp qppattmp2,
23763 QP_CURRENCY_DETAILS QCDT
23764 WHERE QPLINES.VALIDATED_FLAG = G_NO
23765 AND (qplines.price_flag = G_YES OR
23766 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
23767 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
23768 AND qppattmp1.line_index = qplines.line_index
23769 AND qpl.pricing_phase_id = p_pricing_phase_id
23770 AND qpl.list_header_id = QPLINES.PRICE_LIST_HEADER_ID
23771 AND qpl.pattern_id = qppattmp1.pattern_id
23772 AND qpl.hash_key = qppattmp1.hash_key
23773 AND qpl.pte_code = G_PTE_CODE
23774 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
23775 BETWEEN TRUNC(nvl(qpl.start_date_active, nvl(qplines.pricing_effective_date, sysdate)))
23776 AND TRUNC(nvl(qpl.end_date_active, nvl(qplines.pricing_effective_date, sysdate)))
23777 AND qpatrgrp.list_header_id = qpl.list_header_id
23778 AND qpatrgrp.pricing_phase_id = p_pricing_phase_id
23779 AND qpatrgrp.active_flag = G_YES
23780 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate))
23781 BETWEEN TRUNC(nvl(qpatrgrp.START_DATE_ACTIVE_H,nvl(qplines.pricing_effective_date,sysdate)))
23782 AND TRUNC(nvl(qpatrgrp.END_DATE_ACTIVE_H,nvl(qplines.pricing_effective_date, sysdate)))
23783 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
23784 BETWEEN TRUNC(NVL(qpatrgrp.START_DATE_ACTIVE_Q,nvl(qplines.pricing_effective_date,sysdate)))
23785 AND TRUNC(NVL(qpatrgrp.END_DATE_ACTIVE_Q,nvl(qplines.pricing_effective_date, sysdate)))
23786 --AND qprs.source_system_code = qpatrgrp.source_system_code
23787 --AND qprs.request_type_code = qplines.request_type_code -- check it
23788 AND qprs.APPLICATION_SHORT_NAME = qpatrgrp.source_system_code
23789 AND qprs.pte_code = G_PTE_CODE
23790 AND qppattmp2.line_index = qplines.line_index
23791 AND qppattmp2.pattern_id = qpatrgrp.pattern_id
23792 AND qppattmp2.hash_key = qpatrgrp.hash_key
23793 AND qpatrgrp.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID
23794 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE
23795 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
23796 TRUNC(NVL(QCDT.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23797 AND TRUNC(NVL(QCDT.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23798 AND (
23799 (qcdt.curr_attribute_context is null
23800 and not exists
23801 (select /*+ use_nl(qcdt1) LEADING(qcdt1) index(qcdt1 QP_CURRENCY_DETAILS_N2) */ 'x'
23802 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
23803 where qcdt1.curr_attribute_context IS NOT NULL
23804 and qcdt1.curr_attribute_context = pa_tmp.context
23805 and qcdt1.curr_attribute = pa_tmp.attribute
23806 and qcdt1.curr_attribute_value = pa_tmp.value_from
23807 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE
23808 and qcdt1.to_currency_code = qcdt.to_currency_code
23809 and qcdt1.currency_header_id = qcdt.currency_header_id
23810 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
23811 and pa_tmp.line_index = qplines.line_index
23812 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
23813 TRUNC(NVL(QCDT1.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23814 AND TRUNC(NVL(QCDT1.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23815 )
23816 )
23817 OR
23818 (qcdt.curr_attribute_context is not null
23819 and qcdt.currency_detail_id =
23820 (select qcdt3.currency_detail_id
23821 from qp_currency_details qcdt3
23822 where qcdt3.to_currency_code = qcdt.to_currency_code
23823 and qcdt3.currency_header_id = qcdt.currency_header_id
23824 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
23825 TRUNC(NVL(QCDT3.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23826 AND TRUNC(NVL(QCDT3.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23827 and qcdt3.precedence =
23828 (select /*+ use_nl(qcdt2) LEADING(qcdt2) index(qcdt2 QP_CURRENCY_DETAILS_N2) */
23829 min(qcdt2.precedence)
23830 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
23831 where qcdt2.curr_attribute_context IS NOT NULL
23832 and qcdt2.curr_attribute_context = pa_tmp1.context
23833 and qcdt2.curr_attribute = pa_tmp1.attribute
23834 and qcdt2.curr_attribute_value = pa_tmp1.value_from
23835 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE
23836 and qcdt2.to_currency_code = qcdt.to_currency_code
23837 and qcdt2.currency_header_id = qcdt.currency_header_id
23838 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
23839 and pa_tmp1.line_index = qplines.line_index
23840 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
23841 TRUNC(NVL(QCDT2.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23842 AND TRUNC(NVL(QCDT2.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23843 ))
23844 )
23845 )
23846 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0)
23847 UNION
23848 SELECT /*+ ORDERED index(QCDT QP_CURRENCY_DETAILS_N2)
23849 index(qplines QP_PREQ_LINES_TMP_N3)
23850 index(qpl QP_LIST_LINES_N16)
23851 index(qppattmp1 QP_NPREQ_LINE_PATRNS_T_N2)
23852 index(qprs qp_pte_source_systems_u2)
23853 l_pat_cache_both_curr */
23854 DISTINCT
23855 qpl.LIST_HEADER_ID,
23856 qpl.LIST_LINE_ID,
23857 qplines.LINE_INDEX,
23858 qpl.pattern_id QPL_MATCHED_PATTRN_ID,
23859 null, --qpatrgrp.pattern_id AG_MATCHED_PATTRN_ID,
23860 p_pricing_phase_id,
23861 qpl.HASH_KEY QPL_MATCHED_HASH_KEY,
23862 null, --qpatrgrp.HASH_KEY AG_MATCHED_HASH_KEY,
23863 G_STAGE_CACHE_LST_HDR_LIN_SRCH STAGE,
23864 G_STATUS_UNCHANGED PRICING_STATUS_CODE,
23865 qph.source_system_code,
23866 --decode(bitand(qpl.qualification_ind,2),2,'Y','N') HEADER_QUALS_EXIST_FLAG,
23867 'N' ,-- DECODE(qpatrgrp.EQ_FLAG,'N','Y','N') HEADER_QUALS_EXIST_FLAG,
23868 -1 qpl_grpng_num,
23869 null, --qpatrgrp.GROUPING_NO ag_grpng_num,
23870 qpl.EQ_FLAG QPL_EQFLAG,
23871 null, --qpatrgrp.EQ_FLAG ATRGRP_EQFLAG,
23872 qplines.VALIDATED_FLAG,
23873 qpl.MODIFIER_LEVEL_CODE,
23874 qpl.null_other_oprt_count qpl_other_oprt_cnt,
23875 0, --qpatrgrp.other_oprt_count ag_other_oprt_cnt,
23876 0, --qpatrgrp.null_other_oprt_count ag_null_othr_oprt_cnt,
23877 qph.LIST_TYPE_CODE,
23878 qph.ASK_FOR_FLAG,
23879 qph.LIMIT_EXISTS_FLAG,
23880 qpl.LIMIT_EXISTS_FLAG,
23881 QCDT.CURRENCY_DETAIL_ID,
23882 QCDT.CURRENCY_HEADER_ID,
23883 QCDT.SELLING_ROUNDING_FACTOR,
23884 qph.CURRENCY_CODE BASE_CURRENCY_CODE,
23885 qplines.pricing_effective_date,
23886 qpl.BREAK_UOM_CODE,
23887 qpl.BREAK_UOM_CONTEXT,
23888 qpl.BREAK_UOM_ATTRIBUTE,
23889 QPLINES.CURRENCY_CODE ORDER_CURRENCY,
23890 'N' descendents_quals_exist,
23891 QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
23892 FROM qp_npreq_lines_tmp qplines,
23893 qp_npreq_line_patrns_tmp qppattmp1,
23894 qp_list_lines qpl,
23895 qp_list_headers_b qph,
23896 --qp_price_req_sources_v qprs,
23897 qp_pte_source_systems qprs,
23898 QP_CURRENCY_DETAILS QCDT
23899 WHERE QPLINES.VALIDATED_FLAG = G_YES
23900 AND (qplines.price_flag = G_YES OR
23901 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
23902 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
23903 AND qppattmp1.line_index = qplines.line_index
23904 AND qpl.pricing_phase_id = p_pricing_phase_id
23905 AND qpl.list_header_id = QPLINES.PRICE_LIST_HEADER_ID
23906 AND qpl.pattern_id = qppattmp1.pattern_id
23907 AND qpl.hash_key = qppattmp1.hash_key
23908 AND qpl.pte_code = G_PTE_CODE
23909 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
23910 BETWEEN TRUNC(nvl(qpl.start_date_active, nvl(qplines.pricing_effective_date, sysdate)))
23911 AND TRUNC(nvl(qpl.end_date_active, nvl(qplines.pricing_effective_date, sysdate)))
23912 AND qph.list_header_id = qpl.list_header_id
23913 AND qph.active_flag = G_YES
23914 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate))
23915 BETWEEN TRUNC(nvl(qph.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23916 AND TRUNC(nvl(qph.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date, sysdate)))
23917 --AND qprs.source_system_code = qph.source_system_code
23918 --AND qprs.request_type_code = qplines.request_type_code -- check it
23919 AND qprs.APPLICATION_SHORT_NAME = qph.source_system_code
23920 AND qprs.pte_code = G_PTE_CODE
23921 AND qph.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID
23922 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE
23923 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
23924 TRUNC(NVL(QCDT.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23925 AND TRUNC(NVL(QCDT.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23926 AND (
23927 (qcdt.curr_attribute_context is null
23928 and not exists
23929 (select /*+ use_nl(qcdt1) LEADING(qcdt1) index(qcdt1 QP_CURRENCY_DETAILS_N2) */ 'x'
23930 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
23931 where qcdt1.curr_attribute_context IS NOT NULL
23932 and qcdt1.curr_attribute_context = pa_tmp.context
23933 and qcdt1.curr_attribute = pa_tmp.attribute
23934 and qcdt1.curr_attribute_value = pa_tmp.value_from
23935 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE
23936 and qcdt1.to_currency_code = qcdt.to_currency_code
23937 and qcdt1.currency_header_id = qcdt.currency_header_id
23938 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
23939 and pa_tmp.line_index = qplines.line_index
23940 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
23941 TRUNC(NVL(QCDT1.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23942 AND TRUNC(NVL(QCDT1.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23943 )
23944 )
23945 OR
23946 (qcdt.curr_attribute_context is not null
23947 and qcdt.currency_detail_id =
23948 (select qcdt3.currency_detail_id
23949 from qp_currency_details qcdt3
23950 where qcdt3.to_currency_code = qcdt.to_currency_code
23951 and qcdt3.currency_header_id = qcdt.currency_header_id
23952 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
23953 TRUNC(NVL(QCDT3.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23954 AND TRUNC(NVL(QCDT3.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23955 and qcdt3.precedence =
23956 (select /*+ use_nl(qcdt2) LEADING(qcdt2) index(qcdt2 QP_CURRENCY_DETAILS_N2) */
23957 min(qcdt2.precedence)
23958 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
23959 where qcdt2.curr_attribute_context IS NOT NULL
23960 and qcdt2.curr_attribute_context = pa_tmp1.context
23961 and qcdt2.curr_attribute = pa_tmp1.attribute
23962 and qcdt2.curr_attribute_value = pa_tmp1.value_from
23963 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE
23964 and qcdt2.to_currency_code = qcdt.to_currency_code
23965 and qcdt2.currency_header_id = qcdt.currency_header_id
23966 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
23967 and pa_tmp1.line_index = qplines.line_index
23968 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
23969 TRUNC(NVL(QCDT2.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23970 AND TRUNC(NVL(QCDT2.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
23971 ))
23972 )
23973 )
23974 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0);
23975
23976 l_limit NUMBER := 5000;
23977 p_stage varchar2(300);
23978
23979 TYPE l_number IS TABLE OF NUMBER INDEX BY pls_integer;
23980 l_list_header_id_tbl l_number;
23981 l_list_line_id_tbl l_number;
23982 l_matched_pattrn_id_tbl l_number;
23983 l_ag_matched_pat_id_tbl l_number;
23984 l_line_index_tbl l_number;
23985 l_pricing_phase_id_tbl l_number;
23986 l_grouping_no l_number;
23987 l_ag_grpng_no l_number;
23988 l_other_oprt_count l_number;
23989 l_ag_othr_oprt_cnt l_number;
23990 l_null_other_oprt_count l_number;
23991 l_curr_det_id l_number;
23992 l_curr_hdr_id l_number;
23993 L_SELLNG_ROUND_FTR l_number;
23994
23995 TYPE l_string IS TABLE OF VARCHAR2(2000) INDEX BY pls_integer;
23996 l_matched_hash_key_tbl l_string;
23997 l_ag_mtchd_hash_key_tbl l_string;
23998 l_stage_tbl l_string;
23999 l_pricing_status_code_tbl l_string;
24000 l_ssc l_string;
24001 l_header_quals_exist_flag l_string;
24002 l_eq_flag l_string;
24003 l_ag_eq_flag l_string;
24004 l_validated_flag l_string;
24005 l_modf_lvl_code l_string;
24006 l_list_type_code l_string;
24007 l_ask_for_flag l_string;
24008 l_hdr_lmt_exists l_string;
24009 l_line_lmt_exists l_string;
24010 l_order_curr l_string;
24011 l_base_curr_code l_string;
24012 l_brk_uom_code l_string;
24013 l_brk_uom_ctxt l_string;
24014 l_brk_uom_attr l_string;
24015 l_PRICE_BREAK_TYPE_CODE l_string;
24016 l_descnt_quals_exist l_string;
24017
24018
24019 TYPE l_date IS TABLE OF DATE INDEX BY pls_integer;
24020
24021 l_prcng_effctve_dt l_date;
24022
24023
24024 l_return_status VARCHAR2(240);
24025 L_STATUS_CODE VARCHAR2(30);
24026 L_STATUS_TEXT VARCHAR2(240);
24027 L_LIST_LINE_ID NUMBER;
24028
24029 l_routine VARCHAR2(40) := 'LIST_HEADER_PATTERN_SEARCH';
24030 E_ROUTINE_ERRORS EXCEPTION;
24031 l_search_path NUMBER(1);
24032
24033 l_loop_count NUMBER := 0;
24034 L_DUMMY VARCHAR2(1);
24035
24036 BEGIN
24037
24038 x_status_code := fnd_api.g_ret_sts_success;
24039
24040 qp_debug_util.tstart('LIST_HEADER_PATTERN_SEARCH', 'List Header Search Pattern', false, true);
24041
24042 IF g_debug_engine = fnd_api.g_true THEN
24043 engine_debug('L_LIST_CUR');
24044 END IF;
24045 -- Line Cache Start
24046
24047 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
24048 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24049 engine_debug('cursor L_LIST_CUR_CURRENCY TRUE');
24050 END IF;
24051
24052 qp_debug_util.tstart('PAT_LST_LIN_SRCH_1', 'List Header Search - Cursor L_LIN_CACHE_CURR');
24053
24054 OPEN l_pat_cache_both_curr;
24055 ELSE
24056 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24057 engine_debug('cursor l_sec_list_cur multi-currency FALSE');
24058 END IF;
24059
24060 qp_debug_util.tstart('PAT_LST_LIN_SRCH_1', 'List Header Search - Cursor L_LIN_CACHE');
24061
24062 OPEN l_pat_cache_both;
24063 END IF;
24064
24065 LOOP
24066 l_list_header_id_tbl.DELETE;
24067 l_list_line_id_tbl.DELETE;
24068 l_line_index_tbl.DELETE;
24069 l_matched_pattrn_id_tbl.DELETE;
24070 l_ag_matched_pat_id_tbl.DELETE;
24071 l_pricing_phase_id_tbl.DELETE;
24072 l_matched_hash_key_tbl.DELETE;
24073 l_ag_mtchd_hash_key_tbl.DELETE;
24074 l_stage_tbl.DELETE;
24075 l_pricing_status_code_tbl.DELETE;
24076 l_ssc.DELETE;
24077 l_header_quals_exist_flag.DELETE;
24078 l_grouping_no.DELETE;
24079 l_ag_grpng_no.DELETE;
24080 l_eq_flag.DELETE;
24081 l_ag_eq_flag.DELETE;
24082 l_validated_flag.DELETE;
24083 l_modf_lvl_code.DELETE;
24084 l_other_oprt_count.DELETE;
24085 l_ag_othr_oprt_cnt.DELETE;
24086 l_null_other_oprt_count.DELETE;
24087 l_list_type_code.DELETE;
24088 l_ask_for_flag.DELETE;
24089 l_hdr_lmt_exists.DELETE;
24090 l_line_lmt_exists.DELETE;
24091 l_curr_det_id.DELETE;
24092 l_curr_hdr_id.DELETE;
24093 L_SELLNG_ROUND_FTR.DELETE;
24094 l_base_curr_code.DELETE;
24095 l_prcng_effctve_dt.DELETE;
24096 l_brk_uom_code.DELETE;
24097 l_brk_uom_ctxt.DELETE;
24098 l_brk_uom_attr.DELETE;
24099 l_order_curr.DELETE;
24100 l_descnt_quals_exist.DELETE;
24101 l_PRICE_BREAK_TYPE_CODE.DELETE;
24102
24103
24104 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
24105
24106 FETCH l_pat_cache_both_curr bulk collect
24107 INTO
24108 l_list_header_id_tbl,
24109 l_list_line_id_tbl,
24110 l_line_index_tbl,
24111 l_matched_pattrn_id_tbl,
24112 l_ag_matched_pat_id_tbl,
24113 l_pricing_phase_id_tbl,
24114 l_matched_hash_key_tbl,
24115 l_ag_mtchd_hash_key_tbl,
24116 l_stage_tbl,
24117 l_pricing_status_code_tbl,
24118 l_ssc,
24119 l_header_quals_exist_flag,
24120 l_grouping_no,
24121 l_ag_grpng_no,
24122 l_eq_flag,
24123 l_ag_eq_flag,
24124 l_validated_flag,
24125 l_modf_lvl_code,
24126 l_other_oprt_count,
24127 l_ag_othr_oprt_cnt,
24128 l_null_other_oprt_count,
24129 l_list_type_code,
24130 l_ask_for_flag,
24131 l_hdr_lmt_exists,
24132 l_line_lmt_exists,
24133 l_curr_det_id,
24134 l_curr_hdr_id,
24135 L_SELLNG_ROUND_FTR,
24136 l_base_curr_code,
24137 l_prcng_effctve_dt,
24138 l_brk_uom_code,
24139 l_brk_uom_ctxt,
24140 l_brk_uom_attr,
24141 l_order_curr,
24142 l_descnt_quals_exist,
24143 l_PRICE_BREAK_TYPE_CODE
24144 limit l_limit;
24145 EXIT
24146 WHEN l_list_header_id_tbl.COUNT = 0;
24147 ELSE
24148 FETCH l_pat_cache_both bulk collect
24149 INTO
24150 l_list_header_id_tbl,
24151 l_list_line_id_tbl,
24152 l_line_index_tbl,
24153 l_matched_pattrn_id_tbl,
24154 l_ag_matched_pat_id_tbl,
24155 l_pricing_phase_id_tbl,
24156 l_matched_hash_key_tbl,
24157 l_ag_mtchd_hash_key_tbl,
24158 l_stage_tbl,
24159 l_pricing_status_code_tbl,
24160 l_ssc,
24161 l_header_quals_exist_flag,
24162 l_grouping_no,
24163 l_ag_grpng_no,
24164 l_eq_flag,
24165 l_ag_eq_flag,
24166 l_validated_flag,
24167 l_modf_lvl_code,
24168 l_other_oprt_count,
24169 l_ag_othr_oprt_cnt,
24170 l_null_other_oprt_count,
24171 l_list_type_code,
24172 l_ask_for_flag,
24173 l_hdr_lmt_exists,
24174 l_line_lmt_exists,
24175 l_curr_det_id,
24176 l_curr_hdr_id,
24177 L_SELLNG_ROUND_FTR,
24178 l_base_curr_code,
24179 l_prcng_effctve_dt,
24180 l_brk_uom_code,
24181 l_brk_uom_ctxt,
24182 l_brk_uom_attr,
24183 l_order_curr,
24184 l_descnt_quals_exist,
24185 l_PRICE_BREAK_TYPE_CODE
24186 limit l_limit;
24187
24188 EXIT
24189 WHEN l_list_header_id_tbl.COUNT = 0;
24190 END IF;
24191
24192
24193
24194 engine_debug('L_LINE_CACHE-l_list_header_id_tbl.COUNT-'||l_list_header_id_tbl.COUNT);
24195
24196 forall i IN 1 .. l_list_header_id_tbl.COUNT
24197 INSERT
24198 INTO qp_preq_patrn_qual_tmp(list_header_id,
24199 list_line_id,
24200 line_index,
24201 matched_pattrn_id,
24202 pricing_phase_id,
24203 matched_hash_key,
24204 stage,
24205 pricing_status_code,
24206 source_system_code,
24207 header_quals_exist_flag,
24208 grouping_no,
24209 eq_flag,
24210 validated_flag,
24211 MODIFIER_LEVEL_CODE,
24212 other_oprt_count,
24213 null_other_oprt_count,
24214 LIST_TYPE_CODE,
24215 ASK_FOR_FLAG,
24216 HEADER_LIMIT_EXISTS,
24217 LINE_LIMIT_EXISTS,
24218 BREAK_UOM_CODE,
24219 BREAK_UOM_CONTEXT,
24220 BREAK_UOM_ATTRIBUTE,
24221 ORDER_CURRENCY,
24222 CURRENCY_DETAIL_ID,
24223 CURRENCY_HEADER_ID,
24224 SELLING_ROUNDING_FACTOR,
24225 BASE_CURRENCY_CODE,
24226 pricing_effective_date,
24227 price_break_type_code
24228 )
24229 SELECT DISTINCT l_list_header_id_tbl(i),
24230 l_list_line_id_tbl(i),
24231 l_line_index_tbl(i),
24232 l_matched_pattrn_id_tbl(i),
24233 l_pricing_phase_id_tbl(i),
24234 l_matched_hash_key_tbl(i),
24235 l_stage_tbl(i),
24236 l_pricing_status_code_tbl(i),
24237 l_ssc(i),
24238 l_header_quals_exist_flag(i),
24239 l_grouping_no(i),
24240 l_eq_flag(i),
24241 l_validated_flag(i),
24242 l_modf_lvl_code(i),
24243 l_other_oprt_count(i),
24244 l_other_oprt_count(i),
24245 l_list_type_code(i),
24246 l_ask_for_flag(i),
24247 l_hdr_lmt_exists(i),
24248 l_line_lmt_exists(i),
24249 l_brk_uom_code(i),
24250 l_brk_uom_ctxt(i),
24251 l_brk_uom_attr(i),
24252 l_order_curr(i),
24253 l_curr_det_id(i),
24254 l_curr_hdr_id(i),
24255 L_SELLNG_ROUND_FTR(i),
24256 l_base_curr_code(i),
24257 l_prcng_effctve_dt(i),
24258 l_PRICE_BREAK_TYPE_CODE(i)
24259 FROM dual;
24260
24261
24262 forall i IN 1 .. l_list_header_id_tbl.COUNT
24263 INSERT INTO qp_preq_patrn_qual_tmp(list_header_id,
24264 list_line_id,
24265 line_index,
24266 pricing_phase_id,
24267 stage,
24268 pricing_status_code,
24269 source_system_code,
24270 header_quals_exist_flag,
24271 grouping_no,
24272 eq_flag,
24273 validated_flag,
24274 MODIFIER_LEVEL_CODE,
24275 other_oprt_count,
24276 null_other_oprt_count,
24277 descendents_quals_exist,
24278 matched_pattrn_id, --bug 10216430
24279 matched_hash_key --bug 10216430
24280 )
24281 SELECT DISTINCT l_list_header_id_tbl(i),
24282 -1, -- List line id,
24283 l_line_index_tbl(i),
24284 l_pricing_phase_id_tbl(i),
24285 l_stage_tbl(i),
24286 l_pricing_status_code_tbl(i),
24287 l_ssc(i),
24288 l_header_quals_exist_flag(i), -- Header Quals Exist,
24289 l_ag_grpng_no(i),
24290 l_ag_eq_flag(i),
24291 l_validated_flag(i),
24292 l_modf_lvl_code(i),
24293 l_ag_othr_oprt_cnt(i),
24294 l_null_other_oprt_count(i),
24295 l_descnt_quals_exist(i),
24296 l_ag_matched_pat_id_tbl(i), -- bug 10216430
24297 l_ag_mtchd_hash_key_tbl(i) -- bug 10216430
24298 FROM dual
24299 WHERE l_ag_eq_flag(i) = 'N'
24300 OR l_descnt_quals_exist(i) = 'Y'
24301 OR l_ag_mtchd_hash_key_tbl(i)<>'BLIND'; -- bug 10216430
24302
24303 l_loop_count := l_loop_count + 1;
24304 --exit when l_header_cache_cur%rowcount < l_limit;
24305 END LOOP;
24306
24307
24308 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
24309 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24310 engine_debug('cursor l_sec_list_cur_currency-multi-currency TRUE');
24311 END IF;
24312
24313 CLOSE l_pat_cache_both_curr;
24314
24315 qp_debug_util.tstop('PAT_LST_LIN_SRCH_1');
24316 ELSE
24317 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24318 engine_debug('cursor l_sec_list_cur multi-currency FALSE');
24319 END IF;
24320
24321 CLOSE l_pat_cache_both;
24322
24323 qp_debug_util.tstop('PAT_LST_LIN_SRCH_1');
24324 END IF;
24325
24326 qp_debug_util.tstart('Populate_Temp_Tables_NEQ_BTW_AFT_LIN', 'Populate_Temp_Tables_NEQ_BTW After Line Cache');
24327 Populate_Temp_Tables_NEQ_BTW(
24328 p_pricing_phase_id ,
24329 G_STAGE_CACHE_LST_HDR_LIN_SRCH,
24330 x_status_code ,
24331 x_status_text );
24332 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
24333 RAISE E_ROUTINE_ERRORS;
24334 END IF;
24335
24336
24337 qp_debug_util.tstop('Populate_Temp_Tables_NEQ_BTW_AFT_LIN');
24338 qp_debug_util.tstart('QP_EVALUATE_OTHER_OPERATORS_AFT_LIN', 'QP_EVALUATE_OTHER_OPERATORS After Line Cache');
24339
24340 QP_EVALUATE_OTHER_OPERATORS(
24341 p_pricing_phase_id ,
24342 G_STAGE_CACHE_LST_HDR_LIN_SRCH,
24343 x_status_code ,
24344 x_status_text );
24345
24346 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
24347 RAISE E_ROUTINE_ERRORS;
24348 END IF;
24349
24350 qp_debug_util.tstop('QP_EVALUATE_OTHER_OPERATORS_AFT_LIN');
24351
24352
24353
24354 -- Deleting modifiers line picked up because of TCA
24355
24356 qp_debug_util.tstart('PATRN_LIST_CUR_DEL_LIN_TCA', 'Line deletion for TCA');
24357
24358 UPDATE qp_preq_patrn_qual_tmp a
24359 SET pricing_status_code = G_DELETED_TCA
24360 WHERE pricing_status_code = g_status_unchanged
24361 AND a.descendents_quals_exist = 'Y'
24362 and a.pricing_phase_id = p_pricing_phase_id
24363 and a.stage = G_STAGE_CACHE_LST_HDR_LIN_SRCH
24364 AND EXISTS (
24365 SELECT 1
24366 FROM qp_qualifiers b, qp_npreq_line_attrs_tmp c
24367 WHERE b.list_header_id = a.list_header_id
24368 AND b.list_line_id = a.list_line_id
24369 AND (b.qualifier_grouping_no = a.grouping_no
24370 or
24371 b.qualifier_grouping_no = -1
24372 )
24373 AND b.qualify_hier_descendents_flag = 'N'
24374 AND c.segment_id = b.segment_id
24375 AND c.line_index = a.line_index
24376 AND c.derived_qualifier_flag = 'Y');
24377
24378 qp_debug_util.tstop('PATRN_LIST_CUR_DEL_LIN_TCA');
24379
24380
24381 -- Deleting line if headers is not qualified in not=/Between evaluation
24382 -- header_quals_exist_flag will be Y only if Not=/Bet header level
24383 -- qualifiers are present for that line.
24384 qp_debug_util.tstart('PATRN_LIST_CUR_DEL_HDR', 'Line deletion');
24385
24386 UPDATE qp_preq_patrn_qual_tmp a
24387 SET pricing_status_code = G_DELETED_LINE
24388 WHERE pricing_phase_id = p_pricing_phase_id
24389 AND pricing_status_code = g_status_unchanged
24390 AND list_line_id <> -1
24391 AND nvl(header_quals_exist_flag, 'N') = 'Y'
24392 AND a.stage = G_STAGE_CACHE_LST_HDR_LIN_SRCH
24393 AND NOT EXISTS
24394 (SELECT /*+ index(b QP_PREQ_PATRN_QUAL_T_N2) */ 'x'
24395 FROM qp_preq_patrn_qual_tmp b
24396 WHERE b.list_header_id = a.list_header_id
24397 AND b.line_index = a.line_index
24398 AND b.list_line_id = -1
24399 AND b.pricing_phase_id = a.pricing_phase_id
24400 AND pricing_status_code = g_status_unchanged
24401 AND b.stage = G_STAGE_CACHE_LST_HDR_LIN_SRCH);
24402
24403
24404 qp_debug_util.tstop('PATRN_LIST_CUR_DEL_HDR');
24405
24406 qp_debug_util.tstart('PATRN_LIST_CUR_POPULATE_PAT_TEMP_TABLES', 'Populate_Pat_Temp_Tables');
24407
24408 Populate_Pat_Temp_Tables(p_pricing_phase_id,
24409 G_STAGE_CACHE_LST_HDR_LIN_SRCH,
24410 x_status_code,
24411 x_status_text);
24412
24413
24414 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
24415 RAISE E_ROUTINE_ERRORS;
24416 END IF;
24417
24418 qp_debug_util.tstop('PATRN_LIST_CUR_POPULATE_PAT_TEMP_TABLES');
24419
24420 IF g_debug_engine = fnd_api.g_true THEN
24421 engine_debug('x_status_code-' || x_status_code);
24422 engine_debug('x_status_text-' || x_status_text);
24423 END IF;
24424
24425 IF l_loop_count <> 0 THEN
24426
24427 QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty
24428 (p_line_index => NULL,
24429 p_order_uom_code => NULL,
24430 p_order_qty => NULL,
24431 p_pricing_phase_id => G_PRICE_LIST_PHASE_ID,
24432 p_call_big_search => FALSE,
24433 x_list_line_id => l_list_line_id,
24434 x_return_status => l_return_status,
24435 x_return_status_txt => l_status_text);
24436
24437 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
24438 RAISE E_ROUTINE_ERRORS;
24439 END IF;
24440
24441 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24442 engine_debug('Incomp Return Status Non Validated QP_PREQ_GRP: ' || l_return_status);
24443
24444 END IF;
24445
24446 -- 3773652
24447 -- re-run Evaluate_Between after UOM conversion to check PLL really qualifies
24448 begin
24449 select 'x' into l_dummy
24450 from qp_npreq_lines_tmp
24451 where LINE_UOM_CODE <> nvl(PRICED_UOM_CODE, LINE_UOM_CODE)
24452 and (PRICE_FLAG = G_YES
24453 or
24454 PRICE_FLAG = G_PHASE and p_freeze_override_flag = G_YES)
24455 and rownum = 1;
24456
24457 Evaluate_Between(p_pricing_phase_id,NULL,NULL,l_return_status,l_status_text);
24458 exception
24459 when no_data_found then
24460 null;
24461 end;
24462
24463
24464 Update_Request_Line_Status(p_control_rec,'SUCCESS',p_freeze_override_flag,l_return_status,l_status_text); --[julin/4708044]
24465
24466 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
24467 RAISE E_ROUTINE_ERRORS;
24468 END IF;
24469
24470 --bug# 2091386 not reflecting the right price on change on UOM on the order line . Since
24471 --QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty determines the pricing_qty
24472 --which is needed later in Get_Eligible_Price_Break we need to call Get_Eligible_Price_Break
24473 --after QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty.
24474 --By doing this we will get the right price in the PRICE event on change of UOM on the order line
24475 --for price based on price break
24476
24477 Get_Eligible_Price_Break(p_pricing_phase_id,NULL,l_return_status,l_status_text);
24478 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
24479 RAISE E_ROUTINE_ERRORS;
24480 END IF;
24481 ELSE
24482
24483 -- Update the request line status for lines which got valid price list
24484 Update_Request_Line_Status(p_control_rec,'FAILURE',p_freeze_override_flag,x_status_code,x_status_text); --[juiln/4708044]
24485 IF(x_status_code = FND_API.G_RET_STS_ERROR) THEN
24486 RAISE E_ROUTINE_ERRORS;
24487 END IF;
24488 END IF;
24489
24490 qp_debug_util.tstop('LIST_HEADER_PATTERN_SEARCH');
24491
24492 EXCEPTION
24493 WHEN E_ROUTINE_ERRORS THEN
24494
24495 qp_debug_util.tstop('LIST_HEADER_PATTERN_SEARCH');
24496
24497 x_status_code := FND_API.G_RET_STS_ERROR;
24498 x_status_text := 'Expected Error in ' || l_routine || sqlerrm;
24499
24500 IF g_debug_engine = fnd_api.g_true THEN
24501 engine_debug(x_status_text);
24502 END IF;
24503
24504 IF G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
24505
24506 IF l_pat_cache_both_curr%ISOPEN THEN
24507 CLOSE l_pat_cache_both_curr;
24508 END if;
24509
24510 ELSE
24511
24512 IF l_pat_cache_both%ISOPEN THEN
24513 CLOSE l_pat_cache_both_curr;
24514 END if;
24515
24516 END IF;
24517
24518 WHEN OTHERS THEN
24519 qp_debug_util.tstop('LIST_HEADER_PATTERN_SEARCH');
24520
24521 IF G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
24522
24523 IF l_pat_cache_both_curr%ISOPEN THEN
24524 CLOSE l_pat_cache_both_curr;
24525 END if;
24526
24527 ELSE
24528
24529 IF l_pat_cache_both%ISOPEN THEN
24530 CLOSE l_pat_cache_both_curr;
24531 END if;
24532
24533 END IF;
24534
24535 IF g_debug_engine = fnd_api.g_true THEN
24536 engine_debug(l_routine || ' ' || sqlerrm);
24537 END IF;
24538
24539 x_status_code := fnd_api.g_ret_sts_error;
24540 x_status_text := 'Error in ' || l_routine || sqlerrm;
24541
24542 END LIST_HEADER_PATTERN_SEARCH;
24543
24544 --skattama
24545
24546 /*+--------------------------------------------------------
24547 | PROCEDURE QUALIFIER_GROUPING
24548 +--------------------------------------------------------
24549 */
24550 PROCEDURE Perform_Qualifier_Grouping(p_line_index_based_flag VARCHAR2,
24551 p_pricing_phase_id NUMBER,
24552 x_status_code OUT NOCOPY VARCHAR2,
24553 x_status_text OUT NOCOPY VARCHAR2) AS
24554
24555 /*
24556 INDX,QP_PREQ_GRP.perform_qualifier_grouping.header_level_qual_attrs_cur,QP_PREQ_QUAL_TMP_N1,LIST_LINE_ID,1
24557 INDX,QP_PREQ_GRP.perform_qualifier_grouping.header_level_qual_attrs_cur,QP_PREQ_QUAL_TMP_N1,PRICING_STATUS_CODE,2
24558 */
24559 CURSOR header_level_qual_attrs_cur IS
24560 SELECT a.LIST_HEADER_ID,
24561 a.QUALIFIER_GROUPING_NO,
24562 a.QUALIFIER_GROUP_CNT,
24563 a.UNIQUE_KEY,
24564 COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --bug 8359587
24565 --COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --[julin/3527596,4274099]
24566 1 --7038849
24567 FROM QP_PREQ_QUAL_TMP a
24568 WHERE a.LIST_LINE_ID = -1
24569 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
24570 AND a.PRICING_PHASE_ID = p_pricing_phase_id
24571 AND a.QUALIFIER_GROUPING_NO = -1 --7038849
24572 GROUP BY a.LIST_HEADER_ID, a.QUALIFIER_GROUPING_NO,a.QUALIFIER_GROUP_CNT,a.UNIQUE_KEY
24573 UNION ALL -- 7038849
24574 SELECT a.LIST_HEADER_ID,
24575 a.QUALIFIER_GROUPING_NO,
24576 a.QUALIFIER_GROUP_CNT,
24577 a.UNIQUE_KEY,
24578 COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --bug 8359587
24579 -- COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --[julin/3527596,4274099]
24580 2 --7038849
24581 FROM QP_PREQ_QUAL_TMP a
24582 WHERE a.LIST_LINE_ID = -1
24583 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
24584 AND a.PRICING_PHASE_ID = p_pricing_phase_id
24585 AND a.QUALIFIER_GROUPING_NO <> -1 --7038849
24586 GROUP BY a.LIST_HEADER_ID, a.QUALIFIER_GROUPING_NO,a.QUALIFIER_GROUP_CNT,a.UNIQUE_KEY
24587 ORDER BY 1,6; --7038849
24588
24589 /*
24590 INDX,QP_PREQ_GRP.perform_qualifier_grouping.hdr_lvl_qual_attrs_req_line,QP_PREQ_QUAL_TMP_N1,LIST_LINE_ID,1
24591 INDX,QP_PREQ_GRP.perform_qualifier_grouping.hdr_lvl_qual_attrs_req_line,QP_PREQ_QUAL_TMP_N1,PRICING_STATUS_CODE,2
24592 INDX,QP_PREQ_GRP.perform_qualifier_grouping.hdr_lvl_qual_attrs_req_line,QP_PREQ_QUAL_TMP_N1,LINE_INDEX,3
24593 */
24594 CURSOR hdr_lvl_qual_attrs_req_line IS
24595 SELECT a.LINE_INDEX,
24596 a.LIST_HEADER_ID,
24597 a.QUALIFIER_GROUPING_NO,
24598 a.QUALIFIER_GROUP_CNT,
24599 a.UNIQUE_KEY,
24600 COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --bug 8359587
24601 --COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --[julin/3527596,4274099]
24602 1 -- 7038849
24603 FROM QP_PREQ_QUAL_TMP a
24604 WHERE a.LIST_LINE_ID = -1
24605 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
24606 AND a.PRICING_PHASE_ID = p_pricing_phase_id
24607 --AND a.LINE_INDEX > 0
24608 AND a.QUALIFIER_GROUPING_NO = -1 --7038849
24609 GROUP BY a.LINE_INDEX , a.LIST_HEADER_ID, a.QUALIFIER_GROUPING_NO,a.QUALIFIER_GROUP_CNT,a.UNIQUE_KEY
24610 UNION ALL --7038849
24611 SELECT a.LINE_INDEX,
24612 a.LIST_HEADER_ID,
24613 a.QUALIFIER_GROUPING_NO,
24614 a.QUALIFIER_GROUP_CNT,
24615 a.UNIQUE_KEY,
24616 COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --bug 8359587
24617 --COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --[julin/3527596,4274099]
24618 2 -- 7038849
24619 FROM QP_PREQ_QUAL_TMP a
24620 WHERE a.LIST_LINE_ID = -1
24621 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
24622 AND a.PRICING_PHASE_ID = p_pricing_phase_id
24623 --AND a.LINE_INDEX > 0
24624 AND a.QUALIFIER_GROUPING_NO <> -1 --7038849
24625 GROUP BY a.LINE_INDEX , a.LIST_HEADER_ID, a.QUALIFIER_GROUPING_NO,a.QUALIFIER_GROUP_CNT,a.UNIQUE_KEY
24626 ORDER BY 1,2,7; --7038849
24627
24628 /*
24629 INDX,QP_PREQ_GRP.perform_qualifier_grouping.line_level_qual_attrs_cur,QP_PREQ_QUAL_TMP_N5,PRICING_STATUS_CODE,1
24630 INDX,QP_PREQ_GRP.perform_qualifier_grouping.line_level_qual_attrs_cur,QP_PREQ_QUAL_TMP_N5,LIST_LINE_ID,4
24631 */
24632 CURSOR line_level_qual_attrs_cur IS
24633 SELECT a.LIST_HEADER_ID,
24634 a.LIST_LINE_ID,
24635 a.QUALIFIER_GROUPING_NO,
24636 a.QUALIFIER_GROUP_CNT,
24637 a.HEADER_QUALS_EXIST_FLAG,
24638 a.UNIQUE_KEY,
24639 COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --bug 8359587
24640 --COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --[julin/3527596,4274099]
24641 1 --7038849
24642 FROM QP_PREQ_QUAL_TMP a
24643 WHERE a.LIST_LINE_ID > 0
24644 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
24645 AND a.PRICING_PHASE_ID = p_pricing_phase_id
24646 AND a.QUALIFIER_GROUPING_NO = -1 --7038849
24647 GROUP BY a.LIST_HEADER_ID , a.LIST_LINE_ID,a.QUALIFIER_GROUPING_NO,a.QUALIFIER_GROUP_CNT,a.HEADER_QUALS_EXIST_FLAG,
24648 a.UNIQUE_KEY
24649 UNION ALL -- 7038849
24650 SELECT a.LIST_HEADER_ID,
24651 a.LIST_LINE_ID,
24652 a.QUALIFIER_GROUPING_NO,
24653 a.QUALIFIER_GROUP_CNT,
24654 a.HEADER_QUALS_EXIST_FLAG,
24655 a.UNIQUE_KEY,
24656 COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --bug 8359587
24657 --COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --[julin/3527596,4274099]
24658 2 --7038849
24659 FROM QP_PREQ_QUAL_TMP a
24660 WHERE a.LIST_LINE_ID > 0
24661 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
24662 AND a.PRICING_PHASE_ID = p_pricing_phase_id
24663 AND a.QUALIFIER_GROUPING_NO <> -1 --7038849
24664 GROUP BY a.LIST_HEADER_ID , a.LIST_LINE_ID,a.QUALIFIER_GROUPING_NO,a.QUALIFIER_GROUP_CNT,a.HEADER_QUALS_EXIST_FLAG,
24665 a.UNIQUE_KEY
24666 ORDER BY 1,2,8; --7038849
24667
24668 /*
24669 INDX,QP_PREQ_GRP.perform_qualifier_grouping.line_lvl_qual_attrs_req_line,QP_PREQ_QUAL_TMP_N1,LIST_LINE_ID,1
24670 INDX,QP_PREQ_GRP.perform_qualifier_grouping.line_lvl_qual_attrs_req_line,QP_PREQ_QUAL_TMP_N1,PRICING_STATUS_CODE,2
24671 INDX,QP_PREQ_GRP.perform_qualifier_grouping.line_lvl_qual_attrs_req_line,QP_PREQ_QUAL_TMP_N1,LINE_INDEX,3
24672 */
24673 CURSOR line_lvl_qual_attrs_req_line IS
24674 SELECT /*+ INDEX (a QP_PREQ_QUAL_TMP_N1) */ a.LINE_INDEX,
24675 a.LIST_HEADER_ID,
24676 a.LIST_LINE_ID,
24677 a.QUALIFIER_GROUPING_NO,
24678 a.QUALIFIER_GROUP_CNT,
24679 a.HEADER_QUALS_EXIST_FLAG,
24680 a.UNIQUE_KEY,
24681 COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --bug 8359587
24682 --COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --[julin/3527596,4274099]
24683 1
24684 FROM QP_PREQ_QUAL_TMP a
24685 WHERE LIST_LINE_ID > 0
24686 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
24687 --AND a.LINE_INDEX > 0
24688 AND a.PRICING_PHASE_ID = p_pricing_phase_id
24689 AND a.QUALIFIER_GROUPING_NO = -1 --7038849
24690 GROUP BY a.LINE_INDEX, a.LIST_HEADER_ID , a.LIST_LINE_ID,a.QUALIFIER_GROUPING_NO,
24691 a.QUALIFIER_GROUP_CNT,a.HEADER_QUALS_EXIST_FLAG,a.UNIQUE_KEY
24692 UNION ALL --7038849
24693 SELECT /*+ INDEX (a QP_PREQ_QUAL_TMP_N1) */ a.LINE_INDEX,
24694 a.LIST_HEADER_ID,
24695 a.LIST_LINE_ID,
24696 a.QUALIFIER_GROUPING_NO,
24697 a.QUALIFIER_GROUP_CNT,
24698 a.HEADER_QUALS_EXIST_FLAG,
24699 a.UNIQUE_KEY,
24700 COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --bug 8359587
24701 --COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP, --[julin/3527596,4274099]
24702 2
24703 FROM QP_PREQ_QUAL_TMP a
24704 WHERE LIST_LINE_ID > 0
24705 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
24706 --AND a.LINE_INDEX > 0
24707 AND a.PRICING_PHASE_ID = p_pricing_phase_id
24708 AND a.QUALIFIER_GROUPING_NO <> -1 --7038849
24709 GROUP BY a.LINE_INDEX, a.LIST_HEADER_ID , a.LIST_LINE_ID,a.QUALIFIER_GROUPING_NO,
24710 a.QUALIFIER_GROUP_CNT,a.HEADER_QUALS_EXIST_FLAG,a.UNIQUE_KEY
24711 ORDER BY 1,2,3,9; --7038849
24712
24713 /*
24714 INDX,QP_PREQ_GRP.perform_qualifier_grouping.check_hdr_quals_cur,QP_PREQ_QUAL_TMP_N1,LIST_LINE_ID,1
24715 INDX,QP_PREQ_GRP.perform_qualifier_grouping.check_hdr_quals_cur,QP_PREQ_QUAL_TMP_N1,PRICING_STATUS_CODE,2
24716 */
24717 CURSOR check_hdr_quals_cur(p_list_header_id NUMBER) IS
24718 SELECT LIST_HEADER_ID
24719 FROM QP_PREQ_QUAL_TMP
24720 WHERE LIST_HEADER_ID = p_list_header_id
24721 AND LIST_LINE_ID = -1
24722 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
24723 AND PRICING_PHASE_ID = p_pricing_phase_id
24724 AND ROWNUM = 1;
24725
24726 /*
24727 INDX,QP_PREQ_GRP.perform_qualifier_grouping.check_hdr_quals_cur_req_line,QP_PREQ_QUAL_TMP_N1,LIST_LINE_ID,1
24728 INDX,QP_PREQ_GRP.perform_qualifier_grouping.check_hdr_quals_cur_req_line,QP_PREQ_QUAL_TMP_N1,PRICING_STATUS_CODE,2
24729 INDX,QP_PREQ_GRP.perform_qualifier_grouping.check_hdr_quals_cur_req_line,QP_PREQ_QUAL_TMP_N1,LINE_INDEX,3
24730 */
24731 CURSOR check_hdr_quals_cur_req_line(p_list_header_id NUMBER,
24732 p_line_index NUMBER) IS
24733 SELECT LIST_HEADER_ID
24734 FROM QP_PREQ_QUAL_TMP
24735 WHERE LIST_HEADER_ID = p_list_header_id
24736 AND LINE_INDEX = p_line_index
24737 AND LIST_LINE_ID = -1
24738 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
24739 AND PRICING_PHASE_ID = p_pricing_phase_id
24740 AND ROWNUM = 1;
24741
24742
24743 /*
24744 INDX,QP_PREQ_GRP.perform_qualifier_grouping.chk_other_hdr_quals_exist_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
24745 INDX,QP_PREQ_GRP.perform_qualifier_grouping.chk_other_hdr_quals_exist_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
24746 INDX,QP_PREQ_GRP.perform_qualifier_grouping.chk_other_hdr_quals_exist_cur,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
24747 */
24748 CURSOR chk_other_hdr_quals_exist_cur(p_list_header_id NUMBER) IS
24749 SELECT LIST_HEADER_ID
24750 FROM QP_QUALIFIERS
24751 WHERE LIST_HEADER_ID = p_list_header_id
24752 AND LIST_LINE_ID = -1
24753 AND QUALIFIER_GROUPING_NO <> -1;
24754
24755 /*
24756 INDX,QP_PREQ_GRP.perform_qualifier_grouping.chk_other_line_quals_exist_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
24757 INDX,QP_PREQ_GRP.perform_qualifier_grouping.chk_other_line_quals_exist_cur,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
24758 */
24759 CURSOR chk_other_line_quals_exist_cur(p_list_line_id NUMBER) IS
24760 SELECT LIST_LINE_ID
24761 FROM QP_QUALIFIERS
24762 WHERE LIST_LINE_ID = p_list_line_id
24763 AND QUALIFIER_GROUPING_NO <> -1;
24764
24765
24766 l_hdr_del_tbl VARCHAR_TYPE;
24767 l_hdr_success_tbl NUMBER_TYPE;
24768 l_line_del_tbl VARCHAR_TYPE;
24769 l_line_success_tbl NUMBER_TYPE;
24770 l_hdr_del_ind BINARY_INTEGER:=0;
24771 l_hdr_success_ind BINARY_INTEGER:=0;
24772 l_line_del_ind BINARY_INTEGER:=0;
24773 l_line_success_ind BINARY_INTEGER:=0;
24774 v_list_header_id NUMBER;
24775 v_header_null_grp_count NUMBER := 0;
24776 v_line_null_grp_count NUMBER := 0;
24777 l_line_level_quals_satisfied BOOLEAN := FALSE;
24778 l_other_list_header_id NUMBER;
24779 l_other_list_line_id NUMBER;
24780 l_list_header_id NUMBER := -9999;
24781 l_list_line_id NUMBER := -9999;
24782 l_line_index NUMBER := -9999;
24783 l_other_grp_exists_flag BOOLEAN := FALSE;
24784 l_other_grp_satisfied_flag BOOLEAN := FALSE;
24785 l_null_unique_key VARCHAR2(2000);
24786
24787 BEGIN
24788
24789 x_status_code := FND_API.G_RET_STS_SUCCESS;
24790
24791 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24792 engine_debug('Qualifier Grouping begin');
24793
24794 END IF;
24795 IF (p_line_index_based_flag = G_NO) THEN
24796
24797 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24798 engine_debug('#QG1 Phase');
24799
24800 END IF;
24801 FOR i IN header_level_qual_attrs_cur LOOP
24802
24803 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24804 engine_debug('Header Qualifier Grouping No: ' || i.QUALIFIER_GROUPING_NO);
24805 engine_debug('Passed Hdr Quals : '||i.no_of_qualifiers_in_grp||'Hdr id : '||i.list_header_id);
24806 engine_debug('Header Null Group Count : ' || v_header_null_grp_count);
24807
24808 END IF;
24809 IF (i.LIST_HEADER_ID <> l_list_header_id ) THEN
24810
24811 v_header_null_grp_count := 0;
24812 -- This code is to delete the -1 group if none of the other groups are satisfied on change of list header
24813 IF (l_other_grp_exists_flag = TRUE) THEN
24814 IF (l_other_grp_satisfied_flag = FALSE) THEN
24815 IF (l_null_unique_key IS NOT NULL) THEN
24816 l_hdr_del_ind := l_hdr_del_ind + 1;
24817 l_hdr_del_tbl(l_hdr_del_ind) := l_null_unique_key;
24818 END IF;
24819 END IF;
24820 END IF;
24821 l_other_grp_exists_flag := FALSE;
24822 l_other_grp_satisfied_flag := FALSE;
24823 END IF;
24824
24825 IF (i.QUALIFIER_GROUPING_NO = -1) THEN
24826 l_null_unique_key := i.unique_key;
24827 IF (i.NO_OF_QUALIFIERS_IN_GRP < i.QUALIFIER_GROUP_CNT) THEN -- 4043768/4261138
24828 l_other_list_header_id:=NULL;
24829 OPEN chk_other_hdr_quals_exist_cur(i.list_header_id);
24830 FETCH chk_other_hdr_quals_exist_cur INTO l_other_list_header_id;
24831 CLOSE chk_other_hdr_quals_exist_cur;
24832
24833 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24834 engine_debug('Other Groups Exist in this Hdr id : '||l_other_list_header_id);
24835
24836 END IF;
24837 -- If there are no other groups , then it is a failure on pure null group,else it is not
24838 IF (l_other_list_header_id IS NULL) THEN
24839 l_other_grp_exists_flag := FALSE;
24840 l_null_unique_key := NULL;
24841 l_hdr_del_ind := l_hdr_del_ind + 1;
24842 l_hdr_del_tbl(l_hdr_del_ind) := i.unique_key;
24843 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24844 engine_debug('Deleted Hdr id : '||i.list_header_id||' Unique Key : ' || i.unique_key);
24845 END IF;
24846 ELSE
24847 --l_null_unique_key := i.unique_key;
24848 l_other_grp_exists_flag := TRUE;
24849 END IF;
24850 /* Added for 3259922 */
24851 ELSE
24852 l_other_list_header_id:=NULL;
24853 OPEN chk_other_hdr_quals_exist_cur(i.list_header_id);
24854 FETCH chk_other_hdr_quals_exist_cur INTO l_other_list_header_id;
24855 CLOSE chk_other_hdr_quals_exist_cur;
24856
24857 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24858 engine_debug('Other Groups Exist in this Hdr id : '||l_other_list_header_id);
24859 END IF;
24860
24861 IF (l_other_list_header_id IS NOT NULL) THEN
24862 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24863 engine_debug('Other groups exist');
24864 END IF; -- 4033618
24865 l_other_grp_exists_flag := TRUE;
24866 END IF; -- end 3259922
24867 END IF;
24868
24869 v_header_null_grp_count := i.NO_OF_QUALIFIERS_IN_GRP;
24870
24871 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24872 engine_debug('Header Null Group Count : ' || v_header_null_grp_count);
24873
24874 END IF;
24875 ELSE
24876
24877 -- 4043768/4261138, changed <> to < condition
24878 IF (i.NO_OF_QUALIFIERS_IN_GRP + v_header_null_grp_count < i.QUALIFIER_GROUP_CNT) THEN
24879 --l_other_grp_satisfied_flag := FALSE; do not make it false if it is already TRUE because some grp is satisfied
24880 l_hdr_del_ind := l_hdr_del_ind + 1;
24881 l_hdr_del_tbl(l_hdr_del_ind) := i.unique_key;
24882 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24883 engine_debug('Deleted Hdr id : '||i.list_header_id|| ' Unique Key : ' || i.unique_key);
24884 END IF;
24885 ELSE
24886 l_other_grp_satisfied_flag := TRUE;
24887 END IF;
24888
24889 END IF;
24890
24891 l_list_header_id := i.LIST_HEADER_ID;
24892
24893 END LOOP;
24894
24895 -- This code is to delete the -1 group if none of the other groups are satisfied for the last list header
24896 IF (l_other_grp_exists_flag = TRUE) THEN
24897 IF (l_other_grp_satisfied_flag = FALSE) THEN
24898 IF (l_null_unique_key IS NOT NULL) THEN
24899 l_hdr_del_ind := l_hdr_del_ind + 1;
24900 l_hdr_del_tbl(l_hdr_del_ind) := l_null_unique_key;
24901 END IF;
24902 END IF;
24903 END IF;
24904
24905 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24906 engine_debug('#QG2');
24907
24908 END IF;
24909 IF (l_hdr_del_tbl.count > 0) THEN
24910 FOR m in 1 .. l_hdr_del_tbl.count LOOP
24911 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24912 engine_debug('Deleted Headers : ' || l_hdr_del_tbl(m));
24913 END IF;
24914 END LOOP;
24915 END IF;
24916
24917 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24918 engine_debug('#QG3');
24919
24920 END IF;
24921 IF (l_hdr_del_tbl.count > 0) THEN
24922 FORALL i in l_hdr_del_tbl.FIRST..l_hdr_del_tbl.LAST
24923 /*
24924 INDX,QP_PREQ_GRP.perform_qualifier_grouping.upd1,QP_PREQ_QUAL_TMP_N3,PRICING_STATUS_CODE,1
24925 INDX,QP_PREQ_GRP.perform_qualifier_grouping.upd1,QP_PREQ_QUAL_TMP_N3,UNIQUE_KEY,2
24926 */
24927 UPDATE QP_PREQ_QUAL_TMP --upd1
24928 SET PRICING_STATUS_CODE = G_DELETED_GRP
24929 WHERE UNIQUE_KEY = l_hdr_del_tbl(i)
24930 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
24931 AND PRICING_PHASE_ID = p_pricing_phase_id;
24932 END IF;
24933
24934 l_hdr_del_tbl.delete;
24935 l_hdr_del_ind:=0;
24936
24937 l_other_grp_exists_flag := FALSE;
24938 l_other_grp_satisfied_flag := FALSE;
24939
24940 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24941 engine_debug('#QG4');
24942
24943 END IF;
24944 FOR j IN line_level_qual_attrs_cur LOOP
24945
24946 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24947 engine_debug('Line Qualifier Grouping No: ' || j.QUALIFIER_GROUPING_NO || ' List Header Id : ' || j.list_header_id);
24948 engine_debug('Passed Line Quals : ' || j.no_of_qualifiers_in_grp || 'List Line id : ' || j.list_line_id);
24949 engine_debug('Line Null Group Count : ' || v_line_null_grp_count);
24950
24951 END IF;
24952 IF (j.LIST_HEADER_ID <> l_list_header_id or j.LIST_LINE_ID <> l_list_line_id) THEN
24953
24954 v_line_null_grp_count := 0;
24955
24956 -- This code is to delete the -1 group if none of the other groups are satisfied on change of list header or list line
24957 IF (l_other_grp_exists_flag = TRUE) THEN
24958 IF (l_other_grp_satisfied_flag = FALSE) THEN
24959 IF (l_null_unique_key IS NOT NULL) THEN
24960 l_line_del_ind := l_line_del_ind + 1;
24961 l_line_del_tbl(l_line_del_ind) := l_null_unique_key;
24962 END IF;
24963 END IF;
24964 END IF;
24965 l_other_grp_exists_flag := FALSE;
24966 l_other_grp_satisfied_flag := FALSE;
24967 END IF;
24968
24969 IF (j.QUALIFIER_GROUPING_NO = -1) THEN
24970 l_null_unique_key := j.unique_key;
24971 IF (j.NO_OF_QUALIFIERS_IN_GRP < j.QUALIFIER_GROUP_CNT) THEN -- 4043768/4261138
24972
24973 OPEN chk_other_line_quals_exist_cur(j.list_line_id);
24974 FETCH chk_other_line_quals_exist_cur INTO l_other_list_line_id;
24975 CLOSE chk_other_line_quals_exist_cur;
24976
24977 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24978 engine_debug('Other Groups Exist in this Line id : '||l_other_list_line_id);
24979
24980 END IF;
24981 -- If there are no other groups , then it is a failure on pure null group,else it is not
24982 IF (l_other_list_line_id IS NULL) THEN
24983 l_other_grp_exists_flag := FALSE;
24984 l_null_unique_key := NULL;
24985 l_line_del_ind := l_line_del_ind + 1;
24986 l_line_del_tbl(l_line_del_ind) := j.unique_key;
24987 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24988 engine_debug('Deleted Line id : '||j.list_line_id|| ' Unique Key : ' || j.unique_key);
24989 END IF;
24990 ELSE
24991 l_other_grp_exists_flag := TRUE;
24992 END IF;
24993 ELSE
24994 l_line_level_quals_satisfied := TRUE;
24995 --l_null_unique_key := j.unique_key;
24996 END IF;
24997
24998 v_line_null_grp_count := j.NO_OF_QUALIFIERS_IN_GRP;
24999 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25000 engine_debug('Line Null Group Count : ' || v_line_null_grp_count);
25001
25002 END IF;
25003 ELSE
25004
25005 -- 4043768/4261138, changed <> to < condition
25006 IF (j.NO_OF_QUALIFIERS_IN_GRP + v_line_null_grp_count < j.QUALIFIER_GROUP_CNT) THEN
25007 --l_other_grp_satisfied_flag := FALSE;
25008 l_line_del_ind := l_line_del_ind + 1;
25009 l_line_del_tbl(l_line_del_ind) := j.unique_key;
25010 --l_line_del_tbl(l_line_del_ind) := j.list_line_id;
25011 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25012 engine_debug('Deleted Line id : '||j.list_line_id|| ' Unique Key : ' || j.unique_key);
25013 END IF;
25014 ELSE
25015 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25016 engine_debug('Line Quals for : ' || j.list_header_id || ' ' || j.list_line_id );
25017 END IF;
25018 l_line_level_quals_satisfied := TRUE;
25019 l_other_grp_satisfied_flag := TRUE;
25020 END IF;
25021
25022 END IF;
25023
25024 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25025 engine_debug('#QG5');
25026
25027 END IF;
25028 -- Check if header level quals are satisfied.If there is a hdr lvl qualifier in setup and it is not selected
25029 IF (l_line_level_quals_satisfied = TRUE) THEN
25030
25031 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25032 engine_debug('Line Level Quals Satisfied , but checking whether header level qual satisfied');
25033
25034 END IF;
25035 IF (j.HEADER_QUALS_EXIST_FLAG = G_YES) THEN
25036 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25037 engine_debug('Header level quals exist' );
25038 END IF;
25039 v_list_header_id := NULL;
25040
25041 OPEN check_hdr_quals_cur(j.LIST_HEADER_ID);
25042 FETCH check_hdr_quals_cur INTO v_list_header_id;
25043 CLOSE check_hdr_quals_cur;
25044
25045 IF (v_list_header_id IS NULL) THEN
25046 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25047 engine_debug('Line Level Quals Not Satisfied , as Header Id is : ' || nvl(v_list_header_id,-99999));
25048 END IF;
25049 l_line_del_ind := l_line_del_ind + 1;
25050 l_line_del_tbl(l_line_del_ind) := j.unique_key;
25051 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25052 engine_debug('Deleted Line id : '||j.list_line_id|| ' Unique Key : ' || j.unique_key);
25053 END IF;
25054 ELSE
25055 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25056 engine_debug('Line Level Quals Satisfied , Header Id : ' || nvl(v_list_header_id,-99999));
25057 END IF;
25058 END IF;
25059 ELSE
25060 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25061 engine_debug('Header level quals do not exist' );
25062 END IF;
25063 END IF;
25064
25065 END IF;
25066
25067 l_line_level_quals_satisfied := FALSE;
25068 l_list_header_id := j.LIST_HEADER_ID;
25069 l_list_line_id := j.LIST_LINE_ID;
25070
25071 END LOOP;
25072
25073 -- This code is to delete the -1 group if none of the other groups are satisfied on last list header or list line
25074 IF (l_other_grp_exists_flag = TRUE) THEN
25075 IF (l_other_grp_satisfied_flag = FALSE) THEN
25076 IF (l_null_unique_key IS NOT NULL) THEN
25077 l_line_del_ind := l_line_del_ind + 1;
25078 l_line_del_tbl(l_line_del_ind) := l_null_unique_key;
25079 END IF;
25080 END IF;
25081 END IF;
25082
25083 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25084 engine_debug('#QG6');
25085
25086 END IF;
25087 IF (l_line_del_tbl.count > 0 ) THEN
25088 FOR m in 1 .. l_line_del_tbl.count LOOP
25089 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25090 engine_debug('Deleted Lines : ' || l_line_del_tbl(m));
25091 END IF;
25092 END LOOP;
25093 END IF;
25094
25095 IF (l_line_del_tbl.count > 0 ) THEN
25096 FORALL i in l_line_del_tbl.FIRST..l_line_del_tbl.LAST
25097 /*
25098 INDX,QP_PREQ_GRP.perform_qualifier_grouping.perform_qualifier_grouping_upd2,QP_PREQ_QUAL_TMP_N3,PRICING_STATUS_CODE,1
25099 INDX,QP_PREQ_GRP.perform_qualifier_grouping.perform_qualifier_grouping_upd2,QP_PREQ_QUAL_TMP_N3,UNIQUE_KEY,2
25100 */
25101 UPDATE QP_PREQ_QUAL_TMP --upd2
25102 SET PRICING_STATUS_CODE = G_DELETED_GRP
25103 WHERE UNIQUE_KEY = l_line_del_tbl(i)
25104 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
25105 AND PRICING_PHASE_ID = p_pricing_phase_id;
25106 END IF;
25107
25108 l_line_del_tbl.delete;
25109 l_line_del_ind:=0;
25110
25111 ELSIF (p_line_index_based_flag = G_YES) THEN
25112
25113 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25114 engine_debug('#QG1');
25115
25116 END IF;
25117 FOR i IN hdr_lvl_qual_attrs_req_line LOOP
25118
25119 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25120 engine_debug('Header Qualifier Grouping No: ' || i.QUALIFIER_GROUPING_NO);
25121 engine_debug('Passed Hdr Quals : '||i.no_of_qualifiers_in_grp||'Hdr id : '||i.list_header_id||' Line Indx: '||i.line_index);
25122 engine_debug('Header Null Group Count : ' || v_header_null_grp_count);
25123
25124 END IF;
25125
25126 --[julin/4227338,4261116] IF (i.LIST_HEADER_ID <> l_list_header_id or i.LINE_INDEX <> l_line_index) THEN
25127 IF (i.LIST_HEADER_ID <> l_list_header_id or nvl(i.LINE_INDEX, -88888) <> nvl(l_line_index,-88888)) THEN
25128
25129 v_header_null_grp_count := 0;
25130
25131 -- This code is to delete the -1 group if none of the other groups are satisfied on change of list header or line index
25132 IF (l_other_grp_exists_flag = TRUE) THEN
25133 IF (l_other_grp_satisfied_flag = FALSE) THEN
25134 IF (l_null_unique_key IS NOT NULL) THEN
25135 l_hdr_del_ind := l_hdr_del_ind + 1;
25136 l_hdr_del_tbl(l_hdr_del_ind) := l_null_unique_key;
25137 END IF;
25138 END IF;
25139 END IF;
25140 l_other_grp_exists_flag := FALSE;
25141 l_other_grp_satisfied_flag := FALSE;
25142 END IF;
25143
25144 IF (i.QUALIFIER_GROUPING_NO = -1) THEN
25145 l_null_unique_key := i.unique_key; --added for bug number 3273669
25146 IF (i.NO_OF_QUALIFIERS_IN_GRP < i.QUALIFIER_GROUP_CNT) THEN -- 4043768/4261138
25147 l_other_list_header_id:=NULL;
25148 OPEN chk_other_hdr_quals_exist_cur(i.list_header_id);
25149 FETCH chk_other_hdr_quals_exist_cur INTO l_other_list_header_id;
25150 CLOSE chk_other_hdr_quals_exist_cur;
25151
25152 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25153 engine_debug('Other Groups Exist in this Hdr id : '||l_other_list_header_id);
25154
25155 END IF;
25156 -- If there are no other groups , then it is a failure on pure null group,else it is not
25157 IF (l_other_list_header_id IS NULL) THEN
25158 l_other_grp_exists_flag := FALSE;
25159 l_null_unique_key := NULL;
25160 l_hdr_del_ind := l_hdr_del_ind + 1;
25161 l_hdr_del_tbl(l_hdr_del_ind) := i.unique_key;
25162 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25163 engine_debug('Deleted Hdr id : '||i.list_header_id||' Line Indx: '||i.line_index || ' Unique Key : ' || i.unique_key);
25164 END IF;
25165 ELSE
25166 l_null_unique_key := i.unique_key;
25167 l_other_grp_exists_flag := TRUE;
25168 END IF;
25169 /* Added for 3273669 */
25170 ELSE
25171 l_other_list_header_id:=NULL;
25172 OPEN chk_other_hdr_quals_exist_cur(i.list_header_id);
25173 FETCH chk_other_hdr_quals_exist_cur INTO l_other_list_header_id;
25174 CLOSE chk_other_hdr_quals_exist_cur;
25175
25176 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25177 engine_debug('Other Groups Exist in this Hdr id : '||l_other_list_header_id);
25178 END IF;
25179
25180 IF (l_other_list_header_id IS NOT NULL) THEN
25181 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25182 engine_debug('Other groups exist');
25183 END IF; -- 4033618
25184 l_other_grp_exists_flag := TRUE;
25185 END IF; -- end 3273669
25186
25187 END IF;
25188
25189 v_header_null_grp_count := i.NO_OF_QUALIFIERS_IN_GRP;
25190
25191 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25192 engine_debug('Header Null Group Count : ' || v_header_null_grp_count);
25193
25194 END IF;
25195 ELSE
25196 -- 4043768/4261138, changed <> to < condition
25197 IF (i.NO_OF_QUALIFIERS_IN_GRP + v_header_null_grp_count < i.QUALIFIER_GROUP_CNT) THEN
25198 --l_other_grp_satisfied_flag := FALSE;
25199 l_hdr_del_ind := l_hdr_del_ind + 1;
25200 l_hdr_del_tbl(l_hdr_del_ind) := i.unique_key;
25201 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25202 engine_debug('Deleted Hdr id : '||i.list_header_id||' Line Indx: '||i.line_index || ' Unique Key : ' || i.unique_key);
25203 END IF;
25204 ELSE
25205 l_other_grp_satisfied_flag := TRUE;
25206 END IF;
25207
25208 END IF;
25209
25210 l_list_header_id := i.LIST_HEADER_ID;
25211 l_line_index := i.LINE_INDEX;
25212
25213 END LOOP;
25214
25215 -- This code is to delete the -1 group if none of the other groups are satisfied on last list header or line index
25216 IF (l_other_grp_exists_flag = TRUE) THEN
25217 IF (l_other_grp_satisfied_flag = FALSE) THEN
25218 IF (l_null_unique_key IS NOT NULL) THEN
25219 l_hdr_del_ind := l_hdr_del_ind + 1;
25220 l_hdr_del_tbl(l_hdr_del_ind) := l_null_unique_key;
25221 END IF;
25222 END IF;
25223 END IF;
25224
25225 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25226 engine_debug('#QG2');
25227
25228 END IF;
25229 IF (l_hdr_del_tbl.count > 0) THEN
25230 FOR m in 1 .. l_hdr_del_tbl.count LOOP
25231 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25232 engine_debug('Deleted Headers : ' || l_hdr_del_tbl(m));
25233 END IF;
25234 END LOOP;
25235 END IF;
25236
25237 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25238 engine_debug('#QG3');
25239
25240 END IF;
25241 IF (l_hdr_del_tbl.count > 0) THEN
25242 FORALL i in l_hdr_del_tbl.FIRST..l_hdr_del_tbl.LAST
25243 /*
25244 INDX,QP_PREQ_GRP.perform_qualifier_grouping.perform_qualifier_grouping_upd3,QP_PREQ_QUAL_TMP_N3,PRICING_STATUS_CODE,1
25245 INDX,QP_PREQ_GRP.perform_qualifier_grouping.perform_qualifier_grouping_upd3,QP_PREQ_QUAL_TMP_N3,UNIQUE_KEY,2
25246 */
25247 UPDATE QP_PREQ_QUAL_TMP --upd3
25248 SET PRICING_STATUS_CODE = G_DELETED_GRP
25249 WHERE UNIQUE_KEY = l_hdr_del_tbl(i)
25250 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
25251 AND PRICING_PHASE_ID = p_pricing_phase_id;
25252 END IF;
25253
25254 l_hdr_del_tbl.delete;
25255 l_hdr_del_ind:=0;
25256
25257 l_other_grp_exists_flag := FALSE;
25258 l_other_grp_satisfied_flag := FALSE;
25259
25260 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25261 engine_debug('#QG4');
25262
25263 END IF;
25264 FOR j IN line_lvl_qual_attrs_req_line LOOP
25265
25266 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25267 engine_debug('Line Qualifier Grouping No: ' || j.QUALIFIER_GROUPING_NO || ' List Header Id : ' || j.list_header_id);
25268 engine_debug('Passed Line Quals : ' || j.no_of_qualifiers_in_grp || 'List Line id : ' || j.list_line_id);
25269 engine_debug('Line Null Group Count : ' || v_line_null_grp_count);
25270
25271 END IF;
25272 IF (j.LIST_HEADER_ID <> l_list_header_id or j.LINE_INDEX <> l_line_index or j.LIST_LINE_ID <> l_list_line_id) THEN
25273
25274 v_line_null_grp_count := 0;
25275
25276 -- This code is to delete the -1 group if none of the other groups are satisfied on change of list header or list line or line index
25277 IF (l_other_grp_exists_flag = TRUE) THEN
25278 IF (l_other_grp_satisfied_flag = FALSE) THEN
25279 IF (l_null_unique_key IS NOT NULL) THEN
25280 l_line_del_ind := l_line_del_ind + 1;
25281 l_line_del_tbl(l_line_del_ind) := l_null_unique_key;
25282 END IF;
25283 END IF;
25284 END IF;
25285 l_other_grp_exists_flag := FALSE;
25286 l_other_grp_satisfied_flag := FALSE;
25287 END IF;
25288
25289 IF (j.QUALIFIER_GROUPING_NO = -1) THEN
25290 l_null_unique_key := j.unique_key; -- 6913520
25291 IF (j.NO_OF_QUALIFIERS_IN_GRP < j.QUALIFIER_GROUP_CNT) THEN -- 4043768/4261138
25292 l_other_list_line_id:=null; -- 6913520
25293
25294 OPEN chk_other_line_quals_exist_cur(j.list_line_id);
25295 FETCH chk_other_line_quals_exist_cur INTO l_other_list_line_id;
25296 CLOSE chk_other_line_quals_exist_cur;
25297
25298 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25299 engine_debug('Other Groups Exist in this Line id : '||l_other_list_line_id);
25300
25301 END IF;
25302 -- If there are no other groups , then it is a failure on pure null group,else it is not
25303 IF (l_other_list_line_id IS NULL) THEN
25304 l_other_grp_exists_flag := FALSE;
25305 l_null_unique_key := NULL;
25306 l_line_del_ind := l_line_del_ind + 1;
25307 l_line_del_tbl(l_line_del_ind) := j.unique_key;
25308 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25309 engine_debug('Deleted Line id : '||j.list_line_id||' Line Indx: '||j.line_index || ' Unique Key : ' || j.unique_key);
25310 END IF;
25311 ELSE
25312 l_other_grp_exists_flag := TRUE;
25313 END IF;
25314 ELSE
25315 l_line_level_quals_satisfied := TRUE;
25316 l_null_unique_key := j.unique_key;
25317 END IF;
25318
25319 v_line_null_grp_count := j.NO_OF_QUALIFIERS_IN_GRP;
25320 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25321 engine_debug('Line Null Group Count : ' || v_line_null_grp_count);
25322
25323 END IF;
25324 ELSE
25325 -- 4043768/4261138, changed <> to < condition
25326 IF (j.NO_OF_QUALIFIERS_IN_GRP + v_line_null_grp_count < j.QUALIFIER_GROUP_CNT) THEN
25327 --l_other_grp_satisfied_flag := FALSE;
25328 l_line_del_ind := l_line_del_ind + 1;
25329 l_line_del_tbl(l_line_del_ind) := j.unique_key;
25330 --l_line_del_tbl(l_line_del_ind) := j.list_line_id;
25331 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25332 engine_debug('Deleted Line id : '||j.list_line_id||' Line Indx: '||j.line_index || ' Unique Key : ' || j.unique_key);
25333 END IF;
25334 ELSE
25335 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25336 engine_debug('Line Quals for : ' || j.list_header_id || ' ' || j.list_line_id );
25337 END IF;
25338 l_line_level_quals_satisfied := TRUE;
25339 l_other_grp_satisfied_flag := TRUE;
25340 END IF;
25341
25342 END IF;
25343
25344 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25345 engine_debug('#QG5');
25346
25347 END IF;
25348 -- Check if header level quals are satisfied.If there is a hdr lvl qualifier in setup and it is not selected
25349 IF (l_line_level_quals_satisfied = TRUE) THEN
25350
25351 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25352 engine_debug('Line Level Quals Satisfied , but checking whether header level qual satisfied');
25353
25354 END IF;
25355 IF (j.HEADER_QUALS_EXIST_FLAG = G_YES) THEN
25356 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25357 engine_debug('Header level quals exist' );
25358 END IF;
25359 v_list_header_id := NULL;
25360
25361 OPEN check_hdr_quals_cur_req_line(j.LIST_HEADER_ID,j.LINE_INDEX);
25362 FETCH check_hdr_quals_cur_req_line INTO v_list_header_id;
25363 CLOSE check_hdr_quals_cur_req_line;
25364
25365 IF (v_list_header_id IS NULL) THEN
25366 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25367 engine_debug('Line Level Quals Not Satisfied , as Header Id is : ' || nvl(v_list_header_id,-99999));
25368 END IF;
25369 l_line_del_ind := l_line_del_ind + 1;
25370 l_line_del_tbl(l_line_del_ind) := j.unique_key;
25371 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25372 engine_debug('Deleted Line id : '||j.list_line_id||' Line Indx: '||j.line_index || ' Unique Key : ' || j.unique_key);
25373 END IF;
25374 ELSE
25375 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25376 engine_debug('Line Level Quals Satisfied , Header Id : ' || nvl(v_list_header_id,-99999));
25377 END IF;
25378 END IF;
25379
25380 ELSE
25381 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25382 engine_debug('Header level quals do not exist' );
25383 END IF;
25384 END IF;
25385
25386 END IF;
25387
25388 l_line_level_quals_satisfied := FALSE;
25389 l_list_header_id := j.LIST_HEADER_ID;
25390 l_line_index := j.LINE_INDEX;
25391 l_list_line_id := j.LIST_LINE_ID;
25392
25393 END LOOP;
25394
25395 -- This code is to delete the -1 group if none of the other groups are satisfied on last list header or list line or line index
25396
25397 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25398 engine_debug ('#1000');
25399 END IF;
25400 IF (l_other_grp_exists_flag = TRUE) THEN
25401 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25402 engine_debug ('#1001');
25403 END IF;
25404 IF (l_other_grp_satisfied_flag = FALSE) THEN
25405 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25406 engine_debug ('#1002');
25407 END IF;
25408 IF (l_null_unique_key IS NOT NULL) THEN
25409 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25410 engine_debug ('#1003');
25411 engine_debug ('Null Unique Key : ' || l_null_unique_key);
25412 END IF;
25413 l_line_del_ind := l_line_del_ind + 1;
25414 l_line_del_tbl(l_line_del_ind) := l_null_unique_key;
25415 END IF;
25416 END IF;
25417 END IF;
25418
25419
25420 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25421 engine_debug('#QG6');
25422
25423 END IF;
25424 IF (l_line_del_tbl.count > 0 ) THEN
25425 FOR m in 1 .. l_line_del_tbl.count LOOP
25426 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25427 engine_debug('Deleted Lines : ' || l_line_del_tbl(m));
25428 END IF;
25429 END LOOP;
25430 END IF;
25431
25432 IF (l_line_del_tbl.count > 0 ) THEN
25433 FORALL i in l_line_del_tbl.FIRST..l_line_del_tbl.LAST
25434 /*
25435 INDX,QP_PREQ_GRP.perform_qualifier_grouping.perform_qualifier_grouping_upd4,QP_PREQ_QUAL_TMP_N3,PRICING_STATUS_CODE,1
25436 INDX,QP_PREQ_GRP.perform_qualifier_grouping.perform_qualifier_grouping_upd4,QP_PREQ_QUAL_TMP_N3,UNIQUE_KEY,2
25437 */
25438 UPDATE QP_PREQ_QUAL_TMP --upd4
25439 SET PRICING_STATUS_CODE = G_DELETED_GRP
25440 WHERE UNIQUE_KEY = l_line_del_tbl(i)
25441 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
25442 AND PRICING_PHASE_ID = p_pricing_phase_id;
25443 END IF;
25444
25445 l_line_del_tbl.delete;
25446 l_line_del_ind:=0;
25447
25448 END IF;
25449
25450 EXCEPTION
25451 WHEN OTHERS THEN
25452 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25453 engine_debug(SQLERRM);
25454 END IF;
25455 x_status_code:= FND_API.G_RET_STS_ERROR;
25456 x_status_text:= 'In perform qualifier grouping '||SQLERRM;
25457 END Perform_Qualifier_Grouping;
25458
25459 /*+----------------------------------------------------------
25460 |PROCEDURE SELECT_MODIFIERS
25461 +----------------------------------------------------------
25462 */
25463 PROCEDURE SELECT_MODIFIERS(p_pricing_phase_id IN NUMBER,
25464 p_freeze_override_flag IN VARCHAR2,
25465 x_status_code OUT NOCOPY VARCHAR2,
25466 x_status_text OUT NOCOPY VARCHAR2)
25467 AS
25468 /*
25469 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,QP_PREQ_QUAL_TMP_N5,PRICING_STATUS_CODE,1
25470 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,QP_PREQ_QUAL_TMP_N5,SEARCH_IND,2
25471
25472 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,QP_PRICING_ATTRIBUTES_N7,LIST_HEADER_ID,1
25473 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,QP_PRICING_ATTRIBUTES_N7,QUALIFICATION_IND,2
25474 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,QP_PRICING_ATTRIBUTES_N7,PRICING_PHASE_ID,3
25475 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,QP_PRICING_ATTRIBUTES_N7,LIST_LINE_ID,4
25476
25477 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
25478 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
25479 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
25480 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
25481 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
25482 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
25483
25484 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
25485
25486 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
25487 */
25488
25489 CURSOR l_prod_qual_cur (p_pricing_phase_id NUMBER, p_list_header_id NUMBER, p_list_line_id NUMBER, p_line_index NUMBER) IS
25490 -- Product and Qualifier Only. No pricing
25491 select /*+ ORDERED USE_NL(QPPROD QPLATPR QPL ) index(QPPROD QP_PRICING_ATTRIBUTES_N7) index(qplatpr qp_preq_line_attrs_tmp_n2) l_prod_qual_cur_mod */
25492 qpl.list_header_id,
25493 qpl.list_line_id,
25494 qpl.list_line_type_code,
25495 qplatpr.line_index,
25496 qplatpr.validated_flag,
25497 qplatpr.applied_flag,
25498 qplatpr.attribute_level PRODUCT_ATTRIBUTE_LEVEL,
25499 qplatpr.attribute_type PRODUCT_ATTRIBUTE_TYPE,
25500 qplatpr.context PRODUCT_ATTRIBUTE_CONTEXT,
25501 qplatpr.attribute PRODUCT_ATTRIBUTE,
25502 qplatpr.value_from PRODUCT_ATTR_VALUE,
25503 qpprod.product_attr_value PRODUCT_SETUP_VALUE,
25504 qplatpr.pricing_attr_flag PRODUCT_PRICING_ATTR_FLAG,
25505 qpprod.product_uom_code PRODUCT_UOM_CODE,
25506 qpprod.excluder_flag,
25507 qpl.automatic_flag,
25508 qpl.modifier_level_code,
25509 qpl.primary_uom_flag,
25510 qpl.arithmetic_operator operand_calculation_code,
25511 qpl.operand operand_value,
25512 qpl.net_amount_flag, --IT net_amount 2720717
25513 qpl.pricing_group_sequence,
25514 qpl.pricing_phase_id,
25515 qpl.price_break_type_code,
25516 qpl.incompatibility_grp_code,
25517 qpl.price_by_formula_id,
25518 qpl.product_precedence,
25519 qpl.override_flag,
25520 qpl.benefit_qty,
25521 qpl.benefit_uom_code,
25522 qpl.service_duration, -- service project
25523 qpl.service_period, -- service project
25524 qpl.list_line_no,
25525 qpl.accrual_flag,
25526 qpl.accrual_conversion_rate,
25527 qpl.estim_accrual_rate,
25528 qpq.ask_for_flag,
25529 qpq.created_from_list_type,
25530 qpq.header_limit_exists,
25531 qpl.limit_exists_flag line_limit_exists,
25532 decode(p_list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE, --HQ is header level qualifier
25533 qpl.charge_type_code,
25534 qpl.charge_subtype_code,
25535 qpl.accum_context, -- accum range break
25536 qpl.accum_attribute, -- accum range break
25537 qpl.accum_attr_run_src_flag -- accum range break
25538 from
25539 (select /*+ index (qpqq QP_PREQ_QUAL_TMP_N5) */
25540 distinct line_index, list_header_id, list_line_id, ask_for_flag,created_from_list_type,header_limit_exists
25541 from qp_preq_qual_tmp qpqq
25542 where pricing_status_code = G_STATUS_UNCHANGED
25543 and pricing_phase_id = p_pricing_phase_id
25544 and search_ind = 1
25545 and list_line_id > 0 ) qpq,
25546 qp_pricing_attributes qpprod,
25547 qp_npreq_line_attrs_tmp qplatpr,
25548 qp_list_lines qpl,
25549 qp_npreq_lines_tmp qplines
25550 where
25551 qpprod.list_header_id = qpq.list_header_id
25552 and qpprod.list_line_id = qpq.list_line_id
25553 and qpl.list_line_id = qpprod.list_line_id
25554 and (qpl.modifier_level_code = qplines.line_type_code
25555 OR
25556 (qpl.modifier_level_code = G_LINE_GROUP and
25557 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
25558 and TRUNC(qplines.pricing_effective_date) BETWEEN
25559 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date))
25560 and nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
25561 and qplines.priced_uom_code = nvl(qpprod.product_uom_code,qplines.priced_uom_code)
25562 and qpprod.pricing_phase_id = p_pricing_phase_id
25563 and qpprod.QUALIFICATION_IND in (QP_PREQ_GRP.G_YES_PROD_LINE_QUAL_IND,
25564 QP_PREQ_GRP.G_YES_PROD_HDR_LINE_QUAL_IND)
25565 and qpprod.product_attribute_context = qplatpr.context
25566 and qpprod.product_attribute = qplatpr.attribute
25567 and qpprod.product_attr_value = qplatpr.value_from
25568 and qpprod.excluder_flag = G_NO
25569 and qplines.line_index = qplatpr.line_index
25570 and qplatpr.line_index = qpq.line_index
25571 --and qpq.pricing_status_code = G_STATUS_UNCHANGED
25572 --and qpq.search_ind = 1
25573 and qplatpr.attribute_type='PRODUCT'
25574 and qplatpr.pricing_status_code=G_STATUS_UNCHANGED
25575 -- price book
25576 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
25577 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
25578 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
25579 or
25580 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
25581 union all
25582 select /*+ ORDERED USE_NL(QPLATPR QPPROD QPL) index(QPPROD QP_PRICING_ATTRIBUTES_N5) index(qplatpr qp_preq_line_attrs_tmp_n1) l_prod_qual_cur_mod */
25583 qpl.list_header_id,
25584 qpl.list_line_id,
25585 qpl.list_line_type_code,
25586 qplatpr.line_index,
25587 qplatpr.validated_flag,
25588 qplatpr.applied_flag,
25589 qplatpr.attribute_level PRODUCT_ATTRIBUTE_LEVEL,
25590 qplatpr.attribute_type PRODUCT_ATTRIBUTE_TYPE,
25591 qplatpr.context PRODUCT_ATTRIBUTE_CONTEXT,
25592 qplatpr.attribute PRODUCT_ATTRIBUTE,
25593 qplatpr.value_from PRODUCT_ATTR_VALUE,
25594 qpprod.product_attr_value PRODUCT_SETUP_VALUE,
25595 qplatpr.pricing_attr_flag PRODUCT_PRICING_ATTR_FLAG,
25596 qpprod.product_uom_code PRODUCT_UOM_CODE,
25597 qpprod.excluder_flag,
25598 qpl.automatic_flag,
25599 qpl.modifier_level_code,
25600 qpl.primary_uom_flag,
25601 qpl.arithmetic_operator operand_calculation_code,
25602 qpl.operand operand_value,
25603 qpl.net_amount_flag, --IT net_amount 2720717
25604 qpl.pricing_group_sequence,
25605 qpl.pricing_phase_id,
25606 qpl.price_break_type_code,
25607 qpl.incompatibility_grp_code,
25608 qpl.price_by_formula_id,
25609 qpl.product_precedence,
25610 qpl.override_flag,
25611 qpl.benefit_qty,
25612 qpl.benefit_uom_code,
25613 qpl.service_duration, -- service project
25614 qpl.service_period, -- service project
25615 qpl.list_line_no,
25616 qpl.accrual_flag,
25617 qpl.accrual_conversion_rate,
25618 qpl.estim_accrual_rate,
25619 qpq.ask_for_flag,
25620 qpq.created_from_list_type,
25621 qpq.header_limit_exists,
25622 qpl.limit_exists_flag line_limit_exists,
25623 decode(p_list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE, --HQ is header level qualifier
25624 qpl.charge_type_code,
25625 qpl.charge_subtype_code,
25626 qpl.accum_context, -- accum range break
25627 qpl.accum_attribute, -- accum range break
25628 qpl.accum_attr_run_src_flag -- accum range break
25629 from
25630 (select /*+ index (qpqq QP_PREQ_QUAL_TMP_N5) */
25631 distinct line_index, list_header_id, list_line_id, ask_for_flag,created_from_list_type,header_limit_exists
25632 from qp_preq_qual_tmp qpqq
25633 where pricing_status_code = G_STATUS_UNCHANGED
25634 and pricing_phase_id = p_pricing_phase_id
25635 and search_ind = 1
25636 and list_line_id < 0 ) qpq,
25637 qp_npreq_line_attrs_tmp qplatpr,
25638 qp_pricing_attributes qpprod,
25639 qp_list_lines qpl,
25640 qp_npreq_lines_tmp qplines
25641 where
25642 qpprod.list_header_id = qpq.list_header_id
25643 and qpl.list_line_id = qpprod.list_line_id
25644 and (qpl.modifier_level_code = qplines.line_type_code
25645 OR
25646 (qpl.modifier_level_code = G_LINE_GROUP and
25647 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
25648 and TRUNC(qplines.pricing_effective_date) BETWEEN
25649 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date))
25650 and nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
25651 and qplines.priced_uom_code = nvl(qpprod.product_uom_code,qplines.priced_uom_code)
25652 and qpprod.pricing_phase_id = p_pricing_phase_id
25653 and qpprod.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
25654 and qpprod.product_attribute_context = qplatpr.context
25655 and qpprod.product_attribute = qplatpr.attribute
25656 and qpprod.product_attr_value = qplatpr.value_from
25657 and qpprod.excluder_flag = G_NO
25658 and qplines.line_index = qplatpr.line_index
25659 and qplatpr.line_index = qpq.line_index
25660 and qplatpr.attribute_type='PRODUCT'
25661 and qplatpr.pricing_status_code=G_STATUS_UNCHANGED
25662 --and qpq.pricing_status_code=G_STATUS_UNCHANGED
25663 --and qpq.search_ind = 1
25664 -- price book
25665 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
25666 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
25667 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
25668 or
25669 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
25670 order by 4,2;
25671
25672 /*
25673 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
25674 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
25675 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
25676 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
25677 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
25678 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,EXCLUDER_FLAG,6
25679 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,LIST_HEADER_ID,7
25680 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,LIST_LINE_ID,8
25681
25682 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PREQ_QUAL_TMP_N5,PRICING_STATUS_CODE,1
25683 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PREQ_QUAL_TMP_N5,SEARCH_IND,2
25684 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PREQ_QUAL_TMP_N5,LIST_HEADER_ID,3
25685 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PREQ_QUAL_TMP_N5,LIST_LINE_ID,4
25686 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PREQ_QUAL_TMP_N5,LINE_INDEX,5
25687
25688 -- Used for qplatpr and qplatpc
25689 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
25690 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
25691 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
25692 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
25693 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
25694 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
25695
25696 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_LIST_LINES_PK,LIST_LINE_ID,1
25697
25698 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_lines_tmp_U1,LINE_INDEX,1
25699 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_lines_tmp_U1,LINE_TYPE_CODE,2
25700
25701 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_PREQ_QUAL_TMP_N5,PRICING_STATUS_CODE,1
25702 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_PREQ_QUAL_TMP_N5,SEARCH_IND,2
25703 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_PREQ_QUAL_TMP_N5,LINE_INDEX,5
25704
25705 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_PRICING_ATTRIBUTES_N7,LIST_HEADER_ID,1
25706 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_PRICING_ATTRIBUTES_N7,QUALIFICATION_IND,2
25707 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_PRICING_ATTRIBUTES_N7,PRICING_PHASE_ID,3
25708 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_PRICING_ATTRIBUTES_N7,LIST_LINE_ID,4
25709
25710 -- Used for qplatpr and qplatpc
25711 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
25712 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
25713 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
25714 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
25715 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
25716 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
25717
25718 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_LIST_LINES_PK,LIST_LINE_ID,1
25719
25720 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,qp_npreq_lines_tmp_U1,LINE_INDEX,1
25721 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,qp_npreq_lines_tmp_U1,LINE_TYPE_CODE,2
25722 */
25723 CURSOR l_prod_qual_pric_cur(p_pricing_phase_id NUMBER, p_list_header_id NUMBER, p_list_line_id NUMBER,
25724 p_line_index NUMBER) IS
25725 --Product+Qualifiers+Pricing
25726 select /*+ ORDERED USE_NL(QPPROD QPLATPR QPLATPC QPL ) index(QPPROD QP_PRICING_ATTRIBUTES_N7) index(qplatpr qp_preq_line_attrs_tmp_N2) index(qplatpc qp_preq_line_attrs_tmp_N2) l_prod_qual_pric_cur_mod */
25727 qpl.list_header_id,
25728 qpl.list_line_id,
25729 qpl.list_line_type_code,
25730 qplatpr.line_index,
25731 qplatpr.validated_flag,
25732 qplatpr.applied_flag,
25733 --for product attrs
25734 qplatpr.attribute_level PRODUCT_ATTRIBUTE_LEVEL,
25735 qplatpr.attribute_type PRODUCT_ATTRIBUTE_TYPE,
25736 qplatpr.context PRODUCT_ATTRIBUTE_CONTEXT,
25737 qplatpr.attribute PRODUCT_ATTRIBUTE,
25738 qplatpr.value_from PRODUCT_ATTR_VALUE,
25739 qpprod.product_attr_value PRODUCT_SETUP_VALUE,
25740 qplatpr.pricing_attr_flag PRODUCT_PRICING_ATTR_FLAG,
25741 qpprod.product_uom_code PRODUCT_UOM_CODE,
25742 qpprod.excluder_flag,
25743 --for pricing attrs
25744 qplatpc.attribute_level PRICING_ATTRIBUTE_LEVEL,
25745 qplatpc.attribute_type PRICING_ATTRIBUTE_TYPE,
25746 qplatpc.context PRICING_ATTRIBUTE_CONTEXT,
25747 qplatpc.attribute PRICING_ATTRIBUTE,
25748 qplatpc.value_from PRICING_ATTR_VALUE,
25749 qpprod.pricing_attr_value_from PRICING_SETUP_VALUE_FROM,
25750 qpprod.pricing_attr_value_to PRICING_SETUP_VALUE_TO,
25751 qpprod.comparison_operator_code PRICING_COMPARISON_OPERATOR,
25752 qpprod.pricing_attribute_datatype PRICING_DATATYPE,
25753 qpl.automatic_flag,
25754 qpl.modifier_level_code,
25755 qpl.primary_uom_flag,
25756 qpl.arithmetic_operator operand_calculation_code,
25757 qpl.operand operand_value,
25758 qpl.net_amount_flag, --IT net_amount 2720717
25759 qpl.pricing_group_sequence,
25760 qpl.pricing_phase_id,
25761 qpl.price_break_type_code,
25762 qpl.incompatibility_grp_code,
25763 qpl.price_by_formula_id,
25764 qpl.product_precedence,
25765 qpl.override_flag,
25766 qpl.benefit_qty,
25767 qpl.benefit_uom_code,
25768 qpl.service_duration, -- service project
25769 qpl.service_period, -- service project
25770 qpl.list_line_no,
25771 qpl.accrual_flag,
25772 qpl.accrual_conversion_rate,
25773 qpl.estim_accrual_rate,
25774 qpq.ask_for_flag,
25775 qpq.created_from_list_type,
25776 qpq.header_limit_exists,
25777 qpl.limit_exists_flag line_limit_exists,
25778 decode(p_list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE,
25779 qpl.charge_type_code,
25780 qpl.charge_subtype_code,
25781 qpl.accum_context, -- accum range break
25782 qpl.accum_attribute, -- accum range break
25783 qpl.accum_attr_run_src_flag -- accum range break
25784 from
25785 (select /*+ index (qpqq QP_PREQ_QUAL_TMP_N5) */
25786 distinct line_index, list_header_id, list_line_id, ask_for_flag,created_from_list_type,header_limit_exists
25787 from qp_preq_qual_tmp qpqq
25788 where pricing_status_code = G_STATUS_UNCHANGED
25789 and pricing_phase_id = p_pricing_phase_id
25790 and search_ind = 1
25791 and list_line_id > 0 ) qpq,
25792 QP_PRICING_ATTRIBUTES qpprod ,
25793 qp_npreq_line_attrs_tmp qplatpr,
25794 qp_npreq_line_attrs_tmp qplatpc,
25795 qp_list_lines qpl ,
25796 qp_npreq_lines_tmp qplines
25797 where
25798 qpprod.list_header_id = qpq.list_header_id
25799 and qpprod.list_line_id = qpq.list_line_id
25800 and qpl.list_line_id = qpprod.list_line_id
25801 and (qpl.modifier_level_code = qplines.line_type_code
25802 OR
25803 (qpl.modifier_level_code = G_LINE_GROUP and
25804 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
25805 and TRUNC(qplines.pricing_effective_date) BETWEEN
25806 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date))
25807 AND nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
25808 and qplines.priced_uom_code = nvl(qpprod.product_uom_code,qplines.priced_uom_code)
25809 and qpl.QUALIFICATION_IND in (QP_PREQ_GRP.G_YES_PROD_PRIC_LINE_QUAL_IND,
25810 QP_PREQ_GRP.G_YES_PRIC_HDR_LINE_QUAL_IND)
25811 and qpl.list_line_type_code <> 'PLL'
25812 and qpprod.pricing_phase_id = p_pricing_phase_id
25813 and qpprod.QUALIFICATION_IND in (QP_PREQ_GRP.G_YES_PROD_PRIC_LINE_QUAL_IND,
25814 QP_PREQ_GRP.G_YES_PRIC_HDR_LINE_QUAL_IND)
25815 and qpprod.product_attribute_context = qplatpr.context
25816 and qpprod.product_attribute = qplatpr.attribute
25817 and qpprod.product_attr_value = qplatpr.value_from
25818 and qpprod.excluder_flag = G_NO
25819 and qpprod.pricing_attribute_context = qplatpc.context
25820 and qpprod.pricing_attribute = qplatpc.attribute
25821 and (qpprod.pricing_attr_value_from = qplatpc.value_from
25822 or qpprod.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN))
25823 --or qpl.price_break_type_code = G_RECURRING_BREAK)
25824 and qpl.pricing_phase_id = p_pricing_phase_id
25825 and qplines.line_index = qpq.line_index
25826 and qplatpr.line_index = qpq.line_index
25827 and qplatpc.line_index = qplatpr.line_index
25828 and qplatpr.attribute_type='PRODUCT'
25829 and qplatpr.pricing_status_code=G_STATUS_UNCHANGED
25830 and qplatpc.attribute_type = 'PRICING'
25831 and qplatpc.pricing_status_code = G_STATUS_UNCHANGED
25832 --and qpq.pricing_status_code = G_STATUS_UNCHANGED
25833 --and qpq.search_ind = 1
25834 -- price book
25835 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
25836 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
25837 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
25838 or
25839 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
25840 union all
25841 select /*+ ORDERED USE_NL(QPLATPR QPPROD QPLATPC QPL ) index(QPPROD QP_PRICING_ATTRIBUTES_N5) index(qplatpr qp_preq_line_attrs_tmp_N1) index(qplatpc qp_preq_line_attrs_tmp_N2) l_prod_qual_pric_cur_mod */
25842 qpl.list_header_id,
25843 qpl.list_line_id,
25844 qpl.list_line_type_code,
25845 qplatpr.line_index,
25846 qplatpr.validated_flag,
25847 qplatpr.applied_flag,
25848 --for product attrs
25849 qplatpr.attribute_level PRODUCT_ATTRIBUTE_LEVEL,
25850 qplatpr.attribute_type PRODUCT_ATTRIBUTE_TYPE,
25851 qplatpr.context PRODUCT_ATTRIBUTE_CONTEXT,
25852 qplatpr.attribute PRODUCT_ATTRIBUTE,
25853 qplatpr.value_from PRODUCT_ATTR_VALUE,
25854 qpprod.product_attr_value PRODUCT_SETUP_VALUE,
25855 qplatpr.pricing_attr_flag PRODUCT_PRICING_ATTR_FLAG,
25856 qpprod.product_uom_code PRODUCT_UOM_CODE,
25857 qpprod.excluder_flag,
25858 --for pricing attrs
25859 qplatpc.attribute_level PRICING_ATTRIBUTE_LEVEL,
25860 qplatpc.attribute_type PRICING_ATTRIBUTE_TYPE,
25861 qplatpc.context PRICING_ATTRIBUTE_CONTEXT,
25862 qplatpc.attribute PRICING_ATTRIBUTE,
25863 qplatpc.value_from PRICING_ATTR_VALUE,
25864 qpprod.pricing_attr_value_from PRICING_SETUP_VALUE_FROM,
25865 qpprod.pricing_attr_value_to PRICING_SETUP_VALUE_TO,
25866 qpprod.comparison_operator_code PRICING_COMPARISON_OPERATOR,
25867 qpprod.pricing_attribute_datatype PRICING_DATATYPE,
25868 qpl.automatic_flag,
25869 qpl.modifier_level_code,
25870 qpl.primary_uom_flag,
25871 qpl.arithmetic_operator operand_calculation_code,
25872 qpl.operand operand_value,
25873 qpl.net_amount_flag, --IT net_amount 2720717
25874 qpl.pricing_group_sequence,
25875 qpl.pricing_phase_id,
25876 qpl.price_break_type_code,
25877 qpl.incompatibility_grp_code,
25878 qpl.price_by_formula_id,
25879 qpl.product_precedence,
25880 qpl.override_flag,
25881 qpl.benefit_qty,
25882 qpl.benefit_uom_code,
25883 qpl.service_duration, -- service project
25884 qpl.service_period, -- service project
25885 qpl.list_line_no,
25886 qpl.accrual_flag,
25887 qpl.accrual_conversion_rate,
25888 qpl.estim_accrual_rate,
25889 qpq.ask_for_flag,
25890 qpq.created_from_list_type,
25891 qpq.header_limit_exists,
25892 qpl.limit_exists_flag line_limit_exists,
25893 decode(p_list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE,
25894 qpl.charge_type_code,
25895 qpl.charge_subtype_code,
25896 qpl.accum_context, -- accum range break
25897 qpl.accum_attribute, -- accum range break
25898 qpl.accum_attr_run_src_flag -- accum range break
25899 from
25900 (select /*+ index (qpqq QP_PREQ_QUAL_TMP_N5) */
25901 distinct line_index, list_header_id, list_line_id, ask_for_flag,created_from_list_type,header_limit_exists
25902 from qp_preq_qual_tmp qpqq
25903 where pricing_status_code = G_STATUS_UNCHANGED
25904 and pricing_phase_id = p_pricing_phase_id
25905 and search_ind = 1
25906 and list_line_id < 0 ) qpq,
25907 qp_npreq_line_attrs_tmp qplatpr,
25908 QP_PRICING_ATTRIBUTES qpprod ,
25909 qp_npreq_line_attrs_tmp qplatpc,
25910 qp_list_lines qpl ,
25911 qp_npreq_lines_tmp qplines
25912 where
25913 qpprod.list_header_id = qpq.list_header_id
25914 and qpl.list_line_id = qpprod.list_line_id
25915 and (qpl.modifier_level_code = qplines.line_type_code
25916 OR
25917 (qpl.modifier_level_code = G_LINE_GROUP and
25918 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
25919 and TRUNC(qplines.pricing_effective_date) BETWEEN
25920 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date))
25921 AND nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
25922 and qplines.priced_uom_code = nvl(qpprod.product_uom_code,qplines.priced_uom_code)
25923 and qpl.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
25924 and qpl.list_line_type_code <> 'PLL'
25925 and qpprod.pricing_phase_id = p_pricing_phase_id
25926 and qpprod.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
25927 and qpprod.product_attribute_context = qplatpr.context
25928 and qpprod.product_attribute = qplatpr.attribute
25929 and qpprod.product_attr_value = qplatpr.value_from
25930 and qpprod.excluder_flag = G_NO
25931 and qpprod.pricing_attribute_context = qplatpc.context
25932 and qpprod.pricing_attribute = qplatpc.attribute
25933 and (qpprod.pricing_attr_value_from = qplatpc.value_from
25934 or qpprod.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN))
25935 and qpl.pricing_phase_id = p_pricing_phase_id
25936 and qplines.line_index = qpq.line_index
25937 and qplatpr.line_index = qpq.line_index
25938 and qplatpc.line_index = qplatpr.line_index
25939 and qplatpr.attribute_type='PRODUCT'
25940 and qplatpr.pricing_status_code=G_STATUS_UNCHANGED
25941 and qplatpc.attribute_type = 'PRICING'
25942 and qplatpc.pricing_status_code = G_STATUS_UNCHANGED
25943 --and qpq.pricing_status_code = G_STATUS_UNCHANGED
25944 --and qpq.search_ind = 1
25945 -- price book
25946 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
25947 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
25948 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
25949 or
25950 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
25951 order by 4,2;
25952
25953 /*
25954 INDX,QP_PREQ_GRP.select_modifiers.l_inner_qual_cur,QP_PREQ_QUAL_TMP_N5,PRICING_STATUS_CODE,1
25955 INDX,QP_PREQ_GRP.select_modifiers.l_inner_qual_cur,QP_PREQ_QUAL_TMP_N5,SEARCH_IND,2
25956 INDX,QP_PREQ_GRP.select_modifiers.l_inner_qual_cur,QP_PREQ_QUAL_TMP_N5,list_header_id,3
25957 INDX,QP_PREQ_GRP.select_modifiers.l_inner_qual_cur,QP_PREQ_QUAL_TMP_N5,list_line_id,4
25958
25959 INDX,QP_PREQ_GRP.select_modifiers.l_inner_qual_cur,QP_LIST_LINES_N5,PRICING_PHASE_ID,1
25960 INDX,QP_PREQ_GRP.select_modifiers.l_inner_qual_cur,QP_LIST_LINES_N5,QUALIFICATION_IND,2
25961 */
25962 CURSOR l_INNER_QUAL_CUR(p_pricing_phase_id NUMBER,
25963 p_list_header_id NUMBER,
25964 p_list_line_id NUMBER,
25965 p_line_index NUMBER,
25966 p_pricing_effective_date DATE,
25967 p_start_date_active_first DATE,
25968 p_start_date_active_second DATE,
25969 p_line_type_code VARCHAR2) IS
25970 -- Qualifier Only
25971 -- 5092968, qp_list_lines_n6 replaced with qp_list_lines_pk
25972 select /*+ ORDERED INDEX(qpl,QP_LIST_LINES_PK) l_inner_qual_cur */
25973 qpl.list_header_id,
25974 qpl.list_line_id,
25975 qpl.list_line_type_code,
25976 qpq.line_index,
25977 qpl.automatic_flag,
25978 qpl.modifier_level_code,
25979 qpl.primary_uom_flag,
25980 qpl.arithmetic_operator operand_calculation_code,
25981 qpl.operand operand_value,
25982 qpl.net_amount_flag, --IT net_amount 2720717
25983 qpl.pricing_group_sequence,
25984 qpl.pricing_phase_id,
25985 qpl.price_break_type_code,
25986 qpl.incompatibility_grp_code,
25987 qpl.price_by_formula_id,
25988 qpl.product_precedence,
25989 qpl.override_flag,
25990 qpl.benefit_qty,
25991 qpl.benefit_uom_code,
25992 qpl.service_duration, -- service project
25993 qpl.service_period, -- service project
25994 qpl.list_line_no,
25995 qpl.accrual_flag,
25996 qpl.accrual_conversion_rate,
25997 qpl.estim_accrual_rate,
25998 qpq.ask_for_flag,
25999 qpq.created_from_list_type,
26000 qpq.header_limit_exists,
26001 qpl.limit_exists_flag line_limit_exists,
26002 decode(p_list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE,
26003 qpl.charge_type_code,
26004 qpl.charge_subtype_code,
26005 qpl.accum_context, -- accum range break
26006 qpl.accum_attribute, -- accum range break
26007 qpl.accum_attr_run_src_flag -- accum range break
26008 from
26009 (select /*+ index (qpqq QP_PREQ_QUAL_TMP_N5) */
26010 distinct line_index, line_type_code,pricing_effective_date,list_header_id, list_line_id,
26011 ask_for_flag, created_from_list_type,header_limit_exists
26012 from qp_preq_qual_tmp qpqq
26013 where pricing_status_code = G_STATUS_UNCHANGED
26014 and pricing_phase_id = p_pricing_phase_id
26015 and search_ind = 1
26016 and list_line_id > 0 ) qpq,
26017 qp_list_lines qpl
26018 where
26019 qpl.list_header_id = qpq.list_header_id
26020 and qpl.list_line_id = qpq.list_line_id
26021 and (qpl.modifier_level_code = qpq.line_type_code
26022 OR
26023 (qpl.modifier_level_code = G_LINE_GROUP and
26024 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
26025 and qpq.pricing_effective_date BETWEEN
26026 nvl(TRUNC(qpl.start_date_active), qpq.pricing_effective_date)
26027 AND nvl(TRUNC(qpl.end_date_active),qpq.pricing_effective_date)
26028 and qpl.QUALIFICATION_IND in (QP_PREQ_GRP.G_YES_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_HDR_LINE_QUAL_IND)
26029 and qpl.list_line_type_code <>'PLL'
26030 and qpl.pricing_phase_id = p_pricing_phase_id
26031 --and qpq.pricing_status_code = G_STATUS_UNCHANGED
26032 --and qpq.search_ind = 1
26033 -- price book
26034 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
26035 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
26036 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
26037 or
26038 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
26039 union all
26040 select /*+ ORDERED INDEX(qpl,QP_LIST_LINES_N5) l_inner_qual_cur */
26041 qpl.list_header_id,
26042 qpl.list_line_id,
26043 qpl.list_line_type_code,
26044 qpq.line_index,
26045 qpl.automatic_flag,
26046 qpl.modifier_level_code,
26047 qpl.primary_uom_flag,
26048 qpl.arithmetic_operator operand_calculation_code,
26049 qpl.operand operand_value,
26050 qpl.net_amount_flag, --IT net_amount 2720717
26051 qpl.pricing_group_sequence,
26052 qpl.pricing_phase_id,
26053 qpl.price_break_type_code,
26054 qpl.incompatibility_grp_code,
26055 qpl.price_by_formula_id,
26056 qpl.product_precedence,
26057 qpl.override_flag,
26058 qpl.benefit_qty,
26059 qpl.benefit_uom_code,
26060 qpl.service_duration, -- service project
26061 qpl.service_period, -- service project
26062 qpl.list_line_no,
26063 qpl.accrual_flag,
26064 qpl.accrual_conversion_rate,
26065 qpl.estim_accrual_rate,
26066 qpq.ask_for_flag,
26067 qpq.created_from_list_type,
26068 qpq.header_limit_exists,
26069 qpl.limit_exists_flag line_limit_exists,
26070 decode(p_list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE,
26071 qpl.charge_type_code,
26072 qpl.charge_subtype_code,
26073 qpl.accum_context, -- accum range break
26074 qpl.accum_attribute, -- accum range break
26075 qpl.accum_attr_run_src_flag -- accum range break
26076 from
26077 (select /*+ index (qpqq QP_PREQ_QUAL_TMP_N5) */
26078 distinct line_index, line_type_code,pricing_effective_date,list_header_id, list_line_id,
26079 ask_for_flag, created_from_list_type,header_limit_exists
26080 from qp_preq_qual_tmp qpqq
26081 where pricing_status_code = G_STATUS_UNCHANGED
26082 and pricing_phase_id = p_pricing_phase_id
26083 and search_ind = 1
26084 and list_line_id < 0 ) qpq,
26085 qp_list_lines qpl
26086 where
26087 qpl.list_header_id = qpq.list_header_id
26088 and (qpl.modifier_level_code = qpq.line_type_code
26089 OR
26090 (qpl.modifier_level_code = G_LINE_GROUP and
26091 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
26092 and qpq.pricing_effective_date BETWEEN
26093 nvl(TRUNC(qpl.start_date_active), qpq.pricing_effective_date)
26094 AND nvl(TRUNC(qpl.end_date_active),qpq.pricing_effective_date)
26095 and qpl.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_HDR_QUAL_IND
26096 and qpl.list_line_type_code <>'PLL'
26097 and qpl.pricing_phase_id = p_pricing_phase_id
26098 --and qpq.pricing_status_code = G_STATUS_UNCHANGED
26099 --and qpq.search_ind = 1
26100 -- price book
26101 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
26102 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
26103 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
26104 or
26105 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
26106 order by 4,2;
26107
26108
26109 /*
26110 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
26111 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
26112 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
26113 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
26114 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
26115 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
26116
26117 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
26118 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
26119 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
26120 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
26121 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
26122 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICING_ATTRIBUTES_N5,EXCLUDER_FLAG,6
26123
26124 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
26125
26126 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
26127 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_lines_tmp_N1,LINE_TYPE_CODE,2
26128
26129 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
26130 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICE_REQ_SOURCES_PK,SOURCE_SYSTEM_CODE,2
26131 */
26132 CURSOR l_PROD_CUR (p_pricing_phase_id NUMBER) IS
26133 -- Only Product attributes
26134 select /*+ NO_EXPAND ORDERED USE_NL(QPLATPR QPPROD QPH QPL QPRS) INDEX(QPLINES) INDEX(QPLATPR) index(QPPROD QP_PRICING_ATTRIBUTES_N5 ) index(qph QP_LIST_HEADERS_B_N7) */ --5658579
26135 /* ORDERED USE_NL(QPLATPR QPPROD QPH QPL QPRS) index(qplatpr QP_PREQ_LINE_ATTRS_TMP_N1) index(QPPROD QP_PRICING_ATTRIBUTES_N5) index(qph qp_list_headers_b_n7) l_prod_cur_mod */
26136 qpl.list_header_id,
26137 qpl.list_line_id,
26138 qpl.list_line_type_code,
26139 qplatpr.line_index,
26140 qplatpr.validated_flag,
26141 qplatpr.applied_flag,
26142 --for product
26143 qplatpr.attribute_level PRODUCT_ATTRIBUTE_LEVEL,
26144 qplatpr.attribute_type PRODUCT_ATTRIBUTE_TYPE,
26145 qplatpr.context PRODUCT_ATTRIBUTE_CONTEXT,
26146 qplatpr.attribute PRODUCT_ATTRIBUTE,
26147 qplatpr.value_from PRODUCT_ATTR_VALUE,
26148 qpprod.product_attr_value PRODUCT_SETUP_VALUE,
26149 qplatpr.pricing_attr_flag PRODUCT_PRICING_ATTR_FLAG,
26150 qpprod.product_uom_code PRODUCT_UOM_CODE,
26151 qpprod.excluder_flag,
26152 NULL QUALIFIER_GROUPING_NO,
26153 NULL QUALIFIER_PRECEDENCE,
26154 qpl.automatic_flag,
26155 qpl.modifier_level_code,
26156 qpl.primary_uom_flag,
26157 qpl.arithmetic_operator OPERAND_CALCULATION_CODE,
26158 qpl.operand OPERAND_VALUE,
26159 qpl.net_amount_flag, --IT net_amount 2720717
26160 qpl.pricing_group_sequence,
26161 qph.ask_for_flag,
26162 qph.list_type_code CREATED_FROM_LIST_TYPE,
26163 qpl.pricing_phase_id,
26164 qpl.price_break_type_code,
26165 qpl.incompatibility_grp_code,
26166 qpl.price_by_formula_id,
26167 qpl.product_precedence,
26168 qpl.override_flag,
26169 qpl.benefit_qty,
26170 qpl.benefit_uom_code,
26171 qpl.service_duration, -- service project
26172 qpl.service_period, -- service project
26173 qpl.list_line_no,
26174 qpl.accrual_flag,
26175 qpl.accrual_conversion_rate,
26176 qpl.estim_accrual_rate,
26177 qph.limit_exists_flag header_limit_exists,
26178 qpl.limit_exists_flag line_limit_exists,
26179 'NQ' QUALIFIER_TYPE, --NQ IS NO QUALIFIER
26180 qpl.charge_type_code,
26181 qpl.charge_subtype_code,
26182 qpl.accum_context, -- accum range break
26183 qpl.accum_attribute, -- accum range break
26184 qpl.accum_attr_run_src_flag -- accum range break
26185 FROM
26186 qp_npreq_lines_tmp QPLINES,
26187 qp_npreq_line_attrs_tmp qplatpr,
26188 QP_PRICING_ATTRIBUTES QPPROD ,
26189 QP_LIST_HEADERS_B QPH ,
26190 QP_LIST_LINES QPL ,
26191 --QP_PRICE_REQ_SOURCES QPRS
26192 QP_PRICE_REQ_SOURCES_V QPRS /* yangli */
26193 WHERE
26194 (qplines.price_flag = G_YES
26195 OR
26196 (qplines.price_flag = G_PHASE
26197 AND
26198 p_freeze_override_flag = G_YES))
26199 AND QPH.LIST_HEADER_ID = QPPROD.LIST_HEADER_ID
26200 --added for moac -- commented references to security profile
26201 --security will be built into qp_list_headers_b
26202 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
26203 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
26204 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
26205 and ((qph.currency_code is not null and qph.currency_code = qplines.currency_code)
26206 or
26207 qph.currency_code is null) -- optional currency
26208 --AND qph.currency_code IN (qplines.currency_code , G_ANY_CURRENCY_CODE) --shu, allow currency_code being ANY for modifiers
26209 and (qplines.unit_price is not null
26210 or
26211 qplines.usage_pricing_type = G_AUTHORING_TYPE
26212 or
26213 qplines.line_type_code = G_ORDER_LEVEL)
26214 and (qpl.modifier_level_code = qplines.line_type_code
26215 OR
26216 (qpl.modifier_level_code = G_LINE_GROUP and
26217 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
26218 and qph.active_flag = G_YES
26219 AND ((qph.ASK_FOR_FLAG = G_YES and exists (SELECT /*+ index(la QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/pricebook]
26220 FROM qp_npreq_line_attrs_tmp la
26221 WHERE attribute_type = 'QUALIFIER'
26222 AND pricing_status_code = G_STATUS_UNCHANGED
26223 AND validated_flag = G_NO
26224 AND list_header_id = qph.list_header_id
26225 AND line_index = qplines.line_index))
26226 OR qph.ask_for_flag = G_NO)
26227 AND QPL.LIST_LINE_ID = QPPROD.LIST_LINE_ID
26228 and nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) BETWEEN
26229 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) AND
26230 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
26231 and nvl(qplines.start_date_active_first,TRUNC(SYSDATE)) BETWEEN
26232 nvl(qph.start_date_active_first,nvl(qplines.start_date_active_first,TRUNC(SYSDATE)))
26233 AND
26234 nvl(qph.end_date_active_first,nvl(qplines.start_date_active_first,TRUNC(SYSDATE)))
26235 and nvl(qplines.start_date_active_second,TRUNC(SYSDATE)) BETWEEN
26236 nvl(qph.start_date_active_second, nvl(qplines.start_date_active_second,TRUNC(SYSDATE)))
26237 AND
26238 nvl(qph.end_date_active_second, nvl(qplines.start_date_active_second,TRUNC(SYSDATE)))
26239 and nvl(qplines.active_date_first_type,'X') =
26240 nvl(qph.active_date_first_type,nvl(qplines.active_date_first_type,'X'))
26241 and nvl(qplines.active_date_second_type,'X') =
26242 nvl(qph.active_date_second_type,nvl(qplines.active_date_second_type,'X'))
26243 and nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) BETWEEN --bug7307625
26244 nvl(qpl.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) AND
26245 nvl(qpl.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
26246 /*and qplines.pricing_effective_date BETWEEN
26247 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date)
26248 AND nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)*/
26249 and qplines.priced_uom_code = nvl(qpprod.product_uom_code,qplines.priced_uom_code)
26250 and qpprod.pricing_phase_id = p_pricing_phase_id
26251 and qpprod.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_IND
26252 and qpprod.product_attribute_context = qplatpr.context
26253 and qpprod.product_attribute = qplatpr.attribute
26254 and qpprod.product_attr_value = qplatpr.value_from
26255 and qpprod.excluder_flag = G_NO
26256 and qph.source_system_code = qprs.source_system_code
26257 and qplines.request_type_code = qprs.request_type_code
26258 AND QPLATPR.LINE_INDEX = QPLINES.LINE_INDEX
26259 and qplatpr.attribute_type='PRODUCT'
26260 and qplatpr.pricing_status_code=G_STATUS_UNCHANGED
26261 -- price book
26262 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
26263 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
26264 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
26265 or
26266 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
26267 order by 4,2;
26268
26269 /*
26270 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
26271 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
26272 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
26273 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
26274 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
26275 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
26276
26277 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
26278 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
26279 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
26280 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
26281 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
26282 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICING_ATTRIBUTES_N5,EXCLUDER_FLAG,6
26283
26284 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
26285 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
26286 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
26287
26288 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
26289
26290 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
26291 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_lines_tmp_N1,LINE_TYPE_CODE,2
26292
26293 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
26294 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICE_REQ_SOURCES_PK,SOURCE_SYSTEM_CODE,2
26295 */
26296
26297 CURSOR l_PROD_PRIC_CUR (p_pricing_phase_id NUMBER) IS
26298 --PRODUCT and PRICING attributes
26299 SELECT /*+ ORDERED USE_NL(QPLATPR QPPROD QPLATPC QPH QPL QPRS) index(qplatpr QP_PREQ_LINE_ATTRS_TMP_N1) index(QPPROD QP_PRICING_ATTRIBUTES_N5) index(qplatpc qp_preq_line_attrs_tmp_N2) index(qph qp_list_headers_b_n7) l_prod_pric_cur_mod */
26300 qpl.list_header_id,
26301 qpl.list_line_id,
26302 qpl.list_line_type_code,
26303 qplatpr.line_index,
26304 qplatpr.validated_flag,
26305 qplatpr.applied_flag,
26306 --FOR PRODUCT
26307 qplatpr.attribute_level PRODUCT_ATTRIBUTE_LEVEL,
26308 qplatpr.attribute_type PRODUCT_ATTRIBUTE_TYPE,
26309 qplatpr.context PRODUCT_ATTRIBUTE_CONTEXT,
26310 qplatpr.attribute PRODUCT_ATTRIBUTE,
26311 qplatpr.value_from PRODUCT_ATTR_VALUE,
26312 qpprod.product_attr_value PRODUCT_SETUP_VALUE,
26313 qplatpr.pricing_attr_flag PRODUCT_PRICING_ATTR_FLAG,
26314 qpprod.product_uom_code PRODUCT_UOM_CODE,
26315 qpprod.excluder_flag,
26316 --FOR PRICING
26317 qplatpc.attribute_level PRICING_ATTRIBUTE_LEVEL,
26318 qplatpc.attribute_type PRICING_ATTRIBUTE_TYPE,
26319 qplatpc.context PRICING_ATTRIBUTE_CONTEXT,
26320 qplatpc.attribute PRICING_ATTRIBUTE,
26321 qplatpc.value_from PRICING_ATTR_VALUE,
26322 qpprod.pricing_attr_value_from PRICING_SETUP_VALUE_FROM,
26323 qpprod.pricing_attr_value_to PRICING_SETUP_VALUE_TO,
26324 qpprod.comparison_operator_code PRICING_COMPARISON_OPERATOR,
26325 qpprod.pricing_attribute_datatype PRICING_DATATYPE,
26326 NULL qualifier_grouping_no,
26327 NULL qualifier_precedence,
26328 qpl.automatic_flag,
26329 qpl.modifier_level_code,
26330 qpl.primary_uom_flag,
26331 qpl.arithmetic_operator OPERAND_CALCULATION_CODE,
26332 qpl.operand OPERAND_VALUE,
26333 qpl.net_amount_flag, --IT net_amount 2720717
26334 qpl.pricing_group_sequence,
26335 qph.ask_for_flag,
26336 qph.list_type_code CREATED_FROM_LIST_TYPE,
26337 qpl.pricing_phase_id,
26338 qpl.price_break_type_code,
26339 qpl.incompatibility_grp_code,
26340 qpl.price_by_formula_id,
26341 qpl.product_precedence,
26342 qpl.override_flag,
26343 qpl.benefit_qty,
26344 qpl.benefit_uom_code,
26345 qpl.service_duration, -- service project
26346 qpl.service_period, -- service project
26347 qpl.list_line_no,
26348 qpl.accrual_flag,
26349 qpl.accrual_conversion_rate,
26350 qpl.estim_accrual_rate,
26351 qph.limit_exists_flag header_limit_exists,
26352 qpl.limit_exists_flag line_limit_exists,
26353 'NQ' QUALIFIER_TYPE,
26354 qpl.charge_type_code,
26355 qpl.charge_subtype_code,
26356 qpl.accum_context, -- accum range break
26357 qpl.accum_attribute, -- accum range break
26358 qpl.accum_attr_run_src_flag -- accum range break
26359 FROM
26360 qp_npreq_lines_tmp QPLINES,
26361 qp_npreq_line_attrs_tmp qplatpr,
26362 QP_PRICING_ATTRIBUTES QPPROD ,
26363 qp_npreq_line_attrs_tmp qplatpc,
26364 QP_LIST_HEADERS_B QPH ,
26365 QP_LIST_LINES QPL ,
26366 --QP_PRICE_REQ_SOURCES qprs
26367 QP_PRICE_REQ_SOURCES_V qprs /* yangli */
26368 WHERE
26369 (qplines.price_flag = G_YES
26370 OR
26371 (qplines.price_flag = G_PHASE
26372 AND
26373 p_freeze_override_flag = G_YES))
26374 and ((qph.currency_code is not null and qph.currency_code = qplines.currency_code)
26375 OR
26376 qph.currency_code is null) -- optional currency
26377 --AND qph.currency_code IN (qplines.currency_code , G_ANY_CURRENCY_CODE) --shu, allow currency_code being ANY for modifiers
26378 and (qplines.unit_price is not null
26379 or
26380 qplines.usage_pricing_type = G_AUTHORING_TYPE
26381 or
26382 qplines.line_type_code = G_ORDER_LEVEL)
26383 and (qpl.modifier_level_code = qplines.line_type_code
26384 OR
26385 (qpl.modifier_level_code = G_LINE_GROUP and
26386 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
26387 and qph.active_flag = G_YES
26388 AND ((qph.ASK_FOR_FLAG = G_YES and exists (SELECT /*+ index(la QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/pricebook]
26389 FROM qp_npreq_line_attrs_tmp la
26390 WHERE attribute_type = 'QUALIFIER'
26391 AND pricing_status_code = G_STATUS_UNCHANGED
26392 AND validated_flag = G_NO
26393 AND list_header_id = qph.list_header_id
26394 AND line_index = qplines.line_index))
26395 OR qph.ask_for_flag = G_NO)
26396 AND QPH.LIST_HEADER_ID = QPPROD.LIST_HEADER_ID
26397 --added for moac -- commented references to security profile
26398 --security will be built into qp_list_headers_b
26399 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
26400 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
26401 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
26402 AND QPL.LIST_LINE_ID = QPPROD.LIST_LINE_ID
26403 AND QPPROD.PRICING_PHASE_ID = P_PRICING_PHASE_ID
26404 and nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) BETWEEN
26405 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) AND
26406 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
26407 and nvl(qplines.start_date_active_first,TRUNC(SYSDATE)) BETWEEN
26408 nvl(qph.start_date_active_first,nvl(qplines.start_date_active_first,TRUNC(SYSDATE)))
26409 AND
26410 nvl(qph.end_date_active_first,nvl(qplines.start_date_active_first,TRUNC(SYSDATE)))
26411 and nvl(qplines.start_date_active_second,TRUNC(SYSDATE)) BETWEEN
26412 nvl(qph.start_date_active_second, nvl(qplines.start_date_active_second,TRUNC(SYSDATE)))
26413 AND
26414 nvl(qph.end_date_active_second, nvl(qplines.start_date_active_second,TRUNC(SYSDATE)))
26415 and nvl(qplines.active_date_first_type,'X') =
26416 nvl(qph.active_date_first_type,nvl(qplines.active_date_first_type,'X'))
26417 and nvl(qplines.active_date_second_type,'X') =
26418 nvl(qph.active_date_second_type,nvl(qplines.active_date_second_type,'X'))
26419 and TRUNC(qplines.pricing_effective_date) BETWEEN
26420 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date))
26421 AND nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
26422 and qplines.priced_uom_code = nvl(qpprod.product_uom_code,qplines.priced_uom_code)
26423 and qpprod.pricing_phase_id = p_pricing_phase_id
26424 and qpprod.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
26425 and qpprod.product_attribute_context = qplatpr.context
26426 and qpprod.product_attribute = qplatpr.attribute
26427 and qpprod.product_attr_value = qplatpr.value_from
26428 and qpprod.pricing_attribute_context = qplatpc.context
26429 and qpprod.pricing_attribute = qplatpc.attribute
26430 and (qpprod.pricing_attr_value_from = qplatpc.value_from
26431 or qpprod.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN))
26432 --or qpl.price_break_type_code = G_RECURRING_BREAK)
26433 and qpprod.excluder_flag = G_NO
26434 and qplatpc.line_index = qplatpr.line_index
26435 and qplatpr.line_index = qplines.line_index
26436 and qph.source_system_code = qprs.source_system_code
26437 and qplines.request_type_code = qprs.request_type_code
26438 and qplatpc.pricing_attr_flag = G_YES
26439 and qplatpr.attribute_type='PRODUCT'
26440 and qplatpr.pricing_status_code=G_STATUS_UNCHANGED
26441 and qplatpc.attribute_type = 'PRICING'
26442 and qplatpc.pricing_status_code = G_STATUS_UNCHANGED
26443 -- price book
26444 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
26445 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
26446 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
26447 or
26448 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
26449 order by 4,2;
26450
26451 /*
26452 INDX,QP_PREQ_GRP.select_modifiers.l_cur,QP_LIST_LINES_N5,PRICING_PHASE_ID,1
26453 INDX,QP_PREQ_GRP.select_modifiers.l_cur,QP_LIST_LINES_N5,QUALIFICATION_IND,2
26454
26455 INDX,QP_PREQ_GRP.select_modifiers.l_cur,QP_LIST_HEADERS_B_N2,LIST_HEADER_ID,1
26456 INDX,QP_PREQ_GRP.select_modifiers.l_cur,QP_LIST_HEADERS_B_N2,ACTIVE_FLAG,2
26457 INDX,QP_PREQ_GRP.select_modifiers.l_cur,QP_LIST_HEADERS_B_N2,CURRENCY_CODE,3
26458
26459 INDX,QP_PREQ_GRP.select_modifiers.l_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
26460 INDX,QP_PREQ_GRP.select_modifiers.l_cur,QP_PRICE_REQ_SOURCES_PK,SOURCE_SYSTEM_CODE,2
26461 */
26462 cursor l_CUR (p_pricing_phase_id NUMBER) IS
26463 -- NO PRODUCTS AND NO QUALIFIERS
26464 SELECT /*+ NO_EXPAND ORDERED USE_NL(QPL QPH QPRS) index(QPL QP_LIST_LINES_N5) index(qph qp_list_headers_b_n7) l_cur_mod */
26465 qpl.list_header_id,
26466 qpl.list_line_id,
26467 qpl.list_line_type_code,
26468 qplines.line_index,
26469 qpl.automatic_flag,
26470 qpl.modifier_level_code,
26471 qpl.primary_uom_flag,
26472 qpl.arithmetic_operator operand_calculation_code,
26473 qpl.operand operand_value,
26474 qpl.net_amount_flag, --IT net_amount 2720717
26475 qpl.pricing_group_sequence,
26476 qph.ask_for_flag,
26477 qph.list_type_code created_from_list_type,
26478 qpl.pricing_phase_id,
26479 qpl.price_break_type_code,
26480 qpl.incompatibility_grp_code,
26481 qpl.price_by_formula_id,
26482 qpl.product_precedence,
26483 qpl.override_flag,
26484 qpl.benefit_qty,
26485 qpl.benefit_uom_code,
26486 qpl.service_duration, -- service project
26487 qpl.service_period, -- service project
26488 qpl.list_line_no,
26489 qpl.accrual_flag,
26490 qpl.accrual_conversion_rate,
26491 qpl.estim_accrual_rate,
26492 qph.limit_exists_flag header_limit_exists,
26493 qpl.limit_exists_flag line_limit_exists,
26494 qpl.charge_type_code,
26495 qpl.charge_subtype_code,
26496 qpl.accum_context, -- accum range break
26497 qpl.accum_attribute, -- accum range break
26498 qpl.accum_attr_run_src_flag -- accum range break
26499 from
26500 qp_npreq_lines_tmp qplines,
26501 qp_list_lines qpl,
26502 qp_list_headers_b qph,
26503 --qp_price_req_sources qprs
26504 qp_price_req_sources_v qprs /* yangli */
26505 where qph.list_header_id = qpl.list_header_id
26506 --added for moac -- commented references to security profile
26507 --security will be built into qp_list_headers_b
26508 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
26509 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
26510 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
26511 and qph.active_flag=G_YES
26512 AND ((qph.ASK_FOR_FLAG = G_YES and exists (SELECT /*+ index(la QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/pricebook]
26513 FROM qp_npreq_line_attrs_tmp la
26514 WHERE attribute_type = 'QUALIFIER'
26515 AND pricing_status_code = G_STATUS_UNCHANGED
26516 AND validated_flag = G_NO
26517 AND list_header_id = qph.list_header_id
26518 AND line_index = qplines.line_index))
26519 OR qph.ask_for_flag = G_NO)
26520 and qpl.pricing_phase_id=p_pricing_phase_id
26521 and qpl.QUALIFICATION_IND = QP_PREQ_GRP.G_BLIND_DISCOUNT_IND
26522 and (qplines.price_flag = G_YES
26523 OR
26524 (qplines.price_flag = G_PHASE
26525 AND
26526 p_freeze_override_flag = G_YES))
26527 and ((qph.currency_code is not null and qph.currency_code = qplines.currency_code)
26528 OR
26529 qph.currency_code is null) -- optional currency
26530 -- AND qph.currency_code IN (qplines.currency_code , G_ANY_CURRENCY_CODE) --shu, allow currency_code being ANY for modifiers
26531 and (qplines.unit_price is not null
26532 or
26533 qplines.usage_pricing_type = G_AUTHORING_TYPE
26534 or
26535 qplines.line_type_code = G_ORDER_LEVEL)
26536 and (qpl.modifier_level_code = qplines.line_type_code
26537 OR
26538 (qpl.modifier_level_code = G_LINE_GROUP and
26539 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
26540 and nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) BETWEEN
26541 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) AND
26542 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
26543 and nvl(qplines.start_date_active_first,TRUNC(SYSDATE)) BETWEEN
26544 nvl(qph.start_date_active_first,nvl(qplines.start_date_active_first,TRUNC(SYSDATE)))
26545 AND
26546 nvl(qph.end_date_active_first,nvl(qplines.start_date_active_first,TRUNC(SYSDATE)))
26547 and nvl(qplines.start_date_active_second,TRUNC(SYSDATE)) BETWEEN
26548 nvl(qph.start_date_active_second, nvl(qplines.start_date_active_second,TRUNC(SYSDATE)))
26549 AND
26550 nvl(qph.end_date_active_second, nvl(qplines.start_date_active_second,TRUNC(SYSDATE)))
26551 and nvl(qplines.active_date_first_type,'X') =
26552 nvl(qph.active_date_first_type,nvl(qplines.active_date_first_type,'X'))
26553 and nvl(qplines.active_date_second_type,'X') =
26554 nvl(qph.active_date_second_type,nvl(qplines.active_date_second_type,'X'))
26555 and TRUNC(qplines.pricing_effective_date) BETWEEN
26556 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date))
26557 AND nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
26558 and qph.source_system_code = qprs.source_system_code
26559 and qplines.request_type_code = qprs.request_type_code
26560 -- price book
26561 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
26562 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
26563 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
26564 or
26565 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
26566 order by 4,2;
26567
26568 /*
26569 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
26570 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
26571 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
26572 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
26573 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
26574 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,QP_PRICING_ATTRIBUTES_N5,EXCLUDER_FLAG,6
26575
26576 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
26577 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
26578
26579 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
26580 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
26581 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
26582 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
26583 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,qp_npreq_line_attrs_tmp_N1,LIST_LINE_ID,5
26584
26585
26586
26587 -- Pricing Phase Change
26588 CURSOR l_get_excluded_prods_cur(p_pricing_phase_id NUMBER) IS
26589 SELECT /+ ORDERED USE_NL(b a) INDEX(c qp_preq_line_attrs_tmp_N2) index(b qp_pricing_attributes_n5) l_get_excluded_prods_cur /
26590 b.list_header_id,
26591 b.list_line_id,
26592 c.line_index,
26593 c.validated_flag,
26594 c.applied_flag,
26595 c.attribute_level,
26596 G_PRICING_TYPE attribute_type,
26597 c.context,
26598 c.attribute,
26599 c.value_from,
26600 b.product_attr_value setup_value_from,
26601 G_NO pricing_attr_flag,
26602 b.product_uom_code,
26603 b.excluder_flag,
26604 -1 qualifier_precedence,
26605 a.line_detail_index
26606 FROM
26607 qp_npreq_line_attrs_tmp c,
26608 qp_pricing_attributes b,
26609 qp_npreq_line_attrs_tmp a
26610 WHERE b.pricing_phase_id = p_pricing_phase_id
26611 AND b.qualification_ind in (G_YES_PROD_IND,G_YES_PROD_HDR_QUAL_IND,G_YES_PROD_LINE_QUAL_IND,G_YES_PROD_HDR_LINE_QUAL_IND)
26612 AND b.product_attribute_context = c.context
26613 AND b.product_attribute = c.attribute
26614 AND b.product_attr_value = c.value_from
26615 AND b.excluder_flag = G_YES
26616 AND c.attribute_type = G_PRODUCT_TYPE
26617 AND c.pricing_status_code = G_STATUS_UNCHANGED
26618 AND a.list_header_id = b.list_header_id
26619 AND a.list_line_id = b.list_line_id
26620 AND a.line_index = c.line_index
26621 AND a.attribute_type = G_PRODUCT_TYPE
26622 AND a.pricing_status_code = G_STATUS_NEW;
26623
26624 */
26625
26626
26627 /*
26628 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_details,QP_PREQ_QUAL_TMP_N5,PRICING_STATUS_CODE,1
26629 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_details,QP_PREQ_QUAL_TMP_N5,LINE_INDEX,5
26630 */
26631 CURSOR l_get_line_index_details IS
26632 SELECT distinct
26633 c.LIST_HEADER_ID,
26634 c.LIST_LINE_ID,
26635 c.CREATED_FROM_LIST_TYPE,
26636 c.ASK_FOR_FLAG,
26637 c.LINE_INDEX,
26638 c.PRICING_EFFECTIVE_DATE,
26639 c.START_DATE_ACTIVE_FIRST,
26640 c.START_DATE_ACTIVE_SECOND,
26641 c.LINE_TYPE_CODE
26642 FROM QP_PREQ_QUAL_TMP c
26643 WHERE c.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
26644 AND c.LINE_INDEX > 0
26645 ORDER BY c.LINE_INDEX;
26646
26647 /*
26648 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_for_quals,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
26649 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_for_quals,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
26650 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_for_quals,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
26651 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_for_quals,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
26652 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_for_quals,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
26653 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_for_quals,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
26654
26655 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_for_quals,QP_PREQ_QUAL_TMP_N3,PRICING_STATUS_CODE,1
26656
26657 -- Full table scan on qp_npreq_lines_tmp
26658 */
26659
26660 --hw
26661
26662 CURSOR l_get_line_index_for_quals IS
26663 SELECT /*+ ORDERED USE_NL(c a) index(a qp_preq_line_attrs_tmp_n2) l_get_line_index_for_quals */distinct
26664 c.LIST_HEADER_ID,
26665 c.LIST_LINE_ID,
26666 c.QUALIFIER_ATTRIBUTE_CONTEXT,
26667 c.QUALIFIER_ATTRIBUTE,
26668 c.QUALIFIER_ATTRIBUTE_VALUE,
26669 c.CREATED_FROM_LIST_TYPE,
26670 c.ASK_FOR_FLAG,
26671 c.QUALIFIER_GROUPING_NO,
26672 c.QUALIFIER_GROUP_CNT,
26673 c.OTHERS_GROUP_CNT,
26674 c.HEADER_QUALS_EXIST_FLAG,
26675 c.SEARCH_IND,
26676 c.VALIDATED_FLAG,
26677 c.APPLIED_FLAG,
26678 c.QUALIFIER_ATTRIBUTE_LEVEL,
26679 c.QUALIFIER_ATTRIBUTE_TYPE,
26680 c.QUALIFIER_PRECEDENCE,
26681 c.QUALIFIER_DATATYPE,
26682 c.QUALIFIER_TYPE,
26683 c.SETUP_VALUE_FROM,
26684 c.SETUP_VALUE_TO,
26685 c.QUALIFIER_PRICING_ATTR_FLAG,
26686 c.QUALIFIER_OPERATOR_TYPE ,
26687 c.START_DATE_ACTIVE,
26688 c.END_DATE_ACTIVE,
26689 b.LINE_INDEX,
26690 b.PRICING_EFFECTIVE_DATE,
26691 b.START_DATE_ACTIVE_FIRST,
26692 b.START_DATE_ACTIVE_SECOND,
26693 b.LINE_TYPE_CODE,
26694 c.PRICING_STATUS_CODE,
26695 p_pricing_phase_id PRICING_PHASE_ID,
26696 b.LINE_INDEX || '-' || c.LIST_HEADER_ID || '-' || c.LIST_LINE_ID || '-' || c.QUALIFIER_GROUPING_NO UNIQUE_KEY,
26697 NULL START_DATE_ACTIVE_H,
26698 NULL END_DATE_ACTIVE_H,
26699 NULL START_DATE_ACTIVE_SECOND_S,
26700 NULL END_DATE_ACTIVE_SECOND_S,
26701 NULL ACTIVE_DATE_FIRST_TYPE,
26702 NULL ACTIVE_DATE_SECOND_TYPE,
26703 c.HEADER_LIMIT_EXISTS,
26704 a.DERIVED_QUALIFIER_FLAG -- Added for TCA
26705 FROM qp_npreq_lines_tmp b,
26706 QP_PREQ_QUAL_TMP c ,
26707 qp_npreq_line_attrs_tmp a
26708 WHERE a.CONTEXT = c.QUALIFIER_ATTRIBUTE_CONTEXT
26709 AND a.ATTRIBUTE = c.QUALIFIER_ATTRIBUTE
26710 AND a.VALUE_FROM = c.QUALIFIER_ATTRIBUTE_VALUE
26711 AND a.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
26712 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
26713 AND c.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
26714 AND c.PRICING_PHASE_ID = p_pricing_phase_id
26715 AND a.LINE_INDEX = b.LINE_INDEX
26716 AND ((c.ASK_FOR_FLAG = G_YES and exists (SELECT /*+ index(la QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/pricebook]
26717 FROM qp_npreq_line_attrs_tmp la
26718 WHERE attribute_type = 'QUALIFIER'
26719 AND pricing_status_code = G_STATUS_UNCHANGED
26720 AND validated_flag = G_NO
26721 AND list_header_id = c.list_header_id
26722 AND line_index = b.line_index))
26723 OR c.ASK_FOR_FLAG = G_NO)
26724 AND (b.UNIT_PRICE is not null
26725 or
26726 b.usage_pricing_type = G_AUTHORING_TYPE
26727 or
26728 b.LINE_TYPE_CODE = G_ORDER_LEVEL)
26729 AND (b.PRICE_FLAG = G_YES
26730 OR
26731 (b.PRICE_FLAG = G_PHASE
26732 AND
26733 p_freeze_override_flag = G_YES))
26734 AND TRUNC(nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)) BETWEEN --pricing date
26735 TRUNC(nvl(c.START_DATE_ACTIVE,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --qualifier start date
26736 TRUNC(nvl(c.END_DATE_ACTIVE,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --qualifier end date
26737 TRUNC(nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)) BETWEEN --pricing date
26738 TRUNC(nvl(c.START_DATE_ACTIVE_H,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --list header start date
26739 TRUNC(nvl(c.END_DATE_ACTIVE_H,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --list header end date
26740 TRUNC(nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))
26741 BETWEEN
26742 TRUNC(nvl(c.START_DATE_ACTIVE_FIRST,nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND -- Order Date
26743 TRUNC(nvl(c.END_DATE_ACTIVE_FIRST,nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND
26744 TRUNC(nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))
26745 BETWEEN
26746 TRUNC(nvl(c.START_DATE_ACTIVE_SECOND,nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND --Ship Date
26747 TRUNC(nvl(c.END_DATE_ACTIVE_SECOND,nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))))
26748 AND nvl(b.ACTIVE_DATE_FIRST_TYPE,'X') = nvl(c.ACTIVE_DATE_FIRST_TYPE,nvl(b.ACTIVE_DATE_FIRST_TYPE,'X')) -- ORD
26749 AND nvl(b.ACTIVE_DATE_SECOND_TYPE,'X') = nvl(c.ACTIVE_DATE_SECOND_TYPE,nvl(b.ACTIVE_DATE_SECOND_TYPE,'X')) -- SHIP
26750 ORDER BY 1,2,3 ;
26751
26752 /*join cursor for l_get_line_index_for_quals and perform_qualifier_grouping
26753 CURSOR l_get_line_index_for_quals_n IS
26754 SELECT /* ORDERED USE_NL(c a) index(a qp_npreq_line_attrs_tmp_n2) l_get_line_index_for_quals /
26755 distinct
26756 c.LIST_HEADER_ID,
26757 c.LIST_LINE_ID,
26758 c.QUALIFIER_ATTRIBUTE_CONTEXT,
26759 c.QUALIFIER_ATTRIBUTE,
26760 c.QUALIFIER_ATTRIBUTE_VALUE,
26761 c.CREATED_FROM_LIST_TYPE,
26762 c.ASK_FOR_FLAG,
26763 c.QUALIFIER_GROUPING_NO,
26764 c.QUALIFIER_GROUP_CNT,
26765 c.OTHERS_GROUP_CNT,
26766 c.HEADER_QUALS_EXIST_FLAG,
26767 c.SEARCH_IND,
26768 c.VALIDATED_FLAG,
26769 c.APPLIED_FLAG,
26770 c.QUALIFIER_ATTRIBUTE_LEVEL,
26771 c.QUALIFIER_ATTRIBUTE_TYPE,
26772 c.QUALIFIER_PRECEDENCE,
26773 c.QUALIFIER_DATATYPE,
26774 c.QUALIFIER_TYPE,
26775 c.SETUP_VALUE_FROM,
26776 c.SETUP_VALUE_TO,
26777 c.QUALIFIER_PRICING_ATTR_FLAG,
26778 c.QUALIFIER_OPERATOR_TYPE ,
26779 c.START_DATE_ACTIVE,
26780 c.END_DATE_ACTIVE,
26781 b.LINE_INDEX,
26782 b.PRICING_EFFECTIVE_DATE,
26783 b.START_DATE_ACTIVE_FIRST,
26784 b.START_DATE_ACTIVE_SECOND,
26785 b.LINE_TYPE_CODE,
26786 c.PRICING_STATUS_CODE,
26787 p_pricing_phase_id PRICING_PHASE_ID,
26788 b.LINE_INDEX || '-' || c.LIST_HEADER_ID || '-' || c.LIST_LINE_ID || '-' || c.QUALIFIER_GROUPING_NO UNIQUE_KEY,
26789 NULL START_DATE_ACTIVE_H,
26790 NULL END_DATE_ACTIVE_H,
26791 NULL START_DATE_ACTIVE_SECOND_S,
26792 NULL END_DATE_ACTIVE_SECOND_S,
26793 NULL ACTIVE_DATE_FIRST_TYPE,
26794 NULL ACTIVE_DATE_SECOND_TYPE,
26795 c.HEADER_LIMIT_EXISTS
26796 FROM qp_npreq_lines_tmp b,
26797 QP_PREQ_QUAL_TMP c ,
26798 qp_npreq_line_attrs_tmp a
26799 WHERE a.CONTEXT = c.QUALIFIER_ATTRIBUTE_CONTEXT
26800 AND a.ATTRIBUTE = c.QUALIFIER_ATTRIBUTE
26801 AND a.VALUE_FROM = c.QUALIFIER_ATTRIBUTE_VALUE
26802 AND a.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
26803 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
26804 AND c.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
26805 AND c.PRICING_PHASE_ID = p_pricing_phase_id
26806 and c.qualifier_grouping_no <> -1
26807 and c.other_group_cnt + c.null_group_cnt = c.qualifier_group_cnt
26808 AND a.LINE_INDEX = b.LINE_INDEX
26809 AND ((c.ASK_FOR_FLAG = G_YES and
26810 (c.LIST_HEADER_ID,b.LINE_INDEX) IN (SELECT list_header_id,line_index
26811 FROM qp_npreq_line_attrs_tmp
26812 WHERE attribute_type = 'QUALIFIER'
26813 AND pricing_status_code = G_STATUS_UNCHANGED
26814 AND validated_flag = G_NO
26815 AND list_header_id IS NOT NULL))
26816 OR c.ASK_FOR_FLAG = G_NO)
26817 AND (b.UNIT_PRICE is not null
26818 or
26819 b.usage_pricing_type = G_AUTHORING_TYPE
26820 or
26821 b.LINE_TYPE_CODE = G_ORDER_LEVEL)
26822 AND (b.PRICE_FLAG = G_YES
26823 OR
26824 (b.PRICE_FLAG = G_PHASE
26825 AND
26826 p_freeze_override_flag = G_YES))
26827 AND TRUNC(nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)) BETWEEN --pricing date
26828 TRUNC(nvl(c.START_DATE_ACTIVE,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --qualifier start date
26829 TRUNC(nvl(c.END_DATE_ACTIVE,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --qualifier end date
26830 TRUNC(nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)) BETWEEN --pricing date
26831 TRUNC(nvl(c.START_DATE_ACTIVE_H,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --list header start date
26832 TRUNC(nvl(c.END_DATE_ACTIVE_H,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --list header end date
26833 TRUNC(nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))
26834 BETWEEN
26835 TRUNC(nvl(c.START_DATE_ACTIVE_FIRST,nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND -- Order Date
26836 TRUNC(nvl(c.END_DATE_ACTIVE_FIRST,nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND
26837 TRUNC(nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))
26838 BETWEEN
26839 TRUNC(nvl(c.START_DATE_ACTIVE_SECOND,nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND --Ship Date
26840 TRUNC(nvl(c.END_DATE_ACTIVE_SECOND,nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))))
26841 AND nvl(b.ACTIVE_DATE_FIRST_TYPE,'X') = nvl(c.ACTIVE_DATE_FIRST_TYPE,nvl(b.ACTIVE_DATE_FIRST_TYPE,'X')) -- ORD
26842 AND nvl(b.ACTIVE_DATE_SECOND_TYPE,'X') = nvl(c.ACTIVE_DATE_SECOND_TYPE,nvl(b.ACTIVE_DATE_SECOND_TYPE,'X')) -- SHIP
26843 union all
26844 SELECT /* ORDERED USE_NL(c a) index(a qp_npreq_line_attrs_tmp_n2) l_get_line_index_for_quals /
26845 distinct
26846 c.LIST_HEADER_ID,
26847 c.LIST_LINE_ID,
26848 c.QUALIFIER_ATTRIBUTE_CONTEXT,
26849 c.QUALIFIER_ATTRIBUTE,
26850 c.QUALIFIER_ATTRIBUTE_VALUE,
26851 c.CREATED_FROM_LIST_TYPE,
26852 c.ASK_FOR_FLAG,
26853 c.QUALIFIER_GROUPING_NO,
26854 c.QUALIFIER_GROUP_CNT,
26855 c.OTHERS_GROUP_CNT,
26856 c.HEADER_QUALS_EXIST_FLAG,
26857 c.SEARCH_IND,
26858 c.VALIDATED_FLAG,
26859 c.APPLIED_FLAG,
26860 c.QUALIFIER_ATTRIBUTE_LEVEL,
26861 c.QUALIFIER_ATTRIBUTE_TYPE,
26862 c.QUALIFIER_PRECEDENCE,
26863 c.QUALIFIER_DATATYPE,
26864 c.QUALIFIER_TYPE,
26865 c.SETUP_VALUE_FROM,
26866 c.SETUP_VALUE_TO,
26867 c.QUALIFIER_PRICING_ATTR_FLAG,
26868 c.QUALIFIER_OPERATOR_TYPE ,
26869 c.START_DATE_ACTIVE,
26870 c.END_DATE_ACTIVE,
26871 b.LINE_INDEX,
26872 b.PRICING_EFFECTIVE_DATE,
26873 b.START_DATE_ACTIVE_FIRST,
26874 b.START_DATE_ACTIVE_SECOND,
26875 b.LINE_TYPE_CODE,
26876 c.PRICING_STATUS_CODE,
26877 p_pricing_phase_id PRICING_PHASE_ID,
26878 b.LINE_INDEX || '-' || c.LIST_HEADER_ID || '-' || c.LIST_LINE_ID || '-' || c.QUALIFIER_GROUPING_NO UNIQUE_KEY,
26879 NULL START_DATE_ACTIVE_H,
26880 NULL END_DATE_ACTIVE_H,
26881 NULL START_DATE_ACTIVE_SECOND_S,
26882 NULL END_DATE_ACTIVE_SECOND_S,
26883 NULL ACTIVE_DATE_FIRST_TYPE,
26884 NULL ACTIVE_DATE_SECOND_TYPE,
26885 c.HEADER_LIMIT_EXISTS
26886 FROM qp_npreq_lines_tmp b,
26887 QP_PREQ_QUAL_TMP c ,
26888 qp_npreq_line_attrs_tmp a
26889 WHERE a.CONTEXT = c.QUALIFIER_ATTRIBUTE_CONTEXT
26890 AND a.ATTRIBUTE = c.QUALIFIER_ATTRIBUTE
26891 AND a.VALUE_FROM = c.QUALIFIER_ATTRIBUTE_VALUE
26892 AND a.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
26893 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
26894 AND c.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
26895 AND c.PRICING_PHASE_ID = p_pricing_phase_id
26896 and c.qualifier_grouping_no = -1
26897 and c.null_group_cnt = c.qualifier_group_cnt
26898 and nvl(c.others_group_cnt,0) = 0 -- to indicate that there are no other groups(coming from qp_qualifiers table)
26899 AND a.LINE_INDEX = b.LINE_INDEX
26900 AND ((c.ASK_FOR_FLAG = G_YES and
26901 (c.LIST_HEADER_ID,b.LINE_INDEX) IN (SELECT list_header_id,line_index
26902 FROM qp_npreq_line_attrs_tmp
26903 WHERE attribute_type = 'QUALIFIER'
26904 AND pricing_status_code = G_STATUS_UNCHANGED
26905 AND validated_flag = G_NO
26906 AND list_header_id IS NOT NULL))
26907 OR c.ASK_FOR_FLAG = G_NO)
26908 AND (b.UNIT_PRICE is not null
26909 or
26910 b.usage_pricing_type = G_AUTHORING_TYPE
26911 or
26912 b.LINE_TYPE_CODE = G_ORDER_LEVEL)
26913 AND (b.PRICE_FLAG = G_YES
26914 OR
26915 (b.PRICE_FLAG = G_PHASE
26916 AND
26917 p_freeze_override_flag = G_YES))
26918 AND TRUNC(nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)) BETWEEN --pricing date
26919 TRUNC(nvl(c.START_DATE_ACTIVE,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --qualifier start date
26920 TRUNC(nvl(c.END_DATE_ACTIVE,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --qualifier end date
26921 TRUNC(nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)) BETWEEN --pricing date
26922 TRUNC(nvl(c.START_DATE_ACTIVE_H,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --list header start date
26923 TRUNC(nvl(c.END_DATE_ACTIVE_H,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --list header end date
26924 TRUNC(nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))
26925 BETWEEN
26926 TRUNC(nvl(c.START_DATE_ACTIVE_FIRST,nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND -- Order Date
26927 TRUNC(nvl(c.END_DATE_ACTIVE_FIRST,nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND
26928 TRUNC(nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))
26929 BETWEEN
26930 TRUNC(nvl(c.START_DATE_ACTIVE_SECOND,nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND --Ship Date
26931 TRUNC(nvl(c.END_DATE_ACTIVE_SECOND,nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))))
26932 AND nvl(b.ACTIVE_DATE_FIRST_TYPE,'X') = nvl(c.ACTIVE_DATE_FIRST_TYPE,nvl(b.ACTIVE_DATE_FIRST_TYPE,'X')) -- ORD
26933 AND nvl(b.ACTIVE_DATE_SECOND_TYPE,'X') = nvl(c.ACTIVE_DATE_SECOND_TYPE,nvl(b.ACTIVE_DATE_SECOND_TYPE,'X')); -- SHIP
26934 */
26935
26936 /*
26937 INDX,QP_PREQ_GRP.select_modifiers.l_get_satisfied_quals,QP_PREQ_QUAL_TMP_N2,LINE_INDEX,1
26938 INDX,QP_PREQ_GRP.select_modifiers.l_get_satisfied_quals,QP_PREQ_QUAL_TMP_N2,PRICING_PHASE_ID,2
26939 INDX,QP_PREQ_GRP.select_modifiers.l_get_satisfied_quals,QP_PREQ_QUAL_TMP_N2,PRICING_STATUS_CODE,3
26940 INDX,QP_PREQ_GRP.select_modifiers.l_get_satisfied_quals,QP_PREQ_QUAL_TMP_N2,LIST_HEADER_ID,4
26941 INDX,QP_PREQ_GRP.select_modifiers.l_get_satisfied_quals,QP_PREQ_QUAL_TMP_N2,LIST_LINE_ID,5
26942 */
26943 CURSOR l_get_satisfied_quals(p_list_header_id NUMBER , p_list_line_id NUMBER, p_line_index NUMBER) IS
26944 SELECT /*+ INDEX(c QP_PREQ_QUAL_TMP_N1) l_get_satisfied_quals */
26945 c.LIST_HEADER_ID,
26946 c.LIST_LINE_ID,
26947 c.QUALIFIER_GROUP_CNT,
26948 c.HEADER_QUALS_EXIST_FLAG,
26949 c.SEARCH_IND,
26950 c.VALIDATED_FLAG,
26951 c.APPLIED_FLAG,
26952 c.QUALIFIER_ATTRIBUTE_LEVEL,
26953 c.QUALIFIER_ATTRIBUTE_TYPE,
26954 c.QUALIFIER_ATTRIBUTE_CONTEXT,
26955 c.QUALIFIER_ATTRIBUTE,
26956 c.QUALIFIER_ATTRIBUTE_VALUE,
26957 c.QUALIFIER_GROUPING_NO ,
26958 c.QUALIFIER_PRECEDENCE,
26959 c.QUALIFIER_DATATYPE,
26960 c.SETUP_VALUE_FROM,
26961 c.SETUP_VALUE_TO,
26962 c.QUALIFIER_PRICING_ATTR_FLAG,
26963 c.QUALIFIER_OPERATOR_TYPE ,
26964 c.CREATED_FROM_LIST_TYPE,
26965 decode(c.LIST_LINE_ID,-1,'HQ','LQ') QUALIFIER_TYPE
26966 FROM QP_PREQ_QUAL_TMP c
26967 WHERE c.LIST_HEADER_ID = p_list_header_id
26968 AND c.LIST_LINE_ID IN (p_list_line_id,-1)
26969 AND c.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
26970 AND c.LINE_INDEX = p_line_index
26971 AND c.PRICING_PHASE_ID = p_pricing_phase_id
26972 UNION
26973 -- To get the -1 group qualifiers for non -1 groups only
26974 -- non -1 groups = OTHERS_GROUP_CNT <> 0
26975 SELECT /*+ INDEX(c QP_PREQ_QUAL_TMP_N1) l_get_satisfied_quals */
26976 c.LIST_HEADER_ID,
26977 c.LIST_LINE_ID,
26978 c.QUALIFIER_GROUP_CNT,
26979 c.HEADER_QUALS_EXIST_FLAG,
26980 c.SEARCH_IND,
26981 c.VALIDATED_FLAG,
26982 c.APPLIED_FLAG,
26983 c.QUALIFIER_ATTRIBUTE_LEVEL,
26984 c.QUALIFIER_ATTRIBUTE_TYPE,
26985 c.QUALIFIER_ATTRIBUTE_CONTEXT,
26986 c.QUALIFIER_ATTRIBUTE,
26987 c.QUALIFIER_ATTRIBUTE_VALUE,
26988 c.QUALIFIER_GROUPING_NO ,
26989 c.QUALIFIER_PRECEDENCE,
26990 c.QUALIFIER_DATATYPE,
26991 c.SETUP_VALUE_FROM,
26992 c.SETUP_VALUE_TO,
26993 c.QUALIFIER_PRICING_ATTR_FLAG,
26994 c.QUALIFIER_OPERATOR_TYPE ,
26995 c.CREATED_FROM_LIST_TYPE,
26996 decode(c.LIST_LINE_ID,-1,'HQ','LQ') QUALIFIER_TYPE
26997 FROM QP_PREQ_QUAL_TMP c
26998 WHERE c.LIST_HEADER_ID = p_list_header_id
26999 AND c.LIST_LINE_ID IN (p_list_line_id,-1)
27000 AND c.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
27001 AND c.PRICING_PHASE_ID = p_pricing_phase_id
27002 AND c.NULL_GROUP_CNT <> 0
27003 AND c.OTHERS_GROUP_CNT <> 0 -- meaning there are other groups for which this cursor selects the -1 group qualifiers in perf path
27004 AND c.QUALIFIER_GROUPING_NO = -1;
27005
27006 -- 3520634 start
27007 -- get rows with search ind 2
27008 CURSOR get_list_headers_with_ind2 IS
27009 SELECT/*+ ORDERED */ 'x'
27010 FROM qp_qualifiers b
27011 WHERE b.search_ind = 2
27012 and b.list_header_id in (select distinct a.list_header_id from qp_preq_qual_tmp a
27013 where a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
27014 and a.search_ind = 1
27015 and a.pricing_phase_id = p_pricing_phase_id)
27016 AND rownum = 1;
27017 -- 3520634 end
27018
27019 J PLS_INTEGER:=1;
27020 N PLS_INTEGER:=1;
27021 M PLS_INTEGER:=1;
27022 K PLS_INTEGER:=1;
27023
27024 l_status VARCHAR2(30);
27025 l_status_code VARCHAR2(30);
27026 l_status_text VARCHAR2(240);
27027 l_list_line_id NUMBER := 0 ;
27028 l_line_index PLS_INTEGER := 0 ;
27029 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.SELECT_MODIFIERS';
27030 l_blind_discount VARCHAR2(30);
27031
27032 l_line_detail_index PLS_INTEGER;
27033 l_prod_qual_count PLS_INTEGER := 0;
27034 l_prod_cur_count PLS_INTEGER := 0;
27035 v_qualifiers_satisfied BOOLEAN;
27036
27037 l_list_header_id NUMBER := -9999;
27038 l_lst_line_id NUMBER := -9999;
27039 l_line_indx NUMBER := -9999;
27040 l_line_detail_indx NUMBER := -9999;
27041 l_qualifier_type VARCHAR2(20);
27042 l_satisfied_qualifier_type VARCHAR2(20);
27043 l_satisfied_list_header_id NUMBER := -9999;
27044 l_satisfied_lst_line_id NUMBER := -9999;
27045 l_satisfied_line_indx NUMBER := -9999;
27046 l_satisfied_line_detail_indx NUMBER := -9999;
27047 l_satisfied_incomp_code VARCHAR2(30);
27048 l_satisfied_modifier_lvl_code VARCHAR2(30);
27049 l_satisfied_primary_uom_flag VARCHAR2(30);
27050 l_exe_count NUMBER := 0;
27051 lq_line_index NUMBER := -9999;
27052 lq_list_line_id NUMBER := -9999;
27053 l_dummy VARCHAR2(1); -- 3520634
27054
27055 l_satis_quals_opt VARCHAR2(1);
27056 --l_perf_pvt_enabled VARCHAR2(1) := nvl(QP_PERF_PVT.enabled,G_NO);
27057
27058 E_ROUTINE_ERRORS EXCEPTION;
27059
27060 nROWS CONSTANT NUMBER := 1000;
27061
27062 BEGIN
27063
27064 x_status_code := FND_API.G_RET_STS_SUCCESS;
27065 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27066 engine_debug('Before Big Select');
27067
27068 END IF;
27069 --hw
27070 l_satis_quals_opt := nvl(fnd_profile.value('QP_SATIS_QUALS_OPT'), 'Y');
27071 --[julin/pricebook]
27072 IF nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES THEN
27073 l_satis_quals_opt := 'N';
27074 END IF;
27075
27076 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27077 engine_debug('QP_SATIS_QUALS_OPT: ' || l_satis_quals_opt);
27078
27079 END IF;
27080 --l_prod_qual_count := 0;
27081 l_prod_cur_count := 0;
27082
27083 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27084 engine_debug('Caching Header Qualifiers for phase : ' || p_pricing_phase_id);
27085 END IF;
27086 qp_debug_util.tstart('CACHE_HEADER_QUALIFIERS','Caching the header qualifiers');
27087 Cache_Header_Qualifiers(p_pricing_phase_id,l_status_code,l_status_text);
27088 qp_debug_util.tstop('CACHE_HEADER_QUALIFIERS');
27089 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
27090 RAISE E_ROUTINE_ERRORS;
27091 END IF;
27092
27093 --Added call for 3520634
27094 qp_debug_util.tstart('DELETE_HDRS_WITH_NO_PRODATTR','Deleting the headers with no product attribute');
27095 Delete_Hdrs_With_No_ProdAttr(p_pricing_phase_id,l_status_code,l_status_text);
27096 qp_debug_util.tstop('DELETE_HDRS_WITH_NO_PRODATTR');
27097 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
27098 RAISE E_ROUTINE_ERRORS;
27099 END IF;
27100
27101
27102 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27103 engine_debug('Caching Line Qualifiers for satisfied headers and pure line quals for phase : ' || p_pricing_phase_id);
27104 END IF;
27105 qp_debug_util.tstart('CACHE_LINE_QUALIFIERS','Caching the Line qualifiers');
27106 Cache_Line_Qualifiers(p_pricing_phase_id,l_status_code,l_status_text);
27107 qp_debug_util.tstop('CACHE_LINE_QUALIFIERS');
27108 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
27109 RAISE E_ROUTINE_ERRORS;
27110 END IF;
27111
27112 IF (G_QUALIFIER_TEMP <> 'E' OR G_LINE_QUALIFIER_TEMP <> 'E') THEN
27113 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27114 engine_debug('Caching Qualifiers for phase : ' || p_pricing_phase_id || ' Successful');
27115 END IF;
27116 -- For each primary search list header , list line and qualifier grouping no
27117 /*
27118 INDX,QP_PREQ_GRP.select_modifiers.select_modifiers_sel1,QP_PREQ_QUAL_TMP_N5,PRICING_STATUS_CODE,1
27119 */
27120 /* FOR c1 in (select list_header_id , list_line_id , qualifier_grouping_no
27121 from qp_preq_qual_tmp
27122 where pricing_status_code = G_STATUS_UNCHANGED
27123 and pricing_phase_id = p_pricing_phase_id
27124 order by list_header_id,list_line_id,qualifier_grouping_no) LOOP
27125 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27126 engine_debug('Executing Mini Caching Qualifiers for phase : ' || p_pricing_phase_id ||
27127 'List Header id : ' || c1.list_header_id || ' List Line Id : ' || c1.list_line_id ||
27128 'Grouping No: ' || c1.qualifier_grouping_no);
27129 END IF;
27130 Mini_Cache_Qualifiers(c1.list_header_id , c1.list_line_id , c1.qualifier_grouping_no,
27131 p_pricing_phase_id,l_status_code,l_status_text);
27132 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
27133 RAISE E_ROUTINE_ERRORS;
27134 END IF;
27135 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27136 engine_debug('Executing Mini Caching Qualifiers for phase : ' || p_pricing_phase_id || ' Successful');
27137 END IF;
27138 END LOOP; */
27139
27140 -- Added for 3520634. Mini_Cache_Qualifiers is meant to search qualifiers with search_ind=2.
27141 --Call to Mini_Cache_Qualifiers can be saved if there is no header level qualifier with
27142 -- search_ind=2 for list_headers_ids selected by engine so far.
27143
27144 OPEN get_list_headers_with_ind2;
27145 FETCH get_list_headers_with_ind2 INTO l_dummy;
27146 CLOSE get_list_headers_with_ind2;
27147
27148 IF (l_dummy = 'x') THEN --Added if clause for 3520634
27149 qp_debug_util.tstart('MINI_CACHE_QUALIFIERS','Caching the qualifiers with search_ind=2');
27150 Mini_Cache_Qualifiers(-999 , -999 , -999, p_pricing_phase_id,l_status_code,l_status_text);
27151 qp_debug_util.tstop('MINI_CACHE_QUALIFIERS');
27152 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
27153 RAISE E_ROUTINE_ERRORS;
27154 END IF;
27155 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27156 engine_debug('Executing Mini Caching Qualifiers for phase : ' || p_pricing_phase_id || ' Successful');
27157
27158 END IF;
27159 END IF;
27160 -- Qualifier Grouping
27161 qp_debug_util.tstart('MINI_CACHE_QUALIFIERS', 'Performing the Qualifier Grouping');
27162 Perform_Qualifier_Grouping(G_NO,p_pricing_phase_id,l_status_code,l_status_text);
27163 qp_debug_util.tstop('MINI_CACHE_QUALIFIERS');
27164
27165 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
27166 RAISE E_ROUTINE_ERRORS;
27167 END IF;
27168
27169 --hw
27170 --if QP_PERF_PVT.enabled = 'Y' then
27171 --if l_perf_pvt_enabled = 'Y' then
27172 /*
27173
27174 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27175 engine_debug('hw: l_get_line_index_for_quals_n path');
27176
27177 END IF;
27178 -- update null group count
27179 --update qp_preq_qual_tmp qpqt1
27180 --set qpqt1.null_group_cnt = (select count(*)
27181 from qp_preq_qual_tmp qpqt2
27182 where qpqt2.list_header_id = qpqt1.list_header_id
27183 and qpqt2.list_line_id = qpqt1.list_line_id
27184 and qpqt2.qualifier_grouping_no = -1
27185 and qpqt2.pricing_status_code <> G_DELETED_GRP
27186 and qpqt2.pricing_phase_id = p_pricing_phase_id
27187 and qpqt2.pricing_status_code = G_STATUS_UNCHANGED)
27188 where qpqt1.pricing_phase_id = p_pricing_phase_id
27189 and qpqt1.pricing_status_code = G_STATUS_UNCHANGED;
27190
27191 --and qpqt1.qualifier_grouping_no = -1; -- should update all groups and not just -1 groups
27192 -- as it is used as null_group_count + other_group_cnt = qualifier_group_cnt
27193
27194 -- update other group count
27195 --update qp_preq_qual_tmp qpqt1
27196 --set qpqt1.other_group_cnt = (select count(*)
27197 from qp_preq_qual_tmp qpqt2
27198 where qpqt2.list_header_id = qpqt1.list_header_id
27199 and qpqt2.list_line_id = qpqt1.list_line_id
27200 and qpqt2.qualifier_grouping_no <> -1
27201 and qpqt2.pricing_status_code <> G_DELETED_GRP
27202 and qpqt2.pricing_phase_id = p_pricing_phase_id
27203 and qpqt1.qualifier_grouping_no = qpqt2.qualifier_grouping_no
27204 and qpqt2.pricing_status_code = G_STATUS_UNCHANGED)
27205 where qpqt1.pricing_phase_id = p_pricing_phase_id
27206 and qpqt1.pricing_status_code = G_STATUS_UNCHANGED
27207 and qpqt1.qualifier_grouping_no <> -1;
27208
27209 IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
27210 for i in (select list_header_id,list_line_id,qualifier_grouping_no,null_group_cnt,other_group_cnt,search_ind,
27211 qualifier_group_cnt,others_group_cnt,qualifier_attribute_context,qualifier_attribute,qualifier_attribute_value
27212 from qp_preq_qual_tmp
27213 where pricing_phase_id = p_pricing_phase_id
27214 and pricing_status_code = 'X'
27215 order by 1,2,3)
27216 loop
27217 QP_PREQ_GRP.engine_debug('List Header Id: ' || i.list_header_id);
27218 QP_PREQ_GRP.engine_debug('List Line Id: ' || i.list_line_id);
27219 QP_PREQ_GRP.engine_debug('Grouping No: ' || i.qualifier_grouping_no);
27220 QP_PREQ_GRP.engine_debug('Null Group Cnt: ' || i.null_group_cnt);
27221 QP_PREQ_GRP.engine_debug('Other Group Cnt: ' || i.other_group_cnt);
27222 QP_PREQ_GRP.engine_debug('Satisfied Group Cnt: ' || i.qualifier_group_cnt);
27223 QP_PREQ_GRP.engine_debug('Search Ind: ' || i.search_ind);
27224 QP_PREQ_GRP.engine_debug('Others group cnt: ' || i.others_group_cnt);
27225 QP_PREQ_GRP.engine_debug('Qualifier Context: ' || i.qualifier_attribute_context);
27226 QP_PREQ_GRP.engine_debug('Qualifier Attribute: ' || i.qualifier_attribute);
27227 QP_PREQ_GRP.engine_debug('Qualifier Value: ' || i.qualifier_attribute_value);
27228 end loop;
27229 END IF;
27230
27231 OPEN l_get_line_index_for_quals_n;
27232
27233 LOOP
27234 G_LIST_HEADER_ID_TBL_Q.delete;
27235 G_LIST_LINE_ID_TBL_Q.delete;
27236 G_CONTEXT_TBL_Q.delete;
27237 G_ATTRIBUTE_TBL_Q.delete;
27238 G_VALUE_FROM_TBL_Q.delete;
27239 G_LIST_TYPE_CODE_TBL_Q.delete;
27240 G_ASK_FOR_FLAG_TBL_Q.delete;
27241 G_GROUPING_NO_TBL_Q.delete;
27242 G_QUALIFIER_GROUP_CNT_TBL_Q.delete;
27243 G_OTHERS_GROUP_CNT_TBL_Q.delete;
27244 G_HEADER_QUALS_EXIST_FLG_TBL_Q.delete;
27245 G_SEARCH_IND_TBL_Q.delete;
27246 G_VALIDATED_FLAG_TBL_Q.delete;
27247 G_APPLIED_FLAG_TBL_Q.delete;
27248 G_ATTRIBUTE_LEVEL_TBL_Q.delete;
27249 G_ATTRIBUTE_TYPE_TBL_Q.delete;
27250 G_QUALIFIER_PRECEDENCE_TBL_Q.delete;
27251 G_DATATYPE_TBL_Q.delete;
27252 G_QUALIFIER_TYPE_TBL_Q.delete;
27253 G_SETUP_VALUE_FROM_TBL_Q.delete;
27254 G_SETUP_VALUE_TO_TBL_Q.delete;
27255 G_PRICING_ATTR_FLAG_TBL_Q.delete;
27256 G_OPERATOR_TYPE_TBL_Q.delete;
27257 G_LINE_INDEX_TBL_Q.delete;
27258 G_PRICING_EFFECTIVE_DATE_TBL_Q.delete;
27259 G_START_DATE_ACTIVE_FIR_TBL_Q.delete;
27260 G_END_DATE_ACTIVE_FIR_TBL_Q.delete;
27261 G_LINE_TYPE_CODE_TBL_Q.delete;
27262 G_PRICING_STATUS_CODE_TBL_Q.delete;
27263 G_PRICING_PHASE_ID_TBL_Q.delete;
27264 G_UNIQUE_KEY_TBL_Q.delete;
27265 G_START_DATE_ACTIVE_TBL_H_Q.delete;
27266 G_END_DATE_ACTIVE_TBL_H_Q.delete;
27267 G_START_DATE_ACTIVE_SEC_TBL_Q.delete;
27268 G_END_DATE_ACTIVE_SEC_TBL_Q.delete;
27269 G_ACTIVE_DATE_FIR_TYPE_TBL_Q.delete;
27270 G_ACTIVE_DATE_SEC_TYPE_TBL_Q.delete;
27271 G_HEADER_LIMIT_EXISTS_TBL_Q.delete;
27272
27273 FETCH l_get_line_index_for_quals_n
27274 BULK COLLECT INTO
27275 G_LIST_HEADER_ID_TBL_Q
27276 , G_LIST_LINE_ID_TBL_Q
27277 , G_CONTEXT_TBL_Q
27278 , G_ATTRIBUTE_TBL_Q
27279 , G_VALUE_FROM_TBL_Q
27280 , G_LIST_TYPE_CODE_TBL_Q
27281 , G_ASK_FOR_FLAG_TBL_Q
27282 , G_GROUPING_NO_TBL_Q
27283 , G_QUALIFIER_GROUP_CNT_TBL_Q
27284 , G_OTHERS_GROUP_CNT_TBL_Q
27285 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
27286 , G_SEARCH_IND_TBL_Q
27287 , G_VALIDATED_FLAG_TBL_Q
27288 , G_APPLIED_FLAG_TBL_Q
27289 , G_ATTRIBUTE_LEVEL_TBL_Q
27290 , G_ATTRIBUTE_TYPE_TBL_Q
27291 , G_QUALIFIER_PRECEDENCE_TBL_Q
27292 , G_DATATYPE_TBL_Q
27293 , G_QUALIFIER_TYPE_TBL_Q
27294 , G_SETUP_VALUE_FROM_TBL_Q
27295 , G_SETUP_VALUE_TO_TBL_Q
27296 , G_PRICING_ATTR_FLAG_TBL_Q
27297 , G_OPERATOR_TYPE_TBL_Q
27298 , G_START_DATE_ACTIVE_TBL_Q
27299 , G_END_DATE_ACTIVE_TBL_Q
27300 , G_LINE_INDEX_TBL_Q
27301 , G_PRICING_EFFECTIVE_DATE_TBL_Q
27302 , G_START_DATE_ACTIVE_FIR_TBL_Q
27303 , G_END_DATE_ACTIVE_FIR_TBL_Q
27304 , G_LINE_TYPE_CODE_TBL_Q
27305 , G_PRICING_STATUS_CODE_TBL_Q
27306 , G_PRICING_PHASE_ID_TBL_Q
27307 , G_UNIQUE_KEY_TBL_Q
27308 , G_START_DATE_ACTIVE_TBL_H_Q
27309 , G_END_DATE_ACTIVE_TBL_H_Q
27310 , G_START_DATE_ACTIVE_SEC_TBL_Q
27311 , G_END_DATE_ACTIVE_SEC_TBL_Q
27312 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
27313 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
27314 , G_HEADER_LIMIT_EXISTS_TBL_Q LIMIT nROWS;
27315 EXIT WHEN G_LIST_HEADER_ID_TBL_Q.COUNT = 0;
27316
27317 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27318 engine_debug('Inserting no rows into qp_preq_qual_tmp for each line index');
27319 END IF;
27320 IF (G_LIST_HEADER_ID_TBL_Q.COUNT > 0) THEN
27321
27322 --G_QUALIFIER_TEMP := G_QUALIFIER_TEMP_UPDATED;
27323 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27324 engine_debug('Inserting rows into qp_preq_qual_tmp for each line index: ' || G_LIST_HEADER_ID_TBL_Q.COUNT);
27325
27326 END IF;
27327 INSERT_QUAL(
27328 G_LIST_HEADER_ID_TBL_Q
27329 , G_LIST_LINE_ID_TBL_Q
27330 , G_VALIDATED_FLAG_TBL_Q
27331 , G_APPLIED_FLAG_TBL_Q
27332 , G_ATTRIBUTE_LEVEL_TBL_Q
27333 , G_ATTRIBUTE_TYPE_TBL_Q
27334 , G_CONTEXT_TBL_Q
27335 , G_ATTRIBUTE_TBL_Q
27336 , G_VALUE_FROM_TBL_Q
27337 , G_GROUPING_NO_TBL_Q
27338 , G_QUALIFIER_PRECEDENCE_TBL_Q
27339 , G_DATATYPE_TBL_Q
27340 , G_SETUP_VALUE_FROM_TBL_Q
27341 , G_SETUP_VALUE_TO_TBL_Q
27342 , G_PRICING_ATTR_FLAG_TBL_Q
27343 , G_OPERATOR_TYPE_TBL_Q
27344 , G_LIST_TYPE_CODE_TBL_Q
27345 , G_ASK_FOR_FLAG_TBL_Q
27346 , G_QUALIFIER_TYPE_TBL_Q
27347 , G_QUALIFIER_GROUP_CNT_TBL_Q
27348 , G_OTHERS_GROUP_CNT_TBL_Q
27349 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
27350 , G_SEARCH_IND_TBL_Q
27351 , G_PRICING_STATUS_CODE_TBL_Q
27352 , G_START_DATE_ACTIVE_TBL_Q
27353 , G_END_DATE_ACTIVE_TBL_Q
27354 , G_LINE_INDEX_TBL_Q
27355 , G_PRICING_EFFECTIVE_DATE_TBL_Q
27356 , G_START_DATE_ACTIVE_FIR_TBL_Q
27357 , G_END_DATE_ACTIVE_FIR_TBL_Q
27358 , G_LINE_TYPE_CODE_TBL_Q
27359 , G_PRICING_PHASE_ID_TBL_Q
27360 , G_UNIQUE_KEY_TBL_Q
27361 , G_START_DATE_ACTIVE_TBL_H_Q
27362 , G_END_DATE_ACTIVE_TBL_H_Q
27363 , G_START_DATE_ACTIVE_SEC_TBL_Q
27364 , G_END_DATE_ACTIVE_SEC_TBL_Q
27365 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
27366 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
27367 , G_HEADER_LIMIT_EXISTS_TBL_Q
27368 , l_status_code
27369 , l_status_text);
27370 END IF;
27371 END LOOP;
27372 CLOSE l_get_line_index_for_quals_n;
27373
27374 */
27375
27376 /* else */
27377
27378 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27379 engine_debug('hw: l_get_line_index_for_quals path');
27380 END IF;
27381 qp_debug_util.tstart('L_GET_LINE_INDEX_FOR_QUALS','Cursor L_GET_LINE_INDEX_FOR_QUALS');
27382 OPEN l_get_line_index_for_quals;
27383
27384 LOOP
27385 G_LIST_HEADER_ID_TBL_Q.delete;
27386 G_LIST_LINE_ID_TBL_Q.delete;
27387 G_CONTEXT_TBL_Q.delete;
27388 G_ATTRIBUTE_TBL_Q.delete;
27389 G_VALUE_FROM_TBL_Q.delete;
27390 G_LIST_TYPE_CODE_TBL_Q.delete;
27391 G_ASK_FOR_FLAG_TBL_Q.delete;
27392 G_GROUPING_NO_TBL_Q.delete;
27393 G_QUALIFIER_GROUP_CNT_TBL_Q.delete;
27394 G_OTHERS_GROUP_CNT_TBL_Q.delete;
27395 G_HEADER_QUALS_EXIST_FLG_TBL_Q.delete;
27396 G_SEARCH_IND_TBL_Q.delete;
27397 G_VALIDATED_FLAG_TBL_Q.delete;
27398 G_APPLIED_FLAG_TBL_Q.delete;
27399 G_ATTRIBUTE_LEVEL_TBL_Q.delete;
27400 G_ATTRIBUTE_TYPE_TBL_Q.delete;
27401 G_QUALIFIER_PRECEDENCE_TBL_Q.delete;
27402 G_DATATYPE_TBL_Q.delete;
27403 G_QUALIFIER_TYPE_TBL_Q.delete;
27404 G_SETUP_VALUE_FROM_TBL_Q.delete;
27405 G_SETUP_VALUE_TO_TBL_Q.delete;
27406 G_PRICING_ATTR_FLAG_TBL_Q.delete;
27407 G_OPERATOR_TYPE_TBL_Q.delete;
27408 G_LINE_INDEX_TBL_Q.delete;
27409 G_PRICING_EFFECTIVE_DATE_TBL_Q.delete;
27410 G_START_DATE_ACTIVE_FIR_TBL_Q.delete;
27411 G_END_DATE_ACTIVE_FIR_TBL_Q.delete;
27412 G_LINE_TYPE_CODE_TBL_Q.delete;
27413 G_PRICING_STATUS_CODE_TBL_Q.delete;
27414 G_PRICING_PHASE_ID_TBL_Q.delete;
27415 G_UNIQUE_KEY_TBL_Q.delete;
27416 G_START_DATE_ACTIVE_TBL_H_Q.delete;
27417 G_END_DATE_ACTIVE_TBL_H_Q.delete;
27418 G_START_DATE_ACTIVE_SEC_TBL_Q.delete;
27419 G_END_DATE_ACTIVE_SEC_TBL_Q.delete;
27420 G_ACTIVE_DATE_FIR_TYPE_TBL_Q.delete;
27421 G_ACTIVE_DATE_SEC_TYPE_TBL_Q.delete;
27422 G_HEADER_LIMIT_EXISTS_TBL_Q.delete;
27423 G_DERIVED_QUALIFIER_FLAG_TBL_Q.delete; -- Added for TCA
27424
27425 FETCH l_get_line_index_for_quals
27426 BULK COLLECT INTO
27427 G_LIST_HEADER_ID_TBL_Q
27428 , G_LIST_LINE_ID_TBL_Q
27429 , G_CONTEXT_TBL_Q
27430 , G_ATTRIBUTE_TBL_Q
27431 , G_VALUE_FROM_TBL_Q
27432 , G_LIST_TYPE_CODE_TBL_Q
27433 , G_ASK_FOR_FLAG_TBL_Q
27434 , G_GROUPING_NO_TBL_Q
27435 , G_QUALIFIER_GROUP_CNT_TBL_Q
27436 , G_OTHERS_GROUP_CNT_TBL_Q
27437 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
27438 , G_SEARCH_IND_TBL_Q
27439 , G_VALIDATED_FLAG_TBL_Q
27440 , G_APPLIED_FLAG_TBL_Q
27441 , G_ATTRIBUTE_LEVEL_TBL_Q
27442 , G_ATTRIBUTE_TYPE_TBL_Q
27443 , G_QUALIFIER_PRECEDENCE_TBL_Q
27444 , G_DATATYPE_TBL_Q
27445 , G_QUALIFIER_TYPE_TBL_Q
27446 , G_SETUP_VALUE_FROM_TBL_Q
27447 , G_SETUP_VALUE_TO_TBL_Q
27448 , G_PRICING_ATTR_FLAG_TBL_Q
27449 , G_OPERATOR_TYPE_TBL_Q
27450 , G_START_DATE_ACTIVE_TBL_Q
27451 , G_END_DATE_ACTIVE_TBL_Q
27452 , G_LINE_INDEX_TBL_Q
27453 , G_PRICING_EFFECTIVE_DATE_TBL_Q
27454 , G_START_DATE_ACTIVE_FIR_TBL_Q
27455 , G_END_DATE_ACTIVE_FIR_TBL_Q
27456 , G_LINE_TYPE_CODE_TBL_Q
27457 , G_PRICING_STATUS_CODE_TBL_Q
27458 , G_PRICING_PHASE_ID_TBL_Q
27459 , G_UNIQUE_KEY_TBL_Q
27460 , G_START_DATE_ACTIVE_TBL_H_Q
27461 , G_END_DATE_ACTIVE_TBL_H_Q
27462 , G_START_DATE_ACTIVE_SEC_TBL_Q
27463 , G_END_DATE_ACTIVE_SEC_TBL_Q
27464 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
27465 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
27466 , G_HEADER_LIMIT_EXISTS_TBL_Q
27467 , G_DERIVED_QUALIFIER_FLAG_TBL_Q LIMIT nROWS; -- Added for TCA
27468 EXIT WHEN G_LIST_HEADER_ID_TBL_Q.COUNT = 0;
27469
27470 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27471 engine_debug('Inserting no rows into qp_preq_qual_tmp for each line index');
27472 END IF;
27473 IF (G_LIST_HEADER_ID_TBL_Q.COUNT > 0) THEN
27474
27475 --G_QUALIFIER_TEMP := G_QUALIFIER_TEMP_UPDATED;
27476 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27477 engine_debug('Inserting rows into qp_preq_qual_tmp for each line index: ' || G_LIST_HEADER_ID_TBL_Q.COUNT);
27478 END IF;
27479 qp_debug_util.tstart('INSERT_QUAL','Cursor INSERT_QUAL');
27480 INSERT_QUAL(
27481 G_LIST_HEADER_ID_TBL_Q
27482 , G_LIST_LINE_ID_TBL_Q
27483 , G_VALIDATED_FLAG_TBL_Q
27484 , G_APPLIED_FLAG_TBL_Q
27485 , G_ATTRIBUTE_LEVEL_TBL_Q
27486 , G_ATTRIBUTE_TYPE_TBL_Q
27487 , G_CONTEXT_TBL_Q
27488 , G_ATTRIBUTE_TBL_Q
27489 , G_VALUE_FROM_TBL_Q
27490 , G_GROUPING_NO_TBL_Q
27491 , G_QUALIFIER_PRECEDENCE_TBL_Q
27492 , G_DATATYPE_TBL_Q
27493 , G_SETUP_VALUE_FROM_TBL_Q
27494 , G_SETUP_VALUE_TO_TBL_Q
27495 , G_PRICING_ATTR_FLAG_TBL_Q
27496 , G_OPERATOR_TYPE_TBL_Q
27497 , G_LIST_TYPE_CODE_TBL_Q
27498 , G_ASK_FOR_FLAG_TBL_Q
27499 , G_QUALIFIER_TYPE_TBL_Q
27500 , G_QUALIFIER_GROUP_CNT_TBL_Q
27501 , G_OTHERS_GROUP_CNT_TBL_Q
27502 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
27503 , G_SEARCH_IND_TBL_Q
27504 , G_PRICING_STATUS_CODE_TBL_Q
27505 , G_START_DATE_ACTIVE_TBL_Q
27506 , G_END_DATE_ACTIVE_TBL_Q
27507 , G_LINE_INDEX_TBL_Q
27508 , G_PRICING_EFFECTIVE_DATE_TBL_Q
27509 , G_START_DATE_ACTIVE_FIR_TBL_Q
27510 , G_END_DATE_ACTIVE_FIR_TBL_Q
27511 , G_LINE_TYPE_CODE_TBL_Q
27512 , G_PRICING_PHASE_ID_TBL_Q
27513 , G_UNIQUE_KEY_TBL_Q
27514 , G_START_DATE_ACTIVE_TBL_H_Q
27515 , G_END_DATE_ACTIVE_TBL_H_Q
27516 , G_START_DATE_ACTIVE_SEC_TBL_Q
27517 , G_END_DATE_ACTIVE_SEC_TBL_Q
27518 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
27519 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
27520 , G_HEADER_LIMIT_EXISTS_TBL_Q
27521 , G_DERIVED_QUALIFIER_FLAG_TBL_Q
27522 , l_status_code
27523 , l_status_text);
27524 qp_debug_util.tstop('INSERT_QUAL');
27525 END IF;
27526 END LOOP;
27527 qp_debug_util.tstop('L_GET_LINE_INDEX_FOR_QUALS');
27528 CLOSE l_get_line_index_for_quals;
27529
27530 -- Qualifier Grouping For Each Line Index
27531 Perform_Qualifier_Grouping(G_YES,p_pricing_phase_id,l_status_code,l_status_text);
27532
27533 /* end if; */
27534
27535 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
27536 RAISE E_ROUTINE_ERRORS;
27537 END IF;
27538
27539 END IF; --IF (G_QUALIFIER_TEMP <> 'E' OR G_LINE_QUALIFIER_TEMP <> 'E') THEN
27540 qp_debug_util.tstart('L_PROD_QUAL_CUR','Cursor Loop l_prod_qual_cur');
27541 OPEN l_prod_qual_cur (p_pricing_phase_id, -99,-99,-99);
27542
27543
27544 LOOP
27545 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27546 engine_debug('In l_prod_qual_cur loop fetch');
27547 END IF;
27548 G_LIST_HEADER_ID_TBL_P.delete;
27549 G_LIST_LINE_ID_TBL_P.delete;
27550 G_LIST_LINE_TYPE_TBL_P.delete;
27551 G_LINE_INDEX_TBL_P.delete;
27552 G_VALIDATED_FLAG_TBL_P.delete;
27553 G_APPLIED_FLAG_TBL_P.delete;
27554 G_ATTRIBUTE_LEVEL_TBL_P.delete;
27555 G_ATTRIBUTE_TYPE_TBL_P.delete;
27556 G_CONTEXT_TBL_P.delete;
27557 G_ATTRIBUTE_TBL_P.delete;
27558 G_VALUE_FROM_TBL_P.delete;
27559 G_SETUP_VALUE_FROM_TBL_P.delete;
27560 G_PRICING_ATTR_FLAG_TBL_P.delete;
27561 G_PRODUCT_UOM_CODE_TBL_P.delete;
27562 G_EXCLUDER_FLAG_TBL_P.delete;
27563 G_AUTOMATIC_FLAG_TBL_P.delete;
27564 G_MODIFIER_LEVEL_CODE_TBL_P.delete;
27565 G_NET_AMOUNT_FLAG_TBL_P.delete; --IT net_amount 2720717
27566 G_PRIMARY_UOM_FLAG_TBL_P.delete;
27567 G_OPER_CALCULATION_CODE_TBL_P.delete;
27568 G_OPERAND_VALUE_TBL_P.delete;
27569 G_PRICING_GROUP_SEQUENCE_TBL_P.delete;
27570 G_PRICING_PHASE_ID_TBL_P.delete;
27571 G_PRICE_BREAK_TYPE_CODE_TBL_P.delete;
27572 G_INCOMP_GRP_CODE_TBL_P.delete;
27573 G_PRICE_FORMULA_ID_TBL_P.delete;
27574 G_PRODUCT_PRECEDENCE_TBL_P.delete;
27575 G_OVERRIDE_FLAG_TBL_P.delete;
27576 G_BENEFIT_QTY_TBL_P.delete;
27577 G_BENEFIT_UOM_CODE_TBL_P.delete;
27578 G_SERVICE_DURATION_TBL_P.delete; -- service project
27579 G_SERVICE_PERIOD_TBL_P.delete; -- service project
27580 G_LIST_LINE_NO_TBL_P.delete;
27581 G_ACCRUAL_FLAG_TBL_P.delete;
27582 G_ACCR_CONVERSION_RATE_TBL_P.delete;
27583 G_ESTIM_ACCRUAL_RATE_TBL_P.delete;
27584 G_ASK_FOR_FLAG_TBL_P.delete;
27585 G_LIST_TYPE_CODE_TBL_P.delete;
27586 G_HEADER_LIMIT_EXISTS_TBL_P.delete;
27587 G_LINE_LIMIT_EXISTS_TBL_P.delete;
27588 G_QUALIFIER_TYPE_TBL_P.delete;
27589 G_CHARGE_TYPE_CODE_TBL_P.delete;
27590 G_CHARGE_SUBTYPE_CODE_TBL_P.delete;
27591 G_ACCUM_CONTEXT_TBL_P.delete; -- for accum range break
27592 G_ACCUM_ATTRIBUTE_TBL_P.delete; -- for accum range break
27593 G_ACCUM_FLAG_TBL_P.delete; -- for accum range break
27594
27595 FETCH l_prod_qual_cur BULK COLLECT INTO
27596 G_LIST_HEADER_ID_TBL_P,
27597 G_LIST_LINE_ID_TBL_P,
27598 G_LIST_LINE_TYPE_TBL_P,
27599 G_LINE_INDEX_TBL_P,
27600 G_VALIDATED_FLAG_TBL_P,
27601 G_APPLIED_FLAG_TBL_P,
27602 G_ATTRIBUTE_LEVEL_TBL_P,
27603 G_ATTRIBUTE_TYPE_TBL_P,
27604 G_CONTEXT_TBL_P,
27605 G_ATTRIBUTE_TBL_P,
27606 G_VALUE_FROM_TBL_P,
27607 G_SETUP_VALUE_FROM_TBL_P,
27608 G_PRICING_ATTR_FLAG_TBL_P,
27609 G_PRODUCT_UOM_CODE_TBL_P,
27610 G_EXCLUDER_FLAG_TBL_P,
27611 G_AUTOMATIC_FLAG_TBL_P,
27612 G_MODIFIER_LEVEL_CODE_TBL_P,
27613 G_PRIMARY_UOM_FLAG_TBL_P,
27614 G_OPER_CALCULATION_CODE_TBL_P,
27615 G_OPERAND_VALUE_TBL_P,
27616 G_NET_AMOUNT_FLAG_TBL_P, --IT net_amount 2720717
27617 G_PRICING_GROUP_SEQUENCE_TBL_P,
27618 G_PRICING_PHASE_ID_TBL_P,
27619 G_PRICE_BREAK_TYPE_CODE_TBL_P,
27620 G_INCOMP_GRP_CODE_TBL_P,
27621 G_PRICE_FORMULA_ID_TBL_P,
27622 G_PRODUCT_PRECEDENCE_TBL_P,
27623 G_OVERRIDE_FLAG_TBL_P,
27624 G_BENEFIT_QTY_TBL_P,
27625 G_BENEFIT_UOM_CODE_TBL_P,
27626 G_SERVICE_DURATION_TBL_P, -- service project
27627 G_SERVICE_PERIOD_TBL_P, -- service project
27628 G_LIST_LINE_NO_TBL_P,
27629 G_ACCRUAL_FLAG_TBL_P,
27630 G_ACCR_CONVERSION_RATE_TBL_P,
27631 G_ESTIM_ACCRUAL_RATE_TBL_P,
27632 G_ASK_FOR_FLAG_TBL_P,
27633 G_LIST_TYPE_CODE_TBL_P,
27634 G_HEADER_LIMIT_EXISTS_TBL_P,
27635 G_LINE_LIMIT_EXISTS_TBL_P,
27636 G_QUALIFIER_TYPE_TBL_P ,
27637 G_CHARGE_TYPE_CODE_TBL_P ,
27638 G_CHARGE_SUBTYPE_CODE_TBL_P,
27639 G_ACCUM_CONTEXT_TBL_P, -- accum range break
27640 G_ACCUM_ATTRIBUTE_TBL_P, -- accum range break
27641 G_ACCUM_FLAG_TBL_P LIMIT nROWS;
27642
27643 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
27644
27645
27646 IF (G_LINE_INDEX_TBL_P.COUNT > 0) THEN
27647 FOR I in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST LOOP
27648
27649 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27650 engine_debug(' Prod Qual List line id selected from big select: '||G_LIST_LINE_ID_TBL_P(I));
27651
27652 END IF;
27653 IF (lq_line_index <> G_LINE_INDEX_TBL_P(I) OR lq_list_line_id <> G_LIST_LINE_ID_TBL_P(I)) THEN
27654 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
27655
27656 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(I);
27657 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
27658 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(I);
27659 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(I);
27660 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
27661 G_PRICING_STATUS_TEXT_LD_TBL(M) :='PRODUCT_QUALIFIER_ONLY';
27662 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
27663 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
27664 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
27665 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(I);
27666 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(I);
27667 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(I);
27668 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_QUALIFIER_ONLY';
27669 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(I);
27670 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(I);
27671 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(I);
27672 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(I);
27673 G_NET_AMOUNT_FLAG_TBL(M) :=G_NET_AMOUNT_FLAG_TBL_P(I); --IT net_amount 2720717
27674 G_ASK_FOR_FLAG_TBL(M) :=G_ASK_FOR_FLAG_TBL_P(I);
27675 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(I);
27676 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(I);
27677 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(I);
27678 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
27679 G_OVERRIDE_FLAG_TBL(M) :=G_OVERRIDE_FLAG_TBL_P(I);
27680 G_BENEFIT_QTY_TBL(M) :=G_BENEFIT_QTY_TBL_P(I);
27681 G_BENEFIT_UOM_CODE_TBL(M) :=G_BENEFIT_UOM_CODE_TBL_P(I);
27682 G_SERVICE_DURATION_TBL(M) :=G_SERVICE_DURATION_TBL_P(I); -- service project
27683 G_SERVICE_PERIOD_TBL(M) :=G_SERVICE_PERIOD_TBL_P(I); -- service project
27684 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
27685 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
27686 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(I);
27687 G_ACCRUAL_FLAG_TBL(M) :=G_ACCRUAL_FLAG_TBL_P(I);
27688 G_ACCRUAL_CONVERSION_RATE_TBL(M) :=G_ACCR_CONVERSION_RATE_TBL_P(I);
27689 G_ESTIM_ACCRUAL_RATE_TBL(M) :=G_ESTIM_ACCRUAL_RATE_TBL_P(I);
27690 G_HEADER_LIMIT_EXISTS_TBL(M) :=G_HEADER_LIMIT_EXISTS_TBL_P(I);
27691 G_LINE_LIMIT_EXISTS_TBL(M) :=G_LINE_LIMIT_EXISTS_TBL_P(I);
27692 G_CHARGE_TYPE_CODE_TBL(M) :=nvl(G_CHARGE_TYPE_CODE_TBL_P(I),'');
27693 G_CHARGE_SUBTYPE_CODE_TBL(M) :=nvl(G_CHARGE_SUBTYPE_CODE_TBL_P(I),'');
27694 G_ACCUM_CONTEXT_TBL(M) :=G_ACCUM_CONTEXT_TBL_P(I); -- accum range break
27695 G_ACCUM_ATTRIBUTE_TBL(M) :=G_ACCUM_ATTRIBUTE_TBL_P(I); -- accum range break
27696 G_ACCUM_FLAG_TBL(M) :=G_ACCUM_FLAG_TBL_P(I); -- accum range break
27697 M:=M+1;
27698 l_satisfied_list_header_id := G_LIST_HEADER_ID_TBL_P(I);
27699 l_satisfied_lst_line_id := G_LIST_LINE_ID_TBL_P(I);
27700 l_satisfied_line_indx := G_LINE_INDEX_TBL_P(I);
27701 l_satisfied_line_detail_indx := L_LINE_DETAIL_INDEX;
27702 l_satisfied_incomp_code := G_INCOMP_GRP_CODE_TBL_P(I);
27703 l_satisfied_modifier_lvl_code := G_MODIFIER_LEVEL_CODE_TBL_P(I);
27704 l_satisfied_primary_uom_flag := G_PRIMARY_UOM_FLAG_TBL_P(I);
27705 lq_line_index := G_LINE_INDEX_TBL_P(I);
27706 lq_list_line_id := G_LIST_LINE_ID_TBL_P(I);
27707 END IF;
27708
27709 --hw
27710 --if l_satis_quals_opt <> 'N' then
27711 --4029027 commented out by 4455344/4489224
27712 --bug 4029027
27713 --IF (l_satis_quals_opt <> 'N' or (l_satis_quals_opt = 'N' and g_context_tbl_p(i) <> G_QUALIFIER_TYPE)) THEN
27714
27715 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27716 engine_debug(' #2 ' );
27717 END IF;
27718 --PRODUCT ATTRIBUTES
27719 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
27720 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_P(I);
27721 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_P(I);
27722 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_P(I);
27723 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_P(I);
27724 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_P(I);
27725 G_VALUE_TO_tbl(K) :=NULL;
27726 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
27727 G_VALIDATED_FLAG_tbl(K) :=G_VALIDATED_FLAG_TBL_P(I);
27728 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
27729 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
27730 G_PRICING_ATTR_FLAG_tbl(K) :=G_PRICING_ATTR_FLAG_TBL_P(I);
27731 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
27732 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
27733 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
27734 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_P(I);
27735 G_SETUP_VALUE_TO_tbl(K) :=NULL;
27736 G_GROUPING_NUMBER_tbl(K) :=NULL;
27737 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
27738 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_ONLY';
27739 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
27740 G_DATATYPE_tbl(K) :=NULL;
27741 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
27742 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
27743 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_P(I);
27744 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
27745 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
27746 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
27747 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
27748 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
27749 K:= K+1;
27750 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27751 engine_debug('The value of K : ' || K);
27752 END IF;
27753
27754 IF l_satis_quals_opt = 'Y' THEN -- [4455344/4489224] {
27755 IF (l_satisfied_list_header_id <> -9999) THEN
27756
27757 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27758 engine_debug('Qualifiers for List Header Id : ' || l_satisfied_list_header_id );
27759 engine_debug('Qualifiers for List Line Id : ' || l_satisfied_lst_line_id );
27760
27761 END IF;
27762
27763 qp_debug_util.tstart('L_GET_SATISFIED_QUALS','Cursor Loop L_GET_SATISFIED_QUALS');
27764
27765 FOR V IN l_get_satisfied_quals(l_satisfied_list_header_id,l_satisfied_lst_line_id, l_satisfied_line_indx)
27766 LOOP
27767 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27768 engine_debug(' Qual #3 ' );
27769 END IF;
27770 --Qualifier attributes
27771 G_LINE_INDEX_tbl(K) :=l_satisfied_line_indx;
27772 G_ATTRIBUTE_LEVEL_tbl(K) :=V.QUALIFIER_ATTRIBUTE_LEVEL;
27773 G_ATTRIBUTE_TYPE_tbl(K) :=V.QUALIFIER_ATTRIBUTE_TYPE;
27774 G_CONTEXT_tbl(K) :=V.QUALIFIER_ATTRIBUTE_CONTEXT;
27775 G_ATTRIBUTE_tbl(K) :=V.QUALIFIER_ATTRIBUTE;
27776 G_VALUE_FROM_tbl(K) :=V.QUALIFIER_ATTRIBUTE_VALUE;
27777 G_VALUE_TO_tbl(K) :=NULL;
27778 G_COMPARISON_OPERATOR_TYPE_tbl(K):=V.QUALIFIER_OPERATOR_TYPE;
27779 G_VALIDATED_FLAG_tbl(K) :=V.VALIDATED_FLAG;
27780 G_APPLIED_FLAG_tbl(K) :=V.APPLIED_FLAG;
27781 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
27782 G_PRICING_ATTR_FLAG_tbl(K) :=V.QUALIFIER_PRICING_ATTR_FLAG;
27783 G_LINE_DETAIL_INDEX_tbl(K) :=l_satisfied_line_detail_indx;
27784 G_LIST_HEADER_ID_tbl(K) :=l_satisfied_list_header_id;
27785 G_LIST_LINE_ID_tbl(K) :=l_satisfied_lst_line_id;
27786 G_SETUP_VALUE_FROM_tbl(K) :=V.SETUP_VALUE_FROM;
27787 G_SETUP_VALUE_TO_tbl(K) :=V.SETUP_VALUE_TO;
27788 G_GROUPING_NUMBER_tbl(K) :=V.QUALIFIER_GROUPING_NO;
27789 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
27790 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_ONLY';
27791 G_QUALIFIER_PRECEDENCE_tbl(K) :=V.QUALIFIER_PRECEDENCE;
27792 G_DATATYPE_tbl(K) :=V.QUALIFIER_DATATYPE;
27793 G_EXCLUDER_FLAG_TBL(K) :=NULL;
27794 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
27795 G_QUALIFIER_TYPE_TBL(K) :=V.QUALIFIER_TYPE;
27796 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
27797 G_INCOMP_GRP_CODE_TBL_A(K) :=l_satisfied_incomp_code;
27798 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
27799 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=l_satisfied_modifier_lvl_code;
27800 G_PRIMARY_UOM_FLAG_TBL_A(K) :=l_satisfied_primary_uom_flag;
27801 K:= K+1;
27802
27803 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27804 engine_debug('The value of K : ' || K);
27805 engine_debug('Qualifier Context : ' || v.qualifier_attribute_context);
27806 engine_debug('Qualifier Attribute : ' || v.qualifier_attribute);
27807 engine_debug('Qualifier Value : ' || v.qualifier_attribute_value);
27808 engine_debug('Qualifier List Header Id : ' || v.list_header_id);
27809 engine_debug('Qualifier List line Id : ' || v.list_line_id);
27810 engine_debug('Qualifier Type : ' || v.qualifier_type);
27811
27812 END IF;
27813 END LOOP;
27814
27815 qp_debug_util.tstop('L_GET_SATISFIED_QUALS');
27816
27817 --Reset the satisfied list header and list line info
27818 l_satisfied_list_header_id := -9999;
27819 l_satisfied_lst_line_id := -9999;
27820 l_satisfied_line_indx := -9999;
27821 l_satisfied_line_detail_indx := -9999;
27822
27823 END IF;
27824
27825 end if; -- } [4455344/4489224]
27826
27827 END LOOP;
27828 END IF;
27829 END LOOP;
27830
27831 qp_debug_util.tstop('L_PROD_QUAL_CUR');
27832
27833 CLOSE l_prod_qual_cur;
27834
27835 lq_line_index := -9999;
27836 lq_list_line_id := -9999;
27837 qp_debug_util.tstart('L_PROD_QUAL_PRIC_CUR','Cursor Loop l_prod_qual_pric_cur');
27838 OPEN l_prod_qual_pric_cur(p_pricing_phase_id, -99,-99,-99) ;
27839
27840
27841 LOOP
27842 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27843 engine_debug('In l_prod_qual_pric_cur loop fetch');
27844 END IF;
27845 G_LIST_HEADER_ID_TBL_P.delete;
27846 G_LIST_LINE_ID_TBL_P.delete;
27847 G_LIST_LINE_TYPE_TBL_P.delete;
27848 G_LINE_INDEX_TBL_P.delete;
27849 G_VALIDATED_FLAG_TBL_P.delete;
27850 G_APPLIED_FLAG_TBL_P.delete;
27851 G_ATTRIBUTE_LEVEL_TBL_P.delete;
27852 G_ATTRIBUTE_TYPE_TBL_P.delete;
27853 G_CONTEXT_TBL_P.delete;
27854 G_ATTRIBUTE_TBL_P.delete;
27855 G_VALUE_FROM_TBL_P.delete;
27856 G_SETUP_VALUE_FROM_TBL_P.delete;
27857 G_PRICING_ATTR_FLAG_TBL_P.delete;
27858 G_PRODUCT_UOM_CODE_TBL_P.delete;
27859 G_EXCLUDER_FLAG_TBL_P.delete;
27860 G_ATTRIBUTE_LEVEL_TBL_PR.delete;
27861 G_ATTRIBUTE_TYPE_TBL_PR.delete;
27862 G_CONTEXT_TBL_PR.delete;
27863 G_ATTRIBUTE_TBL_PR.delete;
27864 G_VALUE_FROM_TBL_PR.delete;
27865 G_OPERATOR_TYPE_TBL_PR.delete;
27866 G_SETUP_VALUE_FROM_TBL_PR.delete;
27867 G_SETUP_VALUE_TO_TBL_PR.delete;
27868 G_DATATYPE_TBL_PR.delete;
27869 G_AUTOMATIC_FLAG_TBL_P.delete;
27870 G_MODIFIER_LEVEL_CODE_TBL_P.delete;
27871 G_PRIMARY_UOM_FLAG_TBL_P.delete;
27872 G_OPER_CALCULATION_CODE_TBL_P.delete;
27873 G_OPERAND_VALUE_TBL_P.delete;
27874 G_NET_AMOUNT_FLAG_TBL_P.delete; -- IT net_amount 2720717
27875 G_PRICING_GROUP_SEQUENCE_TBL_P.delete;
27876 G_PRICING_PHASE_ID_TBL_P.delete;
27877 G_PRICE_BREAK_TYPE_CODE_TBL_P.delete;
27878 G_INCOMP_GRP_CODE_TBL_P.delete;
27879 G_PRICE_FORMULA_ID_TBL_P.delete;
27880 G_PRODUCT_PRECEDENCE_TBL_P.delete;
27881 G_OVERRIDE_FLAG_TBL_P.delete;
27882 G_BENEFIT_QTY_TBL_P.delete;
27883 G_BENEFIT_UOM_CODE_TBL_P.delete;
27884 G_SERVICE_DURATION_TBL_P.delete; -- service project
27885 G_SERVICE_PERIOD_TBL_P.delete; -- service project
27886 G_LIST_LINE_NO_TBL_P.delete;
27887 G_ACCRUAL_FLAG_TBL_P.delete;
27888 G_ACCR_CONVERSION_RATE_TBL_P.delete;
27889 G_ESTIM_ACCRUAL_RATE_TBL_P.delete;
27890 G_ASK_FOR_FLAG_TBL_P.delete;
27891 G_LIST_TYPE_CODE_TBL_P.delete;
27892 G_HEADER_LIMIT_EXISTS_TBL_P.delete;
27893 G_LINE_LIMIT_EXISTS_TBL_P.delete;
27894 G_QUALIFIER_TYPE_TBL_P.delete;
27895 G_CHARGE_TYPE_CODE_TBL_P.delete;
27896 G_CHARGE_SUBTYPE_CODE_TBL_P.delete;
27897 G_ACCUM_CONTEXT_TBL_P.delete; -- accum range break
27898 G_ACCUM_ATTRIBUTE_TBL_P.delete; -- accum range break
27899 G_ACCUM_FLAG_TBL_P.delete; -- accum range break
27900
27901 FETCH l_prod_qual_pric_cur BULK COLLECT INTO
27902 G_LIST_HEADER_ID_TBL_P,
27903 G_LIST_LINE_ID_TBL_P,
27904 G_LIST_LINE_TYPE_TBL_P,
27905 G_LINE_INDEX_TBL_P,
27906 G_VALIDATED_FLAG_TBL_P,
27907 G_APPLIED_FLAG_TBL_P,
27908 G_ATTRIBUTE_LEVEL_TBL_P,
27909 G_ATTRIBUTE_TYPE_TBL_P,
27910 G_CONTEXT_TBL_P,
27911 G_ATTRIBUTE_TBL_P,
27912 G_VALUE_FROM_TBL_P,
27913 G_SETUP_VALUE_FROM_TBL_P,
27914 G_PRICING_ATTR_FLAG_TBL_P,
27915 G_PRODUCT_UOM_CODE_TBL_P,
27916 G_EXCLUDER_FLAG_TBL_P,
27917 G_ATTRIBUTE_LEVEL_TBL_PR,
27918 G_ATTRIBUTE_TYPE_TBL_PR,
27919 G_CONTEXT_TBL_PR,
27920 G_ATTRIBUTE_TBL_PR,
27921 G_VALUE_FROM_TBL_PR,
27922 G_SETUP_VALUE_FROM_TBL_PR,
27923 G_SETUP_VALUE_TO_TBL_PR,
27924 G_OPERATOR_TYPE_TBL_PR,
27925 G_DATATYPE_TBL_PR,
27926 G_AUTOMATIC_FLAG_TBL_P,
27927 G_MODIFIER_LEVEL_CODE_TBL_P,
27928 G_PRIMARY_UOM_FLAG_TBL_P,
27929 G_OPER_CALCULATION_CODE_TBL_P,
27930 G_OPERAND_VALUE_TBL_P,
27931 G_NET_AMOUNT_FLAG_TBL_P, -- IT net_amount 2720717
27932 G_PRICING_GROUP_SEQUENCE_TBL_P,
27933 G_PRICING_PHASE_ID_TBL_P,
27934 G_PRICE_BREAK_TYPE_CODE_TBL_P,
27935 G_INCOMP_GRP_CODE_TBL_P,
27936 G_PRICE_FORMULA_ID_TBL_P,
27937 G_PRODUCT_PRECEDENCE_TBL_P,
27938 G_OVERRIDE_FLAG_TBL_P,
27939 G_BENEFIT_QTY_TBL_P,
27940 G_BENEFIT_UOM_CODE_TBL_P,
27941 G_SERVICE_DURATION_TBL_P, -- service project
27942 G_SERVICE_PERIOD_TBL_P, -- service project
27943 G_LIST_LINE_NO_TBL_P,
27944 G_ACCRUAL_FLAG_TBL_P,
27945 G_ACCR_CONVERSION_RATE_TBL_P,
27946 G_ESTIM_ACCRUAL_RATE_TBL_P,
27947 G_ASK_FOR_FLAG_TBL_P,
27948 G_LIST_TYPE_CODE_TBL_P,
27949 G_HEADER_LIMIT_EXISTS_TBL_P,
27950 G_LINE_LIMIT_EXISTS_TBL_P,
27951 G_QUALIFIER_TYPE_TBL_P ,
27952 G_CHARGE_TYPE_CODE_TBL_P ,
27953 G_CHARGE_SUBTYPE_CODE_TBL_P,
27954 G_ACCUM_CONTEXT_TBL_P, -- for accum range break
27955 G_ACCUM_ATTRIBUTE_TBL_P, -- for accum range break
27956 G_ACCUM_FLAG_TBL_P LIMIT nROWS;
27957
27958 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
27959
27960 IF (G_LINE_INDEX_TBL_P.COUNT > 0) THEN
27961 FOR I in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST LOOP
27962
27963 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27964 engine_debug(' Prod Qual Pric List line id selected from big select: '||G_LIST_LINE_ID_TBL_P(I) );
27965 engine_debug(' #1');
27966 END IF;
27967
27968
27969 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27970 engine_debug(' #2');
27971
27972 END IF;
27973 IF (lq_line_index <> G_LINE_INDEX_TBL_P(I) OR lq_list_line_id <> G_LIST_LINE_ID_TBL_P(I)) THEN
27974 l_line_detail_index :=GET_LINE_DETAIL_INDEX;
27975
27976 G_LINE_INDEX_LD_TBL(M ) :=G_LINE_INDEX_TBL_P(I);
27977 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
27978 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(I);
27979 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(I);
27980 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
27981 G_PRICING_STATUS_TEXT_LD_TBL(M) :='PRODUCT_QUALIFIER_PRICING';
27982 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
27983 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
27984 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
27985 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(I);
27986 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(I);
27987 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(I);
27988 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_QUALIFIER_PRICING';
27989 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(I);
27990 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(I);
27991 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(I);
27992 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(I);
27993 G_NET_AMOUNT_FLAG_TBL(M) :=G_NET_AMOUNT_FLAG_TBL_P(I); -- IT net_amount 2720717
27994 G_ASK_FOR_FLAG_TBL(M) :=G_ASK_FOR_FLAG_TBL_P(I);
27995 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(I);
27996 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(I);
27997 G_OVERRIDE_FLAG_TBL(M) :=G_OVERRIDE_FLAG_TBL_P(I);
27998 G_BENEFIT_QTY_TBL(M) :=G_BENEFIT_QTY_TBL_P(I);
27999 G_BENEFIT_UOM_CODE_TBL(M) :=G_BENEFIT_UOM_CODE_TBL_P(I);
28000 G_SERVICE_DURATION_TBL(M) :=G_SERVICE_DURATION_TBL_P(I); -- service project
28001 G_SERVICE_PERIOD_TBL(M) :=G_SERVICE_PERIOD_TBL_P(I); -- service project
28002 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(I);
28003 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
28004 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
28005 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
28006 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(I);
28007 G_ACCRUAL_FLAG_TBL(M) :=G_ACCRUAL_FLAG_TBL_P(I);
28008 G_ACCRUAL_CONVERSION_RATE_TBL(M) :=G_ACCR_CONVERSION_RATE_TBL_P(I);
28009 G_ESTIM_ACCRUAL_RATE_TBL(M) :=G_ESTIM_ACCRUAL_RATE_TBL_P(I);
28010 G_HEADER_LIMIT_EXISTS_TBL(M) :=G_HEADER_LIMIT_EXISTS_TBL_P(I);
28011 G_LINE_LIMIT_EXISTS_TBL(M) :=G_LINE_LIMIT_EXISTS_TBL_P(I);
28012 G_CHARGE_TYPE_CODE_TBL(M) :=nvl(G_CHARGE_TYPE_CODE_TBL_P(I),'');
28013 G_CHARGE_SUBTYPE_CODE_TBL(M) :=nvl(G_CHARGE_SUBTYPE_CODE_TBL_P(I),'');
28014 G_ACCUM_CONTEXT_TBL(M) :=G_ACCUM_CONTEXT_TBL_P(I); -- accum range break
28015 G_ACCUM_ATTRIBUTE_TBL(M) :=G_ACCUM_ATTRIBUTE_TBL_P(I); -- accum range break
28016 G_ACCUM_FLAG_TBL(M) :=G_ACCUM_FLAG_TBL_P(I); -- accum range break
28017 M:=M+1;
28018 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28019 engine_debug(' #4');
28020 END IF;
28021 l_satisfied_list_header_id := G_LIST_HEADER_ID_TBL_P(I);
28022 l_satisfied_lst_line_id := G_LIST_LINE_ID_TBL_P(I);
28023 l_satisfied_line_indx := G_LINE_INDEX_TBL_P(I);
28024 l_satisfied_line_detail_indx := L_LINE_DETAIL_INDEX;
28025 l_satisfied_incomp_code := G_INCOMP_GRP_CODE_TBL_P(I);
28026 l_satisfied_modifier_lvl_code := G_MODIFIER_LEVEL_CODE_TBL_P(I);
28027 l_satisfied_primary_uom_flag := G_PRIMARY_UOM_FLAG_TBL_P(I);
28028 lq_line_index := G_LINE_INDEX_TBL_P(I);
28029 lq_list_line_id := G_LIST_LINE_ID_TBL_P(I);
28030 END IF; --end if for if list_line_no_exists
28031
28032 --if l_satis_quals_opt <> 'N' then
28033 --bug 4029027
28034 IF (l_satis_quals_opt <> 'N' or (l_satis_quals_opt = 'N' and g_context_tbl_p(i) <> G_QUALIFIER_TYPE)) THEN
28035
28036 --INSERT PRODUCT ATTRIBUTES
28037 G_LINE_INDEX_TBL(K) :=G_LINE_INDEX_TBL_P(I);
28038 G_ATTRIBUTE_LEVEL_TBL(K) :=G_ATTRIBUTE_LEVEL_TBL_P(I);
28039 G_ATTRIBUTE_TYPE_TBL(K) :=G_ATTRIBUTE_TYPE_TBL_P(I);
28040 G_CONTEXT_TBL(K) :=G_CONTEXT_TBL_P(I);
28041 G_ATTRIBUTE_TBL(K) :=G_ATTRIBUTE_TBL_P(I);
28042 G_VALUE_FROM_TBL(K) :=G_VALUE_FROM_TBL_P(I);
28043 G_VALUE_TO_TBL(K) :=NULL;
28044 G_COMPARISON_OPERATOR_TYPE_TBL(K):=NULL;
28045 G_VALIDATED_FLAG_TBL(K) :=G_VALIDATED_FLAG_TBL_P(I);
28046 G_APPLIED_FLAG_TBL(K) :=G_APPLIED_FLAG_TBL_P(I);
28047 G_PRICING_STATUS_CODE_TBL(K) :=G_STATUS_NEW;
28048 G_PRICING_ATTR_FLAG_TBL(K) :=G_PRICING_ATTR_FLAG_TBL_P(I);
28049 G_LINE_DETAIL_INDEX_TBL(K) :=L_LINE_DETAIL_INDEX;
28050 G_LIST_HEADER_ID_TBL(K) :=G_LIST_HEADER_ID_TBL_P(I);
28051 G_LIST_LINE_ID_TBL(K) :=G_LIST_LINE_ID_TBL_P(I);
28052 G_SETUP_VALUE_FROM_TBL(K) :=G_SETUP_VALUE_FROM_TBL_P(I);
28053 G_SETUP_VALUE_TO_TBL(K) :=NULL;
28054 G_GROUPING_NUMBER_TBL(K) :=NULL;
28055 G_NO_QUALIFIERS_IN_GRP_TBL(K) :=NULL;
28056 G_PRICING_STATUS_TEXT_TBL(K) :='PRODUCT_QUALIFIER_PRICING';
28057 G_QUALIFIER_PRECEDENCE_TBL(K) :=NULL;
28058 G_DATATYPE_TBL(K) :=NULL;
28059 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
28060 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
28061 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_P(I);
28062 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
28063 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
28064 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28065 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
28066 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
28067 K:= K+1;
28068
28069 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28070 engine_debug('The value of K : ' || K);
28071 END IF;
28072
28073 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28074 engine_debug(' #5');
28075
28076 END IF;
28077 --INSERT PRICING ATTRIBUTES
28078 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
28079 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
28080 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_PR(I);
28081 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_PR(I);
28082 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_PR(I);
28083 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_PR(I);
28084 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_PR(I);
28085 G_VALUE_TO_tbl(K) :=NULL;
28086 G_COMPARISON_OPERATOR_TYPE_tbl(K):=G_OPERATOR_TYPE_TBL_PR(I);
28087 G_VALIDATED_FLAG_tbl(K) :=G_VALIDATED_FLAG_TBL_P(I);
28088 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
28089 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
28090 G_PRICING_ATTR_FLAG_tbl(K) :=G_PRICING_ATTR_FLAG_TBL_P(I);
28091 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
28092 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
28093 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
28094 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
28095 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
28096 G_GROUPING_NUMBER_tbl(K) :=NULL;
28097 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
28098 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_PRICING';
28099 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
28100 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
28101 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
28102 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
28103 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_P(I);
28104 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
28105 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
28106 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28107 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
28108 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
28109 K:= K+1;
28110 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28111 engine_debug('The value of K : ' || K);
28112 END IF;
28113 END IF;
28114
28115 IF (l_satisfied_list_header_id <> -9999) THEN
28116
28117 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28118 engine_debug('Qualifiers for List Header Id : ' || l_satisfied_list_header_id );
28119 engine_debug('Qualifiers for List Line Id : ' || l_satisfied_lst_line_id );
28120
28121 END IF;
28122 FOR V IN l_get_satisfied_quals(l_satisfied_list_header_id,l_satisfied_lst_line_id, l_satisfied_line_indx)
28123 LOOP
28124 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28125 engine_debug(' Qual #3 ' );
28126 END IF;
28127 --Qualifier attributes
28128 G_LINE_INDEX_tbl(K) :=l_satisfied_line_indx;
28129 G_ATTRIBUTE_LEVEL_tbl(K) :=V.QUALIFIER_ATTRIBUTE_LEVEL;
28130 G_ATTRIBUTE_TYPE_tbl(K) :=V.QUALIFIER_ATTRIBUTE_TYPE;
28131 G_CONTEXT_tbl(K) :=V.QUALIFIER_ATTRIBUTE_CONTEXT;
28132 G_ATTRIBUTE_tbl(K) :=V.QUALIFIER_ATTRIBUTE;
28133 G_VALUE_FROM_tbl(K) :=V.QUALIFIER_ATTRIBUTE_VALUE;
28134 G_VALUE_TO_tbl(K) :=NULL;
28135 G_COMPARISON_OPERATOR_TYPE_tbl(K):=V.QUALIFIER_OPERATOR_TYPE;
28136 G_VALIDATED_FLAG_tbl(K) :=V.VALIDATED_FLAG;
28137 G_APPLIED_FLAG_tbl(K) :=V.APPLIED_FLAG;
28138 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
28139 G_PRICING_ATTR_FLAG_tbl(K) :=V.QUALIFIER_PRICING_ATTR_FLAG;
28140 G_LINE_DETAIL_INDEX_tbl(K) :=l_satisfied_line_detail_indx;
28141 G_LIST_HEADER_ID_tbl(K) :=l_satisfied_list_header_id;
28142 G_LIST_LINE_ID_tbl(K) :=l_satisfied_lst_line_id;
28143 G_SETUP_VALUE_FROM_tbl(K) :=V.SETUP_VALUE_FROM;
28144 G_SETUP_VALUE_TO_tbl(K) :=V.SETUP_VALUE_TO;
28145 G_GROUPING_NUMBER_tbl(K) :=V.QUALIFIER_GROUPING_NO;
28146 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
28147 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_PRICING_ONLY';
28148 G_QUALIFIER_PRECEDENCE_tbl(K) :=V.QUALIFIER_PRECEDENCE;
28149 G_DATATYPE_tbl(K) :=V.QUALIFIER_DATATYPE;
28150 G_EXCLUDER_FLAG_TBL(K) :=NULL;
28151 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
28152 G_QUALIFIER_TYPE_TBL(K) :=V.QUALIFIER_TYPE;
28153 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
28154 G_INCOMP_GRP_CODE_TBL_A(K) :=l_satisfied_incomp_code;
28155 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28156 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=l_satisfied_modifier_lvl_code;
28157 G_PRIMARY_UOM_FLAG_TBL_A(K) :=l_satisfied_primary_uom_flag;
28158 K:= K+1;
28159
28160 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28161 engine_debug('The value of K : ' || K);
28162 engine_debug('Qualifier Context : ' || v.qualifier_attribute_context);
28163 engine_debug('Qualifier Attribute : ' || v.qualifier_attribute);
28164 engine_debug('Qualifier Value : ' || v.qualifier_attribute_value);
28165 engine_debug('Qualifier List Header Id : ' || v.list_header_id);
28166 engine_debug('Qualifier List line Id : ' || v.list_line_id);
28167 engine_debug('Qualifier Type : ' || v.qualifier_type);
28168
28169 END IF;
28170 END LOOP;
28171
28172 --Reset the satisfied list header and list line info
28173 l_satisfied_list_header_id := -9999;
28174 l_satisfied_lst_line_id := -9999;
28175 l_satisfied_line_indx := -9999;
28176 l_satisfied_line_detail_indx := -9999;
28177
28178 END IF;
28179
28180 end if;
28181
28182 END LOOP;
28183 END IF;
28184 END LOOP;
28185
28186 qp_debug_util.tstop('L_PROD_QUAL_PRIC_CUR');
28187
28188 CLOSE l_prod_qual_pric_cur;
28189 qp_debug_util.tstart('L_INNER_QUAL_CUR','Cursor Loop L_INNER_QUAL_CUR');
28190 OPEN l_inner_qual_cur (p_pricing_phase_id, -99,-99,-99,NULL,NULL,NULL,NULL);
28191
28192 LOOP
28193 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28194 engine_debug('In l_inner_qual_cur loop fetch');
28195
28196 END IF;
28197 G_LIST_HEADER_ID_TBL_Q.delete;
28198 G_LIST_LINE_ID_TBL_Q.delete;
28199 G_LIST_LINE_TYPE_TBL_Q.delete;
28200 G_LINE_INDEX_TBL_Q.delete;
28201 G_AUTOMATIC_FLAG_TBL_Q.delete;
28202 G_MODIFIER_LEVEL_CODE_TBL_Q.delete;
28203 G_PRIMARY_UOM_FLAG_TBL_Q.delete;
28204 G_OPER_CALCULATION_CODE_TBL_Q.delete;
28205 G_OPERAND_TBL_Q.delete;
28206 G_NET_AMOUNT_FLAG_TBL_Q.delete; -- IT net_amount 2720717
28207 G_PRICING_GROUP_SEQUENCE_TBL_Q.delete;
28208 G_PRICING_PHASE_ID_TBL_Q.delete;
28209 G_PRICE_BREAK_TYPE_CODE_TBL_Q.delete;
28210 G_INCOMP_GRP_CODE_TBL_Q.delete;
28211 G_PRICE_FORMULA_ID_TBL_Q.delete;
28212 G_PRODUCT_PRECEDENCE_TBL_Q.delete;
28213 G_OVERRIDE_FLAG_TBL_P.delete;
28214 G_BENEFIT_QTY_TBL_P.delete;
28215 G_BENEFIT_UOM_CODE_TBL_P.delete;
28216 G_SERVICE_DURATION_TBL_P.delete; -- service project
28217 G_SERVICE_PERIOD_TBL_P.delete; -- service project
28218 G_LIST_LINE_NO_TBL_Q.delete;
28219 G_ACCRUAL_FLAG_TBL_Q.delete;
28220 G_ACCR_CONVERSION_RATE_TBL_Q.delete;
28221 G_ESTIM_ACCRUAL_RATE_TBL_Q.delete;
28222 G_ASK_FOR_FLAG_TBL_Q.delete;
28223 G_LIST_TYPE_CODE_TBL_Q.delete;
28224 G_QUALIFIER_TYPE_TBL_Q.delete;
28225 G_HEADER_LIMIT_EXISTS_TBL_P.delete;
28226 G_LINE_LIMIT_EXISTS_TBL_P.delete;
28227 G_CHARGE_TYPE_CODE_TBL_P.delete;
28228 G_CHARGE_SUBTYPE_CODE_TBL_P.delete;
28229 G_ACCUM_CONTEXT_TBL_P.delete; -- for accum range break
28230 G_ACCUM_ATTRIBUTE_TBL_P.delete; -- for accum range break
28231 G_ACCUM_FLAG_TBL_P.delete; -- for accum range break
28232
28233 FETCH l_inner_qual_cur BULK COLLECT INTO
28234 G_LIST_HEADER_ID_TBL_Q,
28235 G_LIST_LINE_ID_TBL_Q,
28236 G_LIST_LINE_TYPE_TBL_Q,
28237 G_LINE_INDEX_TBL_Q,
28238 G_AUTOMATIC_FLAG_TBL_Q,
28239 G_MODIFIER_LEVEL_CODE_TBL_Q,
28240 G_PRIMARY_UOM_FLAG_TBL_Q,
28241 G_OPER_CALCULATION_CODE_TBL_Q,
28242 G_OPERAND_TBL_Q,
28243 G_NET_AMOUNT_FLAG_TBL_Q, -- IT net_amount 2720717
28244 G_PRICING_GROUP_SEQUENCE_TBL_Q,
28245 G_PRICING_PHASE_ID_TBL_Q,
28246 G_PRICE_BREAK_TYPE_CODE_TBL_Q,
28247 G_INCOMP_GRP_CODE_TBL_Q,
28248 G_PRICE_FORMULA_ID_TBL_Q,
28249 G_PRODUCT_PRECEDENCE_TBL_Q,
28250 G_OVERRIDE_FLAG_TBL_P,
28251 G_BENEFIT_QTY_TBL_P,
28252 G_BENEFIT_UOM_CODE_TBL_P,
28253 G_SERVICE_DURATION_TBL_P, -- service project
28254 G_SERVICE_PERIOD_TBL_P, -- service project
28255 G_LIST_LINE_NO_TBL_Q,
28256 G_ACCRUAL_FLAG_TBL_Q,
28257 G_ACCR_CONVERSION_RATE_TBL_Q,
28258 G_ESTIM_ACCRUAL_RATE_TBL_Q,
28259 G_ASK_FOR_FLAG_TBL_Q,
28260 G_LIST_TYPE_CODE_TBL_Q,
28261 G_HEADER_LIMIT_EXISTS_TBL_P,
28262 G_LINE_LIMIT_EXISTS_TBL_P,
28263 G_QUALIFIER_TYPE_TBL_Q ,
28264 G_CHARGE_TYPE_CODE_TBL_P ,
28265 G_CHARGE_SUBTYPE_CODE_TBL_P,
28266 G_ACCUM_CONTEXT_TBL_P, -- accum range break
28267 G_ACCUM_ATTRIBUTE_TBL_P, -- accum range break
28268 G_ACCUM_FLAG_TBL_P LIMIT nROWS;
28269
28270 EXIT WHEN G_LINE_INDEX_TBL_Q.COUNT = 0;
28271
28272 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28273 engine_debug(' In l_inner_qual_cur Count : '||G_LIST_LINE_ID_TBL_Q.count );
28274
28275 END IF;
28276 IF (G_LINE_INDEX_TBL_Q.COUNT > 0) THEN
28277 FOR I in G_LINE_INDEX_TBL_Q.FIRST .. G_LINE_INDEX_TBL_Q.LAST LOOP
28278 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28279 engine_debug(' In l_inner_qual_cur : '||G_LIST_LINE_ID_TBL_Q(I) );
28280
28281 END IF;
28282 IF (lq_line_index <> G_LINE_INDEX_TBL_Q(I) OR lq_list_line_id <> G_LIST_LINE_ID_TBL_Q(I)) THEN
28283 l_line_detail_index :=GET_LINE_DETAIL_INDEX;
28284
28285 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_Q(I);
28286 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
28287 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_Q(I);
28288 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_Q(I);
28289 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
28290 G_PRICING_STATUS_TEXT_LD_TBL(M) :='QUALIFIER_ONLY';
28291 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_Q(I);
28292 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
28293 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
28294 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_Q(I);
28295 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_Q(I);
28296 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_Q(I);
28297 G_CREATED_FROM_SQL_TBL(M) :='QUALIFIER_ONLY';
28298 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_Q(I);
28299 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_Q(I);
28300 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_Q(I);
28301 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_TBL_Q(I);
28302 G_NET_AMOUNT_FLAG_TBL(M) :=G_NET_AMOUNT_FLAG_TBL_Q(I); -- IT net_amount 2720717
28303 G_ASK_FOR_FLAG_TBL(M) :=G_ASK_FOR_FLAG_TBL_Q(I);
28304 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_Q(I);
28305 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_Q(I);
28306 G_OVERRIDE_FLAG_TBL(M) :=G_OVERRIDE_FLAG_TBL_P(I);
28307 G_BENEFIT_QTY_TBL(M) :=G_BENEFIT_QTY_TBL_P(I);
28308 G_BENEFIT_UOM_CODE_TBL(M) :=G_BENEFIT_UOM_CODE_TBL_P(I);
28309 G_SERVICE_DURATION_TBL(M) :=G_SERVICE_DURATION_TBL_P(I); -- service project
28310 G_SERVICE_PERIOD_TBL(M) :=G_SERVICE_PERIOD_TBL_P(I); -- service project
28311 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_Q(I);
28312 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_Q(I);
28313 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_Q(I);
28314 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_Q(I);
28315 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_Q(I);
28316 G_ACCRUAL_FLAG_TBL(M) :=G_ACCRUAL_FLAG_TBL_Q(I);
28317 G_ACCRUAL_CONVERSION_RATE_TBL(M) :=G_ACCR_CONVERSION_RATE_TBL_Q(I);
28318 G_ESTIM_ACCRUAL_RATE_TBL(M) :=G_ESTIM_ACCRUAL_RATE_TBL_Q(I);
28319 G_HEADER_LIMIT_EXISTS_TBL(M) :=G_HEADER_LIMIT_EXISTS_TBL_P(I);
28320 G_LINE_LIMIT_EXISTS_TBL(M) :=G_LINE_LIMIT_EXISTS_TBL_P(I);
28321 G_CHARGE_TYPE_CODE_TBL(M) :=nvl(G_CHARGE_TYPE_CODE_TBL_P(I),'');
28322 G_CHARGE_SUBTYPE_CODE_TBL(M) :=nvl(G_CHARGE_SUBTYPE_CODE_TBL_P(I),'');
28323 G_ACCUM_CONTEXT_TBL(M) :=G_ACCUM_CONTEXT_TBL_P(I); -- accum range break
28324 G_ACCUM_ATTRIBUTE_TBL(M) :=G_ACCUM_ATTRIBUTE_TBL_P(I); -- accum range break
28325 G_ACCUM_FLAG_TBL(M) :=G_ACCUM_FLAG_TBL_P(I); -- accum range break
28326 M:=M+1;
28327 l_satisfied_list_header_id := G_LIST_HEADER_ID_TBL_Q(I);
28328 l_satisfied_lst_line_id := G_LIST_LINE_ID_TBL_Q(I);
28329 l_satisfied_line_indx := G_LINE_INDEX_TBL_Q(I);
28330 l_satisfied_line_detail_indx := L_LINE_DETAIL_INDEX;
28331 l_satisfied_incomp_code := G_INCOMP_GRP_CODE_TBL_Q(I);
28332 l_satisfied_modifier_lvl_code := G_MODIFIER_LEVEL_CODE_TBL_Q(I);
28333 l_satisfied_primary_uom_flag := G_PRIMARY_UOM_FLAG_TBL_Q(I);
28334 lq_line_index := G_LINE_INDEX_TBL_Q(I);
28335 lq_list_line_id := G_LIST_LINE_ID_TBL_Q(I);
28336 END IF;
28337
28338 if l_satis_quals_opt <> 'N' then
28339
28340 IF (l_satisfied_list_header_id <> -9999) THEN
28341
28342 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28343 engine_debug('Qualifiers for List Header Id : ' || l_satisfied_list_header_id );
28344 engine_debug('Qualifiers for List Line Id : ' || l_satisfied_lst_line_id );
28345
28346 END IF;
28347 FOR V IN l_get_satisfied_quals(l_satisfied_list_header_id,l_satisfied_lst_line_id, l_satisfied_line_indx)
28348 LOOP
28349 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28350 engine_debug(' Qual #3 ' );
28351 END IF;
28352 --Qualifier attributes
28353 G_LINE_INDEX_tbl(K) :=l_satisfied_line_indx;
28354 G_ATTRIBUTE_LEVEL_tbl(K) :=V.QUALIFIER_ATTRIBUTE_LEVEL;
28355 G_ATTRIBUTE_TYPE_tbl(K) :=V.QUALIFIER_ATTRIBUTE_TYPE;
28356 G_CONTEXT_tbl(K) :=V.QUALIFIER_ATTRIBUTE_CONTEXT;
28357 G_ATTRIBUTE_tbl(K) :=V.QUALIFIER_ATTRIBUTE;
28358 G_VALUE_FROM_tbl(K) :=V.QUALIFIER_ATTRIBUTE_VALUE;
28359 G_VALUE_TO_tbl(K) :=NULL;
28360 G_COMPARISON_OPERATOR_TYPE_tbl(K):=V.QUALIFIER_OPERATOR_TYPE;
28361 G_VALIDATED_FLAG_tbl(K) :=V.VALIDATED_FLAG;
28362 G_APPLIED_FLAG_tbl(K) :=V.APPLIED_FLAG;
28363 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
28364 G_PRICING_ATTR_FLAG_tbl(K) :=V.QUALIFIER_PRICING_ATTR_FLAG;
28365 G_LINE_DETAIL_INDEX_tbl(K) :=l_satisfied_line_detail_indx;
28366 G_LIST_HEADER_ID_tbl(K) :=l_satisfied_list_header_id;
28367 G_LIST_LINE_ID_tbl(K) :=l_satisfied_lst_line_id;
28368 G_SETUP_VALUE_FROM_tbl(K) :=V.SETUP_VALUE_FROM;
28369 G_SETUP_VALUE_TO_tbl(K) :=V.SETUP_VALUE_TO;
28370 G_GROUPING_NUMBER_tbl(K) :=V.QUALIFIER_GROUPING_NO;
28371 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
28372 G_PRICING_STATUS_TEXT_tbl(K) :='QUALIFIERS_ONLY';
28373 G_QUALIFIER_PRECEDENCE_tbl(K) :=V.QUALIFIER_PRECEDENCE;
28374 G_DATATYPE_tbl(K) :=V.QUALIFIER_DATATYPE;
28375 G_EXCLUDER_FLAG_TBL(K) :=NULL;
28376 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
28377 G_QUALIFIER_TYPE_TBL(K) :=V.QUALIFIER_TYPE;
28378 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
28379 G_INCOMP_GRP_CODE_TBL_A(K) :=l_satisfied_incomp_code;
28380 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28381 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=l_satisfied_modifier_lvl_code;
28382 G_PRIMARY_UOM_FLAG_TBL_A(K) :=l_satisfied_primary_uom_flag;
28383 K:= K+1;
28384
28385 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28386 engine_debug('The value of K : ' || K);
28387 engine_debug('Qualifier Context : ' || v.qualifier_attribute_context);
28388 engine_debug('Qualifier Attribute : ' || v.qualifier_attribute);
28389 engine_debug('Qualifier Value : ' || v.qualifier_attribute_value);
28390 engine_debug('Qualifier List Header Id : ' || v.list_header_id);
28391 engine_debug('Qualifier List line Id : ' || v.list_line_id);
28392 engine_debug('Qualifier Type : ' || v.qualifier_type);
28393
28394 END IF;
28395 END LOOP;
28396
28397 --Reset the satisfied list header and list line info
28398 l_satisfied_list_header_id := -9999;
28399 l_satisfied_lst_line_id := -9999;
28400 l_satisfied_line_indx := -9999;
28401 l_satisfied_line_detail_indx := -9999;
28402
28403 END IF;
28404
28405 end if;
28406
28407 END LOOP;
28408 END IF;
28409 END LOOP;
28410
28411 qp_debug_util.tstop('L_INNER_QUAL_CUR');
28412 CLOSE l_inner_qual_cur;
28413
28414 lq_line_index := -9999;
28415 lq_list_line_id := -9999;
28416
28417 --selecting lists that match product qttributes only
28418 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28419 engine_debug('Before l_prod_cur_mod');
28420 END IF;
28421 qp_debug_util.tstart('L_PROD_CUR','Cursor Loop L_PROD_CUR');
28422 OPEN l_prod_cur(p_pricing_phase_id);
28423
28424
28425 LOOP
28426 G_LIST_HEADER_ID_TBL_P.delete;
28427 G_LIST_LINE_ID_TBL_P.delete;
28428 G_LIST_LINE_TYPE_TBL_P.delete;
28429 G_LINE_INDEX_TBL_P.delete;
28430 G_VALIDATED_FLAG_TBL_P.delete;
28431 G_APPLIED_FLAG_TBL_P.delete;
28432 G_ATTRIBUTE_LEVEL_TBL_P.delete;
28433 G_ATTRIBUTE_TYPE_TBL_P.delete;
28434 G_CONTEXT_TBL_P.delete;
28435 G_ATTRIBUTE_TBL_P.delete;
28436 G_VALUE_FROM_TBL_P.delete;
28437 G_SETUP_VALUE_FROM_TBL_P.delete;
28438 G_PRICING_ATTR_FLAG_TBL_P.delete;
28439 G_PRODUCT_UOM_CODE_TBL_P.delete;
28440 G_EXCLUDER_FLAG_TBL_P.delete;
28441 G_GROUPING_NUMBER_TBL_P.delete;
28442 G_QUALIFIER_PRECEDENCE_TBL_P.delete;
28443 G_AUTOMATIC_FLAG_TBL_P.delete;
28444 G_MODIFIER_LEVEL_CODE_TBL_P.delete;
28445 G_PRIMARY_UOM_FLAG_TBL_P.delete;
28446 G_OPER_CALCULATION_CODE_TBL_P.delete;
28447 G_OPERAND_VALUE_TBL_P.delete;
28448 G_NET_AMOUNT_FLAG_TBL_P.delete; -- IT net_amount 2720717
28449 G_PRICING_GROUP_SEQUENCE_TBL_P.delete;
28450 G_ASK_FOR_FLAG_TBL_P.delete;
28451 G_LIST_TYPE_CODE_TBL_P.delete;
28452 G_PRICING_PHASE_ID_TBL_P.delete;
28453 G_PRICE_BREAK_TYPE_CODE_TBL_P.delete;
28454 G_INCOMP_GRP_CODE_TBL_P.delete;
28455 G_PRICE_FORMULA_ID_TBL_P.delete;
28456 G_PRODUCT_PRECEDENCE_TBL_P.delete;
28457 G_OVERRIDE_FLAG_TBL_P.delete;
28458 G_BENEFIT_QTY_TBL_P.delete;
28459 G_BENEFIT_UOM_CODE_TBL_P.delete;
28460 G_SERVICE_DURATION_TBL_P.delete; -- service project
28461 G_SERVICE_PERIOD_TBL_P.delete; -- service project
28462 G_LIST_LINE_NO_TBL_P.delete;
28463 G_ACCRUAL_FLAG_TBL_P.delete;
28464 G_ACCR_CONVERSION_RATE_TBL_P.delete;
28465 G_ESTIM_ACCRUAL_RATE_TBL_P.delete;
28466 G_HEADER_LIMIT_EXISTS_TBL_P.delete;
28467 G_LINE_LIMIT_EXISTS_TBL_P.delete;
28468 G_QUALIFIER_TYPE_TBL_P.delete;
28469 G_CHARGE_TYPE_CODE_TBL_P.delete;
28470 G_CHARGE_SUBTYPE_CODE_TBL_P.delete;
28471 G_ACCUM_CONTEXT_TBL_P.delete; -- for accum range break
28472 G_ACCUM_ATTRIBUTE_TBL_P.delete; -- for accum range break
28473 G_ACCUM_FLAG_TBL_P.delete; -- for accum range break
28474
28475 FETCH l_prod_cur BULK COLLECT INTO
28476 G_LIST_HEADER_ID_TBL_P
28477 , G_LIST_LINE_ID_TBL_P
28478 , G_LIST_LINE_TYPE_TBL_P
28479 , G_LINE_INDEX_TBL_P
28480 , G_VALIDATED_FLAG_TBL_P
28481 , G_APPLIED_FLAG_TBL_P
28482 , G_ATTRIBUTE_LEVEL_TBL_P
28483 , G_ATTRIBUTE_TYPE_TBL_P
28484 , G_CONTEXT_TBL_P
28485 , G_ATTRIBUTE_TBL_P
28486 , G_VALUE_FROM_TBL_P
28487 , G_SETUP_VALUE_FROM_TBL_P
28488 , G_PRICING_ATTR_FLAG_TBL_P
28489 , G_PRODUCT_UOM_CODE_TBL_P
28490 , G_EXCLUDER_FLAG_TBL_P
28491 , G_GROUPING_NUMBER_TBL_P
28492 , G_QUALIFIER_PRECEDENCE_TBL_P
28493 , G_AUTOMATIC_FLAG_TBL_P
28494 , G_MODIFIER_LEVEL_CODE_TBL_P
28495 , G_PRIMARY_UOM_FLAG_TBL_P
28496 , G_OPER_CALCULATION_CODE_TBL_P
28497 , G_OPERAND_VALUE_TBL_P
28498 , G_NET_AMOUNT_FLAG_TBL_P -- IT net_amount 2720717
28499 , G_PRICING_GROUP_SEQUENCE_TBL_P
28500 , G_ASK_FOR_FLAG_TBL_P
28501 , G_LIST_TYPE_CODE_TBL_P
28502 , G_PRICING_PHASE_ID_TBL_P
28503 , G_PRICE_BREAK_TYPE_CODE_TBL_P
28504 , G_INCOMP_GRP_CODE_TBL_P
28505 , G_PRICE_FORMULA_ID_TBL_P
28506 , G_PRODUCT_PRECEDENCE_TBL_P
28507 , G_OVERRIDE_FLAG_TBL_P
28508 , G_BENEFIT_QTY_TBL_P
28509 , G_BENEFIT_UOM_CODE_TBL_P
28510 , G_SERVICE_DURATION_TBL_P -- service project
28511 , G_SERVICE_PERIOD_TBL_P -- service project
28512 , G_LIST_LINE_NO_TBL_P
28513 , G_ACCRUAL_FLAG_TBL_P
28514 , G_ACCR_CONVERSION_RATE_TBL_P
28515 , G_ESTIM_ACCRUAL_RATE_TBL_P
28516 , G_HEADER_LIMIT_EXISTS_TBL_P
28517 , G_LINE_LIMIT_EXISTS_TBL_P
28518 , G_QUALIFIER_TYPE_TBL_P
28519 , G_CHARGE_TYPE_CODE_TBL_P
28520 , G_CHARGE_SUBTYPE_CODE_TBL_P
28521 , G_ACCUM_CONTEXT_TBL_P -- accum range break
28522 , G_ACCUM_ATTRIBUTE_TBL_P -- accum range break
28523 , G_ACCUM_FLAG_TBL_P LIMIT nROWS;
28524
28525 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
28526
28527 IF (G_LINE_INDEX_TBL_P.COUNT > 0) THEN
28528 FOR I in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST LOOP
28529 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28530 engine_debug('Before dup tbl loop');
28531 END IF;
28532
28533 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28534 engine_debug('List line id selected from l_prod_cur_mod: '||g_list_line_id_TBL_P(I));
28535 engine_debug('Excluder Flag selected from big select1: '||g_excluder_flag_TBL_P(I));
28536
28537 END IF;
28538 IF (lq_line_index <> g_line_index_tbl_p(I) OR lq_list_line_id <> g_list_line_id_tbl_p(I)) THEN
28539 l_prod_cur_count := l_prod_cur_count + 1;
28540 l_line_detail_index := get_line_detail_index;
28541
28542 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(I);
28543 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
28544 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(I);
28545 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(I);
28546 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
28547 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_ONLY';
28548 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
28549 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
28550 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
28551 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(I);
28552 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(I);
28553 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(I);
28554 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_ONLY';
28555 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(I);
28556 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(I);
28557 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(I);
28558 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(I);
28559 G_NET_AMOUNT_FLAG_TBL(M) :=G_NET_AMOUNT_FLAG_TBL_P(I); -- IT net_amount 2720717
28560 G_ASK_FOR_FLAG_TBL(M) :=G_ASK_FOR_FLAG_TBL_P(I);
28561 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(I);
28562 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(I);
28563 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(I);
28564 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
28565 G_OVERRIDE_FLAG_TBL(M) :=G_OVERRIDE_FLAG_TBL_P(I);
28566 G_BENEFIT_QTY_TBL(M) :=G_BENEFIT_QTY_TBL_P(I);
28567 G_BENEFIT_UOM_CODE_TBL(M) :=G_BENEFIT_UOM_CODE_TBL_P(I);
28568 G_SERVICE_DURATION_TBL(M) :=G_SERVICE_DURATION_TBL_P(I); -- service project
28569 G_SERVICE_PERIOD_TBL(M) :=G_SERVICE_PERIOD_TBL_P(I); -- service project
28570 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
28571 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
28572 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(I);
28573 G_ACCRUAL_FLAG_TBL(M) :=G_ACCRUAL_FLAG_TBL_P(I);
28574 G_ACCRUAL_CONVERSION_RATE_TBL(M) :=G_ACCR_CONVERSION_RATE_TBL_P(I);
28575 G_ESTIM_ACCRUAL_RATE_TBL(M) :=G_ESTIM_ACCRUAL_RATE_TBL_P(I);
28576 G_HEADER_LIMIT_EXISTS_TBL(M) :=G_HEADER_LIMIT_EXISTS_TBL_P(I);
28577 G_LINE_LIMIT_EXISTS_TBL(M) :=G_LINE_LIMIT_EXISTS_TBL_P(I);
28578 G_CHARGE_TYPE_CODE_TBL(M) :=nvl(G_CHARGE_TYPE_CODE_TBL_P(I),'');
28579 G_CHARGE_SUBTYPE_CODE_TBL(M) :=nvl(G_CHARGE_SUBTYPE_CODE_TBL_P(I),'');
28580 G_ACCUM_CONTEXT_TBL(M) :=G_ACCUM_CONTEXT_TBL_P(I); -- accum range break
28581 G_ACCUM_ATTRIBUTE_TBL(M) :=G_ACCUM_ATTRIBUTE_TBL_P(I); -- accum range break
28582 G_ACCUM_FLAG_TBL(M) :=G_ACCUM_FLAG_TBL_P(I); -- accum range break
28583 M:=M+1;
28584 lq_line_index := g_line_index_tbl_p(I);
28585 lq_list_line_id := g_list_line_id_tbl_p(I);
28586 END IF; --end if for if list_line_no_exists
28587
28588 --if l_satis_quals_opt <> 'N' then
28589 -- 4029027 commented by [4455344/4489224]
28590 --bug 4029027
28591 --IF (l_satis_quals_opt <> 'N' or (l_satis_quals_opt = 'N' and g_context_tbl_p(i) <> G_QUALIFIER_TYPE)) THEN
28592
28593 --INSERT PRODUCT ATTRIBUTES
28594 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(I);
28595 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(I);
28596 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(I);
28597 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(I);
28598 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(I);
28599 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(I);
28600 G_VALUE_TO_tbl(K) := NULL;
28601 G_COMPARISON_OPERATOR_TYPE_tbl(K):= NULL;
28602 G_VALIDATED_FLAG_tbl(K) := G_VALIDATED_FLAG_TBL_P(I);
28603 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(I);
28604 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
28605 G_PRICING_ATTR_FLAG_tbl(K) :=G_PRICING_ATTR_FLAG_TBL_P(I);
28606 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
28607 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
28608 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
28609 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_P(I);
28610 G_SETUP_VALUE_TO_tbl(K) :=NULL;
28611 G_GROUPING_NUMBER_tbl(K) :=G_GROUPING_NUMBER_TBL_P(I);
28612 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
28613 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_ONLY';
28614 G_QUALIFIER_PRECEDENCE_tbl(K) :=G_QUALIFIER_PRECEDENCE_TBL_P(I);
28615 G_DATATYPE_tbl(K) :=NULL;
28616 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28617 engine_debug('Before Insert Excluder Flag selected from big select1: '||g_excluder_flag_TBL_P(I));
28618 END IF;
28619 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
28620 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
28621 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_P(I);
28622 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
28623 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
28624 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28625 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
28626 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
28627 K:= K+1;
28628 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28629 engine_debug('The value of K : ' || K);
28630 END IF;
28631
28632 -- end if; [4455344/4489224]
28633
28634 END LOOP;
28635 END IF;
28636 END LOOP;
28637
28638 qp_debug_util.tstop('L_PROD_CUR');
28639
28640 CLOSE l_prod_cur;
28641 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28642 engine_debug('After l_prod_cur_mod');
28643
28644 END IF;
28645 lq_line_index := -9999;
28646 lq_list_line_id := -9999;
28647
28648 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28649 engine_debug('Before l_prod_pric_cur_mod');
28650 END IF;
28651 qp_debug_util.tstart('L_PROD_PRIC_CUR','Cursor Loop L_PROD_PRIC_CUR');
28652 OPEN l_prod_pric_cur(p_pricing_phase_id);
28653
28654
28655
28656 LOOP
28657 G_LIST_HEADER_ID_TBL_P.delete;
28658 G_LIST_LINE_ID_TBL_P.delete;
28659 G_LIST_LINE_TYPE_TBL_P.delete;
28660 G_LINE_INDEX_TBL_P.delete;
28661 G_VALIDATED_FLAG_TBL_P.delete;
28662 G_APPLIED_FLAG_TBL_P.delete;
28663 G_ATTRIBUTE_LEVEL_TBL_P.delete;
28664 G_ATTRIBUTE_TYPE_TBL_P.delete;
28665 G_CONTEXT_TBL_P.delete;
28666 G_ATTRIBUTE_TBL_P.delete;
28667 G_VALUE_FROM_TBL_P.delete;
28668 G_SETUP_VALUE_FROM_TBL_P.delete;
28669 G_PRICING_ATTR_FLAG_TBL_P.delete;
28670 G_PRODUCT_UOM_CODE_TBL_P.delete;
28671 G_EXCLUDER_FLAG_TBL_P.delete;
28672 G_GROUPING_NUMBER_TBL_P.delete;
28673 G_QUALIFIER_PRECEDENCE_TBL_P.delete;
28674 G_AUTOMATIC_FLAG_TBL_P.delete;
28675 G_MODIFIER_LEVEL_CODE_TBL_P.delete;
28676 G_PRIMARY_UOM_FLAG_TBL_P.delete;
28677 G_OPER_CALCULATION_CODE_TBL_P.delete;
28678 G_OPERAND_VALUE_TBL_P.delete;
28679 G_NET_AMOUNT_FLAG_TBL_P.delete; -- IT net_amount 2720717
28680 G_PRICING_GROUP_SEQUENCE_TBL_P.delete;
28681 G_ASK_FOR_FLAG_TBL_P.delete;
28682 G_LIST_TYPE_CODE_TBL_P.delete;
28683 G_PRICING_PHASE_ID_TBL_P.delete;
28684 G_PRICE_BREAK_TYPE_CODE_TBL_P.delete;
28685 G_INCOMP_GRP_CODE_TBL_P.delete;
28686 G_PRICE_FORMULA_ID_TBL_P.delete;
28687 G_PRODUCT_PRECEDENCE_TBL_P.delete;
28688 G_OVERRIDE_FLAG_TBL_P.delete;
28689 G_PRINT_ON_INVOICE_FLAG_TBL_P.delete;
28690 G_BENEFIT_QTY_TBL_P.delete;
28691 G_BENEFIT_UOM_CODE_TBL_P.delete;
28692 G_SERVICE_DURATION_TBL_P.delete; -- service project
28693 G_SERVICE_PERIOD_TBL_P.delete; -- service project
28694 G_LIST_LINE_NO_TBL_P.delete;
28695 G_ACCRUAL_FLAG_TBL_P.delete;
28696 G_ACCR_CONVERSION_RATE_TBL_P.delete;
28697 G_ESTIM_ACCRUAL_RATE_TBL_P.delete;
28698 G_QUALIFIER_TYPE_TBL_P.delete;
28699 G_ATTRIBUTE_LEVEL_TBL_PR.delete;
28700 G_ATTRIBUTE_TYPE_TBL_PR.delete;
28701 G_CONTEXT_TBL_PR.delete;
28702 G_ATTRIBUTE_TBL_PR.delete;
28703 G_VALUE_FROM_TBL_PR.delete;
28704 G_OPERATOR_TYPE_TBL_PR.delete;
28705 G_SETUP_VALUE_FROM_TBL_PR.delete;
28706 G_SETUP_VALUE_TO_TBL_PR.delete;
28707 G_DATATYPE_TBL_PR.delete;
28708 G_HEADER_LIMIT_EXISTS_TBL_P.delete;
28709 G_LINE_LIMIT_EXISTS_TBL_P.delete;
28710 G_CHARGE_TYPE_CODE_TBL_P.delete;
28711 G_CHARGE_SUBTYPE_CODE_TBL_P.delete;
28712 G_ACCUM_CONTEXT_TBL_P.delete; -- for accum range break
28713 G_ACCUM_ATTRIBUTE_TBL_P.delete; -- for accum range break
28714 G_ACCUM_FLAG_TBL_P.delete; -- for accum range break
28715
28716 FETCH l_prod_pric_cur BULK COLLECT INTO
28717 G_LIST_HEADER_ID_TBL_P
28718 , G_LIST_LINE_ID_TBL_P
28719 , G_LIST_LINE_TYPE_TBL_P
28720 , G_LINE_INDEX_TBL_P
28721 , G_VALIDATED_FLAG_TBL_P
28722 , G_APPLIED_FLAG_TBL_P
28723 , G_ATTRIBUTE_LEVEL_TBL_P
28724 , G_ATTRIBUTE_TYPE_TBL_P
28725 , G_CONTEXT_TBL_P
28726 , G_ATTRIBUTE_TBL_P
28727 , G_VALUE_FROM_TBL_P
28728 , G_SETUP_VALUE_FROM_TBL_P
28729 , G_PRICING_ATTR_FLAG_TBL_P
28730 , G_PRODUCT_UOM_CODE_TBL_P
28731 , G_EXCLUDER_FLAG_TBL_P
28732 , G_ATTRIBUTE_LEVEL_TBL_PR
28733 , G_ATTRIBUTE_TYPE_TBL_PR
28734 , G_CONTEXT_TBL_PR
28735 , G_ATTRIBUTE_TBL_PR
28736 , G_VALUE_FROM_TBL_PR
28737 , G_SETUP_VALUE_FROM_TBL_PR
28738 , G_SETUP_VALUE_TO_TBL_PR
28739 , G_OPERATOR_TYPE_TBL_PR
28740 , G_DATATYPE_TBL_PR
28741 , G_GROUPING_NUMBER_TBL_P
28742 , G_QUALIFIER_PRECEDENCE_TBL_P
28743 , G_AUTOMATIC_FLAG_TBL_P
28744 , G_MODIFIER_LEVEL_CODE_TBL_P
28745 , G_PRIMARY_UOM_FLAG_TBL_P
28746 , G_OPER_CALCULATION_CODE_TBL_P
28747 , G_OPERAND_VALUE_TBL_P
28748 , G_NET_AMOUNT_FLAG_TBL_P -- IT net_amount 2720717
28749 , G_PRICING_GROUP_SEQUENCE_TBL_P
28750 , G_ASK_FOR_FLAG_TBL_P
28751 , G_LIST_TYPE_CODE_TBL_P
28752 , G_PRICING_PHASE_ID_TBL_P
28753 , G_PRICE_BREAK_TYPE_CODE_TBL_P
28754 , G_INCOMP_GRP_CODE_TBL_P
28755 , G_PRICE_FORMULA_ID_TBL_P
28756 , G_PRODUCT_PRECEDENCE_TBL_P
28757 , G_OVERRIDE_FLAG_TBL_P
28758 , G_BENEFIT_QTY_TBL_P
28759 , G_BENEFIT_UOM_CODE_TBL_P
28760 , G_SERVICE_DURATION_TBL_P -- service project
28761 , G_SERVICE_PERIOD_TBL_P -- service project
28762 , G_LIST_LINE_NO_TBL_P
28763 , G_ACCRUAL_FLAG_TBL_P
28764 , G_ACCR_CONVERSION_RATE_TBL_P
28765 , G_ESTIM_ACCRUAL_RATE_TBL_P
28766 , G_HEADER_LIMIT_EXISTS_TBL_P
28767 , G_LINE_LIMIT_EXISTS_TBL_P
28768 , G_QUALIFIER_TYPE_TBL_P
28769 , G_CHARGE_TYPE_CODE_TBL_P
28770 , G_CHARGE_SUBTYPE_CODE_TBL_P
28771 , G_ACCUM_CONTEXT_TBL_P -- accum range break
28772 , G_ACCUM_ATTRIBUTE_TBL_P -- accum range break
28773 , G_ACCUM_FLAG_TBL_P LIMIT nROWS;
28774
28775 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
28776
28777 --selecting lists that match product and pricing attributes only
28778 IF (G_LINE_INDEX_TBL_P.COUNT > 0) THEN
28779 FOR I in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST LOOP
28780 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28781 engine_debug('List line id selected from l_prod_pric_cur_mod: '||G_LIST_LINE_ID_TBL_P(I) );
28782 END IF;
28783 IF (lq_line_index <> g_line_index_tbl_p(I) OR lq_list_line_id <> g_list_line_id_tbl_p(I)) THEN
28784 L_LINE_DETAIL_INDEX := GET_LINE_DETAIL_INDEX;
28785
28786 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(I);
28787 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
28788 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(I);
28789 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(I);
28790 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
28791 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_PRICING_ONLY';
28792 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
28793 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
28794 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
28795 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(I);
28796 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(I);
28797 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(I);
28798 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_PRICING_ONLY';
28799 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(I);
28800 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(I);
28801 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(I);
28802 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(I);
28803 G_NET_AMOUNT_FLAG_TBL(M) :=G_NET_AMOUNT_FLAG_TBL_P(I); --?? IT net_amount 2720717
28804 G_ASK_FOR_FLAG_TBL(M) :=G_ASK_FOR_FLAG_TBL_P(I);
28805 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(I);
28806 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(I);
28807 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(I);
28808 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
28809 G_OVERRIDE_FLAG_TBL(M) :=G_OVERRIDE_FLAG_TBL_P(I);
28810 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
28811 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
28812 G_BENEFIT_QTY_TBL(M) :=G_BENEFIT_QTY_TBL_P(I);
28813 G_BENEFIT_UOM_CODE_TBL(M) :=G_BENEFIT_UOM_CODE_TBL_P(I);
28814 G_SERVICE_DURATION_TBL(M) :=G_SERVICE_DURATION_TBL_P(I); -- service project
28815 G_SERVICE_PERIOD_TBL(M) :=G_SERVICE_PERIOD_TBL_P(I); -- service project
28816 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(I);
28817 G_ACCRUAL_FLAG_TBL(M) :=G_ACCRUAL_FLAG_TBL_P(I);
28818 G_ACCRUAL_CONVERSION_RATE_TBL(M) :=G_ACCR_CONVERSION_RATE_TBL_P(I);
28819 G_ESTIM_ACCRUAL_RATE_TBL(M) :=G_ESTIM_ACCRUAL_RATE_TBL_P(I);
28820 G_HEADER_LIMIT_EXISTS_TBL(M) :=G_HEADER_LIMIT_EXISTS_TBL_P(I);
28821 G_LINE_LIMIT_EXISTS_TBL(M) :=G_LINE_LIMIT_EXISTS_TBL_P(I);
28822 G_CHARGE_TYPE_CODE_TBL(M) :=nvl(G_CHARGE_TYPE_CODE_TBL_P(I),'');
28823 G_CHARGE_SUBTYPE_CODE_TBL(M) :=nvl(G_CHARGE_SUBTYPE_CODE_TBL_P(I),'');
28824 G_ACCUM_CONTEXT_TBL(M) :=G_ACCUM_CONTEXT_TBL_P(I); -- accum range break
28825 G_ACCUM_ATTRIBUTE_TBL(M) :=G_ACCUM_ATTRIBUTE_TBL_P(I); -- accum range break
28826 G_ACCUM_FLAG_TBL(M) :=G_ACCUM_FLAG_TBL_P(I); -- accum range break
28827 M:=M+1;
28828 lq_line_index := g_line_index_tbl_p(I);
28829 lq_list_line_id := g_list_line_id_tbl_p(I);
28830
28831 END IF; --end if for is list_line_no_exists
28832
28833
28834 --if l_satis_quals_opt <> 'N' then
28835 -- 4029027 commented out by [4455344/4489224]
28836 --bug 4029027
28837 --IF (l_satis_quals_opt <> 'N' or (l_satis_quals_opt = 'N' and g_context_tbl_p(i) <> G_QUALIFIER_TYPE)) THEN
28838
28839 --INSERT PRODUCT ATTRIBUTES
28840 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(I);
28841 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(I);
28842 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(I);
28843 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(I);
28844 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(I);
28845 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(I);
28846 G_VALUE_TO_tbl(K) := NULL;
28847 G_COMPARISON_OPERATOR_TYPE_tbl(K):= NULL;
28848 G_VALIDATED_FLAG_tbl(K) := G_VALIDATED_FLAG_TBL_P(I);
28849 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(I);
28850 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
28851 G_PRICING_ATTR_FLAG_tbl(K) :=G_PRICING_ATTR_FLAG_TBL_P(I);
28852 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
28853 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
28854 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
28855 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_P(I);
28856 G_SETUP_VALUE_TO_tbl(K) :=NULL;
28857 G_GROUPING_NUMBER_tbl(K) :=G_GROUPING_NUMBER_TBL_P(I);
28858 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
28859 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_PRICING_ONLY';
28860 G_QUALIFIER_PRECEDENCE_tbl(K) :=G_QUALIFIER_PRECEDENCE_TBL_P(I);
28861 G_DATATYPE_tbl(K) :=NULL;
28862 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
28863 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
28864 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_P(I);
28865 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
28866 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
28867 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28868 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
28869 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
28870 K:= K+1;
28871 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28872 engine_debug('The value of K : ' || K);
28873
28874 END IF;
28875 --INSERT PRICING ATTRIBUTES
28876 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
28877 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(I);
28878 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_PR(I);
28879 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_PR(I);
28880 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_PR(I);
28881 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_PR(I);
28882 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_PR(I);
28883 G_VALUE_TO_tbl(K) := NULL;
28884 G_COMPARISON_OPERATOR_TYPE_tbl(K):= G_OPERATOR_TYPE_TBL_PR(I);
28885 G_VALIDATED_FLAG_tbl(K) := G_VALIDATED_FLAG_TBL_P(I);
28886 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(I);
28887 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
28888 G_PRICING_ATTR_FLAG_tbl(K) :=G_PRICING_ATTR_FLAG_TBL_P(I);
28889 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
28890 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
28891 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
28892 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
28893 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
28894 G_GROUPING_NUMBER_tbl(K) :=G_GROUPING_NUMBER_TBL_P(I);
28895 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
28896 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_PRICING_ONLY';
28897 G_QUALIFIER_PRECEDENCE_tbl(K) :=G_QUALIFIER_PRECEDENCE_TBL_P(I);
28898 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
28899 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
28900 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
28901 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_P(I);
28902 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
28903 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
28904 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28905 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
28906 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
28907 K:= K+1;
28908 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28909 engine_debug('The value of K : ' || K);
28910 END IF;
28911 END IF;
28912
28913 -- end if; [4455344/4489224]
28914
28915 END LOOP;
28916 END IF;
28917 END LOOP;
28918
28919 qp_debug_util.tstop('L_PROD_PRIC_CUR');
28920
28921 CLOSE l_prod_pric_cur;
28922 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28923 engine_debug('After l_prod_pric_cur_mod');
28924
28925 END IF;
28926 IF(G_BLIND_DISCOUNT_PROFILE = G_YES) THEN
28927 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28928 engine_debug('In blind discount mode');
28929
28930 END IF;
28931 lq_line_index := -9999;
28932 lq_list_line_id := -9999;
28933
28934 --Select the lists that are good for anything
28935 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28936 engine_debug('Before blind cursor');
28937 END IF;
28938 qp_debug_util.tstart('L_CUR','Cursor Loop L_CUR');
28939 OPEN l_cur(p_pricing_phase_id);
28940
28941
28942
28943 LOOP
28944 G_LINE_INDEX_TBL_B.delete;
28945 G_LIST_HEADER_ID_TBL_B.delete;
28946 G_LIST_LINE_ID_TBL_B.delete;
28947 G_PRICE_BREAK_TYPE_CODE_TBL_B.delete ;
28948 G_LIST_LINE_TYPE_TBL_B.delete;
28949 G_LIST_TYPE_CODE_TBL_B.delete;
28950 G_PRICING_GROUP_SEQUENCE_TBL_B.delete;
28951 G_PRICING_PHASE_ID_TBL_B.delete;
28952 G_OPER_CALCULATION_CODE_TBL_B.delete;
28953 G_OPERAND_VALUE_TBL_B.delete;
28954 G_NET_AMOUNT_FLAG_TBL_B.delete; -- IT net_amount 2720717
28955 G_ASK_FOR_FLAG_TBL_B.delete;
28956 G_PRICE_FORMULA_ID_TBL_B.delete;
28957 G_PRODUCT_PRECEDENCE_TBL_B.delete;
28958 G_INCOMP_GRP_CODE_TBL_B.delete;
28959 G_AUTOMATIC_FLAG_TBL_B.delete;
28960 G_OVERRIDE_FLAG_TBL_B.delete;
28961 G_PRIMARY_UOM_FLAG_TBL_B.delete;
28962 G_PRINT_ON_INVOICE_FLAG_TBL_B.delete;
28963 G_MODIFIER_LEVEL_CODE_TBL_B.delete;
28964 G_BENEFIT_QTY_TBL_B.delete;
28965 G_BENEFIT_UOM_CODE_TBL_B.delete;
28966 G_SERVICE_DURATION_TBL_B.delete; -- service project
28967 G_SERVICE_PERIOD_TBL_B.delete; -- service project
28968 G_LIST_LINE_NO_TBL_B.delete;
28969 G_ACCRUAL_FLAG_TBL_B.delete;
28970 G_ACCR_CONVERSION_RATE_TBL_B.delete;
28971 G_ESTIM_ACCRUAL_RATE_TBL_B.delete;
28972 G_HEADER_LIMIT_EXISTS_TBL_P.delete;
28973 G_LINE_LIMIT_EXISTS_TBL_P.delete;
28974 G_CHARGE_TYPE_CODE_TBL_P.delete;
28975 G_CHARGE_SUBTYPE_CODE_TBL_P.delete;
28976 G_ACCUM_CONTEXT_TBL_P.delete; -- for accum range break
28977 G_ACCUM_ATTRIBUTE_TBL_P.delete; -- for accum range break
28978 G_ACCUM_FLAG_TBL_P.delete; -- for accum range break
28979
28980 FETCH l_cur BULK COLLECT INTO
28981 G_LIST_HEADER_ID_TBL_B
28982 , G_LIST_LINE_ID_TBL_B
28983 , G_LIST_LINE_TYPE_TBL_B
28984 , G_LINE_INDEX_TBL_B
28985 , G_AUTOMATIC_FLAG_TBL_B
28986 , G_MODIFIER_LEVEL_CODE_TBL_B
28987 , G_PRIMARY_UOM_FLAG_TBL_B
28988 , G_OPER_CALCULATION_CODE_TBL_B
28989 , G_OPERAND_VALUE_TBL_B
28990 , G_NET_AMOUNT_FLAG_TBL_B -- IT net_amount 2720717
28991 , G_PRICING_GROUP_SEQUENCE_TBL_B
28992 , G_ASK_FOR_FLAG_TBL_B
28993 , G_LIST_TYPE_CODE_TBL_B
28994 , G_PRICING_PHASE_ID_TBL_B
28995 , G_PRICE_BREAK_TYPE_CODE_TBL_B
28996 , G_INCOMP_GRP_CODE_TBL_B
28997 , G_PRICE_FORMULA_ID_TBL_B
28998 , G_PRODUCT_PRECEDENCE_TBL_B
28999 , G_OVERRIDE_FLAG_TBL_B
29000 , G_BENEFIT_QTY_TBL_B
29001 , G_BENEFIT_UOM_CODE_TBL_B
29002 , G_SERVICE_DURATION_TBL_B -- service project
29003 , G_SERVICE_PERIOD_TBL_B -- service project
29004 , G_LIST_LINE_NO_TBL_B
29005 , G_ACCRUAL_FLAG_TBL_B
29006 , G_ACCR_CONVERSION_RATE_TBL_B
29007 , G_ESTIM_ACCRUAL_RATE_TBL_B
29008 , G_HEADER_LIMIT_EXISTS_TBL_P
29009 , G_LINE_LIMIT_EXISTS_TBL_P
29010 , G_CHARGE_TYPE_CODE_TBL_P
29011 , G_CHARGE_SUBTYPE_CODE_TBL_P
29012 , G_ACCUM_CONTEXT_TBL_P -- accum range break
29013 , G_ACCUM_ATTRIBUTE_TBL_P -- accum range break
29014 , G_ACCUM_FLAG_TBL_P LIMIT nROWS;
29015
29016 EXIT WHEN G_LINE_INDEX_TBL_B.COUNT = 0;
29017
29018
29019 IF (G_LINE_INDEX_TBL_B.COUNT > 0) THEN
29020 FOR I in G_LINE_INDEX_TBL_B.FIRST .. G_LINE_INDEX_TBL_B.LAST LOOP
29021
29022 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29023 engine_debug('List line id selected from blind cur: '||G_LIST_LINE_ID_TBL_B(I) );
29024 END IF;
29025 IF (lq_line_index <> g_line_index_tbl_b(I) OR lq_list_line_id <> g_list_line_id_tbl_b(I)) THEN
29026 l_line_detail_index :=GET_LINE_DETAIL_INDEX;
29027 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29028 engine_debug('Getting new line detail index2 '||l_line_detail_index);
29029 END IF;
29030
29031 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_B(I);
29032 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
29033 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_B(I);
29034 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_B(I);
29035 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
29036 G_PRICING_STATUS_TEXT_LD_TBL(M) :='GOOD_FOR_ALL';
29037 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_B(I);
29038 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
29039 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
29040 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_B(I);
29041 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_B(I);
29042 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_B(I);
29043 G_CREATED_FROM_SQL_TBL(M) :='GOOD_FOR_ALL';
29044 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_B(I);
29045 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_B(I);
29046 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_B(I);
29047 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_B(I);
29048 G_NET_AMOUNT_FLAG_TBL(M) :=G_NET_AMOUNT_FLAG_TBL_B(I); -- IT net_amount 2720717
29049 G_ASK_FOR_FLAG_TBL(M) :=G_ASK_FOR_FLAG_TBL_B(I);
29050 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_B(I);
29051 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_B(I);
29052 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_B(I);
29053 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_B(I);
29054 G_OVERRIDE_FLAG_TBL(M) :=G_OVERRIDE_FLAG_TBL_B(I);
29055 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_B(I);
29056 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_B(I);
29057 G_BENEFIT_QTY_TBL(M) :=G_BENEFIT_QTY_TBL_B(I);
29058 G_BENEFIT_UOM_CODE_TBL(M) :=G_BENEFIT_UOM_CODE_TBL_B(I);
29059 G_SERVICE_DURATION_TBL(M) :=G_SERVICE_DURATION_TBL_B(I); -- service project
29060 G_SERVICE_PERIOD_TBL(M) :=G_SERVICE_PERIOD_TBL_B(I); -- service project
29061 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_B(I);
29062 G_ACCRUAL_FLAG_TBL(M) :=G_ACCRUAL_FLAG_TBL_B(I);
29063 G_ACCRUAL_CONVERSION_RATE_TBL(M) :=G_ACCR_CONVERSION_RATE_TBL_B(I);
29064 G_ESTIM_ACCRUAL_RATE_TBL(M) :=G_ESTIM_ACCRUAL_RATE_TBL_B(I);
29065 G_HEADER_LIMIT_EXISTS_TBL(M) :=G_HEADER_LIMIT_EXISTS_TBL_P(I);
29066 G_LINE_LIMIT_EXISTS_TBL(M) :=G_LINE_LIMIT_EXISTS_TBL_P(I);
29067 G_CHARGE_TYPE_CODE_TBL(M) :=nvl(G_CHARGE_TYPE_CODE_TBL_P(I),'');
29068 G_CHARGE_SUBTYPE_CODE_TBL(M) :=nvl(G_CHARGE_SUBTYPE_CODE_TBL_P(I),'');
29069 G_ACCUM_CONTEXT_TBL(M) :=G_ACCUM_CONTEXT_TBL_P(I); -- accum range break
29070 G_ACCUM_ATTRIBUTE_TBL(M) :=G_ACCUM_ATTRIBUTE_TBL_P(I); -- accum range break
29071 G_ACCUM_FLAG_TBL(M) :=G_ACCUM_FLAG_TBL_P(I); -- accum range break
29072 M:=M+1;
29073 lq_line_index := g_line_index_tbl_b(I);
29074 lq_list_line_id := g_list_line_id_tbl_b(I);
29075
29076 END IF;
29077
29078 END LOOP;
29079 END IF; --IF
29080 END LOOP;
29081
29082 qp_debug_util.tstop('L_CUR');
29083
29084 CLOSE l_cur;
29085 END IF; --for blind discount
29086 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29087 engine_debug('After blind cursor');
29088
29089
29090 END IF;
29091 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
29092 --RAISE OTHERS;
29093 NULL;
29094 END IF;
29095
29096 -- Keep it for debugging purposes
29097 /* FOR Z In 1 .. g_line_detail_index_ld_tbl.count
29098 Loop
29099 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29100 engine_debug( '1: ' || G_LINE_DETAIL_INDEX_LD_TBL(Z));
29101 engine_debug( '2: ' || G_LINE_DETAIL_TYPE_CODE_TBL(Z));
29102 engine_debug( '3: ' || G_PRICE_BREAK_TYPE_CODE_TBL(Z));
29103 engine_debug( '5: ' || G_LINE_INDEX_LD_TBL(Z) );
29104 engine_debug( '6: ' || G_LIST_HEADER_ID_LD_TBL(Z));
29105 engine_debug( '7: ' || G_LIST_LINE_ID_LD_TBL(Z) );
29106 engine_debug( '8: ' || G_LIST_LINE_TYPE_TBL(Z) );
29107 engine_debug( '9: ' || G_LIST_TYPE_CODE_TBL(Z));
29108 engine_debug( '10: ' || G_CREATED_FROM_SQL_TBL(Z));
29109 engine_debug( '11: ' || G_PRICING_GROUP_SEQUENCE_TBL(Z));
29110 engine_debug( '12: ' || G_PRICING_PHASE_ID_TBL(Z));
29111 engine_debug( '13: ' || G_OPERAND_CALCULATION_CODE_TBL(Z));
29112 engine_debug( '14: ' || G_OPERAND_VALUE_TBL(Z));
29113 engine_debug( '15: ' || G_SUBSTITUTION_TYPE_CODE_TBL(Z));
29114 engine_debug( '16: ' || G_SUBSTITUTION_VALUE_FROM_TBL(Z));
29115 engine_debug( '17: ' || G_SUBSTITUTION_VALUE_TO_TBL(Z));
29116 engine_debug( '18: ' || G_ASK_FOR_FLAG_TBL(Z));
29117 engine_debug( '19: ' || G_PRICE_FORMULA_ID_TBL(Z));
29118 engine_debug( '20: ' || G_PRICING_STATUS_CODE_LD_TBL(Z));
29119 engine_debug( '21: ' || G_PRICING_STATUS_TEXT_LD_TBL(Z));
29120 engine_debug( '22: ' || G_PRODUCT_PRECEDENCE_TBL(Z) );
29121 engine_debug( '23: ' || G_INCOMP_GRP_CODE_TBL(Z));
29122 engine_debug( '24: ' || G_PROCESSED_FLAG_LD_TBL(Z));
29123 engine_debug( '25: ' || G_APPLIED_FLAG_LD_TBL(Z));
29124 engine_debug( '26: ' || G_AUTOMATIC_FLAG_TBL(Z));
29125 engine_debug( '27: ' || G_OVERRIDE_FLAG_TBL(Z));
29126 engine_debug( '28: ' || G_PRIMARY_UOM_FLAG_TBL(Z));
29127 engine_debug( '29: ' || G_PRINT_ON_INVOICE_FLAG_TBL(Z));
29128 engine_debug( '30: ' || G_MODIFIER_LEVEL_CODE_TBL(Z));
29129 engine_debug( '31: ' || G_BENEFIT_QTY_TBL(Z));
29130 engine_debug( '32: ' || G_BENEFIT_UOM_CODE_TBL(Z));
29131 engine_debug( '33: ' || G_LIST_LINE_NO_TBL(Z));
29132 engine_debug( '34: ' || G_ACCRUAL_FLAG_TBL(Z));
29133 engine_debug( '35: ' || G_ACCRUAL_CONVERSION_RATE_TBL(Z));
29134 engine_debug( '36: ' || G_ESTIM_ACCRUAL_RATE_TBL(Z));
29135 engine_debug( '37: ' || G_RECURRING_FLAG_TBL(Z));
29136 engine_debug( '38: ' || G_SELECTED_VOLUME_ATTR_TBL(Z));
29137 engine_debug( '40: ' || G_HEADER_LIMIT_EXISTS_TBL(Z));
29138 engine_debug( '41: ' || G_LINE_LIMIT_EXISTS_TBL(Z));
29139 engine_debug( '42: ' || G_CHARGE_TYPE_CODE_TBL(Z));
29140 engine_debug( '43: ' || G_CHARGE_SUBTYPE_CODE_TBL(Z));
29141 engine_debug( '44 net_amount_flag: ' || G_NET_AMOUNT_FLAG_TBL(Z)); -- IT net_amount 2720717
29142 END IF;
29143 End Loop; */
29144
29145 IF M > 1 THEN
29146 qp_debug_util.tstart('INSERT_LDETS_PVT','Inserting into ldets INSERT_LDETS_PVT');
29147 INSERT_LDETS_PVT( p_LINE_DETAIL_index => G_LINE_DETAIL_INDEX_LD_TBL,
29148 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
29149 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
29150 p_LINE_INDEX => G_LINE_INDEX_LD_TBL,
29151 p_CREATED_FROM_LIST_HEADER_ID =>G_LIST_HEADER_ID_LD_TBL,
29152 p_CREATED_FROM_LIST_LINE_ID =>G_LIST_LINE_ID_LD_TBL,
29153 p_CREATED_FROM_LIST_LINE_TYPE =>G_LIST_LINE_TYPE_TBL,
29154 p_CREATED_FROM_LIST_TYPE_CODE =>G_LIST_TYPE_CODE_TBL,
29155 p_CREATED_FROM_SQL =>G_CREATED_FROM_SQL_TBL,
29156 p_PRICING_GROUP_SEQUENCE =>G_PRICING_GROUP_SEQUENCE_TBL,
29157 P_PRICING_PHASE_ID =>G_PRICING_PHASE_ID_TBL,
29158 p_OPERAND_CALCULATION_CODE =>G_OPERAND_CALCULATION_CODE_TBL,
29159 p_OPERAND_VALUE =>G_OPERAND_VALUE_TBL,
29160 p_NET_AMOUNT_FLAG =>G_NET_AMOUNT_FLAG_TBL, -- IT net_amount 2720717
29161 p_ASK_FOR_FLAG =>G_ASK_FOR_FLAG_TBL,
29162 p_PRICE_FORMULA_ID =>G_PRICE_FORMULA_ID_TBL,
29163 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_LD_TBL,
29164 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_LD_TBL,
29165 p_PRODUCT_PRECEDENCE =>G_PRODUCT_PRECEDENCE_TBL ,
29166 p_INCOMPATABLILITY_GRP_CODE =>G_INCOMP_GRP_CODE_TBL,
29167 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_LD_TBL,
29168 p_APPLIED_FLAG =>G_APPLIED_FLAG_LD_TBL,
29169 p_AUTOMATIC_FLAG =>G_AUTOMATIC_FLAG_TBL,
29170 p_OVERRIDE_FLAG =>G_OVERRIDE_FLAG_TBL,
29171 p_PRIMARY_UOM_FLAG =>G_PRIMARY_UOM_FLAG_TBL,
29172 p_MODIFIER_LEVEL_CODE =>G_MODIFIER_LEVEL_CODE_TBL,
29173 p_BENEFIT_QTY =>G_BENEFIT_QTY_TBL,
29174 p_BENEFIT_UOM_CODE =>G_BENEFIT_UOM_CODE_TBL,
29175 p_SERVICE_DURATION =>G_SERVICE_DURATION_TBL, -- service project
29176 p_SERVICE_PERIOD =>G_SERVICE_PERIOD_TBL, -- service project
29177 p_LIST_LINE_NO =>G_LIST_LINE_NO_TBL,
29178 p_ACCRUAL_FLAG =>G_ACCRUAL_FLAG_TBL,
29179 p_ACCRUAL_CONVERSION_RATE =>G_ACCRUAL_CONVERSION_RATE_TBL,
29180 p_ESTIM_ACCRUAL_RATE =>G_ESTIM_ACCRUAL_RATE_TBL,
29181 p_HEADER_LIMIT_EXISTS =>G_HEADER_LIMIT_EXISTS_TBL,
29182 p_LINE_LIMIT_EXISTS =>G_LINE_LIMIT_EXISTS_TBL,
29183 p_CHARGE_TYPE_CODE =>G_CHARGE_TYPE_CODE_TBL,
29184 p_CHARGE_SUBTYPE_CODE =>G_CHARGE_SUBTYPE_CODE_TBL,
29185 p_ACCUM_CONTEXT =>G_ACCUM_CONTEXT_TBL, -- accum range break
29186 p_ACCUM_ATTRIBUTE =>G_ACCUM_ATTRIBUTE_TBL, -- accum range break
29187 p_ACCUM_FLAG =>G_ACCUM_FLAG_TBL, -- accum range break
29188 x_status_code =>l_status_code,
29189 x_status_text =>l_status_text
29190 );
29191 qp_debug_util.tstop('INSERT_LDETS_PVT');
29192 END IF;
29193
29194 IF K > 1 THEN
29195 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29196 engine_debug('hw: k = ' || k);
29197 END IF;
29198 qp_debug_util.tstart('INSERT_LINE_ATTRS2','Inserting into line attrs INSERT_LINE_ATTRS2');
29199 INSERT_LINE_ATTRS2
29200 ( p_LINE_INDEX_tbl =>G_LINE_INDEX_tbl,
29201 p_LINE_DETAIL_INDEX_tbl =>G_LINE_DETAIL_INDEX_tbl,
29202 p_ATTRIBUTE_LEVEL_tbl =>G_ATTRIBUTE_LEVEL_tbl,
29203 p_ATTRIBUTE_TYPE_tbl =>G_ATTRIBUTE_TYPE_tbl,
29204 p_LIST_HEADER_ID_tbl =>G_LIST_HEADER_ID_tbl,
29205 p_LIST_LINE_ID_tbl =>G_LIST_LINE_ID_tbl,
29206 p_CONTEXT_tbl =>G_CONTEXT_tbl,
29207 p_ATTRIBUTE_tbl =>G_ATTRIBUTE_tbl,
29208 p_VALUE_FROM_tbl =>G_VALUE_FROM_tbl,
29209 p_SETUP_VALUE_FROM_tbl =>G_SETUP_VALUE_FROM_tbl,
29210 p_VALUE_TO_tbl =>G_VALUE_TO_tbl,
29211 p_SETUP_VALUE_TO_tbl =>G_SETUP_VALUE_TO_tbl,
29212 p_GROUPING_NUMBER_tbl => G_GROUPING_NUMBER_tbl,
29213 p_NO_QUALIFIERS_IN_GRP_tbl =>G_NO_QUALIFIERS_IN_GRP_tbl,
29214 p_COMPARISON_OPERATOR_TYPE_tbl =>G_COMPARISON_OPERATOR_TYPE_tbl,
29215 p_VALIDATED_FLAG_tbl =>G_VALIDATED_FLAG_tbl,
29216 p_APPLIED_FLAG_tbl =>G_APPLIED_FLAG_tbl,
29217 p_PRICING_STATUS_CODE_tbl =>G_PRICING_STATUS_CODE_tbl,
29218 p_PRICING_STATUS_TEXT_tbl =>G_PRICING_STATUS_TEXT_tbl,
29219 p_QUALIFIER_PRECEDENCE_tbl =>G_QUALIFIER_PRECEDENCE_tbl,
29220 p_DATATYPE_tbl =>G_DATATYPE_tbl,
29221 p_PRICING_ATTR_FLAG_tbl =>G_PRICING_ATTR_FLAG_tbl,
29222 p_QUALIFIER_TYPE_tbl =>G_QUALIFIER_TYPE_TBL,
29223 p_product_uom_code_tbl =>G_PRODUCT_UOM_CODE_TBL,
29224 p_excluder_flag_tbl =>G_EXCLUDER_FLAG_TBL,
29225 p_PRICING_PHASE_ID_TBL =>G_PRICING_PHASE_ID_TBL_A,
29226 p_INCOMPATABILITY_GRP_CODE_TBL =>G_INCOMP_GRP_CODE_TBL_A,
29227 p_LINE_DETAIL_TYPE_CODE_TBL =>G_LINE_DETAIL_TYPE_CODE_TBL_A,
29228 p_MODIFIER_LEVEL_CODE_TBL =>G_MODIFIER_LEVEL_CODE_TBL_A,
29229 p_PRIMARY_UOM_FLAG_TBL =>G_PRIMARY_UOM_FLAG_TBL_A,
29230 x_status_code =>l_status_code,
29231 x_status_text =>l_status_text);
29232
29233 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
29234 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
29235 END IF;
29236 qp_debug_util.tstop('INSERT_LINE_ATTRS2');
29237 END IF;
29238
29239 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29240 engine_debug('Before Inserting attributes in excluded cursor');
29241
29242 END IF;
29243 K := 1;
29244
29245 /*
29246 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
29247 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
29248 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
29249 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
29250 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
29251 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
29252
29253 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,QP_PRICING_ATTRIBUTES_N2,LIST_LINE_ID,1
29254 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,QP_PRICING_ATTRIBUTES_N2,EXCLUDER_FLAG,2
29255
29256 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_ldets_tmp_N2,PRICING_PHASE_ID,1
29257 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_ldets_tmp_N2,PRICING_STATUS_CODE,2
29258
29259 */
29260
29261 -- Delete Excluded Line Details Directly if the inner select returns an excluded row
29262
29263 qp_debug_util.tstart('D_EXCLUDER','Update statement D_EXCLUDER');
29264 UPDATE qp_npreq_ldets_tmp a
29265 SET pricing_status_code = 'D_EXCLUDER'
29266 WHERE pricing_phase_id = p_pricing_phase_id
29267 AND pricing_status_code = G_STATUS_NEW
29268 AND EXISTS ( SELECT/*+ ORDERED USE_NL(c) index(c qp_preq_line_attrs_tmp_N2) index(b QP_PRICING_ATTRIBUTES_N2) l_excl_cur */
29269 'x'
29270 FROM qp_pricing_attributes b,
29271 qp_npreq_line_attrs_tmp c
29272 WHERE b.list_line_id = a.created_from_list_line_id
29273 AND b.excluder_flag = G_YES
29274 AND b.product_attribute_context = c.context
29275 AND b.product_attribute = c.attribute
29276 AND b.product_attr_value = c.value_from
29277 AND c.attribute_type = G_PRODUCT_TYPE
29278 AND c.pricing_status_code = G_STATUS_UNCHANGED
29279 AND c.line_index = a.line_index);
29280 qp_debug_util.tstop('D_EXCLUDER');
29281 --selecting list line attributes that match excluder flag
29282 /* OPEN l_get_excluded_prods_cur(p_pricing_phase_id);
29283
29284 LOOP
29285 G_LIST_HEADER_ID_TBL_P.delete;
29286 G_LIST_LINE_ID_TBL_P.delete;
29287 G_LINE_INDEX_TBL_P.delete;
29288 G_VALIDATED_FLAG_TBL_P.delete;
29289 G_APPLIED_FLAG_TBL_P.delete;
29290 G_ATTRIBUTE_LEVEL_TBL_P.delete;
29291 G_ATTRIBUTE_TYPE_TBL_P.delete;
29292 G_CONTEXT_TBL_P.delete;
29293 G_ATTRIBUTE_TBL_P.delete;
29294 G_VALUE_FROM_TBL_P.delete;
29295 G_SETUP_VALUE_FROM_TBL_P.delete;
29296 G_PRICING_ATTR_FLAG_TBL_P.delete;
29297 G_PRODUCT_UOM_CODE_TBL_P.delete;
29298 G_EXCLUDER_FLAG_TBL_P.delete;
29299 G_QUALIFIER_PRECEDENCE_TBL_P.delete;
29300 G_LINE_DETAIL_INDEX_TBL_P.delete;
29301
29302 FETCH l_get_excluded_prods_cur BULK COLLECT INTO
29303 G_LIST_HEADER_ID_TBL_P
29304 , G_LIST_LINE_ID_TBL_P
29305 , G_LINE_INDEX_TBL_P
29306 , G_VALIDATED_FLAG_TBL_P
29307 , G_APPLIED_FLAG_TBL_P
29308 , G_ATTRIBUTE_LEVEL_TBL_P
29309 , G_ATTRIBUTE_TYPE_TBL_P
29310 , G_CONTEXT_TBL_P
29311 , G_ATTRIBUTE_TBL_P
29312 , G_VALUE_FROM_TBL_P
29313 , G_SETUP_VALUE_FROM_TBL_P
29314 , G_PRICING_ATTR_FLAG_TBL_P
29315 , G_PRODUCT_UOM_CODE_TBL_P
29316 , G_EXCLUDER_FLAG_TBL_P
29317 , G_QUALIFIER_PRECEDENCE_TBL_P
29318 , G_LINE_DETAIL_INDEX_TBL_P LIMIT nROWS;
29319
29320 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
29321
29322 IF (G_LINE_INDEX_TBL_P.COUNT > 0) THEN
29323 FOR I in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST LOOP
29324 --INSERT PRODUCT ATTRIBUTES
29325 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29326 engine_debug('Inserting attributes in excluded cursor : ' || G_LINE_INDEX_TBL_P(I));
29327 END IF;
29328 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(I);
29329 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(I);
29330 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(I);
29331 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(I);
29332 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(I);
29333 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(I);
29334 G_VALUE_TO_tbl(K) := NULL;
29335 G_COMPARISON_OPERATOR_TYPE_tbl(K):= NULL;
29336 G_VALIDATED_FLAG_tbl(K) := G_VALIDATED_FLAG_TBL_P(I);
29337 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(I);
29338 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
29339 G_PRICING_ATTR_FLAG_tbl(K) := G_PRICING_ATTR_FLAG_TBL_P(I);
29340 G_LINE_DETAIL_INDEX_tbl(K) := G_LINE_DETAIL_INDEX_TBL_P(I);
29341 G_LIST_HEADER_ID_tbl(K) := G_LIST_HEADER_ID_TBL_P(I);
29342 G_LIST_LINE_ID_tbl(K) := G_LIST_LINE_ID_TBL_P(I);
29343 G_SETUP_VALUE_FROM_tbl(K) := G_SETUP_VALUE_FROM_TBL_P(I);
29344 G_SETUP_VALUE_TO_tbl(K) := NULL;
29345 G_GROUPING_NUMBER_tbl(K) := NULL;
29346 G_NO_QUALIFIERS_IN_GRP_tbl(K) := NULL;
29347 G_PRICING_STATUS_TEXT_tbl(K) := 'EXCLUDED_PRODUCT_ONLY';
29348 G_QUALIFIER_PRECEDENCE_tbl(K) := G_QUALIFIER_PRECEDENCE_TBL_P(I);
29349 G_DATATYPE_tbl(K) := NULL;
29350 G_EXCLUDER_FLAG_TBL(K) := G_EXCLUDER_FLAG_TBL_P(I);
29351 G_PRODUCT_UOM_CODE_TBL(K) := G_PRODUCT_UOM_CODE_TBL_P(I);
29352 G_QUALIFIER_TYPE_TBL(K) := NULL;
29353 G_PRICING_PHASE_ID_TBL_A(K) := p_pricing_phase_id;
29354 G_INCOMP_GRP_CODE_TBL_A(K) :=NULL;
29355 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
29356 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=NULL;
29357 G_PRIMARY_UOM_FLAG_TBL_A(K) :=NULL;
29358 K:= K+1;
29359 END LOOP;
29360 END IF;
29361 END LOOP;
29362 CLOSE l_get_excluded_prods_cur; */
29363
29364
29365 IF K > 1 THEN
29366 qp_debug_util.tstart('INSERT_LINE_ATTRS2','Inserting into line attrs INSERT_LINE_ATTRS2');
29367 INSERT_LINE_ATTRS2
29368 ( p_LINE_INDEX_tbl =>G_LINE_INDEX_tbl,
29369 p_LINE_DETAIL_INDEX_tbl =>G_LINE_DETAIL_INDEX_tbl,
29370 p_ATTRIBUTE_LEVEL_tbl =>G_ATTRIBUTE_LEVEL_tbl,
29371 p_ATTRIBUTE_TYPE_tbl =>G_ATTRIBUTE_TYPE_tbl,
29372 p_LIST_HEADER_ID_tbl =>G_LIST_HEADER_ID_tbl,
29373 p_LIST_LINE_ID_tbl =>G_LIST_LINE_ID_tbl,
29374 p_CONTEXT_tbl =>G_CONTEXT_tbl,
29375 p_ATTRIBUTE_tbl =>G_ATTRIBUTE_tbl,
29376 p_VALUE_FROM_tbl =>G_VALUE_FROM_tbl,
29377 p_SETUP_VALUE_FROM_tbl =>G_SETUP_VALUE_FROM_tbl,
29378 p_VALUE_TO_tbl =>G_VALUE_TO_tbl,
29379 p_SETUP_VALUE_TO_tbl =>G_SETUP_VALUE_TO_tbl,
29380 p_GROUPING_NUMBER_tbl => G_GROUPING_NUMBER_tbl,
29381 p_NO_QUALIFIERS_IN_GRP_tbl =>G_NO_QUALIFIERS_IN_GRP_tbl,
29382 p_COMPARISON_OPERATOR_TYPE_tbl =>G_COMPARISON_OPERATOR_TYPE_tbl,
29383 p_VALIDATED_FLAG_tbl =>G_VALIDATED_FLAG_tbl,
29384 p_APPLIED_FLAG_tbl =>G_APPLIED_FLAG_tbl,
29385 p_PRICING_STATUS_CODE_tbl =>G_PRICING_STATUS_CODE_tbl,
29386 p_PRICING_STATUS_TEXT_tbl =>G_PRICING_STATUS_TEXT_tbl,
29387 p_QUALIFIER_PRECEDENCE_tbl =>G_QUALIFIER_PRECEDENCE_tbl,
29388 p_DATATYPE_tbl =>G_DATATYPE_tbl,
29389 p_PRICING_ATTR_FLAG_tbl =>G_PRICING_ATTR_FLAG_tbl,
29390 p_QUALIFIER_TYPE_tbl =>G_QUALIFIER_TYPE_TBL,
29391 p_product_uom_code_tbl =>G_PRODUCT_UOM_CODE_TBL,
29392 p_excluder_flag_tbl =>G_EXCLUDER_FLAG_TBL,
29393 p_PRICING_PHASE_ID_TBL =>G_PRICING_PHASE_ID_TBL_A,
29394 p_INCOMPATABILITY_GRP_CODE_TBL =>G_INCOMP_GRP_CODE_TBL_A,
29395 p_LINE_DETAIL_TYPE_CODE_TBL =>G_LINE_DETAIL_TYPE_CODE_TBL_A,
29396 p_MODIFIER_LEVEL_CODE_TBL =>G_MODIFIER_LEVEL_CODE_TBL_A,
29397 p_PRIMARY_UOM_FLAG_TBL =>G_PRIMARY_UOM_FLAG_TBL_A,
29398 x_status_code =>l_status_code,
29399 x_status_text =>l_status_text);
29400 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
29401 RAISE E_ROUTINE_ERRORS;
29402 END IF;
29403 qp_debug_util.tstop('INSERT_LINE_ATTRS2');
29404 END IF;
29405
29406 --Reset_all_tbls;
29407 Reset_All_Tbls(l_status_code ,l_status_text );
29408 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
29409 RAISE E_ROUTINE_ERRORS;
29410 END IF;
29411
29412
29413 EXCEPTION
29414 WHEN E_ROUTINE_ERRORS THEN
29415 x_status_code := FND_API.G_RET_STS_ERROR;
29416 x_status_text := l_status_text;
29417 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29418 engine_debug(l_status_text);
29419 END IF;
29420 WHEN OTHERS THEN
29421 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29422 engine_debug('< In Select_modifiers>: '||SQLERRM);
29423 END IF;
29424 x_status_code := FND_API.G_RET_STS_ERROR;
29425 x_status_text := l_routine||' '||SQLERRM;
29426 END SELECT_MODIFIERS;
29427
29428 procedure SELECT_PRICE_LIST_LINES_PAT(
29429 p_pricing_phase_id IN NUMBER,
29430 p_freeze_override_flag IN VARCHAR2,
29431 p_search_path IN NUMBER,
29432 p_control_rec IN CONTROL_RECORD_TYPE,
29433 x_status_code OUT NOCOPY VARCHAR2,
29434 x_status_text OUT NOCOPY VARCHAR2
29435 )
29436 AS
29437
29438 l_trunct_sysdate DATE := TRUNC(sysdate);
29439
29440 -- Path -> Header First - Line Next
29441
29442 CURSOR l_pat_header_cache_p1 IS
29443 SELECT /*+ ORDERED index(atrgrps QP_ATTRIBUTE_GROUPS_N3)
29444 index(qppat QP_NPREQ_LINE_PATRNS_T_N2)
29445 index(qprs qp_pte_source_systems_u2)
29446 l_pat_header_cache_p1 */
29447 DISTINCT atrgrps.LIST_HEADER_ID,
29448 atrgrps.LIST_LINE_ID,
29449 qplines.LINE_INDEX,
29450 atrgrps.pattern_id MATCHED_PATTRN_ID,
29451 p_pricing_phase_id,
29452 atrgrps.HASH_KEY MATCHED_HASH_KEY,
29453 G_STAGE_CACHE_PL_HDR STAGE,
29454 G_STATUS_UNCHANGED PRICING_STATUS_CODE,
29455 atrgrps.source_system_code,
29456 atrgrps.HEADER_QUALS_EXIST_FLAG,
29457 atrgrps.GROUPING_NO,
29458 atrgrps.EQ_FLAG,
29459 qplines.VALIDATED_FLAG,
29460 atrgrps.MODIFIER_LEVEL_CODE,
29461 atrgrps.other_oprt_count,
29462 atrgrps.null_other_oprt_count,
29463 atrgrps.LIST_TYPE_CODE,
29464 atrgrps.ASK_FOR_FLAG,
29465 atrgrps.HEADER_LIMIT_EXISTS,
29466 atrgrps.LINE_LIMIT_EXISTS,
29467 NULL CURRENCY_DETAIL_ID,
29468 atrgrps.CURRENCY_HEADER_ID,
29469 NULL SELLING_ROUNDING_FACTOR,
29470 atrgrps.CURRENCY_CODE BASE_CURRENCY_CODE,
29471 qplines.pricing_effective_date,
29472 atrgrps.descendents_quals_exist,
29473 atrgrps.effective_precedence --bug 12731268
29474 FROM (SELECT /*+ dynamic_sampling(1) */ *
29475 FROM qp_npreq_lines_tmp
29476 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED) --check this condition
29477 AND nvl(validated_flag,G_NO) = G_NO) qplines,
29478 qp_npreq_line_patrns_tmp qppattmp,
29479 qp_secu_attr_groups_v atrgrps,
29480 --qp_attribute_groups atrgrps,
29481 qp_pte_source_systems qprs
29482 --qp_price_req_sources_v qprs
29483 WHERE qppattmp.line_index = qplines.line_index
29484 AND atrgrps.pricing_phase_id = p_pricing_phase_id
29485 AND atrgrps.list_line_id = -1
29486 AND atrgrps.active_flag = G_YES
29487 AND atrgrps.pattern_id = qppattmp.pattern_id
29488 AND atrgrps.hash_key = qppattmp.hash_key
29489 AND atrgrps.pte_code = G_PTE_CODE
29490 AND atrgrps.currency_code = qplines.currency_code
29491 AND (qplines.price_flag = G_YES OR
29492 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
29493 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
29494 --AND qprs.source_system_code = atrgrps.source_system_code
29495 --AND qprs.request_type_code = qplines.request_type_code -- check it
29496 AND qprs.APPLICATION_SHORT_NAME = atrgrps.source_system_code
29497 AND qprs.pte_code = G_PTE_CODE
29498 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate))
29499 BETWEEN TRUNC(nvl(atrgrps.START_DATE_ACTIVE_H,nvl(qplines.pricing_effective_date,sysdate)))
29500 AND TRUNC(nvl(atrgrps.END_DATE_ACTIVE_H,nvl(qplines.pricing_effective_date, sysdate)))
29501 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
29502 BETWEEN TRUNC(NVL(atrgrps.START_DATE_ACTIVE_Q,nvl(qplines.pricing_effective_date,sysdate)))
29503 AND TRUNC(NVL(atrgrps.END_DATE_ACTIVE_Q,nvl(qplines.pricing_effective_date, sysdate)))
29504 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0);
29505
29506 -- Path -> Header First -> Line Next
29507 -- select all list lines matching for product/pricing attributes for the selected headers in the first step
29508
29509 CURSOR l_pat_line_cache_p1 IS
29510 -- check for all list lines for which header is already selected.
29511 SELECT /*+ ORDERED index(qpl QP_LIST_LINES_N16)
29512 index(qppat QP_NPREQ_LINE_PATRNS_T_N2)
29513 index(qppqual QP_PREQ_PATRN_QUAL_T_N2)
29514 l_pat_line_cache_p1 */
29515 DISTINCT qpl.LIST_HEADER_ID,
29516 qpl.LIST_LINE_ID,
29517 qplines.LINE_INDEX,
29518 qpl.PATTERN_ID MATCHED_PATTRN_ID,
29519 p_pricing_phase_id,
29520 qpl.HASH_KEY MATCHED_HASH_KEY,
29521 G_STAGE_CACHE_PL_LIN STAGE,
29522 G_STATUS_UNCHANGED PRICING_STATUS_CODE,
29523 qppqual.source_system_code,
29524 decode(bitand(qpl.qualification_ind,2),2,'Y','N') HEADER_QUALS_EXIST_FLAG,
29525 -1 GROUPING_NO,
29526 qpl.EQ_FLAG,
29527 qplines.VALIDATED_FLAG,
29528 qpl.MODIFIER_LEVEL_CODE,
29529 qpl.null_other_oprt_count,
29530 qppqual.list_type_code,
29531 qppqual.ask_for_flag,
29532 qppqual.HEADER_LIMIT_EXISTS, -- HEADER_LIMIT_EXISTS
29533 qppqual.LINE_LIMIT_EXISTS, -- LINE_LIMIT_EXISTS,
29534 qpl.BREAK_UOM_CODE,
29535 qpl.BREAK_UOM_CONTEXT,
29536 qpl.BREAK_UOM_ATTRIBUTE,
29537 QPLINES.CURRENCY_CODE ORDER_CURRENCY,
29538 qppqual.CURRENCY_DETAIL_ID,
29539 qppqual.CURRENCY_HEADER_ID,
29540 qppqual.SELLING_ROUNDING_FACTOR,
29541 qppqual.BASE_CURRENCY_CODE,
29542 qplines.pricing_effective_date,
29543 QPL.PRICE_BREAK_TYPE_CODE,
29544 'N' descendents_quals_exist
29545 FROM qp_npreq_lines_tmp qplines,
29546 qp_npreq_line_patrns_tmp qppat,
29547 qp_preq_patrn_qual_tmp qppqual,
29548 qp_list_lines qpl
29549 WHERE qplines.processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
29550 AND nvl(qplines.validated_flag,G_NO) = G_NO
29551 AND qppat.line_index = qplines.line_index
29552 AND qppqual.line_index = qppat.line_index
29553 AND qppqual.pricing_phase_id = p_pricing_phase_id
29554 AND qppqual.pricing_status_code = 'X'
29555 AND qppqual.stage = G_STAGE_CACHE_PL_HDR --check it
29556 AND qpl.pricing_phase_id = p_pricing_phase_id
29557 AND qpl.PATTERN_ID = qppat.PATTERN_ID
29558 AND qpl.hash_key = qppat.HASH_KEY
29559 AND qpl.list_header_id = qppqual.list_header_id
29560 AND (qplines.price_flag = G_YES OR
29561 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
29562 AND qplines.list_price_override_flag in ('N', 'O')
29563 AND qpl.modifier_level_code = qplines.line_type_code -- check it
29564 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
29565 BETWEEN TRUNC(nvl(qpl.start_date_active, nvl(qplines.pricing_effective_date, sysdate)))
29566 AND TRUNC(nvl(qpl.end_date_active, nvl(qplines.pricing_effective_date, sysdate)))
29567 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0);
29568
29569
29570 CURSOR l_pat_line_p2 IS
29571
29572 SELECT /*+ ORDERED index(qplines QP_PREQ_LINES_TMP_U1)
29573 index(qpl QP_LIST_LINES_N17)
29574 index(qppattmp1 QP_NPREQ_LINE_PATRNS_T_N2)
29575 index(qpatrgrp QP_ATTRIBUTE_GROUPS_N1)
29576 index(qppattmp2 QP_NPREQ_LINE_PATRNS_T_N1)
29577 index(qprs qp_pte_source_systems_u2)
29578 l_pat_line_p2 */
29579 DISTINCT
29580 qpl.LIST_HEADER_ID,
29581 qpl.LIST_LINE_ID,
29582 qplines.LINE_INDEX,
29583 qpl.pattern_id QPL_MATCHED_PATTRN_ID,
29584 qpatrgrp.pattern_id AG_MATCHED_PATTRN_ID,
29585 p_pricing_phase_id,
29586 qpl.HASH_KEY QPL_MATCHED_HASH_KEY,
29587 qpatrgrp.HASH_KEY AG_MATCHED_HASH_KEY,
29588 G_STAGE_CACHE_PL_LIN2 STAGE,
29589 G_STATUS_UNCHANGED PRICING_STATUS_CODE,
29590 qpatrgrp.source_system_code,
29591 --DECODE(qpatrgrp.EQ_FLAG,'N','Y','N') HEADER_QUALS_EXIST_FLAG,
29592 DECODE(qpatrgrp.EQ_FLAG,'N','Y',DECODE(qpatrgrp.descendents_quals_exist,'Y','Y','N')) HEADER_QUALS_EXIST_FLAG,
29593 -1 qpl_grpng_num,
29594 qpatrgrp.GROUPING_NO ag_grpng_num,
29595 qpl.EQ_FLAG QPL_EQFLAG,
29596 qpatrgrp.EQ_FLAG ATRGRP_EQFLAG,
29597 qplines.VALIDATED_FLAG,
29598 qpl.MODIFIER_LEVEL_CODE,
29599 qpl.null_other_oprt_count qpl_other_oprt_cnt,
29600 qpatrgrp.other_oprt_count ag_other_oprt_cnt,
29601 qpatrgrp.null_other_oprt_count ag_null_othr_oprt_cnt,
29602 qpatrgrp.LIST_TYPE_CODE,
29603 qpatrgrp.ASK_FOR_FLAG,
29604 qpatrgrp.HEADER_LIMIT_EXISTS,
29605 qpatrgrp.LINE_LIMIT_EXISTS,
29606 NULL CURRENCY_DETAIL_ID,
29607 NULL CURRENCY_HEADER_ID,
29608 NULL SELLING_ROUNDING_FACTOR,
29609 qpatrgrp.CURRENCY_CODE BASE_CURRENCY_CODE,
29610 qplines.pricing_effective_date,
29611 qpl.BREAK_UOM_CODE,
29612 qpl.BREAK_UOM_CONTEXT,
29613 qpl.BREAK_UOM_ATTRIBUTE,
29614 QPLINES.CURRENCY_CODE ORDER_CURRENCY,
29615 qpl.PRICE_BREAK_TYPE_CODE,
29616 qpatrgrp.descendents_quals_exist,
29617 qpatrgrp.effective_precedence --bug 12731268
29618 FROM qp_npreq_lines_tmp qplines,
29619 qp_npreq_line_patrns_tmp qppattmp1,
29620 qp_list_lines qpl,
29621 qp_secu_attr_groups_v qpatrgrp,
29622 --qp_attribute_groups qpatrgrp,
29623 qp_pte_source_systems qprs,
29624 --qp_price_req_sources_v qprs,
29625 qp_npreq_line_patrns_tmp qppattmp2
29626 WHERE qplines.processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED) --check this condition
29627 AND nvl(qplines.validated_flag,G_NO) = G_NO
29628 AND (qplines.price_flag = G_YES OR
29629 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
29630 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
29631 AND qppattmp1.line_index = qplines.line_index
29632 AND qpl.pricing_phase_id = p_pricing_phase_id
29633 AND qpl.pattern_id = qppattmp1.pattern_id
29634 AND qpl.hash_key = qppattmp1.hash_key
29635 AND qpl.pte_code = G_PTE_CODE
29636 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate))
29637 BETWEEN TRUNC(nvl(qpl.start_date_active,nvl(qplines.pricing_effective_date,sysdate)))
29638 AND TRUNC(nvl(qpl.end_date_active,nvl(qplines.pricing_effective_date,sysdate)))
29639 AND qpatrgrp.list_header_id = qpl.list_header_id
29640 AND qpatrgrp.pricing_phase_id = p_pricing_phase_id
29641 AND qpatrgrp.currency_code = qplines.currency_code
29642 AND qpatrgrp.active_flag = G_YES
29643 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate))
29644 BETWEEN TRUNC(nvl(qpatrgrp.START_DATE_ACTIVE_H,nvl(qplines.pricing_effective_date,sysdate)))
29645 AND TRUNC(nvl(qpatrgrp.END_DATE_ACTIVE_H,nvl(qplines.pricing_effective_date, sysdate)))
29646 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
29647 BETWEEN TRUNC(NVL(qpatrgrp.START_DATE_ACTIVE_Q,nvl(qplines.pricing_effective_date,sysdate)))
29648 AND TRUNC(NVL(qpatrgrp.END_DATE_ACTIVE_Q,nvl(qplines.pricing_effective_date, sysdate)))
29649 --AND qprs.source_system_code = qpatrgrp.source_system_code
29650 --AND qprs.request_type_code = qplines.request_type_code -- check it
29651 AND qprs.APPLICATION_SHORT_NAME = qpatrgrp.source_system_code
29652 AND qprs.pte_code = G_PTE_CODE
29653 AND qppattmp2.line_index = qplines.line_index
29654 AND qppattmp2.pattern_id = qpatrgrp.pattern_id
29655 AND qppattmp2.hash_key = qpatrgrp.hash_key
29656 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0);
29657
29658
29659 -- Multi Currency Cursors
29660
29661 -- Path - Line First Header Next
29662 -- Selecting all the price list lines which are matching in pattern
29663
29664 CURSOR l_pat_line_curr_p2 IS
29665
29666 SELECT /*+ ORDERED index(QCDT QP_CURRENCY_DETAILS_N2)
29667 index(qplines QP_PREQ_LINES_TMP_U1)
29668 index(qpl QP_LIST_LINES_N17)
29669 index(qppattmp1 QP_NPREQ_LINE_PATRNS_T_N2)
29670 index(qpatrgrp QP_ATTRIBUTE_GROUPS_N1)
29671 index(qppattmp2 QP_NPREQ_LINE_PATRNS_T_N1)
29672 index(qprs qp_pte_source_systems_u2)
29673 l_pat_line_curr_p2 */
29674 DISTINCT
29675 qpl.LIST_HEADER_ID,
29676 qpl.LIST_LINE_ID,
29677 qplines.LINE_INDEX,
29678 qpl.pattern_id QPL_MATCHED_PATTRN_ID,
29679 qpatrgrp.pattern_id AG_MATCHED_PATTRN_ID,
29680 p_pricing_phase_id,
29681 qpl.HASH_KEY QPL_MATCHED_HASH_KEY,
29682 qpatrgrp.HASH_KEY AG_MATCHED_HASH_KEY,
29683 G_STAGE_CACHE_PL_LIN2 STAGE,
29684 G_STATUS_UNCHANGED PRICING_STATUS_CODE,
29685 qpatrgrp.source_system_code,
29686 --decode(bitand(qpl.qualification_ind,2),2,'Y','N') HEADER_QUALS_EXIST_FLAG,
29687 --DECODE(qpatrgrp.EQ_FLAG,'N','Y','N') HEADER_QUALS_EXIST_FLAG,
29688 DECODE(qpatrgrp.EQ_FLAG,'N','Y',DECODE(qpatrgrp.descendents_quals_exist,'Y','Y','N')) HEADER_QUALS_EXIST_FLAG,
29689 -1 qpl_grpng_num,
29690 qpatrgrp.GROUPING_NO ag_grpng_num,
29691 qpl.EQ_FLAG QPL_EQFLAG,
29692 qpatrgrp.EQ_FLAG ATRGRP_EQFLAG,
29693 qplines.VALIDATED_FLAG,
29694 qpl.MODIFIER_LEVEL_CODE,
29695 qpl.null_other_oprt_count qpl_other_oprt_cnt,
29696 qpatrgrp.other_oprt_count ag_other_oprt_cnt,
29697 qpatrgrp.null_other_oprt_count ag_null_othr_oprt_cnt,
29698 --qpl.other_oprt_count,
29699 --qpl.null_other_oprt_count,
29700 qpatrgrp.LIST_TYPE_CODE,
29701 qpatrgrp.ASK_FOR_FLAG,
29702 qpatrgrp.HEADER_LIMIT_EXISTS,
29703 qpatrgrp.LINE_LIMIT_EXISTS,
29704 QCDT.CURRENCY_DETAIL_ID,
29705 QCDT.CURRENCY_HEADER_ID,
29706 QCDT.SELLING_ROUNDING_FACTOR,
29707 qpatrgrp.CURRENCY_CODE BASE_CURRENCY_CODE,
29708 qplines.pricing_effective_date,
29709 qpl.BREAK_UOM_CODE,
29710 qpl.BREAK_UOM_CONTEXT,
29711 qpl.BREAK_UOM_ATTRIBUTE,
29712 QPLINES.CURRENCY_CODE ORDER_CURRENCY,
29713 qpl.PRICE_BREAK_TYPE_CODE,
29714 qpatrgrp.descendents_quals_exist,
29715 qpatrgrp.effective_precedence --bug 12731268
29716 FROM qp_npreq_lines_tmp qplines,
29717 qp_npreq_line_patrns_tmp qppattmp1,
29718 qp_list_lines qpl,
29719 qp_secu_attr_groups_v qpatrgrp,
29720 --qp_attribute_groups qpatrgrp,
29721 qp_pte_source_systems qprs,
29722 --qp_price_req_sources_v qprs,
29723 qp_npreq_line_patrns_tmp qppattmp2,
29724 QP_CURRENCY_DETAILS QCDT
29725 WHERE qplines.processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED) --check this condition
29726 AND nvl(qplines.validated_flag,G_NO) = G_NO
29727 AND (qplines.price_flag = G_YES OR
29728 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
29729 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
29730 AND qppattmp1.line_index = qplines.line_index
29731 AND qpl.pricing_phase_id = p_pricing_phase_id
29732 AND qpl.pattern_id = qppattmp1.pattern_id
29733 AND qpl.hash_key = qppattmp1.hash_key
29734 AND qpl.pte_code = G_PTE_CODE
29735 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
29736 BETWEEN TRUNC(nvl(qpl.start_date_active, nvl(qplines.pricing_effective_date, sysdate)))
29737 AND TRUNC(nvl(qpl.end_date_active, nvl(qplines.pricing_effective_date, sysdate)))
29738 AND qpatrgrp.list_header_id = qpl.list_header_id
29739 AND qpatrgrp.pricing_phase_id = p_pricing_phase_id
29740 AND qpatrgrp.active_flag = G_YES
29741 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate))
29742 BETWEEN TRUNC(nvl(qpatrgrp.START_DATE_ACTIVE_H,nvl(qplines.pricing_effective_date,sysdate)))
29743 AND TRUNC(nvl(qpatrgrp.END_DATE_ACTIVE_H,nvl(qplines.pricing_effective_date, sysdate)))
29744 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
29745 BETWEEN TRUNC(NVL(qpatrgrp.START_DATE_ACTIVE_Q,nvl(qplines.pricing_effective_date,sysdate)))
29746 AND TRUNC(NVL(qpatrgrp.END_DATE_ACTIVE_Q,nvl(qplines.pricing_effective_date, sysdate)))
29747 --AND qprs.source_system_code = qpatrgrp.source_system_code
29748 --AND qprs.request_type_code = qplines.request_type_code -- check it
29749 AND qprs.APPLICATION_SHORT_NAME = qpatrgrp.source_system_code
29750 AND qprs.pte_code = G_PTE_CODE
29751 AND qppattmp2.line_index = qplines.line_index
29752 AND qppattmp2.pattern_id = qpatrgrp.pattern_id
29753 AND qppattmp2.hash_key = qpatrgrp.hash_key
29754 AND qpatrgrp.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID
29755 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE
29756 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
29757 TRUNC(NVL(QCDT.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29758 AND TRUNC(NVL(QCDT.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29759 AND (
29760 (qcdt.curr_attribute_context is null
29761 and not exists
29762 (select /*+ use_nl(qcdt1) LEADING(qcdt1) index(qcdt1 QP_CURRENCY_DETAILS_N2) */ 'x'
29763 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
29764 where qcdt1.curr_attribute_context IS NOT NULL
29765 and qcdt1.curr_attribute_context = pa_tmp.context
29766 and qcdt1.curr_attribute = pa_tmp.attribute
29767 and qcdt1.curr_attribute_value = pa_tmp.value_from
29768 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE
29769 and qcdt1.to_currency_code = qcdt.to_currency_code
29770 and qcdt1.currency_header_id = qcdt.currency_header_id
29771 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
29772 and pa_tmp.line_index = qplines.line_index
29773 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
29774 TRUNC(NVL(QCDT1.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29775 AND TRUNC(NVL(QCDT1.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29776 )
29777 )
29778 OR
29779 (qcdt.curr_attribute_context is not null
29780 and qcdt.currency_detail_id =
29781 (select qcdt3.currency_detail_id
29782 from qp_currency_details qcdt3
29783 where qcdt3.to_currency_code = qcdt.to_currency_code
29784 and qcdt3.currency_header_id = qcdt.currency_header_id
29785 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
29786 TRUNC(NVL(QCDT3.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29787 AND TRUNC(NVL(QCDT3.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29788 and qcdt3.precedence =
29789 (select /*+ use_nl(qcdt2) LEADING(qcdt2) index(qcdt2 QP_CURRENCY_DETAILS_N2) */
29790 min(qcdt2.precedence)
29791 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
29792 where qcdt2.curr_attribute_context IS NOT NULL
29793 and qcdt2.curr_attribute_context = pa_tmp1.context
29794 and qcdt2.curr_attribute = pa_tmp1.attribute
29795 and qcdt2.curr_attribute_value = pa_tmp1.value_from
29796 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE
29797 and qcdt2.to_currency_code = qcdt.to_currency_code
29798 and qcdt2.currency_header_id = qcdt.currency_header_id
29799 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
29800 and pa_tmp1.line_index = qplines.line_index
29801 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
29802 TRUNC(NVL(QCDT2.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29803 AND TRUNC(NVL(QCDT2.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29804 ))
29805 )
29806 )
29807 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0);
29808
29809 -- Path -> Header First - Line Next
29810
29811 CURSOR l_pat_header_cache_curr_p1 IS
29812 SELECT /*+ ORDERED index(atrgrps QP_ATTRIBUTE_GROUPS_N3) index(qppat QP_NPREQ_LINE_PATRNS_T_N2)
29813 index(QCDT QP_CURRENCY_DETAILS_N2)
29814 index(qprs qp_pte_source_systems_u2)
29815 l_pat_header_cache_curr_p1 */
29816 DISTINCT atrgrps.LIST_HEADER_ID,
29817 atrgrps.LIST_LINE_ID,
29818 qplines.LINE_INDEX,
29819 atrgrps.pattern_id MATCHED_PATTRN_ID,
29820 p_pricing_phase_id,
29821 atrgrps.HASH_KEY MATCHED_HASH_KEY,
29822 G_STAGE_CACHE_PL_HDR STAGE,
29823 G_STATUS_UNCHANGED PRICING_STATUS_CODE,
29824 atrgrps.source_system_code,
29825 atrgrps.HEADER_QUALS_EXIST_FLAG,
29826 atrgrps.GROUPING_NO,
29827 atrgrps.EQ_FLAG,
29828 qplines.VALIDATED_FLAG,
29829 atrgrps.MODIFIER_LEVEL_CODE,
29830 atrgrps.other_oprt_count,
29831 atrgrps.null_other_oprt_count,
29832 atrgrps.LIST_TYPE_CODE,
29833 atrgrps.ASK_FOR_FLAG,
29834 atrgrps.HEADER_LIMIT_EXISTS,
29835 atrgrps.LINE_LIMIT_EXISTS,
29836 QCDT.CURRENCY_DETAIL_ID,
29837 QCDT.CURRENCY_HEADER_ID,
29838 QCDT.SELLING_ROUNDING_FACTOR,
29839 atrgrps.CURRENCY_CODE BASE_CURRENCY_CODE,
29840 qplines.pricing_effective_date,
29841 atrgrps.descendents_quals_exist,
29842 atrgrps.effective_precedence --bug 12731268
29843 FROM (SELECT /*+ dynamic_sampling(1) */ *
29844 FROM qp_npreq_lines_tmp
29845 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED) --check this condition
29846 AND nvl(validated_flag,G_NO) = G_NO) qplines,
29847 qp_npreq_line_patrns_tmp qppattmp,
29848 qp_secu_attr_groups_v atrgrps,
29849 --qp_attribute_groups atrgrps,
29850 qp_pte_source_systems qprs,
29851 --qp_price_req_sources_v qprs,
29852 QP_CURRENCY_DETAILS QCDT
29853 WHERE qppattmp.line_index = qplines.line_index
29854 AND atrgrps.pricing_phase_id = p_pricing_phase_id
29855 AND atrgrps.list_line_id = -1
29856 AND atrgrps.active_flag = G_YES
29857 AND atrgrps.pattern_id = qppattmp.pattern_id
29858 AND atrgrps.hash_key = qppattmp.hash_key
29859 AND atrgrps.pte_code = G_PTE_CODE
29860 AND (qplines.price_flag = G_YES OR
29861 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
29862 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
29863 AND atrgrps.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID
29864 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE
29865 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
29866 TRUNC(NVL(QCDT.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29867 AND TRUNC(NVL(QCDT.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29868 AND (
29869 (qcdt.curr_attribute_context is null
29870 and not exists
29871 (select /*+ use_nl(qcdt1) LEADING(qcdt1) index(qcdt1 QP_CURRENCY_DETAILS_N2) */ 'x'
29872 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
29873 where qcdt1.curr_attribute_context IS NOT NULL
29874 and qcdt1.curr_attribute_context = pa_tmp.context
29875 and qcdt1.curr_attribute = pa_tmp.attribute
29876 and qcdt1.curr_attribute_value = pa_tmp.value_from
29877 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE
29878 and qcdt1.to_currency_code = qcdt.to_currency_code
29879 and qcdt1.currency_header_id = qcdt.currency_header_id
29880 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
29881 and pa_tmp.line_index = qplines.line_index
29882 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
29883 TRUNC(NVL(QCDT1.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29884 AND TRUNC(NVL(QCDT1.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29885 )
29886 )
29887 OR
29888 (qcdt.curr_attribute_context is not null
29889 and qcdt.currency_detail_id =
29890 (select qcdt3.currency_detail_id
29891 from qp_currency_details qcdt3
29892 where qcdt3.to_currency_code = qcdt.to_currency_code
29893 and qcdt3.currency_header_id = qcdt.currency_header_id
29894 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
29895 TRUNC(NVL(QCDT3.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29896 AND TRUNC(NVL(QCDT3.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29897 and qcdt3.precedence =
29898 (select /*+ use_nl(qcdt2) LEADING(qcdt2) index(qcdt2 QP_CURRENCY_DETAILS_N2) */ min(qcdt2.precedence)
29899 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
29900 where qcdt2.curr_attribute_context IS NOT NULL
29901 and qcdt2.curr_attribute_context = pa_tmp1.context
29902 and qcdt2.curr_attribute = pa_tmp1.attribute
29903 and qcdt2.curr_attribute_value = pa_tmp1.value_from
29904 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE
29905 and qcdt2.to_currency_code = qcdt.to_currency_code
29906 and qcdt2.currency_header_id = qcdt.currency_header_id
29907 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
29908 and pa_tmp1.line_index = qplines.line_index
29909 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate)) BETWEEN
29910 TRUNC(NVL(QCDT2.START_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29911 AND TRUNC(NVL(QCDT2.END_DATE_ACTIVE,nvl(qplines.pricing_effective_date,sysdate)))
29912 ))
29913 )
29914 )
29915 --AND qprs.source_system_code = atrgrps.source_system_code
29916 --AND qprs.request_type_code = qplines.request_type_code -- check it
29917 AND qprs.APPLICATION_SHORT_NAME = atrgrps.source_system_code
29918 AND qprs.pte_code = G_PTE_CODE
29919 AND TRUNC(nvl(qplines.pricing_effective_date,sysdate))
29920 BETWEEN TRUNC(nvl(atrgrps.START_DATE_ACTIVE_H,nvl(qplines.pricing_effective_date,sysdate)))
29921 AND TRUNC(nvl(atrgrps.END_DATE_ACTIVE_H,nvl(qplines.pricing_effective_date, sysdate)))
29922 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
29923 BETWEEN TRUNC(NVL(atrgrps.START_DATE_ACTIVE_Q,nvl(qplines.pricing_effective_date,sysdate)))
29924 AND TRUNC(NVL(atrgrps.END_DATE_ACTIVE_Q,nvl(qplines.pricing_effective_date, sysdate)))
29925 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0);
29926
29927 -- Path -> Header First -> Line Next
29928 -- select all list lines matching for product/pricing attributes for the selected headers in the first step
29929
29930 CURSOR l_pat_line_cache_curr_p1 IS
29931 -- check for all list lines for which header is already selected.
29932 SELECT /*+ ORDERED index(qpl QP_LIST_LINES_N16)
29933 index(qppat QP_NPREQ_LINE_PATRNS_T_N2)
29934 index(qppqual QP_PREQ_PATRN_QUAL_T_N2)
29935 l_pat_line_cache_curr_p1 */
29936 DISTINCT qpl.LIST_HEADER_ID,
29937 qpl.LIST_LINE_ID,
29938 qplines.LINE_INDEX,
29939 qpl.PATTERN_ID MATCHED_PATTRN_ID,
29940 p_pricing_phase_id,
29941 qpl.HASH_KEY MATCHED_HASH_KEY,
29942 G_STAGE_CACHE_PL_LIN STAGE,
29943 G_STATUS_UNCHANGED PRICING_STATUS_CODE,
29944 qppqual.source_system_code,
29945 decode(bitand(qpl.qualification_ind,2),2,'Y','N') HEADER_QUALS_EXIST_FLAG,
29946 -1 GROUPING_NO,
29947 qpl.EQ_FLAG,
29948 qplines.VALIDATED_FLAG,
29949 qpl.MODIFIER_LEVEL_CODE,
29950 qpl.null_other_oprt_count,
29951 qppqual.list_type_code,
29952 qppqual.ask_for_flag,
29953 qppqual.HEADER_LIMIT_EXISTS, -- HEADER_LIMIT_EXISTS
29954 qppqual.LINE_LIMIT_EXISTS, -- LINE_LIMIT_EXISTS,
29955 qpl.BREAK_UOM_CODE,
29956 qpl.BREAK_UOM_CONTEXT,
29957 qpl.BREAK_UOM_ATTRIBUTE,
29958 QPLINES.CURRENCY_CODE ORDER_CURRENCY,
29959 qppqual.CURRENCY_DETAIL_ID,
29960 qppqual.CURRENCY_HEADER_ID,
29961 qppqual.SELLING_ROUNDING_FACTOR,
29962 qppqual.BASE_CURRENCY_CODE,
29963 qplines.pricing_effective_date,
29964 qpl.PRICE_BREAK_TYPE_CODE,
29965 'N' descendents_quals_exist
29966 FROM qp_npreq_lines_tmp qplines,
29967 qp_npreq_line_patrns_tmp qppat,
29968 qp_preq_patrn_qual_tmp qppqual,
29969 qp_list_lines qpl
29970 WHERE qplines.processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
29971 AND nvl(qplines.validated_flag,G_NO) = G_NO
29972 AND qppat.line_index = qplines.line_index
29973 AND qppqual.line_index = qppat.line_index
29974 AND qppqual.pricing_phase_id = p_pricing_phase_id
29975 AND qppqual.pricing_status_code = 'X'
29976 AND qppqual.stage = G_STAGE_CACHE_PL_HDR --check it
29977 AND qpl.pricing_phase_id = p_pricing_phase_id
29978 AND qpl.PATTERN_ID = qppat.PATTERN_ID
29979 AND qpl.hash_key = qppat.HASH_KEY
29980 AND qpl.list_header_id = qppqual.list_header_id
29981 AND (qplines.price_flag = G_YES OR
29982 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
29983 AND qplines.list_price_override_flag in ('N', 'O')
29984 AND qpl.modifier_level_code = qplines.line_type_code -- check it
29985 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
29986 BETWEEN TRUNC(nvl(qpl.start_date_active, nvl(qplines.pricing_effective_date, sysdate)))
29987 AND TRUNC(nvl(qpl.end_date_active, nvl(qplines.pricing_effective_date, sysdate)))
29988
29989 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0);
29990
29991
29992 l_limit NUMBER := 5000;
29993
29994 TYPE l_number IS TABLE OF NUMBER INDEX BY pls_integer;
29995 l_list_header_id_tbl l_number;
29996 l_list_line_id_tbl l_number;
29997 l_matched_pattrn_id_tbl l_number;
29998 l_ag_matched_pat_id_tbl l_number;
29999 l_line_index_tbl l_number;
30000 l_pricing_phase_id_tbl l_number;
30001 l_grouping_no l_number;
30002 l_ag_grpng_no l_number;
30003 l_other_oprt_count l_number;
30004 l_ag_othr_oprt_cnt l_number;
30005 l_null_other_oprt_count l_number;
30006 l_curr_det_id l_number;
30007 l_curr_hdr_id l_number;
30008 L_SELLNG_ROUND_FTR l_number;
30009
30010 TYPE l_string IS TABLE OF VARCHAR2(2000) INDEX BY pls_integer;
30011 l_matched_hash_key_tbl l_string;
30012 l_ag_mtchd_hash_key_tbl l_string;
30013 l_stage_tbl l_string;
30014 l_pricing_status_code_tbl l_string;
30015 l_ssc l_string;
30016 l_header_quals_exist_flag l_string;
30017 l_eq_flag l_string;
30018 l_ag_eq_flag l_string;
30019 l_validated_flag l_string;
30020 l_modf_lvl_code l_string;
30021 l_list_type_code l_string;
30022 l_ask_for_flag l_string;
30023 l_hdr_lmt_exists l_string;
30024 l_line_lmt_exists l_string;
30025 l_order_curr l_string;
30026 l_base_curr_code l_string;
30027 l_brk_uom_code l_string;
30028 l_brk_uom_ctxt l_string;
30029 l_brk_uom_attr l_string;
30030 l_descnt_quals_exist l_string;
30031 l_PRICE_BREAK_TYPE_CODE l_string;
30032 l_qual_effective_precedence l_number; -- bug 12731268
30033
30034
30035 TYPE l_date IS TABLE OF DATE INDEX BY pls_integer;
30036
30037 l_prcng_effctve_dt l_date;
30038
30039 E_ROUTINE_ERRORS EXCEPTION;
30040
30041 l_return_status VARCHAR2(240);
30042 L_STATUS_CODE VARCHAR2(30);
30043 L_STATUS_TEXT VARCHAR2(240);
30044
30045 l_list_line_id NUMBER;
30046 l_dummy VARCHAR2(30);
30047
30048 l_use_multi_curr BOOLEAN := FALSE;
30049 l_loop_count NUMBER := 0;
30050
30051 l_routine VARCHAR2(40) := 'QP_PREQ_GRP.SELECT_PRICE_LIST_LINES_PAT';
30052
30053 BEGIN
30054
30055 qp_debug_util.tstart('SEL_PRICE_LIST_LINES_PAT','Big Search Call Pattern - SELECT_PRICE_LIST_LINES_PAT API', false, true);
30056
30057 x_status_code := fnd_api.g_ret_sts_success;
30058
30059 IF G_MULTI_CURRENCY_PROFILE = 'Y' AND G_USE_MULTI_CURRENCY = 'Y' THEN
30060 l_use_multi_curr := TRUE;
30061 END IF;
30062
30063 IF g_debug_engine = fnd_api.g_true THEN
30064 engine_debug('Path selected - '||p_search_path);
30065
30066 IF l_use_multi_curr THEN
30067 engine_debug('Multi Currency Enabled ');
30068 ELSE
30069 engine_debug('Multi Currency Disabled ');
30070 END IF;
30071
30072 END IF;
30073
30074 IF g_debug_engine = fnd_api.g_true THEN
30075 engine_debug('Entering into procedure select_price_list_lines_pat');
30076 END IF;
30077
30078 -- Take path value from the profile.
30079
30080
30081
30082 IF p_search_path = 2 THEN
30083
30084 -- Line First Header Next Path
30085
30086 -- Line check
30087
30088 IF l_use_multi_curr THEN
30089 qp_debug_util.tstart('BIG_SRCH_LIN_CACH_P2','Line Cache Path 2 - l_pat_line_curr_p2');
30090 OPEN l_pat_line_curr_p2;
30091 ELSE
30092 qp_debug_util.tstart('BIG_SRCH_LIN_CACH_P2','Line Cache Path 2 - l_pat_line_p2');
30093 OPEN l_pat_line_p2;
30094 -- write logic for non multi curr case
30095 END IF;
30096
30097 LOOP
30098 l_list_header_id_tbl.DELETE;
30099 l_list_line_id_tbl.DELETE;
30100 l_line_index_tbl.DELETE;
30101 l_matched_pattrn_id_tbl.DELETE;
30102 l_ag_matched_pat_id_tbl.DELETE;
30103 l_pricing_phase_id_tbl.DELETE;
30104 l_matched_hash_key_tbl.DELETE;
30105 l_ag_mtchd_hash_key_tbl.DELETE;
30106 l_stage_tbl.DELETE;
30107 l_pricing_status_code_tbl.DELETE;
30108 l_ssc.DELETE;
30109 l_header_quals_exist_flag.DELETE;
30110 l_grouping_no.DELETE;
30111 l_ag_grpng_no.DELETE;
30112 l_eq_flag.DELETE;
30113 l_ag_eq_flag.DELETE;
30114 l_validated_flag.DELETE;
30115 l_modf_lvl_code.DELETE;
30116 l_other_oprt_count.DELETE;
30117 l_ag_othr_oprt_cnt.DELETE;
30118 l_null_other_oprt_count.DELETE;
30119 l_list_type_code.DELETE;
30120 l_ask_for_flag.DELETE;
30121 l_hdr_lmt_exists.DELETE;
30122 l_line_lmt_exists.DELETE;
30123 l_curr_det_id.DELETE;
30124 l_curr_hdr_id.DELETE;
30125 L_SELLNG_ROUND_FTR.DELETE;
30126 l_base_curr_code.DELETE;
30127 l_prcng_effctve_dt.DELETE;
30128 l_brk_uom_code.DELETE;
30129 l_brk_uom_ctxt.DELETE;
30130 l_brk_uom_attr.DELETE;
30131 l_order_curr.DELETE;
30132 l_PRICE_BREAK_TYPE_CODE.DELETE;
30133 l_descnt_quals_exist.DELETE;
30134 l_qual_effective_precedence.delete; --bug 12731268
30135
30136 IF l_use_multi_curr THEN
30137 FETCH l_pat_line_curr_p2 bulk collect
30138 INTO
30139 l_list_header_id_tbl,
30140 l_list_line_id_tbl,
30141 l_line_index_tbl,
30142 l_matched_pattrn_id_tbl,
30143 l_ag_matched_pat_id_tbl,
30144 l_pricing_phase_id_tbl,
30145 l_matched_hash_key_tbl,
30146 l_ag_mtchd_hash_key_tbl,
30147 l_stage_tbl,
30148 l_pricing_status_code_tbl,
30149 l_ssc,
30150 l_header_quals_exist_flag,
30151 l_grouping_no,
30152 l_ag_grpng_no,
30153 l_eq_flag,
30154 l_ag_eq_flag,
30155 l_validated_flag,
30156 l_modf_lvl_code,
30157 l_other_oprt_count,
30158 l_ag_othr_oprt_cnt,
30159 l_null_other_oprt_count,
30160 l_list_type_code,
30161 l_ask_for_flag,
30162 l_hdr_lmt_exists,
30163 l_line_lmt_exists,
30164 l_curr_det_id,
30165 l_curr_hdr_id,
30166 L_SELLNG_ROUND_FTR,
30167 l_base_curr_code,
30168 l_prcng_effctve_dt,
30169 l_brk_uom_code,
30170 l_brk_uom_ctxt,
30171 l_brk_uom_attr,
30172 l_order_curr,
30173 l_PRICE_BREAK_TYPE_CODE,
30174 l_descnt_quals_exist,
30175 l_qual_effective_precedence --bug 12731268
30176 limit l_limit;
30177 ELSE
30178 FETCH l_pat_line_p2 bulk collect
30179 INTO
30180 l_list_header_id_tbl,
30181 l_list_line_id_tbl,
30182 l_line_index_tbl,
30183 l_matched_pattrn_id_tbl,
30184 l_ag_matched_pat_id_tbl,
30185 l_pricing_phase_id_tbl,
30186 l_matched_hash_key_tbl,
30187 l_ag_mtchd_hash_key_tbl,
30188 l_stage_tbl,
30189 l_pricing_status_code_tbl,
30190 l_ssc,
30191 l_header_quals_exist_flag,
30192 l_grouping_no,
30193 l_ag_grpng_no,
30194 l_eq_flag,
30195 l_ag_eq_flag,
30196 l_validated_flag,
30197 l_modf_lvl_code,
30198 l_other_oprt_count,
30199 l_ag_othr_oprt_cnt,
30200 l_null_other_oprt_count,
30201 l_list_type_code,
30202 l_ask_for_flag,
30203 l_hdr_lmt_exists,
30204 l_line_lmt_exists,
30205 l_curr_det_id,
30206 l_curr_hdr_id,
30207 L_SELLNG_ROUND_FTR,
30208 l_base_curr_code,
30209 l_prcng_effctve_dt,
30210 l_brk_uom_code,
30211 l_brk_uom_ctxt,
30212 l_brk_uom_attr,
30213 l_order_curr,
30214 l_PRICE_BREAK_TYPE_CODE,
30215 l_descnt_quals_exist,
30216 l_qual_effective_precedence --bug 12731268
30217 limit l_limit;
30218 END IF;
30219
30220 EXIT WHEN l_list_header_id_tbl.COUNT = 0;
30221
30222 forall i IN 1 .. l_list_header_id_tbl.COUNT
30223 INSERT
30224 INTO qp_preq_patrn_qual_tmp(list_header_id,
30225 list_line_id,
30226 line_index,
30227 matched_pattrn_id,
30228 pricing_phase_id,
30229 matched_hash_key,
30230 stage,
30231 pricing_status_code,
30232 source_system_code,
30233 header_quals_exist_flag,
30234 grouping_no,
30235 eq_flag,
30236 validated_flag,
30237 MODIFIER_LEVEL_CODE,
30238 other_oprt_count,
30239 null_other_oprt_count,
30240 LIST_TYPE_CODE,
30241 ASK_FOR_FLAG,
30242 HEADER_LIMIT_EXISTS,
30243 LINE_LIMIT_EXISTS,
30244 BREAK_UOM_CODE,
30245 BREAK_UOM_CONTEXT,
30246 BREAK_UOM_ATTRIBUTE,
30247 ORDER_CURRENCY,
30248 CURRENCY_DETAIL_ID,
30249 CURRENCY_HEADER_ID,
30250 SELLING_ROUNDING_FACTOR,
30251 BASE_CURRENCY_CODE,
30252 pricing_effective_date,
30253 PRICE_BREAK_TYPE_CODE,
30254 qualifier_precedence
30255 )
30256 SELECT DISTINCT l_list_header_id_tbl(i),
30257 l_list_line_id_tbl(i),
30258 l_line_index_tbl(i),
30259 l_matched_pattrn_id_tbl(i),
30260 l_pricing_phase_id_tbl(i),
30261 l_matched_hash_key_tbl(i),
30262 l_stage_tbl(i),
30263 l_pricing_status_code_tbl(i),
30264 l_ssc(i),
30265 l_header_quals_exist_flag(i),
30266 l_grouping_no(i),
30267 l_eq_flag(i),
30268 l_validated_flag(i),
30269 l_modf_lvl_code(i),
30270 l_other_oprt_count(i),
30271 l_other_oprt_count(i),
30272 l_list_type_code(i),
30273 l_ask_for_flag(i),
30274 l_hdr_lmt_exists(i),
30275 l_line_lmt_exists(i),
30276 l_brk_uom_code(i),
30277 l_brk_uom_ctxt(i),
30278 l_brk_uom_attr(i),
30279 l_order_curr(i),
30280 l_curr_det_id(i),
30281 l_curr_hdr_id(i),
30282 L_SELLNG_ROUND_FTR(i),
30283 l_base_curr_code(i),
30284 l_prcng_effctve_dt(i),
30285 l_PRICE_BREAK_TYPE_CODE(i),
30286 l_qual_effective_precedence(i) --bug 12731268
30287 FROM dual;
30288
30289
30290 forall i IN 1 .. l_list_header_id_tbl.COUNT
30291 INSERT INTO qp_preq_patrn_qual_tmp(list_header_id,
30292 list_line_id,
30293 line_index,
30294 pricing_phase_id,
30295 stage,
30296 pricing_status_code,
30297 source_system_code,
30298 header_quals_exist_flag,
30299 grouping_no,
30300 eq_flag,
30301 validated_flag,
30302 MODIFIER_LEVEL_CODE,
30303 other_oprt_count,
30304 null_other_oprt_count,
30305 descendents_quals_exist,
30306 qualifier_precedence, --bug 12731268
30307 matched_pattrn_id, -- bug 10216430
30308 matched_hash_key -- bug 10216430
30309 )
30310 SELECT DISTINCT l_list_header_id_tbl(i),
30311 -1, -- List line id,
30312 l_line_index_tbl(i),
30313 l_pricing_phase_id_tbl(i),
30314 l_stage_tbl(i),
30315 l_pricing_status_code_tbl(i),
30316 l_ssc(i),
30317 l_header_quals_exist_flag(i), -- Header Quals Exist,
30318 l_ag_grpng_no(i),
30319 l_ag_eq_flag(i),
30320 l_validated_flag(i),
30321 l_modf_lvl_code(i),
30322 l_ag_othr_oprt_cnt(i),
30323 l_null_other_oprt_count(i),
30324 l_descnt_quals_exist(i),
30325 l_qual_effective_precedence(i), --bug 12731268
30326 l_ag_matched_pat_id_tbl(i), -- bug 10216430
30327 l_ag_mtchd_hash_key_tbl(i) -- bug 10216430
30328 FROM dual
30329 WHERE l_ag_eq_flag(i) = 'N'
30330 OR l_descnt_quals_exist(i) = 'Y'
30331 OR l_ag_mtchd_hash_key_tbl(i)<>'BLIND'; -- bug 10216430
30332
30333 l_loop_count := l_loop_count + 1;
30334 END LOOP;
30335
30336 qp_debug_util.tstop('BIG_SRCH_LIN_CACH_P2');
30337
30338 IF l_use_multi_curr THEN
30339 close l_pat_line_curr_p2;
30340 ELSE
30341 close l_pat_line_p2;
30342 END IF;
30343
30344 qp_debug_util.tstart('Populate_Temp_Tables_NEQ_BTW_LIN','Populating BNQ Operators after line cache');
30345
30346 Populate_Temp_Tables_NEQ_BTW(
30347 p_pricing_phase_id ,
30348 G_STAGE_CACHE_PL_LIN2 ,
30349 x_status_code ,
30350 x_status_text );
30351
30352 qp_debug_util.tstop('Populate_Temp_Tables_NEQ_BTW_LIN');
30353
30354
30355 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
30356 RAISE E_ROUTINE_ERRORS;
30357 END IF;
30358
30359 qp_debug_util.tstart('QP_EVALUATE_OTHER_OPERATORS_LIN','Evaluating other operators after line cache');
30360
30361 QP_EVALUATE_OTHER_OPERATORS(
30362 p_pricing_phase_id ,
30363 G_STAGE_CACHE_PL_LIN2,
30364 x_status_code ,
30365 x_status_text );
30366
30367 qp_debug_util.tstop('QP_EVALUATE_OTHER_OPERATORS_LIN');
30368
30369 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
30370 RAISE E_ROUTINE_ERRORS;
30371 END IF;
30372
30373 qp_debug_util.tstart('PATRN_LIST_CUR_DEL_LIN_TCA_P2', 'Header/Line deletion for TCA');
30374
30375 UPDATE qp_preq_patrn_qual_tmp a
30376 SET pricing_status_code = G_DELETED_TCA
30377 WHERE pricing_status_code = g_status_unchanged
30378 AND a.descendents_quals_exist = 'Y'
30379 and a.pricing_phase_id = p_pricing_phase_id
30380 and a.stage = G_STAGE_CACHE_PL_LIN2
30381 AND EXISTS (
30382 SELECT 1
30383 FROM qp_qualifiers b, qp_npreq_line_attrs_tmp c
30384 WHERE b.list_header_id = a.list_header_id
30385 AND b.list_line_id = a.list_line_id
30386 AND (b.qualifier_grouping_no = a.grouping_no
30387 or
30388 b.qualifier_grouping_no = -1
30389 )
30390 AND b.qualify_hier_descendents_flag = 'N'
30391 AND c.segment_id = b.segment_id
30392 AND c.line_index = a.line_index
30393 AND c.derived_qualifier_flag = 'Y');
30394
30395 qp_debug_util.tstop('PATRN_LIST_CUR_DEL_LIN_TCA_P2');
30396
30397
30398 qp_debug_util.tstart('DEL_LIN_HDR_QUAL_FAILED','Deleting lines failed in header qualiifiers');
30399
30400 -- Deleting lines if header is not satisfied.
30401
30402 UPDATE qp_preq_patrn_qual_tmp a
30403 SET pricing_status_code = G_DELETED_LINE
30404 WHERE pricing_phase_id = p_pricing_phase_id
30405 AND pricing_status_code = g_status_unchanged
30406 AND list_line_id <> -1
30407 AND nvl(header_quals_exist_flag, 'N') = 'Y'
30408 and a.stage = G_STAGE_CACHE_PL_LIN2
30409 AND NOT EXISTS
30410 (SELECT /*+ index(b QP_PREQ_PATRN_QUAL_T_N2) */ 'x'
30411 FROM qp_preq_patrn_qual_tmp b
30412 WHERE b.list_header_id = a.list_header_id
30413 AND b.line_index = a.line_index
30414 AND b.list_line_id = -1
30415 AND b.pricing_phase_id = a.pricing_phase_id
30416 AND pricing_status_code = g_status_unchanged
30417 and b.stage = G_STAGE_CACHE_PL_LIN2);
30418
30419 qp_debug_util.tstop('DEL_LIN_HDR_QUAL_FAILED');
30420
30421 qp_debug_util.tstart('BIG_SRCH_POPULATE_TMP_TBLS','Populating Temp Tables - Populate_Pat_Temp_Tables API');
30422
30423 Populate_Pat_Temp_Tables(p_pricing_phase_id,
30424 G_STAGE_CACHE_PL_LIN2,
30425 x_status_code,
30426 x_status_text);
30427
30428 qp_debug_util.tstop('BIG_SRCH_POPULATE_TMP_TBLS');
30429
30430
30431 ELSIF p_search_path = 1 THEN -- Header First - Line Next
30432
30433 IF l_use_multi_curr THEN
30434 qp_debug_util.tstart('BIG_SRCH_HDR_CACH_P1','Header Cache Path 1 - l_pat_header_cache_curr_p1');
30435 OPEN l_pat_header_cache_curr_p1;
30436 ELSE
30437 qp_debug_util.tstart('BIG_SRCH_HDR_CACH_P1','Header Cache Path 1 - l_pat_header_cache_p1');
30438 OPEN l_pat_header_cache_p1;
30439 END IF;
30440
30441 LOOP
30442 l_list_header_id_tbl.DELETE;
30443 l_list_line_id_tbl.DELETE;
30444 l_line_index_tbl.DELETE;
30445 l_matched_pattrn_id_tbl.DELETE;
30446 l_pricing_phase_id_tbl.DELETE;
30447 l_stage_tbl.DELETE;
30448 l_matched_hash_key_tbl.DELETE;
30449 l_pricing_status_code_tbl.DELETE;
30450 l_ssc.DELETE;
30451 l_header_quals_exist_flag.DELETE;
30452 l_grouping_no.DELETE;
30453 l_eq_flag.DELETE;
30454 l_validated_flag.DELETE;
30455 l_modf_lvl_code.DELETE;
30456 l_other_oprt_count.DELETE;
30457 l_null_other_oprt_count.DELETE;
30458 l_list_type_code.DELETE;
30459 l_ask_for_flag.DELETE;
30460 l_hdr_lmt_exists.DELETE;
30461 l_line_lmt_exists.DELETE;
30462 l_curr_det_id.DELETE;
30463 l_curr_hdr_id.DELETE;
30464 L_SELLNG_ROUND_FTR.DELETE;
30465 l_base_curr_code.DELETE;
30466 l_prcng_effctve_dt.DELETE;
30467 l_PRICE_BREAK_TYPE_CODE.DELETE;
30468 l_descnt_quals_exist.DELETE;
30469 l_qual_effective_precedence.delete; --bug 12731268
30470
30471 IF l_use_multi_curr THEN
30472 FETCH l_pat_header_cache_curr_p1 bulk collect
30473 INTO l_list_header_id_tbl,
30474 l_list_line_id_tbl,
30475 l_line_index_tbl,
30476 l_matched_pattrn_id_tbl,
30477 l_pricing_phase_id_tbl,
30478 l_matched_hash_key_tbl,
30479 l_stage_tbl,
30480 l_pricing_status_code_tbl,
30481 l_ssc,
30482 l_header_quals_exist_flag,
30483 l_grouping_no,
30484 l_eq_flag,
30485 l_validated_flag,
30486 l_modf_lvl_code,
30487 l_other_oprt_count,
30488 l_null_other_oprt_count,
30489 l_list_type_code,
30490 l_ask_for_flag,
30491 l_hdr_lmt_exists,
30492 l_line_lmt_exists,
30493 l_curr_det_id,
30494 l_curr_hdr_id,
30495 L_SELLNG_ROUND_FTR,
30496 l_base_curr_code,
30497 l_prcng_effctve_dt,
30498 l_descnt_quals_exist,
30499 l_qual_effective_precedence --bug 12731268
30500 limit l_limit;
30501 ELSE
30502 FETCH l_pat_header_cache_p1 bulk collect
30503 INTO l_list_header_id_tbl,
30504 l_list_line_id_tbl,
30505 l_line_index_tbl,
30506 l_matched_pattrn_id_tbl,
30507 l_pricing_phase_id_tbl,
30508 l_matched_hash_key_tbl,
30509 l_stage_tbl,
30510 l_pricing_status_code_tbl,
30511 l_ssc,
30512 l_header_quals_exist_flag,
30513 l_grouping_no,
30514 l_eq_flag,
30515 l_validated_flag,
30516 l_modf_lvl_code,
30517 l_other_oprt_count,
30518 l_null_other_oprt_count,
30519 l_list_type_code,
30520 l_ask_for_flag,
30521 l_hdr_lmt_exists,
30522 l_line_lmt_exists,
30523 l_curr_det_id,
30524 l_curr_hdr_id,
30525 L_SELLNG_ROUND_FTR,
30526 l_base_curr_code,
30527 l_prcng_effctve_dt,
30528 l_descnt_quals_exist,
30529 l_qual_effective_precedence --bug 12731268
30530 limit l_limit;
30531 END IF;
30532
30533 EXIT
30534 WHEN l_list_header_id_tbl.COUNT = 0;
30535
30536 forall i IN 1 .. l_list_header_id_tbl.COUNT INSERT
30537 INTO qp_preq_patrn_qual_tmp(list_header_id,
30538 list_line_id,
30539 line_index,
30540 matched_pattrn_id,
30541 pricing_phase_id,
30542 matched_hash_key,
30543 stage,
30544 pricing_status_code,
30545 source_system_code,
30546 header_quals_exist_flag,
30547 grouping_no,
30548 eq_flag,
30549 validated_flag,
30550 MODIFIER_LEVEL_CODE,
30551 other_oprt_count,
30552 null_other_oprt_count,
30553 LIST_TYPE_CODE,
30554 ASK_FOR_FLAG,
30555 HEADER_LIMIT_EXISTS,
30556 LINE_LIMIT_EXISTS,
30557 CURRENCY_DETAIL_ID,
30558 CURRENCY_HEADER_ID,
30559 SELLING_ROUNDING_FACTOR,
30560 BASE_CURRENCY_CODE,
30561 pricing_effective_date,--,
30562 --PRICE_BREAK_TYPE_CODE
30563 qualifier_precedence --bug 12731268
30564 )
30565 VALUES(l_list_header_id_tbl(i),
30566 l_list_line_id_tbl(i),
30567 l_line_index_tbl(i),
30568 l_matched_pattrn_id_tbl(i),
30569 l_pricing_phase_id_tbl(i),
30570 l_matched_hash_key_tbl(i),
30571 l_stage_tbl(i),
30572 l_pricing_status_code_tbl(i),
30573 l_ssc(i),
30574 l_header_quals_exist_flag(i),
30575 l_grouping_no(i),
30576 l_eq_flag(i),
30577 l_validated_flag(i),
30578 l_modf_lvl_code(i),
30579 l_other_oprt_count(i),
30580 l_null_other_oprt_count(i),
30581 l_list_type_code(i),
30582 l_ask_for_flag(i),
30583 l_hdr_lmt_exists(i),
30584 l_line_lmt_exists(i),
30585 l_curr_det_id(i),
30586 l_curr_hdr_id(i),
30587 L_SELLNG_ROUND_FTR(i),
30588 l_base_curr_code(i),
30589 l_prcng_effctve_dt(i),--,
30590 --l_PRICE_BREAK_TYPE_CODE(i)
30591 l_qual_effective_precedence(i) --bug 12731268
30592 );
30593 END LOOP;
30594
30595 IF l_use_multi_curr THEN
30596 CLOSE l_pat_header_cache_curr_p1;
30597 ELSE
30598 CLOSE l_pat_header_cache_p1;
30599 END IF;
30600
30601 qp_debug_util.tstop('BIG_SRCH_HDR_CACH_P1');
30602
30603 --doing between/ not = operator check
30604
30605 qp_debug_util.tstart('Populate_Temp_Tables_NEQ_BTW_HDR','Populating BNQ Operators after header cache');
30606
30607 Populate_Temp_Tables_NEQ_BTW(
30608 p_pricing_phase_id ,
30609 G_STAGE_CACHE_PL_HDR,
30610 x_status_code ,
30611 x_status_text );
30612
30613 qp_debug_util.tstop('Populate_Temp_Tables_NEQ_BTW_HDR');
30614
30615 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
30616 RAISE E_ROUTINE_ERRORS;
30617 END IF;
30618
30619 qp_debug_util.tstart('QP_EVALUATE_OTHER_OPERATORS_HDR','Evaluating other operators after header cache');
30620
30621 QP_EVALUATE_OTHER_OPERATORS(
30622 p_pricing_phase_id ,
30623 G_STAGE_CACHE_PL_HDR,
30624 x_status_code ,
30625 x_status_text );
30626
30627 qp_debug_util.tstop('QP_EVALUATE_OTHER_OPERATORS_HDR');
30628
30629
30630 qp_debug_util.tstart('PATRN_LIST_CUR_DEL_HDR_TCA_P1', 'Header deletion for TCA');
30631
30632 UPDATE qp_preq_patrn_qual_tmp a
30633 SET pricing_status_code = G_DELETED_TCA
30634 WHERE pricing_status_code = g_status_unchanged
30635 AND a.descendents_quals_exist = 'Y'
30636 and a.pricing_phase_id = p_pricing_phase_id
30637 and a.stage = G_STAGE_CACHE_PL_HDR
30638 AND EXISTS (
30639 SELECT 1
30640 FROM qp_qualifiers b, qp_npreq_line_attrs_tmp c
30641 WHERE b.list_header_id = a.list_header_id
30642 AND b.list_line_id = a.list_line_id
30643 AND (b.qualifier_grouping_no = a.grouping_no
30644 or
30645 b.qualifier_grouping_no = -1
30646 )
30647 AND b.qualify_hier_descendents_flag = 'N'
30648 AND c.segment_id = b.segment_id
30649 AND c.line_index = a.line_index
30650 AND c.derived_qualifier_flag = 'Y');
30651
30652 qp_debug_util.tstop('PATRN_LIST_CUR_DEL_HDR_TCA_P1');
30653
30654
30655 -- Line check
30656
30657 IF l_use_multi_curr THEN
30658 qp_debug_util.tstart('BIG_SRCH_LIN_CACH_P1','Line Cache Path 1 - l_pat_line_cache_curr_p1');
30659 OPEN l_pat_line_cache_curr_p1;
30660 ELSE
30661 qp_debug_util.tstart('BIG_SRCH_LIN_CACH_P1','Line Cache Path 1 - l_pat_line_cache_p1');
30662 OPEN l_pat_line_cache_p1;
30663 END if;
30664
30665 LOOP
30666 l_list_header_id_tbl.DELETE;
30667 l_list_line_id_tbl.DELETE;
30668 l_line_index_tbl.DELETE;
30669 l_matched_pattrn_id_tbl.DELETE;
30670 l_pricing_phase_id_tbl.DELETE;
30671 l_stage_tbl.DELETE;
30672 l_matched_hash_key_tbl.DELETE;
30673 l_pricing_status_code_tbl.DELETE;
30674 l_ssc.DELETE;
30675 l_header_quals_exist_flag.DELETE;
30676 l_grouping_no.DELETE;
30677 l_eq_flag.DELETE;
30678 l_validated_flag.DELETE;
30679 l_modf_lvl_code.DELETE;
30680 l_other_oprt_count.DELETE;
30681 l_null_other_oprt_count.DELETE;
30682 l_list_type_code.DELETE;
30683 l_ask_for_flag.DELETE;
30684 l_hdr_lmt_exists.DELETE;
30685 l_line_lmt_exists.DELETE;
30686 l_brk_uom_code.DELETE;
30687 l_brk_uom_ctxt.DELETE;
30688 l_brk_uom_attr.DELETE;
30689 l_order_curr.DELETE;
30690 l_curr_det_id.DELETE;
30691 l_curr_hdr_id.DELETE;
30692 L_SELLNG_ROUND_FTR.DELETE;
30693 l_base_curr_code.DELETE;
30694 l_prcng_effctve_dt.DELETE;
30695 l_PRICE_BREAK_TYPE_CODE.DELETE;
30696 l_descnt_quals_exist.DELETE;
30697
30698
30699 IF l_use_multi_curr THEN
30700 FETCH l_pat_line_cache_curr_p1 bulk collect
30701 INTO l_list_header_id_tbl,
30702 l_list_line_id_tbl,
30703 l_line_index_tbl,
30704 l_matched_pattrn_id_tbl,
30705 l_pricing_phase_id_tbl,
30706 l_matched_hash_key_tbl,
30707 l_stage_tbl,
30708 l_pricing_status_code_tbl,
30709 l_ssc,
30710 l_header_quals_exist_flag,
30711 l_grouping_no,
30712 l_eq_flag,
30713 l_validated_flag,
30714 l_modf_lvl_code,
30715 l_null_other_oprt_count,
30716 l_list_type_code,
30717 l_ask_for_flag,
30718 l_hdr_lmt_exists,
30719 l_line_lmt_exists,
30720 l_brk_uom_code,
30721 l_brk_uom_ctxt,
30722 l_brk_uom_attr,
30723 l_order_curr,
30724 l_curr_det_id,
30725 l_curr_hdr_id,
30726 L_SELLNG_ROUND_FTR,
30727 l_base_curr_code,
30728 l_prcng_effctve_dt,
30729 l_PRICE_BREAK_TYPE_CODE,
30730 l_descnt_quals_exist
30731 limit l_limit;
30732 ELSE
30733 FETCH l_pat_line_cache_p1 bulk collect
30734 INTO l_list_header_id_tbl,
30735 l_list_line_id_tbl,
30736 l_line_index_tbl,
30737 l_matched_pattrn_id_tbl,
30738 l_pricing_phase_id_tbl,
30739 l_matched_hash_key_tbl,
30740 l_stage_tbl,
30741 l_pricing_status_code_tbl,
30742 l_ssc,
30743 l_header_quals_exist_flag,
30744 l_grouping_no,
30745 l_eq_flag,
30746 l_validated_flag,
30747 l_modf_lvl_code,
30748 l_null_other_oprt_count,
30749 l_list_type_code,
30750 l_ask_for_flag,
30751 l_hdr_lmt_exists,
30752 l_line_lmt_exists,
30753 l_brk_uom_code,
30754 l_brk_uom_ctxt,
30755 l_brk_uom_attr,
30756 l_order_curr,
30757 l_curr_det_id,
30758 l_curr_hdr_id,
30759 L_SELLNG_ROUND_FTR,
30760 l_base_curr_code,
30761 l_prcng_effctve_dt,
30762 l_PRICE_BREAK_TYPE_CODE,
30763 l_descnt_quals_exist
30764 limit l_limit;
30765 END IF;
30766 EXIT
30767 WHEN l_list_header_id_tbl.COUNT = 0;
30768
30769 forall i IN 1 .. l_list_header_id_tbl.COUNT INSERT
30770 INTO qp_preq_patrn_qual_tmp(list_header_id,
30771 list_line_id,
30772 line_index,
30773 matched_pattrn_id,
30774 pricing_phase_id,
30775 matched_hash_key,
30776 stage,
30777 pricing_status_code,
30778 source_system_code,
30779 header_quals_exist_flag,
30780 grouping_no,
30781 eq_flag,
30782 validated_flag,
30783 MODIFIER_LEVEL_CODE,
30784 other_oprt_count,
30785 null_other_oprt_count,
30786 LIST_TYPE_CODE,
30787 ASK_FOR_FLAG,
30788 HEADER_LIMIT_EXISTS,
30789 LINE_LIMIT_EXISTS,
30790 BREAK_UOM_CODE,
30791 BREAK_UOM_CONTEXT,
30792 BREAK_UOM_ATTRIBUTE,
30793 ORDER_CURRENCY,
30794 CURRENCY_DETAIL_ID,
30795 CURRENCY_HEADER_ID,
30796 SELLING_ROUNDING_FACTOR,
30797 BASE_CURRENCY_CODE,
30798 pricing_effective_date,
30799 PRICE_BREAK_TYPE_CODE,
30800 descendents_quals_exist
30801 )
30802 VALUES(l_list_header_id_tbl(i),
30803 l_list_line_id_tbl(i),
30804 l_line_index_tbl(i),
30805 l_matched_pattrn_id_tbl(i),
30806 l_pricing_phase_id_tbl(i),
30807 l_matched_hash_key_tbl(i),
30808 l_stage_tbl(i),
30809 l_pricing_status_code_tbl(i),
30810 l_ssc(i),
30811 l_header_quals_exist_flag(i),
30812 l_grouping_no(i),
30813 l_eq_flag(i),
30814 l_validated_flag(i),
30815 l_modf_lvl_code(i),
30816 l_null_other_oprt_count(i),
30817 l_null_other_oprt_count(i),
30818 l_list_type_code(i),
30819 l_ask_for_flag(i),
30820 l_hdr_lmt_exists(i),
30821 l_line_lmt_exists(i),
30822 l_brk_uom_code(i),
30823 l_brk_uom_ctxt(i),
30824 l_brk_uom_attr(i),
30825 l_order_curr(i),
30826 l_curr_det_id(i),
30827 l_curr_hdr_id(i),
30828 L_SELLNG_ROUND_FTR(i),
30829 l_base_curr_code(i),
30830 l_prcng_effctve_dt(i),
30831 l_PRICE_BREAK_TYPE_CODE(i),
30832 l_descnt_quals_exist(i)
30833 );
30834
30835 l_loop_count := l_loop_count + 1;
30836
30837 END LOOP;
30838
30839 IF l_use_multi_curr THEN
30840 CLOSE l_pat_line_cache_curr_p1;
30841 ELSE
30842 CLOSE l_pat_line_cache_p1;
30843 END IF;
30844
30845 qp_debug_util.tstop('BIG_SRCH_LIN_CACH_P1');
30846
30847 --doing between/ not = operator check
30848
30849 qp_debug_util.tstart('Populate_Temp_Tables_NEQ_BTW_LIN','Populating BNQ Operators after line cache');
30850
30851 Populate_Temp_Tables_NEQ_BTW(
30852 p_pricing_phase_id ,
30853 G_STAGE_CACHE_PL_LIN,
30854 x_status_code ,
30855 x_status_text );
30856
30857 qp_debug_util.tstop('Populate_Temp_Tables_NEQ_BTW_LIN');
30858
30859 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
30860 RAISE E_ROUTINE_ERRORS;
30861 END IF;
30862
30863 qp_debug_util.tstart('QP_EVALUATE_OTHER_OPERATORS_LIN','Evaluating other operators after line cache');
30864
30865 QP_EVALUATE_OTHER_OPERATORS(
30866 p_pricing_phase_id ,
30867 G_STAGE_CACHE_PL_LIN,
30868 x_status_code ,
30869 x_status_text );
30870
30871 qp_debug_util.tstop('QP_EVALUATE_OTHER_OPERATORS_LIN');
30872
30873 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
30874 RAISE E_ROUTINE_ERRORS;
30875 END IF;
30876
30877 qp_debug_util.tstart('PATRN_LIST_CUR_DEL_LIN_TCA_P1', 'Line deletion for TCA');
30878
30879 UPDATE qp_preq_patrn_qual_tmp a
30880 SET pricing_status_code = G_DELETED_TCA
30881 WHERE pricing_status_code = g_status_unchanged
30882 AND a.descendents_quals_exist = 'Y'
30883 and a.pricing_phase_id = p_pricing_phase_id
30884 and a.stage = G_STAGE_CACHE_PL_LIN
30885 AND EXISTS (
30886 SELECT 1
30887 FROM qp_qualifiers b, qp_npreq_line_attrs_tmp c
30888 WHERE b.list_header_id = a.list_header_id
30889 AND b.list_line_id = a.list_line_id
30890 AND (b.qualifier_grouping_no = a.grouping_no
30891 or
30892 b.qualifier_grouping_no = -1
30893 )
30894 AND b.qualify_hier_descendents_flag = 'N'
30895 AND c.segment_id = b.segment_id
30896 AND c.line_index = a.line_index
30897 AND c.derived_qualifier_flag = 'Y');
30898
30899 qp_debug_util.tstop('PATRN_LIST_CUR_DEL_LIN_TCA_P1');
30900
30901 qp_debug_util.tstart('BIG_SRCH_POPULATE_TMP_TBLS','Populating Temp Tables - Populate_Pat_Temp_Tables API');
30902
30903 Populate_Pat_Temp_Tables(p_pricing_phase_id,
30904 G_STAGE_CACHE_PL_LIN,
30905 x_status_code,
30906 x_status_text);
30907
30908 qp_debug_util.tstop('BIG_SRCH_POPULATE_TMP_TBLS');
30909
30910 END IF;
30911
30912 --- Existing logic
30913
30914 IF l_loop_count > 0 THEN
30915
30916 qp_debug_util.tstart('BIG_SRCH_RESLV_INCMPTBLTY','Resolve Incompatability - Determine_Pricing_UOM_And_Qty API');
30917
30918 QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty
30919 (p_line_index => NULL,
30920 p_order_uom_code => NULL,
30921 p_order_qty => NULL,
30922 p_pricing_phase_id => G_PRICE_LIST_PHASE_ID,
30923 p_call_big_search => FALSE,
30924 x_list_line_id => l_list_line_id,
30925 x_return_status => l_return_status,
30926 x_return_status_txt => l_status_text);
30927
30928 qp_debug_util.tstop('BIG_SRCH_RESLV_INCMPTBLTY');
30929
30930 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
30931 RAISE E_ROUTINE_ERRORS;
30932 END IF;
30933
30934 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30935 engine_debug('Incomp Return Status Non Validated QP_PREQ_GRP: ' || l_return_status);
30936
30937 END IF;
30938
30939 -- 3773652
30940 -- re-run Evaluate_Between after UOM conversion to check PLL really qualifies
30941 begin
30942 select 'x' into l_dummy
30943 from qp_npreq_lines_tmp
30944 where LINE_UOM_CODE <> nvl(PRICED_UOM_CODE, LINE_UOM_CODE)
30945 and (PRICE_FLAG = G_YES
30946 or
30947 PRICE_FLAG = G_PHASE and p_freeze_override_flag = G_YES)
30948 and rownum = 1;
30949 -- //Shankar need to put this
30950
30951 qp_debug_util.tstart('BIG_SRCH_EVAL_BET','Evaluate Between');
30952
30953 Evaluate_Between(p_pricing_phase_id,NULL,NULL,l_return_status,l_status_text);
30954
30955 qp_debug_util.tstop('BIG_SRCH_EVAL_BET');
30956
30957 exception
30958 when no_data_found then
30959 null;
30960 end;
30961
30962 -- Update the request line status for lines which got valid price list
30963
30964 qp_debug_util.tstart('BIG_SRCH_UPD_REQ_LIN_STATUS','Updating Request Lines Status - Update_Request_Line_Status API');
30965
30966 Update_Request_Line_Status(p_control_rec,'SUCCESS',p_freeze_override_flag,l_return_status,l_status_text); --[julin/4708044]
30967
30968 qp_debug_util.tstop('BIG_SRCH_UPD_REQ_LIN_STATUS');
30969
30970 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
30971 RAISE E_ROUTINE_ERRORS;
30972 END IF;
30973
30974 --bug# 2091386 not reflecting the right price on change on UOM on the order line . Since
30975 --QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty determines the pricing_qty
30976 --which is needed later in Get_Eligible_Price_Break we need to call Get_Eligible_Price_Break
30977 --after QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty.
30978 --By doing this we will get the right price in the PRICE event on change of UOM on the order line
30979 --for price based on price break
30980 -- //Shankar need to put this
30981
30982 qp_debug_util.tstart('BIG_SRCH_GET_ELGBLE_PRICE_BRK','Getting eligible Price Breaks - Get_Eligible_Price_Break API');
30983
30984 Get_Eligible_Price_Break(p_pricing_phase_id,NULL,l_return_status,l_status_text);
30985
30986 qp_debug_util.tstop('BIG_SRCH_GET_ELGBLE_PRICE_BRK');
30987
30988 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
30989 RAISE E_ROUTINE_ERRORS;
30990 END IF;
30991
30992 ELSE
30993 -- Update the request line status for lines which got valid price list
30994 Update_Request_Line_Status(p_control_rec,'FAILURE',p_freeze_override_flag,x_status_code,x_status_text); --[juiln/4708044]
30995 IF(x_status_code = FND_API.G_RET_STS_ERROR) THEN
30996 RAISE E_ROUTINE_ERRORS;
30997 END IF;
30998
30999 END IF;
31000
31001 qp_debug_util.tstop('SEL_PRICE_LIST_LINES_PAT');
31002
31003 EXCEPTION
31004 WHEN E_ROUTINE_ERRORS THEN
31005
31006 qp_debug_util.tstop('SEL_PRICE_LIST_LINES_PAT');
31007
31008 IF l_use_multi_curr THEN
31009 IF l_pat_line_cache_curr_p1%ISOPEN THEN
31010 CLOSE l_pat_line_cache_curr_p1;
31011 END if;
31012
31013 IF l_pat_header_cache_curr_p1%ISOPEN THEN
31014 CLOSE l_pat_header_cache_curr_p1;
31015 END if;
31016
31017 IF l_pat_line_curr_p2%ISOPEN THEN
31018 CLOSE l_pat_line_curr_p2;
31019 END if;
31020
31021 ELSE
31022 IF l_pat_line_cache_p1%ISOPEN THEN
31023 CLOSE l_pat_line_cache_p1;
31024 END if;
31025
31026 IF l_pat_header_cache_p1%ISOPEN THEN
31027 CLOSE l_pat_header_cache_p1;
31028 END if;
31029
31030 IF l_pat_line_p2%ISOPEN THEN
31031 CLOSE l_pat_line_p2;
31032 END if;
31033
31034 END IF;
31035
31036 x_status_code := FND_API.G_RET_STS_ERROR;
31037 x_status_text := 'Expected Error in ' || l_routine || sqlerrm;
31038
31039 IF g_debug_engine = fnd_api.g_true THEN
31040 engine_debug(x_status_text);
31041 END IF;
31042
31043 WHEN OTHERS THEN
31044
31045 qp_debug_util.tstop('SEL_PRICE_LIST_LINES_PAT');
31046
31047 IF l_use_multi_curr THEN
31048 IF l_pat_line_cache_curr_p1%ISOPEN THEN
31049 CLOSE l_pat_line_cache_curr_p1;
31050 END if;
31051
31052 IF l_pat_header_cache_curr_p1%ISOPEN THEN
31053 CLOSE l_pat_header_cache_curr_p1;
31054 END if;
31055
31056 IF l_pat_line_curr_p2%ISOPEN THEN
31057 CLOSE l_pat_line_curr_p2;
31058 END if;
31059
31060 ELSE
31061 IF l_pat_line_cache_p1%ISOPEN THEN
31062 CLOSE l_pat_line_cache_p1;
31063 END if;
31064
31065 IF l_pat_header_cache_p1%ISOPEN THEN
31066 CLOSE l_pat_header_cache_p1;
31067 END if;
31068
31069 IF l_pat_line_p2%ISOPEN THEN
31070 CLOSE l_pat_line_p2;
31071 END if;
31072
31073 END IF;
31074 IF g_debug_engine = fnd_api.g_true THEN
31075 engine_debug(l_routine || ' ' || sqlerrm);
31076 END IF;
31077
31078 x_status_code := fnd_api.g_ret_sts_error;
31079 x_status_text := 'Error in ' || l_routine || sqlerrm;
31080
31081
31082 END select_price_list_lines_pat;
31083
31084 /*+----------------------------------------------------------
31085 |PROCEDURE SELECT_PRICE_LIST_LINES
31086 +----------------------------------------------------------
31087 */
31088 PROCEDURE SELECT_PRICE_LIST_LINES(p_pricing_phase_id IN NUMBER,
31089 p_freeze_override_flag IN VARCHAR2,
31090 x_status_code OUT NOCOPY VARCHAR2,
31091 x_status_text OUT NOCOPY VARCHAR2,
31092 p_control_rec IN CONTROL_RECORD_TYPE) -- vivek
31093 AS
31094
31095 -- [julin/4742368/4766135] Added QP_QUALIFIERS_N1 hint to prevent db from using N2
31096 --[julin/5007789] Tuned query as follows:
31097 -- 1. Performing line filter first.
31098 -- 2. Performing qualifier filter before product filter
31099 -- 3. Split into unions ('=', 'BETWEEN', 'NOT =') for better use of indexes
31100 -- bug 9210308 added index hint for index QP_LIST_LINES_PK
31101 CURSOR l_prod_qual_cur (p_pricing_phase_id NUMBER) IS
31102 -- Product and Qualifier Only. No pricing
31103 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPL)
31104 INDEX(QPLATQ QP_PREQ_LINE_ATTRS_TMP_N1)
31105 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
31106 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
31107 INDEX(QPQ QP_QUALIFIERS_N4)
31108 INDEX(QPL QP_LIST_LINES_PK)
31109 l_prod_qual_cur_pl */
31110 qpl.list_header_id,
31111 qpl.list_line_id,
31112 qpl.list_line_type_code,
31113 qplatpr.line_index,
31114 qplatpr.applied_flag,
31115 qplatpr.attribute_level product_attribute_level,
31116 qplatpr.attribute_type product_attribute_type,
31117 qplatpr.context product_attribute_context,
31118 qplatpr.attribute product_attribute,
31119 qplatpr.value_from product_attr_value,
31120 qpprod.product_uom_code product_uom_code,
31121 qpprod.excluder_flag,
31122 qplatq.context qualifier_attribute_context,
31123 qplatq.attribute qualifier_attribute,
31124 qplatq.value_from qualifier_attribute_value,
31125 qpq.qualifier_grouping_no qualifier_grouping_no,
31126 qpq.qualifier_precedence qualifier_precedence,
31127 qpq.qualifier_datatype,
31128 qpq.qualifier_attr_value setup_value_from,
31129 qpq.qualifier_attr_value_to setup_value_to,
31130 qpl.automatic_flag,
31131 qpl.modifier_level_code,
31132 qpl.primary_uom_flag,
31133 qpl.arithmetic_operator operand_calculation_code,
31134 qpl.operand operand_value,
31135 qpl.pricing_group_sequence,
31136 qph.list_type_code created_from_list_type,
31137 qph.rounding_factor,
31138 qpl.pricing_phase_id,
31139 qpl.price_break_type_code,
31140 qpl.incompatibility_grp_code,
31141 qpl.price_by_formula_id,
31142 qpl.product_precedence,
31143 qpl.list_line_no,
31144 'HQ' qualifier_type
31145 ,QPL.BREAK_UOM_CODE /* Proration */
31146 ,QPL.BREAK_UOM_CONTEXT /* Proration */
31147 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
31148 FROM --[julin/5007789]
31149 (SELECT /*+ dynamic_sampling(1) */ *
31150 FROM qp_npreq_lines_tmp
31151 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
31152 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
31153 qp_npreq_line_attrs_tmp qplatq,
31154 qp_qualifiers qpq,
31155 qp_list_headers_b qph,
31156 qp_price_req_sources_v qprs,
31157 qp_npreq_line_attrs_tmp qplatpr,
31158 qp_pricing_attributes qpprod,
31159 qp_list_lines qpl
31160 WHERE qph.list_header_id = qpl.list_header_id
31161 --added for moac -- commented references to security profile
31162 --security will be built into qp_list_headers_b
31163 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
31164 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
31165 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
31166 -- 3594459, context and attribute OR'd together
31167 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
31168 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
31169 AND qpq.list_header_id = qph.list_header_id
31170 AND (qplines.price_flag = G_YES OR
31171 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
31172 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
31173 AND qpq.list_line_id = -1
31174 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
31175 AND qpl.list_line_id = qpprod.list_line_id
31176 AND qph.currency_code = qplines.currency_code
31177 AND qpl.modifier_level_code = qplines.line_type_code
31178 AND qph.active_flag = G_YES
31179 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31180 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
31181 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
31182 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31183 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
31184 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
31185 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31186 nvl(qpq.start_date_active, TRUNC(qplines.pricing_effective_date)) and
31187 nvl(qpq.end_date_active,TRUNC(qplines.pricing_effective_date))
31188 AND qpq.qualifier_context = qplatq.context
31189 AND qpq.qualifier_attribute = qplatq.attribute
31190 AND qpq.comparison_operator_code = '=' --[julin/5007789]
31191 AND qplatq.value_from = qpq.qualifier_attr_value --bug#1761272 Multiple NOT =, [julin/5007789]
31192 AND qpq.active_flag = G_YES
31193 AND qpprod.pricing_phase_id = p_pricing_phase_id
31194 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
31195 AND qpprod.product_attribute_context = qplatpr.context
31196 AND qpprod.product_attribute = qplatpr.attribute
31197 AND qpprod.product_attr_value = qplatpr.value_from
31198 AND qpprod.excluder_flag = G_NO
31199 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
31200 AND qplatq.line_index = qplines.line_index
31201 AND qplatpr.line_index = qplines.line_index --[julin/5007789]
31202 AND qplatpr.line_index = qplatq.line_index
31203 AND qph.source_system_code = qprs.source_system_code
31204 AND qplines.request_type_code = qprs.request_type_code
31205 AND qplatq.attribute_type = 'QUALIFIER'
31206 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
31207 AND qplatpr.attribute_type='PRODUCT'
31208 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
31209 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
31210 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
31211 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
31212 UNION ALL
31213 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPL)
31214 INDEX(QPLATQ QP_PREQ_LINE_ATTRS_TMP_N1)
31215 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
31216 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
31217 INDEX(QPQ QP_QUALIFIERS_N5)
31218 INDEX(QPL QP_LIST_LINES_PK)
31219 l_prod_qual_cur_pl */
31220 qpl.list_header_id,
31221 qpl.list_line_id,
31222 qpl.list_line_type_code,
31223 qplatpr.line_index,
31224 qplatpr.applied_flag,
31225 qplatpr.attribute_level product_attribute_level,
31226 qplatpr.attribute_type product_attribute_type,
31227 qplatpr.context product_attribute_context,
31228 qplatpr.attribute product_attribute,
31229 qplatpr.value_from product_attr_value,
31230 qpprod.product_uom_code product_uom_code,
31231 qpprod.excluder_flag,
31232 qplatq.context qualifier_attribute_context,
31233 qplatq.attribute qualifier_attribute,
31234 qplatq.value_from qualifier_attribute_value,
31235 qpq.qualifier_grouping_no qualifier_grouping_no,
31236 qpq.qualifier_precedence qualifier_precedence,
31237 qpq.qualifier_datatype,
31238 qpq.qualifier_attr_value setup_value_from,
31239 qpq.qualifier_attr_value_to setup_value_to,
31240 qpl.automatic_flag,
31241 qpl.modifier_level_code,
31242 qpl.primary_uom_flag,
31243 qpl.arithmetic_operator operand_calculation_code,
31244 qpl.operand operand_value,
31245 qpl.pricing_group_sequence,
31246 qph.list_type_code created_from_list_type,
31247 qph.rounding_factor,
31248 qpl.pricing_phase_id,
31249 qpl.price_break_type_code,
31250 qpl.incompatibility_grp_code,
31251 qpl.price_by_formula_id,
31252 qpl.product_precedence,
31253 qpl.list_line_no,
31254 'HQ' qualifier_type
31255 ,QPL.BREAK_UOM_CODE /* Proration */
31256 ,QPL.BREAK_UOM_CONTEXT /* Proration */
31257 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
31258 FROM --[julin/5007789]
31259 (SELECT /*+ dynamic_sampling(1) */ *
31260 FROM qp_npreq_lines_tmp
31261 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
31262 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
31263 qp_npreq_line_attrs_tmp qplatq,
31264 qp_qualifiers qpq,
31265 qp_list_headers_b qph,
31266 qp_price_req_sources_v qprs,
31267 qp_npreq_line_attrs_tmp qplatpr,
31268 qp_pricing_attributes qpprod,
31269 qp_list_lines qpl
31270 WHERE qph.list_header_id = qpl.list_header_id
31271 --added for moac -- commented references to security profile
31272 --security will be built into qp_list_headers_b
31273 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
31274 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
31275 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
31276 -- 3594459, context and attribute OR'd together
31277 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
31278 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
31279 AND qpq.list_header_id = qph.list_header_id
31280 AND (qplines.price_flag = G_YES OR
31281 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
31282 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
31283 AND qpq.list_line_id = -1
31284 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
31285 AND qpl.list_line_id = qpprod.list_line_id
31286 AND qph.currency_code = qplines.currency_code
31287 AND qpl.modifier_level_code = qplines.line_type_code
31288 AND qph.active_flag = G_YES
31289 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31290 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
31291 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
31292 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31293 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
31294 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
31295 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31296 nvl(qpq.start_date_active, TRUNC(qplines.pricing_effective_date)) and
31297 nvl(qpq.end_date_active,TRUNC(qplines.pricing_effective_date))
31298 AND qpq.qualifier_context = qplatq.context
31299 AND qpq.qualifier_attribute = qplatq.attribute
31300 AND qpq.comparison_operator_code = 'NOT =' --[julin/5007789]
31301 AND qpq.active_flag = G_YES
31302 AND qplatq.value_from <> qpq.qualifier_attr_value --[julin/5007789]
31303 AND qpprod.pricing_phase_id = p_pricing_phase_id
31304 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
31305 AND qpprod.product_attribute_context = qplatpr.context
31306 AND qpprod.product_attribute = qplatpr.attribute
31307 AND qpprod.product_attr_value = qplatpr.value_from
31308 AND qpprod.excluder_flag = G_NO
31309 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
31310 AND qplatq.line_index = qplines.line_index
31311 AND qplatpr.line_index = qplines.line_index --[julin/5007789]
31312 AND qplatpr.line_index = qplatq.line_index
31313 AND qph.source_system_code = qprs.source_system_code
31314 AND qplines.request_type_code = qprs.request_type_code
31315 AND qplatq.attribute_type = 'QUALIFIER'
31316 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
31317 AND qplatpr.attribute_type='PRODUCT'
31318 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
31319 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
31320 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
31321 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
31322 UNION ALL
31323 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPL)
31324 INDEX(QPLATQ QP_PREQ_LINE_ATTRS_TMP_N1)
31325 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
31326 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
31327 INDEX(QPQ QP_QUALIFIERS_N6)
31328 INDEX(QPL QP_LIST_LINES_PK)
31329 l_prod_qual_cur_pl */
31330 qpl.list_header_id,
31331 qpl.list_line_id,
31332 qpl.list_line_type_code,
31333 qplatpr.line_index,
31334 qplatpr.applied_flag,
31335 qplatpr.attribute_level product_attribute_level,
31336 qplatpr.attribute_type product_attribute_type,
31337 qplatpr.context product_attribute_context,
31338 qplatpr.attribute product_attribute,
31339 qplatpr.value_from product_attr_value,
31340 qpprod.product_uom_code product_uom_code,
31341 qpprod.excluder_flag,
31342 qplatq.context qualifier_attribute_context,
31343 qplatq.attribute qualifier_attribute,
31344 qplatq.value_from qualifier_attribute_value,
31345 qpq.qualifier_grouping_no qualifier_grouping_no,
31346 qpq.qualifier_precedence qualifier_precedence,
31347 qpq.qualifier_datatype,
31348 qpq.qualifier_attr_value setup_value_from,
31349 qpq.qualifier_attr_value_to setup_value_to,
31350 qpl.automatic_flag,
31351 qpl.modifier_level_code,
31352 qpl.primary_uom_flag,
31353 qpl.arithmetic_operator operand_calculation_code,
31354 qpl.operand operand_value,
31355 qpl.pricing_group_sequence,
31356 qph.list_type_code created_from_list_type,
31357 qph.rounding_factor,
31358 qpl.pricing_phase_id,
31359 qpl.price_break_type_code,
31360 qpl.incompatibility_grp_code,
31361 qpl.price_by_formula_id,
31362 qpl.product_precedence,
31363 qpl.list_line_no,
31364 'HQ' qualifier_type
31365 ,QPL.BREAK_UOM_CODE /* Proration */
31366 ,QPL.BREAK_UOM_CONTEXT /* Proration */
31367 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
31368 FROM --[julin/5007789]
31369 (SELECT /*+ dynamic_sampling(1) */ *
31370 FROM qp_npreq_lines_tmp
31371 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
31372 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
31373 qp_npreq_line_attrs_tmp qplatq,
31374 qp_qualifiers qpq,
31375 qp_list_headers_b qph,
31376 qp_price_req_sources_v qprs,
31377 qp_npreq_line_attrs_tmp qplatpr,
31378 qp_pricing_attributes qpprod,
31379 qp_list_lines qpl
31380 WHERE qph.list_header_id = qpl.list_header_id
31381 --added for moac -- commented references to security profile
31382 --security will be built into qp_list_headers_b
31383 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
31384 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
31385 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
31386 -- 3594459, context and attribute OR'd together
31387 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
31388 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
31389 AND qpq.list_header_id = qph.list_header_id
31390 AND (qplines.price_flag = G_YES OR
31391 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
31392 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
31393 AND qpq.list_line_id = -1
31394 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
31395 AND qpl.list_line_id = qpprod.list_line_id
31396 AND qph.currency_code = qplines.currency_code
31397 AND qpl.modifier_level_code = qplines.line_type_code
31398 AND qph.active_flag = G_YES
31399 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31400 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
31401 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
31402 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31403 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
31404 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
31405 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31406 nvl(qpq.start_date_active, TRUNC(qplines.pricing_effective_date)) and
31407 nvl(qpq.end_date_active,TRUNC(qplines.pricing_effective_date))
31408 AND qpq.qualifier_context = qplatq.context
31409 AND qpq.qualifier_attribute = qplatq.attribute
31410 AND qpq.comparison_operator_code = G_OPERATOR_BETWEEN --[julin/5007789]
31411 AND qpq.active_flag = G_YES
31412 and ((qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y) --[julin/5007789]
31413 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to)
31414 or
31415 (qpq.qualifier_datatype = G_NUMERIC
31416 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
31417 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number))
31418 AND qpprod.pricing_phase_id = p_pricing_phase_id
31419 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
31420 AND qpprod.product_attribute_context = qplatpr.context
31421 AND qpprod.product_attribute = qplatpr.attribute
31422 AND qpprod.product_attr_value = qplatpr.value_from
31423 AND qpprod.excluder_flag = G_NO
31424 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
31425 AND qplatq.line_index = qplines.line_index
31426 AND qplatpr.line_index = qplines.line_index --[julin/5007789]
31427 AND qplatpr.line_index = qplatq.line_index
31428 AND qph.source_system_code = qprs.source_system_code
31429 AND qplines.request_type_code = qprs.request_type_code
31430 AND qplatq.attribute_type = 'QUALIFIER'
31431 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
31432 AND qplatpr.attribute_type='PRODUCT'
31433 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
31434 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
31435 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
31436 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
31437 ORDER BY 4,2;
31438
31439 --[julin/4742368/4766135] Added QP_QUALIFIERS_N1 hint to prevent db from using N2
31440 --[julin/5007789] Tuned query as follows:
31441 -- 1. Performing line filter first.
31442 -- 2. Performing qualifier filter before product filter
31443 -- 3. Split into unions ('=', 'BETWEEN', 'NOT =') for better use of indexes
31444 CURSOR l_prod_qual_cur_currency (p_pricing_phase_id NUMBER) IS
31445 -- Product and Qualifier Only. No pricing
31446 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPL)
31447 INDEX(QPLATQ QP_PREQ_LINE_ATTRS_TMP_N1)
31448 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
31449 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
31450 INDEX(QPQ QP_QUALIFIERS_N4)
31451 INDEX(QPL QP_LIST_LINES_PK)
31452 l_prod_qual_cur_pl */
31453 qpl.list_header_id,
31454 qpl.list_line_id,
31455 qpl.list_line_type_code,
31456 qplatpr.line_index,
31457 qplatpr.applied_flag,
31458 qplatpr.attribute_level product_attribute_level,
31459 qplatpr.attribute_type product_attribute_type,
31460 qplatpr.context product_attribute_context,
31461 qplatpr.attribute product_attribute,
31462 qplatpr.value_from product_attr_value,
31463 qpprod.product_uom_code product_uom_code,
31464 qpprod.excluder_flag,
31465 qplatq.context qualifier_attribute_context,
31466 qplatq.attribute qualifier_attribute,
31467 qplatq.value_from qualifier_attribute_value,
31468 qpq.qualifier_grouping_no qualifier_grouping_no,
31469 qpq.qualifier_precedence qualifier_precedence,
31470 qpq.qualifier_datatype,
31471 qpq.qualifier_attr_value setup_value_from,
31472 qpq.qualifier_attr_value_to setup_value_to,
31473 qpl.automatic_flag,
31474 qpl.modifier_level_code,
31475 qpl.primary_uom_flag,
31476 qpl.arithmetic_operator operand_calculation_code,
31477 qpl.operand operand_value,
31478 qpl.pricing_group_sequence,
31479 qph.list_type_code created_from_list_type,
31480 qph.rounding_factor,
31481 qpl.pricing_phase_id,
31482 qpl.price_break_type_code,
31483 qpl.incompatibility_grp_code,
31484 qpl.price_by_formula_id,
31485 qpl.product_precedence,
31486 qpl.list_line_no,
31487 'HQ' qualifier_type,
31488 qcdt.currency_detail_id,
31489 qcdt.currency_header_id,
31490 qcdt.selling_rounding_factor,
31491 qplines.currency_code order_currency,
31492 qplines.pricing_effective_date pricing_effective_date,
31493 qph.currency_code base_currency_code
31494 ,QPL.BREAK_UOM_CODE /* Proration */
31495 ,QPL.BREAK_UOM_CONTEXT /* Proration */
31496 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
31497 FROM --[julin/5007789]
31498 (SELECT /*+ dynamic_sampling(1) */ *
31499 FROM qp_npreq_lines_tmp
31500 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
31501 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
31502 qp_npreq_line_attrs_tmp qplatq,
31503 qp_qualifiers qpq,
31504 qp_list_headers_b qph,
31505 qp_price_req_sources_v qprs,
31506 qp_npreq_line_attrs_tmp qplatpr,
31507 qp_pricing_attributes qpprod,
31508 qp_list_lines qpl,
31509 qp_currency_details qcdt
31510 WHERE qph.list_header_id = qpl.list_header_id
31511 --added for moac -- commented references to security profile
31512 --security will be built into qp_list_headers_b
31513 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
31514 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
31515 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
31516 -- 3594459, context and attribute OR'd together
31517 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
31518 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
31519 AND qpq.list_header_id = qph.list_header_id
31520 AND (qplines.price_flag = G_YES OR
31521 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
31522 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
31523 AND qpq.list_line_id = -1
31524 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
31525 AND qpl.list_line_id = qpprod.list_line_id
31526 --AND qph.currency_code = qplines.currency_code
31527 AND qph.currency_header_id = qcdt.currency_header_id
31528 AND qplines.currency_code = qcdt.to_currency_code
31529 AND nvl(TRUNC(qplines.pricing_effective_date),trunc(sysdate)) between
31530 nvl(trunc(qcdt.start_date_active),TRUNC(qplines.pricing_effective_date)) and
31531 nvl(trunc(qcdt.end_date_active),TRUNC(qplines.pricing_effective_date))
31532 AND (
31533 (qcdt.curr_attribute_context is null
31534 and not exists
31535 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
31536 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
31537 where qcdt1.curr_attribute_context IS NOT NULL
31538 and qcdt1.curr_attribute_context = pa_tmp.context
31539 and qcdt1.curr_attribute = pa_tmp.attribute
31540 and qcdt1.curr_attribute_value = pa_tmp.value_from
31541 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
31542 and qcdt1.to_currency_code = qcdt.to_currency_code
31543 and qcdt1.currency_header_id = qcdt.currency_header_id
31544 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
31545 and pa_tmp.line_index = qplines.line_index
31546 and TRUNC(qplines.pricing_effective_date) between
31547 nvl(trunc(qcdt1.start_date_active),TRUNC(qplines.pricing_effective_date))
31548 and nvl(trunc(qcdt1.end_date_active),TRUNC(qplines.pricing_effective_date))))
31549 OR
31550 (qcdt.curr_attribute_context is not null
31551 and qcdt.precedence =
31552 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
31553 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
31554 where qcdt2.curr_attribute_context IS NOT NULL
31555 and qcdt2.curr_attribute_context = pa_tmp1.context
31556 and qcdt2.curr_attribute = pa_tmp1.attribute
31557 and qcdt2.curr_attribute_value = pa_tmp1.value_from
31558 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
31559 and qcdt2.to_currency_code = qcdt.to_currency_code
31560 and qcdt2.currency_header_id = qcdt.currency_header_id
31561 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
31562 and pa_tmp1.line_index = qplines.line_index
31563 and TRUNC(qplines.pricing_effective_date) between
31564 nvl(trunc(qcdt2.start_date_active),TRUNC(qplines.pricing_effective_date))
31565 and nvl(trunc(qcdt2.end_date_active),TRUNC(qplines.pricing_effective_date))
31566 )))
31567 AND qpl.modifier_level_code = qplines.line_type_code
31568 AND qph.active_flag = G_YES
31569 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31570 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
31571 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
31572 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31573 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
31574 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
31575 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31576 nvl(qpq.start_date_active, TRUNC(qplines.pricing_effective_date)) and
31577 nvl(qpq.end_date_active,TRUNC(qplines.pricing_effective_date))
31578 AND qpq.qualifier_context = qplatq.context
31579 AND qpq.qualifier_attribute = qplatq.attribute
31580 AND qpq.comparison_operator_code = '=' --[julin/5007789]
31581 AND qplatq.value_from = qpq.qualifier_attr_value --bug#1761272 Multiple NOT =, [julin/5007789]
31582 AND qpq.active_flag = G_YES
31583 AND qpprod.pricing_phase_id = p_pricing_phase_id
31584 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
31585 AND qpprod.product_attribute_context = qplatpr.context
31586 AND qpprod.product_attribute = qplatpr.attribute
31587 AND qpprod.product_attr_value = qplatpr.value_from
31588 AND qpprod.excluder_flag = G_NO
31589 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
31590 AND qplatq.line_index = qplines.line_index
31591 AND qplatpr.line_index = qplines.line_index --[julin/5007789]
31592 AND qplatpr.line_index = qplatq.line_index
31593 AND qph.source_system_code = qprs.source_system_code
31594 AND qplines.request_type_code = qprs.request_type_code
31595 AND qplatq.attribute_type = 'QUALIFIER'
31596 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
31597 AND qplatpr.attribute_type='PRODUCT'
31598 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
31599 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
31600 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
31601 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
31602 UNION ALL
31603 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPL)
31604 INDEX(QPLATQ QP_PREQ_LINE_ATTRS_TMP_N1)
31605 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
31606 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
31607 INDEX(QPQ QP_QUALIFIERS_N5)
31608 INDEX(QPL QP_LIST_LINES_PK)
31609 l_prod_qual_cur_pl */
31610 qpl.list_header_id,
31611 qpl.list_line_id,
31612 qpl.list_line_type_code,
31613 qplatpr.line_index,
31614 qplatpr.applied_flag,
31615 qplatpr.attribute_level product_attribute_level,
31616 qplatpr.attribute_type product_attribute_type,
31617 qplatpr.context product_attribute_context,
31618 qplatpr.attribute product_attribute,
31619 qplatpr.value_from product_attr_value,
31620 qpprod.product_uom_code product_uom_code,
31621 qpprod.excluder_flag,
31622 qplatq.context qualifier_attribute_context,
31623 qplatq.attribute qualifier_attribute,
31624 qplatq.value_from qualifier_attribute_value,
31625 qpq.qualifier_grouping_no qualifier_grouping_no,
31626 qpq.qualifier_precedence qualifier_precedence,
31627 qpq.qualifier_datatype,
31628 qpq.qualifier_attr_value setup_value_from,
31629 qpq.qualifier_attr_value_to setup_value_to,
31630 qpl.automatic_flag,
31631 qpl.modifier_level_code,
31632 qpl.primary_uom_flag,
31633 qpl.arithmetic_operator operand_calculation_code,
31634 qpl.operand operand_value,
31635 qpl.pricing_group_sequence,
31636 qph.list_type_code created_from_list_type,
31637 qph.rounding_factor,
31638 qpl.pricing_phase_id,
31639 qpl.price_break_type_code,
31640 qpl.incompatibility_grp_code,
31641 qpl.price_by_formula_id,
31642 qpl.product_precedence,
31643 qpl.list_line_no,
31644 'HQ' qualifier_type,
31645 qcdt.currency_detail_id,
31646 qcdt.currency_header_id,
31647 qcdt.selling_rounding_factor,
31648 qplines.currency_code order_currency,
31649 qplines.pricing_effective_date pricing_effective_date,
31650 qph.currency_code base_currency_code
31651 ,QPL.BREAK_UOM_CODE /* Proration */
31652 ,QPL.BREAK_UOM_CONTEXT /* Proration */
31653 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
31654 FROM --[julin/5007789]
31655 (SELECT /*+ dynamic_sampling(1) */ *
31656 FROM qp_npreq_lines_tmp
31657 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
31658 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
31659 qp_npreq_line_attrs_tmp qplatq,
31660 qp_qualifiers qpq,
31661 qp_list_headers_b qph,
31662 qp_price_req_sources_v qprs,
31663 qp_npreq_line_attrs_tmp qplatpr,
31664 qp_pricing_attributes qpprod,
31665 qp_list_lines qpl,
31666 qp_currency_details qcdt
31667 WHERE qph.list_header_id = qpl.list_header_id
31668 --added for moac -- commented references to security profile
31669 --security will be built into qp_list_headers_b
31670 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
31671 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
31672 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
31673 -- 3594459, context and attribute OR'd together
31674 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
31675 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
31676 AND qpq.list_header_id = qph.list_header_id
31677 AND (qplines.price_flag = G_YES OR
31678 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
31679 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
31680 AND qpq.list_line_id = -1
31681 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
31682 AND qpl.list_line_id = qpprod.list_line_id
31683 --AND qph.currency_code = qplines.currency_code
31684 AND qph.currency_header_id = qcdt.currency_header_id
31685 AND qplines.currency_code = qcdt.to_currency_code
31686 AND nvl(TRUNC(qplines.pricing_effective_date),trunc(sysdate)) between
31687 nvl(trunc(qcdt.start_date_active),TRUNC(qplines.pricing_effective_date)) and
31688 nvl(trunc(qcdt.end_date_active),TRUNC(qplines.pricing_effective_date))
31689 AND (
31690 (qcdt.curr_attribute_context is null
31691 and not exists
31692 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
31693 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
31694 where qcdt1.curr_attribute_context IS NOT NULL
31695 and qcdt1.curr_attribute_context = pa_tmp.context
31696 and qcdt1.curr_attribute = pa_tmp.attribute
31697 and qcdt1.curr_attribute_value = pa_tmp.value_from
31698 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
31699 and qcdt1.to_currency_code = qcdt.to_currency_code
31700 and qcdt1.currency_header_id = qcdt.currency_header_id
31701 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
31702 and pa_tmp.line_index = qplines.line_index
31703 and TRUNC(qplines.pricing_effective_date) between
31704 nvl(trunc(qcdt1.start_date_active),TRUNC(qplines.pricing_effective_date))
31705 and nvl(trunc(qcdt1.end_date_active),TRUNC(qplines.pricing_effective_date))))
31706 OR
31707 (qcdt.curr_attribute_context is not null
31708 and qcdt.precedence =
31709 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
31710 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
31711 where qcdt2.curr_attribute_context IS NOT NULL
31712 and qcdt2.curr_attribute_context = pa_tmp1.context
31713 and qcdt2.curr_attribute = pa_tmp1.attribute
31714 and qcdt2.curr_attribute_value = pa_tmp1.value_from
31715 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
31716 and qcdt2.to_currency_code = qcdt.to_currency_code
31717 and qcdt2.currency_header_id = qcdt.currency_header_id
31718 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
31719 and pa_tmp1.line_index = qplines.line_index
31720 and TRUNC(qplines.pricing_effective_date) between
31721 nvl(trunc(qcdt2.start_date_active),TRUNC(qplines.pricing_effective_date))
31722 and nvl(trunc(qcdt2.end_date_active),TRUNC(qplines.pricing_effective_date))
31723 )))
31724 AND qpl.modifier_level_code = qplines.line_type_code
31725 AND qph.active_flag = G_YES
31726 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31727 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
31728 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
31729 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31730 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
31731 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
31732 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31733 nvl(qpq.start_date_active, TRUNC(qplines.pricing_effective_date)) and
31734 nvl(qpq.end_date_active,TRUNC(qplines.pricing_effective_date))
31735 AND qpq.qualifier_context = qplatq.context
31736 AND qpq.qualifier_attribute = qplatq.attribute
31737 AND qpq.comparison_operator_code = 'NOT =' --[julin/5007789]
31738 AND qpq.active_flag = G_YES
31739 AND qplatq.value_from <> qpq.qualifier_attr_value --[julin/5007789]
31740 AND qpprod.pricing_phase_id = p_pricing_phase_id
31741 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
31742 AND qpprod.product_attribute_context = qplatpr.context
31743 AND qpprod.product_attribute = qplatpr.attribute
31744 AND qpprod.product_attr_value = qplatpr.value_from
31745 AND qpprod.excluder_flag = G_NO
31746 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
31747 AND qplatq.line_index = qplines.line_index
31748 AND qplatpr.line_index = qplines.line_index --[julin/5007789]
31749 AND qplatpr.line_index = qplatq.line_index
31750 AND qph.source_system_code = qprs.source_system_code
31751 AND qplines.request_type_code = qprs.request_type_code
31752 AND qplatq.attribute_type = 'QUALIFIER'
31753 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
31754 AND qplatpr.attribute_type='PRODUCT'
31755 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
31756 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
31757 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
31758 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
31759 UNION ALL
31760 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPL)
31761 INDEX(QPLATQ QP_PREQ_LINE_ATTRS_TMP_N1)
31762 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
31763 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
31764 INDEX(QPQ QP_QUALIFIERS_N6)
31765 INDEX(QPL QP_LIST_LINES_PK)
31766 l_prod_qual_cur_pl */
31767 qpl.list_header_id,
31768 qpl.list_line_id,
31769 qpl.list_line_type_code,
31770 qplatpr.line_index,
31771 qplatpr.applied_flag,
31772 qplatpr.attribute_level product_attribute_level,
31773 qplatpr.attribute_type product_attribute_type,
31774 qplatpr.context product_attribute_context,
31775 qplatpr.attribute product_attribute,
31776 qplatpr.value_from product_attr_value,
31777 qpprod.product_uom_code product_uom_code,
31778 qpprod.excluder_flag,
31779 qplatq.context qualifier_attribute_context,
31780 qplatq.attribute qualifier_attribute,
31781 qplatq.value_from qualifier_attribute_value,
31782 qpq.qualifier_grouping_no qualifier_grouping_no,
31783 qpq.qualifier_precedence qualifier_precedence,
31784 qpq.qualifier_datatype,
31785 qpq.qualifier_attr_value setup_value_from,
31786 qpq.qualifier_attr_value_to setup_value_to,
31787 qpl.automatic_flag,
31788 qpl.modifier_level_code,
31789 qpl.primary_uom_flag,
31790 qpl.arithmetic_operator operand_calculation_code,
31791 qpl.operand operand_value,
31792 qpl.pricing_group_sequence,
31793 qph.list_type_code created_from_list_type,
31794 qph.rounding_factor,
31795 qpl.pricing_phase_id,
31796 qpl.price_break_type_code,
31797 qpl.incompatibility_grp_code,
31798 qpl.price_by_formula_id,
31799 qpl.product_precedence,
31800 qpl.list_line_no,
31801 'HQ' qualifier_type,
31802 qcdt.currency_detail_id,
31803 qcdt.currency_header_id,
31804 qcdt.selling_rounding_factor,
31805 qplines.currency_code order_currency,
31806 qplines.pricing_effective_date pricing_effective_date,
31807 qph.currency_code base_currency_code
31808 ,QPL.BREAK_UOM_CODE /* Proration */
31809 ,QPL.BREAK_UOM_CONTEXT /* Proration */
31810 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
31811 FROM --[julin/5007789]
31812 (SELECT /*+ dynamic_sampling(1) */ *
31813 FROM qp_npreq_lines_tmp
31814 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
31815 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
31816 qp_npreq_line_attrs_tmp qplatq,
31817 qp_qualifiers qpq,
31818 qp_list_headers_b qph,
31819 qp_price_req_sources_v qprs,
31820 qp_npreq_line_attrs_tmp qplatpr,
31821 qp_pricing_attributes qpprod,
31822 qp_list_lines qpl,
31823 qp_currency_details qcdt
31824 WHERE qph.list_header_id = qpl.list_header_id
31825 --added for moac -- commented references to security profile
31826 --security will be built into qp_list_headers_b
31827 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
31828 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
31829 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
31830 -- 3594459, context and attribute OR'd together
31831 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
31832 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
31833 AND qpq.list_header_id = qph.list_header_id
31834 AND (qplines.price_flag = G_YES OR
31835 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
31836 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
31837 AND qpq.list_line_id = -1
31838 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
31839 AND qpl.list_line_id = qpprod.list_line_id
31840 --AND qph.currency_code = qplines.currency_code
31841 AND qph.currency_header_id = qcdt.currency_header_id
31842 AND qplines.currency_code = qcdt.to_currency_code
31843 AND nvl(TRUNC(qplines.pricing_effective_date),trunc(sysdate)) between
31844 nvl(trunc(qcdt.start_date_active),TRUNC(qplines.pricing_effective_date)) and
31845 nvl(trunc(qcdt.end_date_active),TRUNC(qplines.pricing_effective_date))
31846 AND (
31847 (qcdt.curr_attribute_context is null
31848 and not exists
31849 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
31850 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
31851 where qcdt1.curr_attribute_context IS NOT NULL
31852 and qcdt1.curr_attribute_context = pa_tmp.context
31853 and qcdt1.curr_attribute = pa_tmp.attribute
31854 and qcdt1.curr_attribute_value = pa_tmp.value_from
31855 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
31856 and qcdt1.to_currency_code = qcdt.to_currency_code
31857 and qcdt1.currency_header_id = qcdt.currency_header_id
31858 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
31859 and pa_tmp.line_index = qplines.line_index
31860 and TRUNC(qplines.pricing_effective_date) between
31861 nvl(trunc(qcdt1.start_date_active),TRUNC(qplines.pricing_effective_date))
31862 and nvl(trunc(qcdt1.end_date_active),TRUNC(qplines.pricing_effective_date))))
31863 OR
31864 (qcdt.curr_attribute_context is not null
31865 and qcdt.precedence =
31866 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
31867 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
31868 where qcdt2.curr_attribute_context IS NOT NULL
31869 and qcdt2.curr_attribute_context = pa_tmp1.context
31870 and qcdt2.curr_attribute = pa_tmp1.attribute
31871 and qcdt2.curr_attribute_value = pa_tmp1.value_from
31872 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
31873 and qcdt2.to_currency_code = qcdt.to_currency_code
31874 and qcdt2.currency_header_id = qcdt.currency_header_id
31875 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
31876 and pa_tmp1.line_index = qplines.line_index
31877 and TRUNC(qplines.pricing_effective_date) between
31878 nvl(trunc(qcdt2.start_date_active),TRUNC(qplines.pricing_effective_date))
31879 and nvl(trunc(qcdt2.end_date_active),TRUNC(qplines.pricing_effective_date))
31880 )))
31881 AND qpl.modifier_level_code = qplines.line_type_code
31882 AND qph.active_flag = G_YES
31883 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31884 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
31885 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
31886 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31887 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
31888 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
31889 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
31890 nvl(qpq.start_date_active, TRUNC(qplines.pricing_effective_date)) and
31891 nvl(qpq.end_date_active,TRUNC(qplines.pricing_effective_date))
31892 AND qpq.qualifier_context = qplatq.context
31893 AND qpq.qualifier_attribute = qplatq.attribute
31894 AND qpq.comparison_operator_code = G_OPERATOR_BETWEEN --[julin/5007789]
31895 AND qpq.active_flag = G_YES
31896 and ((qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y) --[julin/5007789]
31897 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to)
31898 or
31899 (qpq.qualifier_datatype = G_NUMERIC
31900 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
31901 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number))
31902 AND qpprod.pricing_phase_id = p_pricing_phase_id
31903 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
31904 AND qpprod.product_attribute_context = qplatpr.context
31905 AND qpprod.product_attribute = qplatpr.attribute
31906 AND qpprod.product_attr_value = qplatpr.value_from
31907 AND qpprod.excluder_flag = G_NO
31908 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
31909 AND qplatq.line_index = qplines.line_index
31910 AND qplatpr.line_index = qplines.line_index --[julin/5007789]
31911 AND qplatpr.line_index = qplatq.line_index
31912 AND qph.source_system_code = qprs.source_system_code
31913 AND qplines.request_type_code = qprs.request_type_code
31914 AND qplatq.attribute_type = 'QUALIFIER'
31915 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
31916 AND qplatpr.attribute_type='PRODUCT'
31917 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
31918 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
31919 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
31920 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
31921 ORDER BY 4,2;
31922
31923 --Added INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5) for 3259932
31924 --[julin/4708044] added index(qplapr QP_PREQ_LINE_ATTRS_TMP_N1), use_nl(qprs)
31925 CURSOR l_prod_qual_pric_cur(p_pricing_phase_id NUMBER) IS
31926 --Product+Qualifiers+Pricing
31927 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPLATPC QPL)
31928 index(qplatpc QP_PREQ_LINE_ATTRS_TMP_N2)
31929 index(qplatq QP_PREQ_LINE_ATTRS_TMP_N1)
31930 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
31931 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
31932 INDEX(QPQ QP_QUALIFIERS_N4)
31933 l_prod_qual_pric_cur_pl */
31934 qpl.list_header_id,
31935 qpl.list_line_id,
31936 qpl.list_line_type_code,
31937 qplatpr.line_index,
31938 qplatpr.applied_flag,
31939 qplatpr.attribute_level product_attribute_level,
31940 qplatpr.attribute_type product_attribute_type,
31941 qplatpr.context product_attribute_context,
31942 qplatpr.attribute product_attribute,
31943 qplatpr.value_from product_attr_value,
31944 qpprod.product_uom_code product_uom_code,
31945 qpprod.excluder_flag,
31946 qplatq.context qualifier_attribute_context,
31947 qplatq.attribute qualifier_attribute,
31948 qplatq.value_from qualifier_attribute_value,
31949 qpq.qualifier_grouping_no qualifier_grouping_no,
31950 qpq.qualifier_precedence qualifier_precedence,
31951 qpq.qualifier_datatype,
31952 qpq.qualifier_attr_value setup_value_from,
31953 qpq.qualifier_attr_value_to setup_value_to,
31954 qpl.automatic_flag,
31955 qpl.modifier_level_code,
31956 qpl.primary_uom_flag,
31957 qpl.arithmetic_operator operand_calculation_code,
31958 qpl.operand operand_value,
31959 qpl.pricing_group_sequence,
31960 qph.list_type_code created_from_list_type,
31961 qph.rounding_factor,
31962 qpl.pricing_phase_id,
31963 qpl.price_break_type_code,
31964 qpl.incompatibility_grp_code,
31965 qpl.price_by_formula_id,
31966 qpl.product_precedence,
31967 qpl.list_line_no,
31968 'HQ' QUALIFIER_TYPE,
31969 qplatpc.attribute_level pricing_attribute_level,
31970 qplatpc.attribute_type pricing_attribute_type,
31971 qplatpc.context pricing_attribute_context,
31972 qplatpc.attribute pricing_attribute,
31973 qplatpc.value_from pricing_attr_value,
31974 qpprod.pricing_attr_value_from pricing_setup_value_from,
31975 qpprod.pricing_attr_value_to pricing_setup_value_to,
31976 qpprod.comparison_operator_code pricing_comparison_operator,
31977 qpprod.pricing_attribute_datatype pricing_datatype
31978 ,QPL.BREAK_UOM_CODE /* Proration */
31979 ,QPL.BREAK_UOM_CONTEXT /* Proration */
31980 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
31981 FROM --[julin/5007789]
31982 (SELECT /*+ dynamic_sampling(1) */ *
31983 FROM qp_npreq_lines_tmp
31984 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
31985 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
31986 qp_npreq_line_attrs_tmp qplatq,
31987 qp_qualifiers qpq ,
31988 qp_list_headers_b qph,
31989 qp_price_req_sources_v qprs,
31990 qp_npreq_line_attrs_tmp qplatpr,
31991 qp_pricing_attributes qpprod ,
31992 qp_npreq_line_attrs_tmp qplatpc,
31993 qp_list_lines qpl
31994 WHERE qph.list_header_id = qpq.list_header_id
31995 -- 3594459, context and attribute OR'd together
31996 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
31997 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
31998 AND (qplines.price_flag = G_YES OR
31999 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
32000 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
32001 AND qph.list_header_id = qpl.list_header_id
32002 --added for moac -- commented references to security profile
32003 --security will be built into qp_list_headers_b
32004 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
32005 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
32006 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
32007 AND qpq.list_line_id = -1
32008 AND qpl.list_line_id = qpprod.list_line_id
32009 AND qph.currency_code = qplines.currency_code
32010 AND qpl.modifier_level_code = qplines.line_type_code
32011 AND qph.active_flag = G_YES
32012 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32013 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
32014 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
32015 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32016 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
32017 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
32018 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32019 nvl(qpq.start_date_active, TRUNC(qplines.pricing_effective_date)) and
32020 nvl(qpq.end_date_active,TRUNC(qplines.pricing_effective_date))
32021 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
32022 AND qpq.qualifier_context = qplatq.context
32023 AND qpq.qualifier_attribute = qplatq.attribute
32024 AND qpq.comparison_operator_code = '=' --[julin/5007789]
32025 AND qplatq.value_from = qpq.qualifier_attr_value --bug#1761272 Multiple NOT =, [julin/5007789]
32026 AND qpq.active_flag = G_YES
32027 AND qpprod.pricing_phase_id = p_pricing_phase_id
32028 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
32029 AND qpprod.product_attribute_context = qplatpr.context
32030 AND qpprod.product_attribute = qplatpr.attribute
32031 AND qpprod.product_attr_value = qplatpr.value_from
32032 AND qpprod.excluder_flag = G_NO
32033 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
32034 AND qpprod.pricing_attribute_context = qplatpc.context
32035 AND qpprod.pricing_attribute = qplatpc.attribute
32036 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
32037 or qpprod.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN)) -- 8463623
32038 AND qplatq.line_index = qplatpc.line_index
32039 AND qplatq.line_index = qplines.line_index
32040 AND qplatpc.line_index = qplatpr.line_index
32041 AND qph.source_system_code = qprs.source_system_code
32042 AND qplines.request_type_code = qprs.request_type_code
32043 AND qplatpr.line_index = qplines.line_index --[julin/4708044]
32044 AND qplatpr.attribute_type='PRODUCT'
32045 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
32046 AND qplatpc.attribute_type = 'PRICING'
32047 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED
32048 AND qplatq.attribute_type = 'QUALIFIER'
32049 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
32050 --AND qplatq.pricing_attr_flag = G_YES --[julin/4708044] wrong table, currently not reliable value, not used in index
32051 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
32052 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
32053 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
32054 UNION ALL
32055 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPLATPC QPL)
32056 index(qplatpc QP_PREQ_LINE_ATTRS_TMP_N2)
32057 index(qplatq QP_PREQ_LINE_ATTRS_TMP_N1)
32058 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
32059 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
32060 INDEX(QPQ QP_QUALIFIERS_N5)
32061 l_prod_qual_pric_cur_pl */
32062 qpl.list_header_id,
32063 qpl.list_line_id,
32064 qpl.list_line_type_code,
32065 qplatpr.line_index,
32066 qplatpr.applied_flag,
32067 qplatpr.attribute_level product_attribute_level,
32068 qplatpr.attribute_type product_attribute_type,
32069 qplatpr.context product_attribute_context,
32070 qplatpr.attribute product_attribute,
32071 qplatpr.value_from product_attr_value,
32072 qpprod.product_uom_code product_uom_code,
32073 qpprod.excluder_flag,
32074 qplatq.context qualifier_attribute_context,
32075 qplatq.attribute qualifier_attribute,
32076 qplatq.value_from qualifier_attribute_value,
32077 qpq.qualifier_grouping_no qualifier_grouping_no,
32078 qpq.qualifier_precedence qualifier_precedence,
32079 qpq.qualifier_datatype,
32080 qpq.qualifier_attr_value setup_value_from,
32081 qpq.qualifier_attr_value_to setup_value_to,
32082 qpl.automatic_flag,
32083 qpl.modifier_level_code,
32084 qpl.primary_uom_flag,
32085 qpl.arithmetic_operator operand_calculation_code,
32086 qpl.operand operand_value,
32087 qpl.pricing_group_sequence,
32088 qph.list_type_code created_from_list_type,
32089 qph.rounding_factor,
32090 qpl.pricing_phase_id,
32091 qpl.price_break_type_code,
32092 qpl.incompatibility_grp_code,
32093 qpl.price_by_formula_id,
32094 qpl.product_precedence,
32095 qpl.list_line_no,
32096 'HQ' QUALIFIER_TYPE,
32097 qplatpc.attribute_level pricing_attribute_level,
32098 qplatpc.attribute_type pricing_attribute_type,
32099 qplatpc.context pricing_attribute_context,
32100 qplatpc.attribute pricing_attribute,
32101 qplatpc.value_from pricing_attr_value,
32102 qpprod.pricing_attr_value_from pricing_setup_value_from,
32103 qpprod.pricing_attr_value_to pricing_setup_value_to,
32104 qpprod.comparison_operator_code pricing_comparison_operator,
32105 qpprod.pricing_attribute_datatype pricing_datatype
32106 ,QPL.BREAK_UOM_CODE /* Proration */
32107 ,QPL.BREAK_UOM_CONTEXT /* Proration */
32108 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
32109 FROM --[julin/5007789]
32110 (SELECT /*+ dynamic_sampling(1) */ *
32111 FROM qp_npreq_lines_tmp
32112 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
32113 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
32114 qp_npreq_line_attrs_tmp qplatq,
32115 qp_qualifiers qpq ,
32116 qp_list_headers_b qph,
32117 qp_price_req_sources_v qprs,
32118 qp_npreq_line_attrs_tmp qplatpr,
32119 qp_pricing_attributes qpprod ,
32120 qp_npreq_line_attrs_tmp qplatpc,
32121 qp_list_lines qpl
32122 WHERE qph.list_header_id = qpq.list_header_id
32123 -- 3594459, context and attribute OR'd together
32124 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
32125 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
32126 AND (qplines.price_flag = G_YES OR
32127 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
32128 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
32129 AND qph.list_header_id = qpl.list_header_id
32130 --added for moac -- commented references to security profile
32131 --security will be built into qp_list_headers_b
32132 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
32133 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
32134 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
32135 AND qpq.list_line_id = -1
32136 AND qpl.list_line_id = qpprod.list_line_id
32137 AND qph.currency_code = qplines.currency_code
32138 AND qpl.modifier_level_code = qplines.line_type_code
32139 AND qph.active_flag = G_YES
32140 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32141 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
32142 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
32143 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32144 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
32145 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
32146 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32147 nvl(qpq.start_date_active, TRUNC(qplines.pricing_effective_date)) and
32148 nvl(qpq.end_date_active,TRUNC(qplines.pricing_effective_date))
32149 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
32150 AND qpq.qualifier_context = qplatq.context
32151 AND qpq.qualifier_attribute = qplatq.attribute
32152 AND qpq.comparison_operator_code = 'NOT =' --[julin/5007789]
32153 AND qpq.active_flag = G_YES
32154 AND qplatq.value_from <> qpq.qualifier_attr_value --[julin/5007789]
32155 AND qpprod.pricing_phase_id = p_pricing_phase_id
32156 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
32157 AND qpprod.product_attribute_context = qplatpr.context
32158 AND qpprod.product_attribute = qplatpr.attribute
32159 AND qpprod.product_attr_value = qplatpr.value_from
32160 AND qpprod.excluder_flag = G_NO
32161 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
32162 AND qpprod.pricing_attribute_context = qplatpc.context
32163 AND qpprod.pricing_attribute = qplatpc.attribute
32164 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
32165 or qpprod.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN)) -- 8463623
32166 AND qplatq.line_index = qplatpc.line_index
32167 AND qplatq.line_index = qplines.line_index
32168 AND qplatpc.line_index = qplatpr.line_index
32169 AND qph.source_system_code = qprs.source_system_code
32170 AND qplines.request_type_code = qprs.request_type_code
32171 AND qplatpr.line_index = qplines.line_index --[julin/4708044]
32172 AND qplatpr.attribute_type='PRODUCT'
32173 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
32174 AND qplatpc.attribute_type = 'PRICING'
32175 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED
32176 AND qplatq.attribute_type = 'QUALIFIER'
32177 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
32178 --AND qplatq.pricing_attr_flag = G_YES --[julin/4708044] wrong table, currently not reliable value, not used in index
32179 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
32180 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
32181 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
32182 UNION ALL
32183 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPLATPC QPL)
32184 index(qplatpc QP_PREQ_LINE_ATTRS_TMP_N2)
32185 index(qplatq QP_PREQ_LINE_ATTRS_TMP_N1)
32186 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
32187 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
32188 INDEX(QPQ QP_QUALIFIERS_N6)
32189 l_prod_qual_pric_cur_pl */
32190 qpl.list_header_id,
32191 qpl.list_line_id,
32192 qpl.list_line_type_code,
32193 qplatpr.line_index,
32194 qplatpr.applied_flag,
32195 qplatpr.attribute_level product_attribute_level,
32196 qplatpr.attribute_type product_attribute_type,
32197 qplatpr.context product_attribute_context,
32198 qplatpr.attribute product_attribute,
32199 qplatpr.value_from product_attr_value,
32200 qpprod.product_uom_code product_uom_code,
32201 qpprod.excluder_flag,
32202 qplatq.context qualifier_attribute_context,
32203 qplatq.attribute qualifier_attribute,
32204 qplatq.value_from qualifier_attribute_value,
32205 qpq.qualifier_grouping_no qualifier_grouping_no,
32206 qpq.qualifier_precedence qualifier_precedence,
32207 qpq.qualifier_datatype,
32208 qpq.qualifier_attr_value setup_value_from,
32209 qpq.qualifier_attr_value_to setup_value_to,
32210 qpl.automatic_flag,
32211 qpl.modifier_level_code,
32212 qpl.primary_uom_flag,
32213 qpl.arithmetic_operator operand_calculation_code,
32214 qpl.operand operand_value,
32215 qpl.pricing_group_sequence,
32216 qph.list_type_code created_from_list_type,
32217 qph.rounding_factor,
32218 qpl.pricing_phase_id,
32219 qpl.price_break_type_code,
32220 qpl.incompatibility_grp_code,
32221 qpl.price_by_formula_id,
32222 qpl.product_precedence,
32223 qpl.list_line_no,
32224 'HQ' QUALIFIER_TYPE,
32225 qplatpc.attribute_level pricing_attribute_level,
32226 qplatpc.attribute_type pricing_attribute_type,
32227 qplatpc.context pricing_attribute_context,
32228 qplatpc.attribute pricing_attribute,
32229 qplatpc.value_from pricing_attr_value,
32230 qpprod.pricing_attr_value_from pricing_setup_value_from,
32231 qpprod.pricing_attr_value_to pricing_setup_value_to,
32232 qpprod.comparison_operator_code pricing_comparison_operator,
32233 qpprod.pricing_attribute_datatype pricing_datatype
32234 ,QPL.BREAK_UOM_CODE /* Proration */
32235 ,QPL.BREAK_UOM_CONTEXT /* Proration */
32236 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
32237 FROM --[julin/5007789]
32238 (SELECT /*+ dynamic_sampling(1) */ *
32239 FROM qp_npreq_lines_tmp
32240 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
32241 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
32242 qp_npreq_line_attrs_tmp qplatq,
32243 qp_qualifiers qpq ,
32244 qp_list_headers_b qph,
32245 qp_price_req_sources_v qprs,
32246 qp_npreq_line_attrs_tmp qplatpr,
32247 qp_pricing_attributes qpprod ,
32248 qp_npreq_line_attrs_tmp qplatpc,
32249 qp_list_lines qpl
32250 WHERE qph.list_header_id = qpq.list_header_id
32251 -- 3594459, context and attribute OR'd together
32252 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
32253 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
32254 AND (qplines.price_flag = G_YES OR
32255 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
32256 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
32257 AND qph.list_header_id = qpl.list_header_id
32258 --added for moac -- commented references to security profile
32259 --security will be built into qp_list_headers_b
32260 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
32261 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
32262 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
32263 AND qpq.list_line_id = -1
32264 AND qpl.list_line_id = qpprod.list_line_id
32265 AND qph.currency_code = qplines.currency_code
32266 AND qpl.modifier_level_code = qplines.line_type_code
32267 AND qph.active_flag = G_YES
32268 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32269 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
32270 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
32271 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32272 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
32273 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
32274 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32275 nvl(qpq.start_date_active, TRUNC(qplines.pricing_effective_date)) and
32276 nvl(qpq.end_date_active,TRUNC(qplines.pricing_effective_date))
32277 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
32278 AND qpq.qualifier_context = qplatq.context
32279 AND qpq.qualifier_attribute = qplatq.attribute
32280 AND qpq.comparison_operator_code = G_OPERATOR_BETWEEN --[julin/5007789]
32281 AND qpq.active_flag = G_YES
32282 and ((qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y) --[julin/5007789]
32283 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to)
32284 or
32285 (qpq.qualifier_datatype = G_NUMERIC
32286 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
32287 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number))
32288 AND qpprod.pricing_phase_id = p_pricing_phase_id
32289 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
32290 AND qpprod.product_attribute_context = qplatpr.context
32291 AND qpprod.product_attribute = qplatpr.attribute
32292 AND qpprod.product_attr_value = qplatpr.value_from
32293 AND qpprod.excluder_flag = G_NO
32294 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
32295 AND qpprod.pricing_attribute_context = qplatpc.context
32296 AND qpprod.pricing_attribute = qplatpc.attribute
32297 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
32298 or qpprod.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN)) -- 8463623
32299 AND qplatq.line_index = qplatpc.line_index
32300 AND qplatq.line_index = qplines.line_index
32301 AND qplatpc.line_index = qplatpr.line_index
32302 AND qph.source_system_code = qprs.source_system_code
32303 AND qplines.request_type_code = qprs.request_type_code
32304 AND qplatpr.line_index = qplines.line_index --[julin/4708044]
32305 AND qplatpr.attribute_type='PRODUCT'
32306 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
32307 AND qplatpc.attribute_type = 'PRICING'
32308 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED
32309 AND qplatq.attribute_type = 'QUALIFIER'
32310 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
32311 --AND qplatq.pricing_attr_flag = G_YES --[julin/4708044] wrong table, currently not reliable value, not used in index
32312 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
32313 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
32314 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
32315 ORDER BY 4,2;
32316
32317 --Added INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5) for 3259932
32318 --[julin/4708044] added index(qplapr QP_PREQ_LINE_ATTRS_TMP_N1), use_nl(qprs)
32319 --[julin/5007789]
32320 -- 1. Performing line filter first.
32321 -- 2. Performing qualifier filter before product filter
32322 -- 3. Split into unions ('=', 'BETWEEN', 'NOT =') for better use of indexes
32323 CURSOR l_prod_qual_pric_cur_currency(p_pricing_phase_id NUMBER) IS
32324 --Product+Qualifiers+Pricing
32325 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPLATPC QPL)
32326 index(qplatpc QP_PREQ_LINE_ATTRS_TMP_N2)
32327 index(qplatq QP_PREQ_LINE_ATTRS_TMP_N1)
32328 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
32329 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
32330 INDEX(QPQ QP_QUALIFIERS_N4)
32331 l_prod_qual_pric_cur_pl */
32332 qpl.list_header_id,
32333 qpl.list_line_id,
32334 qpl.list_line_type_code,
32335 qplatpr.line_index,
32336 qplatpr.applied_flag,
32337 qplatpr.attribute_level product_attribute_level,
32338 qplatpr.attribute_type product_attribute_type,
32339 qplatpr.context product_attribute_context,
32340 qplatpr.attribute product_attribute,
32341 qplatpr.value_from product_attr_value,
32342 qpprod.product_uom_code product_uom_code,
32343 qpprod.excluder_flag,
32344 qplatq.context qualifier_attribute_context,
32345 qplatq.attribute qualifier_attribute,
32346 qplatq.value_from qualifier_attribute_value,
32347 qpq.qualifier_grouping_no qualifier_grouping_no,
32348 qpq.qualifier_precedence qualifier_precedence,
32349 qpq.qualifier_datatype,
32350 qpq.qualifier_attr_value setup_value_from,
32351 qpq.qualifier_attr_value_to setup_value_to,
32352 qpl.automatic_flag,
32353 qpl.modifier_level_code,
32354 qpl.primary_uom_flag,
32355 qpl.arithmetic_operator operand_calculation_code,
32356 qpl.operand operand_value,
32357 qpl.pricing_group_sequence,
32358 qph.list_type_code created_from_list_type,
32359 qph.rounding_factor,
32360 qpl.pricing_phase_id,
32361 qpl.price_break_type_code,
32362 qpl.incompatibility_grp_code,
32363 qpl.price_by_formula_id,
32364 qpl.product_precedence,
32365 qpl.list_line_no,
32366 'HQ' QUALIFIER_TYPE,
32367 qplatpc.attribute_level pricing_attribute_level,
32368 qplatpc.attribute_type pricing_attribute_type,
32369 qplatpc.context pricing_attribute_context,
32370 qplatpc.attribute pricing_attribute,
32371 qplatpc.value_from pricing_attr_value,
32372 qpprod.pricing_attr_value_from pricing_setup_value_from,
32373 qpprod.pricing_attr_value_to pricing_setup_value_to,
32374 qpprod.comparison_operator_code pricing_comparison_operator,
32375 qpprod.pricing_attribute_datatype pricing_datatype,
32376 qcdt.currency_detail_id,
32377 qcdt.currency_header_id,
32378 qcdt.selling_rounding_factor,
32379 qplines.currency_code order_currency,
32380 qplines.pricing_effective_date pricing_effective_date,
32381 qph.currency_code base_currency_code
32382 ,QPL.BREAK_UOM_CODE /* Proration */
32383 ,QPL.BREAK_UOM_CONTEXT /* Proration */
32384 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
32385 FROM --[julin/5007789]
32386 (SELECT /*+ dynamic_sampling(1) */ *
32387 FROM qp_npreq_lines_tmp
32388 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
32389 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
32390 qp_npreq_line_attrs_tmp qplatq,
32391 qp_qualifiers qpq ,
32392 qp_list_headers_b qph,
32393 qp_price_req_sources_v qprs,
32394 qp_npreq_line_attrs_tmp qplatpr,
32395 qp_pricing_attributes qpprod ,
32396 qp_npreq_line_attrs_tmp qplatpc,
32397 qp_list_lines qpl,
32398 qp_currency_details qcdt
32399 WHERE qph.list_header_id = qpq.list_header_id
32400 -- 3594459, context and attribute OR'd together
32401 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
32402 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
32403 --added for moac -- commented references to security profile
32404 --security will be built into qp_list_headers_b
32405 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
32406 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
32407 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
32408 AND (qplines.price_flag = G_YES OR
32409 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
32410 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
32411 AND qph.list_header_id = qpl.list_header_id
32412 AND qpq.list_line_id = -1
32413 AND qpl.list_line_id = qpprod.list_line_id
32414 --AND qph.currency_code = qplines.currency_code
32415 AND qph.currency_header_id = qcdt.currency_header_id
32416 AND qplines.currency_code = qcdt.to_currency_code
32417 AND TRUNC(qplines.pricing_effective_date) between
32418 nvl(trunc(qcdt.start_date_active),TRUNC(qplines.pricing_effective_date))
32419 and nvl(trunc(qcdt.end_date_active),TRUNC(qplines.pricing_effective_date))
32420 AND (
32421 (qcdt.curr_attribute_context is null
32422 and not exists
32423 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
32424 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
32425 where qcdt1.curr_attribute_context IS NOT NULL
32426 and qcdt1.curr_attribute_context = pa_tmp.context
32427 and qcdt1.curr_attribute = pa_tmp.attribute
32428 and qcdt1.curr_attribute_value = pa_tmp.value_from
32429 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
32430 and qcdt1.to_currency_code = qcdt.to_currency_code
32431 and qcdt1.currency_header_id = qcdt.currency_header_id
32432 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
32433 and pa_tmp.line_index = qplines.line_index
32434 and TRUNC(qplines.pricing_effective_date) between
32435 nvl(trunc(qcdt1.start_date_active),TRUNC(qplines.pricing_effective_date))
32436 and nvl(trunc(qcdt1.end_date_active),TRUNC(qplines.pricing_effective_date))))
32437 OR
32438 (qcdt.curr_attribute_context is not null
32439 and qcdt.precedence =
32440 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
32441 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
32442 where qcdt2.curr_attribute_context IS NOT NULL
32443 and qcdt2.curr_attribute_context = pa_tmp1.context
32444 and qcdt2.curr_attribute = pa_tmp1.attribute
32445 and qcdt2.curr_attribute_value = pa_tmp1.value_from
32446 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
32447 and qcdt2.to_currency_code = qcdt.to_currency_code
32448 and qcdt2.currency_header_id = qcdt.currency_header_id
32449 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
32450 and pa_tmp1.line_index = qplines.line_index
32451 and TRUNC(qplines.pricing_effective_date) between
32452 nvl(trunc(qcdt2.start_date_active),TRUNC(qplines.pricing_effective_date))
32453 and nvl(trunc(qcdt2.end_date_active),TRUNC(qplines.pricing_effective_date))
32454 )))
32455 AND qpl.modifier_level_code = qplines.line_type_code
32456 AND qph.active_flag = G_YES
32457 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32458 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
32459 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
32460 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32461 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
32462 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
32463 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32464 nvl(qpq.start_date_active, TRUNC(qplines.pricing_effective_date)) and
32465 nvl(qpq.end_date_active,TRUNC(qplines.pricing_effective_date))
32466 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
32467 AND qpq.qualifier_context = qplatq.context
32468 AND qpq.qualifier_attribute = qplatq.attribute
32469 AND qpq.comparison_operator_code = '=' --[julin/5007789]
32470 AND qplatq.value_from = qpq.qualifier_attr_value --bug#1761272 Multiple NOT =, [julin/5007789]
32471 AND qpq.active_flag = G_YES
32472 AND qpprod.pricing_phase_id = p_pricing_phase_id
32473 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
32474 AND qpprod.product_attribute_context = qplatpr.context
32475 AND qpprod.product_attribute = qplatpr.attribute
32476 AND qpprod.product_attr_value = qplatpr.value_from
32477 AND qpprod.excluder_flag = G_NO
32478 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
32479 AND qpprod.pricing_attribute_context = qplatpc.context
32480 AND qpprod.pricing_attribute = qplatpc.attribute
32481 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
32482 or qpprod.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN)) -- 8463623
32483 AND qplatq.line_index = qplatpc.line_index
32484 AND qplatq.line_index = qplines.line_index
32485 AND qplatpc.line_index = qplatpr.line_index
32486 AND qph.source_system_code = qprs.source_system_code
32487 AND qplines.request_type_code = qprs.request_type_code
32488 AND qplatpr.line_index = qplines.line_index --[julin/4708044]
32489 AND qplatpr.attribute_type='PRODUCT'
32490 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
32491 AND qplatpc.attribute_type = 'PRICING'
32492 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED
32493 AND qplatq.attribute_type = 'QUALIFIER'
32494 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
32495 --AND qplatq.pricing_attr_flag = G_YES --[julin/4708044] wrong table, currently not reliable value, not used in index
32496 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
32497 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
32498 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
32499 UNION ALL
32500 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPLATPC QPL)
32501 index(qplatpc QP_PREQ_LINE_ATTRS_TMP_N2)
32502 index(qplatq QP_PREQ_LINE_ATTRS_TMP_N1)
32503 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
32504 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
32505 INDEX(QPQ QP_QUALIFIERS_N5)
32506 l_prod_qual_pric_cur_pl */
32507 qpl.list_header_id,
32508 qpl.list_line_id,
32509 qpl.list_line_type_code,
32510 qplatpr.line_index,
32511 qplatpr.applied_flag,
32512 qplatpr.attribute_level product_attribute_level,
32513 qplatpr.attribute_type product_attribute_type,
32514 qplatpr.context product_attribute_context,
32515 qplatpr.attribute product_attribute,
32516 qplatpr.value_from product_attr_value,
32517 qpprod.product_uom_code product_uom_code,
32518 qpprod.excluder_flag,
32519 qplatq.context qualifier_attribute_context,
32520 qplatq.attribute qualifier_attribute,
32521 qplatq.value_from qualifier_attribute_value,
32522 qpq.qualifier_grouping_no qualifier_grouping_no,
32523 qpq.qualifier_precedence qualifier_precedence,
32524 qpq.qualifier_datatype,
32525 qpq.qualifier_attr_value setup_value_from,
32526 qpq.qualifier_attr_value_to setup_value_to,
32527 qpl.automatic_flag,
32528 qpl.modifier_level_code,
32529 qpl.primary_uom_flag,
32530 qpl.arithmetic_operator operand_calculation_code,
32531 qpl.operand operand_value,
32532 qpl.pricing_group_sequence,
32533 qph.list_type_code created_from_list_type,
32534 qph.rounding_factor,
32535 qpl.pricing_phase_id,
32536 qpl.price_break_type_code,
32537 qpl.incompatibility_grp_code,
32538 qpl.price_by_formula_id,
32539 qpl.product_precedence,
32540 qpl.list_line_no,
32541 'HQ' QUALIFIER_TYPE,
32542 qplatpc.attribute_level pricing_attribute_level,
32543 qplatpc.attribute_type pricing_attribute_type,
32544 qplatpc.context pricing_attribute_context,
32545 qplatpc.attribute pricing_attribute,
32546 qplatpc.value_from pricing_attr_value,
32547 qpprod.pricing_attr_value_from pricing_setup_value_from,
32548 qpprod.pricing_attr_value_to pricing_setup_value_to,
32549 qpprod.comparison_operator_code pricing_comparison_operator,
32550 qpprod.pricing_attribute_datatype pricing_datatype,
32551 qcdt.currency_detail_id,
32552 qcdt.currency_header_id,
32553 qcdt.selling_rounding_factor,
32554 qplines.currency_code order_currency,
32555 qplines.pricing_effective_date pricing_effective_date,
32556 qph.currency_code base_currency_code
32557 ,QPL.BREAK_UOM_CODE /* Proration */
32558 ,QPL.BREAK_UOM_CONTEXT /* Proration */
32559 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
32560 FROM --[julin/5007789]
32561 (SELECT /*+ dynamic_sampling(1) */ *
32562 FROM qp_npreq_lines_tmp
32563 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
32564 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
32565 qp_npreq_line_attrs_tmp qplatq,
32566 qp_qualifiers qpq ,
32567 qp_list_headers_b qph,
32568 qp_price_req_sources_v qprs,
32569 qp_npreq_line_attrs_tmp qplatpr,
32570 qp_pricing_attributes qpprod ,
32571 qp_npreq_line_attrs_tmp qplatpc,
32572 qp_list_lines qpl,
32573 qp_currency_details qcdt
32574 WHERE qph.list_header_id = qpq.list_header_id
32575 -- 3594459, context and attribute OR'd together
32576 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
32577 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
32578 --added for moac -- commented references to security profile
32579 --security will be built into qp_list_headers_b
32580 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
32581 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
32582 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
32583 AND (qplines.price_flag = G_YES OR
32584 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
32585 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
32586 AND qph.list_header_id = qpl.list_header_id
32587 AND qpq.list_line_id = -1
32588 AND qpl.list_line_id = qpprod.list_line_id
32589 --AND qph.currency_code = qplines.currency_code
32590 AND qph.currency_header_id = qcdt.currency_header_id
32591 AND qplines.currency_code = qcdt.to_currency_code
32592 AND TRUNC(qplines.pricing_effective_date) between
32593 nvl(trunc(qcdt.start_date_active),TRUNC(qplines.pricing_effective_date))
32594 and nvl(trunc(qcdt.end_date_active),TRUNC(qplines.pricing_effective_date))
32595 AND (
32596 (qcdt.curr_attribute_context is null
32597 and not exists
32598 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
32599 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
32600 where qcdt1.curr_attribute_context IS NOT NULL
32601 and qcdt1.curr_attribute_context = pa_tmp.context
32602 and qcdt1.curr_attribute = pa_tmp.attribute
32603 and qcdt1.curr_attribute_value = pa_tmp.value_from
32604 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
32605 and qcdt1.to_currency_code = qcdt.to_currency_code
32606 and qcdt1.currency_header_id = qcdt.currency_header_id
32607 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
32608 and pa_tmp.line_index = qplines.line_index
32609 and TRUNC(qplines.pricing_effective_date) between
32610 nvl(trunc(qcdt1.start_date_active),TRUNC(qplines.pricing_effective_date))
32611 and nvl(trunc(qcdt1.end_date_active),TRUNC(qplines.pricing_effective_date))))
32612 OR
32613 (qcdt.curr_attribute_context is not null
32614 and qcdt.precedence =
32615 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
32616 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
32617 where qcdt2.curr_attribute_context IS NOT NULL
32618 and qcdt2.curr_attribute_context = pa_tmp1.context
32619 and qcdt2.curr_attribute = pa_tmp1.attribute
32620 and qcdt2.curr_attribute_value = pa_tmp1.value_from
32621 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
32622 and qcdt2.to_currency_code = qcdt.to_currency_code
32623 and qcdt2.currency_header_id = qcdt.currency_header_id
32624 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
32625 and pa_tmp1.line_index = qplines.line_index
32626 and TRUNC(qplines.pricing_effective_date) between
32627 nvl(trunc(qcdt2.start_date_active),TRUNC(qplines.pricing_effective_date))
32628 and nvl(trunc(qcdt2.end_date_active),TRUNC(qplines.pricing_effective_date))
32629 )))
32630 AND qpl.modifier_level_code = qplines.line_type_code
32631 AND qph.active_flag = G_YES
32632 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32633 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
32634 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
32635 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32636 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
32637 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
32638 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32639 nvl(qpq.start_date_active, TRUNC(qplines.pricing_effective_date)) and
32640 nvl(qpq.end_date_active,TRUNC(qplines.pricing_effective_date))
32641 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
32642 AND qpq.qualifier_context = qplatq.context
32643 AND qpq.qualifier_attribute = qplatq.attribute
32644 AND qpq.comparison_operator_code = 'NOT =' --[julin/5007789]
32645 AND qpq.active_flag = G_YES
32646 AND qplatq.value_from <> qpq.qualifier_attr_value --[julin/5007789]
32647 AND qpprod.pricing_phase_id = p_pricing_phase_id
32648 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
32649 AND qpprod.product_attribute_context = qplatpr.context
32650 AND qpprod.product_attribute = qplatpr.attribute
32651 AND qpprod.product_attr_value = qplatpr.value_from
32652 AND qpprod.excluder_flag = G_NO
32653 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
32654 AND qpprod.pricing_attribute_context = qplatpc.context
32655 AND qpprod.pricing_attribute = qplatpc.attribute
32656 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
32657 or qpprod.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN)) -- 8463623
32658 AND qplatq.line_index = qplatpc.line_index
32659 AND qplatq.line_index = qplines.line_index
32660 AND qplatpc.line_index = qplatpr.line_index
32661 AND qph.source_system_code = qprs.source_system_code
32662 AND qplines.request_type_code = qprs.request_type_code
32663 AND qplatpr.line_index = qplines.line_index --[julin/4708044]
32664 AND qplatpr.attribute_type='PRODUCT'
32665 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
32666 AND qplatpc.attribute_type = 'PRICING'
32667 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED
32668 AND qplatq.attribute_type = 'QUALIFIER'
32669 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
32670 --AND qplatq.pricing_attr_flag = G_YES --[julin/4708044] wrong table, currently not reliable value, not used in index
32671 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
32672 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
32673 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
32674 UNION ALL
32675 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPLATPC QPL)
32676 index(qplatpc QP_PREQ_LINE_ATTRS_TMP_N2)
32677 index(qplatq QP_PREQ_LINE_ATTRS_TMP_N1)
32678 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
32679 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
32680 INDEX(QPQ QP_QUALIFIERS_N6)
32681 l_prod_qual_pric_cur_pl */
32682 qpl.list_header_id,
32683 qpl.list_line_id,
32684 qpl.list_line_type_code,
32685 qplatpr.line_index,
32686 qplatpr.applied_flag,
32687 qplatpr.attribute_level product_attribute_level,
32688 qplatpr.attribute_type product_attribute_type,
32689 qplatpr.context product_attribute_context,
32690 qplatpr.attribute product_attribute,
32691 qplatpr.value_from product_attr_value,
32692 qpprod.product_uom_code product_uom_code,
32693 qpprod.excluder_flag,
32694 qplatq.context qualifier_attribute_context,
32695 qplatq.attribute qualifier_attribute,
32696 qplatq.value_from qualifier_attribute_value,
32697 qpq.qualifier_grouping_no qualifier_grouping_no,
32698 qpq.qualifier_precedence qualifier_precedence,
32699 qpq.qualifier_datatype,
32700 qpq.qualifier_attr_value setup_value_from,
32701 qpq.qualifier_attr_value_to setup_value_to,
32702 qpl.automatic_flag,
32703 qpl.modifier_level_code,
32704 qpl.primary_uom_flag,
32705 qpl.arithmetic_operator operand_calculation_code,
32706 qpl.operand operand_value,
32707 qpl.pricing_group_sequence,
32708 qph.list_type_code created_from_list_type,
32709 qph.rounding_factor,
32710 qpl.pricing_phase_id,
32711 qpl.price_break_type_code,
32712 qpl.incompatibility_grp_code,
32713 qpl.price_by_formula_id,
32714 qpl.product_precedence,
32715 qpl.list_line_no,
32716 'HQ' QUALIFIER_TYPE,
32717 qplatpc.attribute_level pricing_attribute_level,
32718 qplatpc.attribute_type pricing_attribute_type,
32719 qplatpc.context pricing_attribute_context,
32720 qplatpc.attribute pricing_attribute,
32721 qplatpc.value_from pricing_attr_value,
32722 qpprod.pricing_attr_value_from pricing_setup_value_from,
32723 qpprod.pricing_attr_value_to pricing_setup_value_to,
32724 qpprod.comparison_operator_code pricing_comparison_operator,
32725 qpprod.pricing_attribute_datatype pricing_datatype,
32726 qcdt.currency_detail_id,
32727 qcdt.currency_header_id,
32728 qcdt.selling_rounding_factor,
32729 qplines.currency_code order_currency,
32730 qplines.pricing_effective_date pricing_effective_date,
32731 qph.currency_code base_currency_code
32732 ,QPL.BREAK_UOM_CODE /* Proration */
32733 ,QPL.BREAK_UOM_CONTEXT /* Proration */
32734 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
32735 FROM --[julin/5007789]
32736 (SELECT /*+ dynamic_sampling(1) */ *
32737 FROM qp_npreq_lines_tmp
32738 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
32739 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
32740 qp_npreq_line_attrs_tmp qplatq,
32741 qp_qualifiers qpq ,
32742 qp_list_headers_b qph,
32743 qp_price_req_sources_v qprs,
32744 qp_npreq_line_attrs_tmp qplatpr,
32745 qp_pricing_attributes qpprod ,
32746 qp_npreq_line_attrs_tmp qplatpc,
32747 qp_list_lines qpl,
32748 qp_currency_details qcdt
32749 WHERE qph.list_header_id = qpq.list_header_id
32750 -- 3594459, context and attribute OR'd together
32751 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
32752 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
32753 --added for moac -- commented references to security profile
32754 --security will be built into qp_list_headers_b
32755 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
32756 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
32757 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
32758 AND (qplines.price_flag = G_YES OR
32759 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
32760 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
32761 AND qph.list_header_id = qpl.list_header_id
32762 AND qpq.list_line_id = -1
32763 AND qpl.list_line_id = qpprod.list_line_id
32764 --AND qph.currency_code = qplines.currency_code
32765 AND qph.currency_header_id = qcdt.currency_header_id
32766 AND qplines.currency_code = qcdt.to_currency_code
32767 AND TRUNC(qplines.pricing_effective_date) between
32768 nvl(trunc(qcdt.start_date_active),TRUNC(qplines.pricing_effective_date))
32769 and nvl(trunc(qcdt.end_date_active),TRUNC(qplines.pricing_effective_date))
32770 AND (
32771 (qcdt.curr_attribute_context is null
32772 and not exists
32773 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
32774 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
32775 where qcdt1.curr_attribute_context IS NOT NULL
32776 and qcdt1.curr_attribute_context = pa_tmp.context
32777 and qcdt1.curr_attribute = pa_tmp.attribute
32778 and qcdt1.curr_attribute_value = pa_tmp.value_from
32779 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
32780 and qcdt1.to_currency_code = qcdt.to_currency_code
32781 and qcdt1.currency_header_id = qcdt.currency_header_id
32782 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
32783 and pa_tmp.line_index = qplines.line_index
32784 and TRUNC(qplines.pricing_effective_date) between
32785 nvl(trunc(qcdt1.start_date_active),TRUNC(qplines.pricing_effective_date))
32786 and nvl(trunc(qcdt1.end_date_active),TRUNC(qplines.pricing_effective_date))))
32787 OR
32788 (qcdt.curr_attribute_context is not null
32789 and qcdt.precedence =
32790 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
32791 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
32792 where qcdt2.curr_attribute_context IS NOT NULL
32793 and qcdt2.curr_attribute_context = pa_tmp1.context
32794 and qcdt2.curr_attribute = pa_tmp1.attribute
32795 and qcdt2.curr_attribute_value = pa_tmp1.value_from
32796 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
32797 and qcdt2.to_currency_code = qcdt.to_currency_code
32798 and qcdt2.currency_header_id = qcdt.currency_header_id
32799 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
32800 and pa_tmp1.line_index = qplines.line_index
32801 and TRUNC(qplines.pricing_effective_date) between
32802 nvl(trunc(qcdt2.start_date_active),TRUNC(qplines.pricing_effective_date))
32803 and nvl(trunc(qcdt2.end_date_active),TRUNC(qplines.pricing_effective_date))
32804 )))
32805 AND qpl.modifier_level_code = qplines.line_type_code
32806 AND qph.active_flag = G_YES
32807 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32808 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
32809 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
32810 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32811 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
32812 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
32813 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32814 nvl(qpq.start_date_active, TRUNC(qplines.pricing_effective_date)) and
32815 nvl(qpq.end_date_active,TRUNC(qplines.pricing_effective_date))
32816 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
32817 AND qpq.qualifier_context = qplatq.context
32818 AND qpq.qualifier_attribute = qplatq.attribute
32819 AND qpq.comparison_operator_code = G_OPERATOR_BETWEEN --[julin/5007789]
32820 AND qpq.active_flag = G_YES
32821 and ((qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y) --[julin/5007789]
32822 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to)
32823 or
32824 (qpq.qualifier_datatype = G_NUMERIC
32825 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
32826 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number))
32827 AND qpprod.pricing_phase_id = p_pricing_phase_id
32828 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
32829 AND qpprod.product_attribute_context = qplatpr.context
32830 AND qpprod.product_attribute = qplatpr.attribute
32831 AND qpprod.product_attr_value = qplatpr.value_from
32832 AND qpprod.excluder_flag = G_NO
32833 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
32834 AND qpprod.pricing_attribute_context = qplatpc.context
32835 AND qpprod.pricing_attribute = qplatpc.attribute
32836 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
32837 or qpprod.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN)) -- 8463623
32838 AND qplatq.line_index = qplatpc.line_index
32839 AND qplatq.line_index = qplines.line_index
32840 AND qplatpc.line_index = qplatpr.line_index
32841 AND qph.source_system_code = qprs.source_system_code
32842 AND qplines.request_type_code = qprs.request_type_code
32843 AND qplatpr.line_index = qplines.line_index --[julin/4708044]
32844 AND qplatpr.attribute_type='PRODUCT'
32845 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
32846 AND qplatpc.attribute_type = 'PRICING'
32847 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED
32848 AND qplatq.attribute_type = 'QUALIFIER'
32849 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
32850 --AND qplatq.pricing_attr_flag = G_YES --[julin/4708044] wrong table, currently not reliable value, not used in index
32851 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
32852 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
32853 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
32854 ORDER BY 4,2;
32855
32856 --[julin/5007789] Tuned query as follows:
32857 -- 1. Performing line filter first.
32858 -- 2. Merged qplatpr subquery conditions into main where clause.
32859 CURSOR l_prod_cur (p_pricing_phase_id NUMBER) IS
32860 -- Only Product attributes
32861 -- bug 9210308 - Added index hint for index QP_LIST_LINES_PK
32862 SELECT /*+ ORDERED USE_NL(QPLATPR QPPROD QPL QPH QPRS) index(qplatpr QP_PREQ_LINE_ATTRS_TMP_N1) index(QPL QP_LIST_LINES_PK) l_prod_cur_pl */
32863 qpl.list_header_id,
32864 qpl.list_line_id,
32865 qpl.list_line_type_code,
32866 qplatpr.line_index,
32867 qplatpr.applied_flag,
32868 qplatpr.attribute_level product_attribute_level,
32869 qplatpr.attribute_type product_attribute_type,
32870 qplatpr.context product_attribute_context,
32871 qplatpr.attribute product_attribute,
32872 qplatpr.value_from product_attr_value,
32873 qpprod.product_uom_code product_uom_code,
32874 qpprod.excluder_flag,
32875 qpl.automatic_flag,
32876 qpl.modifier_level_code,
32877 qpl.primary_uom_flag,
32878 qpl.arithmetic_operator operand_calculation_code,
32879 qpl.operand operand_value,
32880 qpl.pricing_group_sequence,
32881 qph.list_type_code created_from_list_type,
32882 qph.rounding_factor,
32883 qpl.pricing_phase_id,
32884 qpl.price_break_type_code,
32885 qpl.incompatibility_grp_code,
32886 qpl.price_by_formula_id,
32887 qpl.product_precedence,
32888 qpl.list_line_no
32889 ,QPL.BREAK_UOM_CODE /* Proration */
32890 ,QPL.BREAK_UOM_CONTEXT /* Proration */
32891 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
32892 FROM --[julin/5000789]
32893 (SELECT /*+ dynamic_sampling(1) */ *
32894 FROM qp_npreq_lines_tmp
32895 WHERE processed_code IN (G_STS_LHS_NOT_FOUND,G_NO_LIST_PASSED)
32896 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
32897 qp_npreq_line_attrs_tmp qplatpr,
32898 qp_pricing_attributes qpprod ,
32899 qp_list_lines qpl ,
32900 qp_list_headers_b qph ,
32901 qp_price_req_sources_v qprs
32902 WHERE
32903 qph.list_header_id = qpprod.list_header_id
32904 --added for moac -- commented references to security profile
32905 --security will be built into qp_list_headers_b
32906 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
32907 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
32908 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
32909 AND qpl.qualification_ind = QP_PREQ_GRP.G_YES_PROD_IND
32910 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
32911 AND (qplines.price_flag = G_YES OR
32912 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
32913 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
32914 AND qph.currency_code = qplines.currency_code
32915 AND qpl.modifier_level_code = qplines.line_type_code
32916 AND qph.active_flag = G_YES
32917 AND qpl.list_line_id = qpprod.list_line_id
32918 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32919 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
32920 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
32921 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
32922 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
32923 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
32924 AND qpl.pricing_phase_id = p_pricing_phase_id
32925 AND qpprod.pricing_phase_id = p_pricing_phase_id
32926 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_IND
32927 AND qpprod.product_attribute_context = qplatpr.context
32928 AND qpprod.product_attribute = qplatpr.attribute
32929 AND qpprod.product_attr_value = qplatpr.value_from
32930 AND qpprod.excluder_flag = G_NO
32931 AND qph.source_system_code = qprs.source_system_code
32932 AND qplines.request_type_code = qprs.request_type_code
32933 AND qplatpr.line_index = qplines.line_index
32934 AND qplatpr.attribute_type='PRODUCT' --[julin/5007789]
32935 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED --[julin/5007789]
32936 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
32937 ORDER BY 4,2; --order by list_line_id
32938
32939 --[julin/5007789] Tuned query as follows:
32940 -- 1. Performing line filter first.
32941 CURSOR l_prod_cur_currency (p_pricing_phase_id NUMBER) IS
32942 -- Product Only.
32943 SELECT /*+ ORDERED USE_NL(QPLATPR QPPROD QPL QPH QPRS) index(qplatpr QP_PREQ_LINE_ATTRS_TMP_N1) INDEX(QPL QP_LIST_LINES_PK) l_prod_cur_pl */
32944 qpl.list_header_id,
32945 qpl.list_line_id,
32946 qpl.list_line_type_code,
32947 qplatpr.line_index,
32948 qplatpr.applied_flag,
32949 qplatpr.attribute_level product_attribute_level,
32950 qplatpr.attribute_type product_attribute_type,
32951 qplatpr.context product_attribute_context,
32952 qplatpr.attribute product_attribute,
32953 qplatpr.value_from product_attr_value,
32954 qpprod.product_uom_code product_uom_code,
32955 qpprod.excluder_flag,
32956 qpl.automatic_flag,
32957 qpl.modifier_level_code,
32958 qpl.primary_uom_flag,
32959 qpl.arithmetic_operator operand_calculation_code,
32960 qpl.operand operand_value,
32961 qpl.pricing_group_sequence,
32962 qph.list_type_code created_from_list_type,
32963 qph.rounding_factor,
32964 qpl.pricing_phase_id,
32965 qpl.price_break_type_code,
32966 qpl.incompatibility_grp_code,
32967 qpl.price_by_formula_id,
32968 qpl.product_precedence,
32969 qpl.list_line_no,
32970 qcdt.currency_detail_id,
32971 qcdt.currency_header_id,
32972 qcdt.selling_rounding_factor,
32973 qplines.currency_code order_currency,
32974 qplines.pricing_effective_date pricing_effective_date,
32975 qph.currency_code base_currency_code
32976 ,QPL.BREAK_UOM_CODE /* Proration */
32977 ,QPL.BREAK_UOM_CONTEXT /* Proration */
32978 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
32979 FROM --[julin/5007789]
32980 (SELECT /*+ dynamic_sampling(1) */ *
32981 FROM qp_npreq_lines_tmp
32982 WHERE processed_code IN (G_STS_LHS_NOT_FOUND,G_NO_LIST_PASSED)
32983 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
32984 qp_npreq_line_attrs_tmp qplatpr,
32985 qp_pricing_attributes qpprod,
32986 qp_list_lines qpl,
32987 qp_list_headers_b qph,
32988 qp_price_req_sources_v qprs,
32989 qp_currency_details qcdt
32990 WHERE qph.list_header_id = qpl.list_header_id
32991 AND qph.list_header_id = qpprod.list_header_id
32992 --added for moac -- commented references to security profile
32993 --security will be built into qp_list_headers_b
32994 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
32995 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
32996 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
32997 AND (qplines.price_flag = G_YES OR
32998 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
32999 AND qpl.qualification_ind = QP_PREQ_GRP.G_YES_PROD_IND
33000 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
33001 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
33002 AND qpl.list_line_id = qpprod.list_line_id
33003 --AND qph.currency_code = qplines.currency_code
33004 AND qph.currency_header_id = qcdt.currency_header_id
33005 AND qplines.currency_code = qcdt.to_currency_code
33006 AND TRUNC(qplines.pricing_effective_date) between
33007 nvl(trunc(qcdt.start_date_active),TRUNC(qplines.pricing_effective_date))
33008 and nvl(trunc(qcdt.end_date_active),TRUNC(qplines.pricing_effective_date))
33009 AND (
33010 (qcdt.curr_attribute_context is null
33011 and not exists
33012 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
33013 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
33014 where qcdt1.curr_attribute_context IS NOT NULL
33015 and qcdt1.curr_attribute_context = pa_tmp.context
33016 and qcdt1.curr_attribute = pa_tmp.attribute
33017 and qcdt1.curr_attribute_value = pa_tmp.value_from
33018 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
33019 and qcdt1.to_currency_code = qcdt.to_currency_code
33020 and qcdt1.currency_header_id = qcdt.currency_header_id
33021 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
33022 and pa_tmp.line_index = qplines.line_index
33023 and TRUNC(qplines.pricing_effective_date) between
33024 nvl(trunc(qcdt1.start_date_active),TRUNC(qplines.pricing_effective_date))
33025 and nvl(trunc(qcdt1.end_date_active),TRUNC(qplines.pricing_effective_date))))
33026 OR
33027 (qcdt.curr_attribute_context is not null
33028 and qcdt.precedence =
33029 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
33030 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
33031 where qcdt2.curr_attribute_context IS NOT NULL
33032 and qcdt2.curr_attribute_context = pa_tmp1.context
33033 and qcdt2.curr_attribute = pa_tmp1.attribute
33034 and qcdt2.curr_attribute_value = pa_tmp1.value_from
33035 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
33036 and qcdt2.to_currency_code = qcdt.to_currency_code
33037 and qcdt2.currency_header_id = qcdt.currency_header_id
33038 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
33039 and pa_tmp1.line_index = qplines.line_index
33040 and TRUNC(qplines.pricing_effective_date) between
33041 nvl(trunc(qcdt2.start_date_active),TRUNC(qplines.pricing_effective_date))
33042 and nvl(trunc(qcdt2.end_date_active),TRUNC(qplines.pricing_effective_date))
33043 )))
33044 AND qpl.modifier_level_code = qplines.line_type_code
33045 AND qph.active_flag = G_YES
33046 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
33047 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
33048 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
33049 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
33050 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
33051 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
33052 AND qpl.pricing_phase_id = p_pricing_phase_id
33053 AND qpprod.pricing_phase_id = p_pricing_phase_id
33054 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_IND
33055 AND qpprod.product_attribute_context = qplatpr.context
33056 AND qpprod.product_attribute = qplatpr.attribute
33057 AND qpprod.product_attr_value = qplatpr.value_from
33058 AND qpprod.excluder_flag = G_NO
33059 AND qph.source_system_code = qprs.source_system_code
33060 AND qplines.request_type_code = qprs.request_type_code
33061 AND qplatpr.attribute_type='PRODUCT'
33062 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
33063 AND QPLATPR.LINE_INDEX = QPLINES.LINE_INDEX -- 4331801/4365538
33064 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
33065 ORDER BY 4,2;
33066
33067 --Added INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5) for 3259932
33068 --[julin/5007789] Tuned query as follows:
33069 -- 1. Performing line filter first.
33070 -- 2. Merged qplatpr subquery conditions into main where clause.
33071 -- 3. Merged qplatpc subquery conditions into main where clause.
33072 CURSOR l_prod_pric_cur (p_pricing_phase_id NUMBER) IS
33073 --PRODUCT and PRICING attributes
33074 SELECT /*+ ORDERED USE_NL(QPLATPR QPPROD QPLATPC QPL QPH QPRS) index(qplatpr QP_PREQ_LINE_ATTRS_TMP_N1) INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5) index(qplatpc QP_PREQ_LINE_ATTRS_TMP_N2) l_prod_pric_cur_pl */
33075 qpl.list_header_id,
33076 qpl.list_line_id,
33077 qpl.list_line_type_code,
33078 qplatpr.line_index,
33079 qplatpr.applied_flag,
33080 qplatpr.attribute_level product_attribute_level,
33081 qplatpr.attribute_type product_attribute_type,
33082 qplatpr.context product_attribute_context,
33083 qplatpr.attribute product_attribute,
33084 qplatpr.value_from product_attr_value,
33085 qpprod.product_uom_code product_uom_code,
33086 qpprod.excluder_flag,
33087 qpl.automatic_flag,
33088 qpl.modifier_level_code,
33089 qpl.primary_uom_flag,
33090 qpl.arithmetic_operator operand_calculation_code,
33091 qpl.operand operand_value,
33092 qpl.pricing_group_sequence,
33093 qph.list_type_code created_from_list_type,
33094 qph.rounding_factor,
33095 qpl.pricing_phase_id,
33096 qpl.price_break_type_code,
33097 qpl.incompatibility_grp_code,
33098 qpl.price_by_formula_id,
33099 qpl.product_precedence,
33100 qpl.list_line_no,
33101 qplatpc.attribute_level pricing_attribute_level,
33102 qplatpc.attribute_type pricing_attribute_type,
33103 qplatpc.context pricing_attribute_context,
33104 qplatpc.attribute pricing_attribute,
33105 qplatpc.value_from pricing_attr_value,
33106 qpprod.pricing_attr_value_from pricing_setup_value_from,
33107 qpprod.pricing_attr_value_to pricing_setup_value_to,
33108 qpprod.comparison_operator_code pricing_comparison_operator,
33109 qpprod.pricing_attribute_datatype pricing_datatype
33110 ,QPL.BREAK_UOM_CODE /* Proration */
33111 ,QPL.BREAK_UOM_CONTEXT /* Proration */
33112 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
33113 FROM --[julin/5007789]
33114 (SELECT /*+ dynamic_sampling(1) */ *
33115 FROM qp_npreq_lines_tmp
33116 WHERE processed_code IN (G_STS_LHS_NOT_FOUND,G_NO_LIST_PASSED)
33117 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
33118 qp_npreq_line_attrs_tmp qplatpr,
33119 qp_pricing_attributes qpprod,
33120 qp_npreq_line_attrs_tmp qplatpc,
33121 qp_list_lines qpl,
33122 qp_list_headers_b qph,
33123 qp_price_req_sources_v QPRS
33124 WHERE
33125 qph.list_header_id = qpl.list_header_id
33126 --added for moac -- commented references to security profile
33127 --security will be built into qp_list_headers_b
33128 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
33129 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
33130 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
33131 AND qpl.list_line_id = qpprod.list_line_id
33132 AND qpl.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
33133 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
33134 AND (qplines.price_flag = G_YES OR
33135 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
33136 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
33137 AND qph.currency_code = qplines.currency_code --5922273
33138 AND qph.active_flag = G_YES
33139 AND qpl.pricing_phase_id = p_pricing_phase_id
33140 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
33141 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
33142 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
33143 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
33144 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date)) and
33145 nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
33146 AND qpprod.pricing_phase_id = p_pricing_phase_id
33147 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
33148 AND qpprod.product_attribute_context = qplatpr.context
33149 AND qpprod.product_attribute = qplatpr.attribute
33150 AND qpprod.product_attr_value = qplatpr.value_from
33151 AND qpprod.excluder_flag = G_NO
33152 AND qpprod.pricing_attribute_context = qplatpc.context
33153 AND qpprod.pricing_attribute = qplatpc.attribute
33154 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
33155 or qpprod.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN)) --8463623
33156 --or qpl.price_break_type_code = G_RECURRING_BREAK)
33157 AND qplatpc.attribute_type = 'PRICING' --[julin/5007789]
33158 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED --[julin/5007789]
33159 AND qplatpc.line_index = qplines.line_index
33160 AND qplatpr.line_index = qplines.line_index
33161 AND qplatpr.attribute_type = 'PRODUCT' --[julin/5007789]
33162 AND qplatpr.pricing_status_code = G_STATUS_UNCHANGED --[julin/5007789]
33163 AND qph.source_system_code = qprs.source_system_code
33164 AND qplines.request_type_code = qprs.request_type_code
33165 --AND qplatpc.pricing_attr_flag = G_YES --[julin/4708044] currently not reliable value, not used in index
33166 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
33167 ORDER BY 4,2;
33168
33169 --Added INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5) for 3259932
33170 --[julin/5007789] Tuned query as follows:
33171 -- 1. Performing line filter first.
33172 CURSOR l_prod_pric_cur_currency(p_pricing_phase_id NUMBER) IS
33173 --Product+Pricing
33174 SELECT /*+ ORDERED USE_NL(QPLATPR QPPROD QPLATPC QPL QPH QPRS) index(qplatpr QP_PREQ_LINE_ATTRS_TMP_N1) INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5) index(qplatpc QP_PREQ_LINE_ATTRS_TMP_N2) l_prod_pric_cur_pl */
33175 qpl.list_header_id,
33176 qpl.list_line_id,
33177 qpl.list_line_type_code,
33178 qplatpr.line_index,
33179 qplatpr.applied_flag,
33180 qplatpr.attribute_level product_attribute_level,
33181 qplatpr.attribute_type product_attribute_type,
33182 qplatpr.context product_attribute_context,
33183 qplatpr.attribute product_attribute,
33184 qplatpr.value_from product_attr_value,
33185 qpprod.product_uom_code product_uom_code,
33186 qpprod.excluder_flag,
33187 qpl.automatic_flag,
33188 qpl.modifier_level_code,
33189 qpl.primary_uom_flag,
33190 qpl.arithmetic_operator operand_calculation_code,
33191 qpl.operand operand_value,
33192 qpl.pricing_group_sequence,
33193 qph.list_type_code created_from_list_type,
33194 qph.rounding_factor,
33195 qpl.pricing_phase_id,
33196 qpl.price_break_type_code,
33197 qpl.incompatibility_grp_code,
33198 qpl.price_by_formula_id,
33199 qpl.product_precedence,
33200 qpl.list_line_no,
33201 qplatpc.attribute_level pricing_attribute_level,
33202 qplatpc.attribute_type pricing_attribute_type,
33203 qplatpc.context pricing_attribute_context,
33204 qplatpc.attribute pricing_attribute,
33205 qplatpc.value_from pricing_attr_value,
33206 qpprod.pricing_attr_value_from pricing_setup_value_from,
33207 qpprod.pricing_attr_value_to pricing_setup_value_to,
33208 qpprod.comparison_operator_code pricing_comparison_operator,
33209 qpprod.pricing_attribute_datatype pricing_datatype,
33210 qcdt.currency_detail_id,
33211 qcdt.currency_header_id,
33212 qcdt.selling_rounding_factor,
33213 qplines.currency_code order_currency,
33214 qplines.pricing_effective_date pricing_effective_date,
33215 qph.currency_code base_currency_code
33216 ,QPL.BREAK_UOM_CODE /* Proration */
33217 ,QPL.BREAK_UOM_CONTEXT /* Proration */
33218 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
33219 FROM --[julin/5007789]
33220 (SELECT /*+ dynamic_sampling(1) */ *
33221 FROM qp_npreq_lines_tmp
33222 WHERE processed_code IN (G_STS_LHS_NOT_FOUND,G_NO_LIST_PASSED)
33223 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
33224 qp_npreq_line_attrs_tmp qplatpr,
33225 qp_pricing_attributes qpprod ,
33226 qp_npreq_line_attrs_tmp qplatpc,
33227 qp_list_lines qpl ,
33228 qp_list_headers_b qph,
33229 qp_price_req_sources_v qprs,
33230 qp_currency_details qcdt
33231 WHERE
33232 qph.list_header_id = qpl.list_header_id
33233 --added for moac -- commented references to security profile
33234 --security will be built into qp_list_headers_b
33235 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
33236 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
33237 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
33238 AND qpl.list_line_id = qpprod.list_line_id
33239 AND qpl.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
33240 AND (qplines.price_flag = G_YES OR
33241 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
33242 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
33243 --AND qph.currency_code = qplines.currency_code
33244 AND qph.currency_header_id = qcdt.currency_header_id
33245 AND qplines.currency_code = qcdt.to_currency_code
33246 AND TRUNC(qplines.pricing_effective_date) between
33247 nvl(trunc(qcdt.start_date_active),TRUNC(qplines.pricing_effective_date)) and
33248 nvl(trunc(qcdt.end_date_active),TRUNC(qplines.pricing_effective_date))
33249 AND (
33250 (qcdt.curr_attribute_context is null
33251 and not exists
33252 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
33253 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
33254 where qcdt1.curr_attribute_context IS NOT NULL
33255 and qcdt1.curr_attribute_context = pa_tmp.context
33256 and qcdt1.curr_attribute = pa_tmp.attribute
33257 and qcdt1.curr_attribute_value = pa_tmp.value_from
33258 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
33259 and qcdt1.to_currency_code = qcdt.to_currency_code
33260 and qcdt1.currency_header_id = qcdt.currency_header_id
33261 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
33262 and pa_tmp.line_index = qplines.line_index
33263 and TRUNC(qplines.pricing_effective_date) between
33264 nvl(trunc(qcdt1.start_date_active),TRUNC(qplines.pricing_effective_date))
33265 and nvl(trunc(qcdt1.end_date_active),TRUNC(qplines.pricing_effective_date))))
33266 OR
33267 (qcdt.curr_attribute_context is not null
33268 and qcdt.precedence =
33269 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
33270 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
33271 where qcdt2.curr_attribute_context IS NOT NULL
33272 and qcdt2.curr_attribute_context = pa_tmp1.context
33273 and qcdt2.curr_attribute = pa_tmp1.attribute
33274 and qcdt2.curr_attribute_value = pa_tmp1.value_from
33275 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
33276 and qcdt2.to_currency_code = qcdt.to_currency_code
33277 and qcdt2.currency_header_id = qcdt.currency_header_id
33278 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
33279 and pa_tmp1.line_index = qplines.line_index
33280 and TRUNC(qplines.pricing_effective_date) between
33281 nvl(trunc(qcdt2.start_date_active),TRUNC(qplines.pricing_effective_date))
33282 and nvl(trunc(qcdt2.end_date_active),TRUNC(qplines.pricing_effective_date))
33283 )))
33284 AND qpl.modifier_level_code = qplines.line_type_code
33285 AND qph.active_flag = G_YES
33286 AND nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)) between
33287 nvl(qph.start_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE))) and
33288 nvl(qph.end_date_active,nvl(TRUNC(qplines.pricing_effective_date),TRUNC(SYSDATE)))
33289 AND TRUNC(qplines.pricing_effective_date) between
33290 nvl(TRUNC(qpl.start_date_active), TRUNC(qplines.pricing_effective_date))
33291 and nvl(TRUNC(qpl.end_date_active),TRUNC(qplines.pricing_effective_date))
33292 AND qpl.pricing_phase_id = p_pricing_phase_id
33293 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
33294 AND qpprod.pricing_phase_id = p_pricing_phase_id
33295 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
33296 AND qpprod.product_attribute_context = qplatpr.context
33297 AND qpprod.product_attribute = qplatpr.attribute
33298 AND qpprod.product_attr_value = qplatpr.value_from
33299 AND qpprod.excluder_flag = G_NO
33300 AND qpprod.pricing_attribute_context = qplatpc.context
33301 AND qpprod.pricing_attribute = qplatpc.attribute
33302 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
33303 or qpprod.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN)) -- 8463623
33304 AND qplatpc.line_index = qplatpr.line_index
33305 AND qplatpr.line_index = qplines.line_index -- 4331801/4365538
33306 AND qph.source_system_code = qprs.source_system_code
33307 AND qplines.request_type_code = qprs.request_type_code
33308 AND qplatpr.attribute_type='PRODUCT'
33309 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
33310 AND qplatpc.attribute_type = 'PRICING'
33311 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED
33312 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
33313 ORDER BY 4,2;
33314
33315 J PLS_INTEGER:=1;
33316 N PLS_INTEGER:=1;
33317 K PLS_INTEGER:=1;
33318 M PLS_INTEGER:=1;
33319 l_status VARCHAR2(30);
33320 l_status_code VARCHAR2(30);
33321 l_status_text VARCHAR2(240);
33322 l_list_line_id NUMBER := 0 ;
33323 l_line_index PLS_INTEGER := 0 ;
33324 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.Select_Price_List_Lines';
33325 l_prod_qual_count PLS_INTEGER :=0;
33326 l_prod_cur_count PLS_INTEGER :=0;
33327
33328 l_line_detail_index PLS_INTEGER;
33329 lq_line_index NUMBER := -9999;
33330 lq_list_line_id NUMBER := -9999;
33331 nROWS PLS_INTEGER := 1000;
33332
33333 E_ROUTINE_ERRORS EXCEPTION;
33334
33335 BEGIN
33336
33337 x_status_code := FND_API.G_RET_STS_SUCCESS;
33338 l_prod_qual_count :=0;
33339 l_prod_cur_count :=0;
33340
33341 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33342 engine_debug('Before Big Select');
33343 engine_debug('p_pricing_phase_id: '||p_pricing_phase_id);
33344 engine_debug('p_freeze_override_flag: '||p_freeze_override_flag);
33345
33346 END IF;
33347 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
33348 --selecting lists that match product and qualifiers attributes
33349 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33350 engine_debug('cursor for l_prod_qual_cur_currency-multi-currency TRUE');
33351 END IF;
33352
33353 qp_debug_util.tstart('L_PROD_QUAL_CUR_CURRENCY','Cursor Loop l_prod_qual_cur_currency');
33354
33355 OPEN l_prod_qual_cur_currency(p_pricing_phase_id);
33356
33357
33358 LOOP
33359 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
33360 deleted here. There is no need to explicitly delete since BULK COLLECT
33361 will truncate the data before populating. */
33362
33363 -- fetch into _P and _Q tables here
33364 FETCH l_prod_qual_cur_currency BULK COLLECT INTO
33365 G_LIST_HEADER_ID_TBL_P,
33366 G_LIST_LINE_ID_TBL_P,
33367 G_LIST_LINE_TYPE_TBL_P,
33368 G_LINE_INDEX_TBL_P,
33369 G_APPLIED_FLAG_TBL_P,
33370 G_ATTRIBUTE_LEVEL_TBL_P,
33371 G_ATTRIBUTE_TYPE_TBL_P,
33372 G_CONTEXT_TBL_P,
33373 G_ATTRIBUTE_TBL_P,
33374 G_VALUE_FROM_TBL_P,
33375 G_PRODUCT_UOM_CODE_TBL_P,
33376 G_EXCLUDER_FLAG_TBL_P,
33377 G_CONTEXT_TBL_Q,
33378 G_ATTRIBUTE_TBL_Q,
33379 G_VALUE_FROM_TBL_Q,
33380 G_GROUPING_NO_TBL_Q,
33381 G_QUALIFIER_PRECEDENCE_TBL_Q,
33382 G_DATATYPE_TBL_Q,
33383 G_SETUP_VALUE_FROM_TBL_Q,
33384 G_SETUP_VALUE_TO_TBL_Q,
33385 G_AUTOMATIC_FLAG_TBL_P,
33386 G_MODIFIER_LEVEL_CODE_TBL_P,
33387 G_PRIMARY_UOM_FLAG_TBL_P,
33388 G_OPER_CALCULATION_CODE_TBL_P,
33389 G_OPERAND_VALUE_TBL_P,
33390 G_PRICING_GROUP_SEQUENCE_TBL_P,
33391 G_LIST_TYPE_CODE_TBL_P,
33392 G_ROUNDING_FACTOR_TBL_P,
33393 G_PRICING_PHASE_ID_TBL_P,
33394 G_PRICE_BREAK_TYPE_CODE_TBL_P,
33395 G_INCOMP_GRP_CODE_TBL_P,
33396 G_PRICE_FORMULA_ID_TBL_P,
33397 G_PRODUCT_PRECEDENCE_TBL_P,
33398 G_LIST_LINE_NO_TBL_P,
33399 G_QUALIFIER_TYPE_TBL_Q ,
33400 G_CURRENCY_DETAIL_ID_TBL_P,
33401 G_CURRENCY_HEADER_ID_TBL_P,
33402 G_SELLING_ROUNDING_TBL_P,
33403 G_ORDER_CURRENCY_TBL_P,
33404 G_PRICING_EFFECTIVE_DATE_TBL_P,
33405 G_BASE_CURRENCY_CODE_TBL_P
33406 ,G_BREAK_UOM_TBL_P /* Proration */
33407 ,G_BREAK_CONTEXT_TBL_P /* Proration */
33408 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
33409 LIMIT nROWS;
33410
33411 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
33412
33413 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33414 engine_debug('shu dbg, after bulk insert');
33415 END IF;
33416
33417 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
33418
33419 FOR i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
33420
33421 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
33422
33423 l_prod_qual_count := l_prod_qual_count + 1;
33424 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
33425 -- set attributes
33426 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
33427 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
33428 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
33429 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
33430 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
33431 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_QUALIFIER_CURRENCY';
33432 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
33433 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
33434 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
33435 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
33436 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
33437 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
33438 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_QUALIFIER_CURRENCY';
33439 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
33440 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
33441 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
33442 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
33443 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
33444 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
33445 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
33446 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
33447 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
33448 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
33449 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
33450 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
33451 G_CURRENCY_DETAIL_ID_TBL(M) := G_CURRENCY_DETAIL_ID_TBL_P(i);
33452 G_CURRENCY_HEADER_ID_TBL(M) := G_CURRENCY_HEADER_ID_TBL_P(i);
33453 G_SELLING_ROUNDING_TBL(M) := G_SELLING_ROUNDING_TBL_P(i);
33454 G_ORDER_CURRENCY_TBL(M) := G_ORDER_CURRENCY_TBL_P(i);
33455 G_BASE_CURRENCY_CODE_TBL(M) := G_BASE_CURRENCY_CODE_TBL_P(i);
33456 G_PRICING_EFFECTIVE_DATE_TBL(M) := G_PRICING_EFFECTIVE_DATE_TBL_P(i);
33457 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
33458 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
33459 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
33460
33461 M:=M+1;
33462
33463 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33464 engine_debug('M: '|| M);
33465 END IF;
33466
33467
33468 lq_line_index := G_LINE_INDEX_TBL_P(i);
33469 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
33470 end if;
33471
33472 -- set product attributes
33473
33474 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
33475 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
33476 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
33477 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
33478 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
33479 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
33480 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
33481 G_VALIDATED_FLAG_tbl(K) := G_NO;
33482 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
33483 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
33484 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
33485 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
33486 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
33487 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
33488 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
33489 G_SETUP_VALUE_TO_tbl(K) :=NULL;
33490 G_GROUPING_NUMBER_tbl(K) :=NULL;
33491 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_CURRENCY';
33492 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
33493 G_DATATYPE_tbl(K) :=NULL;
33494 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
33495 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
33496 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_Q(i);
33497 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
33498 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
33499 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
33500 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
33501 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
33502
33503 K:= K+1;
33504 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33505 engine_debug('The value of K1: ' || K);
33506 END IF;
33507 -- set qualifier attributes
33508 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
33509 G_ATTRIBUTE_LEVEL_tbl(K) := nvl(G_ATTRIBUTE_LEVEL_TBL_P(i),'X');
33510 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
33511 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_Q(i);
33512 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_Q(i);
33513 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_Q(i);
33514 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
33515 G_VALIDATED_FLAG_tbl(K) := G_NO;
33516 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
33517 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
33518 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
33519 G_LINE_DETAIL_INDEX_tbl(K) := L_LINE_DETAIL_INDEX;
33520 G_LIST_HEADER_ID_tbl(K) := G_LIST_HEADER_ID_TBL_P(i);
33521 G_LIST_LINE_ID_tbl(K) := G_LIST_LINE_ID_TBL_P(i);
33522 G_SETUP_VALUE_FROM_tbl(K) := G_SETUP_VALUE_FROM_TBL_Q(i);
33523 G_SETUP_VALUE_TO_tbl(K) := G_SETUP_VALUE_TO_TBL_Q(i);
33524 G_GROUPING_NUMBER_tbl(K) := G_GROUPING_NO_TBL_Q(i);
33525 G_PRICING_STATUS_TEXT_tbl(K) := 'PRODUCT_QUALIFIER_CURRENCY';
33526 G_QUALIFIER_PRECEDENCE_tbl(K) := G_QUALIFIER_PRECEDENCE_TBL_Q(i);
33527 G_DATATYPE_tbl(K) := G_DATATYPE_TBL_Q(i);
33528 G_EXCLUDER_FLAG_TBL(K) := G_EXCLUDER_FLAG_TBL_P(i);
33529 G_PRODUCT_UOM_CODE_TBL(K) := G_PRODUCT_UOM_CODE_TBL_P(i);
33530 G_QUALIFIER_TYPE_TBL(K) := G_QUALIFIER_TYPE_TBL_Q(i);
33531 G_PRICING_PHASE_ID_TBL_A(K) := G_PRICING_PHASE_ID_TBL_P(i);
33532 G_INCOMP_GRP_CODE_TBL_A(K) := G_INCOMP_GRP_CODE_TBL_P(i);
33533 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := 'NULL';
33534 G_MODIFIER_LEVEL_CODE_TBL_A(K) := G_MODIFIER_LEVEL_CODE_TBL_P(i);
33535 G_PRIMARY_UOM_FLAG_TBL_A(K) := G_PRIMARY_UOM_FLAG_TBL_P(i);
33536 K:= K+1;
33537 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33538 engine_debug('The value of K2: ' || K);
33539
33540 END IF;
33541 end loop;
33542 end if;
33543 END LOOP;
33544
33545 qp_debug_util.tstop('L_PROD_QUAL_CUR_CURRENCY');
33546
33547 CLOSE l_prod_qual_cur_currency;
33548
33549 lq_line_index := -9999;
33550 lq_list_line_id := -9999;
33551
33552 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33553 engine_debug('before l_prod_qual_pric_cur_currency... ');
33554 END IF;
33555
33556 qp_debug_util.tstart('L_PROD_QUAL_PRIC_CUR_CURRENCY','Cursor Loop l_prod_qual_pric_cur_currency');
33557 OPEN l_prod_qual_pric_cur_currency(p_pricing_phase_id);
33558
33559 LOOP
33560 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
33561 deleted here. There is no need to explicitly delete since BULK COLLECT
33562 will truncate the data before populating. */
33563
33564 -- fetch into _P , _Q tables and _PR tables here
33565 FETCH l_prod_qual_pric_cur_currency BULK COLLECT INTO
33566 G_LIST_HEADER_ID_TBL_P,
33567 G_LIST_LINE_ID_TBL_P,
33568 G_LIST_LINE_TYPE_TBL_P,
33569 G_LINE_INDEX_TBL_P,
33570 G_APPLIED_FLAG_TBL_P,
33571 G_ATTRIBUTE_LEVEL_TBL_P,
33572 G_ATTRIBUTE_TYPE_TBL_P,
33573 G_CONTEXT_TBL_P,
33574 G_ATTRIBUTE_TBL_P,
33575 G_VALUE_FROM_TBL_P,
33576 G_PRODUCT_UOM_CODE_TBL_P,
33577 G_EXCLUDER_FLAG_TBL_P,
33578 G_CONTEXT_TBL_Q,
33579 G_ATTRIBUTE_TBL_Q,
33580 G_VALUE_FROM_TBL_Q,
33581 G_GROUPING_NO_TBL_Q,
33582 G_QUALIFIER_PRECEDENCE_TBL_Q,
33583 G_DATATYPE_TBL_Q,
33584 G_SETUP_VALUE_FROM_TBL_Q,
33585 G_SETUP_VALUE_TO_TBL_Q,
33586 G_AUTOMATIC_FLAG_TBL_P,
33587 G_MODIFIER_LEVEL_CODE_TBL_P,
33588 G_PRIMARY_UOM_FLAG_TBL_P,
33589 G_OPER_CALCULATION_CODE_TBL_P,
33590 G_OPERAND_VALUE_TBL_P,
33591 G_PRICING_GROUP_SEQUENCE_TBL_P,
33592 G_LIST_TYPE_CODE_TBL_P,
33593 G_ROUNDING_FACTOR_TBL_P,
33594 G_PRICING_PHASE_ID_TBL_P,
33595 G_PRICE_BREAK_TYPE_CODE_TBL_P,
33596 G_INCOMP_GRP_CODE_TBL_P,
33597 G_PRICE_FORMULA_ID_TBL_P,
33598 G_PRODUCT_PRECEDENCE_TBL_P,
33599 G_LIST_LINE_NO_TBL_P,
33600 G_QUALIFIER_TYPE_TBL_Q ,
33601 G_ATTRIBUTE_LEVEL_TBL_PR,
33602 G_ATTRIBUTE_TYPE_TBL_PR,
33603 G_CONTEXT_TBL_PR,
33604 G_ATTRIBUTE_TBL_PR,
33605 G_VALUE_FROM_TBL_PR,
33606 G_SETUP_VALUE_FROM_TBL_PR,
33607 G_SETUP_VALUE_TO_TBL_PR,
33608 G_OPERATOR_TYPE_TBL_PR,
33609 G_DATATYPE_TBL_PR,
33610 G_CURRENCY_DETAIL_ID_TBL_P,
33611 G_CURRENCY_HEADER_ID_TBL_P,
33612 G_SELLING_ROUNDING_TBL_P,
33613 G_ORDER_CURRENCY_TBL_P,
33614 G_PRICING_EFFECTIVE_DATE_TBL_P ,
33615 G_BASE_CURRENCY_CODE_TBL_P
33616 ,G_BREAK_UOM_TBL_P /* Proration */
33617 ,G_BREAK_CONTEXT_TBL_P /* Proration */
33618 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
33619 LIMIT nROWS;
33620 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
33621
33622 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
33623 for i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
33624 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
33625 l_prod_qual_count := l_prod_qual_count + 1;
33626 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
33627
33628 -- set attributes
33629 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
33630 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
33631 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
33632 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
33633 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
33634 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_QUALIFIER_PRICING_CURRENCY';
33635 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
33636 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
33637 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
33638 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
33639 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
33640 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
33641 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_QUAL_PRICING_CURRENCY';
33642 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
33643 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
33644 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
33645 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
33646 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
33647 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
33648 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
33649 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
33650 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
33651 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
33652 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
33653 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
33654 G_CURRENCY_DETAIL_ID_TBL(M) := G_CURRENCY_DETAIL_ID_TBL_P(i);
33655 G_CURRENCY_HEADER_ID_TBL(M) := G_CURRENCY_HEADER_ID_TBL_P(i);
33656 G_SELLING_ROUNDING_TBL(M) := G_SELLING_ROUNDING_TBL_P(i);
33657 G_ORDER_CURRENCY_TBL(M) := G_ORDER_CURRENCY_TBL_P(i);
33658 G_BASE_CURRENCY_CODE_TBL(M) := G_BASE_CURRENCY_CODE_TBL_P(i);
33659 G_PRICING_EFFECTIVE_DATE_TBL(M) := G_PRICING_EFFECTIVE_DATE_TBL_P(i);
33660 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
33661 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
33662 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
33663
33664 M:=M+1;
33665 lq_line_index := G_LINE_INDEX_TBL_P(i);
33666 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
33667 end if;
33668
33669 -- set product attributes
33670 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
33671 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
33672 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
33673 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
33674 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
33675 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
33676 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
33677 G_VALIDATED_FLAG_tbl(K) := G_NO;
33678 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
33679 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
33680 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
33681 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
33682 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
33683 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
33684 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
33685 G_SETUP_VALUE_TO_tbl(K) :=NULL;
33686 G_GROUPING_NUMBER_tbl(K) :=NULL;
33687 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_PRICING_CURRENCY';
33688 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
33689 G_DATATYPE_tbl(K) :=NULL;
33690 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
33691 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
33692 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_Q(i);
33693 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
33694 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
33695 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
33696 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
33697 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
33698 K:= K+1;
33699 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33700 engine_debug('The value of K: ' || K);
33701
33702 END IF;
33703 -- set qualifier attributes
33704 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
33705 G_ATTRIBUTE_LEVEL_tbl(K) := nvl(G_ATTRIBUTE_LEVEL_TBL_P(i),'X');
33706 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
33707 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_Q(i);
33708 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_Q(i);
33709 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_Q(i);
33710 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
33711 G_VALIDATED_FLAG_tbl(K) := G_NO;
33712 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
33713 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
33714 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
33715 G_LINE_DETAIL_INDEX_tbl(K) := L_LINE_DETAIL_INDEX;
33716 G_LIST_HEADER_ID_tbl(K) := G_LIST_HEADER_ID_TBL_P(i);
33717 G_LIST_LINE_ID_tbl(K) := G_LIST_LINE_ID_TBL_P(i);
33718 G_SETUP_VALUE_FROM_tbl(K) := G_SETUP_VALUE_FROM_TBL_Q(i);
33719 G_SETUP_VALUE_TO_tbl(K) := G_SETUP_VALUE_TO_TBL_Q(i);
33720 G_GROUPING_NUMBER_tbl(K) := G_GROUPING_NO_TBL_Q(i);
33721 G_PRICING_STATUS_TEXT_tbl(K) := 'PRODUCT_QUALIFIER_PRICING_CURRENCY';
33722 G_QUALIFIER_PRECEDENCE_tbl(K) := G_QUALIFIER_PRECEDENCE_TBL_Q(i);
33723 G_DATATYPE_tbl(K) := G_DATATYPE_TBL_Q(i);
33724 G_EXCLUDER_FLAG_TBL(K) := G_EXCLUDER_FLAG_TBL_P(i);
33725 G_PRODUCT_UOM_CODE_TBL(K) := G_PRODUCT_UOM_CODE_TBL_P(i);
33726 G_QUALIFIER_TYPE_TBL(K) := G_QUALIFIER_TYPE_TBL_Q(i);
33727 G_PRICING_PHASE_ID_TBL_A(K) := G_PRICING_PHASE_ID_TBL_P(i);
33728 G_INCOMP_GRP_CODE_TBL_A(K) := G_INCOMP_GRP_CODE_TBL_P(i);
33729 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := 'NULL';
33730 G_MODIFIER_LEVEL_CODE_TBL_A(K) := G_MODIFIER_LEVEL_CODE_TBL_P(i);
33731 G_PRIMARY_UOM_FLAG_TBL_A(K) := G_PRIMARY_UOM_FLAG_TBL_P(i);
33732 K:= K+1;
33733
33734 --set pricing attributes
33735 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
33736 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
33737 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_PR(I);
33738 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_PR(I);
33739 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_PR(I);
33740 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_PR(I);
33741 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_PR(I);
33742 G_COMPARISON_OPERATOR_TYPE_tbl(K):=G_OPERATOR_TYPE_TBL_PR(I);
33743 G_VALIDATED_FLAG_tbl(K) :=G_NO;
33744 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
33745 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
33746 G_PRICING_ATTR_FLAG_tbl(K) :=G_YES;
33747 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
33748 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
33749 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
33750 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
33751 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
33752 G_GROUPING_NUMBER_tbl(K) :=NULL;
33753 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_PRICING_CURRENCY';
33754 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
33755 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
33756 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
33757 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
33758 G_QUALIFIER_TYPE_TBL(K) :=NULL;
33759 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
33760 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
33761 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
33762 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
33763 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
33764 K:= K+1;
33765 END IF;
33766 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33767 engine_debug('The value of K: ' || K);
33768
33769 END IF;
33770 end loop;
33771 end if;
33772 END LOOP;
33773
33774 qp_debug_util.tstop('L_PROD_QUAL_PRIC_CUR_CURRENCY');
33775
33776 CLOSE l_prod_qual_pric_cur_currency;
33777
33778 lq_line_index := -9999;
33779 lq_list_line_id := -9999;
33780
33781 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33782 engine_debug('before l_prod_cur_currency... ');
33783 END IF;
33784
33785 qp_debug_util.tstart('L_PROD_CUR_CURRENCY','Cursor Loop l_prod_cur_currency');
33786 OPEN l_prod_cur_currency(p_pricing_phase_id);
33787
33788 LOOP
33789 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
33790 deleted here. There is no need to explicitly delete since BULK COLLECT
33791 will truncate the data before populating. */
33792
33793 -- fetch into _P tables here
33794 FETCH l_prod_cur_currency BULK COLLECT INTO
33795 G_LIST_HEADER_ID_TBL_P,
33796 G_LIST_LINE_ID_TBL_P,
33797 G_LIST_LINE_TYPE_TBL_P,
33798 G_LINE_INDEX_TBL_P,
33799 G_APPLIED_FLAG_TBL_P,
33800 G_ATTRIBUTE_LEVEL_TBL_P,
33801 G_ATTRIBUTE_TYPE_TBL_P,
33802 G_CONTEXT_TBL_P,
33803 G_ATTRIBUTE_TBL_P,
33804 G_VALUE_FROM_TBL_P,
33805 G_PRODUCT_UOM_CODE_TBL_P,
33806 G_EXCLUDER_FLAG_TBL_P,
33807 G_AUTOMATIC_FLAG_TBL_P,
33808 G_MODIFIER_LEVEL_CODE_TBL_P,
33809 G_PRIMARY_UOM_FLAG_TBL_P,
33810 G_OPER_CALCULATION_CODE_TBL_P,
33811 G_OPERAND_VALUE_TBL_P,
33812 G_PRICING_GROUP_SEQUENCE_TBL_P,
33813 G_LIST_TYPE_CODE_TBL_P,
33814 G_ROUNDING_FACTOR_TBL_P,
33815 G_PRICING_PHASE_ID_TBL_P,
33816 G_PRICE_BREAK_TYPE_CODE_TBL_P,
33817 G_INCOMP_GRP_CODE_TBL_P,
33818 G_PRICE_FORMULA_ID_TBL_P,
33819 G_PRODUCT_PRECEDENCE_TBL_P,
33820 G_LIST_LINE_NO_TBL_P,
33821 G_CURRENCY_DETAIL_ID_TBL_P,
33822 G_CURRENCY_HEADER_ID_TBL_P,
33823 G_SELLING_ROUNDING_TBL_P,
33824 G_ORDER_CURRENCY_TBL_P,
33825 G_PRICING_EFFECTIVE_DATE_TBL_P,
33826 G_BASE_CURRENCY_CODE_TBL_P
33827 ,G_BREAK_UOM_TBL_P /* Proration */
33828 ,G_BREAK_CONTEXT_TBL_P /* Proration */
33829 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
33830 LIMIT nROWS;
33831
33832 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
33833
33834 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
33835 for i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
33836 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
33837 l_prod_qual_count := l_prod_qual_count + 1;
33838 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
33839
33840 -- set attributes
33841 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
33842 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
33843 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
33844 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
33845 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
33846 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_CURRENCY';
33847 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
33848 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
33849 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
33850 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
33851 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
33852 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
33853 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_CURRENCY';
33854 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
33855 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
33856 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
33857 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
33858 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
33859 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
33860 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
33861 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
33862 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
33863 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
33864 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
33865 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
33866 G_CURRENCY_DETAIL_ID_TBL(M) := G_CURRENCY_DETAIL_ID_TBL_P(i);
33867 G_CURRENCY_HEADER_ID_TBL(M) := G_CURRENCY_HEADER_ID_TBL_P(i);
33868 G_SELLING_ROUNDING_TBL(M) := G_SELLING_ROUNDING_TBL_P(i);
33869 G_ORDER_CURRENCY_TBL(M) := G_ORDER_CURRENCY_TBL_P(i);
33870 G_BASE_CURRENCY_CODE_TBL(M) := G_BASE_CURRENCY_CODE_TBL_P(i);
33871 G_PRICING_EFFECTIVE_DATE_TBL(M) := G_PRICING_EFFECTIVE_DATE_TBL_P(i);
33872 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
33873 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
33874 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
33875
33876
33877 M:=M+1;
33878 lq_line_index := G_LINE_INDEX_TBL_P(i);
33879 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
33880 end if;
33881
33882 -- set product attributes
33883 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
33884 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
33885 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
33886 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
33887 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
33888 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
33889 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
33890 G_VALIDATED_FLAG_tbl(K) := G_NO;
33891 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
33892 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
33893 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
33894 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
33895 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
33896 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
33897 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
33898 G_SETUP_VALUE_TO_tbl(K) :=NULL;
33899 G_GROUPING_NUMBER_tbl(K) :=NULL;
33900 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_CURRENCY';
33901 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
33902 G_DATATYPE_tbl(K) :=NULL;
33903 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
33904 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
33905 G_QUALIFIER_TYPE_TBL(K) :=null;
33906 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
33907 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
33908 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
33909 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
33910 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
33911 K:= K+1;
33912 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33913 engine_debug('The value of K: ' || K);
33914 END IF;
33915 end loop;
33916 end if;
33917 END LOOP;
33918
33919 qp_debug_util.tstop('L_PROD_CUR_CURRENCY');
33920
33921 CLOSE l_prod_cur_currency;
33922
33923 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33924 engine_debug('before l_prod_pric_cur_currency...');
33925 END IF;
33926
33927 qp_debug_util.tstart('L_PROD_PRIC_CUR_CURRENCY','Cursor Loop l_prod_pric_cur_currency');
33928 OPEN l_prod_pric_cur_currency(p_pricing_phase_id);
33929
33930
33931
33932 LOOP
33933 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
33934 deleted here. There is no need to explicitly delete since BULK COLLECT
33935 will truncate the data before populating. */
33936
33937 -- fetch into _P , and _PR tables here
33938 FETCH l_prod_pric_cur_currency BULK COLLECT INTO
33939 G_LIST_HEADER_ID_TBL_P,
33940 G_LIST_LINE_ID_TBL_P,
33941 G_LIST_LINE_TYPE_TBL_P,
33942 G_LINE_INDEX_TBL_P,
33943 G_APPLIED_FLAG_TBL_P,
33944 G_ATTRIBUTE_LEVEL_TBL_P,
33945 G_ATTRIBUTE_TYPE_TBL_P,
33946 G_CONTEXT_TBL_P,
33947 G_ATTRIBUTE_TBL_P,
33948 G_VALUE_FROM_TBL_P,
33949 G_PRODUCT_UOM_CODE_TBL_P,
33950 G_EXCLUDER_FLAG_TBL_P,
33951 G_AUTOMATIC_FLAG_TBL_P,
33952 G_MODIFIER_LEVEL_CODE_TBL_P,
33953 G_PRIMARY_UOM_FLAG_TBL_P,
33954 G_OPER_CALCULATION_CODE_TBL_P,
33955 G_OPERAND_VALUE_TBL_P,
33956 G_PRICING_GROUP_SEQUENCE_TBL_P,
33957 G_LIST_TYPE_CODE_TBL_P,
33958 G_ROUNDING_FACTOR_TBL_P,
33959 G_PRICING_PHASE_ID_TBL_P,
33960 G_PRICE_BREAK_TYPE_CODE_TBL_P,
33961 G_INCOMP_GRP_CODE_TBL_P,
33962 G_PRICE_FORMULA_ID_TBL_P,
33963 G_PRODUCT_PRECEDENCE_TBL_P,
33964 G_LIST_LINE_NO_TBL_P,
33965 G_ATTRIBUTE_LEVEL_TBL_PR,
33966 G_ATTRIBUTE_TYPE_TBL_PR,
33967 G_CONTEXT_TBL_PR,
33968 G_ATTRIBUTE_TBL_PR,
33969 G_VALUE_FROM_TBL_PR,
33970 G_SETUP_VALUE_FROM_TBL_PR,
33971 G_SETUP_VALUE_TO_TBL_PR,
33972 G_OPERATOR_TYPE_TBL_PR,
33973 G_DATATYPE_TBL_PR,
33974 G_CURRENCY_DETAIL_ID_TBL_P,
33975 G_CURRENCY_HEADER_ID_TBL_P,
33976 G_SELLING_ROUNDING_TBL_P,
33977 G_ORDER_CURRENCY_TBL_P,
33978 G_PRICING_EFFECTIVE_DATE_TBL_P ,
33979 G_BASE_CURRENCY_CODE_TBL_P
33980 ,G_BREAK_UOM_TBL_P /* Proration */
33981 ,G_BREAK_CONTEXT_TBL_P /* Proration */
33982 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
33983 LIMIT nROWS;
33984 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
33985
33986 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
33987 for i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
33988 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
33989 l_prod_qual_count := l_prod_qual_count + 1;
33990 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
33991
33992 -- set attributes
33993 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
33994 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
33995 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
33996 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
33997 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
33998 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_PRICING_CURRENCY';
33999 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
34000 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
34001 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
34002 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
34003 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
34004 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
34005 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_PRICING_CURRENCY';
34006 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
34007 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
34008 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
34009 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
34010 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
34011 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
34012 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
34013 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
34014 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
34015 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
34016 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
34017 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
34018 G_CURRENCY_DETAIL_ID_TBL(M) := G_CURRENCY_DETAIL_ID_TBL_P(i);
34019 G_CURRENCY_HEADER_ID_TBL(M) := G_CURRENCY_HEADER_ID_TBL_P(i);
34020 G_SELLING_ROUNDING_TBL(M) := G_SELLING_ROUNDING_TBL_P(i);
34021 G_ORDER_CURRENCY_TBL(M) := G_ORDER_CURRENCY_TBL_P(i);
34022 G_BASE_CURRENCY_CODE_TBL(M) := G_BASE_CURRENCY_CODE_TBL_P(i);
34023 G_PRICING_EFFECTIVE_DATE_TBL(M) := G_PRICING_EFFECTIVE_DATE_TBL_P(i);
34024 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
34025 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
34026 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
34027
34028 M:=M+1;
34029 lq_line_index := G_LINE_INDEX_TBL_P(i);
34030 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
34031 end if;
34032
34033 -- set product attributes
34034 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
34035 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
34036 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
34037 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
34038 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
34039 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
34040 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
34041 G_VALIDATED_FLAG_tbl(K) := G_NO;
34042 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
34043 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
34044 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
34045 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
34046 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
34047 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
34048 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
34049 G_SETUP_VALUE_TO_tbl(K) :=NULL;
34050 G_GROUPING_NUMBER_tbl(K) :=NULL;
34051 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_PRICING_CURRENCY';
34052 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
34053 G_DATATYPE_tbl(K) :=NULL;
34054 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
34055 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
34056 --G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_Q(i); -- fix bug 2767927 big search failed with no data found
34057 G_QUALIFIER_TYPE_TBL(K) :=null;
34058 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
34059 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
34060 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
34061 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
34062 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
34063 K:= K+1;
34064 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34065 engine_debug('The value of K: ' || K);
34066
34067 END IF;
34068 --set pricing attributes
34069 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
34070 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
34071 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_PR(I);
34072 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_PR(I);
34073 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_PR(I);
34074 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_PR(I);
34075 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_PR(I);
34076 G_COMPARISON_OPERATOR_TYPE_tbl(K):=G_OPERATOR_TYPE_TBL_PR(I);
34077 G_VALIDATED_FLAG_tbl(K) :=G_NO;
34078 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
34079 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
34080 G_PRICING_ATTR_FLAG_tbl(K) :=G_YES;
34081 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
34082 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
34083 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
34084 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
34085 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
34086 G_GROUPING_NUMBER_tbl(K) :=NULL;
34087 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_PRICING_CURRENCY';
34088 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
34089 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
34090 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
34091 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
34092 G_QUALIFIER_TYPE_TBL(K) :=NULL;
34093 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
34094 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
34095 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
34096 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
34097 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
34098 K:= K+1;
34099 END IF;
34100 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34101 engine_debug('The value of K: ' || K);
34102 END IF;
34103 end loop;
34104 end if;
34105 END LOOP;
34106 qp_debug_util.tstop('L_PROD_PRIC_CUR_CURRENCY');
34107 CLOSE l_prod_pric_cur_currency; -- 4331801/4365538
34108 else -- vivek, multi currency not installed, not used
34109 --selecting lists that match product and qualifiers attributes
34110
34111 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34112 engine_debug('before l_prod_qual_cur...');
34113 END IF;
34114 qp_debug_util.tstart('L_PROD_QUAL_CUR','Cursor Loop l_prod_qual_cur');
34115 OPEN l_prod_qual_cur(p_pricing_phase_id);
34116
34117 LOOP
34118 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
34119 deleted here. There is no need to explicitly delete since BULK COLLECT
34120 will truncate the data before populating. */
34121
34122 -- fetch into _P and _Q tables here
34123 FETCH l_prod_qual_cur BULK COLLECT INTO
34124 G_LIST_HEADER_ID_TBL_P,
34125 G_LIST_LINE_ID_TBL_P,
34126 G_LIST_LINE_TYPE_TBL_P,
34127 G_LINE_INDEX_TBL_P,
34128 G_APPLIED_FLAG_TBL_P,
34129 G_ATTRIBUTE_LEVEL_TBL_P,
34130 G_ATTRIBUTE_TYPE_TBL_P,
34131 G_CONTEXT_TBL_P,
34132 G_ATTRIBUTE_TBL_P,
34133 G_VALUE_FROM_TBL_P,
34134 G_PRODUCT_UOM_CODE_TBL_P,
34135 G_EXCLUDER_FLAG_TBL_P,
34136 G_CONTEXT_TBL_Q,
34137 G_ATTRIBUTE_TBL_Q,
34138 G_VALUE_FROM_TBL_Q,
34139 G_GROUPING_NO_TBL_Q,
34140 G_QUALIFIER_PRECEDENCE_TBL_Q,
34141 G_DATATYPE_TBL_Q,
34142 G_SETUP_VALUE_FROM_TBL_Q,
34143 G_SETUP_VALUE_TO_TBL_Q,
34144 G_AUTOMATIC_FLAG_TBL_P,
34145 G_MODIFIER_LEVEL_CODE_TBL_P,
34146 G_PRIMARY_UOM_FLAG_TBL_P,
34147 G_OPER_CALCULATION_CODE_TBL_P,
34148 G_OPERAND_VALUE_TBL_P,
34149 G_PRICING_GROUP_SEQUENCE_TBL_P,
34150 G_LIST_TYPE_CODE_TBL_P,
34151 G_ROUNDING_FACTOR_TBL_P,
34152 G_PRICING_PHASE_ID_TBL_P,
34153 G_PRICE_BREAK_TYPE_CODE_TBL_P,
34154 G_INCOMP_GRP_CODE_TBL_P,
34155 G_PRICE_FORMULA_ID_TBL_P,
34156 G_PRODUCT_PRECEDENCE_TBL_P,
34157 G_LIST_LINE_NO_TBL_P,
34158 G_QUALIFIER_TYPE_TBL_Q
34159 ,G_BREAK_UOM_TBL_P /* Proration */
34160 ,G_BREAK_CONTEXT_TBL_P /* Proration */
34161 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
34162 LIMIT nROWS;
34163
34164 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
34165
34166 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
34167 for i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
34168 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
34169 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34170 engine_debug('Product_Qualifier');
34171 END IF;
34172 l_prod_qual_count := l_prod_qual_count + 1;
34173 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
34174
34175 -- set attributes
34176 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
34177 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
34178 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
34179 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
34180 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
34181 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_QUALIFIER';
34182 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
34183 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
34184 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
34185 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
34186 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
34187 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
34188 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_QUALIFIER';
34189 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
34190 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
34191 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
34192 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
34193 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
34194 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
34195 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
34196 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
34197 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
34198 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
34199 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
34200 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
34201 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
34202 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
34203 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
34204
34205 M:=M+1;
34206 lq_line_index := G_LINE_INDEX_TBL_P(i);
34207 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
34208 end if;
34209
34210 -- set product attributes
34211 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
34212 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
34213 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
34214 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
34215 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
34216 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
34217 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
34218 G_VALIDATED_FLAG_tbl(K) := G_NO;
34219 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
34220 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
34221 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
34222 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
34223 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
34224 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
34225 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
34226 G_SETUP_VALUE_TO_tbl(K) :=NULL;
34227 G_GROUPING_NUMBER_tbl(K) :=NULL;
34228 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER';
34229 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
34230 G_DATATYPE_tbl(K) :=NULL;
34231 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
34232 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
34233 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_Q(i);
34234 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
34235 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
34236 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
34237 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
34238 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
34239 K:= K+1;
34240 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34241 engine_debug('The value of K: ' || K);
34242
34243 END IF;
34244 -- set qualifier attributes
34245 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
34246 G_ATTRIBUTE_LEVEL_tbl(K) := nvl(G_ATTRIBUTE_LEVEL_TBL_P(i),'X');
34247 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
34248 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_Q(i);
34249 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_Q(i);
34250 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_Q(i);
34251 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
34252 G_VALIDATED_FLAG_tbl(K) := G_NO;
34253 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
34254 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
34255 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
34256 G_LINE_DETAIL_INDEX_tbl(K) := L_LINE_DETAIL_INDEX;
34257 G_LIST_HEADER_ID_tbl(K) := G_LIST_HEADER_ID_TBL_P(i);
34258 G_LIST_LINE_ID_tbl(K) := G_LIST_LINE_ID_TBL_P(i);
34259 G_SETUP_VALUE_FROM_tbl(K) := G_SETUP_VALUE_FROM_TBL_Q(i);
34260 G_SETUP_VALUE_TO_tbl(K) := G_SETUP_VALUE_TO_TBL_Q(i);
34261 G_GROUPING_NUMBER_tbl(K) := G_GROUPING_NO_TBL_Q(i);
34262 G_PRICING_STATUS_TEXT_tbl(K) := 'PRODUCT_QUALIFIER';
34263 G_QUALIFIER_PRECEDENCE_tbl(K) := G_QUALIFIER_PRECEDENCE_TBL_Q(i);
34264 G_DATATYPE_tbl(K) := G_DATATYPE_TBL_Q(i);
34265 G_EXCLUDER_FLAG_TBL(K) := G_EXCLUDER_FLAG_TBL_P(i);
34266 G_PRODUCT_UOM_CODE_TBL(K) := G_PRODUCT_UOM_CODE_TBL_P(i);
34267 G_QUALIFIER_TYPE_TBL(K) := G_QUALIFIER_TYPE_TBL_Q(i);
34268 G_PRICING_PHASE_ID_TBL_A(K) := G_PRICING_PHASE_ID_TBL_P(i);
34269 G_INCOMP_GRP_CODE_TBL_A(K) := G_INCOMP_GRP_CODE_TBL_P(i);
34270 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := 'NULL';
34271 G_MODIFIER_LEVEL_CODE_TBL_A(K) := G_MODIFIER_LEVEL_CODE_TBL_P(i);
34272 G_PRIMARY_UOM_FLAG_TBL_A(K) := G_PRIMARY_UOM_FLAG_TBL_P(i);
34273 K:= K+1;
34274 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34275 engine_debug('The value of K: ' || K);
34276
34277 END IF;
34278 end loop;
34279 end if;
34280 END LOOP;
34281 qp_debug_util.tstop('L_PROD_QUAL_CUR');
34282
34283 CLOSE l_prod_qual_cur;
34284
34285 lq_line_index := -9999;
34286 lq_list_line_id := -9999;
34287
34288 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34289 engine_debug('before l_prod_qual_pric_cur...');
34290 END IF;
34291 qp_debug_util.tstart('L_PROD_QUAL_PRIC_CUR','Cursor Loop l_prod_qual_pric_cur');
34292 OPEN l_prod_qual_pric_cur(p_pricing_phase_id);
34293
34294 LOOP
34295 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
34296 deleted here. There is no need to explicitly delete since BULK COLLECT
34297 will truncate the data before populating. */
34298
34299 -- fetch into _P , _Q tables and _PR tables here
34300 FETCH l_prod_qual_pric_cur BULK COLLECT INTO
34301 G_LIST_HEADER_ID_TBL_P,
34302 G_LIST_LINE_ID_TBL_P,
34303 G_LIST_LINE_TYPE_TBL_P,
34304 G_LINE_INDEX_TBL_P,
34305 G_APPLIED_FLAG_TBL_P,
34306 G_ATTRIBUTE_LEVEL_TBL_P,
34307 G_ATTRIBUTE_TYPE_TBL_P,
34308 G_CONTEXT_TBL_P,
34309 G_ATTRIBUTE_TBL_P,
34310 G_VALUE_FROM_TBL_P,
34311 G_PRODUCT_UOM_CODE_TBL_P,
34312 G_EXCLUDER_FLAG_TBL_P,
34313 G_CONTEXT_TBL_Q,
34314 G_ATTRIBUTE_TBL_Q,
34315 G_VALUE_FROM_TBL_Q,
34316 G_GROUPING_NO_TBL_Q,
34317 G_QUALIFIER_PRECEDENCE_TBL_Q,
34318 G_DATATYPE_TBL_Q,
34319 G_SETUP_VALUE_FROM_TBL_Q,
34320 G_SETUP_VALUE_TO_TBL_Q,
34321 G_AUTOMATIC_FLAG_TBL_P,
34322 G_MODIFIER_LEVEL_CODE_TBL_P,
34323 G_PRIMARY_UOM_FLAG_TBL_P,
34324 G_OPER_CALCULATION_CODE_TBL_P,
34325 G_OPERAND_VALUE_TBL_P,
34326 G_PRICING_GROUP_SEQUENCE_TBL_P,
34327 G_LIST_TYPE_CODE_TBL_P,
34328 G_ROUNDING_FACTOR_TBL_P,
34329 G_PRICING_PHASE_ID_TBL_P,
34330 G_PRICE_BREAK_TYPE_CODE_TBL_P,
34331 G_INCOMP_GRP_CODE_TBL_P,
34332 G_PRICE_FORMULA_ID_TBL_P,
34333 G_PRODUCT_PRECEDENCE_TBL_P,
34334 G_LIST_LINE_NO_TBL_P,
34335 G_QUALIFIER_TYPE_TBL_Q ,
34336 G_ATTRIBUTE_LEVEL_TBL_PR,
34337 G_ATTRIBUTE_TYPE_TBL_PR,
34338 G_CONTEXT_TBL_PR,
34339 G_ATTRIBUTE_TBL_PR,
34340 G_VALUE_FROM_TBL_PR,
34341 G_SETUP_VALUE_FROM_TBL_PR,
34342 G_SETUP_VALUE_TO_TBL_PR,
34343 G_OPERATOR_TYPE_TBL_PR,
34344 G_DATATYPE_TBL_PR
34345 ,G_BREAK_UOM_TBL_P /* Proration */
34346 ,G_BREAK_CONTEXT_TBL_P /* Proration */
34347 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
34348 LIMIT nROWS;
34349 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
34350
34351 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
34352 for i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
34353 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
34354 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34355 engine_debug('Product_Qualifier_Pricing');
34356 END IF;
34357 l_prod_qual_count := l_prod_qual_count + 1;
34358 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
34359
34360 -- set attributes
34361 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
34362 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
34363 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
34364 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
34365 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
34366 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_QUALIFIER_PRICING';
34367 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
34368 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
34369 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
34370 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
34371 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
34372 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
34373 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_QUALIFIER_PRICING';
34374 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
34375 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
34376 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
34377 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
34378 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
34379 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
34380 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
34381 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
34382 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
34383 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
34384 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
34385 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
34386 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
34387 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
34388 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
34389
34390 M:=M+1;
34391 lq_line_index := G_LINE_INDEX_TBL_P(i);
34392 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
34393 end if;
34394
34395 -- set product attributes
34396 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
34397 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
34398 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
34399 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
34400 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
34401 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
34402 G_COMPARISON_OPERATOR_TYPE_tbl(K):= NULL;
34403 G_VALIDATED_FLAG_tbl(K) := G_NO;
34404 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
34405 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
34406 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
34407 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
34408 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
34409 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
34410 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
34411 G_SETUP_VALUE_TO_tbl(K) :=NULL;
34412 G_GROUPING_NUMBER_tbl(K) :=NULL;
34413 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_PRICING';
34414 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
34415 G_DATATYPE_tbl(K) :=NULL;
34416 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
34417 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
34418 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_Q(i);
34419 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
34420 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
34421 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
34422 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
34423 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
34424 K:= K+1;
34425 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34426 engine_debug('The value of K: ' || K);
34427
34428 END IF;
34429 -- set qualifier attributes
34430 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
34431 G_ATTRIBUTE_LEVEL_tbl(K) := nvl(G_ATTRIBUTE_LEVEL_TBL_P(i),'X');
34432 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
34433 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_Q(i);
34434 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_Q(i);
34435 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_Q(i);
34436 G_COMPARISON_OPERATOR_TYPE_tbl(K):= NULL;
34437 G_VALIDATED_FLAG_tbl(K) := G_NO;
34438 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
34439 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
34440 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
34441 G_LINE_DETAIL_INDEX_tbl(K) := L_LINE_DETAIL_INDEX;
34442 G_LIST_HEADER_ID_tbl(K) := G_LIST_HEADER_ID_TBL_P(i);
34443 G_LIST_LINE_ID_tbl(K) := G_LIST_LINE_ID_TBL_P(i);
34444 G_SETUP_VALUE_FROM_tbl(K) := G_SETUP_VALUE_FROM_TBL_Q(i);
34445 G_SETUP_VALUE_TO_tbl(K) := G_SETUP_VALUE_TO_TBL_Q(i);
34446 G_GROUPING_NUMBER_tbl(K) := G_GROUPING_NO_TBL_Q(i);
34447 G_PRICING_STATUS_TEXT_tbl(K) := 'PRODUCT_QUALIFIER_PRICING';
34448 G_QUALIFIER_PRECEDENCE_tbl(K) := G_QUALIFIER_PRECEDENCE_TBL_Q(i);
34449 G_DATATYPE_tbl(K) := G_DATATYPE_TBL_Q(i);
34450 G_EXCLUDER_FLAG_TBL(K) := G_EXCLUDER_FLAG_TBL_P(i);
34451 G_PRODUCT_UOM_CODE_TBL(K) := G_PRODUCT_UOM_CODE_TBL_P(i);
34452 G_QUALIFIER_TYPE_TBL(K) := G_QUALIFIER_TYPE_TBL_Q(i);
34453 G_PRICING_PHASE_ID_TBL_A(K) := G_PRICING_PHASE_ID_TBL_P(i);
34454 G_INCOMP_GRP_CODE_TBL_A(K) := G_INCOMP_GRP_CODE_TBL_P(i);
34455 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := 'NULL';
34456 G_MODIFIER_LEVEL_CODE_TBL_A(K) := G_MODIFIER_LEVEL_CODE_TBL_P(i);
34457 G_PRIMARY_UOM_FLAG_TBL_A(K) := G_PRIMARY_UOM_FLAG_TBL_P(i);
34458 K:= K+1;
34459
34460 --set pricing attributes
34461 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
34462 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
34463 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_PR(I);
34464 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_PR(I);
34465 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_PR(I);
34466 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_PR(I);
34467 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_PR(I);
34468 G_COMPARISON_OPERATOR_TYPE_tbl(K):=G_OPERATOR_TYPE_TBL_PR(I);
34469 G_VALIDATED_FLAG_tbl(K) :=G_NO;
34470 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
34471 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
34472 G_PRICING_ATTR_FLAG_tbl(K) :=G_YES;
34473 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
34474 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
34475 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
34476 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
34477 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
34478 G_GROUPING_NUMBER_tbl(K) :=NULL;
34479 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_PRICING';
34480 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
34481 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
34482 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
34483 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
34484 G_QUALIFIER_TYPE_TBL(K) :=NULL;
34485 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
34486 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
34487 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
34488 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
34489 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
34490 K:= K+1;
34491 END IF;
34492 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34493 engine_debug('The value of K: ' || K);
34494
34495 END IF;
34496 end loop;
34497 end if;
34498 END LOOP;
34499
34500 qp_debug_util.tstop('L_PROD_QUAL_PRIC_CUR');
34501 CLOSE l_prod_qual_pric_cur;
34502
34503 lq_line_index := -9999;
34504 lq_list_line_id := -9999;
34505
34506 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34507 engine_debug('before l_prod_cur...');
34508 END IF;
34509 qp_debug_util.tstart('L_PROD_CUR','Cursor Loop l_prod_cur');
34510 OPEN l_prod_cur(p_pricing_phase_id);
34511
34512 LOOP
34513 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
34514 deleted here. There is no need to explicitly delete since BULK COLLECT
34515 will truncate the data before populating. */
34516
34517 -- fetch into _P and _Q tables here
34518 FETCH l_prod_cur BULK COLLECT INTO
34519 G_LIST_HEADER_ID_TBL_P,
34520 G_LIST_LINE_ID_TBL_P,
34521 G_LIST_LINE_TYPE_TBL_P,
34522 G_LINE_INDEX_TBL_P,
34523 G_APPLIED_FLAG_TBL_P,
34524 G_ATTRIBUTE_LEVEL_TBL_P,
34525 G_ATTRIBUTE_TYPE_TBL_P,
34526 G_CONTEXT_TBL_P,
34527 G_ATTRIBUTE_TBL_P,
34528 G_VALUE_FROM_TBL_P,
34529 G_PRODUCT_UOM_CODE_TBL_P,
34530 G_EXCLUDER_FLAG_TBL_P,
34531 G_AUTOMATIC_FLAG_TBL_P,
34532 G_MODIFIER_LEVEL_CODE_TBL_P,
34533 G_PRIMARY_UOM_FLAG_TBL_P,
34534 G_OPER_CALCULATION_CODE_TBL_P,
34535 G_OPERAND_VALUE_TBL_P,
34536 G_PRICING_GROUP_SEQUENCE_TBL_P,
34537 G_LIST_TYPE_CODE_TBL_P,
34538 G_ROUNDING_FACTOR_TBL_P,
34539 G_PRICING_PHASE_ID_TBL_P,
34540 G_PRICE_BREAK_TYPE_CODE_TBL_P,
34541 G_INCOMP_GRP_CODE_TBL_P,
34542 G_PRICE_FORMULA_ID_TBL_P,
34543 G_PRODUCT_PRECEDENCE_TBL_P,
34544 G_LIST_LINE_NO_TBL_P
34545 ,G_BREAK_UOM_TBL_P /* Proration */
34546 ,G_BREAK_CONTEXT_TBL_P /* Proration */
34547 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
34548 LIMIT nROWS;
34549
34550 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
34551
34552 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
34553 for i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
34554 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
34555 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34556 engine_debug('Product Only');
34557 END IF;
34558 l_prod_qual_count := l_prod_qual_count + 1;
34559 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
34560
34561 -- set attributes
34562 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
34563 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
34564 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
34565 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
34566 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
34567 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_ONLY';
34568 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
34569 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
34570 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
34571 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
34572 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
34573 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
34574 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_ONLY';
34575 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
34576 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
34577 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
34578 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
34579 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
34580 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
34581 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
34582 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
34583 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
34584 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
34585 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
34586 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
34587 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
34588 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
34589 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
34590
34591 M:=M+1;
34592 lq_line_index := G_LINE_INDEX_TBL_P(i);
34593 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
34594 end if;
34595
34596 -- set product attributes
34597 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
34598 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
34599 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
34600 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
34601 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
34602 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
34603 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
34604 G_VALIDATED_FLAG_tbl(K) := G_NO;
34605 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
34606 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
34607 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
34608 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
34609 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
34610 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
34611 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
34612 G_SETUP_VALUE_TO_tbl(K) :=NULL;
34613 G_GROUPING_NUMBER_tbl(K) :=NULL;
34614 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_ONLY';
34615 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
34616 G_DATATYPE_tbl(K) :=NULL;
34617 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
34618 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
34619 G_QUALIFIER_TYPE_TBL(K) :=NULL;
34620 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
34621 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
34622 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
34623 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
34624 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
34625 K:= K+1;
34626 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34627 engine_debug('The value of K: ' || K);
34628
34629 END IF;
34630 end loop;
34631 end if;
34632 END LOOP;
34633 qp_debug_util.tstop('L_PROD_CUR');
34634 CLOSE l_prod_cur;
34635
34636 lq_line_index := -9999;
34637 lq_list_line_id := -9999;
34638
34639 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34640 engine_debug('before l_prod_pric_cur...');
34641 END IF;
34642 qp_debug_util.tstart('L_PROD_PRIC_CUR','Cursor Loop l_prod_pric_cur');
34643 OPEN l_prod_pric_cur(p_pricing_phase_id);
34644
34645
34646 LOOP
34647 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
34648 deleted here. There is no need to explicitly delete since BULK COLLECT
34649 will truncate the data before populating. */
34650
34651 -- fetch into _P , and _PR tables here
34652 FETCH l_prod_pric_cur BULK COLLECT INTO
34653 G_LIST_HEADER_ID_TBL_P,
34654 G_LIST_LINE_ID_TBL_P,
34655 G_LIST_LINE_TYPE_TBL_P,
34656 G_LINE_INDEX_TBL_P,
34657 G_APPLIED_FLAG_TBL_P,
34658 G_ATTRIBUTE_LEVEL_TBL_P,
34659 G_ATTRIBUTE_TYPE_TBL_P,
34660 G_CONTEXT_TBL_P,
34661 G_ATTRIBUTE_TBL_P,
34662 G_VALUE_FROM_TBL_P,
34663 G_PRODUCT_UOM_CODE_TBL_P,
34664 G_EXCLUDER_FLAG_TBL_P,
34665 G_AUTOMATIC_FLAG_TBL_P,
34666 G_MODIFIER_LEVEL_CODE_TBL_P,
34667 G_PRIMARY_UOM_FLAG_TBL_P,
34668 G_OPER_CALCULATION_CODE_TBL_P,
34669 G_OPERAND_VALUE_TBL_P,
34670 G_PRICING_GROUP_SEQUENCE_TBL_P,
34671 G_LIST_TYPE_CODE_TBL_P,
34672 G_ROUNDING_FACTOR_TBL_P,
34673 G_PRICING_PHASE_ID_TBL_P,
34674 G_PRICE_BREAK_TYPE_CODE_TBL_P,
34675 G_INCOMP_GRP_CODE_TBL_P,
34676 G_PRICE_FORMULA_ID_TBL_P,
34677 G_PRODUCT_PRECEDENCE_TBL_P,
34678 G_LIST_LINE_NO_TBL_P,
34679 G_ATTRIBUTE_LEVEL_TBL_PR,
34680 G_ATTRIBUTE_TYPE_TBL_PR,
34681 G_CONTEXT_TBL_PR,
34682 G_ATTRIBUTE_TBL_PR,
34683 G_VALUE_FROM_TBL_PR,
34684 G_SETUP_VALUE_FROM_TBL_PR,
34685 G_SETUP_VALUE_TO_TBL_PR,
34686 G_OPERATOR_TYPE_TBL_PR,
34687 G_DATATYPE_TBL_PR
34688 ,G_BREAK_UOM_TBL_P /* Proration */
34689 ,G_BREAK_CONTEXT_TBL_P /* Proration */
34690 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
34691 LIMIT nROWS;
34692 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
34693
34694 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
34695 for i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
34696 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
34697 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34698 engine_debug('Product Pricing Only');
34699 END IF;
34700 l_prod_qual_count := l_prod_qual_count + 1;
34701 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
34702
34703 -- set attributes
34704 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
34705 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
34706 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
34707 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
34708 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
34709 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_PRICING_ONLY';
34710 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
34711 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
34712 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
34713 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
34714 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
34715 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
34716 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_PRICING_ONLY';
34717 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
34718 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
34719 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
34720 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
34721 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
34722 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
34723 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
34724 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
34725 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
34726 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
34727 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
34728 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
34729 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
34730 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
34731 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
34732
34733 M:=M+1;
34734 lq_line_index := G_LINE_INDEX_TBL_P(i);
34735 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
34736 end if;
34737
34738 -- set product attributes
34739 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
34740 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
34741 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
34742 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
34743 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
34744 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
34745 G_COMPARISON_OPERATOR_TYPE_tbl(K):= NULL;
34746 G_VALIDATED_FLAG_tbl(K) := G_NO;
34747 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
34748 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
34749 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
34750 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
34751 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
34752 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
34753 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
34754 G_SETUP_VALUE_TO_tbl(K) :=NULL;
34755 G_GROUPING_NUMBER_tbl(K) :=NULL;
34756 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_PRICING_ONLY';
34757 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
34758 G_DATATYPE_tbl(K) :=NULL;
34759 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
34760 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
34761 G_QUALIFIER_TYPE_TBL(K) :=NULL;
34762 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
34763 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
34764 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
34765 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
34766 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
34767 K:= K+1;
34768 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34769 engine_debug('The value of K: ' || K);
34770
34771 END IF;
34772 --set pricing attributes
34773 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
34774 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
34775 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_PR(I);
34776 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_PR(I);
34777 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_PR(I);
34778 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_PR(I);
34779 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_PR(I);
34780 G_COMPARISON_OPERATOR_TYPE_tbl(K):=G_OPERATOR_TYPE_TBL_PR(I);
34781 G_VALIDATED_FLAG_tbl(K) :=G_NO;
34782 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
34783 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
34784 G_PRICING_ATTR_FLAG_tbl(K) :=G_YES;
34785 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
34786 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
34787 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
34788 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
34789 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
34790 G_GROUPING_NUMBER_tbl(K) :=NULL;
34791 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_PRICING_ONLY';
34792 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
34793 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
34794 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
34795 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
34796 G_QUALIFIER_TYPE_TBL(K) :=NULL;
34797 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
34798 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
34799 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
34800 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
34801 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
34802 K:= K+1;
34803 END IF;
34804 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34805 engine_debug('The value of K: ' || K);
34806
34807 END IF;
34808 end loop;
34809 end if;
34810 END LOOP;
34811
34812 qp_debug_util.tstop('L_PROD_PRIC_CUR');
34813 CLOSE l_prod_pric_cur;
34814
34815 --END IF;
34816 end if; -- vivek, multi currency installed
34817
34818 IF M > 1 THEN
34819 qp_debug_util.tstart('INSERT_LDETS_PRICE_LIST_MULT_NON_MULTI','Inserting into ldets INSERT_LDETS_PRICE_LIST_MULT_NON_MULTI');
34820 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
34821 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34822 engine_debug('last 4 cursors- multi-currency TRUE - insert_ldets2');
34823 END IF;
34824 INSERT_LDETS_PRICE_LIST_MULT(
34825 p_LINE_DETAIL_INDEX => G_LINE_DETAIL_INDEX_LD_TBL,
34826 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
34827 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
34828 p_LINE_INDEX => G_LINE_INDEX_LD_TBL,
34829 p_CREATED_FROM_LIST_HEADER_ID =>G_LIST_HEADER_ID_LD_TBL,
34830 p_CREATED_FROM_LIST_LINE_ID =>G_LIST_LINE_ID_LD_TBL,
34831 p_CREATED_FROM_LIST_LINE_TYPE =>G_LIST_LINE_TYPE_TBL,
34832 p_CREATED_FROM_LIST_TYPE_CODE =>G_LIST_TYPE_CODE_TBL,
34833 p_CREATED_FROM_SQL =>G_CREATED_FROM_SQL_TBL,
34834 p_PRICING_GROUP_SEQUENCE =>G_PRICING_GROUP_SEQUENCE_TBL,
34835 P_PRICING_PHASE_ID =>G_PRICING_PHASE_ID_TBL,
34836 p_OPERAND_CALCULATION_CODE =>G_OPERAND_CALCULATION_CODE_TBL,
34837 p_OPERAND_VALUE =>G_OPERAND_VALUE_TBL,
34838 p_PRICE_FORMULA_ID =>G_PRICE_FORMULA_ID_TBL,
34839 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_LD_TBL,
34840 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_LD_TBL,
34841 p_PRODUCT_PRECEDENCE =>G_PRODUCT_PRECEDENCE_TBL ,
34842 p_INCOMPATABLILITY_GRP_CODE =>G_INCOMP_GRP_CODE_TBL,
34843 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_LD_TBL,
34844 p_APPLIED_FLAG =>G_APPLIED_FLAG_LD_TBL,
34845 p_AUTOMATIC_FLAG =>G_AUTOMATIC_FLAG_TBL,
34846 p_PRIMARY_UOM_FLAG =>G_PRIMARY_UOM_FLAG_TBL,
34847 p_MODIFIER_LEVEL_CODE =>G_MODIFIER_LEVEL_CODE_TBL,
34848 p_LIST_LINE_NO =>G_LIST_LINE_NO_TBL,
34849 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
34850 p_CURRENCY_DETAIL_ID =>G_CURRENCY_DETAIL_ID_TBL,
34851 p_CURRENCY_HEADER_ID =>G_CURRENCY_HEADER_ID_TBL,
34852 p_SELLING_ROUNDING_FACTOR =>G_SELLING_ROUNDING_TBL,
34853 p_ORDER_CURRENCY =>G_ORDER_CURRENCY_TBL,
34854 p_PRICING_EFFECTIVE_DATE =>G_PRICING_EFFECTIVE_DATE_TBL,
34855 p_BASE_CURRENCY_CODE =>G_BASE_CURRENCY_CODE_TBL,
34856 P_BREAK_UOM_CODE =>G_BREAK_UOM_TBL, /* Proration */
34857 P_BREAK_UOM_CONTEXT =>G_BREAK_CONTEXT_TBL, /* Proration */
34858 P_BREAK_UOM_ATTRIBUTE =>G_BREAK_ATTRIBUTE_TBL, /* Proration */
34859 x_status_code =>l_status_code,
34860 x_status_text =>l_status_text);
34861 else -- vivek, multi currency not installed, not used
34862 INSERT_LDETS_PRICE_LIST_PVT( p_LINE_DETAIL_index => G_LINE_DETAIL_INDEX_LD_TBL,
34863 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
34864 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
34865 p_LINE_INDEX => G_LINE_INDEX_LD_TBL,
34866 p_CREATED_FROM_LIST_HEADER_ID =>G_LIST_HEADER_ID_LD_TBL,
34867 p_CREATED_FROM_LIST_LINE_ID =>G_LIST_LINE_ID_LD_TBL,
34868 p_CREATED_FROM_LIST_LINE_TYPE =>G_LIST_LINE_TYPE_TBL,
34869 p_CREATED_FROM_LIST_TYPE_CODE =>G_LIST_TYPE_CODE_TBL,
34870 p_CREATED_FROM_SQL =>G_CREATED_FROM_SQL_TBL,
34871 p_PRICING_GROUP_SEQUENCE =>G_PRICING_GROUP_SEQUENCE_TBL,
34872 P_PRICING_PHASE_ID =>G_PRICING_PHASE_ID_TBL,
34873 p_OPERAND_CALCULATION_CODE =>G_OPERAND_CALCULATION_CODE_TBL,
34874 p_OPERAND_VALUE =>G_OPERAND_VALUE_TBL,
34875 p_PRICE_FORMULA_ID =>G_PRICE_FORMULA_ID_TBL,
34876 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_LD_TBL,
34877 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_LD_TBL,
34878 p_PRODUCT_PRECEDENCE =>G_PRODUCT_PRECEDENCE_TBL ,
34879 p_INCOMPATABLILITY_GRP_CODE =>G_INCOMP_GRP_CODE_TBL,
34880 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_LD_TBL,
34881 p_APPLIED_FLAG =>G_APPLIED_FLAG_LD_TBL,
34882 p_AUTOMATIC_FLAG =>G_AUTOMATIC_FLAG_TBL,
34883 p_PRIMARY_UOM_FLAG =>G_PRIMARY_UOM_FLAG_TBL,
34884 p_MODIFIER_LEVEL_CODE =>G_MODIFIER_LEVEL_CODE_TBL,
34885 p_LIST_LINE_NO =>G_LIST_LINE_NO_TBL,
34886 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
34887 P_BREAK_UOM_CODE =>G_BREAK_UOM_TBL, /* Proration */
34888 P_BREAK_UOM_CONTEXT =>G_BREAK_CONTEXT_TBL, /* Proration */
34889 P_BREAK_UOM_ATTRIBUTE =>G_BREAK_ATTRIBUTE_TBL, /* Proration */
34890 x_status_code =>l_status_code,
34891 x_status_text =>l_status_text
34892 );
34893 end if; -- vivek, multi currency installed
34894 qp_debug_util.tstop('INSERT_LDETS_PRICE_LIST_MULT_NON_MULTI');
34895 END IF;
34896
34897 IF K > 1 THEN
34898 qp_debug_util.tstart('INSERT_PRICE_LIST_ATTRS','Inserting into line attrs INSERT_PRICE_LIST_ATTRS');
34899 INSERT_PRICE_LIST_ATTRS
34900 ( p_LINE_INDEX_tbl =>G_LINE_INDEX_tbl,
34901 p_LINE_DETAIL_INDEX_tbl =>G_LINE_DETAIL_INDEX_tbl,
34902 p_ATTRIBUTE_LEVEL_tbl =>G_ATTRIBUTE_LEVEL_tbl,
34903 p_ATTRIBUTE_TYPE_tbl =>G_ATTRIBUTE_TYPE_tbl,
34904 p_LIST_HEADER_ID_tbl =>G_LIST_HEADER_ID_tbl,
34905 p_LIST_LINE_ID_tbl =>G_LIST_LINE_ID_tbl,
34906 p_CONTEXT_tbl =>G_CONTEXT_tbl,
34907 p_ATTRIBUTE_tbl =>G_ATTRIBUTE_tbl,
34908 p_VALUE_FROM_tbl =>G_VALUE_FROM_tbl,
34909 p_SETUP_VALUE_FROM_tbl =>G_SETUP_VALUE_FROM_tbl,
34910 p_SETUP_VALUE_TO_tbl =>G_SETUP_VALUE_TO_tbl,
34911 p_GROUPING_NUMBER_tbl => G_GROUPING_NUMBER_tbl,
34912 p_COMPARISON_OPERATOR_TYPE_tbl =>G_COMPARISON_OPERATOR_TYPE_tbl,
34913 p_VALIDATED_FLAG_tbl =>G_VALIDATED_FLAG_tbl,
34914 p_APPLIED_FLAG_tbl =>G_APPLIED_FLAG_tbl,
34915 p_PRICING_STATUS_CODE_tbl =>G_PRICING_STATUS_CODE_tbl,
34916 p_PRICING_STATUS_TEXT_tbl =>G_PRICING_STATUS_TEXT_tbl,
34917 p_QUALIFIER_PRECEDENCE_tbl =>G_QUALIFIER_PRECEDENCE_tbl,
34918 p_DATATYPE_tbl =>G_DATATYPE_tbl,
34919 p_PRICING_ATTR_FLAG_tbl =>G_PRICING_ATTR_FLAG_tbl,
34920 p_QUALIFIER_TYPE_tbl =>G_QUALIFIER_TYPE_TBL,
34921 p_product_uom_code_tbl =>G_PRODUCT_UOM_CODE_TBL,
34922 p_excluder_flag_tbl =>G_EXCLUDER_FLAG_TBL,
34923 p_PRICING_PHASE_ID_TBL =>G_PRICING_PHASE_ID_TBL_A,
34924 p_INCOMPATABILITY_GRP_CODE_TBL =>G_INCOMP_GRP_CODE_TBL_A,
34925 p_LINE_DETAIL_TYPE_CODE_TBL =>G_LINE_DETAIL_TYPE_CODE_TBL_A,
34926 p_MODIFIER_LEVEL_CODE_TBL =>G_MODIFIER_LEVEL_CODE_TBL_A,
34927 p_PRIMARY_UOM_FLAG_TBL =>G_PRIMARY_UOM_FLAG_TBL_A,
34928 x_status_code =>l_status_code,
34929 x_status_text =>l_status_text);
34930 qp_debug_util.tstop('INSERT_PRICE_LIST_ATTRS');
34931 END IF;
34932
34933 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
34934 RAISE E_ROUTINE_ERRORS;
34935 END IF;
34936
34937 --Reset_all_tbls;
34938 Reset_All_Tbls(l_status_code ,l_status_text );
34939 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
34940 RAISE E_ROUTINE_ERRORS;
34941 END IF;
34942
34943 EXCEPTION
34944 WHEN E_ROUTINE_ERRORS THEN
34945 x_status_code := FND_API.G_RET_STS_ERROR;
34946 x_status_text := l_routine||': '||l_status_text;
34947 WHEN OTHERS THEN
34948 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34949 engine_debug('< In Select_Price_List_Lines>: '||SQLERRM);
34950 -- Keep it for debugging purposes
34951 /*
34952 FOR Z In 1 .. G_LIST_HEADER_ID_TBL_P.count
34953 Loop
34954 engine_debug( '--------');
34955 engine_debug( 'Z: '||Z);
34956 engine_debug( 'G_LIST_HEADER_ID_TBL_P: ' || G_LIST_HEADER_ID_TBL_P(Z));
34957 engine_debug( 'G_LIST_LINE_ID_TBL_P: ' || G_LIST_LINE_ID_TBL_P(Z));
34958 engine_debug( 'G_LINE_INDEX_TBL_P: ' || G_LINE_INDEX_TBL_P(Z));
34959 engine_debug( 'G_APPLIED_FLAG_TBL_P: ' || G_APPLIED_FLAG_TBL_P(Z) );
34960 engine_debug( 'G_ATTRIBUTE_LEVEL_TBL_P: ' || G_ATTRIBUTE_LEVEL_TBL_P(Z));
34961 engine_debug( 'G_ATTRIBUTE_TYPE_TBL_P: ' || G_ATTRIBUTE_TYPE_TBL_P(Z) );
34962 engine_debug( 'G_CONTEXT_TBL_P: ' ||G_CONTEXT_TBL_P(Z) );
34963 engine_debug( 'G_ATTRIBUTE_TBL_P: ' || G_ATTRIBUTE_TBL_P(Z));
34964 engine_debug( 'G_VALUE_FROM_TBL_P: ' || G_VALUE_FROM_TBL_P(Z));
34965 engine_debug( 'G_PRODUCT_UOM_CODE_TBL_P: ' || G_PRODUCT_UOM_CODE_TBL_P(Z));
34966 engine_debug( 'G_EXCLUDER_FLAG_TBL_P: ' || G_EXCLUDER_FLAG_TBL_P(Z));
34967 engine_debug( 'G_CONTEXT_TBL_Q: ' || G_CONTEXT_TBL_Q(Z));
34968 engine_debug( 'G_ATTRIBUTE_TBL_Q: ' || G_ATTRIBUTE_TBL_Q(Z));
34969 engine_debug( 'G_VALUE_FROM_TBL_Q: ' ||G_VALUE_FROM_TBL_Q(Z));
34970 engine_debug( 'G_GROUPING_NO_TBL_Q: ' || G_GROUPING_NO_TBL_Q(Z));
34971 engine_debug( 'G_QUALIFIER_PRECEDENCE_TBL_Q: ' || G_QUALIFIER_PRECEDENCE_TBL_Q(Z));
34972 engine_debug( 'G_DATATYPE_TBL_Q: ' || G_DATATYPE_TBL_Q(Z));
34973 engine_debug( 'G_SETUP_VALUE_FROM_TBL_Q: ' || G_SETUP_VALUE_FROM_TBL_Q(Z));
34974 engine_debug( 'G_SETUP_VALUE_TO_TBL_Q: ' || G_SETUP_VALUE_TO_TBL_Q(Z));
34975 engine_debug( 'G_AUTOMATIC_FLAG_TBL_P: ' || G_AUTOMATIC_FLAG_TBL_P(Z));
34976 engine_debug( 'G_MODIFIER_LEVEL_CODE_TBL_P: ' || G_MODIFIER_LEVEL_CODE_TBL_P(Z) );
34977 engine_debug( 'G_PRIMARY_UOM_FLAG_TBL_P: ' || G_PRIMARY_UOM_FLAG_TBL_P(Z));
34978 engine_debug( 'G_OPER_CALCULATION_CODE_TBL_P: ' || G_OPER_CALCULATION_CODE_TBL_P(Z));
34979 engine_debug( 'G_OPERAND_VALUE_TBL_P: ' || G_OPERAND_VALUE_TBL_P(Z));
34980 engine_debug( 'G_PRICING_GROUP_SEQUENCE_TBL_P: ' || G_PRICING_GROUP_SEQUENCE_TBL_P(Z));
34981 engine_debug( 'G_LIST_TYPE_CODE_TBL_P: ' || G_LIST_TYPE_CODE_TBL_P(Z));
34982 engine_debug( 'G_ROUNDING_FACTOR_TBL_P: ' || G_ROUNDING_FACTOR_TBL_P(Z));
34983 engine_debug( 'G_PRICING_PHASE_ID_TBL_P: ' || G_PRICING_PHASE_ID_TBL_P(Z));
34984 engine_debug( 'G_PRICE_BREAK_TYPE_CODE_TBL_P: ' || G_PRICE_BREAK_TYPE_CODE_TBL_P(Z));
34985 engine_debug( 'G_INCOMP_GRP_CODE_TBL_P: ' || G_INCOMP_GRP_CODE_TBL_P(Z));
34986 engine_debug( 'G_PRICE_FORMULA_ID_TBL_P: ' || G_PRICE_FORMULA_ID_TBL_P(Z));
34987 engine_debug( 'G_PRODUCT_PRECEDENCE_TBL_P: ' || G_PRODUCT_PRECEDENCE_TBL_P(Z));
34988 engine_debug( 'G_LIST_LINE_NO_TBL_P: ' || G_LIST_LINE_NO_TBL_P(Z));
34989 engine_debug( 'G_QUALIFIER_TYPE_TBL_Q: ' || G_QUALIFIER_TYPE_TBL_Q(Z));
34990 engine_debug( 'G_CURRENCY_DETAIL_ID_TBL_P: ' || G_CURRENCY_DETAIL_ID_TBL_P(Z));
34991 engine_debug( 'G_CURRENCY_HEADER_ID_TBL_P: ' || G_CURRENCY_HEADER_ID_TBL_P(Z));
34992 engine_debug( 'G_SELLING_ROUNDING_TBL_P: ' || G_SELLING_ROUNDING_TBL_P(Z));
34993 engine_debug( 'G_ORDER_CURRENCY_TBL_P: ' || G_ORDER_CURRENCY_TBL_P(Z));
34994 engine_debug( 'G_PRICING_EFFECTIVE_DATE_TBL_P: ' || G_PRICING_EFFECTIVE_DATE_TBL_P(Z));
34995 engine_debug( 'G_BASE_CURRENCY_CODE_TBL_P: ' ||G_BASE_CURRENCY_CODE_TBL_P(Z));
34996
34997 End Loop;
34998 */
34999 END IF;
35000 x_status_code := FND_API.G_RET_STS_ERROR;
35001 x_status_text := l_routine||': '||SQLERRM;
35002 END SELECT_PRICE_LIST_LINES;
35003
35004 /*+------------------------------------------------------------
35005 |CREATE_QUALIFIER_FROM_LIST
35006 |We need to make the list we selected from previous phase
35007 |to become qualifier
35008 |because price list might be a qualifier for a discount or promotion
35009 +------------------------------------------------------------
35010 */
35011
35012 PROCEDURE Create_Qualifier_From_List( x_status_code OUT NOCOPY VARCHAR2,
35013 x_status_text OUT NOCOPY VARCHAR2)
35014 AS
35015 v_error_code VARCHAR2(240);
35016 v_error_message VARCHAR2(240);
35017 l_attribute VARCHAR2(240);
35018 l_context VARCHAR2(240);
35019 l_status_code VARCHAR2(30);
35020 l_status_text VARCHAR2(240);
35021 K PLS_INTEGER:= 1;
35022
35023 --We don't want to create a new list which is already passed in as qualifiers
35024 --on previous phase.
35025 /*
35026 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_get_line_index_cur,- No Index Used -,NA,NA
35027 */
35028 CURSOR l_get_line_index_cur IS
35029 SELECT line_index
35030 FROM qp_npreq_lines_tmp
35031 WHERE line_type_code <> G_ORDER_LEVEL;
35032
35033 /*
35034 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_modlist_cur,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
35035 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_modlist_cur,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,2
35036 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_modlist_cur,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,3
35037
35038 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
35039 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
35040 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
35041 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
35042 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
35043 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
35044 */
35045 --check if passed in price list indeed has qualified
35046 CURSOR l_check_modlist_cur(p_line_index IN PLS_INTEGER) IS
35047 SELECT /*+ ORDERED index(qplat qp_preq_line_attrs_tmp_n2) l_check_modlist_cur */ 'X'
35048 FROM qp_npreq_ldets_tmp qpld,
35049 qp_npreq_line_attrs_tmp qplat
35050 WHERE qpld.line_index = p_line_index
35051 AND qpld.pricing_phase_id = G_PRICE_LIST_PHASE_ID
35052 AND qpld.pricing_status_code = G_STATUS_NEW
35053 AND qplat.line_index = qpld.line_index
35054 AND qplat.pricing_status_code = G_STATUS_UNCHANGED
35055 AND qplat.attribute_type = 'QUALIFIER'
35056 AND qplat.context = 'MODLIST'
35057 AND qplat.attribute = 'QUALIFIER_ATTRIBUTE4'
35058 AND qplat.value_from = TO_CHAR(qpld.created_from_list_header_id);
35059
35060 -- find line_index(s) whose passed-in price list has not been qualified
35061 CURSOR l_check_no_modlist_cur IS
35062 SELECT /*+ index(qpll QP_PREQ_LINES_TMP_N2) */ qpll.line_index
35063 FROM qp_npreq_lines_tmp qpll
35064 WHERE qpll.line_type_code <> G_ORDER_LEVEL
35065 AND NOT EXISTS (
35066 SELECT /*+ ORDERED index(qpld QP_PREQ_LDETS_TMP_N1) index(qplat qp_preq_line_attrs_tmp_n2) l_check_modlist_cur */ 'X'
35067 FROM qp_npreq_ldets_tmp qpld,
35068 qp_npreq_line_attrs_tmp qplat
35069 WHERE qpld.line_index = qpll.line_index
35070 AND qpld.pricing_phase_id = G_PRICE_LIST_PHASE_ID
35071 AND qpld.pricing_status_code = G_STATUS_NEW
35072 AND qplat.line_index = qpld.line_index
35073 AND qplat.pricing_status_code = G_STATUS_UNCHANGED
35074 AND qplat.attribute_type = 'QUALIFIER'
35075 AND qplat.context = 'MODLIST'
35076 AND qplat.attribute = 'QUALIFIER_ATTRIBUTE4'
35077 AND qplat.value_from = TO_CHAR(qpld.created_from_list_header_id));
35078
35079 /*
35080 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_exists_modlist_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
35081 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_exists_modlist_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
35082 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_exists_modlist_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
35083 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_exists_modlist_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
35084 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_exists_modlist_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
35085 */
35086 --check if there is a modlist passed
35087 CURSOR l_check_modlist_exists_cur(p_line_index IN PLS_INTEGER) IS
35088 SELECT ROWID
35089 FROM qp_npreq_line_attrs_tmp
35090 WHERE pricing_status_code = G_STATUS_UNCHANGED
35091 AND attribute_type = 'QUALIFIER'
35092 AND context = 'MODLIST'
35093 AND attribute ='QUALIFIER_ATTRIBUTE4'
35094 AND line_index = p_line_index
35095 AND ROWNUM = 1; --just one record need to be returned
35096
35097 /*
35098 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_get_pl_cur,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
35099 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_get_pl_cur,qp_npreq_ldets_tmp_N3,PRICING_PHASE_ID,2
35100 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_get_pl_cur,qp_npreq_ldets_tmp_N3,ASK_FOR_FLAG,3
35101 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_get_pl_cur,qp_npreq_ldets_tmp_N3,CREATED_FROM_LIST_LINE_TYPE,4
35102 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_get_pl_cur,qp_npreq_ldets_tmp_N3,PRICING_STATUS_CODE,5
35103 */
35104 CURSOR l_get_pl_cur(p_line_index IN PLS_INTEGER) IS
35105 SELECT created_from_list_header_id
35106 FROM qp_npreq_ldets_tmp
35107 WHERE line_index = p_line_index
35108 and created_from_list_line_type in (G_PRICE_LIST_TYPE,G_BY_PBH) -- Bug#2882115
35109 and pricing_status_code = G_STATUS_NEW
35110 and pricing_phase_id = G_PRICE_LIST_PHASE_ID;
35111
35112
35113 l_dummy VARCHAR2(1);
35114 l_rowid ROWID;
35115 l_list_header_id NUMBER;
35116
35117 l_routine VARCHAR2(30) := 'Create_Qualifier_From_List';
35118
35119 E_ROUTINE_ERRORS EXCEPTION;
35120
35121 l_line_index_tbl NUMBER_TYPE;
35122
35123 -- julin [3805113]: tables for bulk insert/update
35124 A PLS_INTEGER:=1;
35125 l_a_list_header_id_tbl NUMBER_TYPE;
35126 l_a_line_index_tbl NUMBER_TYPE;
35127
35128 B PLS_INTEGER:=1;
35129 l_b_list_header_id_tbl NUMBER_TYPE;
35130 l_b_rowid_tbl ROWID_TYPE;
35131
35132 C PLS_INTEGER:=1;
35133 l_c_line_index_tbl NUMBER_TYPE;
35134 l_c_g_line_level_tbl VARCHAR_30_TYPE;
35135 l_c_G_QUALIFIER_TYPE_tbl VARCHAR_30_TYPE;
35136 l_c_G_LIST_HEADER_CONTEXT_tbl VARCHAR_30_TYPE;
35137 l_c_QUALIFIER_ATTRIBUTE4_tbl VARCHAR_30_TYPE;
35138 l_c_list_header_id_tbl NUMBER_TYPE;
35139 l_c_G_VALIDATED_tbl VARCHAR_30_TYPE;
35140 l_c_G_LIST_APPLIED_tbl VARCHAR_30_TYPE;
35141 l_c_G_STATUS_UNCHANGED_tbl VARCHAR_30_TYPE;
35142 l_c_PRICING_STATUS_TEXT_tbl VARCHAR_TYPE;
35143
35144
35145 BEGIN
35146 qp_debug_util.tstart('CREATE_QUALIFIER_FROM_LIST','Procedure CREATE_QUALIFIER_FROM_LIST');
35147 --po integration start
35148 UPDATE qp_npreq_lines_tmp a
35149 SET pricing_status_code = G_STATUS_UPDATED
35150 Where list_price_override_flag in ('Y', 'O') --po integration
35151 AND line_type_code <> G_ORDER_LEVEL;
35152 --po integration end
35153
35154 -- julin [3805113]: using bulk collect and update
35155 OPEN l_check_no_modlist_cur;
35156 LOOP
35157 FETCH l_check_no_modlist_cur BULK COLLECT INTO
35158 l_line_index_tbl
35159 LIMIT G_BATCH_SIZE;
35160 EXIT WHEN l_line_index_tbl.count = 0;
35161
35162 l_a_list_header_id_tbl.delete;
35163 l_a_line_index_tbl.delete;
35164
35165 l_b_list_header_id_tbl.delete;
35166 l_b_rowid_tbl.delete;
35167
35168 l_c_line_index_tbl.delete;
35169 l_c_g_line_level_tbl.delete;
35170 l_c_G_QUALIFIER_TYPE_tbl.delete;
35171 l_c_G_LIST_HEADER_CONTEXT_tbl.delete;
35172 l_c_QUALIFIER_ATTRIBUTE4_tbl.delete;
35173 l_c_list_header_id_tbl.delete;
35174 l_c_G_VALIDATED_tbl.delete;
35175 l_c_G_LIST_APPLIED_tbl.delete;
35176 l_c_G_STATUS_UNCHANGED_tbl.delete;
35177 l_c_PRICING_STATUS_TEXT_tbl.delete;
35178
35179 /*FOR i in p_price_list_id_tbl.FIRST .. p_price_list_id_tbl.LAST
35180 LOOP
35181
35182 OPEN l_check_modlist_cur(l_line_index_tbl(I));
35183 FETCH l_check_modlist_cur INTO l_dummy;
35184 IF l_check_modlist_cur%NOTFOUND THEN
35185 */
35186
35187 FOR I in l_line_index_tbl.FIRST .. l_line_index_tbl.LAST
35188 LOOP
35189 OPEN l_check_modlist_exists_cur(l_line_index_tbl(I));
35190 FETCH l_check_modlist_exists_cur INTO l_rowid;
35191
35192 OPEN l_get_pl_cur(l_line_index_tbl(I));
35193 FETCH l_get_pl_cur into l_list_header_id;
35194 CLOSE l_get_pl_cur;
35195
35196 -- Update the order line with the secondary price list id(for OM displaying purposes)
35197 IF (l_list_header_id IS NOT NULL) THEN
35198 l_a_list_header_id_tbl(A) := l_list_header_id;
35199 l_a_line_index_tbl(A) := l_line_index_tbl(I);
35200 A := A + 1;
35201 END IF;
35202
35203 IF l_check_modlist_exists_cur%FOUND THEN
35204 --OPEN l_get_pl_cur(l_line_index_tbl(I));
35205 --FETCH l_get_pl_cur into l_list_header_id;
35206 --CLOSE l_get_pl_cur;
35207
35208 IF (l_list_header_id IS NOT NULL) THEN
35209 l_b_list_header_id_tbl(B) := l_list_header_id;
35210 l_b_rowid_tbl(B) := l_rowid;
35211 B := B + 1;
35212 END IF;
35213
35214 ELSE
35215 --FOR J IN l_get_pl_cur(l_line_index_tbl(I)) LOOP
35216 IF (l_list_header_id IS NOT NULL) THEN
35217 l_c_line_index_tbl(C) := L_LINE_INDEX_TBL(I);
35218 l_c_g_line_level_tbl(C) := G_LINE_LEVEL;
35219 l_c_g_qualifier_type_tbl(C) := G_QUALIFIER_TYPE;
35220 l_c_g_list_header_context_tbl(C) := G_LIST_HEADER_CONTEXT;
35221 l_c_qualifier_attribute4_tbl(C) := 'QUALIFIER_ATTRIBUTE4';
35222 l_c_list_header_id_tbl(C) := l_list_header_id;
35223 l_c_g_validated_tbl(C) := G_VALIDATED;
35224 l_c_g_list_applied_tbl(C) := G_LIST_APPLIED;
35225 l_c_g_status_unchanged_tbl(C) := G_STATUS_UNCHANGED;
35226 l_c_pricing_status_text_tbl(C) := 'Inserted by Create_Qualifier_From_List';
35227 C := C + 1;
35228 --END LOOP;
35229 END IF;
35230 END IF;
35231 CLOSE l_check_modlist_exists_cur;
35232 --END IF;
35233 --CLOSE l_check_modlist_cur;
35234
35235 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
35236 RAISE E_ROUTINE_ERRORS;
35237 END IF;
35238 l_list_header_id := null; -- Bug No: 7323621
35239 END LOOP;
35240
35241 -- julin [3805113]: bulk update
35242 IF (l_a_list_header_id_tbl.COUNT > 0) THEN
35243 FORALL I IN l_a_list_header_id_tbl.first..l_a_list_header_id_tbl.last
35244 UPDATE qp_npreq_lines_tmp
35245 SET price_list_header_id = l_a_list_header_id_tbl(I)
35246 WHERE line_index = l_a_line_index_tbl(I);
35247 END IF;
35248
35249 -- julin [3805113]: bulk update
35250 IF (l_b_list_header_id_tbl.COUNT > 0) THEN
35251 FORALL I IN l_b_list_header_id_tbl.first..l_b_list_header_id_tbl.last
35252 UPDATE qp_npreq_line_attrs_tmp
35253 SET value_from = TO_CHAR(l_b_list_header_id_tbl(I))
35254 WHERE rowid = l_b_rowid_tbl(I);
35255 END IF;
35256
35257 -- julin [3805113]: bulk update
35258 IF (l_c_LINE_INDEX_TBL.COUNT > 0) THEN
35259 FORALL I IN l_c_LINE_INDEX_TBL.first..l_c_LINE_INDEX_TBL.last
35260 INSERT INTO qp_npreq_line_attrs_tmp
35261 (LINE_INDEX,
35262 ATTRIBUTE_LEVEL,
35263 ATTRIBUTE_TYPE,
35264 CONTEXT,
35265 ATTRIBUTE,
35266 VALUE_FROM,
35267 VALIDATED_FLAG, --We may need to reset it to N
35268 APPLIED_FLAG,
35269 PRICING_STATUS_CODE,
35270 PRICING_STATUS_TEXT
35271 )
35272 VALUES
35273 (l_c_line_index_tbl(i),
35274 l_c_g_line_level_tbl(i),
35275 l_c_g_qualifier_type_tbl(i),
35276 l_c_g_list_header_context_tbl(i),
35277 l_c_qualifier_attribute4_tbl(i),
35278 l_c_list_header_id_tbl(i),
35279 l_c_g_validated_tbl(i),
35280 l_c_g_list_applied_tbl(i),
35281 l_c_g_status_unchanged_tbl(i), --as it is passed in as qualifiers from the callers
35282 l_c_pricing_status_text_tbl(i));
35283
35284 END IF;
35285
35286 END LOOP;
35287 CLOSE l_check_no_modlist_cur;
35288
35289 -- Update Rounding Factor, if rounding_flag not N
35290 IF (G_ROUNDING_FLAG <> 'N') THEN
35291 UPDATE_ROUNDING_FACTOR (
35292 QP_PREQ_GRP.G_MCURR_INSTALLED_USED,
35293 l_status_code,
35294 l_status_text);
35295 END IF; -- end if rounding_flag
35296
35297 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
35298 RAISE E_ROUTINE_ERRORS;
35299 END IF;
35300 qp_debug_util.tstop('CREATE_QUALIFIER_FROM_LIST');
35301 EXCEPTION
35302 WHEN E_ROUTINE_ERRORS THEN
35303 x_status_code := FND_API.G_RET_STS_ERROR;
35304 x_status_text := l_routine||': '||l_status_text;
35305 WHEN OTHERS THEN
35306 v_error_code :=SQLCODE;
35307 v_error_message:=SQLERRM;
35308 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35309 engine_debug('Error in QP_PREQ_GRP.create_qualifier_from_list: '||SQLERRM);
35310 END IF;
35311 x_status_code := FND_API.G_RET_STS_ERROR;
35312 x_status_text := l_routine||': '||SQLERRM;
35313 qp_debug_util.tstop('CREATE_QUALIFIER_FROM_LIST');
35314 END Create_Qualifier_From_List;
35315
35316
35317 /*+------------------------------------------------------------
35318 |GET_REASON
35319 |To tell the reasons why certain list line is deleted
35320 +------------------------------------------------------------
35321 */
35322 PROCEDURE Get_Reason (p_line_index IN PLS_INTEGER,
35323 x_reason_code_tbl OUT NOCOPY VARCHAR_TYPE,
35324 x_status_code OUT NOCOPY VARCHAR2,
35325 x_status_text OUT NOCOPY VARCHAR2) AS
35326 /*
35327 -- Can use N1 instead of N3
35328 INDX,QP_PREQ_GRP.get_reason.l_reason_cur,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
35329 */
35330 CURSOR l_reason_cur(p_line_index IN PLS_INTEGER) IS
35331 SELECT distinct pricing_status_code
35332 FROM qp_npreq_ldets_tmp
35333 WHERE line_index = p_line_index
35334 AND pricing_status_code <> G_STATUS_NEW;
35335
35336 J PLS_INTEGER:=0;
35337 l_routine VARCHAR2(240):='QP_PREQ_GRP.GET_REASON';
35338 BEGIN
35339
35340 FOR I IN l_reason_cur(p_line_index) LOOP
35341 J:=J+1;
35342 x_reason_code_tbl(J):= I.pricing_status_code;
35343 END LOOP;
35344
35345 EXCEPTION
35346 WHEN OTHERS THEN
35347 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35348 engine_debug(l_routine||': '||SQLERRM);
35349 END IF;
35350 x_status_code := FND_API.G_RET_STS_ERROR;
35351 x_status_text := l_routine||': '||SQLERRM;
35352 END Get_Reason;
35353
35354 /*+------------------------------------------------------------
35355 |Call calculation engine
35356 +------------------------------------------------------------
35357 */
35358 PROCEDURE CALL_CALCULATION_ENGINE (p_phase_sequence IN NUMBER:=NULL,
35359 p_freeze_override_flag IN VARCHAR2:=NULL,
35360 p_is_direct_call IN BOOLEAN:=FALSE,
35361 x_status_code OUT NOCOPY VARCHAR2,
35362 x_status_text OUT NOCOPY VARCHAR2) AS
35363
35364 p_cal_req_line_rec QP_Calculate_Price_PUB.l_request_line_rec;
35365 l_cal_req_line_rec QP_Calculate_Price_PUB.l_request_line_rec;
35366 p_cal_req_ldets_tbl QP_Calculate_Price_PUB.l_request_line_details_tbl;
35367 l_cal_req_ldets_tbl QP_Calculate_Price_PUB.l_request_line_details_tbl;
35368 p_cal_req_rltd_tbl QP_Calculate_Price_PUB.l_related_request_lines_tbl;
35369 l_cal_req_rltd_tbl QP_Calculate_Price_PUB.l_related_request_lines_tbl;
35370
35371 /*
35372 INDX,QP_PREQ_GRP.call_calculation_engine.l_request_line_cur,- No Index Used -,NA,NA
35373 */
35374 CURSOR l_request_line_cur IS
35375 SELECT /*+ dynamic_sampling(1) */ qplt.LINE_INDEX,
35376 qplt.LINE_TYPE_CODE,
35377 qplt.PRICING_EFFECTIVE_DATE,
35378 qplt.LINE_QUANTITY,
35379 qplt.LINE_UOM_CODE,
35380 qplt.PRICED_QUANTITY,
35381 qplt.PRICED_UOM_CODE,
35382 qplt.CURRENCY_CODE,
35383 qplt.UNIT_PRICE,
35384 qplt.PERCENT_PRICE,
35385 qplt.UOM_QUANTITY,
35386 qplt.PARENT_PRICE,
35387 qplt.ADJUSTED_UNIT_PRICE,
35388 qplt.PROCESSED_FLAG,
35389 qplt.PRICE_FLAG,
35390 qplt.PROCESSING_ORDER,
35391 qplt.PRICING_STATUS_CODE,
35392 qplt.PRICING_STATUS_TEXT,
35393 qplt.GROUP_QUANTITY,
35394 qplt.GROUP_AMOUNT,
35395 qplt.ROUNDING_FLAG,
35396 qplt.PRICE_LIST_HEADER_ID,
35397 qplt.ROUNDING_FACTOR,
35398 qplt.CATCHWEIGHT_QTY,
35399 qplt.ACTUAL_ORDER_QUANTITY,
35400 NVL(qplt.price_flag,G_YES)
35401 FROM qp_npreq_lines_tmp qplt
35402 WHERE qplt.PRICING_STATUS_CODE IN (G_STATUS_UNCHANGED, G_STATUS_UPDATED)
35403 AND (qplt.PRICE_FLAG IN (G_YES,G_PHASE)
35404 OR qplt.PROCESSED_CODE = G_BY_ENGINE)
35405 AND nvl(qplt.USAGE_PRICING_TYPE,G_REGULAR_USAGE_TYPE) NOT IN
35406 (G_AUTHORING_TYPE,G_BILLING_TYPE)
35407 ORDER BY PROCESSING_ORDER;
35408
35409 --for the case where p_control_rec.price_flat = 'P' (G_PHASE)
35410 /*
35411 INDX,QP_PREQ_GRP.call_calculation_engine.l_request_line_detail_cur,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
35412 INDX,QP_PREQ_GRP.call_calculation_engine.l_request_line_detail_cur,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
35413
35414 INDX,QP_PREQ_GRP.call_calculation_engine.l_request_line_detail_cur,qp_npreq_lines_tmp_N2,LINE_TYPE_CODE,1
35415 */
35416 CURSOR l_request_line_detail_cur(L_LINE_INDEX PLS_INTEGER,
35417 p_price_flag VARCHAR2) IS
35418 -- hint added as temporary R12 fix for 5573442
35419 SELECT /*+ index(qplt) */ --5658579
35420 QPLT.LINE_DETAIL_INDEX,
35421 QPLT.LINE_DETAIL_TYPE_CODE,
35422 QPLT.LINE_INDEX,
35423 QPLT.CREATED_FROM_LIST_HEADER_ID,
35424 QPLT.CREATED_FROM_LIST_LINE_ID,
35425 QPLT.CREATED_FROM_LIST_LINE_TYPE,
35426 QPLT.CREATED_FROM_LIST_TYPE_CODE,
35427 QPLT.PRICE_BREAK_TYPE_CODE,
35428 QPLT.PRICING_GROUP_SEQUENCE,
35429 QPLT.OPERAND_CALCULATION_CODE,
35430 QPLT.OPERAND_VALUE,
35431 QPLT.NET_AMOUNT_FLAG, -- IT net_amount 2720717
35432 QPLT.AUTOMATIC_FLAG,
35433 QPLT.ACCRUAL_FLAG,
35434 QPLT.ACCRUAL_CONVERSION_RATE,
35435 QPLT.ESTIM_ACCRUAL_RATE,
35436 QPLT.RECURRING_VALUE, -- block pricing
35437 QPLT.MODIFIER_LEVEL_CODE,
35438 QPLT.GROUP_QUANTITY,
35439 QPLT.GROUP_AMOUNT,
35440 QPLT.LINE_QUANTITY, --2388011_new
35441 QPLT.SELECTED_VOLUME_ATTR -- 2388011_new
35442 ,Nvl(QPLT.ROUNDING_FACTOR,QPLT.SELLING_ROUNDING_FACTOR) ROUNDING_FACTOR --10093463
35443 FROM qp_npreq_ldets_tmp QPLT
35444 WHERE QPLT.LINE_INDEX = L_LINE_INDEX
35445 AND QPLT.PRICING_STATUS_CODE = G_STATUS_NEW
35446 UNION
35447 -- hints added as temporary R12 fix for 5573442
35448 SELECT /*+ ORDERED USE_NL(QPLL QPLT) INDEX(QPLL) INDEX(QPLT) */ --5658579
35449 QPLT.LINE_DETAIL_INDEX,
35450 QPLT.LINE_DETAIL_TYPE_CODE,
35451 QPLT.LINE_INDEX,
35452 QPLT.CREATED_FROM_LIST_HEADER_ID,
35453 QPLT.CREATED_FROM_LIST_LINE_ID,
35454 QPLT.CREATED_FROM_LIST_LINE_TYPE,
35455 QPLT.CREATED_FROM_LIST_TYPE_CODE,
35456 QPLT.PRICE_BREAK_TYPE_CODE,
35457 QPLT.PRICING_GROUP_SEQUENCE,
35458 QPLT.OPERAND_CALCULATION_CODE,
35459 QPLT.OPERAND_VALUE,
35460 QPLT.NET_AMOUNT_FLAG, -- IT net_amount 2720717
35461 QPLT.AUTOMATIC_FLAG,
35462 QPLT.ACCRUAL_FLAG,
35463 QPLT.ACCRUAL_CONVERSION_RATE,
35464 QPLT.ESTIM_ACCRUAL_RATE,
35465 QPLT.RECURRING_VALUE, -- block pricing
35466 QPLT.MODIFIER_LEVEL_CODE,
35467 QPLT.GROUP_QUANTITY,
35468 QPLT.GROUP_AMOUNT,
35469 QPLT.LINE_QUANTITY, --2388011_new
35470 QPLT.SELECTED_VOLUME_ATTR -- 2388011_new
35471 ,Nvl(QPLT.ROUNDING_FACTOR,QPLT.SELLING_ROUNDING_FACTOR) ROUNDING_FACTOR --10093463
35472 FROM qp_npreq_lines_tmp QPLL,
35473 qp_npreq_ldets_tmp QPLT
35474 WHERE QPLL.LINE_TYPE_CODE = G_ORDER_LEVEL
35475 AND QPLT.LINE_INDEX = QPLL.LINE_INDEX
35476 AND QPLT.PRICING_STATUS_CODE = G_STATUS_NEW
35477 AND QPLT.CREATED_FROM_LIST_TYPE_CODE <> G_CHARGES_HEADER
35478 ORDER BY 9; -- 9 - Pricing Group Sequence
35479
35480 /*
35481 INDX,QP_PREQ_GRP.call_calculation_engine.l_line_attrs_cur,qp_npreq_line_attrs_tmp_N3,LINE_DETAIL_INDEX,1
35482 */
35483 CURSOR l_line_attrs_cur(l_line_detail_index PLS_INTEGER) IS
35484 SELECT VALUE_FROM,
35485 VALUE_TO,
35486 ATTRIBUTE
35487 FROM qp_npreq_line_attrs_tmp
35488 WHERE line_detail_index = l_line_detail_index
35489 AND ATTRIBUTE_LEVEL = G_DETAIL_LEVEL;
35490
35491 /*
35492 INDX,QP_PREQ_GRP.call_calculation_engine.l_list_line_attribute_cur,QP_PRICING_ATTRIBUTES_N2,LIST_LINE_ID,1
35493 */
35494 CURSOR l_list_line_attribute_cur(p_list_line_id PLS_INTEGER) IS
35495 SELECT /*+ index(qpp qp_pricing_attributes_n2) l_list_line_attribute_cur */ PRICING_ATTRIBUTE
35496 FROM QP_PRICING_ATTRIBUTES qpp
35497 WHERE LIST_LINE_ID = p_list_line_id
35498 AND PRICING_ATTRIBUTE_CONTEXT = G_PRIC_VOLUME_CONTEXT;
35499
35500 -- Cursor for getting the related line index for the line index
35501 -- Ex: Related Line Index - Oracle 8i Line Index - Service Line
35502 /*
35503 INDX,QP_PREQ_GRP.call_calculation_engine.l_service_item_cur,- No Index Used -,NA,NA
35504 */
35505 CURSOR l_service_item_cur(l_line_index PLS_INTEGER) IS
35506 SELECT LINE_INDEX
35507 FROM qp_npreq_rltd_lines_tmp
35508 WHERE RELATED_LINE_INDEX = l_line_index
35509 AND RELATIONSHIP_TYPE_CODE = G_SERVICE_LINE;
35510
35511 -- Cursor for getting the unit price of the parent line ex: Oracle 8i line
35512 /*
35513 INDX,QP_PREQ_GRP.call_calculation_engine.l_get_price_parent_line_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
35514 */
35515 CURSOR l_get_price_parent_line_cur(l_line_index PLS_INTEGER) IS
35516 SELECT UNIT_PRICE,
35517 LINE_UNIT_PRICE, --fix bug 2776849, uom_service_pricing
35518 PRICED_QUANTITY,
35519 LINE_QUANTITY,
35520 LINE_UOM_CODE --fix bug 2776849, uom_service_pricing
35521 FROM qp_npreq_lines_tmp
35522 WHERE LINE_INDEX = l_line_index;
35523
35524 /*
35525 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
35526 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
35527 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
35528 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
35529 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
35530 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
35531 */
35532 CURSOR gsa_qualifier_exists(p_line_index PLS_INTEGER) IS
35533 SELECT 'X'
35534 FROM qp_npreq_line_attrs_tmp
35535 WHERE CONTEXT = G_CUSTOMER_CONTEXT
35536 AND ATTRIBUTE = G_GSA_ATTRIBUTE
35537 AND VALUE_FROM = G_YES
35538 AND LINE_INDEX = p_line_index
35539 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
35540 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE;
35541
35542 -- begin shulin bug 1605829 fix
35543 CURSOR get_request_prclst_name_cur (p_list_header_id PLS_INTEGER) IS
35544 SELECT name
35545 FROM qp_list_headers_v a
35546 WHERE a.list_header_id = p_list_header_id;
35547
35548 CURSOR get_request_inv_item_id_cur(p_line_index PLS_INTEGER) IS
35549 SELECT qp_number.canonical_to_number(VALUE_FROM)
35550 FROM qp_npreq_line_attrs_tmp
35551 WHERE CONTEXT = G_PRIC_ITEM_CONTEXT
35552 AND ATTRIBUTE = G_PRIC_ATTRIBUTE1
35553 AND ATTRIBUTE_TYPE = G_PRODUCT_TYPE
35554 AND LINE_INDEX = p_line_index
35555 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED;
35556
35557 CURSOR get_request_inv_item_name_cur(p_item_id PLS_INTEGER) IS
35558 SELECT concatenated_segments
35559 --INTO l_request_item_name
35560 FROM mtl_system_items_vl
35561 WHERE inventory_item_id = p_item_id
35562 AND organization_id = QP_UTIL.Get_Item_Validation_Org;
35563 -- end shulin bug 1605829 fix
35564
35565 J PLS_INTEGER:=1;
35566 N PLS_INTEGER:=1;
35567 B PLS_INTEGER:=0;
35568 C PLS_INTEGER:=0;
35569 l_reason_tbl VARCHAR_TYPE;
35570 l_parent_line_detail_index PLS_INTEGER;
35571 l_rltd_line_index PLS_INTEGER;
35572 l_parent_line_index PLS_INTEGER;
35573 l_percent_price NUMBER := 0;
35574 l_parent_unit_price NUMBER :=NULL; -- fix bug 2776849, uom_service_pricing
35575 l_parent_line_unit_price NUMBER :=NULL; -- fix bug 2776849, uom_service_pricing
35576 l_parent_line_quantity NUMBER:=NULL;
35577 l_parent_priced_quantity NUMBER:=NULL;
35578 l_parent_line_uom_code VARCHAR2(30);
35579 l_GSA_Enabled_Flag VARCHAR2(50);
35580 l_GSA_Qualifier_Flag VARCHAR2(50);
35581 l_status_code VARCHAR2(30);
35582 l_status_text VARCHAR2(240);
35583 l_gsa_violation_flag VARCHAR2(1);
35584 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.Call_Calculation_Engine';
35585 l_err_line_index NUMBER;
35586 l_attribute VARCHAR2(30);
35587 l_value VARCHAR2(30);
35588 V PLS_INTEGER := 0;
35589 U PLS_INTEGER := 0;
35590 Y PLS_INTEGER := 0;
35591 L PLS_INTEGER := 0;
35592
35593 G_UNIT_PRICE_TBL_C NUMBER_TYPE;
35594 G_LINE_UNIT_PRICE_TBL_C NUMBER_TYPE; -- shu_latest
35595 G_ORDER_UOM_TBL_C NUMBER_TYPE; -- bug 2693700
35596 G_PERCENT_PRICE_TBL_C NUMBER_TYPE;
35597 G_ADJUSTED_UNIT_PRICE_TBL_C NUMBER_TYPE;
35598 G_PARENT_PRICE_TBL_C NUMBER_TYPE;
35599 G_PARENT_PRICED_QUANTITY_TBL_C NUMBER_TYPE;
35600 G_PARENT_LINE_QUANTITY_TBL_C NUMBER_TYPE;
35601 G_PARENT_LINE_UOM_TBL_C VARCHAR_TYPE;
35602 G_LINE_INDEX_TBL_C NUMBER_TYPE;
35603 G_EXTENDED_PRICE_TBL_C NUMBER_TYPE; -- block pricing
35604 G_GSA_LINE_INDEX_TBL_C NUMBER_TYPE;
35605 l_line_details_exist_flag BOOLEAN := FALSE;
35606
35607 G_ADJUSTMENT_AMOUNT_TBL_D NUMBER_TYPE;
35608 --G_LINE_QUANTITY_TBL_D NUMBER_TYPE;
35609 G_BENEFIT_QUANTITY_TBL_D NUMBER_TYPE;
35610 G_OPERAND_VALUE_TBL_D NUMBER_TYPE;
35611 G_QUALIFIER_VALUE_TBL_D NUMBER_TYPE;
35612 G_LINE_DETAIL_INDEX_TBL_D NUMBER_TYPE;
35613 G_OPR_CALC_CODE_TBL_D VARCHAR_TYPE; --bug#12916970
35614
35615 G_LINE_QUANTITY_TBL_R NUMBER_TYPE;
35616 G_ADJUSTMENT_AMOUNT_TBL_R NUMBER_TYPE;
35617 G_LINE_DETAIL_INDEX_TBL_R NUMBER_TYPE;
35618
35619 G_PARENT_PRICE_TBL_P NUMBER_TYPE;
35620
35621 --[prarasto:Post Round] Start : new variables
35622 l_adjusted_unit_price_ur NUMBER_TYPE;
35623 l_unit_selling_price_ur NUMBER_TYPE;
35624 l_extended_selling_price_ur NUMBER_TYPE;
35625 l_adjusted_unit_price NUMBER_TYPE;
35626 l_unit_selling_price NUMBER_TYPE;
35627 l_extended_selling_price NUMBER_TYPE;
35628 --[prarasto:Post Round] End : new variables
35629
35630 -- begin shulin bug 1605829 fix
35631 l_request_price_list_name qp_list_headers_v.name%type;
35632 l_request_uom VARCHAR2(30);
35633 l_request_item_id NUMBER;
35634 l_request_item_name mtl_system_items_vl.concatenated_segments%type;
35635 l_message VARCHAR2(240);
35636 -- end shulin bug 1605829 fix
35637
35638 l_line_unit_price NUMBER:= NULL; -- shu, default to null, fix bug 2354422, avoid division zero
35639 l_line_adjusted_unit_price NUMBER:= NULL;
35640 l_conversion_rate NUMBER:= NULL; -- shu, to fix bug 2354422
35641 l_order_uom_selling_price NUMBER:= NULL; -- bug 2693700
35642 v_price_round_options VARCHAR2(30):= FND_PROFILE.Value('QP_SELLING_PRICE_ROUNDING_OPTIONS'); --shu, new rounding
35643
35644 E_CAL_ENGINE_ERROR EXCEPTION;
35645
35646 BEGIN
35647
35648
35649 x_status_code := FND_API.G_RET_STS_SUCCESS;
35650
35651 --For manual discount, we want pricing_group sequence to be NULL
35652 /*
35653 -- This update is not needed as it is taken care of by the setup
35654 INDX,QP_PREQ_GRP.call_calculation_engine.call_calculation_engine_upd1,qp_npreq_ldets_tmp_N6,AUTOMATIC_FLAG,1
35655 */
35656 /* UPDATE qp_npreq_ldets_tmp
35657 SET PRICING_GROUP_SEQUENCE = NULL
35658 WHERE AUTOMATIC_FLAG = G_NO; */
35659
35660
35661 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35662 engine_debug( '-------------In call calculation engine-----------');
35663 END IF;
35664
35665 l_GSA_Enabled_Flag := FND_PROFILE.VALUE(G_GSA_Max_Discount_Enabled);
35666
35667 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35668 engine_debug ('GSA Enabled Flag : ' || l_GSA_Enabled_Flag);
35669 engine_debug ('Freeze_override_flag: '||p_freeze_override_flag);
35670 END IF;
35671
35672 G_UNIT_PRICE_TBL_C.delete;
35673 G_LINE_UNIT_PRICE_TBL_C.delete; -- shu_latest
35674 G_ORDER_UOM_TBL_C.delete; -- bug 2693700
35675 G_PERCENT_PRICE_TBL_C.delete;
35676 G_ADJUSTED_UNIT_PRICE_TBL_C.delete;
35677 G_PARENT_PRICE_TBL_C.delete;
35678 G_PARENT_PRICED_QUANTITY_TBL_C.delete;
35679 G_PARENT_LINE_QUANTITY_TBL_C.delete;
35680 G_PARENT_LINE_UOM_TBL_C.delete;
35681 G_LINE_INDEX_TBL_C.delete;
35682 G_GSA_LINE_INDEX_TBL_C.delete;
35683 G_EXTENDED_PRICE_TBL_C.delete; -- block pricing
35684
35685 G_ADJUSTMENT_AMOUNT_TBL_D.delete;
35686 --G_LINE_QUANTITY_TBL_D.delete;
35687 G_BENEFIT_QUANTITY_TBL_D.delete;
35688 G_OPERAND_VALUE_TBL_D.delete;
35689 G_QUALIFIER_VALUE_TBL_D.delete;
35690 G_LINE_DETAIL_INDEX_TBL_D.delete;
35691 G_OPR_CALC_CODE_TBL_D.delete; --bug#12916970
35692
35693 G_LINE_QUANTITY_TBL_R.delete;
35694 G_ADJUSTMENT_AMOUNT_TBL_R.delete;
35695 G_LINE_DETAIL_INDEX_TBL_R.delete;
35696 G_PARENT_PRICE_TBL_P.delete;
35697
35698 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35699 engine_debug (' G_REQUEST_TYPE_CODE: ' ||G_REQUEST_TYPE_CODE); -- shu, aso rounding
35700 engine_debug (' G_ROUNDING_FLAG: ' ||G_ROUNDING_FLAG); -- shu, aso rounding
35701 END IF; -- END IF DEBUG
35702
35703 FOR I IN l_request_line_cur LOOP
35704
35705 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35706 engine_debug('-----l_request_line_cur I loop ------');
35707 engine_debug (' line_index: ' ||i.line_index);
35708 engine_debug (' line_type_code: ' ||i.line_type_code);
35709 engine_debug (' rounding_factor: ' ||i.rounding_factor);
35710 engine_debug (' price_list_header_id: ' ||i.price_list_header_id);
35711 END IF;
35712
35713 IF (l_GSA_Enabled_Flag = G_YES) THEN
35714 OPEN gsa_qualifier_exists(I.LINE_INDEX) ;
35715 FETCH gsa_qualifier_exists INTO l_GSA_Qualifier_Flag;
35716 CLOSE gsa_qualifier_exists;
35717 END IF;
35718
35719 IF (I.PRICE_FLAG <> G_NO) THEN
35720 --IF (l_attribute = G_QUANTITY_ATTRIBUTE) THEN
35721 -- Default value
35722 p_cal_req_line_rec.qualifier_value := NVL(I.priced_quantity,I.line_quantity);
35723 --ELSE
35724 -- p_cal_req_line_rec.qualifier_value := nvl(nvl(I.PRICED_QUANTITY,I.LINE_QUANTITY) * I.UNIT_PRICE,0);
35725 --END IF;
35726
35727
35728 p_cal_req_line_rec.line_index :=I.line_index;
35729 p_cal_req_line_rec.unit_price :=I.unit_price;
35730 p_cal_req_line_rec.percent_price :=I.percent_price;
35731 p_cal_req_line_rec.service_duration :=nvl(I.uom_quantity,1);
35732 p_cal_req_line_rec.gsa_qualifier_flag :=l_GSA_Qualifier_Flag;
35733 p_cal_req_line_rec.gsa_enabled_flag :=l_GSA_Enabled_Flag;
35734 p_cal_req_line_rec.pricing_effective_date :=I.pricing_effective_date;
35735 p_cal_req_line_rec.rounding_factor :=I.rounding_factor;
35736 p_cal_req_line_rec.rounding_flag :=I.rounding_flag;
35737
35738 END IF; -- END IF (I.PRICE_FLAG <> G_NO)
35739
35740 IF (I.PROCESSING_ORDER > 1) THEN -- service pricing
35741
35742 OPEN l_service_item_cur(I.LINE_INDEX);
35743 FETCH l_service_item_cur INTO l_parent_line_index;
35744 CLOSE l_service_item_cur;
35745
35746 IF (l_parent_line_index IS NOT NULL) THEN
35747
35748 OPEN l_get_price_parent_line_cur(l_parent_line_index);
35749 FETCH l_get_price_parent_line_cur
35750 INTO l_parent_unit_price, --fix bug 2776849, uom_service_pricing
35751 l_parent_line_unit_price, --fix bug 2776849, uom_service_pricing
35752 l_parent_priced_quantity,
35753 l_parent_line_quantity,
35754 l_parent_line_uom_code;
35755 CLOSE l_get_price_parent_line_cur;
35756
35757 -- if price flag is 'N' for the parent line , then that record would not exist in g_parent_price_tbl_p
35758 -- So check g_parent_price_tbl_p.exists(l_parent_line_index), bug# 2163919
35759 -- begin fix bug 2776849, uom_service_pricing
35760 IF (g_parent_price_tbl_p.count > 0) AND g_parent_price_tbl_p.exists(l_parent_line_index) THEN
35761 p_cal_req_line_rec.RELATED_ITEM_PRICE := nvl(nvl(G_PARENT_PRICE_TBL_P(l_parent_line_index),l_parent_line_unit_price), l_parent_unit_price);
35762 ELSE
35763 p_cal_req_line_rec.RELATED_ITEM_PRICE := nvl(l_parent_line_unit_price, l_parent_unit_price);
35764 END IF; -- END IF (g_parent_price_tbl_p.count > 0)
35765
35766 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35767 engine_debug(' l_parent_line index : '|| l_parent_line_index);
35768 engine_debug(' p_cal_req_line_rec.RELATED_ITEM_PRICE: '|| p_cal_req_line_rec.RELATED_ITEM_PRICE);
35769 END IF; -- END IF DEBUG
35770
35771 ELSE -- l_parent_line_index is null
35772 -- Error Condition
35773 null;
35774 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35775 engine_debug('Unable to find parent line for a service item');
35776 END IF;
35777 l_err_line_index := I.LINE_INDEX;
35778 DELETE_LINES(l_err_line_index,
35779 G_STATUS_OTHER_ERRORS,
35780 'Could not find parent line for a child service line:'||l_err_line_index,
35781 l_status_code,
35782 l_status_text);
35783 GOTO E_LOOP;
35784 END IF; -- END IF (l_parent_line_index IS NOT NULL)
35785
35786 END IF; -- END IF (I.PROCESSING_ORDER > 1)
35787
35788 FOR K IN l_request_line_detail_cur(I.LINE_INDEX,I.PRICE_FLAG) LOOP
35789 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35790 engine_debug('-----l_request_line_detail_cur K loop------');
35791 END IF;
35792
35793 l_line_details_exist_flag := TRUE;
35794
35795 -- Don't populate calculation engine rec if it is not an automatic discount
35796 -- and it is not a direct call
35797 -- If freight charges and Discount related manual Price Breaks or recurring discounts,
35798 -- do not skip calculation even if automatic_flag = 'N'
35799 IF K.AUTOMATIC_FLAG = G_NO AND p_is_direct_call = FALSE THEN
35800 IF (K.created_from_list_line_type NOT IN (G_FREIGHT_CHARGE,G_PRICE_BREAK_TYPE) AND
35801 K.created_from_list_type_code NOT IN ('PRL','AGR') AND
35802 K.PRICE_BREAK_TYPE_CODE <> G_RECURRING_BREAK AND
35803 K.LINE_DETAIL_TYPE_CODE <> G_CHILD_DETAIL_TYPE)THEN
35804 GOTO SKIP_CAL_LOOP;
35805 END IF;
35806 END IF;
35807
35808 IF (K.LINE_DETAIL_TYPE_CODE <> G_CHILD_DETAIL_TYPE) THEN
35809
35810 p_cal_req_ldets_tbl(J).created_from_list_type := K.created_from_list_type_code;
35811 p_cal_req_ldets_tbl(J).created_from_list_line_id:= K.created_from_list_line_id;
35812 p_cal_req_ldets_tbl(J).created_from_list_header_id:= K.created_from_list_header_id;
35813 p_cal_req_ldets_tbl(J).line_detail_index := K.line_detail_index;
35814 p_cal_req_ldets_tbl(J).created_from_list_line_type:= K.created_from_list_line_type;
35815 p_cal_req_ldets_tbl(J).pricing_group_sequence := K.pricing_group_sequence;
35816 p_cal_req_ldets_tbl(J).accrual_flag := K.accrual_flag;
35817 p_cal_req_ldets_tbl(J).automatic_flag := K.automatic_flag;
35818 p_cal_req_ldets_tbl(J).accrual_conversion_rate := K.accrual_conversion_rate;
35819 p_cal_req_ldets_tbl(J).estim_accrual_rate := K.estim_accrual_rate;
35820 p_cal_req_ldets_tbl(J).price_break_type_code := K.price_break_type_code;
35821 p_cal_req_ldets_tbl(J).bucketed_flag := 'N'; -- TO_DO 2388011, IT bucket, for now, should from the cursor
35822 --p_cal_req_ldets_tbl(J).bucketed_flag := k.bucketed_flag; -- TO_DO 2388011, IT bucket
35823 p_cal_req_ldets_tbl(J).bucketed_flag := nvl(k.net_amount_flag, 'N'); -- 2720717, IT net_amount
35824 p_cal_req_ldets_tbl(J).ROUNDING_FACTOR := k.ROUNDING_FACTOR; --10093463
35825
35826
35827
35828 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35829 engine_debug('List Line Id for Qualifier Value: ' || k.created_from_list_line_id);
35830
35831 END IF;
35832 -- This is not needed as in Process_Line_Group procedure we are populating the right attibute
35833 -- So either it would be group_quantity or group_amount
35834
35835 /* OPEN l_list_line_attribute_cur(K.created_from_list_line_id);
35836 FETCH l_list_line_attribute_cur INTO l_attribute;
35837 CLOSE l_list_line_attribute_cur; */
35838
35839 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35840 engine_debug('Modifier Level Code: ' || K.modifier_level_code);
35841 END IF;
35842
35843 IF (K.MODIFIER_LEVEL_CODE = G_LINE_GROUP) THEN
35844 -- begin 2388011_new
35845 IF (K.SELECTED_VOLUME_ATTR = G_AMOUNT) THEN -- 2388011_new
35846 p_cal_req_ldets_tbl(J).qualifier_value := nvl(K.line_quantity,0);
35847 END IF;
35848 p_cal_req_ldets_tbl(J).line_quantity := nvl(K.group_quantity,K.group_amount); -- ASK RAVI
35849 --p_cal_req_ldets_tbl(J).line_quantity := nvl(K.line_quantity,0); --2388011, grp_lines_pbh
35850 --end 2388011_new
35851 p_cal_req_ldets_tbl(J).modifier_level_code := 'LINEGROUP'; --2388011, grp_lines_pbh
35852 ELSE
35853 -- begin 2388011_new
35854 -- 2388011_latest whole block
35855 IF (K.SELECTED_VOLUME_ATTR = G_QUANTITY) THEN -- ravi_latest
35856 p_cal_req_ldets_tbl(J).line_quantity := NVL(I.priced_quantity,I.line_quantity);
35857 p_cal_req_ldets_tbl(J).modifier_level_code := 'LINE'; -- new ravi
35858 ELSE -- Amount and Other Attributes
35859 p_cal_req_ldets_tbl(J).line_quantity := NVL(I.priced_quantity,I.line_quantity);
35860 p_cal_req_ldets_tbl(J).modifier_level_code := 'LINE'; -- new ravi
35861 p_cal_req_ldets_tbl(J).qualifier_value := nvl(K.line_quantity,0);
35862 END IF;
35863 -- end 2388011_latest
35864 l_value := null;
35865 END IF;
35866
35867 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35868 engine_debug('Qualifier Value for loading: ' || p_cal_req_ldets_tbl(J).qualifier_value);
35869
35870 END IF;
35871 p_cal_req_ldets_tbl(J).operand_calculation_code:=K.operand_calculation_code;
35872 p_cal_req_ldets_tbl(J).operand_value:=K.operand_value;
35873
35874 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35875 engine_debug('accrual_flag: '||p_cal_req_ldets_tbl(J).accrual_flag);
35876 engine_debug('estim_accrual_rate: '||p_cal_req_ldets_tbl(J).estim_accrual_rate);
35877 engine_debug('accrual_conversion_rate: '||p_cal_req_ldets_tbl(J).accrual_conversion_rate);
35878
35879 END IF;
35880 J:=J+1;
35881
35882 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35883 engine_debug('+--------------------------------+');
35884 engine_debug('| In Parent Line |');
35885 engine_debug('+--------------------------------+');
35886 engine_debug('LINE_DETAIL_INDEX: '||K.line_detail_index);
35887 engine_debug('LINE_INDEX: '|| K.line_index);
35888 engine_debug('CREATED_FROM_LIST_LINE_ID :'||K.created_from_list_line_id);
35889 engine_debug('CREATED_FROM_LIST_LINE_TYPE : '||K.created_from_list_line_type);
35890 engine_debug('CREATED_FROM_LIST_TYPE : '||K.created_from_list_type_code);
35891 engine_debug('PRICING_GROUP_SEQUENCE: '||K.pricing_group_sequence);
35892 engine_debug('OPERAND_CALCULATION_CODE: '||K.operand_calculation_code);
35893 engine_debug('OPERAND_VALUE: '||K.operand_value);
35894 engine_debug('NET_AMOUNT_FLAG: '||k.net_amount_flag); -- 2720717, IT net_amount
35895
35896 END IF;
35897 ELSIF (K.LINE_DETAIL_TYPE_CODE = G_CHILD_DETAIL_TYPE) THEN
35898 --FOR P IN l_line_attrs_cur(K.LINE_DETAIL_INDEX) LOOP
35899
35900 p_cal_req_rltd_tbl(N).value_from := qp_number.canonical_to_number(G_CHILD_VALUE_FROM_TBL(k.line_detail_index));
35901 p_cal_req_rltd_tbl(N).value_to := qp_number.canonical_to_number(G_CHILD_VALUE_TO_TBL(k.line_detail_index));
35902 p_cal_req_rltd_tbl(N).operand_calculation_code := K.operand_calculation_code;
35903 p_cal_req_rltd_tbl(N).operand_value := K.operand_value;
35904 p_cal_req_rltd_tbl(N).price_break_type_code := K.price_break_type_code;
35905 p_cal_req_rltd_tbl(N).child_line_detail_index :=K.line_detail_index;
35906 p_cal_req_rltd_tbl(N).related_list_line_type := K.created_from_list_line_type;
35907 p_cal_req_rltd_tbl(N).pricing_group_sequence := K.pricing_group_sequence;
35908 p_cal_req_rltd_tbl(N).recurring_value := K.recurring_value; -- block pricing
35909
35910 --get the parent line detail index for this pbh line
35911
35912 /*
35913 INDX,QP_PREQ_GRP.call_calculation_engine.call_calculation_engine_sel1,-No Index Used-,NA,NA
35914 */
35915 /* julin [3805113]: using global table populated in handle_break
35916 SELECT LINE_DETAIL_INDEX
35917 INTO l_parent_line_detail_index
35918 FROM qp_npreq_rltd_lines_tmp
35919 WHERE RELATED_LINE_DETAIL_INDEX = K.line_detail_index;
35920 */
35921 --p_cal_req_rltd_tbl(N).line_detail_index is actually parent line detail index
35922 p_cal_req_rltd_tbl(N).line_detail_index := TO_NUMBER(G_PARENT_LINE_DETAIL_INDEX_TBL(k.line_detail_index));
35923
35924 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35925 engine_debug('----IN Children line------------');
35926 engine_debug('value from: '||p_cal_req_rltd_tbl(N).value_from);
35927 engine_debug('value to: ' ||p_cal_req_rltd_tbl(N).value_to);
35928 engine_debug('LINE_INDEX: '||I.LINE_INDEX);
35929 engine_debug('Calculation Code: '||K.OPERAND_CALCULATION_CODE);
35930 engine_debug('Operand Value: '||K.OPERAND_VALUE);
35931 engine_debug('Price_break_type_code: '||K.PRICE_BREAK_TYPE_CODE);
35932 engine_debug('Parent line detail index: '||l_parent_line_detail_index);
35933 engine_debug('Child line detail index: '||K.LINE_DETAIL_INDEX);
35934 engine_debug('Related List line type: '||K.created_from_list_line_type);
35935 engine_debug('List Line ID: '||K.created_from_list_line_id);
35936
35937 END IF;
35938 N:=N+1;
35939
35940 --END LOOP;
35941
35942
35943 END IF;
35944 <<SKIP_CAL_LOOP>>
35945 IF(K.AUTOMATIC_FLAG = G_NO AND p_is_direct_call = FALSE) THEN
35946 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35947 engine_debug('Not calling cal engine for child break line because automatic_flag was set to ''N''');
35948 END IF;
35949 null;
35950 END IF;
35951
35952 END LOOP; --END K loop
35953
35954
35955 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35956 engine_debug(l_routine||' Before calling cal engine');
35957
35958 END IF;
35959 QP_Calculate_Price_PUB.Calculate_Price
35960 (p_cal_req_line_rec,
35961 p_cal_req_ldets_tbl,
35962 p_cal_req_rltd_tbl,
35963 l_status_code,
35964 l_status_text);
35965
35966 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
35967 l_err_line_index := I.LINE_INDEX;
35968 DELETE_LINES(l_err_line_index,
35969 G_STATUS_OTHER_ERRORS,
35970 'Error returned by QP_Calculate_Price_PUB.Calculate_Price',
35971 l_status_code,
35972 l_status_text);
35973 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35974 engine_debug('Error text '||l_status_text);
35975 END IF;
35976 GOTO E_LOOP;
35977
35978 END IF;
35979
35980 /* fix bug 2776849, move this to later
35981 -- Holding the parent price for service pricing
35982 IF (i.PROCESSING_ORDER = 1 ) THEN
35983 G_PARENT_PRICE_TBL_P(i.line_index) := p_cal_req_line_rec.UNIT_PRICE;
35984 END IF;
35985 */
35986 -- Indicating that there was a GSA Violation
35987 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35988 engine_debug ('GSA Status Code : ' || l_status_code);
35989 END IF;
35990 IF (l_status_code = G_STATUS_GSA_VIOLATION) THEN
35991 l_gsa_violation_flag := 'Y';
35992 V := V + 1;
35993 G_GSA_LINE_INDEX_TBL_C(V) := I.LINE_INDEX;
35994 ELSE
35995 l_gsa_violation_flag := 'N';
35996 END IF;
35997
35998 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
35999 engine_debug ('In Line Update Information100');
36000 END IF;
36001 -- Load Line Information
36002 IF (l_line_details_exist_flag = TRUE) THEN --Change
36003 U := U+1; --Change
36004 G_UNIT_PRICE_TBL_C(U) := p_cal_req_line_rec.UNIT_PRICE;
36005 G_PERCENT_PRICE_TBL_C(U) := p_cal_req_line_rec.PERCENT_PRICE;
36006 G_ADJUSTED_UNIT_PRICE_TBL_C(U) := p_cal_req_line_rec.ADJUSTED_UNIT_PRICE;
36007 --G_PARENT_PRICE_TBL_C(U) := l_parent_line_price;
36008 G_PARENT_PRICE_TBL_C(U) := l_parent_line_unit_price; -- fix 2776849, uom_service_pricing
36009 G_PARENT_PRICED_QUANTITY_TBL_C(U) := l_parent_priced_quantity;
36010 G_PARENT_LINE_QUANTITY_TBL_C(U) := l_parent_line_quantity;
36011 G_PARENT_LINE_UOM_TBL_C(U) := l_parent_line_uom_code;
36012 G_LINE_INDEX_TBL_C(U) := i.line_index;
36013 G_EXTENDED_PRICE_TBL_C(U) := p_cal_req_line_rec.EXTENDED_PRICE; -- block pricing
36014 --G_LINE_UNIT_PRICE_TBL_C(U) := p_cal_req_line_rec.UNIT_PRICE * i.PRICED_QUANTITY / i.LINE_QUANTITY;
36015
36016 -- begin shu, round line unit price (unit price by order uom)
36017 -- shu, fix bug 2354422, avoid division zero if i.LINE_QUANTITY is zero
36018
36019 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36020 engine_debug ('parent_qty: '|| l_parent_priced_quantity);
36021 engine_debug ('unit_price: '|| p_cal_req_line_rec.UNIT_PRICE);
36022 engine_debug ('priced_qty: '|| i.PRICED_QUANTITY);
36023 engine_debug ('line_qty: '|| i.LINE_QUANTITY);
36024 END IF;
36025
36026 IF (i.LINE_QUANTITY <> 0 AND i.LINE_QUANTITY IS NOT NULL) THEN
36027 -- l_line_unit_price := p_cal_req_line_rec.UNIT_PRICE * i.PRICED_QUANTITY / i.LINE_QUANTITY;-- bug 2693700
36028 -- l_line_unit_price:=(p_cal_req_line_rec.UNIT_PRICE * i.PRICED_QUANTITY/i.LINE_QUANTITY)*nvl(i.catchweight_qty, 1);
36029 IF (i.catchweight_qty IS NOT NULL) THEN
36030 l_line_unit_price :=
36031 p_cal_req_line_rec.unit_price * (i.priced_quantity/i.actual_order_quantity)* (i.catchweight_qty/i.line_quantity);
36032 ELSIF (i.actual_order_quantity IS NOT NULL) THEN
36033 l_line_unit_price :=
36034 p_cal_req_line_rec.unit_price * (i.priced_quantity/i.actual_order_quantity);
36035 ELSE
36036 l_line_unit_price := p_cal_req_line_rec.unit_price * (i.priced_quantity/i.line_quantity);
36037 END IF;
36038
36039 -- bug 2693700
36040 --l_order_uom_selling_price :=
36041 --(nvl(p_cal_req_line_rec.adjusted_unit_price,p_cal_req_line_rec.unit_price) *
36042 --i.priced_quantity/ i.line_quantity)* nvl(i.catchweight_qty, 1);
36043 -- bug 2693700
36044
36045 IF (i.catchweight_qty IS NOT NULL) THEN
36046 l_order_uom_selling_price := (nvl(p_cal_req_line_rec.adjusted_unit_price,p_cal_req_line_rec.unit_price) *
36047 (i.priced_quantity/i.actual_order_quantity)* (i.catchweight_qty/i.line_quantity));
36048 ELSIF (i.actual_order_quantity IS NOT NULL) THEN
36049 l_order_uom_selling_price := (nvl(p_cal_req_line_rec.adjusted_unit_price,p_cal_req_line_rec.unit_price) *
36050 (i.priced_quantity/i.actual_order_quantity));
36051 ELSE
36052 l_order_uom_selling_price := (nvl(p_cal_req_line_rec.adjusted_unit_price,p_cal_req_line_rec.unit_price)*
36053 (i.priced_quantity/i.line_quantity));
36054 END IF;
36055
36056 ELSE
36057 IF (i.LINE_UOM_CODE = i.PRICED_UOM_CODE) THEN -- no uom conversion
36058 l_line_unit_price := p_cal_req_line_rec.UNIT_PRICE;
36059 l_line_adjusted_unit_price := nvl(p_cal_req_line_rec.ADJUSTED_UNIT_PRICE,p_cal_req_line_rec.UNIT_PRICE);
36060 ELSE -- uom conversion, need to show line_unit_price even line_qty is zero or null
36061 Inv_convert.inv_um_conversion(i.line_uom_code,
36062 i.priced_uom_code,
36063 null,
36064 l_conversion_rate);
36065 l_line_unit_price := p_cal_req_line_rec.UNIT_PRICE * l_conversion_rate;
36066 l_line_adjusted_unit_price := nvl(p_cal_req_line_rec.ADJUSTED_UNIT_PRICE,p_cal_req_line_rec.UNIT_PRICE) *
36067 l_conversion_rate;
36068 END IF;
36069
36070 -- l_order_uom_selling_price := (nvl(p_cal_req_line_rec.adjusted_unit_price,p_cal_req_line_rec.unit_price) *
36071 -- l_conversion_rate * i.priced_quantity/ i.line_quantity)* nvl(i.catchweight_qty, 1);
36072 -- bug 2693700
36073 IF (i.catchweight_qty IS NOT NULL) THEN
36074
36075 if (i.line_quantity <> 0) then
36076 l_order_uom_selling_price := (l_line_adjusted_unit_price *
36077 (i.priced_quantity/i.actual_order_quantity)* (i.catchweight_qty/i.line_quantity));
36078 Else
36079 l_order_uom_selling_price := l_line_adjusted_unit_price;
36080 --Bug#3075286
36081 End if;
36082 ELSIF (i.actual_order_quantity IS NOT NULL) THEN
36083
36084 if i.actual_order_quantity <> 0 then
36085 l_order_uom_selling_price := (l_line_adjusted_unit_price * (i.priced_quantity/i.actual_order_quantity));
36086 Else
36087 l_order_uom_selling_price := l_line_adjusted_unit_price; --Bug#3075286
36088 End if;
36089 ELSE
36090
36091
36092 IF i.LINE_QUANTITY <> 0 THEN
36093
36094 l_order_uom_selling_price := (l_line_adjusted_unit_price *(i.priced_quantity/i.line_quantity));
36095 ELSE
36096 l_order_uom_selling_price := l_line_adjusted_unit_price;
36097 --Bug#3075286
36098 END IF;
36099 END IF;
36100
36101 END IF;
36102 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36103 engine_debug ('line_unit_price bfe round: '||l_line_unit_price);
36104 engine_debug ('rounding_factor:'|| i.rounding_factor);
36105 engine_debug (' order_uom_selling_price bfe round : ' || l_order_uom_selling_price); -- bug 2693700
36106 END IF;
36107
36108 -- Holding the parent price for service pricing
36109 IF (i.PROCESSING_ORDER = 1 ) THEN
36110 G_PARENT_PRICE_TBL_P(i.line_index) := nvl(l_line_unit_price, p_cal_req_line_rec.UNIT_PRICE) ;
36111 END IF;
36112
36113 --===[prarasto:Post Round] Start : Calculate rounded values ==--
36114 l_adjusted_unit_price_ur(U) := NVL(G_ADJUSTED_UNIT_PRICE_TBL_C(U), G_UNIT_PRICE_TBL_C(U));
36115
36116 l_unit_selling_price_ur(U) := l_order_uom_selling_price;
36117
36118 IF( G_EXTENDED_PRICE_TBL_C(U) is not null )THEN
36119 IF ( i.catchweight_qty is null ) and ( i.actual_order_quantity IS NOT NULL ) THEN
36120 l_extended_selling_price_ur(U) := l_unit_selling_price_ur(U) * i.actual_order_quantity;
36121 ELSE
36122 l_extended_selling_price_ur(U) := l_unit_selling_price_ur(U) * i.line_quantity;
36123 END IF;
36124 ELSE
36125 l_extended_selling_price_ur(U) := G_EXTENDED_PRICE_TBL_C(U);
36126 END IF;
36127
36128 --9153159 added v_price_round_options condition to unround if the profile option is set to No Rounding
36129 IF (G_ROUNDING_FLAG = 'N') or (i.rounding_factor IS null) OR (v_price_round_options = 'NO_ROUND') THEN
36130 l_adjusted_unit_price(U) := l_adjusted_unit_price_ur(U);
36131 l_unit_selling_price(U) := l_unit_selling_price_ur(U);
36132 l_extended_selling_price(U) := l_extended_selling_price_ur(U);
36133 G_LINE_UNIT_PRICE_TBL_C(U) := l_line_unit_price;
36134 ELSE
36135 l_adjusted_unit_price(U) := round(l_adjusted_unit_price_ur(U), - 1 * i.rounding_factor);
36136 l_unit_selling_price(U) := round(l_unit_selling_price_ur(U), - 1 * i.rounding_factor);
36137 l_extended_selling_price(U) := round(l_extended_selling_price_ur(U), - 1 * i.rounding_factor);
36138 G_LINE_UNIT_PRICE_TBL_C(U) := round(l_line_unit_price, - 1 * i.rounding_factor);
36139 END IF;
36140 /*
36141 IF G_ROUNDING_FLAG = 'Y' AND i.rounding_factor IS NOT NULL THEN -- aso rounding
36142
36143 l_line_unit_price := ROUND(l_line_unit_price, (-1)*i.rounding_factor);
36144 G_LINE_UNIT_PRICE_TBL_C(U) := l_line_unit_price;
36145
36146 l_order_uom_selling_price := ROUND(l_order_uom_selling_price, (-1)*i.rounding_factor); --bug 2693700
36147 G_ORDER_UOM_TBL_C(U) := l_order_uom_selling_price; -- bug 2693700
36148
36149
36150 ELSIF (G_ROUNDING_FLAG = 'Q') THEN -- check qp_selling_price_rounding_options profile -- shu, new rounding
36151 IF ((v_price_round_options = 'ROUND_ADJ' OR v_price_round_options = 'NO_ROUND_ADJ') AND i.rounding_factor IS NOT NULL) THEN -- do not round if profile is null
36152 l_line_unit_price := ROUND(l_line_unit_price, (-1)*i.rounding_factor);
36153 G_LINE_UNIT_PRICE_TBL_C(U) := l_line_unit_price;
36154
36155 l_order_uom_selling_price := ROUND(l_order_uom_selling_price, (-1)*i.rounding_factor); --bug 2693700
36156 G_ORDER_UOM_TBL_C(U) := l_order_uom_selling_price; -- bug 2693700
36157
36158 ELSE -- 'NO_ROUND', 'NO_ROUND_ADJ'
36159 G_LINE_UNIT_PRICE_TBL_C(U) := l_line_unit_price;
36160 G_ORDER_UOM_TBL_C(U) := l_order_uom_selling_price; -- bug 2693700
36161 END IF;
36162 ELSE
36163 G_LINE_UNIT_PRICE_TBL_C(U) := l_line_unit_price;
36164 G_ORDER_UOM_TBL_C(U) := l_order_uom_selling_price; -- bug 2693700
36165 END IF;
36166 */
36167 --===[prarasto:Post Round] End : Calculate rounded values ==--
36168
36169 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36170 engine_debug (' final line_unit_price : '||l_line_unit_price);
36171 engine_debug (' order_uom_selling_price : ' || l_order_uom_selling_price); -- bug 2693700
36172 engine_debug ('G_LINE_UNIT_PRICE_TBL_C(U) : '||G_LINE_UNIT_PRICE_TBL_C(U)); --[prarasto:Post Round]
36173 engine_debug ('l_unit_selling_price(U) : '||l_unit_selling_price(U)); --[prarasto:Post Round]
36174 END IF;
36175 -- end shu
36176 l_line_details_exist_flag := FALSE; -- reset
36177 l_line_unit_price := NULL; --reset, shu
36178 l_order_uom_selling_price := NULL; -- bug 2693700
36179 l_conversion_rate := NULL; -- shu
36180 END IF;
36181
36182 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36183 engine_debug ('In Line Update Information200');
36184 END IF;
36185 --Load Line Detail Information
36186 IF (p_cal_req_ldets_tbl.COUNT > 0) THEN
36187 FOR X IN p_cal_req_ldets_tbl.FIRST .. p_cal_req_ldets_tbl.LAST
36188 LOOP
36189 Y := Y + 1;
36190 G_ADJUSTMENT_AMOUNT_TBL_D(Y) := p_cal_req_ldets_tbl(X).adjustment_amount;
36191 G_BENEFIT_QUANTITY_TBL_D(Y) := p_cal_req_ldets_tbl(X).benefit_qty;
36192 G_OPERAND_VALUE_TBL_D(Y) := p_cal_req_ldets_tbl(X).operand_value;
36193 G_OPR_CALC_CODE_TBL_D(Y) := p_cal_req_ldets_tbl(X).OPERAND_CALCULATION_CODE; -- bug#12916970
36194 -- 2388011_new
36195 /*
36196 --begin 2388011, grp_of_lines_pbh
36197 IF (p_cal_req_ldets_tbl(X).modifier_level_code = G_LINE_GROUP) THEN
36198 G_QUALIFIER_VALUE_TBL_D(Y) := p_cal_req_ldets_tbl(X).qualifier_value;
36199 ELSE
36200 G_QUALIFIER_VALUE_TBL_D(Y) := NULL; -- needed , do not remove this code
36201 END IF;
36202 -- end 2388011, grp_of_lines_pbh
36203 */
36204
36205 G_LINE_DETAIL_INDEX_TBL_D(Y) := p_cal_req_ldets_tbl(X).line_detail_index;
36206 END LOOP;
36207 END IF;
36208
36209 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36210 engine_debug ('In Line Update Information300');
36211 engine_debug ('Related Pl/sql table count : ' || p_cal_req_rltd_tbl.count);
36212
36213 END IF;
36214 -- Load Related Lines Information
36215 IF (p_cal_req_rltd_tbl.COUNT > 0) THEN
36216 FOR X IN p_cal_req_rltd_tbl.FIRST .. p_cal_req_rltd_tbl.LAST
36217 LOOP
36218 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36219 engine_debug ('In Line Update Information3001');
36220 engine_debug ('Line Qty : ' || p_cal_req_rltd_tbl(X).line_qty);
36221 engine_debug ('Adjustment Amt : ' || p_cal_req_rltd_tbl(X).adjustment_amount);
36222 engine_debug ('Line Detail : ' || p_cal_req_rltd_tbl(X).child_line_detail_index);
36223 END IF;
36224 L := L+1;
36225 G_LINE_QUANTITY_TBL_R(L) := p_cal_req_rltd_tbl(X).line_qty;
36226 G_ADJUSTMENT_AMOUNT_TBL_R(L) := p_cal_req_rltd_tbl(X).adjustment_amount;
36227 G_LINE_DETAIL_INDEX_TBL_R(L) := p_cal_req_rltd_tbl(X).child_line_detail_index;
36228 END LOOP;
36229 END IF;
36230
36231 --Need to change it when have more time. Using bulk binding features.
36232 --to imporve performance
36233
36234 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36235 engine_debug ('In Line Update Information400');
36236 engine_debug('#7');
36237 END IF;
36238 --Bug# 1372485
36239 --Unit price can not be null at the very first phase
36240 IF (p_phase_sequence = G_PRICE_LIST_SEQUENCE
36241 AND p_cal_req_line_rec.UNIT_PRICE IS NULL
36242 AND I.line_type_code <> G_ORDER_LEVEL
36243 AND I.price_flag <> G_NO) THEN
36244
36245 -- begin shu, fix bug 2425027
36246 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36247 engine_debug ('percent price: '||p_cal_req_line_rec.PERCENT_PRICE);
36248 engine_debug ('related item price: '||p_cal_req_line_rec.RELATED_ITEM_PRICE);
36249 END IF;
36250
36251 IF p_cal_req_line_rec.PERCENT_PRICE IS NOT NULL AND p_cal_req_line_rec.RELATED_ITEM_PRICE IS NULL THEN
36252 l_message := ' No refernce of parent item or parent price is null for percent-based pricing.';
36253 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36254 engine_debug ('line_index: '||i.line_index);
36255 END IF;
36256 UPDATE qp_npreq_lines_tmp qplines
36257 SET
36258 PROCESSED_FLAG = G_PROCESSED,
36259 PERCENT_PRICE = p_cal_req_line_rec.PERCENT_PRICE -- still keep the percent_price
36260 WHERE qplines.LINE_INDEX = i.LINE_INDEX;
36261
36262 DELETE_LINES (i.LINE_INDEX,
36263 G_STATUS_INVALID_PRICE_LIST,
36264 l_message,
36265 l_status_code,
36266 l_status_text);
36267 ELSE
36268 -- end shu, fix bug 2425027
36269
36270 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36271 engine_debug('#8');
36272
36273 END IF;
36274 -- begin shulin bug 1605829 fix
36275
36276 OPEN get_request_prclst_name_cur(I.PRICE_LIST_HEADER_ID);
36277 FETCH get_request_prclst_name_cur INTO l_request_price_list_name;
36278 CLOSE get_request_prclst_name_cur;
36279
36280 OPEN get_request_inv_item_id_cur(I.LINE_INDEX);
36281 FETCH get_request_inv_item_id_cur INTO l_request_item_id;
36282 CLOSE get_request_inv_item_id_cur;
36283
36284 OPEN get_request_inv_item_name_cur(l_request_item_id);
36285 FETCH get_request_inv_item_name_cur INTO l_request_item_name;
36286 CLOSE get_request_inv_item_name_cur;
36287
36288 -- if item_name does not exist, then use inventory_id to display
36289 IF l_request_item_name IS NULL AND l_request_item_id IS NOT NULL THEN
36290 l_request_item_name := ' ID: ' || l_request_item_id;
36291 END IF;
36292
36293 l_request_uom := I.LINE_UOM_CODE;
36294
36295 FND_MESSAGE.SET_NAME('QP','QP_PRC_NO_LIST_PRICE');
36296 FND_MESSAGE.SET_TOKEN('ITEM',l_request_item_name);
36297 FND_MESSAGE.SET_TOKEN('UNIT',l_request_uom);
36298 FND_MESSAGE.SET_TOKEN('PRICE_LIST',l_request_price_list_name);
36299
36300 l_message := FND_MESSAGE.GET;
36301
36302 IF (G_REQUEST_TYPE_CODE = 'PO' AND l_request_price_list_name IS NULL) THEN
36303 SET_STATUS_CODE(NULL,
36304 l_message,
36305 I.LINE_INDEX,
36306 NULL,
36307 'LINES',
36308 l_status_code,
36309 l_status_text);
36310
36311 ELSE
36312 SET_STATUS_CODE(G_STATUS_INVALID_PRICE_LIST,
36313 l_message,
36314 I.LINE_INDEX,
36315 NULL,
36316 'LINES',
36317 l_status_code,
36318 l_status_text);
36319 END IF;
36320
36321 SET_STATUS_CODE(G_STATUS_DELETED,
36322 l_message,
36323 I.LINE_INDEX,
36324 NULL,
36325 'ATTRS',
36326 l_status_code,
36327 l_status_text);
36328
36329 SET_STATUS_CODE(G_STATUS_DELETED,
36330 l_message,
36331 I.LINE_INDEX,
36332 NULL,
36333 'LDETS',
36334 l_status_code,
36335 l_status_text);
36336
36337 -- end shu bug 1605829 fix
36338
36339 END IF; -- end if p_cal_req_line_rec.PERCENT_PRICE IS NOT NULL, shu fix bug 2425027
36340 END IF;
36341
36342 --Reset the values for next loop
36343 l_parent_line_quantity := NULL;
36344 l_parent_unit_price :=NULL; --2776849
36345 l_parent_line_unit_price :=NULL; -- 2776849
36346 l_parent_line_uom_code :=NULL;
36347 l_message := NULL; -- shu, fix bug 2425027
36348 p_cal_req_line_rec := l_cal_req_line_rec;
36349 p_cal_req_ldets_tbl.DELETE ;
36350 p_cal_req_rltd_tbl.DELETE;
36351 J := 1; -- For new request line
36352
36353 <<E_LOOP>>
36354 null;
36355 END LOOP; --end loop for I
36356
36357 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36358 engine_debug ('In Line Update Information500');
36359 END IF;
36360 -- Update All the Line Information at 1 shot
36361 IF (G_LINE_INDEX_TBL_C.COUNT > 0 ) THEN
36362 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36363 engine_debug ('In Line Update Information');
36364 END IF;
36365 FORALL M IN G_LINE_INDEX_TBL_C.FIRST.. G_LINE_INDEX_TBL_C.LAST
36366 UPDATE qp_npreq_lines_tmp qplines
36367 SET PRICING_STATUS_CODE = G_STATUS_UPDATED,
36368 PROCESSED_FLAG = G_PROCESSED,
36369 UNIT_PRICE = G_UNIT_PRICE_TBL_C(M),
36370 LINE_UNIT_PRICE = G_LINE_UNIT_PRICE_TBL_C(M), --shu_latest
36371 -- ORDER_UOM_SELLING_PRICE = G_ORDER_UOM_TBL_C(M), -- bug 2693700
36372 ORDER_UOM_SELLING_PRICE = l_unit_selling_price(M), --[prarasto:Post Round]
36373 --ORDER_UOM_SELLING_PRICE_UR = l_unit_selling_price_ur(M), --[prarasto:Post Round], [julin/postround] redesign
36374 PERCENT_PRICE = G_PERCENT_PRICE_TBL_C(M),
36375 -- ADJUSTED_UNIT_PRICE = NVL(G_ADJUSTED_UNIT_PRICE_TBL_C(M), G_UNIT_PRICE_TBL_C(M)),
36376 ADJUSTED_UNIT_PRICE = l_adjusted_unit_price(M), --[prarasto:Post Round]
36377 --ADJUSTED_UNIT_PRICE_UR = l_adjusted_unit_price_ur(M), --[prarasto:Post Round], [julin/postround] redesign
36378 PARENT_PRICE = G_PARENT_PRICE_TBL_C(M),
36379 --PARENT_QUANTITY = NVL(G_PARENT_PRICED_QUANTITY_TBL_C(M),G_PARENT_LINE_QUANTITY_TBL_C(M)),
36380 PARENT_QUANTITY = NVL(G_PARENT_LINE_QUANTITY_TBL_C(M), G_PARENT_PRICED_QUANTITY_TBL_C(M)), -- 2776849
36381 --PARENT_UOM_CODE = G_PARENT_LINE_UOM_TBL_C(M),
36382 PARENT_UOM_CODE = G_PARENT_LINE_UOM_TBL_C(M), -- 2776849
36383 -- EXTENDED_PRICE = G_EXTENDED_PRICE_TBL_C(M) -- block pricing
36384 EXTENDED_PRICE = l_extended_selling_price(M) --[prarasto:Post Round]
36385 --EXTENDED_SELLING_PRICE_UR = l_extended_selling_price_ur(M) --[prarasto:Post Round], [julin/postround] redesign
36386 WHERE qplines.LINE_INDEX = G_LINE_INDEX_TBL_C(M)
36387 AND (qplines.PRICE_FLAG <> G_NO or qplines.PROCESSED_CODE = G_BY_ENGINE) --CURRENT OF l_request_line_cur;
36388 -- shu, add following line to fix bug 2425027, so pricing_status_code IPL does not get changed to be UPDATED here
36389 AND (qplines.PRICING_STATUS_CODE <> G_STATUS_INVALID_PRICE_LIST
36390 OR qplines.LIST_PRICE_OVERRIDE_FLAG IN ('Y', 'O')); --po integration
36391 END IF;
36392
36393 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36394 engine_debug ('In Line Update Information600');
36395 END IF;
36396 IF (p_is_direct_call = TRUE) THEN
36397 -- Update All the Line Details Information at 1 Shot for all Lines
36398 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36399 engine_debug ('In Line Detail Update Information1');
36400 END IF;
36401 IF (G_LINE_DETAIL_INDEX_TBL_D.COUNT > 0) THEN
36402 FORALL O IN G_LINE_DETAIL_INDEX_TBL_D.FIRST .. G_LINE_DETAIL_INDEX_TBL_D.LAST
36403 UPDATE qp_npreq_ldets_tmp
36404 SET ADJUSTMENT_AMOUNT = G_ADJUSTMENT_AMOUNT_TBL_D(O),
36405 --LINE_QUANTITY = G_QUALIFIER_VALUE_TBL_D(O),-- 2388011, ASK RAVI, either priced_quantity,group_quantity,group_amount
36406 BENEFIT_QTY = G_BENEFIT_QUANTITY_TBL_D(O),
36407 OPERAND_VALUE = G_OPERAND_VALUE_TBL_D(O) --2388011_new, remove comma
36408 -- GROUP_QUANTITY = G_QUALIFIER_VALUE_TBL_D(O), --2388011_new
36409 -- GROUP_AMOUNT = G_QUALIFIER_VALUE_TBL_D(O) --2388011_new
36410 ,OPERAND_CALCULATION_CODE = G_OPR_CALC_CODE_TBL_D(O) --bug#12916970
36411 WHERE LINE_DETAIL_INDEX = G_LINE_DETAIL_INDEX_TBL_D(O);
36412 END IF;
36413 ELSE
36414 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36415 engine_debug ('In Line Detail Update Information2');
36416 END IF;
36417 -- Update All the Line Details Information at 1 Shot for all Lines
36418 IF (G_LINE_DETAIL_INDEX_TBL_D.COUNT > 0) THEN
36419 FORALL O IN G_LINE_DETAIL_INDEX_TBL_D.FIRST .. G_LINE_DETAIL_INDEX_TBL_D.LAST
36420 UPDATE /*+ index(QP_NPREQ_LDETS_TMP QP_PREQ_LDETS_TMP_U1) */ qp_npreq_ldets_tmp --5658579
36421 SET ADJUSTMENT_AMOUNT = G_ADJUSTMENT_AMOUNT_TBL_D(O),
36422 --LINE_QUANTITY = G_QUALIFIER_VALUE_TBL_D(O), -- 2388011, ASK RAVI, either priced_quantity,group_quantity,group_amount
36423 BENEFIT_QTY = G_BENEFIT_QUANTITY_TBL_D(O),
36424 OPERAND_VALUE = G_OPERAND_VALUE_TBL_D(O),
36425 --GROUP_QUANTITY = G_QUALIFIER_VALUE_TBL_D(O), --2388011_new
36426 --GROUP_AMOUNT = G_QUALIFIER_VALUE_TBL_D(O), --2388011_new
36427 APPLIED_FLAG = AUTOMATIC_FLAG
36428 ,OPERAND_CALCULATION_CODE = G_OPR_CALC_CODE_TBL_D(O) -- bug#12916970
36429 WHERE LINE_DETAIL_INDEX = G_LINE_DETAIL_INDEX_TBL_D(O);
36430 END IF;
36431 END IF;
36432
36433 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36434 engine_debug ('In Line Detail Update Information3');
36435 END IF;
36436 -- Update All the Related Line Details Information at 1 Shot for all Lines
36437 IF (G_LINE_DETAIL_INDEX_TBL_R.COUNT > 0) THEN
36438 FORALL O IN G_LINE_DETAIL_INDEX_TBL_R.FIRST .. G_LINE_DETAIL_INDEX_TBL_R.LAST
36439 UPDATE qp_npreq_ldets_tmp
36440 SET ADJUSTMENT_AMOUNT = G_ADJUSTMENT_AMOUNT_TBL_R(O),
36441 LINE_QUANTITY = G_LINE_QUANTITY_TBL_R(O)
36442 WHERE LINE_DETAIL_INDEX = G_LINE_DETAIL_INDEX_TBL_R(O);
36443 END IF;
36444
36445 -- Update all GSA Violations at 1 shot
36446 --INDX,QP_PREQ_GRP.call_calculation_engine.call_calculation_engine_upd6,qp_npreq_lines_tmp_N1,LINE_INDEX,1
36447 IF (G_GSA_LINE_INDEX_TBL_C.COUNT > 0) THEN
36448 FORALL K IN G_GSA_LINE_INDEX_TBL_C.FIRST .. G_GSA_LINE_INDEX_TBL_C.LAST
36449 UPDATE qp_npreq_lines_tmp
36450 SET PRICING_STATUS_CODE = G_STATUS_GSA_VIOLATION,
36451 PRICING_STATUS_TEXT = l_status_text
36452 WHERE LINE_INDEX = G_GSA_LINE_INDEX_TBL_C(K);
36453 END IF;
36454 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36455 engine_debug ('In End Update Information');
36456
36457 END IF;
36458 -- Reset All tables
36459 G_UNIT_PRICE_TBL_C.delete;
36460 G_PERCENT_PRICE_TBL_C.delete;
36461 G_ADJUSTED_UNIT_PRICE_TBL_C.delete;
36462 G_PARENT_PRICE_TBL_C.delete;
36463 G_PARENT_PRICED_QUANTITY_TBL_C.delete;
36464 G_PARENT_LINE_QUANTITY_TBL_C.delete;
36465 G_PARENT_LINE_UOM_TBL_C.delete;
36466 G_LINE_INDEX_TBL_C.delete;
36467 G_GSA_LINE_INDEX_TBL_C.delete;
36468 G_EXTENDED_PRICE_TBL_C.delete; -- block pricing
36469
36470 G_ADJUSTMENT_AMOUNT_TBL_D.delete;
36471 --G_LINE_QUANTITY_TBL_D.delete;
36472 G_BENEFIT_QUANTITY_TBL_D.delete;
36473 G_OPERAND_VALUE_TBL_D.delete;
36474 G_QUALIFIER_VALUE_TBL_D.delete;
36475 G_LINE_DETAIL_INDEX_TBL_D.delete;
36476
36477 G_LINE_QUANTITY_TBL_R.delete;
36478 G_ADJUSTMENT_AMOUNT_TBL_R.delete;
36479 G_LINE_DETAIL_INDEX_TBL_R.delete;
36480
36481 EXCEPTION
36482 WHEN E_CAL_ENGINE_ERROR THEN
36483 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36484 engine_debug(l_routine||' '||l_status_text);
36485 END IF;
36486 DELETE_LINES(l_err_line_index,
36487 G_STATUS_OTHER_ERRORS,
36488 'Error returned by QP_Calculate_Price_PUB.Calculate_Price',
36489 l_status_code,
36490 l_status_text);
36491 WHEN OTHERS THEN
36492 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36493 engine_debug('Exception in internal procedure CALL_CALCULATION_ENGINE ' || SQLERRM);
36494 END IF;
36495 x_status_code := FND_API.G_RET_STS_ERROR;
36496 x_status_text :=l_routine||' '||SQLERRM;
36497 null;
36498 END;
36499
36500 /*+------------------------------------------------------------
36501 | FORMULA INTEGRATION
36502 +------------------------------------------------------------
36503 */
36504
36505 PROCEDURE Formula_Processing(p_line_index IN NUMBER,
36506 p_pricing_phase_id IN NUMBER,
36507 x_status_code OUT NOCOPY VARCHAR2,
36508 x_status_text OUT NOCOPY VARCHAR2 ) AS
36509
36510 /*
36511 INDX,QP_PREQ_GRP.formula_processing.l_get_formula_id_cur,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
36512 INDX,QP_PREQ_GRP.formula_processing.l_get_formula_id_cur,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
36513 INDX,QP_PREQ_GRP.formula_processing.l_get_formula_id_cur,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
36514
36515 -- Full table scan on qp_npreq_lines_tmp
36516 */
36517 CURSOR l_get_formula_id_cur IS
36518
36519 SELECT /*+ ORDERED USE_NL(b) index(b QP_PREQ_LDETS_TMP_N1) l_get_formula_id_cur */
36520 b.LINE_INDEX , b.PRICE_FORMULA_ID,a.PRICING_EFFECTIVE_DATE,b.CREATED_FROM_LIST_LINE_ID,
36521 b.OPERAND_CALCULATION_CODE , b.OPERAND_VALUE, b.CREATED_FROM_LIST_LINE_TYPE,b.LINE_DETAIL_TYPE_CODE,
36522 b.GROUP_QUANTITY,b.LINE_QUANTITY GROUP_AMOUNT
36523 FROM
36524 qp_npreq_lines_tmp a,
36525 qp_npreq_ldets_tmp b
36526 WHERE a.LINE_INDEX = b.LINE_INDEX
36527 AND b.PRICING_STATUS_CODE = G_STATUS_NEW
36528 AND b.PRICING_PHASE_ID = p_pricing_phase_id
36529 AND b.PRICE_FORMULA_ID IS NOT NULL;
36530
36531 CURSOR l_get_list_price_cur(p_line_index PLS_INTEGER) IS
36532 SELECT UNIT_PRICE
36533 FROM qp_npreq_lines_tmp
36534 WHERE LINE_INDEX = p_line_index;
36535
36536 l_req_line_attrs_rec QP_FORMULA_PRICE_CALC_PVT.req_line_attrs_rec;
36537 l_req_line_attrs_tbl QP_FORMULA_PRICE_CALC_PVT.req_line_attrs_tbl;
36538 l_index NUMBER := 1;
36539 l_formula_based_price NUMBER;
36540 l_list_line_id NUMBER;
36541 l_return_status VARCHAR2(240);
36542 E_FORMULA_CALL_ERROR EXCEPTION;
36543 l_list_price NUMBER;
36544 l_modifier_value NUMBER;
36545 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.Formula_Processing';
36546 l_line_index NUMBER;
36547 l_status_code VARCHAR2(30);
36548 l_status_text VARCHAR2(240);
36549 l_attr_inserted_flag BOOLEAN := FALSE;
36550 l_group_amount NUMBER;
36551
36552
36553 TYPE Num_Type IS TABLE OF Number INDEX BY BINARY_INTEGER;
36554 TYPE Char_Type IS TABLE OF Varchar2(30) INDEX BY BINARY_INTEGER;
36555
36556 l_line_index_tbl Num_Type;
36557 l_attribute_type_tbl Char_Type;
36558 l_context_tbl Char_Type;
36559 l_attribute_tbl Char_Type;
36560 l_pricing_status_code_tbl Char_Type;
36561 l_value_from_tbl Num_Type;
36562 l_value_from Number;
36563 l_msg_attribute VARCHAR2(80);
36564 l_msg_context VARCHAR2(240);
36565 l_rows NATURAL := 5000;
36566
36567 -- Bug 2772214
36568 l_pass_qualifiers varchar2(10) := FND_PROFILE.VALUE('QP_PASS_QUALIFIERS_TO_GET_CUSTOM');
36569
36570 -- added for formula messages
36571 E_ATTRIBUTE_NON_NUMERIC EXCEPTION;
36572 CURSOR am_attr_cols_cur
36573 IS
36574 SELECT /*+ dynamic_sampling(1) */ line_index, attribute_type, context, attribute,
36575 pricing_status_code, qp_number.canonical_to_number(value_from)
36576 FROM qp_npreq_line_attrs_tmp lattr
36577 WHERE attribute_type IN ('PRICING', 'PRODUCT')
36578 AND pricing_status_code = G_STATUS_UNCHANGED
36579 AND EXISTS (SELECT format_type
36580 FROM fnd_flex_value_sets VSET,
36581 qp_segments_b SEGMENTS, qp_prc_contexts_b PCONTEXTS
36582 WHERE vset.flex_value_set_id = segments.user_valueset_id
36583 AND segments.application_id = 661
36584 AND pcontexts.prc_context_type <> 'QUALIFIER'
36585 AND pcontexts.prc_context_code = lattr.context
36586 AND segments.segment_mapping_column = lattr.attribute
36587 AND segments.prc_context_id = pcontexts.prc_context_id
36588 AND vset.format_type = 'N');
36589
36590 -- Bug 2772214, To pass Qualifiers to get_custom_price
36591
36592 CURSOR am_attr_qual_cols_cur
36593 IS
36594 SELECT line_index, attribute_type, context, attribute,
36595 pricing_status_code, qp_number.canonical_to_number(value_from)
36596 FROM qp_npreq_line_attrs_tmp lattr
36597 WHERE attribute_type IN ('PRICING', 'PRODUCT', 'QUALIFIER')
36598 AND pricing_status_code = G_STATUS_UNCHANGED
36599 AND EXISTS (SELECT format_type
36600 FROM fnd_flex_value_sets VSET,
36601 qp_segments_b SEGMENTS, qp_prc_contexts_b PCONTEXTS
36602 WHERE vset.flex_value_set_id = segments.user_valueset_id
36603 AND segments.application_id = 661
36604 AND pcontexts.prc_context_code = lattr.context
36605 AND segments.segment_mapping_column = lattr.attribute
36606 AND segments.prc_context_id = pcontexts.prc_context_id
36607 AND vset.format_type = 'N');
36608
36609 -- added for formula error messages
36610 CURSOR am_attr_qual_msg_cur
36611 IS
36612 SELECT lattr.value_from,lattr.context,
36613 nvl(SEGMENTS_TL.SEEDED_SEGMENT_NAME,SEGMENTS_TL.USER_SEGMENT_NAME) attribute
36614 FROM qp_npreq_line_attrs_tmp lattr, fnd_flex_value_sets VSET,
36615 qp_segments_b SEGMENTS, qp_prc_contexts_b PCONTEXTS , qp_segments_tl SEGMENTS_TL
36616 WHERE attribute_type IN ('PRICING', 'PRODUCT', 'QUALIFIER')
36617 AND pricing_status_code = G_STATUS_UNCHANGED
36618 AND vset.flex_value_set_id = segments.user_valueset_id
36619 AND segments.application_id = 661
36620 AND pcontexts.prc_context_code = lattr.context
36621 AND segments.segment_mapping_column = lattr.attribute
36622 AND segments.prc_context_id = pcontexts.prc_context_id
36623 AND segments.segment_id = segments_tl.segment_id
36624 AND vset.format_type = 'N';
36625
36626
36627 CURSOR attr_cols_cur
36628 IS
36629 SELECT line_index, attribute_type, context, attribute,
36630 pricing_status_code, qp_number.canonical_to_number(value_from)
36631 FROM qp_npreq_line_attrs_tmp lattr
36632 WHERE attribute_type IN ('PRICING', 'PRODUCT')
36633 AND pricing_status_code = G_STATUS_UNCHANGED
36634 AND EXISTS (SELECT format_type
36635 FROM fnd_flex_value_sets VSET,
36636 fnd_descr_flex_column_usages DFLEX
36637 WHERE vset.flex_value_set_id = dflex.flex_value_set_id
36638 AND dflex.application_id = 661
36639 AND dflex.descriptive_flexfield_name =
36640 'QP_ATTR_DEFNS_PRICING'
36641 AND dflex.descriptive_flex_context_code = lattr.context
36642 AND dflex.application_column_name = lattr.attribute
36643 AND vset.format_type = 'N');
36644
36645 BEGIN
36646 x_status_code := FND_API.G_RET_STS_SUCCESS;
36647 qp_debug_util.tstart('FORMULA_PROCESSING','Processing Formulas');
36648 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
36649 engine_debug('In ---'||l_routine||'---');
36650 engine_debug('PRICING_PHASE_ID: '||p_pricing_phase_id);
36651
36652 END IF;
36653 FOR i IN l_get_formula_id_cur
36654 LOOP
36655 l_line_index := i.line_index;
36656
36657 -- performance related change. Populate the temp table
36658 --qp_preq_line_attrs_formula_tmp with relevant records from
36659 --qp_npreq_line_attrs_tmp with
36660 IF l_get_formula_id_cur%ROWCOUNT = 1 THEN
36661
36662 IF G_INSERT_INTO_FORMULA_TMP
36663 THEN
36664
36665 --Delete already existing rows from formula tmp table
36666 DELETE FROM qp_preq_line_attrs_formula_tmp;
36667
36668 --Insert request line attrs with datatype = 'N'
36669 IF G_AM_INSTALLED_PROFILE = G_YES THEN
36670 If nvl(l_pass_qualifiers, 'N') = 'N' Then /* Bug 2772214 */
36671 OPEN am_attr_cols_cur;
36672 LOOP
36673 l_line_index_tbl.delete;
36674 l_attribute_type_tbl.delete;
36675 l_context_tbl.delete;
36676 l_attribute_tbl.delete;
36677 l_pricing_status_code_tbl.delete;
36678 l_value_from_tbl.delete;
36679
36680 FETCH am_attr_cols_cur BULK COLLECT INTO
36681 l_line_index_tbl, l_attribute_type_tbl, l_context_tbl,
36682 l_attribute_tbl, l_pricing_status_code_tbl,
36683 l_value_from_tbl LIMIT l_rows;
36684
36685 EXIT WHEN l_line_index_tbl.COUNT = 0;
36686
36687 --Change flexible mask to mask below for formula pattern use.
36688 qp_number.canonical_mask :=
36689 '00999999999999999999999.99999999999999999999999999999999999999';
36690 FORALL i IN l_line_index_tbl.FIRST..l_line_index_tbl.LAST
36691 INSERT INTO qp_preq_line_attrs_formula_tmp
36692 ( line_index,
36693 attribute_type,
36694 context,
36695 attribute,
36696 pricing_status_code,
36697 value_from
36698 )
36699 VALUES
36700 ( l_line_index_tbl(i),
36701 l_attribute_type_tbl(i),
36702 l_context_tbl(i),
36703 l_attribute_tbl(i),
36704 l_pricing_status_code_tbl(i),
36705 qp_number.number_to_canonical(l_value_from_tbl(i))
36706 );
36707
36708 --Change mask back to flexible mask.
36709 qp_number.canonical_mask :=
36710 'FM999999999999999999999.9999999999999999999999999999999999999999';
36711
36712 END LOOP; --Loop for bulk fetch
36713
36714 CLOSE am_attr_cols_cur;
36715 Else
36716 BEGIN
36717 OPEN am_attr_qual_cols_cur;
36718 LOOP
36719 l_line_index_tbl.delete;
36720 l_attribute_type_tbl.delete;
36721 l_context_tbl.delete;
36722 l_attribute_tbl.delete;
36723 l_pricing_status_code_tbl.delete;
36724 l_value_from_tbl.delete;
36725 FETCH am_attr_qual_cols_cur BULK COLLECT INTO
36726 l_line_index_tbl, l_attribute_type_tbl, l_context_tbl,
36727 l_attribute_tbl, l_pricing_status_code_tbl,
36728 l_value_from_tbl LIMIT l_rows;
36729
36730 EXIT WHEN l_line_index_tbl.COUNT = 0;
36731 --Change flexible mask to mask below for formula pattern use.
36732 qp_number.canonical_mask :=
36733 '00999999999999999999999.99999999999999999999999999999999999999';
36734 FORALL i IN l_line_index_tbl.FIRST..l_line_index_tbl.LAST
36735 INSERT INTO qp_preq_line_attrs_formula_tmp
36736 ( line_index,
36737 attribute_type,
36738 context,
36739 attribute,
36740 pricing_status_code,
36741 value_from
36742 )
36743 VALUES
36744 ( l_line_index_tbl(i),
36745 l_attribute_type_tbl(i),
36746 l_context_tbl(i),
36747 l_attribute_tbl(i),
36748 l_pricing_status_code_tbl(i),
36749 qp_number.number_to_canonical(l_value_from_tbl(i))
36750 );
36751 qp_number.canonical_mask :=
36752 'FM999999999999999999999.9999999999999999999999999999999999999999';
36753
36754 END LOOP; --Loop for bulk fetch
36755 CLOSE am_attr_qual_cols_cur;
36756 EXCEPTION
36757 WHEN OTHERS THEN
36758 BEGIN
36759 fnd_message.set_name('QP','QP_PRICING_ATTR_NON_NUMERIC');
36760 FOR l_rec IN am_attr_qual_msg_cur
36761 LOOP
36762 l_msg_context := l_rec.context;
36763 l_msg_attribute := l_rec.attribute;
36764 l_value_from := qp_number.canonical_to_number(l_rec.value_from);
36765 END LOOP;
36766 EXCEPTION
36767 WHEN OTHERS THEN
36768 fnd_message.set_token('CONTEXT',l_msg_context);
36769 fnd_message.set_token('ATTRIBUTE',l_msg_attribute);
36770 END;
36771
36772 RAISE E_ATTRIBUTE_NON_NUMERIC;
36773 END;
36774
36775 End If;
36776
36777 --Change flexible mask to mask below for formula pattern use.
36778 qp_number.canonical_mask :=
36779 '00999999999999999999999.99999999999999999999999999999999999999';
36780
36781 -- Bug 2772214 l_pass_qualifiers condition in where clause
36782 --Insert request line attrs with datatype 'X', 'Y', 'C' or null
36783 INSERT INTO qp_preq_line_attrs_formula_tmp
36784 ( line_index,
36785 attribute_type,
36786 context,
36787 attribute,
36788 pricing_status_code,
36789 value_from
36790 )
36791 SELECT /*+ dynamic_sampling(1) */ line_index,
36792 attribute_type,
36793 context,
36794 attribute,
36795 pricing_status_code,
36796 value_from
36797 FROM qp_npreq_line_attrs_tmp lattr
36798 WHERE
36799 ((nvl(l_pass_qualifiers, 'N') = 'Y'
36800 AND attribute_type IN ('QUALIFIER'))
36801 OR attribute_type IN ('PRICING', 'PRODUCT')) -- Changed for bug2806857
36802 AND pricing_status_code = G_STATUS_UNCHANGED
36803 AND NOT EXISTS (
36804 SELECT format_type
36805 FROM fnd_flex_value_sets VSET,
36806 qp_segments_b SEGMENTS, qp_prc_contexts_b PCONTEXTS
36807 WHERE vset.flex_value_set_id = segments.user_valueset_id
36808 AND segments.application_id = 661
36809 AND pcontexts.prc_context_type = decode(lattr.attribute_type,'PRICING','PRICING_ATTRIBUTE',
36810 lattr.attribute_type) -- Changed for bug2806857
36811 AND pcontexts.prc_context_code = lattr.context
36812 AND segments.segment_mapping_column = lattr.attribute
36813 AND segments.prc_context_id = pcontexts.prc_context_id
36814 AND vset.format_type = 'N'); --by yangli 03/06/2002 9:30am
36815
36816 --Change mask back to flexible mask.
36817 qp_number.canonical_mask :=
36818 'FM999999999999999999999.9999999999999999999999999999999999999999';
36819
36820 ELSE --If AM not installed
36821
36822 OPEN attr_cols_cur;
36823 LOOP
36824 l_line_index_tbl.delete;
36825 l_attribute_type_tbl.delete;
36826 l_context_tbl.delete;
36827 l_attribute_tbl.delete;
36828 l_pricing_status_code_tbl.delete;
36829 l_value_from_tbl.delete;
36830
36831 FETCH attr_cols_cur BULK COLLECT INTO
36832 l_line_index_tbl, l_attribute_type_tbl, l_context_tbl,
36833 l_attribute_tbl, l_pricing_status_code_tbl,
36834 l_value_from_tbl LIMIT l_rows;
36835
36836 EXIT WHEN l_line_index_tbl.COUNT = 0;
36837
36838 --Change flexible mask to mask below for formula pattern use.
36839 qp_number.canonical_mask :=
36840 '00999999999999999999999.99999999999999999999999999999999999999';
36841
36842 FORALL i IN l_line_index_tbl.FIRST..l_line_index_tbl.LAST
36843 INSERT INTO qp_preq_line_attrs_formula_tmp
36844 ( line_index,
36845 attribute_type,
36846 context,
36847 attribute,
36848 pricing_status_code,
36849 value_from
36850 )
36851 VALUES
36852 ( l_line_index_tbl(i),
36853 l_attribute_type_tbl(i),
36854 l_context_tbl(i),
36855 l_attribute_tbl(i),
36856 l_pricing_status_code_tbl(i),
36857 qp_number.number_to_canonical(l_value_from_tbl(i))
36858 );
36859
36860 --Change mask back to flexible mask.
36861 qp_number.canonical_mask :=
36862 'FM999999999999999999999.9999999999999999999999999999999999999999';
36863
36864 END LOOP; --Loop for bulk fetch
36865
36866 CLOSE attr_cols_cur;
36867
36868 --Change flexible mask to mask below for formula pattern use.
36869 qp_number.canonical_mask :=
36870 '00999999999999999999999.99999999999999999999999999999999999999';
36871
36872 --Insert request line attrs with datatype 'X', 'Y', 'C' or null
36873 INSERT INTO qp_preq_line_attrs_formula_tmp
36874 ( line_index,
36875 attribute_type,
36876 context,
36877 attribute,
36878 pricing_status_code,
36879 value_from
36880 )
36881 SELECT line_index,
36882 attribute_type,
36883 context,
36884 attribute,
36885 pricing_status_code,
36886 value_from
36887 FROM qp_npreq_line_attrs_tmp lattr
36888 WHERE attribute_type IN ('PRICING', 'PRODUCT')
36889 AND pricing_status_code = G_STATUS_UNCHANGED
36890 AND NOT EXISTS (
36891 SELECT format_type
36892 FROM fnd_flex_value_sets VSET,
36893 fnd_descr_flex_column_usages DFLEX
36894 WHERE vset.flex_value_set_id = dflex.flex_value_set_id
36895 AND dflex.application_id = 661
36896 AND dflex.descriptive_flexfield_name =
36897 'QP_ATTR_DEFNS_PRICING'
36898 AND dflex.descriptive_flex_context_code = lattr.context
36899 AND dflex.application_column_name = lattr.attribute
36900 AND vset.format_type = 'N');
36901
36902 --Change mask back to flexible mask.
36903 qp_number.canonical_mask :=
36904 'FM999999999999999999999.9999999999999999999999999999999999999999';
36905
36906 END IF; -- if G_AM_INSTALLED_PROFILE is true
36907
36908 --Reset Global Flag
36909 G_INSERT_INTO_FORMULA_TMP := FALSE;
36910 --G_INSERT_INTO_FORMULA_TMP := 'N';
36911
36912 END IF; --If G_INSERT_INTO_FORMULA_TMP is true
36913
36914 END IF; --If cur%rowcount is 1
36915
36916 -- FTE
36917
36918 -- Delete for every modifier
36919 IF(l_attr_inserted_flag = TRUE) THEN
36920 DELETE FROM qp_preq_line_attrs_formula_tmp
36921 WHERE line_index = i.line_index
36922 AND context = 'VOLUME'
36923 AND attribute IN ('PRICING_ATTRIBUTE4','PRICING_ATTRIBUTE5')
36924 AND pricing_status_code = G_STATUS_UNCHANGED;
36925 END IF;
36926
36927 l_attr_inserted_flag := FALSE;
36928
36929 IF (i.group_quantity IS NOT NULL and l_attr_inserted_flag = FALSE) THEN
36930
36931
36932 --Change flexible mask to mask below for formula pattern use.
36933 qp_number.canonical_mask :=
36934 '00999999999999999999999.99999999999999999999999999999999999999';
36935 INSERT INTO qp_preq_line_attrs_formula_tmp
36936 ( line_index,
36937 attribute_type,
36938 context,
36939 attribute,
36940 pricing_status_code,
36941 value_from
36942 )
36943 VALUES
36944 ( i.line_index,
36945 G_PRICING_TYPE,
36946 'VOLUME',
36947 'PRICING_ATTRIBUTE4',
36948 G_STATUS_UNCHANGED,
36949 qp_number.number_to_canonical(i.group_quantity)
36950 );
36951
36952 --Change mask back to flexible mask.
36953 qp_number.canonical_mask :=
36954 'FM999999999999999999999.9999999999999999999999999999999999999999';
36955
36956 l_attr_inserted_flag := TRUE;
36957
36958 END IF;
36959
36960 IF (i.group_amount IS NOT NULL and l_attr_inserted_flag = FALSE) THEN
36961
36962 --Change flexible mask to mask below for formula pattern use.
36963 qp_number.canonical_mask :=
36964 '00999999999999999999999.99999999999999999999999999999999999999';
36965 INSERT INTO qp_preq_line_attrs_formula_tmp
36966 ( line_index,
36967 attribute_type,
36968 context,
36969 attribute,
36970 pricing_status_code,
36971 value_from
36972 )
36973 VALUES
36974 ( i.line_index,
36975 G_PRICING_TYPE,
36976 'VOLUME',
36977 'PRICING_ATTRIBUTE5',
36978 G_STATUS_UNCHANGED,
36979 qp_number.number_to_canonical(i.group_amount)
36980 );
36981
36982 --Change mask back to flexible mask.
36983 qp_number.canonical_mask :=
36984 'FM999999999999999999999.9999999999999999999999999999999999999999';
36985
36986 l_attr_inserted_flag := TRUE;
36987
36988 END IF;
36989
36990 -- FTE
36991
36992 --FOR K IN l_get_line_attrs_cur
36993 --LOOP
36994 --Commenting the population of plsql table l_req_line_attrs_rec.
36995 -- Change.
36996 /*
36997 l_req_line_attrs_rec.line_index := i.LINE_INDEX;
36998 l_req_line_attrs_rec.attribute_type := i.ATTRIBUTE_TYPE;
36999 l_req_line_attrs_rec.context := i.CONTEXT;
37000 l_req_line_attrs_rec.attribute := i.ATTRIBUTE;
37001 l_req_line_attrs_rec.value := i.VALUE_FROM;
37002 l_req_line_attrs_tbl(1) := l_req_line_attrs_rec;
37003 l_index := l_index + 1;
37004 */
37005 --END LOOP;
37006
37007 l_list_price := NULL;
37008
37009 IF(p_pricing_phase_id = G_PRICE_LIST_PHASE_ID AND i.operand_calculation_code = 'UNIT_PRICE') THEN
37010 l_list_price := I.operand_value;
37011 l_modifier_value := NULL;
37012 ELSE
37013 OPEN l_get_list_price_cur(I.line_index);
37014 FETCH l_get_list_price_cur INTO l_list_price;
37015 CLOSE l_get_list_price_cur;
37016 l_modifier_value := I.operand_value; -- This value needs to be passed eventually
37017 END IF;
37018
37019 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37020 engine_debug('Processing Formula ID :'||i.PRICE_FORMULA_ID);
37021 engine_debug('Line Index: '||i.line_index);
37022
37023 END IF;
37024 --Commented parameter l_req_line_attrs_tbl and
37025 --added parameters l_line_index and i.created_from_list_line_type.
37026 -- Change.
37027 l_formula_based_price :=
37028 QP_FORMULA_PRICE_CALC_PVT.Calculate(i.PRICE_FORMULA_ID,
37029 l_list_price,
37030 i.PRICING_EFFECTIVE_DATE,
37031 --l_req_line_attrs_tbl,
37032 l_line_index,
37033 i.CREATED_FROM_LIST_LINE_TYPE,
37034 l_return_status,
37035 l_modifier_value);
37036
37037 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37038 engine_debug('Formula return status: '||l_return_status);
37039 engine_debug ('Formula Base Price : '|| l_formula_based_price);
37040
37041 END IF;
37042 IF l_return_status IS NULL THEN
37043 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37044 engine_debug('Formula return status is NULL');
37045 engine_debug('FND_API.G_RET_STS_ERROR: '|| FND_API.G_RET_STS_ERROR);
37046 END IF;
37047 null;
37048 END IF;
37049
37050 IF (l_return_status = FND_API.G_RET_STS_SUCCESS) THEN
37051 -- OR l_formula_based_price IS NOT NULL) THEN
37052 IF (i.OPERAND_CALCULATION_CODE in ('UNIT_PRICE','LIST_PRICE')) THEN
37053 /*
37054 INDX,QP_PREQ_GRP.formula_processing.upd1,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
37055 INDX,QP_PREQ_GRP.formula_processing.upd1,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
37056 INDX,QP_PREQ_GRP.formula_processing.upd1,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
37057 */
37058 UPDATE qp_npreq_ldets_tmp --upd1
37059 SET OPERAND_VALUE = l_formula_based_price
37060 WHERE CREATED_FROM_LIST_LINE_ID = i.CREATED_FROM_LIST_LINE_ID
37061 AND PRICING_PHASE_ID = p_pricing_phase_id
37062 AND LINE_INDEX = i.line_index
37063 AND PRICING_STATUS_CODE = G_STATUS_NEW;
37064
37065 /*
37066 INDX,QP_PREQ_GRP.formula_processing.formula_processing_upd2.qp_npreq_lines_tmp_N1,LINE_INDEX,1
37067 */
37068 UPDATE qp_npreq_lines_tmp --upd2
37069 SET UNIT_PRICE = l_formula_based_price,
37070 PRICING_STATUS_CODE = G_STATUS_UPDATED,
37071 PRICING_STATUS_TEXT ='Priced by formula'
37072 WHERE LINE_INDEX = i.line_index;
37073 ELSIF (i.OPERAND_CALCULATION_CODE = 'PERCENT_PRICE') THEN
37074 /*
37075 INDX,QP_PREQ_GRP.formula_processing.upd3,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
37076 INDX,QP_PREQ_GRP.formula_processing.upd3,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
37077 INDX,QP_PREQ_GRP.formula_processing.upd3,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
37078 */
37079 UPDATE qp_npreq_ldets_tmp --upd3
37080 SET OPERAND_VALUE = l_formula_based_price
37081 WHERE CREATED_FROM_LIST_LINE_ID = i.CREATED_FROM_LIST_LINE_ID
37082 AND PRICING_PHASE_ID = p_pricing_phase_id
37083 AND LINE_INDEX = i.line_index
37084 AND PRICING_STATUS_CODE = G_STATUS_NEW;
37085
37086 /*
37087 INDX,QP_PREQ_GRP.formula_processing.formula_processing_upd4.qp_npreq_lines_tmp_N1,LINE_INDEX,1
37088 */
37089 UPDATE qp_npreq_lines_tmp --upd4
37090 SET PERCENT_PRICE = l_formula_based_price,
37091 PRICING_STATUS_CODE = G_STATUS_UPDATED,
37092 PRICING_STATUS_TEXT ='Priced by formula'
37093 WHERE LINE_INDEX = i.line_index;
37094 ELSE -- BLOCK_PRICE, % , AMT , NEWPRICE
37095 /*
37096 INDX,QP_PREQ_GRP.formula_processing.upd5,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
37097 INDX,QP_PREQ_GRP.formula_processing.upd5,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
37098 INDX,QP_PREQ_GRP.formula_processing.upd5,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
37099 */
37100 UPDATE qp_npreq_ldets_tmp --upd5
37101 SET OPERAND_VALUE = l_formula_based_price
37102 WHERE CREATED_FROM_LIST_LINE_ID = i.CREATED_FROM_LIST_LINE_ID
37103 AND PRICING_PHASE_ID = p_pricing_phase_id
37104 AND LINE_INDEX = i.line_index
37105 AND PRICING_STATUS_CODE = G_STATUS_NEW;
37106
37107 -- Update the operand on the related lines also
37108 IF (i.LINE_DETAIL_TYPE_CODE = G_CHILD_DETAIL_TYPE) THEN
37109
37110 UPDATE qp_npreq_rltd_lines_tmp
37111 SET OPERAND = l_formula_based_price
37112 WHERE RELATED_LIST_LINE_ID = i.CREATED_FROM_LIST_LINE_ID --bug#2875361
37113 AND LINE_INDEX = i.line_index
37114 AND PRICING_STATUS_CODE = G_STATUS_NEW
37115 AND RELATIONSHIP_TYPE_CODE = G_PBH_LINE;
37116
37117 END IF;
37118 END IF;
37119 ELSE
37120 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37121 engine_debug('Error returned by QP_FORMULA_PRICE_CALC_PVT.Calculate');
37122 END IF;
37123
37124 -- Commented raise and added following for Bug 2722477
37125 G_INSERT_INTO_FORMULA_TMP := FALSE; --Reset Global Flag ( Change)
37126 DELETE_LINES(l_line_index,
37127 G_STATUS_FORMULA_ERROR,
37128 FND_MESSAGE.GET,
37129 l_status_code,
37130 l_status_text);
37131 -- RAISE E_Formula_Call_Error;
37132 null; -- Error in Formula Calculation
37133 END IF;
37134 END LOOP;
37135
37136 qp_debug_util.tstop('FORMULA_PROCESSING');
37137
37138 EXCEPTION
37139 WHEN E_ATTRIBUTE_NON_NUMERIC THEN
37140 G_INSERT_INTO_FORMULA_TMP := FALSE; --Reset Global Flag ( Change)
37141 DELETE_LINES(l_line_index,
37142 G_STATUS_FORMULA_ERROR,
37143 FND_MESSAGE.GET,
37144 l_status_code,
37145 l_status_text);
37146 x_status_code := FND_API.G_RET_STS_ERROR;
37147
37148 WHEN E_Formula_Call_Error THEN
37149 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37150 engine_debug('In Formula Integration');
37151 engine_debug('Error returned by QP_FORMULA_PRICE_CALC_PVT.Calculate');
37152 END IF;
37153 G_INSERT_INTO_FORMULA_TMP := FALSE; --Reset Global Flag ( Change)
37154 --G_INSERT_INTO_FORMULA_TMP := 'N'; --Reset Global Flag ( Change)
37155 DELETE_LINES(l_line_index,
37156 G_STATUS_FORMULA_ERROR,
37157 FND_MESSAGE.GET,
37158 l_status_code,
37159 l_status_text);
37160 WHEN OTHERS THEN
37161 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37162 engine_debug('In Formula Integration');
37163 engine_debug(SQLERRM);
37164 END IF;
37165 G_INSERT_INTO_FORMULA_TMP := FALSE; --Reset Global Flag ( Change)
37166 --G_INSERT_INTO_FORMULA_TMP := 'N'; --Reset Global Flag ( Change)
37167 DELETE_LINES(l_line_index,
37168 G_STATUS_FORMULA_ERROR,
37169 FND_MESSAGE.GET,
37170 l_status_code,
37171 l_status_text);
37172 x_status_code := FND_API.G_RET_STS_ERROR;
37173 x_status_text := l_routine||' '|| ' Formula Not Found ';
37174 END Formula_Processing;
37175
37176 /*+-----------------------------------------------------------
37177 |Procedure Truncate_temp_tables
37178 +-----------------------------------------------------------
37179 */
37180 PROCEDURE Truncate_Temp_tables (x_status_code OUT NOCOPY VARCHAR2,
37181 x_status_text OUT NOCOPY VARCHAR2)
37182 IS
37183 l_routine VARCHAR2(240):= 'Procedure Truncate_Temp_Tables';
37184 l_count number;
37185 Begin
37186 x_status_code := FND_API.G_RET_STS_SUCCESS;
37187 --added by yangli for Java Engine project
37188 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
37189 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37190 ENGINE_DEBUG('Truncate_Temp_tables: Java Engine not Installed ----------');
37191 END IF;
37192 --added by yangli for Java Engine project
37193 --Delete from qp_npreq_lines_tmp;
37194 --Delete from qp_npreq_line_attrs_tmp;
37195 --Delete From qp_npreq_ldets_tmp;
37196 --Delete From qp_npreq_rltd_lines_tmp;
37197 --Delete From QP_PREQ_QUAL_TMP;
37198 --Delete From qp_nformula_step_values_tmp;
37199 --Delete From QP_PREQ_LINE_ATTRS_FORMULA_TMP;
37200
37201
37202 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37203 select count(*) into l_count from qp_npreq_lines_tmp;
37204 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37205 engine_debug('qp_npreq_lines_tmp '||l_count);
37206 END IF;
37207 select count(*) into l_count from qp_npreq_line_attrs_tmp;
37208 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37209 engine_debug('qp_npreq_line_attrs_tmp '||l_count);
37210 END IF;
37211 select count(*) into l_count from qp_npreq_ldets_tmp;
37212 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37213 engine_debug('qp_npreq_ldets_tmp '||l_count);
37214 END IF;
37215 END IF;
37216 --added by yangli for Java Engine project
37217 ELSE
37218 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37219 ENGINE_DEBUG('Truncate_Temp_tables: Java Engine is Installed ----------');
37220 END IF;
37221 --Delete from qp_int_lines;
37222 --Delete from qp_int_line_attrs;
37223 --Delete From qp_int_ldets;
37224 --Delete From qp_int_rltd_lines;
37225 --Delete From qp_int_formula_step_values;
37226
37227 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37228 select count(*) into l_count from qp_int_lines;
37229 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37230 engine_debug('qp_int_lines '||l_count);
37231 END IF;
37232 select count(*) into l_count from qp_int_line_attrs;
37233 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37234 engine_debug('qp_int_line_attrs '||l_count);
37235 END IF;
37236 select count(*) into l_count from qp_int_ldets;
37237 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37238 engine_debug('qp_int_ldets '||l_count);
37239 END IF;
37240 END IF;
37241
37242 END IF;
37243 EXCEPTION
37244 WHEN OTHERS THEN
37245 x_status_code := FND_API.G_RET_STS_ERROR;
37246 x_status_text :=l_routine||' '||SQLERRM;
37247 End Truncate_Temp_tables;
37248
37249 /*+------------------------------------------------------------
37250 |PROCEDURE Set_Order_Level_Rltd
37251 +------------------------------------------------------------
37252 The relationship between order level adjustments and request lines
37253 need to be returned back to the caller.
37254 Example: list 'a' is a order level adjustment with line_detail_index
37255 of 3. There are 3 request lines with 4,5,6 line index then
37256 the data in qp_npreq_rltd_lines_tmp should be:
37257 +---------------------------------------------------------------+
37258 | related_line_detail_index| line_index| Relation_ship_type_code|
37259 +--------------------------+-----------+------------------------+
37260 | 3 | 4 | ORDER_TO_LINE |
37261 | 3 | 5 | ORDER_TO_LINE |
37262 | 3 | 6 | ORDER_TO_LINE |
37263 +--------------------------+-----------+------------------------+
37264 */
37265
37266 PROCEDURE Set_Order_Level_Rltd(p_freeze_override_flag IN VARCHAR2,
37267 p_pricing_phase_id IN NUMBER,
37268 x_status_code OUT NOCOPY VARCHAR2,
37269 x_status_text OUT NOCOPY VARCHAR2) AS
37270
37271 /*
37272 INDX,QP_PREQ_GRP.set_order_level_rltd.l_line_index_cur,- No Index Used -,NA,NA
37273 */
37274 CURSOR l_line_index_cur(p_freeze_override_flag VARCHAR2) is
37275 SELECT line_index
37276 FROM qp_npreq_lines_tmp
37277 WHERE pricing_status_code = G_STATUS_UPDATED
37278 AND (PRICE_FLAG = G_YES
37279 OR
37280 (PRICE_FLAG = G_PHASE
37281 AND
37282 p_freeze_override_flag = G_YES)
37283 );
37284
37285 /*
37286 -- Can use N2 instead of N4
37287 INDX,QP_PREQ_GRP.set_order_level_rltd.l_line_detail_index_cur,qp_npreq_ldets_tmp_N2,PRICING_PHASE_ID,1
37288 INDX,QP_PREQ_GRP.set_order_level_rltd.l_line_detail_index_cur,qp_npreq_ldets_tmp_N2,PRICING_STATUS_CODE,2
37289 */
37290 CURSOR l_line_detail_index_cur is
37291 SELECT line_detail_index
37292 FROM qp_npreq_ldets_tmp
37293 WHERE PRICING_STATUS_CODE = G_STATUS_NEW
37294 AND PRICING_PHASE_ID = p_pricing_phase_id
37295 AND MODIFIER_LEVEL_CODE = G_ORDER_LEVEL;
37296
37297 l_line_index_tbl number_type;
37298 l_line_detail_index_tbl number_type;
37299 l_line_detail_index_tbl1 number_type;
37300 J NUMBER:=0;
37301 l_routine VARCHAR2(240):= 'QP_PREQ_GRP.Set_Order_Level_Rltd';
37302 BEGIN
37303 x_status_code := FND_API.G_RET_STS_SUCCESS;
37304
37305 FOR I IN l_line_detail_index_cur LOOP
37306 J:=J+1;
37307 l_line_detail_index_tbl(J):=I.line_detail_index;
37308 END LOOP;
37309
37310
37311 IF J > 0 THEN --do this only if there is order level modifier
37312 J:=0;
37313 FOR I IN l_line_index_cur(p_freeze_override_flag) LOOP
37314 FOR K in l_line_detail_index_tbl.FIRST..l_line_detail_index_tbl.LAST LOOP
37315 J:=J+1;
37316 l_line_detail_index_tbl1(J):=l_line_detail_index_tbl(K);
37317 l_line_index_tbl(J):= I.line_index;
37318 END LOOP;
37319 END LOOP;
37320
37321 END IF;
37322
37323 IF J > 0 THEN
37324 FORALL K IN l_line_index_tbl.FIRST..l_line_index_tbl.LAST
37325 INSERT INTO qp_npreq_rltd_lines_tmp
37326 (LINE_INDEX,RELATED_LINE_DETAIL_INDEX,RELATIONSHIP_TYPE_CODE,PRICING_STATUS_CODE)
37327 VALUES
37328 (l_line_index_tbl(K),l_line_detail_index_tbl1(K),G_ORDER_TO_LINE,G_STATUS_NEW);
37329 END IF;
37330
37331 EXCEPTION
37332 WHEN OTHERS THEN
37333 x_status_code := FND_API.G_RET_STS_ERROR;
37334 x_status_text := SQLERRM;
37335 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37336 engine_debug(l_routine||' :'||SQLERRM);
37337 END IF;
37338 END;
37339
37340
37341 procedure Get_Price_List_Sequence(
37342 x_status_code OUT NOCOPY VARCHAR2,
37343 x_status_text OUT NOCOPY VARCHAR2)
37344 is
37345 l_routine VARCHAR2(30) := 'get_price_list_sequence';
37346 begin
37347
37348 --Get the sequence for price list
37349 /*
37350 INDX,QP_PREQ_GRP.get_price_list_sequence.cur_get_price_list_sequence,- No Index Used -,NA,NA
37351 */
37352 SELECT PHASE_SEQUENCE,PRICING_PHASE_ID
37353 INTO G_PRICE_LIST_SEQUENCE,G_PRICE_LIST_PHASE_ID
37354 FROM QP_PRICING_PHASES
37355 WHERE LIST_TYPE_CODE = 'PRL'
37356 AND ROWNUM < 2;
37357
37358 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37359 engine_debug('G_PRICE_LIST_SEQUENCE: '|| G_PRICE_LIST_SEQUENCE );
37360 END IF;
37361 EXCEPTION
37362 WHEN OTHERS THEN
37363 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
37364 engine_debug(l_routine||' '||SQLERRM);
37365 END IF;
37366 x_status_code := FND_API.G_RET_STS_ERROR;
37367 x_status_text := 'Error in '||l_routine||SQLERRM;
37368 end Get_Price_List_Sequence;
37369
37370 /*+----------------------------------------------------------------------------------------------------
37371 *| PROCEDURE/FUNCTION TO INCLUDE TCA HIERARCHY STRUCTURE FOR QUALIFIER ATTRIBUTE ADDED for TCA
37372 *+----------------------------------------------------------------------------------------------------
37373 */
37374
37375 PROCEDURE INSERT_QUALIFIER_HIERARCHY
37376 IS
37377 l_count number;
37378 BEGIN
37379 select count(*) into l_count from qp_npreq_line_attrs_tmp;
37380
37381 engine_debug('count of attr before insert '|| l_count);
37382
37383 --[julin/4865213] tuned
37384 INSERT INTO qp_npreq_line_attrs_tmp
37385 ( LINE_INDEX
37386 ,LINE_DETAIL_INDEX
37387 ,ATTRIBUTE_LEVEL
37388 ,ATTRIBUTE_TYPE
37389 ,LIST_HEADER_ID
37390 ,LIST_LINE_ID
37391 ,CONTEXT
37392 ,ATTRIBUTE
37393 ,VALUE_FROM
37394 ,SETUP_VALUE_FROM
37395 ,VALUE_TO
37396 ,SETUP_VALUE_TO
37397 ,GROUPING_NUMBER
37398 ,NO_QUALIFIERS_IN_GRP
37399 ,COMPARISON_OPERATOR_TYPE_CODE
37400 ,VALIDATED_FLAG
37401 ,APPLIED_FLAG
37402 ,PRICING_STATUS_CODE
37403 ,PRICING_STATUS_TEXT
37404 ,QUALIFIER_PRECEDENCE
37405 ,PRICING_ATTR_FLAG
37406 ,QUALIFIER_TYPE
37407 ,DATATYPE
37408 ,PRODUCT_UOM_CODE
37409 ,PROCESSED_CODE
37410 ,EXCLUDER_FLAG
37411 ,GROUP_QUANTITY
37412 ,GROUP_AMOUNT
37413 ,DISTINCT_QUALIFIER_FLAG
37414 ,PRICING_PHASE_ID
37415 ,INCOMPATABILITY_GRP_CODE
37416 ,LINE_DETAIL_TYPE_CODE
37417 ,MODIFIER_LEVEL_CODE
37418 ,PRIMARY_UOM_FLAG
37419 ,REQUEST_ID
37420 ,DERIVED_QUALIFIER_FLAG)
37421 SELECT /*+ ORDERED use_nl(qpc qs hn) index(qnlat QP_PREQ_LINE_ATTRS_TMP_N2) */
37422 qnlat.LINE_INDEX
37423 ,qnlat.LINE_DETAIL_INDEX
37424 ,qnlat.ATTRIBUTE_LEVEL
37425 ,qnlat.ATTRIBUTE_TYPE
37426 ,qnlat.LIST_HEADER_ID
37427 ,qnlat.LIST_LINE_ID
37428 ,qnlat.CONTEXT
37429 ,qnlat.ATTRIBUTE
37430 ,to_char(hn.PARENT_ID)
37431 ,qnlat.SETUP_VALUE_FROM
37432 ,qnlat.VALUE_TO
37433 ,qnlat.SETUP_VALUE_TO
37434 ,qnlat.GROUPING_NUMBER
37435 ,qnlat.NO_QUALIFIERS_IN_GRP
37436 ,qnlat.COMPARISON_OPERATOR_TYPE_CODE
37437 ,qnlat.VALIDATED_FLAG
37438 ,qnlat.APPLIED_FLAG
37439 ,qnlat.PRICING_STATUS_CODE
37440 ,qnlat.PRICING_STATUS_TEXT
37441 ,qnlat.QUALIFIER_PRECEDENCE
37442 ,qnlat.PRICING_ATTR_FLAG
37443 ,qnlat.QUALIFIER_TYPE
37444 ,qnlat.DATATYPE
37445 ,qnlat.PRODUCT_UOM_CODE
37446 ,qnlat.PROCESSED_CODE
37447 ,qnlat.EXCLUDER_FLAG
37448 ,qnlat.GROUP_QUANTITY
37449 ,qnlat.GROUP_AMOUNT
37450 ,qnlat.DISTINCT_QUALIFIER_FLAG
37451 ,qnlat.PRICING_PHASE_ID
37452 ,qnlat.INCOMPATABILITY_GRP_CODE
37453 ,qnlat.LINE_DETAIL_TYPE_CODE
37454 ,qnlat.MODIFIER_LEVEL_CODE
37455 ,qnlat.PRIMARY_UOM_FLAG
37456 ,qnlat.REQUEST_ID
37457 ,'Y'
37458 FROM qp_npreq_line_attrs_tmp qnlat,
37459 qp_prc_contexts_b qpc,
37460 qp_segments_b qs,
37461 HZ_HIERARCHY_NODES hn
37462 WHERE qnlat.pricing_status_code = G_STATUS_UNCHANGED
37463 AND qnlat.attribute_type = G_QUALIFIER_TYPE
37464 AND qpc.PRC_CONTEXT_TYPE = 'QUALIFIER'
37465 AND qpc.PRC_CONTEXT_CODE = qnlat.CONTEXT
37466 AND qs.SEGMENT_MAPPING_COLUMN = qnlat.ATTRIBUTE
37467 AND qs.PRC_CONTEXT_ID = qpc.PRC_CONTEXT_ID
37468 AND qs.PARTY_HIERARCHY_ENABLED_FLAG = 'Y'
37469 AND nvl(qs.user_format_type, qs.seeded_format_type) = G_NUMERIC
37470 AND hn.CHILD_ID = to_number(qnlat.VALUE_FROM)
37471 AND hn.child_table_name = 'HZ_PARTIES'
37472 AND hn.HIERARCHY_TYPE = FND_PROFILE.VALUE('QP_PRICING_PARTY_HIERARCHY_TYPE')
37473 AND trunc(nvl(hn.EFFECTIVE_START_DATE,sysdate)) <= trunc(sysdate)
37474 AND trunc(nvl(hn.EFFECTIVE_END_DATE,sysdate)) >= trunc(sysdate)
37475 AND hn.LEVEL_NUMBER > 0;
37476
37477 END INSERT_QUALIFIER_HIERARCHY;
37478
37479 --Begin: pattern_engine for create_pattern - SMUHAMME
37480 PROCEDURE populate_segment_id(x_status_code OUT NOCOPY VARCHAR2, x_status_text OUT NOCOPY VARCHAR2)
37481 IS
37482 l_routine VARCHAR2(200) := 'QP_PREQ_GRP.populate_segment_id: ';
37483 l_debug VARCHAR2(3) := QP_PREQ_GRP.G_DEBUG_ENGINE;
37484
37485 lower_limit NUMBER;
37486 upper_limit NUMBER;
37487
37488 BEGIN
37489 QP_DEBUG_UTIL.tstart('populate_segment_id', 'populate_segment_id');
37490
37491
37492 IF l_debug = FND_API.G_TRUE
37493 THEN
37494 engine_debug(l_routine || ' Starts ----------------');
37495 END IF;
37496
37497 x_status_code := FND_API.G_RET_STS_SUCCESS;
37498 x_status_text := 'Success';
37499
37500 lower_limit := G_MIN_LINE_INDEX;
37501
37502 WHILE lower_limit <= G_MAX_LINE_INDEX
37503 LOOP
37504 upper_limit := lower_limit + G_CHUNK_SIZE;
37505 UPDATE
37506 qp_npreq_line_attrs_tmp /*+ index(attr qp_preq_line_attrs_tmp_n9) */attr
37507 SET attr.segment_id = (
37508 SELECT qps.segment_id
37509 FROM qp_prc_contexts_b qpc
37510 , qp_segments_b qps
37511 , qp_pte_segments qpps
37512 WHERE attr.context = qpc.prc_context_code
37513 AND qpc.prc_context_id = qps.prc_context_id
37514 AND qps.segment_mapping_column = attr.attribute
37515 AND qps.segment_id = qpps.segment_id
37516 AND NVL(qpps.used_in_search, 'N') = 'Y'
37517 AND ROWNUM < 2
37518 )
37519 WHERE line_index BETWEEN lower_limit AND upper_limit;
37520
37521 lower_limit := upper_limit + 1;
37522 END LOOP;
37523
37524
37525
37526
37527 /*UPDATE
37528 qp_npreq_line_attrs_tmp attr
37529 SET attr.segment_id = (
37530 SELECT qps.segment_id
37531 FROM qp_prc_contexts_b qpc
37532 , qp_segments_b qps
37533 , qp_pte_segments qpps
37534 WHERE attr.context = qpc.prc_context_code
37535 AND qpc.prc_context_id = qps.prc_context_id
37536 AND qps.segment_mapping_column = attr.attribute
37537 AND qps.segment_id = qpps.segment_id
37538 AND NVL(qpps.used_in_search, 'N') = 'Y'
37539 AND ROWNUM < 2
37540 ); */
37541
37542
37543 /*UPDATE qp_npreq_line_attrs_tmp
37544 SET mutlival_flag = 'M'
37545 WHERE (line_index, segment_id) IN (
37546 SELECT line_index, segment_id
37547 FROM qp_npreq_line_attrs_tmp
37548 WHERE segment_id IS NOT NULL
37549 GROUP BY line_index, segment_id
37550 HAVING count(segment_id) > 1
37551 );*/
37552
37553 IF l_debug = FND_API.G_TRUE
37554 THEN
37555 engine_debug(l_routine || 'Updated segment_id of ' || SQL%ROWCOUNT || ' rows of qp_npreq_line_attrs_tmp');
37556 engine_debug(l_routine || 'Ends Succesfully ***********');
37557 END IF;
37558
37559 QP_DEBUG_UTIL.tstop('populate_segment_id');
37560 EXCEPTION
37561 WHEN OTHERS
37562 THEN
37563 IF l_debug = FND_API.G_TRUE
37564 THEN
37565 engine_debug(l_routine || 'Exception - ' || SQLERRM);
37566 END IF;
37567 x_status_code := FND_API.G_RET_STS_ERROR;
37568 x_status_text := l_routine || SQLERRM;
37569 END populate_segment_id;
37570
37571 --------------------------------------------------------------------------------
37572
37573 PROCEDURE create_pattern(p_pricing_phase_id NUMBER, x_status_code OUT NOCOPY VARCHAR2, x_status_text OUT NOCOPY VARCHAR2)
37574 IS
37575 l_debug VARCHAR2(3) := G_DEBUG_ENGINE;
37576 l_routine VARCHAR2(300) := 'QP_PREQ_GRP.create_pattern ';
37577
37578 upper_limit NUMBER;
37579 lower_limit NUMBER;
37580
37581 BEGIN
37582 IF l_debug = FND_API.G_TRUE
37583 THEN
37584 engine_debug(l_routine || 'Starts ----');
37585 END IF;
37586
37587 x_status_code := FND_API.G_RET_STS_SUCCESS;
37588 x_status_text := 'Success';
37589
37590 QP_DEBUG_UTIL.tstart('create_pattern', 'create_pattern');
37591
37592 QP_DEBUG_UTIL.tstart('insert_patrn_phases', 'insert_patrn_phases');
37593 INSERT INTO qp_npreq_patrn_phases_tmp(pattern_id, segment_id, pricing_phase_id, segment_index, segment_count)
37594 SELECT qp.pattern_id,
37595 qp.segment_id,
37596 p_pricing_phase_id,
37597 qp.segment_index,
37598 qp.segment_count
37599 FROM qp_patterns qp,
37600 qp_pattern_phases qpp
37601 WHERE qpp.pattern_id = qp.pattern_id
37602 AND qpp.pricing_phase_id = p_pricing_phase_id
37603 AND NVL(qpp.end_date_active,G_MIN_PRICING_DATE) >= G_MIN_PRICING_DATE
37604 AND NVL(qpp.start_date_active, G_MAX_PRICING_DATE) <= G_MAX_PRICING_DATE
37605 AND qpp.active_flag = 'Y'
37606 AND NOT EXISTS (
37607 SELECT pattern_id
37608 FROM qp_npreq_patrn_phases_tmp qp1
37609 WHERE qp.pattern_id = qp1.pattern_id
37610 AND ROWNUM < 2
37611 );
37612
37613 QP_DEBUG_UTIL.tstop('insert_patrn_phases');
37614
37615 IF l_debug = FND_API.G_TRUE
37616 THEN
37617 engine_debug(l_routine || 'inserted ' || SQL%ROWCOUNT || ' rows into qp_npreq_patrn_phases_tmp'
37618 || ' pricing_phase_id = ' || p_pricing_phase_id);
37619 END IF;
37620 qp_debug_util.tstart('insert_line_patrns', 'insert_line_patrns');
37621
37622 lower_limit := G_MIN_LINE_INDEX;
37623
37624 WHILE lower_limit <= G_MAX_LINE_INDEX
37625 LOOP
37626 upper_limit := lower_limit + G_CHUNK_SIZE;
37627
37628 --change in index qp_preq_line_attrs_tmp_n9???
37629
37630 INSERT INTO qp_npreq_line_patrns_tmp(line_index, pattern_id, hash_key)
37631 SELECT /*+ ORDERED index(attr qp_preq_line_attrs_tmp_n9) */
37632 attr.line_index,
37633 qpp.pattern_id,
37634 sys_connect_by_path(attr.value_from, '|') hash_key
37635 FROM (SELECT /*+ index(qpp1 qp_pattern_phases_n1) */ *
37636 FROM qp_npreq_patrn_phases_tmp qpp1
37637 WHERE qpp1.pricing_phase_id = p_pricing_phase_id) qpp,
37638 (SELECT *
37639 FROM qp_npreq_line_attrs_tmp
37640 WHERE line_index BETWEEN lower_limit AND upper_limit) attr
37641 WHERE attr.segment_id = qpp.segment_id
37642 AND attr.segment_id IS NOT NULL
37643 AND level = qpp.segment_count
37644 START WITH qpp.segment_index = 1
37645 CONNECT BY PRIOR qpp.segment_index = qpp.segment_index - 1
37646 AND PRIOR qpp.pattern_id = qpp.pattern_id
37647 AND PRIOR attr.line_index = attr.line_index;
37648
37649 lower_limit := upper_limit + 1;
37650 END LOOP;
37651 /* ELSE
37652 INSERT INTO qp_npreq_line_patrns_tmp(line_index, pattern_id, hash_key)
37653 SELECT /*+ ORDERED index(attr qp_preq_line_attrs_tmp_n9) */
37654 /* attr.line_index,
37655 qpp.pattern_id,
37656 sys_connect_by_path(attr.value_from, '|') hash_key
37657 FROM (SELECT /*+ index(qpp1 qp_pattern_phases_n1) */ --*
37658 /* FROM qp_npreq_patrn_phases_tmp qpp1
37659 WHERE qpp1.pricing_phase_id = p_pricing_phase_id) qpp,
37660 qp_npreq_line_attrs_tmp attr
37661 WHERE attr.segment_id = qpp.segment_id
37662 AND attr.segment_id IS NOT NULL
37663 AND level = qpp.segment_count
37664 START WITH qpp.segment_index = 1
37665 CONNECT BY PRIOR qpp.segment_index = qpp.segment_index - 1
37666 AND PRIOR qpp.pattern_id = qpp.pattern_id
37667 AND PRIOR attr.line_index = attr.line_index;
37668
37669 Dbms_Output.put_line('inserted = ' || SQL%ROWCOUNT);
37670 END IF; */
37671
37672 QP_DEBUG_UTIL.tstop('insert_line_patrns');
37673
37674
37675 /*IF l_debug = FND_API.G_TRUE
37676 THEN
37677 engine_debug(l_routine || 'inserted ' || SQL%ROWCOUNT || ' rows to qp_npreq_line_patrns_tmp'
37678 || ' pricing_phase_id = ' || p_pricing_phase_id);
37679 END IF; */
37680
37681 qp_debug_util.tstart('def_patrns', 'Default Patterns');
37682
37683 IF NVL(G_PATRNS_TWO_THREE_INSERTED, 'N') = 'N'
37684 THEN
37685 IF l_debug = FND_API.G_TRUE
37686 THEN
37687 engine_debug(l_routine || 'inseting pattern_id -2 and -3');
37688 END IF;
37689
37690 IF NVL(FND_PROFILE.VALUE(QP_PREQ_GRP.G_BLIND_DISCOUNT),'N') = 'Y'
37691 THEN
37692 INSERT INTO qp_npreq_line_patrns_tmp(line_index, pattern_id, hash_key)
37693 SELECT line_index, -2, 'BLIND'
37694 FROM qp_npreq_lines_tmp;
37695
37696 END IF;
37697 INSERT INTO qp_npreq_line_patrns_tmp(line_index, pattern_id, hash_key)
37698 SELECT line_index, -3, 'BLIND'
37699 FROM qp_npreq_lines_tmp;
37700
37701 INSERT INTO qp_npreq_line_patrns_tmp(line_index, pattern_id, hash_key)
37702 SELECT line_index, -1, 'NOEQUALS'
37703 FROM qp_npreq_lines_tmp;
37704
37705 G_PATRNS_TWO_THREE_INSERTED := 'Y';
37706
37707 END IF;
37708
37709 qp_debug_util.tstop('def_patrns');
37710
37711 QP_DEBUG_UTIL.tstop('create_pattern');
37712
37713 IF l_debug = FND_API.G_TRUE
37714 THEN
37715 engine_debug(l_routine || 'Ends---------');
37716 END IF;
37717 EXCEPTION
37718 WHEN OTHERS
37719 THEN
37720 x_status_code := FND_API.G_RET_STS_ERROR;
37721 x_status_text := l_routine || SQLERRM;
37722 IF l_debug = FND_API.G_TRUE
37723 THEN
37724 engine_debug(l_routine || 'Exception: ' || SQLERRM);
37725 END IF;
37726 END create_pattern;
37727
37728 -------------------------------------------------------------------------
37729
37730 --End: pattern_engine for create_pattern - SMUHAMME
37731
37732 -- Start: KDURGASI changes for pattern based select modifiers
37733 PROCEDURE Select_modifiers_patrn(
37734 p_pricing_phase_id IN NUMBER,
37735 p_freeze_override_flag IN VARCHAR2,
37736 p_search_path IN NUMBER,
37737 x_status_code OUT nocopy VARCHAR2,
37738 x_status_text OUT nocopy VARCHAR2) AS
37739
37740 /* Header cache cursor*/
37741
37742 CURSOR l_header_cache_cur(p_pricing_phase_id NUMBER) IS
37743 SELECT
37744 /*+ ORDERED index(atrgrps QP_ATTRIBUTE_GROUPS_N1)
37745 index(qplines QP_PREQ_LINES_TMP_U1)
37746 index(qprs qp_pte_source_systems_u2)
37747 l_header_cache_cur */
37748 DISTINCT atrgrps.list_header_id,
37749 atrgrps.list_line_id list_line_id,
37750 qplines.line_index line_index,
37751 qppattmp.pattern_id matched_pattrn_id,
37752 p_pricing_phase_id,
37753 qppattmp.hash_key matched_hash_key,
37754 G_STAGE_CACHE_MOD_HDR stage,
37755 atrgrps.source_system_code,
37756 G_STATUS_UNCHANGED,
37757 atrgrps.header_quals_exist_flag,
37758 atrgrps.grouping_no,
37759 atrgrps.eq_flag,
37760 atrgrps.MODIFIER_LEVEL_CODE,
37761 atrgrps.other_oprt_count,
37762 atrgrps.null_other_oprt_count,
37763 atrgrps.LIST_TYPE_CODE,
37764 atrgrps.ASK_FOR_FLAG,
37765 atrgrps.HEADER_LIMIT_EXISTS,
37766 atrgrps.LINE_LIMIT_EXISTS,
37767 atrgrps.descendents_quals_exist
37768 FROM qp_list_header_phases qplhp,
37769 qp_secu_attr_groups_v atrgrps,
37770 --qp_attribute_groups atrgrps,
37771 qp_npreq_line_patrns_tmp qppattmp,
37772 qp_npreq_lines_tmp qplines,
37773 qp_pte_source_systems qprs
37774 --qp_price_req_sources_v qprs
37775 WHERE qplhp.pricing_phase_id = p_pricing_phase_id
37776 AND atrgrps.list_header_id = qplhp.list_header_id
37777 AND atrgrps.list_line_id = -1 -- Filter
37778 AND atrgrps.pte_code = G_PTE_CODE
37779 AND qppattmp.pattern_id = atrgrps.pattern_id -- Match
37780 AND qppattmp.hash_key = atrgrps.hash_key -- Match
37781 AND qppattmp.line_index = qplines.line_index --Join
37782 AND atrgrps.list_type_code NOT IN('PRL', 'AGR') -- Filter
37783 AND atrgrps.active_flag = 'Y' -- Filter
37784 --AND atrgrps.source_system_code = qprs.source_system_code --join
37785 --AND qprs.request_type_code = qp_preq_grp.g_request_type_code
37786 AND qprs.APPLICATION_SHORT_NAME = atrgrps.source_system_code
37787 AND qprs.pte_code = G_PTE_CODE
37788 AND(qplines.price_flag = qp_preq_grp.g_yes
37789 OR(qplines.price_flag = qp_preq_grp.g_phase
37790 AND p_freeze_override_flag = qp_preq_grp.g_yes))
37791 AND( qplines.unit_price IS NOT NULL
37792 OR qplines.usage_pricing_type = qp_preq_grp.g_authoring_type
37793 OR qplines.line_type_code = qp_preq_grp.g_order_level) --AND qplines.line_type_code <> 'ORDER' -- needs to check
37794 AND atrgrps.pricing_phase_id = -1
37795 AND( (atrgrps.currency_code IS NOT NULL
37796 AND atrgrps.currency_code = qp_preq_grp.g_currency_code)
37797 OR atrgrps.currency_code IS NULL)
37798 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
37799 BETWEEN TRUNC(nvl(atrgrps.start_date_active_h, nvl(qplines.pricing_effective_date, sysdate)))
37800 AND TRUNC(nvl(atrgrps.end_date_active_h, nvl(qplines.pricing_effective_date, sysdate)))
37801 AND TRUNC(nvl(qplines.start_date_active_first, sysdate))
37802 BETWEEN TRUNC(nvl(atrgrps.start_date_active_first, nvl(qplines.start_date_active_first, sysdate)))
37803 AND TRUNC(nvl(atrgrps.end_date_active_first, nvl(qplines.start_date_active_first, sysdate)))
37804 AND TRUNC(nvl(qplines.start_date_active_second, sysdate))
37805 BETWEEN TRUNC(nvl(atrgrps.start_date_active_second, nvl(qplines.start_date_active_second, sysdate)))
37806 AND TRUNC(nvl(atrgrps.end_date_active_second, nvl(qplines.start_date_active_second, sysdate)))
37807 AND nvl(qplines.active_date_first_type, 'X') = nvl(atrgrps.active_date_first_type, nvl(qplines.active_date_first_type, 'X'))
37808 AND nvl(qplines.active_date_second_type, 'X') = nvl(atrgrps.active_date_second_type, nvl(qplines.active_date_second_type, 'X'))
37809 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
37810 BETWEEN TRUNC(nvl(atrgrps.start_date_active_q, nvl(qplines.pricing_effective_date, sysdate)))
37811 AND TRUNC(nvl(atrgrps.end_date_active_q, nvl(qplines.pricing_effective_date, sysdate)))
37812 AND((atrgrps.ask_for_flag = qp_preq_grp.g_yes
37813 AND EXISTS
37814 (SELECT
37815 /*+ index(la QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/pricebook/backport]
37816 FROM qp_npreq_line_attrs_tmp la -- will check whether this can be moved to shaneeds code
37817 WHERE attribute_type = G_QUALIFIER_TYPE
37818 AND pricing_status_code = qp_preq_grp.g_status_unchanged
37819 AND validated_flag = qp_preq_grp.g_no
37820 AND list_header_id = atrgrps.list_header_id
37821 AND line_index = qplines.line_index)
37822 )
37823 OR atrgrps.ask_for_flag = qp_preq_grp.g_no);
37824
37825 /* line cache cursor*/
37826
37827 CURSOR l_line_cache_cur(p_pricing_phase_id NUMBER) IS
37828 SELECT
37829 /*+ ORDERED index(atrgrps QP_ATTRIBUTE_GROUPS_N3)
37830 index(qppattmp QP_NPREQ_LINE_PATRNS_T_N2)
37831 index(intmdt QP_PREQ_PATRN_QUAL_T_N2)
37832 l_line_cache_cur */
37833 DISTINCT atrgrps.list_header_id,
37834 atrgrps.list_line_id list_line_id,
37835 qplines.line_index line_index,
37836 qppattmp.pattern_id matched_pattrn_id,
37837 p_pricing_phase_id,
37838 qppattmp.hash_key matched_hash_key,
37839 G_STAGE_CACHE_MOD_LIN stage,
37840 atrgrps.source_system_code,
37841 G_STATUS_UNCHANGED,
37842 atrgrps.header_quals_exist_flag,
37843 atrgrps.grouping_no,
37844 atrgrps.eq_flag,
37845 atrgrps.MODIFIER_LEVEL_CODE,
37846 atrgrps.other_oprt_count,
37847 atrgrps.null_other_oprt_count,
37848 atrgrps.LIST_TYPE_CODE,
37849 atrgrps.ASK_FOR_FLAG,
37850 atrgrps.HEADER_LIMIT_EXISTS,
37851 atrgrps.LINE_LIMIT_EXISTS,
37852 atrgrps.descendents_quals_exist,
37853 atrgrps.PRICE_BREAK_TYPE_CODE
37854 FROM qp_npreq_lines_tmp qplines,
37855 qp_preq_patrn_qual_tmp intmdt,
37856 qp_npreq_line_patrns_tmp qppattmp,
37857 qp_attribute_groups atrgrps
37858 WHERE intmdt.pricing_phase_id = p_pricing_phase_id
37859 AND atrgrps.list_header_id = intmdt.list_header_id
37860 AND intmdt.stage = G_STAGE_CACHE_MOD_HDR
37861 AND atrgrps.list_line_id <> -1 -- Filter
37862 AND atrgrps.pricing_phase_id = p_pricing_phase_id
37863 AND qppattmp.pattern_id = atrgrps.pattern_id -- Match
37864 AND qppattmp.hash_key = atrgrps.hash_key -- Match
37865 AND qplines.line_index = qppattmp.line_index --Join
37866 AND intmdt.line_index = qplines.line_index
37867 AND intmdt.pricing_status_code=QP_PREQ_GRP.G_STATUS_UNCHANGED
37868 AND(atrgrps.modifier_level_code = qplines.line_type_code
37869 OR (atrgrps.modifier_level_code = qp_preq_grp.g_line_group and
37870 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES))
37871 AND((atrgrps.currency_code IS NOT NULL
37872 AND atrgrps.currency_code = qp_preq_grp.g_currency_code)
37873 OR atrgrps.currency_code IS NULL) -- optional currency
37874 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
37875 BETWEEN TRUNC(nvl(atrgrps.start_date_active_l, nvl(qplines.pricing_effective_date, sysdate)))
37876 AND TRUNC(nvl(atrgrps.end_date_active_l, nvl(qplines.pricing_effective_date, sysdate)))
37877 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
37878 BETWEEN TRUNC(nvl(atrgrps.start_date_active_q, nvl(qplines.pricing_effective_date, sysdate)))
37879 AND TRUNC(nvl(atrgrps.end_date_active_q, nvl(qplines.pricing_effective_date, sysdate)))
37880 AND (qplines.priced_uom_code IS NULL
37881 OR qplines.priced_uom_code = nvl(atrgrps.product_uom_code, qplines.priced_uom_code)
37882 )
37883 AND((atrgrps.ask_for_flag = qp_preq_grp.g_yes
37884 AND EXISTS
37885 (SELECT
37886
37887 /*+ index(la QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/pricebook/backport]
37888 FROM qp_npreq_line_attrs_tmp la -- will check whether this can be moved to shaneeds code
37889 WHERE attribute_type = G_QUALIFIER_TYPE
37890 AND pricing_status_code = qp_preq_grp.g_status_unchanged
37891 AND validated_flag = qp_preq_grp.g_no
37892 AND list_header_id = atrgrps.list_header_id
37893 AND line_index = qplines.line_index)
37894 )
37895 OR atrgrps.ask_for_flag = qp_preq_grp.g_no)
37896 AND (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES AND
37897 atrgrps.list_line_type_code NOT IN (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
37898 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE) AND
37899 atrgrps.automatic_flag = 'Y'
37900 OR
37901 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES);
37902 /*UNION ALL
37903 SELECT
37904 ---This union all is to fetch all the lines whose header_quals_exist_flag is N(means pure no header quals)
37905 + ORDERED index(atrgrps QP_ATTRIBUTE_GROUPS_N3) index(qppattmp QP_NPREQ_LINE_PATRNS_T_N2) l_line_cache_cur */
37906 /* DISTINCT atrgrps.list_header_id,
37907 atrgrps.list_line_id list_line_id,
37908 qplines.line_index line_index,
37909 qppattmp.pattern_id matched_pattrn_id,
37910 p_pricing_phase_id,
37911 qppattmp.hash_key matched_hash_key,
37912 G_STAGE_CACHE_MOD_LIN stage,
37913 atrgrps.source_system_code,
37914 G_STATUS_UNCHANGED,
37915 atrgrps.header_quals_exist_flag,
37916 atrgrps.grouping_no,
37917 atrgrps.eq_flag,
37918 atrgrps.MODIFIER_LEVEL_CODE,
37919 atrgrps.other_oprt_count,
37920 atrgrps.null_other_oprt_count,
37921 atrgrps.LIST_TYPE_CODE,
37922 atrgrps.ASK_FOR_FLAG,
37923 atrgrps.HEADER_LIMIT_EXISTS,
37924 atrgrps.LINE_LIMIT_EXISTS,
37925 atrgrps.descendents_quals_exist,
37926 atrgrps.PRICE_BREAK_TYPE_CODE
37927 FROM qp_npreq_lines_tmp qplines,
37928 qp_npreq_line_patrns_tmp qppattmp,
37929 qp_attribute_groups atrgrps
37930 WHERE atrgrps.pricing_phase_id = p_pricing_phase_id
37931 AND nvl(atrgrps.header_quals_exist_flag, 'N') = 'N'
37932 AND qppattmp.pattern_id = atrgrps.pattern_id -- Match
37933 AND qppattmp.hash_key = atrgrps.hash_key -- Match
37934 AND qplines.line_index = qppattmp.line_index --Join
37935 AND atrgrps.list_type_code NOT IN('PRL', 'AGR') -- Filter
37936 AND atrgrps.active_flag = 'Y' -- Filter
37937 AND(atrgrps.modifier_level_code = qplines.line_type_code
37938 OR (atrgrps.modifier_level_code = qp_preq_grp.g_line_group and
37939 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES))
37940 AND( qplines.unit_price IS NOT NULL
37941 OR qplines.usage_pricing_type = qp_preq_grp.g_authoring_type
37942 OR qplines.line_type_code = qp_preq_grp.g_order_level
37943 )
37944 AND(qplines.price_flag = qp_preq_grp.g_yes
37945 OR(qplines.price_flag = qp_preq_grp.g_phase
37946 AND p_freeze_override_flag = qp_preq_grp.g_yes)
37947 )
37948 AND( (atrgrps.currency_code IS NOT NULL
37949 AND atrgrps.currency_code = qp_preq_grp.g_currency_code)
37950 OR atrgrps.currency_code IS NULL) -- optional currency
37951 AND nvl(qplines.pricing_effective_date, TRUNC(sysdate))
37952 BETWEEN nvl(atrgrps.start_date_active_h, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
37953 AND nvl(atrgrps.end_date_active_h, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
37954 AND nvl(qplines.start_date_active_first, TRUNC(sysdate))
37955 BETWEEN nvl(atrgrps.start_date_active_first, nvl(qplines.start_date_active_first, TRUNC(sysdate)))
37956 AND nvl(atrgrps.end_date_active_first, nvl(qplines.start_date_active_first, TRUNC(sysdate)))
37957 AND nvl(qplines.start_date_active_second, TRUNC(sysdate))
37958 BETWEEN nvl(atrgrps.start_date_active_second, nvl(qplines.start_date_active_second, TRUNC(sysdate)))
37959 AND nvl(atrgrps.end_date_active_second, nvl(qplines.start_date_active_second, TRUNC(sysdate)))
37960 AND nvl(qplines.active_date_first_type, 'X') = nvl(atrgrps.active_date_first_type, nvl(qplines.active_date_first_type, 'X'))
37961 AND nvl(qplines.active_date_second_type, 'X') = nvl(atrgrps.active_date_second_type, nvl(qplines.active_date_second_type, 'X'))
37962 AND nvl(qplines.pricing_effective_date, TRUNC(sysdate))
37963 BETWEEN nvl(TRUNC(atrgrps.start_date_active_l), qplines.pricing_effective_date)
37964 AND nvl(TRUNC(atrgrps.end_date_active_l), qplines.pricing_effective_date)
37965 AND nvl(qplines.pricing_effective_date, TRUNC(sysdate))
37966 BETWEEN nvl(atrgrps.start_date_active_q, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
37967 AND nvl(atrgrps.end_date_active_q, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
37968 AND (qplines.priced_uom_code IS NULL
37969 OR qplines.priced_uom_code = nvl(atrgrps.product_uom_code, qplines.priced_uom_code)
37970 )
37971 AND((atrgrps.ask_for_flag = qp_preq_grp.g_yes
37972 AND EXISTS
37973 (SELECT
37974
37975 /*+ index(la QP_PREQ_LINE_ATTRS_TMP_N1) */ /*'x' --[julin/pricebook/backport]
37976 FROM qp_npreq_line_attrs_tmp la -- will check whether this can be moved to shaneeds code
37977 WHERE attribute_type = G_QUALIFIER_TYPE
37978 AND pricing_status_code = qp_preq_grp.g_status_unchanged
37979 AND validated_flag = qp_preq_grp.g_no
37980 AND list_header_id = atrgrps.list_header_id
37981 AND line_index = qplines.line_index)
37982 )
37983 OR atrgrps.ask_for_flag = qp_preq_grp.g_no)
37984 AND (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES AND
37985 atrgrps.list_line_type_code NOT IN (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
37986 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE) AND
37987 atrgrps.automatic_flag = 'Y'
37988 OR
37989 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)*/
37990
37991 CURSOR l_line_cache_path2_cur(p_pricing_phase_id NUMBER) IS
37992 SELECT
37993 /*+ ORDERED index(atrgrps QP_ATTRIBUTE_GROUPS_N3)
37994 index(qppattmp QP_NPREQ_LINE_PATRNS_T_N2)
37995 index(qplines QP_PREQ_LINES_TMP_U1)
37996 index(qprs qp_pte_source_systems_u2)
37997 l_line_cache_path2_cur */
37998 DISTINCT atrgrps.list_header_id,
37999 atrgrps.list_line_id list_line_id,
38000 qplines.line_index line_index,
38001 qppattmp.pattern_id matched_pattrn_id,
38002 p_pricing_phase_id,
38003 qppattmp.hash_key matched_hash_key,
38004 G_STAGE_CACHE_MOD_LIN stage,
38005 atrgrps.source_system_code,
38006 G_STATUS_UNCHANGED,
38007 atrgrps.header_quals_exist_flag,
38008 atrgrps.grouping_no,
38009 atrgrps.eq_flag,
38010 atrgrps.MODIFIER_LEVEL_CODE,
38011 atrgrps.other_oprt_count,
38012 atrgrps.null_other_oprt_count,
38013 atrgrps.LIST_TYPE_CODE,
38014 atrgrps.ASK_FOR_FLAG,
38015 atrgrps.HEADER_LIMIT_EXISTS,
38016 atrgrps.LINE_LIMIT_EXISTS,
38017 atrgrps.descendents_quals_exist,
38018 atrgrps.PRICE_BREAK_TYPE_CODE
38019 FROM qp_npreq_lines_tmp qplines,
38020 qp_npreq_line_patrns_tmp qppattmp,
38021 qp_attribute_groups atrgrps,
38022 qp_pte_source_systems qprs
38023 WHERE atrgrps.list_line_id <> -1 -- Filter
38024 AND atrgrps.pattern_id = qppattmp.pattern_id -- Match
38025 AND atrgrps.hash_key = qppattmp.hash_key -- Match
38026 AND atrgrps.pte_code = G_PTE_CODE
38027 AND qppattmp.line_index = qplines.line_index --Join
38028 AND atrgrps.list_type_code NOT IN('PRL', 'AGR') -- Filter
38029 AND atrgrps.active_flag = 'Y' -- Filter
38030 --AND atrgrps.source_system_code = qprs.source_system_code --join
38031 --AND qprs.request_type_code = qp_preq_grp.g_request_type_code
38032 AND qprs.APPLICATION_SHORT_NAME = atrgrps.source_system_code
38033 AND qprs.pte_code = G_PTE_CODE
38034 AND(atrgrps.modifier_level_code = qplines.line_type_code
38035 OR (atrgrps.modifier_level_code = qp_preq_grp.g_line_group and
38036 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES))
38037 AND( qplines.unit_price IS NOT NULL
38038 OR qplines.usage_pricing_type = qp_preq_grp.g_authoring_type
38039 OR qplines.line_type_code = qp_preq_grp.g_order_level
38040 )
38041 AND(qplines.price_flag = qp_preq_grp.g_yes
38042 OR(qplines.price_flag = qp_preq_grp.g_phase
38043 AND p_freeze_override_flag = qp_preq_grp.g_yes)
38044 )
38045 AND atrgrps.pricing_phase_id = p_pricing_phase_id
38046 AND(( atrgrps.currency_code IS NOT NULL
38047 AND atrgrps.currency_code = qp_preq_grp.g_currency_code)
38048 OR atrgrps.currency_code IS NULL
38049 )
38050 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
38051 BETWEEN TRUNC(nvl(atrgrps.start_date_active_h, nvl(qplines.pricing_effective_date, sysdate)))
38052 AND TRUNC(nvl(atrgrps.end_date_active_h, nvl(qplines.pricing_effective_date, sysdate)))
38053 AND TRUNC(nvl(qplines.start_date_active_first, sysdate))
38054 BETWEEN TRUNC(nvl(atrgrps.start_date_active_first, nvl(qplines.start_date_active_first, sysdate)))
38055 AND TRUNC(nvl(atrgrps.end_date_active_first, nvl(qplines.start_date_active_first, sysdate)))
38056 AND TRUNC(nvl(qplines.start_date_active_second, sysdate))
38057 BETWEEN TRUNC(nvl(atrgrps.start_date_active_second, nvl(qplines.start_date_active_second, sysdate)))
38058 AND TRUNC(nvl(atrgrps.end_date_active_second, nvl(qplines.start_date_active_second, sysdate)))
38059 AND nvl(qplines.active_date_first_type, 'X') = nvl(atrgrps.active_date_first_type, nvl(qplines.active_date_first_type, 'X'))
38060 AND nvl(qplines.active_date_second_type, 'X') = nvl(atrgrps.active_date_second_type, nvl(qplines.active_date_second_type, 'X'))
38061 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
38062 BETWEEN TRUNC(nvl(atrgrps.start_date_active_l, nvl(qplines.pricing_effective_date, sysdate)))
38063 AND TRUNC(nvl(atrgrps.end_date_active_l, nvl(qplines.pricing_effective_date, sysdate)))
38064 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
38065 BETWEEN TRUNC(nvl(atrgrps.start_date_active_q, nvl(qplines.pricing_effective_date, sysdate)))
38066 AND TRUNC(nvl(atrgrps.end_date_active_q, nvl(qplines.pricing_effective_date, sysdate)))
38067 AND (qplines.priced_uom_code IS NULL
38068 OR qplines.priced_uom_code = nvl(atrgrps.product_uom_code, qplines.priced_uom_code)
38069 )
38070 AND((atrgrps.ask_for_flag = qp_preq_grp.g_yes
38071 AND EXISTS
38072 (SELECT
38073
38074 /*+ index(la QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/pricebook/backport]
38075 FROM qp_npreq_line_attrs_tmp la -- will check whether this can be moved to shaneeds code
38076 WHERE attribute_type = G_QUALIFIER_TYPE
38077 AND pricing_status_code = qp_preq_grp.g_status_unchanged
38078 AND validated_flag = qp_preq_grp.g_no
38079 AND list_header_id = atrgrps.list_header_id
38080 AND line_index = qplines.line_index)
38081 )
38082 OR atrgrps.ask_for_flag = qp_preq_grp.g_no)
38083 AND (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES AND
38084 atrgrps.list_line_type_code NOT IN (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
38085 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE) AND
38086 atrgrps.automatic_flag = 'Y'
38087 OR
38088 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES);
38089
38090 CURSOR l_hdr_cache_cur_path2(p_pricing_phase_id NUMBER) IS
38091 SELECT
38092
38093 /*+ ORDERED index(atrgrps QP_ATTRIBUTE_GROUPS_N1)
38094 index(qppattmp QP_NPREQ_LINE_PATRNS_T_N2)
38095 index(intmdt QP_PREQ_PATRN_QUAL_T_N1)
38096 l_hdr_cache_cur_path2 */
38097 DISTINCT atrgrps.list_header_id,
38098 -1 list_line_id,
38099 qplines.line_index line_index,
38100 qppattmp.pattern_id matched_pattrn_id,
38101 p_pricing_phase_id,
38102 qppattmp.hash_key matched_hash_key,
38103 G_STAGE_CACHE_MOD_HDR stage,
38104 atrgrps.source_system_code,
38105 G_STATUS_UNCHANGED,
38106 atrgrps.header_quals_exist_flag,
38107 atrgrps.grouping_no,
38108 atrgrps.eq_flag,
38109 atrgrps.MODIFIER_LEVEL_CODE,
38110 atrgrps.other_oprt_count,
38111 atrgrps.null_other_oprt_count,
38112 atrgrps.LIST_TYPE_CODE,
38113 atrgrps.ASK_FOR_FLAG,
38114 atrgrps.HEADER_LIMIT_EXISTS,
38115 atrgrps.LINE_LIMIT_EXISTS,
38116 atrgrps.descendents_quals_exist
38117 FROM qp_preq_patrn_qual_tmp intmdt,
38118 qp_secu_attr_groups_v atrgrps,
38119 --qp_attribute_groups atrgrps,
38120 qp_npreq_line_patrns_tmp qppattmp,
38121 qp_npreq_lines_tmp qplines
38122 WHERE intmdt.pricing_phase_id = p_pricing_phase_id
38123 AND atrgrps.list_header_id = intmdt.list_header_id
38124 AND intmdt.stage = G_STAGE_CACHE_MOD_LIN
38125 AND atrgrps.list_line_id = -1 -- Filter
38126 AND qppattmp.pattern_id = atrgrps.pattern_id -- Match
38127 AND qppattmp.hash_key = atrgrps.hash_key -- Match
38128 AND qppattmp.line_index = intmdt.line_index
38129 AND qplines.line_index = qppattmp.line_index --Join
38130 AND intmdt.pricing_status_code=QP_PREQ_GRP.G_STATUS_UNCHANGED
38131 AND TRUNC(nvl(qplines.pricing_effective_date, sysdate))
38132 BETWEEN TRUNC(nvl(atrgrps.start_date_active_q, nvl(qplines.pricing_effective_date, sysdate)))
38133 AND TRUNC(nvl(atrgrps.end_date_active_q, nvl(qplines.pricing_effective_date, sysdate)));
38134
38135 /*CURSOR l_both_cache_path2_cur(p_pricing_phase_id NUMBER) IS
38136 SELECT
38137 /*+ ORDERED index(atrgrps_l QP_ATTRIBUTE_GROUPS_N3)
38138 index(atrgrps_h QP_ATTRIBUTE_GROUPS_N1)
38139 index(qplines QP_PREQ_LINES_TMP_N4)
38140 index(qppattmp_h QP_NPREQ_LINE_PATRNS_T_N1)
38141 index(qppattmp_l QP_NPREQ_LINE_PATRNS_T_N2)
38142 l_both_cache_path2_cur */
38143 /*DISTINCT atrgrps_h.list_header_id,
38144 atrgrps_l.list_line_id list_line_id,
38145 qplines.line_index line_index,
38146 qppattmp_l.pattern_id lin_matched_pattrn_id,
38147 qppattmp_h.pattern_id hdr_matched_pattrn_id,
38148 p_pricing_phase_id,
38149 qppattmp_l.hash_key lin_matched_hash_key,
38150 qppattmp_h.hash_key hdr_matched_hash_key,
38151 G_STAGE_CACHE_MOD_LIN2 stage,
38152 G_STATUS_UNCHANGED,
38153 qprs.source_system_code,
38154 DECODE(atrgrps_h.EQ_FLAG,'N','Y','N') HEADER_QUALS_EXIST_FLAG,
38155 atrgrps_h.grouping_no,
38156 atrgrps_l.grouping_no,
38157 atrgrps_h.eq_flag,
38158 atrgrps_l.eq_flag,
38159 atrgrps_l.MODIFIER_LEVEL_CODE,
38160 atrgrps_l.other_oprt_count,
38161 atrgrps_l.null_other_oprt_count,
38162 atrgrps_h.other_oprt_count,
38163 atrgrps_h.null_other_oprt_count,
38164 atrgrps_h.LIST_TYPE_CODE,
38165 atrgrps_h.ASK_FOR_FLAG,
38166 atrgrps_h.HEADER_LIMIT_EXISTS,
38167 atrgrps_l.LINE_LIMIT_EXISTS
38168 FROM qp_npreq_lines_tmp qplines,
38169 qp_npreq_line_patrns_tmp qppattmp_l,
38170 qp_attribute_groups atrgrps_l,
38171 qp_attribute_groups atrgrps_h,
38172 qp_npreq_line_patrns_tmp qppattmp_h,
38173 qp_price_req_sources_v qprs
38174 WHERE atrgrps_l.list_line_id <> -1 -- Filter
38175 AND atrgrps_h.list_line_id = -1 -- Filter
38176 AND atrgrps_l.list_header_id = atrgrps_h.list_header_id -- Filter
38177 AND qppattmp_l.pattern_id = atrgrps_l.pattern_id -- Match
38178 AND qppattmp_l.hash_key = atrgrps_l.hash_key -- Match
38179 AND qppattmp_h.pattern_id = atrgrps_h.pattern_id -- Match
38180 AND qppattmp_h.hash_key = atrgrps_h.hash_key -- Match
38181 AND qppattmp_l.line_index = qplines.line_index --Join
38182 AND qppattmp_h.line_index = qplines.line_index --Join
38183 AND atrgrps_l.list_type_code NOT IN('PRL', 'AGR') -- Filter
38184 AND atrgrps_h.list_type_code NOT IN('PRL', 'AGR') -- Filter
38185 AND atrgrps_l.active_flag = 'Y' -- Filter
38186 AND atrgrps_h.active_flag = 'Y' -- Filter
38187 AND atrgrps_l.source_system_code = qprs.source_system_code --join
38188 AND atrgrps_h.source_system_code = qprs.source_system_code --join
38189 AND qprs.request_type_code = qp_preq_grp.g_request_type_code
38190 AND((nvl(g_security_control, 'OFF') = 'ON' AND g_current_user_op_unit = atrgrps_h.orig_org_id)
38191 OR (nvl(g_security_control, 'OFF') = 'ON' AND nvl(atrgrps_h.global_flag, 'Y') = 'Y')
38192 OR nvl(g_security_control, 'OFF') = 'OFF'
38193 )
38194 AND(atrgrps_l.modifier_level_code = qplines.line_type_code
38195 OR atrgrps_l.modifier_level_code = qp_preq_grp.g_line_group)
38196 AND( qplines.unit_price IS NOT NULL
38197 OR qplines.usage_pricing_type = qp_preq_grp.g_authoring_type
38198 OR qplines.line_type_code = qp_preq_grp.g_order_level
38199 )
38200 AND(qplines.price_flag = qp_preq_grp.g_yes
38201 OR(qplines.price_flag = qp_preq_grp.g_phase
38202 AND p_freeze_override_flag = qp_preq_grp.g_yes)
38203 )
38204 AND atrgrps_l.pricing_phase_id = p_pricing_phase_id
38205 -- AND atrgrps_h.pricing_phase_id = -1
38206 AND(( atrgrps_h.currency_code IS NOT NULL
38207 AND atrgrps_h.currency_code = qp_preq_grp.g_currency_code)
38208 OR atrgrps_h.currency_code IS NULL
38209 )
38210 AND nvl(qplines.pricing_effective_date, TRUNC(sysdate))
38211 BETWEEN nvl(atrgrps_h.start_date_active_h, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
38212 AND nvl(atrgrps_h.end_date_active_h, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
38213 AND nvl(qplines.start_date_active_first, TRUNC(sysdate))
38214 BETWEEN nvl(atrgrps_h.start_date_active_first, nvl(qplines.start_date_active_first, TRUNC(sysdate)))
38215 AND nvl(atrgrps_h.end_date_active_first, nvl(qplines.start_date_active_first, TRUNC(sysdate)))
38216 AND nvl(qplines.start_date_active_second, TRUNC(sysdate))
38217 BETWEEN nvl(atrgrps_h.start_date_active_second, nvl(qplines.start_date_active_second, TRUNC(sysdate)))
38218 AND nvl(atrgrps_h.end_date_active_second, nvl(qplines.start_date_active_second, TRUNC(sysdate)))
38219 AND nvl(qplines.active_date_first_type, 'X') = nvl(atrgrps_h.active_date_first_type, nvl(qplines.active_date_first_type, 'X'))
38220 AND nvl(qplines.active_date_second_type, 'X') = nvl(atrgrps_h.active_date_second_type, nvl(qplines.active_date_second_type, 'X'))
38221 AND nvl(qplines.pricing_effective_date, TRUNC(sysdate))
38222 BETWEEN nvl(TRUNC(atrgrps_l.start_date_active_l), qplines.pricing_effective_date)
38223 AND nvl(TRUNC(atrgrps_l.end_date_active_l), qplines.pricing_effective_date)
38224 AND nvl(qplines.pricing_effective_date, TRUNC(sysdate))
38225 BETWEEN nvl(atrgrps_l.start_date_active_q, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
38226 AND nvl(atrgrps_l.end_date_active_q, nvl(qplines.pricing_effective_date, TRUNC(sysdate)))
38227 AND (qplines.priced_uom_code IS NULL
38228 OR qplines.priced_uom_code = nvl(atrgrps_l.product_uom_code, qplines.priced_uom_code)
38229 )
38230 AND((atrgrps_h.ask_for_flag = qp_preq_grp.g_yes
38231 AND EXISTS
38232 (SELECT
38233
38234 /*+ index(la QP_PREQ_LINE_ATTRS_TMP_N1) */ /*'x' --[julin/pricebook/backport]
38235 FROM qp_npreq_line_attrs_tmp la -- will check whether this can be moved to shaneeds code
38236 WHERE attribute_type = G_QUALIFIER_TYPE
38237 AND pricing_status_code = qp_preq_grp.g_status_unchanged
38238 AND validated_flag = qp_preq_grp.g_no
38239 AND list_header_id = atrgrps_h.list_header_id
38240 AND line_index = qplines.line_index)
38241 )
38242 OR atrgrps_h.ask_for_flag = qp_preq_grp.g_no);*/
38243 l_limit NUMBER := 5000;
38244 p_stage varchar2(300);
38245 TYPE l_number IS TABLE OF NUMBER INDEX BY pls_integer;
38246 l_list_header_id_tbl l_number;
38247 l_list_line_id_tbl l_number;
38248 l_matched_pattrn_id_tbl l_number;
38249 l_lin_matched_pattrn_id_tbl l_number;
38250 l_hdr_matched_pattrn_id_tbl l_number;
38251 l_line_index_tbl l_number;
38252 l_pricing_phase_id_tbl l_number;
38253 l_grouping_no l_number;
38254 l_other_oprt_count l_number;
38255 l_null_other_oprt_count l_number;
38256 l_hdr_grouping_no l_number;
38257 l_hdr_other_oprt_count l_number;
38258 l_hdr_null_other_oprt_count l_number;
38259 l_lin_grouping_no l_number;
38260 l_lin_other_oprt_count l_number;
38261 l_lin_null_other_oprt_count l_number;
38262
38263 TYPE l_string IS TABLE OF VARCHAR2(2000) INDEX BY pls_integer;
38264 l_matched_hash_key_tbl l_string;
38265 l_hdr_matched_hash_key_tbl l_string;
38266 l_lin_matched_hash_key_tbl l_string;
38267 l_stage_tbl l_string;
38268 l_pricing_status_code_tbl l_string;
38269 l_ssc l_string;
38270 l_header_quals_exist_flag l_string;
38271 l_eq_flag l_string;
38272 l_hdr_eq_flag l_string;
38273 l_lin_eq_flag l_string;
38274 l_modf_lvl_code l_string;
38275 l_list_type_code l_string;
38276 l_ask_for_flag l_string;
38277 l_hdr_lmt_exists l_string;
38278 l_line_lmt_exists l_string;
38279 l_descnt_quals_exist l_string;
38280 l_PRICE_BREAK_TYPE_CODE l_string;
38281
38282
38283 l_routine VARCHAR2(40) := 'Select_modifiers_patrn';
38284 E_ROUTINE_ERRORS EXCEPTION;
38285 l_search_path NUMBER(1);
38286
38287 BEGIN
38288
38289 x_status_code := fnd_api.g_ret_sts_success;
38290 l_search_path := p_search_path;
38291 IF qp_preq_grp.g_debug_engine = fnd_api.g_true THEN
38292 qp_preq_grp.engine_debug('Entering into pattern Select_modifiers_patrn');
38293 qp_preq_grp.engine_debug('Pattern search is going in Path : ' || l_search_path);
38294 END IF;
38295 IF l_search_path = 1 THEN -- for the Path 1
38296 /* Header Caching*/
38297 IF qp_preq_grp.g_debug_engine = fnd_api.g_true THEN
38298 qp_preq_grp.engine_debug('Caching Header Qualifiers for phase : ' || p_pricing_phase_id);
38299 END IF;
38300 qp_debug_util.tstart('PATRN_SELECT_MODIFIERS_HDR_CACHE_CUR', 'l_header_cache_cur');
38301
38302 OPEN l_header_cache_cur(p_pricing_phase_id);
38303 LOOP
38304 l_list_header_id_tbl.DELETE;
38305 l_list_line_id_tbl.DELETE;
38306 l_line_index_tbl.DELETE;
38307 l_matched_pattrn_id_tbl.DELETE;
38308 l_pricing_phase_id_tbl.DELETE;
38309 l_stage_tbl.DELETE;
38310 l_matched_hash_key_tbl.DELETE;
38311 l_pricing_status_code_tbl.DELETE;
38312 l_ssc.DELETE;
38313 l_header_quals_exist_flag.DELETE;
38314 l_grouping_no.DELETE;
38315 l_eq_flag.DELETE;
38316 l_modf_lvl_code.DELETE;
38317 l_other_oprt_count.DELETE;
38318 l_null_other_oprt_count.DELETE;
38319 l_list_type_code.DELETE;
38320 l_ask_for_flag.DELETE;
38321 l_hdr_lmt_exists.DELETE;
38322 l_line_lmt_exists.DELETE;
38323 l_descnt_quals_exist.DELETE;
38324
38325
38326 FETCH l_header_cache_cur bulk collect
38327 INTO l_list_header_id_tbl,
38328 l_list_line_id_tbl,
38329 l_line_index_tbl,
38330 l_matched_pattrn_id_tbl,
38331 l_pricing_phase_id_tbl,
38332 l_matched_hash_key_tbl,
38333 l_stage_tbl,
38334 l_ssc,
38335 l_pricing_status_code_tbl,
38336 l_header_quals_exist_flag,
38337 l_grouping_no,
38338 l_eq_flag,
38339 l_modf_lvl_code,
38340 l_other_oprt_count,
38341 l_null_other_oprt_count,
38342 l_list_type_code,
38343 l_ask_for_flag,
38344 l_hdr_lmt_exists,
38345 l_line_lmt_exists,
38346 l_descnt_quals_exist
38347 limit l_limit;
38348
38349 EXIT
38350 WHEN l_list_header_id_tbl.COUNT = 0;
38351
38352 forall i IN 1 .. l_list_header_id_tbl.COUNT INSERT
38353 INTO qp_preq_patrn_qual_tmp(list_header_id,
38354 list_line_id,
38355 line_index,
38356 matched_pattrn_id,
38357 pricing_phase_id,
38358 matched_hash_key,
38359 stage,
38360 pricing_status_code,
38361 source_system_code,
38362 header_quals_exist_flag,
38363 grouping_no,
38364 eq_flag,
38365 MODIFIER_LEVEL_CODE,
38366 other_oprt_count,
38367 null_other_oprt_count,
38368 LIST_TYPE_CODE,
38369 ASK_FOR_FLAG,
38370 HEADER_LIMIT_EXISTS,
38371 LINE_LIMIT_EXISTS,
38372 descendents_quals_exist
38373 )
38374 VALUES(l_list_header_id_tbl(i),
38375 l_list_line_id_tbl(i),
38376 l_line_index_tbl(i),
38377 l_matched_pattrn_id_tbl(i),
38378 l_pricing_phase_id_tbl(i),
38379 l_matched_hash_key_tbl(i),
38380 l_stage_tbl(i),
38381 l_pricing_status_code_tbl(i),
38382 l_ssc(i),
38383 l_header_quals_exist_flag(i),
38384 l_grouping_no(i),
38385 l_eq_flag(i),
38386 l_modf_lvl_code(i),
38387 l_other_oprt_count(i),
38388 l_null_other_oprt_count(i),
38389 l_list_type_code(i),
38390 l_ask_for_flag(i),
38391 l_hdr_lmt_exists(i),
38392 l_line_lmt_exists(i),
38393 l_descnt_quals_exist(i));
38394
38395 --exit when l_header_cache_cur%rowcount < l_limit;
38396 END LOOP;
38397
38398 CLOSE l_header_cache_cur;
38399 qp_debug_util.tstop('PATRN_SELECT_MODIFIERS_HDR_CACHE_CUR');
38400
38401 qp_debug_util.tstart('Populate_Temp_Tables_NEQ_BTW_P1_H', 'Populate_Temp_Tables_NEQ_BTW_P1_H');
38402 Populate_Temp_Tables_NEQ_BTW(
38403 p_pricing_phase_id ,
38404 G_STAGE_CACHE_MOD_HDR ,
38405 x_status_code ,
38406 x_status_text );
38407 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
38408 RAISE E_ROUTINE_ERRORS;
38409 END IF;
38410
38411 qp_debug_util.tstop('Populate_Temp_Tables_NEQ_BTW_P1_H');
38412 qp_debug_util.tstart('QP_EVALUATE_OTHER_OPERATORS_P1_H', 'QP_EVALUATE_OTHER_OPERATORS_P1_H');
38413
38414 QP_EVALUATE_OTHER_OPERATORS(
38415 p_pricing_phase_id ,
38416 G_STAGE_CACHE_MOD_HDR,
38417 x_status_code ,
38418 x_status_text );
38419
38420 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
38421 RAISE E_ROUTINE_ERRORS;
38422 END IF;
38423
38424 qp_debug_util.tstop('QP_EVALUATE_OTHER_OPERATORS_P1_H');
38425
38426 IF qp_preq_grp.g_debug_engine = fnd_api.g_true THEN
38427 qp_preq_grp.engine_debug('Caching Line Qualifiers for satisfied headers, pure line quals, only prod and only prod-pric for phase : ' || p_pricing_phase_id);
38428 END IF;
38429
38430 qp_debug_util.tstart('PATRN_LIST_CUR_DEL_HDR_TCA', 'Header deletion for TCA');
38431
38432 UPDATE qp_preq_patrn_qual_tmp a
38433 SET pricing_status_code = G_DELETED_TCA
38434 WHERE pricing_status_code = g_status_unchanged
38435 AND a.descendents_quals_exist = 'Y'
38436 and a.pricing_phase_id = p_pricing_phase_id
38437 and a.stage = G_STAGE_CACHE_MOD_HDR
38438 AND EXISTS (
38439 SELECT 1
38440 FROM qp_qualifiers b, qp_npreq_line_attrs_tmp c
38441 WHERE b.list_header_id = a.list_header_id
38442 AND b.list_line_id = a.list_line_id
38443 AND (b.qualifier_grouping_no = a.grouping_no
38444 or
38445 b.qualifier_grouping_no = -1
38446 )
38447 AND b.qualify_hier_descendents_flag = 'N'
38448 AND c.segment_id = b.segment_id
38449 AND c.line_index = a.line_index
38450 AND c.derived_qualifier_flag = 'Y');
38451
38452 qp_debug_util.tstop('PATRN_LIST_CUR_DEL_HDR_TCA');
38453
38454
38455 /* Line Caching*/
38456
38457 qp_debug_util.tstart('PATRN_SELECT_MODIFIERS_LINE_CACHE_CUR', 'l_line_cache_cur');
38458
38459 OPEN l_line_cache_cur(p_pricing_phase_id);
38460
38461 LOOP
38462 l_list_header_id_tbl.DELETE;
38463 l_list_line_id_tbl.DELETE;
38464 l_line_index_tbl.DELETE;
38465 l_matched_pattrn_id_tbl.DELETE;
38466 l_pricing_phase_id_tbl.DELETE;
38467 l_stage_tbl.DELETE;
38468 l_matched_hash_key_tbl.DELETE;
38469 l_pricing_status_code_tbl.DELETE;
38470 l_ssc.DELETE;
38471 l_header_quals_exist_flag.DELETE;
38472 l_grouping_no.DELETE;
38473 l_eq_flag.DELETE;
38474 l_modf_lvl_code.DELETE;
38475 l_other_oprt_count.DELETE;
38476 l_null_other_oprt_count.DELETE;
38477 l_list_type_code.DELETE;
38478 l_ask_for_flag.DELETE;
38479 l_hdr_lmt_exists.DELETE;
38480 l_line_lmt_exists.DELETE;
38481 l_descnt_quals_exist.DELETE;
38482 l_PRICE_BREAK_TYPE_CODE.DELETE;
38483
38484 FETCH l_line_cache_cur bulk collect
38485 INTO l_list_header_id_tbl,
38486 l_list_line_id_tbl,
38487 l_line_index_tbl,
38488 l_matched_pattrn_id_tbl,
38489 l_pricing_phase_id_tbl,
38490 l_matched_hash_key_tbl,
38491 l_stage_tbl,
38492 l_ssc,
38493 l_pricing_status_code_tbl,
38494 l_header_quals_exist_flag,
38495 l_grouping_no,
38496 l_eq_flag,
38497 l_modf_lvl_code,
38498 l_other_oprt_count,
38499 l_null_other_oprt_count,
38500 l_list_type_code,
38501 l_ask_for_flag,
38502 l_hdr_lmt_exists,
38503 l_line_lmt_exists,
38504 l_descnt_quals_exist,
38505 l_PRICE_BREAK_TYPE_CODE
38506 limit l_limit;
38507 -- qp_preq_grp.engine_debug('l_list_header_id_tbl.count-' || l_list_header_id_tbl.COUNT);
38508
38509 EXIT
38510 WHEN l_list_header_id_tbl.COUNT = 0;
38511
38512 forall i IN 1 .. l_list_header_id_tbl.COUNT
38513 INSERT INTO qp_preq_patrn_qual_tmp(list_header_id,
38514 list_line_id,
38515 line_index,
38516 matched_pattrn_id,
38517 pricing_phase_id,
38518 matched_hash_key,
38519 stage,
38520 pricing_status_code,
38521 source_system_code,
38522 header_quals_exist_flag,
38523 grouping_no,
38524 eq_flag,
38525 MODIFIER_LEVEL_CODE,
38526 other_oprt_count,
38527 null_other_oprt_count,
38528 LIST_TYPE_CODE,
38529 ASK_FOR_FLAG,
38530 HEADER_LIMIT_EXISTS,
38531 LINE_LIMIT_EXISTS,
38532 descendents_quals_exist,
38533 PRICE_BREAK_TYPE_CODE
38534 )
38535 VALUES (l_list_header_id_tbl(i),
38536 l_list_line_id_tbl(i),
38537 l_line_index_tbl(i),
38538 l_matched_pattrn_id_tbl(i),
38539 l_pricing_phase_id_tbl(i),
38540 l_matched_hash_key_tbl(i),
38541 l_stage_tbl(i),
38542 l_pricing_status_code_tbl(i),
38543 l_ssc(i),
38544 l_header_quals_exist_flag(i),
38545 l_grouping_no(i),
38546 l_eq_flag(i),
38547 l_modf_lvl_code(i),
38548 l_other_oprt_count(i),
38549 l_null_other_oprt_count(i),
38550 l_list_type_code(i),
38551 l_ask_for_flag(i),
38552 l_hdr_lmt_exists(i),
38553 l_line_lmt_exists(i),
38554 l_descnt_quals_exist(i),
38555 l_PRICE_BREAK_TYPE_CODE(i)
38556 );
38557
38558 --exit when l_line_cache_cur%rowcount < l_limit;
38559
38560 END LOOP;
38561 CLOSE l_line_cache_cur;
38562
38563 qp_debug_util.tstop('PATRN_SELECT_MODIFIERS_LINE_CACHE_CUR');
38564
38565
38566 qp_debug_util.tstart('Populate_Temp_Tables_NEQ_BTW_P1_L', 'Populate_Temp_Tables_NEQ_BTW_P1_L');
38567
38568 Populate_Temp_Tables_NEQ_BTW(
38569 p_pricing_phase_id ,
38570 G_STAGE_CACHE_MOD_LIN ,
38571 x_status_code ,
38572 x_status_text );
38573
38574 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
38575 RAISE E_ROUTINE_ERRORS;
38576 END IF;
38577
38578 qp_debug_util.tstop('Populate_Temp_Tables_NEQ_BTW_P1_L');
38579
38580 qp_debug_util.tstart('QP_EVALUATE_OTHER_OPERATORS_P1_L', 'QP_EVALUATE_OTHER_OPERATORS_P1_L');
38581
38582 QP_EVALUATE_OTHER_OPERATORS(
38583 p_pricing_phase_id ,
38584 G_STAGE_CACHE_MOD_LIN,
38585 x_status_code ,
38586 x_status_text );
38587
38588 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
38589 RAISE E_ROUTINE_ERRORS;
38590 END IF;
38591
38592 qp_debug_util.tstop('QP_EVALUATE_OTHER_OPERATORS_P1_L');
38593
38594 qp_debug_util.tstart('PATRN_LIST_CUR_DEL_LIN_TCA', 'Line deletion for TCA');
38595
38596 UPDATE qp_preq_patrn_qual_tmp a
38597 SET pricing_status_code = G_DELETED_TCA
38598 WHERE pricing_status_code = g_status_unchanged
38599 AND a.descendents_quals_exist = 'Y'
38600 and a.pricing_phase_id = p_pricing_phase_id
38601 and a.stage = G_STAGE_CACHE_MOD_LIN
38602 AND EXISTS (
38603 SELECT 1
38604 FROM qp_qualifiers b, qp_npreq_line_attrs_tmp c
38605 WHERE b.list_header_id = a.list_header_id
38606 AND b.list_line_id = a.list_line_id
38607 AND (b.qualifier_grouping_no = a.grouping_no
38608 or
38609 b.qualifier_grouping_no = -1
38610 )
38611 AND b.qualify_hier_descendents_flag = 'N'
38612 AND c.segment_id = b.segment_id
38613 AND c.line_index = a.line_index
38614 AND c.derived_qualifier_flag = 'Y');
38615
38616 qp_debug_util.tstop('PATRN_LIST_CUR_DEL_LIN_TCA');
38617
38618 ELSE --- for the path 2
38619 /*
38620 qp_debug_util.tstart('PATRN_SELECT_MODIFIERS_BOTH_CACHE_CUR_PATH2', 'l_both_cache_path2_cur');
38621
38622 OPEN l_both_cache_path2_cur(p_pricing_phase_id);
38623 LOOP
38624
38625 l_list_header_id_tbl.DELETE;
38626 l_list_line_id_tbl.DELETE;
38627 l_line_index_tbl.DELETE;
38628 l_hdr_matched_pattrn_id_tbl.DELETE;
38629 l_lin_matched_pattrn_id_tbl.DELETE;
38630 l_pricing_phase_id_tbl.DELETE;
38631 l_stage_tbl.DELETE;
38632 l_hdr_matched_hash_key_tbl.DELETE;
38633 l_lin_matched_hash_key_tbl.DELETE;
38634 l_pricing_status_code_tbl.DELETE;
38635 l_ssc.DELETE;
38636 l_header_quals_exist_flag.DELETE;
38637 l_hdr_grouping_no.DELETE;
38638 l_lin_grouping_no.DELETE;
38639 l_hdr_eq_flag.DELETE;
38640 l_lin_eq_flag.DELETE;
38641 l_modf_lvl_code.DELETE;
38642 l_hdr_other_oprt_count.DELETE;
38643 l_hdr_null_other_oprt_count.DELETE;
38644 l_lin_other_oprt_count.DELETE;
38645 l_lin_null_other_oprt_count.DELETE;
38646 l_list_type_code.DELETE;
38647 l_ask_for_flag.DELETE;
38648 l_hdr_lmt_exists.DELETE;
38649 l_line_lmt_exists.DELETE;
38650
38651
38652 FETCH l_both_cache_path2_cur bulk collect
38653 INTO l_list_header_id_tbl,
38654 l_list_line_id_tbl,
38655 l_line_index_tbl,
38656 l_hdr_matched_pattrn_id_tbl,
38657 l_lin_matched_pattrn_id_tbl,
38658 l_pricing_phase_id_tbl,
38659 l_stage_tbl,
38660 l_hdr_matched_hash_key_tbl,
38661 l_lin_matched_hash_key_tbl,
38662 l_pricing_status_code_tbl,
38663 l_ssc,
38664 l_header_quals_exist_flag,
38665 l_hdr_grouping_no,
38666 l_lin_grouping_no,
38667 l_hdr_eq_flag,
38668 l_lin_eq_flag,
38669 l_modf_lvl_code,
38670 l_hdr_other_oprt_count,
38671 l_hdr_null_other_oprt_count,
38672 l_lin_other_oprt_count,
38673 l_lin_null_other_oprt_count,
38674 l_list_type_code,
38675 l_ask_for_flag,
38676 l_hdr_lmt_exists,
38677 l_line_lmt_exists
38678 limit l_limit;
38679
38680 EXIT
38681 WHEN l_list_header_id_tbl.COUNT = 0;
38682
38683 FORALL i IN 1 .. l_list_header_id_tbl.COUNT
38684 INSERT INTO qp_preq_patrn_qual_tmp(list_header_id,
38685 list_line_id,
38686 line_index,
38687 matched_pattrn_id,
38688 pricing_phase_id,
38689 matched_hash_key,
38690 stage,
38691 pricing_status_code,
38692 source_system_code,
38693 header_quals_exist_flag,
38694 grouping_no,
38695 eq_flag,
38696 MODIFIER_LEVEL_CODE,
38697 other_oprt_count,
38698 null_other_oprt_count,
38699 LIST_TYPE_CODE,
38700 ASK_FOR_FLAG,
38701 HEADER_LIMIT_EXISTS,
38702 LINE_LIMIT_EXISTS
38703 )
38704 SELECT DISTINCT l_list_header_id_tbl(i),
38705 l_list_line_id_tbl(i),
38706 l_line_index_tbl(i),
38707 l_lin_matched_pattrn_id_tbl(i),
38708 l_pricing_phase_id_tbl(i),
38709 l_stage_tbl(i),
38710 l_lin_matched_hash_key_tbl(i),
38711 l_pricing_status_code_tbl(i),
38712 l_ssc(i),
38713 l_header_quals_exist_flag(i),
38714 l_lin_grouping_no(i),
38715 l_lin_eq_flag(i),
38716 l_modf_lvl_code(i),
38717 l_lin_other_oprt_count(i),
38718 l_lin_null_other_oprt_count(i),
38719 l_list_type_code(i),
38720 l_ask_for_flag(i),
38721 l_hdr_lmt_exists(i),
38722 l_line_lmt_exists(i)
38723 FROM dual;
38724
38725 FORALL i IN 1 .. l_list_header_id_tbl.COUNT
38726 INSERT INTO qp_preq_patrn_qual_tmp(list_header_id,
38727 list_line_id,
38728 line_index,
38729 matched_pattrn_id,
38730 pricing_phase_id,
38731 matched_hash_key,
38732 stage,
38733 pricing_status_code,
38734 source_system_code,
38735 header_quals_exist_flag,
38736 grouping_no,
38737 eq_flag,
38738 MODIFIER_LEVEL_CODE,
38739 other_oprt_count,
38740 null_other_oprt_count,
38741 LIST_TYPE_CODE,
38742 ASK_FOR_FLAG,
38743 HEADER_LIMIT_EXISTS,
38744 LINE_LIMIT_EXISTS
38745 )
38746 SELECT DISTINCT l_list_header_id_tbl(i),
38747 l_list_line_id_tbl(i),
38748 l_line_index_tbl(i),
38749 l_hdr_matched_pattrn_id_tbl(i),
38750 l_pricing_phase_id_tbl(i),
38751 l_stage_tbl(i),
38752 l_hdr_matched_hash_key_tbl(i),
38753 l_pricing_status_code_tbl(i),
38754 l_ssc(i),
38755 l_header_quals_exist_flag(i),
38756 l_hdr_grouping_no(i),
38757 l_hdr_eq_flag(i),
38758 l_modf_lvl_code(i),
38759 l_hdr_other_oprt_count(i),
38760 l_hdr_null_other_oprt_count(i),
38761 l_list_type_code(i),
38762 l_ask_for_flag(i),
38763 l_hdr_lmt_exists(i),
38764 l_line_lmt_exists(i)
38765 FROM dual
38766 WHERE l_hdr_eq_flag(i) = 'N';
38767
38768 --exit when l_header_cache_cur%rowcount < l_limit;
38769 END LOOP;
38770 CLOSE l_both_cache_path2_cur;
38771 qp_debug_util.tstop('PATRN_SELECT_MODIFIERS_BOTH_CACHE_CUR_PATH2');
38772
38773 IF qp_preq_grp.g_debug_engine = fnd_api.g_true THEN
38774 qp_debug_util.print_table_data_csv('QP_PREQ_PATRN_QUAL_TMP','SEL_MOD_QUAL_AFT_LIN_CACH_P2_'||p_pricing_phase_id);
38775 END IF;
38776
38777 qp_debug_util.tstart('Populate_Temp_Tables_NEQ_BTW_P2_L', 'Populate_Temp_Tables_NEQ_BTW_P2_L');
38778
38779 Populate_Temp_Tables_NEQ_BTW(
38780 p_pricing_phase_id ,
38781 G_STAGE_CACHE_MOD_LIN2,
38782 x_status_code ,
38783 x_status_text );
38784
38785 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
38786 RAISE E_ROUTINE_ERRORS;
38787 END IF;
38788
38789 IF qp_preq_grp.g_debug_engine = fnd_api.g_true THEN
38790 qp_debug_util.print_table_data_csv('QP_NPREQ_LINE_ATTRS_TMP','SEL_MOD_ATTRS_AFT_LIN_POP_NEQ_BTW_P2_'||p_pricing_phase_id);
38791 END IF;
38792
38793 qp_debug_util.tstop('Populate_Temp_Tables_NEQ_BTW_P2_L');
38794
38795 qp_debug_util.tstart('QP_EVALUATE_OTHER_OPERATORS_P2_L', 'QP_EVALUATE_OTHER_OPERATORS_P2_L');
38796
38797 QP_EVALUATE_OTHER_OPERATORS(
38798 p_pricing_phase_id ,
38799 G_STAGE_CACHE_MOD_LIN2,
38800 x_status_code ,
38801 x_status_text );
38802
38803 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
38804 RAISE E_ROUTINE_ERRORS;
38805 END IF;
38806
38807 qp_debug_util.tstop('QP_EVALUATE_OTHER_OPERATORS_P2_L');
38808
38809 IF qp_preq_grp.g_debug_engine = fnd_api.g_true THEN
38810 qp_debug_util.print_table_data_csv('QP_PREQ_PATRN_QUAL_TMP','SEL_MOD_QUAL_AFT_LIN_EVL_OTH_OPR_P2_'||p_pricing_phase_id);
38811 END IF;
38812
38813 IF qp_preq_grp.g_debug_engine = fnd_api.g_true THEN
38814 qp_preq_grp.engine_debug('Caching Header Qualifiers for satisfied Lines, pure Header quals, only prod, only prod-pric for phase : ' || p_pricing_phase_id);
38815 END IF;
38816
38817 qp_debug_util.tstart('PATRN_SELECT_MODIFIERS_DEL_HDR_PATH2', 'Line deletion');
38818
38819 UPDATE qp_preq_patrn_qual_tmp a
38820 SET pricing_status_code = G_DELETED_LINE
38821 WHERE pricing_phase_id = p_pricing_phase_id
38822 AND pricing_status_code = qp_preq_grp.g_status_unchanged
38823 AND list_line_id <> -1
38824 AND nvl(header_quals_exist_flag, 'N') = 'Y'
38825 AND NOT EXISTS
38826 (SELECT 'x'
38827 FROM qp_preq_patrn_qual_tmp b
38828 WHERE b.list_header_id = a.list_header_id
38829 AND b.list_line_id = -1
38830 AND b.pricing_phase_id = a.pricing_phase_id
38831 AND b.pricing_status_code = qp_preq_grp.g_status_unchanged
38832 AND b.line_index = a.line_index);
38833
38834 qp_debug_util.tstop('PATRN_SELECT_MODIFIERS_DEL_HDR_PATH2');*/
38835
38836 qp_debug_util.tstart('PATRN_SELECT_MODIFIERS_LIN_CACHE_CUR_PATH2', 'l_line_cache_path2_cur');
38837
38838 qp_preq_grp.engine_debug('path 2 phase : ' || p_pricing_phase_id);
38839
38840 OPEN l_line_cache_path2_cur(p_pricing_phase_id);
38841 LOOP
38842
38843 l_list_header_id_tbl.DELETE;
38844 l_list_line_id_tbl.DELETE;
38845 l_line_index_tbl.DELETE;
38846 l_matched_pattrn_id_tbl.DELETE;
38847 l_pricing_phase_id_tbl.DELETE;
38848 l_stage_tbl.DELETE;
38849 l_matched_hash_key_tbl.DELETE;
38850 l_pricing_status_code_tbl.DELETE;
38851 l_ssc.DELETE;
38852 l_header_quals_exist_flag.DELETE;
38853 l_grouping_no.DELETE;
38854 l_eq_flag.DELETE;
38855 l_modf_lvl_code.DELETE;
38856 l_other_oprt_count.DELETE;
38857 l_null_other_oprt_count.DELETE;
38858 l_list_type_code.DELETE;
38859 l_ask_for_flag.DELETE;
38860 l_hdr_lmt_exists.DELETE;
38861 l_line_lmt_exists.DELETE;
38862 l_descnt_quals_exist.DELETE;
38863 l_PRICE_BREAK_TYPE_CODE.DELETE;
38864
38865
38866 FETCH l_line_cache_path2_cur bulk collect
38867 INTO l_list_header_id_tbl,
38868 l_list_line_id_tbl,
38869 l_line_index_tbl,
38870 l_matched_pattrn_id_tbl,
38871 l_pricing_phase_id_tbl,
38872 l_matched_hash_key_tbl,
38873 l_stage_tbl,
38874 l_ssc,
38875 l_pricing_status_code_tbl,
38876 l_header_quals_exist_flag,
38877 l_grouping_no,
38878 l_eq_flag,
38879 l_modf_lvl_code,
38880 l_other_oprt_count,
38881 l_null_other_oprt_count,
38882 l_list_type_code,
38883 l_ask_for_flag,
38884 l_hdr_lmt_exists,
38885 l_line_lmt_exists,
38886 l_descnt_quals_exist,
38887 l_PRICE_BREAK_TYPE_CODE
38888 limit l_limit;
38889
38890 EXIT
38891 WHEN l_list_header_id_tbl.COUNT = 0;
38892
38893 FORALL i IN 1 .. l_list_header_id_tbl.COUNT
38894 INSERT INTO qp_preq_patrn_qual_tmp(list_header_id,
38895 list_line_id,
38896 line_index,
38897 matched_pattrn_id,
38898 pricing_phase_id,
38899 matched_hash_key,
38900 stage,
38901 pricing_status_code,
38902 source_system_code,
38903 header_quals_exist_flag,
38904 grouping_no,
38905 eq_flag,
38906 MODIFIER_LEVEL_CODE,
38907 other_oprt_count,
38908 null_other_oprt_count,
38909 LIST_TYPE_CODE,
38910 ASK_FOR_FLAG,
38911 HEADER_LIMIT_EXISTS,
38912 LINE_LIMIT_EXISTS,
38913 descendents_quals_exist,
38914 PRICE_BREAK_TYPE_CODE
38915 )
38916 VALUES(l_list_header_id_tbl(i),
38917 l_list_line_id_tbl(i),
38918 l_line_index_tbl(i),
38919 l_matched_pattrn_id_tbl(i),
38920 l_pricing_phase_id_tbl(i),
38921 l_matched_hash_key_tbl(i),
38922 l_stage_tbl(i),
38923 l_pricing_status_code_tbl(i),
38924 l_ssc(i),
38925 l_header_quals_exist_flag(i),
38926 l_grouping_no(i),
38927 l_eq_flag(i),
38928 l_modf_lvl_code(i),
38929 l_other_oprt_count(i),
38930 l_null_other_oprt_count(i),
38931 l_list_type_code(i),
38932 l_ask_for_flag(i),
38933 l_hdr_lmt_exists(i),
38934 l_line_lmt_exists(i),
38935 l_descnt_quals_exist(i),
38936 l_PRICE_BREAK_TYPE_CODE(i)
38937 );
38938
38939 --exit when l_header_cache_cur%rowcount < l_limit;
38940 END LOOP;
38941 CLOSE l_line_cache_path2_cur;
38942 qp_debug_util.tstop('PATRN_SELECT_MODIFIERS_LIN_CACHE_CUR_PATH2');
38943
38944 qp_debug_util.tstart('Populate_Temp_Tables_NEQ_BTW_P2_L', 'Populate_Temp_Tables_NEQ_BTW_P2_L');
38945
38946 Populate_Temp_Tables_NEQ_BTW(
38947 p_pricing_phase_id ,
38948 G_STAGE_CACHE_MOD_LIN ,
38949 x_status_code ,
38950 x_status_text );
38951
38952 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
38953 RAISE E_ROUTINE_ERRORS;
38954 END IF;
38955
38956 qp_debug_util.tstop('Populate_Temp_Tables_NEQ_BTW_P2_L');
38957
38958 qp_debug_util.tstart('QP_EVALUATE_OTHER_OPERATORS_P2_L', 'QP_EVALUATE_OTHER_OPERATORS_P2_L');
38959
38960 QP_EVALUATE_OTHER_OPERATORS(
38961 p_pricing_phase_id ,
38962 G_STAGE_CACHE_MOD_LIN,
38963 x_status_code ,
38964 x_status_text );
38965
38966 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
38967 RAISE E_ROUTINE_ERRORS;
38968 END IF;
38969
38970 qp_debug_util.tstop('QP_EVALUATE_OTHER_OPERATORS_P2_L');
38971
38972 IF qp_preq_grp.g_debug_engine = fnd_api.g_true THEN
38973 qp_preq_grp.engine_debug('Caching Header Qualifiers for satisfied Lines, pure Header quals, only prod, only prod-pric for phase : ' || p_pricing_phase_id);
38974 END IF;
38975
38976 /* Line Caching*/
38977
38978 qp_debug_util.tstart('PATRN_SELECT_MODIFIERS_HDR_CACHE_CUR_PATH2', 'l_hdr_cache_cur_path2');
38979
38980 OPEN l_hdr_cache_cur_path2(p_pricing_phase_id);
38981
38982 LOOP
38983
38984 l_list_header_id_tbl.DELETE;
38985 l_list_line_id_tbl.DELETE;
38986 l_line_index_tbl.DELETE;
38987 l_matched_pattrn_id_tbl.DELETE;
38988 l_pricing_phase_id_tbl.DELETE;
38989 l_stage_tbl.DELETE;
38990 l_matched_hash_key_tbl.DELETE;
38991 l_pricing_status_code_tbl.DELETE;
38992 l_ssc.DELETE;
38993 l_header_quals_exist_flag.DELETE;
38994 l_grouping_no.DELETE;
38995 l_eq_flag.DELETE;
38996 l_modf_lvl_code.DELETE;
38997 l_other_oprt_count.DELETE;
38998 l_null_other_oprt_count.DELETE;
38999 l_list_type_code.DELETE;
39000 l_ask_for_flag.DELETE;
39001 l_hdr_lmt_exists.DELETE;
39002 l_line_lmt_exists.DELETE;
39003 l_descnt_quals_exist.DELETE;
39004
39005 FETCH l_hdr_cache_cur_path2 bulk collect
39006 INTO l_list_header_id_tbl,
39007 l_list_line_id_tbl,
39008 l_line_index_tbl,
39009 l_matched_pattrn_id_tbl,
39010 l_pricing_phase_id_tbl,
39011 l_matched_hash_key_tbl,
39012 l_stage_tbl,
39013 l_ssc,
39014 l_pricing_status_code_tbl,
39015 l_header_quals_exist_flag,
39016 l_grouping_no,
39017 l_eq_flag,
39018 l_modf_lvl_code,
39019 l_other_oprt_count,
39020 l_null_other_oprt_count,
39021 l_list_type_code,
39022 l_ask_for_flag,
39023 l_hdr_lmt_exists,
39024 l_line_lmt_exists,
39025 l_descnt_quals_exist
39026 limit l_limit;
39027 --qp_preq_grp.engine_debug('l_list_header_id_tbl.count-' || l_list_header_id_tbl.COUNT);
39028
39029 EXIT
39030 WHEN l_list_header_id_tbl.COUNT = 0;
39031
39032 FORALL i IN 1 .. l_list_header_id_tbl.COUNT
39033 INSERT INTO qp_preq_patrn_qual_tmp(list_header_id,
39034 list_line_id,
39035 line_index,
39036 matched_pattrn_id,
39037 pricing_phase_id,
39038 matched_hash_key,
39039 stage,
39040 pricing_status_code,
39041 source_system_code,
39042 header_quals_exist_flag,
39043 grouping_no,
39044 eq_flag,
39045 MODIFIER_LEVEL_CODE,
39046 other_oprt_count,
39047 null_other_oprt_count,
39048 LIST_TYPE_CODE,
39049 ASK_FOR_FLAG,
39050 HEADER_LIMIT_EXISTS,
39051 LINE_LIMIT_EXISTS,
39052 descendents_quals_exist)
39053 VALUES(l_list_header_id_tbl(i),
39054 l_list_line_id_tbl(i),
39055 l_line_index_tbl(i),
39056 l_matched_pattrn_id_tbl(i),
39057 l_pricing_phase_id_tbl(i),
39058 l_matched_hash_key_tbl(i),
39059 l_stage_tbl(i),
39060 l_pricing_status_code_tbl(i),
39061 l_ssc(i),
39062 l_header_quals_exist_flag(i),
39063 l_grouping_no(i),
39064 l_eq_flag(i),
39065 l_modf_lvl_code(i),
39066 l_other_oprt_count(i),
39067 l_null_other_oprt_count(i),
39068 l_list_type_code(i),
39069 l_ask_for_flag(i),
39070 l_hdr_lmt_exists(i),
39071 l_line_lmt_exists(i),
39072 l_descnt_quals_exist(i));
39073
39074 --exit when l_line_cache_cur%rowcount < l_limit;
39075
39076 END LOOP;
39077 CLOSE l_hdr_cache_cur_path2;
39078
39079 qp_debug_util.tstop('PATRN_SELECT_MODIFIERS_HDR_CACHE_CUR_PATH2');
39080
39081 qp_debug_util.tstart('Populate_Temp_Tables_NEQ_BTW_P2_H', 'Populate_Temp_Tables_NEQ_BTW_P2_H');
39082
39083 Populate_Temp_Tables_NEQ_BTW(
39084 p_pricing_phase_id ,
39085 G_STAGE_CACHE_MOD_HDR ,
39086 x_status_code ,
39087 x_status_text );
39088
39089 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
39090 RAISE E_ROUTINE_ERRORS;
39091 END IF;
39092
39093
39094 qp_debug_util.tstop('Populate_Temp_Tables_NEQ_BTW_P2_H');
39095
39096 qp_debug_util.tstart('QP_EVALUATE_OTHER_OPERATORS_P2_H', 'QP_EVALUATE_OTHER_OPERATORS_P2_H');
39097
39098 QP_EVALUATE_OTHER_OPERATORS(
39099 p_pricing_phase_id ,
39100 G_STAGE_CACHE_MOD_HDR,
39101 x_status_code ,
39102 x_status_text );
39103 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
39104 RAISE E_ROUTINE_ERRORS;
39105 END IF;
39106
39107 qp_debug_util.tstop('QP_EVALUATE_OTHER_OPERATORS_P2_H');
39108
39109 qp_debug_util.tstart('PATRN_LIST_CUR_DEL_LIN_TCA', 'Line/Header deletion for TCA');
39110
39111 UPDATE qp_preq_patrn_qual_tmp a
39112 SET pricing_status_code = G_DELETED_TCA
39113 WHERE pricing_status_code = g_status_unchanged
39114 AND a.descendents_quals_exist = 'Y'
39115 and a.pricing_phase_id = p_pricing_phase_id
39116 and a.stage IN (G_STAGE_CACHE_MOD_HDR,G_STAGE_CACHE_MOD_LIN)
39117 AND EXISTS (
39118 SELECT 1
39119 FROM qp_qualifiers b, qp_npreq_line_attrs_tmp c
39120 WHERE b.list_header_id = a.list_header_id
39121 AND b.list_line_id = a.list_line_id
39122 AND (b.qualifier_grouping_no = a.grouping_no
39123 or
39124 b.qualifier_grouping_no = -1
39125 )
39126 AND b.qualify_hier_descendents_flag = 'N'
39127 AND c.segment_id = b.segment_id
39128 AND c.line_index = a.line_index
39129 AND c.derived_qualifier_flag = 'Y');
39130
39131
39132
39133 qp_debug_util.tstop('PATRN_LIST_CUR_DEL_LIN_TCA');
39134
39135 qp_debug_util.tstart('PATRN_SELECT_MODIFIERS_DEL_HDR_PATH2', 'Line deletion');
39136
39137 UPDATE qp_preq_patrn_qual_tmp a
39138 SET pricing_status_code = G_DELETED_LINE
39139 WHERE pricing_phase_id = p_pricing_phase_id
39140 AND pricing_status_code = qp_preq_grp.g_status_unchanged
39141 AND list_line_id <> -1
39142 AND nvl(header_quals_exist_flag, 'N') = 'Y'
39143 AND a.stage = G_STAGE_CACHE_MOD_LIN
39144 AND NOT EXISTS
39145 (SELECT 'x'
39146 FROM qp_preq_patrn_qual_tmp b
39147 WHERE b.list_header_id = a.list_header_id
39148 AND b.list_line_id = -1
39149 AND b.line_index = a.line_index
39150 AND b.pricing_phase_id = a.pricing_phase_id
39151 AND pricing_status_code = qp_preq_grp.g_status_unchanged
39152 AND b.stage = G_STAGE_CACHE_MOD_HDR);
39153
39154 qp_debug_util.tstop('PATRN_SELECT_MODIFIERS_DEL_HDR_PATH2');
39155
39156 END IF;
39157
39158
39159 qp_debug_util.tstart('PATRN_SELECT_MODIFIERS_UPD_EXCLUDER', 'Delete Excluder rows');
39160
39161 -- Delete Excluded Line Details Directly if the inner select returns an excluded row
39162
39163 UPDATE qp_preq_patrn_qual_tmp a
39164 SET pricing_status_code = G_DELETED_EXCLUDER
39165 WHERE pricing_phase_id = p_pricing_phase_id
39166 AND pricing_status_code = qp_preq_grp.g_status_unchanged
39167 AND EXISTS
39168 (SELECT
39169 /*+ ORDERED USE_NL(c) index(c qp_preq_line_attrs_tmp_N2) index(b QP_PRICING_ATTRIBUTES_N2) l_excl_cur */ 'x'
39170 FROM qp_pricing_attributes b,
39171 qp_npreq_line_attrs_tmp c
39172 WHERE b.list_line_id = a.list_line_id
39173 AND b.excluder_flag = qp_preq_grp.g_yes
39174 AND b.product_attribute_context = c.context
39175 AND b.product_attribute = c.attribute
39176 AND b.product_attr_value = c.value_from
39177 AND c.attribute_type = qp_preq_grp.g_product_type
39178 AND c.pricing_status_code = qp_preq_grp.g_status_unchanged
39179 AND c.line_index = a.line_index);
39180
39181 qp_debug_util.tstop('PATRN_SELECT_MODIFIERS_UPD_EXCLUDER');
39182
39183 qp_debug_util.tstart('PATRN_SELECT_MODIFIERS_POPULATE_PAT_TEMP_TABLES', 'Populate_Pat_Temp_Tables');
39184
39185 /*IF l_search_path = 1 THEN
39186
39187 Populate_Pat_Temp_Tables(p_pricing_phase_id,
39188 G_STAGE_CACHE_MOD_LIN,
39189 x_status_code,
39190 x_status_text);
39191 ELSE */
39192 /*Populate_Pat_Temp_Tables(p_pricing_phase_id,
39193 G_STAGE_CACHE_MOD_LIN,
39194 x_status_code,
39195 x_status_text);*/
39196
39197 Populate_Pat_Temp_Tables(p_pricing_phase_id,
39198 G_STAGE_CACHE_MOD_LIN,
39199 x_status_code,
39200 x_status_text);
39201
39202 --END IF;
39203 IF x_status_code <> FND_API.G_RET_STS_SUCCESS THEN
39204 RAISE E_ROUTINE_ERRORS;
39205 END IF;
39206
39207 qp_debug_util.tstop('PATRN_SELECT_MODIFIERS_POPULATE_PAT_TEMP_TABLES');
39208
39209
39210 IF qp_preq_grp.g_debug_engine = fnd_api.g_true THEN
39211 qp_preq_grp.engine_debug('x_status_code-' || x_status_code);
39212 qp_preq_grp.engine_debug('x_status_text-' || x_status_text);
39213 END IF;
39214
39215 EXCEPTION
39216 WHEN E_ROUTINE_ERRORS THEN
39217
39218 x_status_code := FND_API.G_RET_STS_ERROR;
39219 x_status_text := 'Expected Error in ' || l_routine || sqlerrm;
39220
39221 IF qp_preq_grp.g_debug_engine = fnd_api.g_true THEN
39222 qp_preq_grp.engine_debug(x_status_text);
39223 END IF;
39224
39225 IF l_header_cache_cur%ISOPEN THEN
39226 CLOSE l_header_cache_cur;
39227 END IF;
39228
39229 IF l_line_cache_cur%ISOPEN THEN
39230 CLOSE l_line_cache_cur;
39231 END IF;
39232
39233 IF l_line_cache_path2_cur%ISOPEN THEN
39234 CLOSE l_line_cache_path2_cur;
39235 END IF;
39236
39237 IF l_hdr_cache_cur_path2%ISOPEN THEN
39238 CLOSE l_hdr_cache_cur_path2;
39239 END IF;
39240
39241 /* IF l_both_cache_path2_cur%ISOPEN THEN
39242 CLOSE l_both_cache_path2_cur;
39243 END IF;*/
39244
39245 WHEN OTHERS THEN
39246
39247 IF qp_preq_grp.g_debug_engine = fnd_api.g_true THEN
39248 qp_preq_grp.engine_debug(l_routine || ' ' || sqlerrm);
39249 END IF;
39250
39251 IF l_header_cache_cur%ISOPEN THEN
39252 CLOSE l_header_cache_cur;
39253 END IF;
39254
39255 IF l_line_cache_cur%ISOPEN THEN
39256 CLOSE l_line_cache_cur;
39257 END IF;
39258
39259 IF l_line_cache_path2_cur%ISOPEN THEN
39260 CLOSE l_line_cache_path2_cur;
39261 END IF;
39262
39263 IF l_hdr_cache_cur_path2%ISOPEN THEN
39264 CLOSE l_hdr_cache_cur_path2;
39265 END IF;
39266
39267 /*IF l_both_cache_path2_cur%ISOPEN THEN
39268 CLOSE l_both_cache_path2_cur;
39269 END IF;*/
39270 x_status_code := fnd_api.g_ret_sts_error;
39271 x_status_text := 'Error in ' || l_routine || sqlerrm;
39272
39273 END Select_modifiers_patrn;
39274
39275
39276 PROCEDURE QP_EVALUATE_OTHER_OPERATORS
39277 (p_pricing_phase_id varchar2,
39278 p_stage varchar2,
39279 x_status_code OUT nocopy VARCHAR2,
39280 x_status_text OUT nocopy VARCHAR2) as
39281
39282 BEGIN
39283 IF qp_preq_grp.g_debug_engine = fnd_api.g_true THEN
39284 qp_preq_grp.engine_debug('Entering QP_EVALUATE_OTHER_OPERATORS');
39285 END IF;
39286
39287 UPDATE /*+ index(a qp_preq_patrn_qual_t_n3) */
39288 QP_PREQ_PATRN_QUAL_TMP a
39289 SET pricing_status_code = G_DEL_ATTR_NOT_SRCD_CMN_GRP
39290 WHERE pricing_status_code = QP_PREQ_GRP.G_STATUS_UNCHANGED
39291 AND eq_flag = 'N'
39292 AND stage = p_stage
39293 AND pricing_phase_id = p_pricing_phase_id
39294 AND null_other_oprt_count <> 0
39295 AND NOT EXISTS(
39296 SELECT /*+ index(b qp_preq_line_attrs_tmp_n10) */ 1
39297 FROM qp_npreq_line_attrs_tmp b
39298 WHERE b.line_index = a.line_index
39299 AND b.list_header_id = a.list_header_id
39300 AND b.list_line_id = a.list_line_id
39301 AND b.grouping_number = -1
39302 AND b.comparison_operator_type_code IN (G_OPERATOR_NOT_EQL,G_OPERATOR_BETWEEN)
39303 AND b.attribute_type IN (QP_PREQ_GRP.G_PRICING_TYPE,QP_PREQ_GRP.G_QUALIFIER_TYPE)
39304 AND b.pricing_status_code = p_stage
39305 AND b.pricing_phase_id = p_pricing_phase_id
39306 AND b.line_index > 0
39307 GROUP BY b.line_index,b.list_header_id,b.list_line_id
39308 HAVING COUNT(DISTINCT b.CONTEXT||b.ATTRIBUTE||b.SETUP_VALUE_FROM) = a.null_other_oprt_count);
39309
39310
39311 UPDATE /*+ index(a qp_preq_patrn_qual_t_n3) */
39312 QP_PREQ_PATRN_QUAL_TMP a
39313 SET pricing_status_code = G_DEL_ATTR_NOT_SRCD_GRP
39314 WHERE pricing_status_code = QP_PREQ_GRP.G_STATUS_UNCHANGED
39315 AND eq_flag = 'N'
39316 AND stage = p_stage
39317 AND pricing_phase_id = p_pricing_phase_id
39318 AND grouping_no <> -1
39319 AND other_oprt_count > 0
39320 AND NOT EXISTS(
39321 SELECT /*+ index(b qp_preq_line_attrs_tmp_n10) */ 1
39322 FROM qp_npreq_line_attrs_tmp b
39323 WHERE b.line_index = a.line_index
39324 AND b.list_header_id = a.list_header_id
39325 AND b.list_line_id = a.list_line_id
39326 AND b.grouping_number = a.grouping_no
39327 AND b.grouping_number <> -1
39328 AND b.comparison_operator_type_code IN (G_OPERATOR_NOT_EQL,G_OPERATOR_BETWEEN)
39329 AND b.attribute_type IN (QP_PREQ_GRP.G_QUALIFIER_TYPE)
39330 AND b.pricing_status_code = p_stage
39331 AND b.pricing_phase_id = p_pricing_phase_id
39332 AND b.line_index > 0
39333 GROUP BY b.line_index,b.list_header_id,b.list_line_id, b.grouping_number
39334 HAVING COUNT(DISTINCT b.CONTEXT||b.ATTRIBUTE||b.SETUP_VALUE_FROM) = a.other_oprt_count);
39335
39336
39337 UPDATE QP_PREQ_PATRN_QUAL_TMP
39338 SET pricing_status_code = G_DEL_OTHR_OPR_CMN_GRP
39339 WHERE pricing_status_code = QP_PREQ_GRP.G_STATUS_UNCHANGED
39340 AND stage = p_stage
39341 AND (line_index , list_header_id , list_line_id) IN
39342 (SELECT distinct a.line_index , a.list_header_id , a.list_line_id
39343 FROM qp_npreq_line_attrs_tmp a
39344 WHERE a.comparison_operator_type_code = G_OPERATOR_NOT_EQL
39345 AND a.attribute_type IN (QP_PREQ_GRP.G_PRICING_TYPE,QP_PREQ_GRP.G_QUALIFIER_TYPE)
39346 AND a.pricing_status_code = p_stage
39347 AND a.pricing_phase_id = p_pricing_phase_id
39348 AND a.line_index > 0
39349 AND a.grouping_number = -1
39350 AND NVL(a.setup_value_from,FND_API.G_MISS_CHAR) = a.value_from
39351 UNION ALL
39352 SELECT distinct a.line_index , a.list_header_id , a.list_line_id
39353 FROM qp_npreq_line_attrs_tmp a
39354 WHERE a.comparison_operator_type_code = G_OPERATOR_BETWEEN
39355 AND a.attribute_type IN (QP_PREQ_GRP.G_PRICING_TYPE,QP_PREQ_GRP.G_QUALIFIER_TYPE)
39356 AND a.pricing_status_code = p_stage
39357 AND a.pricing_phase_id = p_pricing_phase_id
39358 AND a.line_index > 0
39359 AND datatype in (QP_PREQ_GRP.G_DATE_X,QP_PREQ_GRP.G_DATE_Y,QP_PREQ_GRP.G_VARCHAR)
39360 --AND a.MODIFIER_LEVEL_CODE <> G_LINE_GROUP
39361 AND a.value_from NOT BETWEEN nvl(a.setup_value_from,a.value_from) and nvl(a.setup_value_to,a.value_from)
39362 AND a.grouping_number = -1
39363 UNION ALL
39364 SELECT distinct a.line_index , a.list_header_id , a.list_line_id
39365 FROM qp_npreq_line_attrs_tmp a
39366 WHERE a.comparison_operator_type_code = G_OPERATOR_BETWEEN
39367 AND a.attribute_type IN (QP_PREQ_GRP.G_PRICING_TYPE,QP_PREQ_GRP.G_QUALIFIER_TYPE)
39368 AND a.pricing_status_code = p_stage
39369 AND a.pricing_phase_id = p_pricing_phase_id
39370 AND a.line_index > 0
39371 AND datatype = QP_PREQ_GRP.G_NUMERIC
39372 --AND a.MODIFIER_LEVEL_CODE <> G_LINE_GROUP
39373 AND NOT (NVL(a.MODIFIER_LEVEL_CODE,FND_API.G_MISS_CHAR) = G_LINE_GROUP
39374 AND a.CONTEXT = G_PRIC_VOLUME_CONTEXT
39375 AND a.attribute in (G_QUANTITY_ATTRIBUTE,G_LINE_AMT_ATTRIBUTE))
39376 AND fnd_number.canonical_to_number(DECODE(datatype,QP_PREQ_GRP.G_NUMERIC,a.value_from,null))
39377 NOT BETWEEN nvl(fnd_number.canonical_to_number(a.setup_value_from),fnd_number.canonical_to_number(a.value_from))
39378 AND nvl(fnd_number.canonical_to_number(a.setup_value_to),fnd_number.canonical_to_number(a.value_from))
39379 AND a.grouping_number = -1);
39380
39381 UPDATE QP_PREQ_PATRN_QUAL_TMP
39382 SET pricing_status_code = G_DEL_OTHR_OPR_GRP
39383 WHERE pricing_status_code = QP_PREQ_GRP.G_STATUS_UNCHANGED
39384 AND stage = p_stage
39385 AND (line_index , list_header_id , list_line_id, grouping_no) IN
39386 (SELECT distinct a.line_index , a.list_header_id , a.list_line_id ,a.grouping_number grouping_no
39387 FROM qp_npreq_line_attrs_tmp a
39388 WHERE a.comparison_operator_type_code = G_OPERATOR_NOT_EQL
39389 AND a.attribute_type = QP_PREQ_GRP.G_QUALIFIER_TYPE
39390 AND a.pricing_status_code = p_stage
39391 AND a.pricing_phase_id = p_pricing_phase_id
39392 AND a.line_index > 0
39393 AND a.grouping_number <> -1
39394 AND NVL(a.setup_value_from,FND_API.G_MISS_CHAR) = a.value_from
39395 UNION ALL
39396 SELECT distinct a.line_index , a.list_header_id , a.list_line_id ,a.grouping_number grouping_no
39397 FROM qp_npreq_line_attrs_tmp a
39398 WHERE a.comparison_operator_type_code = G_OPERATOR_BETWEEN
39399 AND a.attribute_type = QP_PREQ_GRP.G_QUALIFIER_TYPE
39400 AND a.pricing_status_code = p_stage
39401 AND a.pricing_phase_id = p_pricing_phase_id
39402 AND a.line_index > 0
39403 AND datatype in (QP_PREQ_GRP.G_DATE_X,QP_PREQ_GRP.G_DATE_Y,QP_PREQ_GRP.G_VARCHAR)
39404 --AND a.MODIFIER_LEVEL_CODE <> G_LINE_GROUP
39405 AND a.value_from NOT BETWEEN nvl(a.setup_value_from,a.value_from) and nvl(a.setup_value_to,a.value_from)
39406 AND a.grouping_number <> -1
39407 UNION ALL
39408 SELECT distinct a.line_index , a.list_header_id , a.list_line_id ,a.grouping_number grouping_no
39409 FROM qp_npreq_line_attrs_tmp a
39410 WHERE a.comparison_operator_type_code = G_OPERATOR_BETWEEN
39411 AND a.attribute_type = QP_PREQ_GRP.G_QUALIFIER_TYPE
39412 AND a.pricing_status_code = p_stage
39413 AND a.pricing_phase_id = p_pricing_phase_id
39414 AND a.line_index > 0
39415 AND datatype = QP_PREQ_GRP.G_NUMERIC
39416 --AND a.MODIFIER_LEVEL_CODE <> G_LINE_GROUP
39417 AND NOT (NVL(a.MODIFIER_LEVEL_CODE,FND_API.G_MISS_CHAR) = G_LINE_GROUP
39418 AND a.CONTEXT = G_PRIC_VOLUME_CONTEXT
39419 AND a.attribute in (G_QUANTITY_ATTRIBUTE,G_LINE_AMT_ATTRIBUTE))
39420 AND fnd_number.canonical_to_number(DECODE(datatype,QP_PREQ_GRP.G_NUMERIC,a.value_from,null))
39421 NOT BETWEEN nvl(fnd_number.canonical_to_number(a.setup_value_from),fnd_number.canonical_to_number(a.value_from))
39422 AND nvl(fnd_number.canonical_to_number(a.setup_value_to),fnd_number.canonical_to_number(a.value_from))
39423 AND a.grouping_number <> -1);
39424
39425
39426 IF qp_preq_grp.g_debug_engine = fnd_api.g_true THEN
39427 qp_preq_grp.engine_debug('Number of rows deleted during NOT = and B/W operator evaluation for the non -1 groups-'||sql%rowcount);
39428 END IF;
39429
39430 EXCEPTION
39431
39432 WHEN OTHERS THEN
39433 x_status_code := FND_API.G_RET_STS_ERROR;
39434 x_status_text :='QP_EVALUATE_OTHER_OPERATORS '||SQLERRM;
39435 IF (qp_preq_grp.G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
39436 qp_preq_grp.engine_debug('QP_EVALUATE_OTHER_OPERATORS '||SQLERRM);
39437 END IF;
39438 END QP_EVALUATE_OTHER_OPERATORS;
39439
39440
39441
39442 PROCEDURE Populate_Pat_Temp_Tables(
39443 p_pricing_phase_id IN NUMBER,
39444 p_stage IN VARCHAR2,
39445 x_status_code OUT NOCOPY VARCHAR2,
39446 x_status_text OUT NOCOPY VARCHAR2)
39447 AS
39448
39449 l_satis_quals_opt VARCHAR2(1);
39450 l_routine VARCHAR2(240):='Routine : QP_PREQ_GRP.Populate_Pat_Temp_Tables';
39451 l_limit NUMBER := 5000;
39452
39453 l_count NUMBER := 0;
39454
39455 l_start_line_index NUMBER;
39456 l_end_line_index NUMBER;
39457
39458 l_cnt_iter NUMBER;
39459
39460 --G_CHUNK_SIZE
39461 BEGIN
39462
39463 IF qp_preq_grp.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
39464 qp_preq_grp.engine_debug('Entering ' || l_routine);
39465 qp_preq_grp.engine_debug('p_pricing_phase_id => '||p_pricing_phase_id);
39466 END IF;
39467
39468 l_cnt_iter := ((G_MAX_LINE_INDEX-G_MIN_LINE_INDEX)/G_CHUNK_SIZE)+1;
39469
39470 x_status_code := FND_API.G_RET_STS_SUCCESS;
39471
39472 /*
39473 Populating table qp_npreq_ldets_tmp with details of all selected modifier
39474 lines after Pattern matching.
39475 */
39476
39477 l_start_line_index := G_MIN_LINE_INDEX;
39478 l_end_line_index := G_MIN_LINE_INDEX+G_CHUNK_SIZE;
39479
39480 qp_debug_util.tstart('POPULATE_PAT_TEMP_TABLES_QR1','Populate_Pat_Temp_Tables inserting LDETS');
39481
39482 FOR i IN 1..l_cnt_iter
39483 LOOP
39484
39485 INSERT INTO qp_npreq_ldets_tmp
39486 (LINE_DETAIL_INDEX,
39487 LINE_DETAIL_TYPE_CODE,
39488 PRICE_BREAK_TYPE_CODE,
39489 LINE_INDEX,
39490 CREATED_FROM_LIST_HEADER_ID,
39491 CREATED_FROM_LIST_LINE_ID,
39492 CREATED_FROM_LIST_LINE_TYPE,
39493 CREATED_FROM_LIST_TYPE_CODE,
39494 CREATED_FROM_SQL,
39495 PRICING_GROUP_SEQUENCE,
39496 PRICING_PHASE_ID,
39497 OPERAND_CALCULATION_CODE,
39498 OPERAND_VALUE,
39499 NET_AMOUNT_FLAG,
39500 ASK_FOR_FLAG,
39501 PRICE_FORMULA_ID,
39502 PRICING_STATUS_CODE,
39503 PRICING_STATUS_TEXT,
39504 PRODUCT_PRECEDENCE,
39505 INCOMPATABILITY_GRP_CODE,
39506 PROCESSED_FLAG,
39507 APPLIED_FLAG,
39508 AUTOMATIC_FLAG,
39509 OVERRIDE_FLAG,
39510 PRIMARY_UOM_FLAG,
39511 MODIFIER_LEVEL_CODE,
39512 BENEFIT_QTY,
39513 BENEFIT_UOM_CODE,
39514 SERVICE_DURATION, -- service project
39515 SERVICE_PERIOD, -- service project
39516 LIST_LINE_NO,
39517 ACCRUAL_FLAG,
39518 ACCRUAL_CONVERSION_RATE,
39519 ESTIM_ACCRUAL_RATE,
39520 HEADER_LIMIT_EXISTS,
39521 LINE_LIMIT_EXISTS,
39522 PROCESS_CODE,
39523 CHARGE_TYPE_CODE,
39524 CHARGE_SUBTYPE_CODE,
39525 ACCUM_CONTEXT,
39526 ACCUM_ATTRIBUTE,
39527 ACCUM_ATTR_RUN_SRC_FLAG,
39528 CURRENCY_DETAIL_ID,
39529 CURRENCY_HEADER_ID,
39530 SELLING_ROUNDING_FACTOR,
39531 ORDER_CURRENCY,
39532 BASE_CURRENCY_CODE,
39533 BREAK_UOM_CODE,
39534 BREAK_UOM_CONTEXT,
39535 BREAK_UOM_ATTRIBUTE,
39536 PRICING_EFFECTIVE_DATE
39537 )
39538 SELECT
39539 QP_PREQ_GRP.GET_LINE_DETAIL_INDEX, --LINE_DETAIL_INDEX
39540 'NULL', --LINE_DETAIL_TYPE_CODE
39541 qplines.PRICE_BREAK_TYPE_CODE, -- PRICE_BREAK_TYPE_CODE
39542 qpatq.line_index, -- LINE_INDEX
39543 qpatq.list_header_id, -- CREATED_FROM_LIST_HEADER_ID
39544 qpatq.list_line_id, -- CREATED_FROM_LIST_LINE_ID
39545 qplines.list_line_type_code, -- CREATED_FROM_LIST_LINE_TYPE
39546 qpatq.list_type_code, -- CREATED_FROM_LIST_TYPE_CODE
39547 p_stage, -- CREATED_FROM_SQL
39548 --'CREATED_FROM_PATTERN', -- CREATED_FROM_SQL --Check it
39549 qplines.pricing_group_sequence, -- PRICING_GROUP_SEQUENCE
39550 p_pricing_phase_id, -- PRICING_PHASE_ID
39551 qplines.arithmetic_operator, -- OPERAND_CALCULATION_CODE
39552 qplines.operand, -- OPERAND_VALUE
39553 qplines.net_amount_flag, -- NET_AMOUNT_FLAG
39554 qpatq.ask_for_flag, -- ASK_FOR_FLAG
39555 qplines.price_by_formula_id, -- PRICE_FORMULA_ID
39556 G_STATUS_NEW,--qpatq.PRICING_STATUS_CODE, -- PRICING_STATUS_CODE
39557 qpatq.PRICING_STATUS_TEXT, -- PRICING_STATUS_TEXT
39558 qplines.product_precedence, -- PRODUCT_PRECEDENCE
39559 qplines.incompatibility_grp_code, -- INCOMPATABILITY_GRP_CODE
39560 QP_PREQ_GRP.G_NOT_PROCESSED, -- PROCESSED_FLAG
39561 qplines.automatic_flag, -- APPLIED_FLAG
39562 qplines.automatic_flag, -- AUTOMATIC_FLAG
39563 qplines.override_flag, -- OVERRIDE_FLAG
39564 qplines.primary_uom_flag, -- PRIMARY_UOM_FLAG
39565 qplines.modifier_level_code, -- MODIFIER_LEVEL_CODE
39566 qplines.benefit_qty, -- BENEFIT_QTY
39567 qplines.benefit_uom_code, -- BENEFIT_UOM_CODE
39568 qplines.service_duration, -- service project
39569 qplines.service_period, -- service project
39570 qplines.list_line_no, -- LIST_LINE_NO
39571 qplines.accrual_flag, -- ACCRUAL_FLAG
39572 qplines.accrual_conversion_rate, -- ACCRUAL_CONVERSION_RATE
39573 qplines.estim_accrual_rate, -- ESTIM_ACCRUAL_RATE
39574 --decode(qph.limit_exists_flag,'Y','Y',decode(qplines.limit_exists_flag,'Y','Y','N')), -- HEADER_LIMIT_EXISTS
39575 qpatq.HEADER_LIMIT_EXISTS, -- HEADER_LIMIT_EXISTS
39576 qplines.limit_exists_flag, -- LINE_LIMIT_EXISTS
39577 QP_PREQ_GRP.G_STATUS_NEW, -- PROCESS_CODE
39578 qplines.charge_type_code, -- CHARGE_TYPE_CODE
39579 qplines.charge_subtype_code, -- CHARGE_SUBTYPE_CODE
39580 qplines.accum_context, -- ACCUM_CONTEXT
39581 qplines.accum_attribute, -- ACCUM_ATTRIBUTE
39582 qplines.accum_attr_run_src_flag, -- ACCUM_ATTR_RUN_SRC_FLAG
39583 qpatq.CURRENCY_DETAIL_ID,
39584 qpatq.CURRENCY_HEADER_ID,
39585 qpatq.SELLING_ROUNDING_FACTOR,
39586 qpatq.ORDER_CURRENCY,
39587 qpatq.BASE_CURRENCY_CODE,
39588 qpatq.BREAK_UOM_CODE,
39589 qpatq.BREAK_UOM_CONTEXT,
39590 qpatq.BREAK_UOM_ATTRIBUTE,
39591 qpatq.PRICING_EFFECTIVE_DATE
39592 FROM
39593 (
39594 SELECT DISTINCT pricing_phase_id, line_index, list_header_id,
39595 list_line_id, pricing_status_code, PRICING_STATUS_TEXT,
39596 list_type_code, ask_for_flag, HEADER_LIMIT_EXISTS,
39597 CURRENCY_DETAIL_ID, CURRENCY_HEADER_ID, SELLING_ROUNDING_FACTOR,
39598 ORDER_CURRENCY, BASE_CURRENCY_CODE, BREAK_UOM_CODE,
39599 BREAK_UOM_CONTEXT, BREAK_UOM_ATTRIBUTE, PRICING_EFFECTIVE_DATE
39600 FROM QP_PREQ_PATRN_QUAL_TMP
39601 WHERE stage = p_stage
39602 AND pricing_phase_id = p_pricing_phase_id
39603 AND list_line_id <> -1
39604 AND pricing_status_code = G_STATUS_UNCHANGED
39605 AND line_index BETWEEN l_start_line_index AND l_end_line_index
39606 )qpatq,
39607 QP_LIST_LINES qplines
39608 WHERE qplines.list_line_id = qpatq.list_line_id;
39609
39610 l_start_line_index := l_end_line_index + 1;
39611 l_end_line_index := l_end_line_index + G_CHUNK_SIZE;
39612
39613 END LOOP;
39614
39615 qp_debug_util.tstop('POPULATE_PAT_TEMP_TABLES_QR1');
39616
39617
39618 IF qp_preq_grp.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
39619 qp_preq_grp.engine_debug('Successfully inserted data in table qp_npreq_ldets_tmp');
39620 END IF;
39621
39622 qp_debug_util.tstart('POPULATE_PAT_TEMP_TABLES_QR3','Populate_Pat_Temp_Tables Inserting line attrs temp');
39623
39624 /*
39625 Populating table qp_npreq_line_attrs_tmp with details of Pricing and Product
39626 Attributes for selected modifier lines.
39627 */
39628
39629 l_start_line_index := G_MIN_LINE_INDEX;
39630 l_end_line_index := G_MIN_LINE_INDEX+G_CHUNK_SIZE;
39631
39632 FOR i IN 1..l_cnt_iter
39633 LOOP
39634
39635 INSERT INTO qp_npreq_line_attrs_tmp(
39636 LINE_INDEX,
39637 LINE_DETAIL_INDEX,
39638 ATTRIBUTE_LEVEL,
39639 ATTRIBUTE_TYPE,
39640 LIST_HEADER_ID,
39641 LIST_LINE_ID,
39642 CONTEXT,
39643 ATTRIBUTE,
39644 VALUE_FROM,
39645 SETUP_VALUE_FROM,
39646 VALUE_TO,
39647 SETUP_VALUE_TO,
39648 GROUPING_NUMBER,
39649 COMPARISON_OPERATOR_TYPE_CODE,
39650 VALIDATED_FLAG,
39651 APPLIED_FLAG,
39652 PRICING_STATUS_CODE,
39653 PRICING_STATUS_TEXT,
39654 QUALIFIER_PRECEDENCE,
39655 DATATYPE,
39656 PRICING_ATTR_FLAG,
39657 QUALIFIER_TYPE,
39658 PRODUCT_UOM_CODE,
39659 EXCLUDER_FLAG,
39660 PRICING_PHASE_ID,
39661 INCOMPATABILITY_GRP_CODE,
39662 LINE_DETAIL_TYPE_CODE,
39663 MODIFIER_LEVEL_CODE,
39664 PRIMARY_UOM_FLAG,
39665 --SEGMENT_ID,
39666 derived_qualifier_flag
39667 )
39668 -- Product Attributes
39669 SELECT /*+ ORDERED index(qplaptr qp_preq_line_attrs_tmp_n8) */
39670 qpldets.LINE_INDEX, --LINE_INDEX
39671 qpldets.LINE_DETAIL_INDEX, --LINE_DETAIL_INDEX
39672 qplaptr.ATTRIBUTE_LEVEL, --ATTRIBUTE_LEVEL
39673 qplaptr.ATTRIBUTE_TYPE, --ATTRIBUTE_TYPE
39674 qpldets.CREATED_FROM_LIST_HEADER_ID, --LIST_HEADER_ID
39675 qpldets.CREATED_FROM_LIST_LINE_ID , --LIST_LINE_ID
39676 qppatr.PRODUCT_ATTRIBUTE_CONTEXT, --CONTEXT
39677 qppatr.PRODUCT_ATTRIBUTE, --ATTRIBUTE
39678 qplaptr.VALUE_FROM, --VALUE_FROM
39679 qppatr.PRODUCT_ATTR_VALUE,--SETUP_VALUE_FROM
39680 NULL,--VALUE_TO
39681 NULL,--SETUP_VALUE_TO
39682 -1,--GROUPING_NUMBER --bug 12731268
39683 qppatr.COMPARISON_OPERATOR_CODE,--COMPARISON_OPERATOR_TYPE_CODE
39684 qplaptr.VALIDATED_FLAG,--VALIDATED_FLAG
39685 qplaptr.APPLIED_FLAG,--APPLIED_FLAG
39686 G_STATUS_NEW,--qp_preq_grp.G_STATUS_UNCHANGED,--PRICING_STATUS_CODE --Check this attribute
39687 'Product Attribute',--PRICING_STATUS_TEXT --Check this attribute
39688 NULL,--QUALIFIER_PRECEDENCE
39689 qppatr.PRODUCT_ATTRIBUTE_DATATYPE,--DATATYPE
39690 qplaptr.PRICING_ATTR_FLAG,--PRICING_ATTR_FLAG
39691 'NO',--QUALIFIER_TYPE
39692 qppatr.PRODUCT_UOM_CODE, --PRODUCT_UOM_CODE
39693 qppatr.excluder_flag, --EXCLUDER_FLAG
39694 qpldets.pricing_phase_id, --PRICING_PHASE_ID
39695 qpldets.INCOMPATABILITY_GRP_CODE, --INCOMPATABILITY_GRP_CODE
39696 'NULL', --LINE_DETAIL_TYPE_CODE
39697 qpldets.MODIFIER_LEVEL_CODE, --MODIFIER_LEVEL_CODE
39698 qpldets.PRIMARY_UOM_FLAG, --PRIMARY_UOM_FLAG
39699 --qppatr.PRODUCT_SEGMENT_ID, --SEGMENT_ID
39700 qplaptr.derived_qualifier_flag
39701 FROM qp_npreq_ldets_tmp qpldets,
39702 QP_PRICING_ATTRIBUTES qppatr,
39703 qp_npreq_line_attrs_tmp qplaptr
39704 WHERE qpldets.pricing_phase_id = p_pricing_phase_id
39705 AND qpldets.line_index BETWEEN l_start_line_index AND l_end_line_index
39706 AND qpldets.CREATED_FROM_SQL = p_stage
39707 AND qppatr.list_line_id = qpldets.CREATED_FROM_LIST_LINE_ID
39708 AND qppatr.list_header_id = qpldets.CREATED_FROM_LIST_HEADER_ID --Could be removed
39709 AND qppatr.excluder_flag = 'N'
39710 AND qppatr.product_attribute_context is not null
39711 AND (qppatr.pricing_attribute_context = G_PRIC_VOLUME_CONTEXT or
39712 qppatr.pricing_attribute_context is null)
39713 AND qplaptr.LINE_INDEX = qpldets.LINE_INDEX
39714 AND qplaptr.segment_id = qppatr.PRODUCT_SEGMENT_ID
39715 AND qplaptr.attribute_type=G_PRODUCT_TYPE
39716 UNION
39717 -- Pricing Attributes
39718 SELECT /*+ ORDERED index(qplaptr qp_preq_line_attrs_tmp_n8) */
39719 qpldets.LINE_INDEX, --LINE_INDEX
39720 qpldets.LINE_DETAIL_INDEX, --LINE_DETAIL_INDEX
39721 qplaptr.ATTRIBUTE_LEVEL, --ATTRIBUTE_LEVEL
39722 qplaptr.ATTRIBUTE_TYPE, --ATTRIBUTE_TYPE
39723 qpldets.CREATED_FROM_LIST_HEADER_ID, --LIST_HEADER_ID
39724 qpldets.CREATED_FROM_LIST_LINE_ID, --LIST_LINE_ID
39725 qppatr.PRICING_ATTRIBUTE_CONTEXT, --CONTEXT
39726 qppatr.PRICING_ATTRIBUTE, --ATTRIBUTE
39727 qplaptr.VALUE_FROM, --VALUE_FROM
39728 qppatr.PRICING_ATTR_VALUE_FROM,--SETUP_VALUE_FROM
39729 qplaptr.VALUE_TO,--VALUE_TO
39730 qppatr.PRICING_ATTR_VALUE_TO,--SETUP_VALUE_TO
39731 -1,--GROUPING_NUMBER --bug 12731268
39732 qppatr.COMPARISON_OPERATOR_CODE,--COMPARISON_OPERATOR_TYPE_CODE
39733 qplaptr.VALIDATED_FLAG,--VALIDATED_FLAG
39734 qplaptr.APPLIED_FLAG,--APPLIED_FLAG
39735 G_STATUS_NEW,--QP_PREQ_GRP.G_STATUS_UNCHANGED,--PRICING_STATUS_CODE --Check this attribute
39736 'Pricing Attribute',--PRICING_STATUS_TEXT --Check this attribute
39737 NULL,--QUALIFIER_PRECEDENCE
39738 qppatr.PRICING_ATTRIBUTE_DATATYPE,--DATATYPE
39739 qplaptr.PRICING_ATTR_FLAG,--PRICING_ATTR_FLAG
39740 'NO',--QUALIFIER_TYPE
39741 qppatr.PRODUCT_UOM_CODE, --PRODUCT_UOM_CODE
39742 qppatr.excluder_flag, --EXCLUDER_FLAG
39743 qpldets.pricing_phase_id, --PRICING_PHASE_ID
39744 qpldets.INCOMPATABILITY_GRP_CODE, --INCOMPATABILITY_GRP_CODE
39745 'NULL', --LINE_DETAIL_TYPE_CODE
39746 qpldets.MODIFIER_LEVEL_CODE, --MODIFIER_LEVEL_CODE
39747 qpldets.PRIMARY_UOM_FLAG, --PRIMARY_UOM_FLAG
39748 --qppatr.PRICING_SEGMENT_ID, --SEGMENT_ID
39749 qplaptr.derived_qualifier_flag
39750 FROM qp_npreq_ldets_tmp qpldets,
39751 QP_PRICING_ATTRIBUTES qppatr,
39752 qp_npreq_line_attrs_tmp qplaptr
39753 WHERE qpldets.pricing_phase_id = p_pricing_phase_id
39754 AND qpldets.line_index BETWEEN l_start_line_index AND l_end_line_index
39755 AND qpldets.CREATED_FROM_SQL = p_stage
39756 AND qppatr.list_line_id = qpldets.CREATED_FROM_LIST_LINE_ID
39757 AND qppatr.list_header_id = qpldets.CREATED_FROM_LIST_HEADER_ID --Could be removed
39758 AND qppatr.excluder_flag = G_NO
39759 AND qppatr.pricing_attribute_context IS NOT NULL
39760 AND qplaptr.LINE_INDEX = qpldets.LINE_INDEX
39761 AND qplaptr.segment_id = qppatr.PRICING_SEGMENT_ID
39762 AND qplaptr.attribute_type=G_PRICING_TYPE;
39763
39764 l_start_line_index := l_end_line_index + 1;
39765 l_end_line_index := l_end_line_index + G_CHUNK_SIZE;
39766
39767 END LOOP;
39768
39769 qp_debug_util.tstop('POPULATE_PAT_TEMP_TABLES_QR3');
39770
39771 l_satis_quals_opt := nvl(fnd_profile.value('QP_SATIS_QUALS_OPT'), G_NO);
39772
39773 --[julin/pricebook] -- pat impact
39774 IF nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES THEN
39775 l_satis_quals_opt := G_NO;
39776 END IF;
39777
39778 IF qp_preq_grp.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
39779 qp_preq_grp.engine_debug('Successfully inserted data in table qp_npreq_line_attrs_tmp');
39780 qp_preq_grp.engine_debug('Profile value QP_SATIS_QUALS_OPT => '||l_satis_quals_opt);
39781 END IF;
39782
39783 /*
39784 Bug 10216430
39785
39786 Rows for all the selected header level qualifiers will be inserted in table
39787 qp_npreq_line_attrs_tmp in case of PL primary search, PL Secondary search and PL big search
39788 even if the profile QP_SATIS_QUALS_OPT is No. For modifiers same will be inserted only if the
39789 profile is YES.
39790
39791 This has been done to resolve an issue which was found during UT done for bug 10054913.
39792 The issue was that qualfier precedence of the associated header level qualfieirs with a PL
39793 were not being considered correctly during incombatibility check after PL big search.
39794 The PLs having no qualifiers were given higher precedence on the PLs having qualifiers which is
39795 contrary to the behaviour in existing engine.
39796
39797 It was haeppening because in pattern engine, rows for satisfied qualifier attributes were
39798 missing in table qp_npreq_line_attrs_tmp. So after this fix such rows will be inserted in
39799 this table but only in case of PL search. It has not been done for the modifiers because
39800 of the performance reasons.
39801 */
39802
39803 IF l_satis_quals_opt = G_YES
39804 OR p_stage NOT IN (G_STAGE_CACHE_MOD_LIN, G_STAGE_CACHE_MOD_LIN2) --Bug 10216430
39805 THEN
39806
39807 qp_debug_util.tstart('POPULATE_PAT_TEMP_TABLES_QR4','Insert Header Qualifiers in Attrs Table');
39808
39809 /*
39810 Populating table qp_npreq_line_attrs_tmp with details of header level
39811 Qualifier Attributes for selected qualifier groups of selected modifier lines.
39812 */
39813
39814 l_start_line_index := G_MIN_LINE_INDEX;
39815 l_end_line_index := G_MIN_LINE_INDEX+G_CHUNK_SIZE;
39816
39817 FOR i IN 1..l_cnt_iter
39818 LOOP
39819
39820 INSERT INTO qp_npreq_line_attrs_tmp(
39821 LINE_INDEX,
39822 LINE_DETAIL_INDEX,
39823 ATTRIBUTE_LEVEL,
39824 ATTRIBUTE_TYPE,
39825 LIST_HEADER_ID,
39826 LIST_LINE_ID,
39827 CONTEXT,
39828 ATTRIBUTE,
39829 VALUE_FROM,
39830 SETUP_VALUE_FROM,
39831 VALUE_TO,
39832 SETUP_VALUE_TO,
39833 GROUPING_NUMBER,
39834 COMPARISON_OPERATOR_TYPE_CODE,
39835 VALIDATED_FLAG,
39836 APPLIED_FLAG,
39837 PRICING_STATUS_CODE,
39838 PRICING_STATUS_TEXT,
39839 QUALIFIER_PRECEDENCE,
39840 DATATYPE,
39841 PRICING_ATTR_FLAG,
39842 QUALIFIER_TYPE,
39843 PRODUCT_UOM_CODE,
39844 EXCLUDER_FLAG,
39845 PRICING_PHASE_ID,
39846 INCOMPATABILITY_GRP_CODE,
39847 LINE_DETAIL_TYPE_CODE,
39848 MODIFIER_LEVEL_CODE,
39849 PRIMARY_UOM_FLAG,
39850 --SEGMENT_ID,
39851 derived_qualifier_flag
39852 )
39853 SELECT /*+ ORDERED index(qpq QP_QUALIFIERS_N1) index(qplines qp_preq_line_attrs_tmp_n8) index(qppatq QP_PREQ_PATRN_QUAL_T_N2) */
39854 qpldets.LINE_INDEX, --LINE_INDEX,
39855 qpldets.LINE_DETAIL_INDEX, -- LINE_DETAIL_INDEX,
39856 qplines.ATTRIBUTE_LEVEL, -- ATTRIBUTE_LEVEL,
39857 qplines.ATTRIBUTE_TYPE, -- ATTRIBUTE_TYPE,
39858 qpldets.CREATED_FROM_LIST_HEADER_ID, -- LIST_HEADER_ID,
39859 qpldets.CREATED_FROM_LIST_LINE_ID, --1, -- LIST_LINE_ID, --bug 10216430
39860 qpq.QUALIFIER_CONTEXT, -- CONTEXT,
39861 qpq.QUALIFIER_ATTRIBUTE,-- ATTRIBUTE,
39862 qplines.VALUE_FROM, -- VALUE_FROM,
39863 qpq.QUALIFIER_ATTR_VALUE, --SETUP_VALUE_FROM,
39864 qplines.VALUE_TO, -- VALUE_TO,
39865 qpq.QUALIFIER_ATTR_VALUE_TO, -- SETUP_VALUE_TO,
39866 qpq.QUALIFIER_GROUPING_NO, -- GROUPING_NUMBER,
39867 qpq.COMPARISON_OPERATOR_CODE, -- COMPARISON_OPERATOR_TYPE_CODE,
39868 qplines.VALIDATED_FLAG, -- VALIDATED_FLAG,
39869 qplines.APPLIED_FLAG, -- APPLIED_FLAG,
39870 G_STATUS_NEW,-- PRICING_STATUS_CODE,
39871 'QUALIFIERS', -- PRICING_STATUS_TEXT,
39872 qpq.QUALIFIER_PRECEDENCE, -- QUALIFIER_PRECEDENCE,
39873 qpq.QUALIFIER_DATATYPE, -- DATATYPE,
39874 QP_PREQ_GRP.G_NO, --PRICING_ATTR_FLAG,
39875 'HQ', -- QUALIFIER_TYPE,
39876 null,-- PRODUCT_UOM_CODE,
39877 qpq.EXCLUDER_FLAG, --EXCLUDER_FLAG,
39878 p_pricing_phase_id, -- PRICING_PHASE_ID,
39879 qpldets.INCOMPATABILITY_GRP_CODE, -- INCOMPATABILITY_GRP_CODE,
39880 qplines.LINE_DETAIL_TYPE_CODE, -- LINE_DETAIL_TYPE_CODE,
39881 qplines.MODIFIER_LEVEL_CODE, -- MODIFIER_LEVEL_CODE,
39882 qpldets.PRIMARY_UOM_FLAG, -- PRIMARY_UOM_FLAG
39883 --qpq.SEGMENT_ID,
39884 qplines.derived_qualifier_flag
39885 FROM
39886 qp_npreq_ldets_tmp qpldets,
39887 QP_PREQ_PATRN_QUAL_TMP qppatq,
39888 qp_qualifiers qpq,
39889 qp_npreq_line_attrs_tmp qplines
39890 WHERE
39891 qpldets.pricing_phase_id = p_pricing_phase_id
39892 AND qpldets.line_index BETWEEN l_start_line_index AND l_end_line_index
39893 AND qpldets.CREATED_FROM_SQL = p_stage
39894 AND qppatq.LINE_INDEX = qpldets.LINE_INDEX
39895 AND qppatq.LIST_HEADER_ID = qpldets.CREATED_FROM_LIST_HEADER_ID
39896 AND qppatq.list_line_id = -1
39897 AND qpq.LIST_HEADER_ID = qppatq.LIST_HEADER_ID
39898 AND qpq.list_line_id = -1
39899 AND qpq.QUALIFIER_GROUPING_NO = qppatq.GROUPING_NO
39900 AND qplines.SEGMENT_ID = qpq.SEGMENT_ID
39901 AND qplines.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
39902 AND qplines.LINE_INDEX = qppatq.LINE_INDEX
39903 UNION
39904 -- -1 qualifiers if other group exist
39905 SELECT /*+ ORDERED index(qpq QP_QUALIFIERS_N1) index(qplines qp_preq_line_attrs_tmp_n8) index(qppatq QP_PREQ_PATRN_QUAL_T_N2) */
39906 qpldets.LINE_INDEX, --LINE_INDEX,
39907 qpldets.LINE_DETAIL_INDEX, -- LINE_DETAIL_INDEX,
39908 qplines.ATTRIBUTE_LEVEL, -- ATTRIBUTE_LEVEL,
39909 qplines.ATTRIBUTE_TYPE, -- ATTRIBUTE_TYPE,
39910 qpldets.CREATED_FROM_LIST_HEADER_ID, -- LIST_HEADER_ID,
39911 qpldets.CREATED_FROM_LIST_LINE_ID, --1, -- LIST_LINE_ID, --bug 10216430
39912 qpq.QUALIFIER_CONTEXT, -- CONTEXT,
39913 qpq.QUALIFIER_ATTRIBUTE,-- ATTRIBUTE,
39914 qplines.VALUE_FROM, -- VALUE_FROM,
39915 qpq.QUALIFIER_ATTR_VALUE, --SETUP_VALUE_FROM,
39916 qplines.VALUE_TO, -- VALUE_TO,
39917 qpq.QUALIFIER_ATTR_VALUE_TO, -- SETUP_VALUE_TO,
39918 qpq.QUALIFIER_GROUPING_NO, -- GROUPING_NUMBER,
39919 qpq.COMPARISON_OPERATOR_CODE, -- COMPARISON_OPERATOR_TYPE_CODE,
39920 qplines.VALIDATED_FLAG, -- VALIDATED_FLAG,
39921 qplines.APPLIED_FLAG, -- APPLIED_FLAG,
39922 G_STATUS_NEW,-- PRICING_STATUS_CODE,
39923 'QUALIFIERS', -- PRICING_STATUS_TEXT,
39924 qpq.QUALIFIER_PRECEDENCE, -- QUALIFIER_PRECEDENCE,
39925 qpq.QUALIFIER_DATATYPE, -- DATATYPE,
39926 QP_PREQ_GRP.G_NO, --PRICING_ATTR_FLAG,
39927 'HQ', -- QUALIFIER_TYPE,
39928 null,-- PRODUCT_UOM_CODE,
39929 qpq.EXCLUDER_FLAG, --EXCLUDER_FLAG,
39930 p_pricing_phase_id, -- PRICING_PHASE_ID,
39931 qpldets.INCOMPATABILITY_GRP_CODE, -- INCOMPATABILITY_GRP_CODE,
39932 qplines.LINE_DETAIL_TYPE_CODE, -- LINE_DETAIL_TYPE_CODE,
39933 qplines.MODIFIER_LEVEL_CODE, -- MODIFIER_LEVEL_CODE,
39934 qpldets.PRIMARY_UOM_FLAG, -- PRIMARY_UOM_FLAG
39935 --qpq.SEGMENT_ID,
39936 qplines.derived_qualifier_flag
39937 FROM
39938 qp_npreq_ldets_tmp qpldets,
39939 QP_PREQ_PATRN_QUAL_TMP qppatq,
39940 qp_qualifiers qpq,
39941 qp_npreq_line_attrs_tmp qplines
39942 WHERE
39943 qpldets.pricing_phase_id = p_pricing_phase_id
39944 AND qpldets.line_index BETWEEN l_start_line_index AND l_end_line_index
39945 AND qpldets.CREATED_FROM_SQL = p_stage
39946 AND qppatq.LINE_INDEX = qpldets.LINE_INDEX
39947 AND qppatq.LIST_HEADER_ID = qpldets.CREATED_FROM_LIST_HEADER_ID
39948 AND qppatq.list_line_id = -1
39949 AND qpq.LIST_HEADER_ID = qppatq.LIST_HEADER_ID
39950 AND qpq.list_line_id = qppatq.list_line_id
39951 AND qpq.QUALIFIER_GROUPING_NO = -1
39952 --AND qppatq.null_other_oprt_count > 0 --Bug 10216430
39953 AND qppatq.GROUPING_NO <> -1
39954 AND qplines.SEGMENT_ID = qpq.SEGMENT_ID
39955 AND qplines.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
39956 AND qplines.LINE_INDEX = qppatq.LINE_INDEX;
39957
39958 l_start_line_index := l_end_line_index + 1;
39959 l_end_line_index := l_end_line_index + G_CHUNK_SIZE;
39960
39961 END LOOP;
39962
39963 qp_debug_util.tstop('POPULATE_PAT_TEMP_TABLES_QR4');
39964
39965 IF qp_preq_grp.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
39966 qp_preq_grp.engine_debug('Successfully inserted header level qualifiers in table qp_npreq_line_attrs_tmp');
39967 END IF;
39968
39969 IF p_stage IN (G_STAGE_CACHE_MOD_LIN, G_STAGE_CACHE_MOD_LIN2) THEN
39970
39971 qp_debug_util.tstart('POPULATE_PAT_TEMP_TABLES_QR5','Insert Line Qualifiers in Attrs Table');
39972
39973 /*
39974 Populating table qp_npreq_line_attrs_tmp with details of line level qualifier
39975 attributes for selected qualifier groups of selected modifier lines.
39976 */
39977
39978 l_start_line_index := G_MIN_LINE_INDEX;
39979 l_end_line_index := G_MIN_LINE_INDEX+G_CHUNK_SIZE;
39980
39981 FOR i IN 1..l_cnt_iter
39982 LOOP
39983
39984 INSERT INTO qp_npreq_line_attrs_tmp(
39985 LINE_INDEX,
39986 LINE_DETAIL_INDEX,
39987 ATTRIBUTE_LEVEL,
39988 ATTRIBUTE_TYPE,
39989 LIST_HEADER_ID,
39990 LIST_LINE_ID,
39991 CONTEXT,
39992 ATTRIBUTE,
39993 VALUE_FROM,
39994 SETUP_VALUE_FROM,
39995 VALUE_TO,
39996 SETUP_VALUE_TO,
39997 GROUPING_NUMBER,
39998 COMPARISON_OPERATOR_TYPE_CODE,
39999 VALIDATED_FLAG,
40000 APPLIED_FLAG,
40001 PRICING_STATUS_CODE,
40002 PRICING_STATUS_TEXT,
40003 QUALIFIER_PRECEDENCE,
40004 DATATYPE,
40005 PRICING_ATTR_FLAG,
40006 QUALIFIER_TYPE,
40007 PRODUCT_UOM_CODE,
40008 EXCLUDER_FLAG,
40009 PRICING_PHASE_ID,
40010 INCOMPATABILITY_GRP_CODE,
40011 LINE_DETAIL_TYPE_CODE,
40012 MODIFIER_LEVEL_CODE,
40013 PRIMARY_UOM_FLAG,
40014 --SEGMENT_ID,
40015 derived_qualifier_flag
40016 )
40017 SELECT /*+ ORDERED index(qpq QP_QUALIFIERS_N1) index(qplines qp_preq_line_attrs_tmp_n8) index(qppatq QP_PREQ_PATRN_QUAL_T_N2) */
40018 qpldets.LINE_INDEX, --LINE_INDEX,
40019 qpldets.LINE_DETAIL_INDEX, -- LINE_DETAIL_INDEX,
40020 qplines.ATTRIBUTE_LEVEL, -- ATTRIBUTE_LEVEL,
40021 qplines.ATTRIBUTE_TYPE, -- ATTRIBUTE_TYPE,
40022 qpldets.CREATED_FROM_LIST_HEADER_ID, -- LIST_HEADER_ID,
40023 qpldets.CREATED_FROM_LIST_LINE_ID, -- LIST_LINE_ID,
40024 qpq.QUALIFIER_CONTEXT, -- CONTEXT,
40025 qpq.QUALIFIER_ATTRIBUTE,-- ATTRIBUTE,
40026 qplines.VALUE_FROM, -- VALUE_FROM,
40027 qpq.QUALIFIER_ATTR_VALUE, --SETUP_VALUE_FROM,
40028 qplines.VALUE_TO, -- VALUE_TO,
40029 qpq.QUALIFIER_ATTR_VALUE_TO, -- SETUP_VALUE_TO,
40030 qpq.QUALIFIER_GROUPING_NO, -- GROUPING_NUMBER,
40031 qpq.COMPARISON_OPERATOR_CODE, -- COMPARISON_OPERATOR_TYPE_CODE,
40032 qplines.VALIDATED_FLAG, -- VALIDATED_FLAG,
40033 qplines.APPLIED_FLAG, -- APPLIED_FLAG,
40034 G_STATUS_NEW,-- PRICING_STATUS_CODE,
40035 'LINE QUALIFIERS', -- PRICING_STATUS_TEXT,
40036 qpq.QUALIFIER_PRECEDENCE, -- QUALIFIER_PRECEDENCE,
40037 qpq.QUALIFIER_DATATYPE, -- DATATYPE,
40038 QP_PREQ_GRP.G_NO, --PRICING_ATTR_FLAG,
40039 'LQ', -- QUALIFIER_TYPE,
40040 null,-- PRODUCT_UOM_CODE,
40041 qpq.EXCLUDER_FLAG, --EXCLUDER_FLAG,
40042 p_pricing_phase_id, -- PRICING_PHASE_ID,
40043 qpldets.INCOMPATABILITY_GRP_CODE, -- INCOMPATABILITY_GRP_CODE,
40044 qplines.LINE_DETAIL_TYPE_CODE, -- LINE_DETAIL_TYPE_CODE,
40045 qplines.MODIFIER_LEVEL_CODE, -- MODIFIER_LEVEL_CODE,
40046 qpldets.PRIMARY_UOM_FLAG, -- PRIMARY_UOM_FLAG
40047 --qpq.SEGMENT_ID,
40048 qplines.derived_qualifier_flag
40049 FROM
40050 qp_npreq_ldets_tmp qpldets,
40051 QP_PREQ_PATRN_QUAL_TMP qppatq,
40052 qp_qualifiers qpq,
40053 qp_npreq_line_attrs_tmp qplines
40054 WHERE
40055 qpldets.pricing_phase_id = p_pricing_phase_id
40056 AND qpldets.line_index BETWEEN l_start_line_index AND l_end_line_index
40057 AND qpldets.CREATED_FROM_SQL = p_stage
40058 AND qppatq.LINE_INDEX = qpldets.LINE_INDEX
40059 AND qppatq.LIST_HEADER_ID = qpldets.CREATED_FROM_LIST_HEADER_ID
40060 AND qppatq.list_line_id = qpldets.CREATED_FROM_LIST_LINE_ID
40061 AND qpq.LIST_HEADER_ID = qppatq.LIST_HEADER_ID
40062 AND qpq.list_line_id = qppatq.list_line_id
40063 AND qpq.QUALIFIER_GROUPING_NO = qppatq.GROUPING_NO
40064 AND qplines.SEGMENT_ID = qpq.SEGMENT_ID
40065 AND qplines.LINE_INDEX = qppatq.LINE_INDEX
40066 UNION all
40067 -- -1 qualifiers if other group exist
40068 SELECT /*+ ORDERED index(qpq QP_QUALIFIERS_N1) index(qplines qp_preq_line_attrs_tmp_n8) index(qppatq QP_PREQ_PATRN_QUAL_T_N2) */
40069 qpldets.LINE_INDEX, --LINE_INDEX,
40070 qpldets.LINE_DETAIL_INDEX, -- LINE_DETAIL_INDEX,
40071 qplines.ATTRIBUTE_LEVEL, -- ATTRIBUTE_LEVEL,
40072 qplines.ATTRIBUTE_TYPE, -- ATTRIBUTE_TYPE,
40073 qpldets.CREATED_FROM_LIST_HEADER_ID, -- LIST_HEADER_ID,
40074 qpldets.CREATED_FROM_LIST_LINE_ID, -- LIST_LINE_ID,
40075 qpq.QUALIFIER_CONTEXT, -- CONTEXT,
40076 qpq.QUALIFIER_ATTRIBUTE,-- ATTRIBUTE,
40077 qplines.VALUE_FROM, -- VALUE_FROM,
40078 qpq.QUALIFIER_ATTR_VALUE, --SETUP_VALUE_FROM,
40079 qplines.VALUE_TO, -- VALUE_TO,
40080 qpq.QUALIFIER_ATTR_VALUE_TO, -- SETUP_VALUE_TO,
40081 qpq.QUALIFIER_GROUPING_NO, -- GROUPING_NUMBER,
40082 qpq.COMPARISON_OPERATOR_CODE, -- COMPARISON_OPERATOR_TYPE_CODE,
40083 qplines.VALIDATED_FLAG, -- VALIDATED_FLAG,
40084 qplines.APPLIED_FLAG, -- APPLIED_FLAG,
40085 G_STATUS_NEW,-- PRICING_STATUS_CODE,
40086 'LINE QUALIFIERS', -- PRICING_STATUS_TEXT,
40087 qpq.QUALIFIER_PRECEDENCE, -- QUALIFIER_PRECEDENCE,
40088 qpq.QUALIFIER_DATATYPE, -- DATATYPE,
40089 QP_PREQ_GRP.G_NO, --PRICING_ATTR_FLAG,
40090 'LQ', -- QUALIFIER_TYPE,
40091 null,-- PRODUCT_UOM_CODE,
40092 qpq.EXCLUDER_FLAG, --EXCLUDER_FLAG,
40093 p_pricing_phase_id, -- PRICING_PHASE_ID,
40094 qpldets.INCOMPATABILITY_GRP_CODE, -- INCOMPATABILITY_GRP_CODE,
40095 qplines.LINE_DETAIL_TYPE_CODE, -- LINE_DETAIL_TYPE_CODE,
40096 qplines.MODIFIER_LEVEL_CODE, -- MODIFIER_LEVEL_CODE,
40097 qpldets.PRIMARY_UOM_FLAG, -- PRIMARY_UOM_FLAG
40098 --qpq.SEGMENT_ID,
40099 qplines.derived_qualifier_flag
40100 FROM
40101 qp_npreq_ldets_tmp qpldets,
40102 QP_PREQ_PATRN_QUAL_TMP qppatq,
40103 qp_qualifiers qpq,
40104 qp_npreq_line_attrs_tmp qplines
40105 WHERE
40106 qpldets.pricing_phase_id = p_pricing_phase_id
40107 AND qpldets.line_index BETWEEN l_start_line_index AND l_end_line_index
40108 AND qpldets.CREATED_FROM_SQL = p_stage
40109 AND qppatq.LINE_INDEX = qpldets.LINE_INDEX
40110 AND qppatq.LIST_HEADER_ID = qpldets.CREATED_FROM_LIST_HEADER_ID
40111 AND qppatq.list_line_id = qpldets.CREATED_FROM_LIST_LINE_ID
40112 AND qpq.LIST_HEADER_ID = qppatq.LIST_HEADER_ID
40113 AND qpq.list_line_id = qppatq.list_line_id
40114 AND qpq.QUALIFIER_GROUPING_NO = -1
40115 AND qppatq.null_other_oprt_count > 0
40116 AND qppatq.GROUPING_NO <> -1
40117 AND qplines.SEGMENT_ID = qpq.SEGMENT_ID
40118 AND qplines.LINE_INDEX = qppatq.LINE_INDEX;
40119
40120 l_start_line_index := l_end_line_index + 1;
40121 l_end_line_index := l_end_line_index + G_CHUNK_SIZE;
40122
40123 END LOOP;
40124
40125 qp_debug_util.tstop('POPULATE_PAT_TEMP_TABLES_QR5');
40126
40127 IF qp_preq_grp.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
40128 qp_preq_grp.engine_debug('Successfully inserted line level qualifiers in table qp_npreq_line_attrs_tmp');
40129 END IF;
40130
40131 END IF; -- IF p_stage IN (
40132 END IF;
40133
40134 -- Updating line quantity in ldets table for all the selected modifier lines
40135 -- and storing sourced value for the pricing volume attribute used in the line.
40136 -- Group of line modifiers will not be considered here. Line quantity will be
40137 -- updated later in evaluate_between procedure for them.
40138
40139 UPDATE qp_npreq_ldets_tmp a
40140 SET a.line_quantity = ( SELECT VALUE_FROM
40141 FROM qp_npreq_line_attrs_tmp b
40142 WHERE b.LINE_INDEX = a.LINE_INDEX
40143 AND b.LINE_DETAIL_INDEX = a.LINE_DETAIL_INDEX
40144 AND b.context = G_PRIC_VOLUME_CONTEXT
40145 AND b.attribute_type = G_PRICING_TYPE
40146 AND b.pricing_phase_id = p_pricing_phase_id
40147 AND b.datatype = G_NUMERIC
40148 AND b.pricing_status_code = G_STATUS_NEW)
40149 WHERE a.pricing_phase_id = p_pricing_phase_id
40150 AND a.CREATED_FROM_SQL = p_stage
40151 AND a.MODIFIER_LEVEL_CODE <> G_LINE_GROUP;
40152
40153 IF p_stage IN (G_STAGE_CACHE_SEC_PL_LIN_SRCH, G_STAGE_CACHE_SEC_PL_LIN_SRCH2) THEN
40154
40155 UPDATE qp_npreq_line_attrs_tmp a
40156 SET a.QUALIFIER_PRECEDENCE = (SELECT /*+ index(b qp_preq_patrn_qual_t_n2) */
40157 -- DISTINCT QUALIFIER_PRECEDENCE --bug 12731268
40158 MIN(QUALIFIER_PRECEDENCE) --Bug 10216430
40159 FROM QP_PREQ_PATRN_QUAL_TMP b
40160 WHERE b.LINE_INDEX = a.line_index
40161 AND b.list_header_id = a.list_header_id
40162 AND b.LIST_LINE_ID = a.LIST_LINE_ID
40163 AND b.stage = p_stage
40164 AND b.grouping_no = a.GROUPING_NUMBER --bug 12731268
40165 AND b.pricing_phase_id = p_pricing_phase_id
40166 AND b.pricing_status_code = G_STATUS_UNCHANGED)
40167 WHERE a.pricing_phase_id = p_pricing_phase_id
40168 AND a.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
40169 AND a.pricing_status_code = G_STATUS_NEW
40170 AND a.LINE_DETAIL_INDEX IS NOT NULL;
40171 END IF;
40172
40173 x_status_code := FND_API.G_RET_STS_SUCCESS;
40174
40175 IF qp_preq_grp.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
40176 qp_preq_grp.engine_debug('Exiting ' || l_routine);
40177 END IF;
40178
40179 EXCEPTION
40180 WHEN OTHERS THEN
40181 IF qp_preq_grp.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
40182 qp_preq_grp.engine_debug('Exception occured - '||sqlerrm);
40183 END IF;
40184 x_status_text := l_routine||' '||SQLERRM;
40185 x_status_code := FND_API.G_RET_STS_ERROR;
40186
40187 END Populate_Pat_Temp_Tables;
40188
40189 PROCEDURE Populate_Temp_Tables_NEQ_BTW(
40190 p_pricing_phase_id IN NUMBER,
40191 p_stage IN VARCHAR2,
40192 x_status_code OUT NOCOPY VARCHAR2,
40193 x_status_text OUT NOCOPY VARCHAR2)
40194 AS
40195
40196 l_routine VARCHAR2(240):='Routine : QP_PREQ_GRP.Populate_Temp_Tables_NEQ_BTW';
40197
40198 BEGIN
40199
40200 x_status_code := FND_API.G_RET_STS_SUCCESS;
40201
40202 IF qp_preq_grp.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
40203 qp_preq_grp.engine_debug('Entering ' || l_routine);
40204 qp_preq_grp.engine_debug('p_pricing_phase_id => '||p_pricing_phase_id);
40205 qp_preq_grp.engine_debug('p_stage => '||p_stage);
40206 END IF;
40207
40208 IF p_stage IN (G_STAGE_CACHE_MOD_LIN , G_STAGE_CACHE_MOD_LIN2) THEN
40209 /*
40210 Populating table qp_npreq_line_attrs_tmp with details of line level qualifier
40211 attributes having operator Between or Not = for all selected modifier line
40212 after line level pattern matching.
40213 */
40214 INSERT INTO qp_npreq_line_attrs_tmp(
40215 LINE_INDEX,
40216 LINE_DETAIL_INDEX,
40217 ATTRIBUTE_LEVEL,
40218 ATTRIBUTE_TYPE,
40219 LIST_HEADER_ID,
40220 LIST_LINE_ID,
40221 CONTEXT,
40222 ATTRIBUTE,
40223 VALUE_FROM,
40224 SETUP_VALUE_FROM,
40225 VALUE_TO,
40226 SETUP_VALUE_TO,
40227 GROUPING_NUMBER,
40228 COMPARISON_OPERATOR_TYPE_CODE,
40229 VALIDATED_FLAG,
40230 APPLIED_FLAG,
40231 PRICING_STATUS_CODE,
40232 PRICING_STATUS_TEXT,
40233 QUALIFIER_PRECEDENCE,
40234 DATATYPE,
40235 PRICING_ATTR_FLAG,
40236 QUALIFIER_TYPE,
40237 EXCLUDER_FLAG,
40238 PRICING_PHASE_ID,
40239 LINE_DETAIL_TYPE_CODE,
40240 MODIFIER_LEVEL_CODE,
40241 --SEGMENT_ID,
40242 derived_qualifier_flag
40243 )
40244 SELECT /*+ ORDERED index(qpq QP_QUALIFIERS_N1) index(qplines qp_preq_line_attrs_tmp_n8) index(qppatq QP_PREQ_PATRN_QUAL_T_N2) */
40245 qppatq.LINE_INDEX, --LINE_INDEX,
40246 NULL, -- LINE_DETAIL_INDEX,
40247 qplines.ATTRIBUTE_LEVEL, -- ATTRIBUTE_LEVEL,
40248 QP_PREQ_GRP.G_QUALIFIER_TYPE, -- ATTRIBUTE_TYPE,
40249 qppatq.LIST_HEADER_ID, -- LIST_HEADER_ID,
40250 qppatq.LIST_LINE_ID, -- LIST_LINE_ID,
40251 qpq.QUALIFIER_CONTEXT, -- CONTEXT,
40252 qpq.QUALIFIER_ATTRIBUTE,-- ATTRIBUTE,
40253 qplines.VALUE_FROM, -- VALUE_FROM,
40254 qpq.QUALIFIER_ATTR_VALUE, --SETUP_VALUE_FROM,
40255 qplines.VALUE_TO, -- VALUE_TO,
40256 qpq.QUALIFIER_ATTR_VALUE_TO, -- SETUP_VALUE_TO,
40257 qpq.QUALIFIER_GROUPING_NO, -- GROUPING_NUMBER,
40258 qpq.COMPARISON_OPERATOR_CODE, -- COMPARISON_OPERATOR_TYPE_CODE,
40259 qplines.VALIDATED_FLAG, -- VALIDATED_FLAG,
40260 qplines.APPLIED_FLAG, -- APPLIED_FLAG,
40261 p_stage,-- PRICING_STATUS_CODE,
40262 'LINE QUALIFIERS - OPR_BET_NEQ', -- PRICING_STATUS_TEXT,
40263 qpq.QUALIFIER_PRECEDENCE, -- QUALIFIER_PRECEDENCE,
40264 qpq.QUALIFIER_DATATYPE, -- DATATYPE,
40265 QP_PREQ_GRP.G_NO, --PRICING_ATTR_FLAG,
40266 'LQ', -- QUALIFIER_TYPE,
40267 qpq.EXCLUDER_FLAG, --EXCLUDER_FLAG,
40268 p_pricing_phase_id, -- PRICING_PHASE_ID,
40269 qplines.LINE_DETAIL_TYPE_CODE, -- LINE_DETAIL_TYPE_CODE,
40270 qppatq.MODIFIER_LEVEL_CODE, -- MODIFIER_LEVEL_CODE,
40271 --qplines.SEGMENT_ID,
40272 qplines.derived_qualifier_flag
40273 FROM
40274 QP_PREQ_PATRN_QUAL_TMP qppatq,
40275 qp_qualifiers qpq,
40276 qp_npreq_line_attrs_tmp qplines
40277 WHERE
40278 qppatq.pricing_phase_id = p_pricing_phase_id
40279 AND qppatq.stage = p_stage
40280 AND qpq.LIST_HEADER_ID = qppatq.LIST_HEADER_ID
40281 AND qppatq.list_line_id <> -1
40282 AND qpq.list_line_id = qppatq.list_line_id
40283 AND qpq.QUALIFIER_GROUPING_NO = qppatq.GROUPING_NO
40284 AND qpq.COMPARISON_OPERATOR_CODE IN (QP_PREQ_GRP.G_OPERATOR_BETWEEN, G_OPERATOR_NOT_EQL)
40285 AND qplines.SEGMENT_ID = qpq.SEGMENT_ID
40286 AND qplines.LINE_INDEX = qppatq.LINE_INDEX
40287 AND qppatq.eq_flag = G_NO
40288 AND ((nvl(qplines.DERIVED_QUALIFIER_FLAG,'N')='N')
40289 OR (qplines.DERIVED_QUALIFIER_FLAG = 'Y' AND QPQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
40290 UNION all
40291 -- -1 qualifiers if other group exist
40292 SELECT /*+ ORDERED index(qpq QP_QUALIFIERS_N1) index(qplines qp_preq_line_attrs_tmp_n8) index(qppatq QP_PREQ_PATRN_QUAL_T_N2) */
40293 qppatq.LINE_INDEX, --LINE_INDEX,
40294 null, -- LINE_DETAIL_INDEX,
40295 qplines.ATTRIBUTE_LEVEL, -- ATTRIBUTE_LEVEL,
40296 QP_PREQ_GRP.G_QUALIFIER_TYPE, -- ATTRIBUTE_TYPE,
40297 qppatq.LIST_HEADER_ID, -- LIST_HEADER_ID,
40298 qppatq.LIST_LINE_ID, -- LIST_LINE_ID,
40299 qpq.QUALIFIER_CONTEXT, -- CONTEXT,
40300 qpq.QUALIFIER_ATTRIBUTE,-- ATTRIBUTE,
40301 qplines.VALUE_FROM, -- VALUE_FROM,
40302 qpq.QUALIFIER_ATTR_VALUE, --SETUP_VALUE_FROM,
40303 qplines.VALUE_TO, -- VALUE_TO,
40304 qpq.QUALIFIER_ATTR_VALUE_TO, -- SETUP_VALUE_TO,
40305 qpq.QUALIFIER_GROUPING_NO, -- GROUPING_NUMBER,
40306 qpq.COMPARISON_OPERATOR_CODE, -- COMPARISON_OPERATOR_TYPE_CODE,
40307 qplines.VALIDATED_FLAG, -- VALIDATED_FLAG,
40308 qplines.APPLIED_FLAG, -- APPLIED_FLAG,
40309 p_stage,-- PRICING_STATUS_CODE,
40310 'LINE QUALIFIERS - OPR_BET_NEQ', -- PRICING_STATUS_TEXT,
40311 qpq.QUALIFIER_PRECEDENCE, -- QUALIFIER_PRECEDENCE,
40312 qpq.QUALIFIER_DATATYPE, -- DATATYPE,
40313 QP_PREQ_GRP.G_NO, --PRICING_ATTR_FLAG,
40314 'LQ', -- QUALIFIER_TYPE,
40315 qpq.EXCLUDER_FLAG, --EXCLUDER_FLAG,
40316 p_pricing_phase_id, -- PRICING_PHASE_ID,
40317 qplines.LINE_DETAIL_TYPE_CODE, -- LINE_DETAIL_TYPE_CODE,
40318 qppatq.MODIFIER_LEVEL_CODE, -- MODIFIER_LEVEL_CODE,
40319 --qplines.SEGMENT_ID,
40320 qplines.derived_qualifier_flag
40321 FROM
40322 QP_PREQ_PATRN_QUAL_TMP qppatq,
40323 qp_qualifiers qpq,
40324 qp_npreq_line_attrs_tmp qplines
40325 WHERE
40326 qppatq.pricing_phase_id = p_pricing_phase_id
40327 AND qppatq.stage = p_stage
40328 AND qpq.LIST_HEADER_ID = qppatq.LIST_HEADER_ID
40329 AND qppatq.list_line_id <> -1
40330 AND qpq.list_line_id = qppatq.list_line_id
40331 AND qpq.QUALIFIER_GROUPING_NO = -1
40332 AND qpq.COMPARISON_OPERATOR_CODE IN (QP_PREQ_GRP.G_OPERATOR_BETWEEN, G_OPERATOR_NOT_EQL)
40333 AND qppatq.null_other_oprt_count > 0
40334 AND qplines.SEGMENT_ID = qpq.SEGMENT_ID
40335 AND qplines.LINE_INDEX = qppatq.LINE_INDEX
40336 AND qppatq.eq_flag = G_NO
40337 AND ((nvl(qplines.DERIVED_QUALIFIER_FLAG,'N')='N')
40338 OR (qplines.DERIVED_QUALIFIER_FLAG = 'Y' AND QPQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')); -- Added for TCA
40339
40340 IF qp_preq_grp.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
40341 qp_preq_grp.engine_debug('Successfully inserted Line level BETWEEN , Not = Qualifiers Attributes in table qp_npreq_line_attrs_tmp');
40342 END IF;
40343
40344 END IF;
40345
40346 IF p_stage IN (G_STAGE_CACHE_MOD_LIN,
40347 G_STAGE_CACHE_PL_LIN,
40348 G_STAGE_CACHE_LST_HDR_LIN_SRCH,
40349 G_STAGE_CACHE_SEC_PL_LIN_SRCH,
40350 G_STAGE_CACHE_PL_LIN2,
40351 G_STAGE_CACHE_MOD_LIN2,
40352 G_STAGE_CACHE_SEC_PL_LIN_SRCH2
40353 ) THEN
40354
40355 /*
40356 Populating table qp_npreq_line_attrs_tmp with details of Pricing Attributes
40357 having operator Between or Not = for all selected modifier line after line
40358 level pattern matching.
40359 */
40360
40361 INSERT INTO qp_npreq_line_attrs_tmp(
40362 LINE_INDEX,
40363 LINE_DETAIL_INDEX,
40364 ATTRIBUTE_LEVEL,
40365 ATTRIBUTE_TYPE,
40366 LIST_HEADER_ID,
40367 LIST_LINE_ID,
40368 CONTEXT,
40369 ATTRIBUTE,
40370 VALUE_FROM,
40371 SETUP_VALUE_FROM,
40372 VALUE_TO,
40373 SETUP_VALUE_TO,
40374 GROUPING_NUMBER,
40375 COMPARISON_OPERATOR_TYPE_CODE,
40376 VALIDATED_FLAG,
40377 APPLIED_FLAG,
40378 PRICING_STATUS_CODE,
40379 PRICING_STATUS_TEXT,
40380 QUALIFIER_PRECEDENCE,
40381 DATATYPE,
40382 PRICING_ATTR_FLAG,
40383 QUALIFIER_TYPE,
40384 PRODUCT_UOM_CODE,
40385 EXCLUDER_FLAG,
40386 PRICING_PHASE_ID,
40387 INCOMPATABILITY_GRP_CODE,
40388 LINE_DETAIL_TYPE_CODE,
40389 MODIFIER_LEVEL_CODE,
40390 PRIMARY_UOM_FLAG,
40391 --SEGMENT_ID,
40392 derived_qualifier_flag
40393 )
40394 SELECT /*+ index(qplaptr qp_preq_line_attrs_tmp_n8) */
40395 qppat.LINE_INDEX, --LINE_INDEX
40396 NULL, --LINE_DETAIL_INDEX
40397 qplaptr.ATTRIBUTE_LEVEL, --ATTRIBUTE_LEVEL
40398 QP_PREQ_GRP.G_PRICING_TYPE, --ATTRIBUTE_TYPE
40399 qppat.list_header_id, --LIST_HEADER_ID
40400 qppat.list_line_id, --LIST_LINE_ID
40401 qppatr.PRICING_ATTRIBUTE_CONTEXT, --CONTEXT
40402 qppatr.PRICING_ATTRIBUTE, --ATTRIBUTE
40403 qplaptr.VALUE_FROM, --VALUE_FROM
40404 qppatr.PRICING_ATTR_VALUE_FROM,--SETUP_VALUE_FROM
40405 qplaptr.VALUE_TO,--VALUE_TO
40406 qppatr.PRICING_ATTR_VALUE_TO,--SETUP_VALUE_TO
40407 -1,--GROUPING_NUMBER
40408 qppatr.COMPARISON_OPERATOR_CODE,--COMPARISON_OPERATOR_TYPE_CODE
40409 qplaptr.VALIDATED_FLAG,--VALIDATED_FLAG
40410 qplaptr.APPLIED_FLAG,--APPLIED_FLAG
40411 p_stage,--QP_PREQ_GRP.G_STATUS_UNCHANGED,--PRICING_STATUS_CODE --Check this attribute
40412 'Pricing Attribute - OPR_BET_NEQ',--PRICING_STATUS_TEXT --Check this attribute
40413 NULL,--QUALIFIER_PRECEDENCE
40414 qppatr.PRICING_ATTRIBUTE_DATATYPE,--DATATYPE
40415 qplaptr.PRICING_ATTR_FLAG,--PRICING_ATTR_FLAG
40416 'NO',--QUALIFIER_TYPE
40417 NULL, --qplines.PRODUCT_UOM_CODE, --PRODUCT_UOM_CODE
40418 qppatr.excluder_flag, --EXCLUDER_FLAG
40419 qppat.pricing_phase_id, --PRICING_PHASE_ID
40420 NULL, --qplines.INCOMPATIBILITY_GRP_CODE, --INCOMPATABILITY_GRP_CODE
40421 'NULL', --LINE_DETAIL_TYPE_CODE
40422 qppat.MODIFIER_LEVEL_CODE, --MODIFIER_LEVEL_CODE
40423 NULL, --qplines.PRIMARY_UOM_FLAG, --PRIMARY_UOM_FLAG
40424 --qplaptr.SEGMENT_ID, --SEGMENT_ID
40425 qplaptr.derived_qualifier_flag
40426 FROM
40427 (
40428 SELECT DISTINCT pricing_phase_id, line_index, list_header_id, list_line_id,
40429 eq_flag, MODIFIER_LEVEL_CODE
40430 FROM QP_PREQ_PATRN_QUAL_TMP
40431 WHERE stage = p_stage
40432 )qppat,
40433 QP_PRICING_ATTRIBUTES qppatr,
40434 qp_npreq_line_attrs_tmp qplaptr
40435 WHERE qppat.pricing_phase_id = p_pricing_phase_id
40436 AND qppatr.list_line_id = qppat.list_line_id
40437 AND qppatr.excluder_flag = G_NO
40438 AND qppat.eq_flag = G_NO
40439 AND qppatr.pricing_attribute_context IS NOT NULL
40440 AND qppatr.COMPARISON_OPERATOR_CODE IN (QP_PREQ_GRP.G_OPERATOR_BETWEEN, G_OPERATOR_NOT_EQL)
40441 AND qplaptr.LINE_INDEX = qppat.LINE_INDEX
40442 AND qplaptr.segment_id = qppatr.PRICING_SEGMENT_ID
40443 AND qplaptr.attribute_type = G_PRICING_TYPE;
40444
40445 IF qp_preq_grp.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
40446 qp_preq_grp.engine_debug('Successfully inserted BETWEEN , Not = Pricing Attributes in table qp_npreq_line_attrs_tmp');
40447 END IF;
40448
40449 END if;
40450
40451 IF p_stage IN (G_STAGE_CACHE_MOD_HDR,
40452 G_STAGE_CACHE_LST_HDR_LIN_SRCH,
40453 G_STAGE_CACHE_SEC_PL_HDR_SRCH,
40454 G_STAGE_CACHE_PL_HDR,
40455 G_STAGE_CACHE_PL_LIN2,
40456 G_STAGE_CACHE_MOD_LIN2,
40457 G_STAGE_CACHE_SEC_PL_LIN_SRCH2) THEN
40458
40459 /*
40460 Populating table qp_npreq_line_attrs_tmp with details of header level qualifier
40461 attributes having operator Between or Not = for all selected modifier line after
40462 header level pattern matching.
40463 */
40464
40465 INSERT INTO qp_npreq_line_attrs_tmp(
40466 LINE_INDEX,
40467 LINE_DETAIL_INDEX,
40468 ATTRIBUTE_LEVEL,
40469 ATTRIBUTE_TYPE,
40470 LIST_HEADER_ID,
40471 LIST_LINE_ID,
40472 CONTEXT,
40473 ATTRIBUTE,
40474 VALUE_FROM,
40475 SETUP_VALUE_FROM,
40476 VALUE_TO,
40477 SETUP_VALUE_TO,
40478 GROUPING_NUMBER,
40479 COMPARISON_OPERATOR_TYPE_CODE,
40480 VALIDATED_FLAG,
40481 APPLIED_FLAG,
40482 PRICING_STATUS_CODE,
40483 PRICING_STATUS_TEXT,
40484 QUALIFIER_PRECEDENCE,
40485 DATATYPE,
40486 PRICING_ATTR_FLAG,
40487 QUALIFIER_TYPE,
40488 EXCLUDER_FLAG,
40489 PRICING_PHASE_ID,
40490 LINE_DETAIL_TYPE_CODE,
40491 MODIFIER_LEVEL_CODE,
40492 --SEGMENT_ID,
40493 derived_qualifier_flag
40494 )
40495 SELECT /*+ ORDERED index(qpq QP_QUALIFIERS_N1) index(qplines qp_preq_line_attrs_tmp_n8) index(qppatq QP_PREQ_PATRN_QUAL_T_N2) */
40496 qppatq.LINE_INDEX, --LINE_INDEX,
40497 NULL, -- LINE_DETAIL_INDEX,
40498 qplines.ATTRIBUTE_LEVEL, -- ATTRIBUTE_LEVEL,
40499 QP_PREQ_GRP.G_QUALIFIER_TYPE, -- ATTRIBUTE_TYPE,
40500 qppatq.LIST_HEADER_ID, -- LIST_HEADER_ID,
40501 qppatq.LIST_LINE_ID, -- LIST_LINE_ID,
40502 qpq.QUALIFIER_CONTEXT, -- CONTEXT,
40503 qpq.QUALIFIER_ATTRIBUTE,-- ATTRIBUTE,
40504 qplines.VALUE_FROM, -- VALUE_FROM,
40505 qpq.QUALIFIER_ATTR_VALUE, --SETUP_VALUE_FROM,
40506 qplines.VALUE_TO, -- VALUE_TO,
40507 qpq.QUALIFIER_ATTR_VALUE_TO, -- SETUP_VALUE_TO,
40508 qpq.QUALIFIER_GROUPING_NO, -- GROUPING_NUMBER,
40509 qpq.COMPARISON_OPERATOR_CODE, -- COMPARISON_OPERATOR_TYPE_CODE,
40510 qplines.VALIDATED_FLAG, -- VALIDATED_FLAG,
40511 qplines.APPLIED_FLAG, -- APPLIED_FLAG,
40512 p_stage,-- PRICING_STATUS_CODE,
40513 'HEADER QUALIFIERS - OPR_BET_NEQ', -- PRICING_STATUS_TEXT,
40514 qpq.QUALIFIER_PRECEDENCE, -- QUALIFIER_PRECEDENCE,
40515 qpq.QUALIFIER_DATATYPE, -- DATATYPE,
40516 QP_PREQ_GRP.G_NO, --PRICING_ATTR_FLAG,
40517 'HQ', -- QUALIFIER_TYPE,
40518 qpq.EXCLUDER_FLAG, --EXCLUDER_FLAG,
40519 p_pricing_phase_id, -- PRICING_PHASE_ID,
40520 qplines.LINE_DETAIL_TYPE_CODE, -- LINE_DETAIL_TYPE_CODE,
40521 qppatq.MODIFIER_LEVEL_CODE, -- MODIFIER_LEVEL_CODE,
40522 --qplines.SEGMENT_ID,
40523 qplines.derived_qualifier_flag
40524 FROM
40525 QP_PREQ_PATRN_QUAL_TMP qppatq,
40526 qp_qualifiers qpq,
40527 qp_npreq_line_attrs_tmp qplines
40528 WHERE
40529 qppatq.pricing_phase_id = p_pricing_phase_id
40530 AND qppatq.stage = p_stage
40531 AND qpq.LIST_HEADER_ID = qppatq.LIST_HEADER_ID
40532 AND qppatq.list_line_id = -1
40533 AND qpq.list_line_id = -1
40534 AND qpq.QUALIFIER_GROUPING_NO = qppatq.GROUPING_NO
40535 AND qpq.COMPARISON_OPERATOR_CODE IN (QP_PREQ_GRP.G_OPERATOR_BETWEEN, G_OPERATOR_NOT_EQL)
40536 AND qplines.SEGMENT_ID = qpq.SEGMENT_ID
40537 AND qplines.LINE_INDEX = qppatq.LINE_INDEX
40538 AND qppatq.eq_flag = G_NO
40539 AND ((nvl(qplines.DERIVED_QUALIFIER_FLAG,'N')='N')
40540 OR (qplines.DERIVED_QUALIFIER_FLAG = 'Y' AND QPQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
40541 UNION all
40542 -- -1 qualifiers if other group exist
40543 SELECT /*+ ORDERED index(qpq QP_QUALIFIERS_N1)
40544 index(qplines qp_preq_line_attrs_tmp_n8)
40545 index(qppatq QP_PREQ_PATRN_QUAL_T_N2) */
40546 DISTINCT qppatq.LINE_INDEX, --LINE_INDEX,
40547 null, -- LINE_DETAIL_INDEX,
40548 qplines.ATTRIBUTE_LEVEL, -- ATTRIBUTE_LEVEL,
40549 QP_PREQ_GRP.G_QUALIFIER_TYPE, -- ATTRIBUTE_TYPE,
40550 qppatq.LIST_HEADER_ID, -- LIST_HEADER_ID,
40551 qppatq.LIST_LINE_ID, -- LIST_LINE_ID,
40552 qpq.QUALIFIER_CONTEXT, -- CONTEXT,
40553 qpq.QUALIFIER_ATTRIBUTE,-- ATTRIBUTE,
40554 qplines.VALUE_FROM, -- VALUE_FROM,
40555 qpq.QUALIFIER_ATTR_VALUE, --SETUP_VALUE_FROM,
40556 qplines.VALUE_TO, -- VALUE_TO,
40557 qpq.QUALIFIER_ATTR_VALUE_TO, -- SETUP_VALUE_TO,
40558 qpq.QUALIFIER_GROUPING_NO, -- GROUPING_NUMBER,
40559 qpq.COMPARISON_OPERATOR_CODE, -- COMPARISON_OPERATOR_TYPE_CODE,
40560 qplines.VALIDATED_FLAG, -- VALIDATED_FLAG,
40561 qplines.APPLIED_FLAG, -- APPLIED_FLAG,
40562 p_stage,-- PRICING_STATUS_CODE,
40563 'HEADER QUALIFIERS - OPR_BET_NEQ', -- PRICING_STATUS_TEXT,
40564 qpq.QUALIFIER_PRECEDENCE, -- QUALIFIER_PRECEDENCE,
40565 qpq.QUALIFIER_DATATYPE, -- DATATYPE,
40566 QP_PREQ_GRP.G_NO, --PRICING_ATTR_FLAG,
40567 'HQ', -- QUALIFIER_TYPE,
40568 qpq.EXCLUDER_FLAG, --EXCLUDER_FLAG,
40569 p_pricing_phase_id, -- PRICING_PHASE_ID,
40570 qplines.LINE_DETAIL_TYPE_CODE, -- LINE_DETAIL_TYPE_CODE,
40571 qppatq.MODIFIER_LEVEL_CODE, -- MODIFIER_LEVEL_CODE,
40572 --qplines.SEGMENT_ID,
40573 qplines.derived_qualifier_flag
40574 FROM
40575 QP_PREQ_PATRN_QUAL_TMP qppatq,
40576 qp_qualifiers qpq,
40577 qp_npreq_line_attrs_tmp qplines
40578 WHERE
40579 qppatq.pricing_phase_id = p_pricing_phase_id
40580 AND qppatq.stage = p_stage
40581 AND qpq.LIST_HEADER_ID = qppatq.LIST_HEADER_ID
40582 AND qppatq.list_line_id = -1
40583 AND qpq.list_line_id = -1
40584 AND qpq.QUALIFIER_GROUPING_NO = -1
40585 AND qpq.COMPARISON_OPERATOR_CODE IN (QP_PREQ_GRP.G_OPERATOR_BETWEEN, G_OPERATOR_NOT_EQL)
40586 AND qppatq.null_other_oprt_count > 0
40587 AND qppatq.GROUPING_NO <> -1
40588 AND qplines.SEGMENT_ID = qpq.SEGMENT_ID
40589 AND qplines.LINE_INDEX = qppatq.LINE_INDEX
40590 AND qppatq.eq_flag = G_NO
40591 AND ((nvl(qplines.DERIVED_QUALIFIER_FLAG,'N')='N')
40592 OR (qplines.DERIVED_QUALIFIER_FLAG = 'Y' AND QPQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')); -- Added for TCA
40593
40594 IF qp_preq_grp.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
40595 qp_preq_grp.engine_debug('Successfully inserted Header level BETWEEN , Not = Qualifiers Attributes in table qp_npreq_line_attrs_tmp');
40596 END IF;
40597
40598 END IF;
40599
40600 IF qp_preq_grp.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
40601 qp_preq_grp.engine_debug('Exiting ' || l_routine);
40602 END IF;
40603
40604 EXCEPTION
40605 WHEN OTHERS THEN
40606 IF qp_preq_grp.G_DEBUG_ENGINE = FND_API.G_TRUE THEN
40607 qp_preq_grp.engine_debug('Exception occured - '||SQLERRM);
40608 END IF;
40609 x_status_text := l_routine||' '||SQLERRM;
40610 x_status_code := FND_API.G_RET_STS_ERROR;
40611 END Populate_Temp_Tables_NEQ_BTW;
40612
40613 -- End: KDURGASI changes for pattern based select modifiers
40614
40615 /*+------------------------------------------------------------
40616 |PROCEDURE PRICE_REQUEST
40617 +------------------------------------------------------------
40618 */
40619
40620 PROCEDURE PRICE_REQUEST
40621 (p_line_tbl IN LINE_TBL_TYPE,
40622 p_qual_tbl IN QUAL_TBL_TYPE,
40623 p_line_attr_tbl IN LINE_ATTR_TBL_TYPE,
40624 p_LINE_DETAIL_tbl IN LINE_DETAIL_TBL_TYPE,
40625 p_LINE_DETAIL_qual_tbl IN LINE_DETAIL_QUAL_TBL_TYPE,
40626 p_LINE_DETAIL_attr_tbl IN LINE_DETAIL_ATTR_TBL_TYPE,
40627 p_related_lines_tbl IN RELATED_LINES_TBL_TYPE,
40628 p_control_rec IN CONTROL_RECORD_TYPE,
40629 x_line_tbl OUT NOCOPY LINE_TBL_TYPE,
40630 x_line_qual OUT NOCOPY QUAL_TBL_TYPE,
40631 x_line_attr_tbl OUT NOCOPY LINE_ATTR_TBL_TYPE,
40632 x_line_detail_tbl OUT NOCOPY LINE_DETAIL_TBL_TYPE,
40633 x_line_detail_qual_tbl OUT NOCOPY LINE_DETAIL_QUAL_TBL_TYPE,
40634 x_line_detail_attr_tbl OUT NOCOPY LINE_DETAIL_ATTR_TBL_TYPE,
40635 x_related_lines_tbl OUT NOCOPY RELATED_LINES_TBL_TYPE,
40636 x_return_status OUT NOCOPY VARCHAR2,
40637 x_return_status_text OUT NOCOPY VARCHAR2
40638 ) AS
40639
40640
40641 l_line_tbl LINE_TBL_TYPE;
40642 l_line_qual QUAL_TBL_TYPE;
40643 l_line_attr_tbl LINE_ATTR_TBL_TYPE;
40644 l_line_detail_tbl LINE_DETAIL_TBL_TYPE;
40645 l_line_detail_qual_tbl LINE_DETAIL_QUAL_TBL_TYPE;
40646 l_line_detail_attr_tbl LINE_DETAIL_ATTR_TBL_TYPE;
40647 l_related_lines_tbl RELATED_LINES_TBL_TYPE;
40648 l_line_index PLS_INTEGER;
40649 x_list_line_id PLS_INTEGER;
40650 l_list_price NUMBER;
40651 l_list_line_id NUMBER;
40652 l_return_status VARCHAR2(240);
40653 l_pricing_phase_id PLS_INTEGER;
40654 l_line_quantity NUMBER;
40655 l_line_uom_code VARCHAR2(30);
40656 l_priced_quantity NUMBER;
40657 l_priced_uom_code VARCHAR2(30);
40658 l_GSA_Enabled_Flag VARCHAR2(1);
40659 l_GSA_Qualifier_Flag VARCHAR2(1);
40660 l_incompat_resolve_code VARCHAR2(30);
40661 l_GSA_Max_Discount_Enabled CONSTANT VARCHAR2(30) := 'QP_VERIFY_GSA';
40662 l_status_text VARCHAR2(240);
40663 l_further_search VARCHAR2(1) := 'N';
40664 l_dummy VARCHAR2(30);
40665 l_routine VARCHAR2(30);
40666 l_pricing_effective_date DATE;
40667 l_volume_attribute VARCHAR2(30);
40668 l_bypass_pricing VARCHAR2(30);
40669 I PLS_INTEGER;
40670 l_FIXED_PRICE CONSTANT NUMBER := 11.99;
40671 l_pricelist_phase_count PLS_INTEGER:=0;
40672 l_discount_phase_count PLS_INTEGER:=0;
40673 l_disc_exist_flag VARCHAR2(1) := 'N';
40674 l_rounding_flag VARCHAR2(1):=NULL;
40675 l_rounding_factor PLS_INTEGER:=0;
40676 l_rare_phase_id PLS_INTEGER:=5;
40677 l_exec_flag VARCHAR2(3):=G_YES;
40678 l_pricing_status_code VARCHAR2(30);
40679 l_pricing_phase NUMBER;
40680 l_price_phase_flag BOOLEAN;
40681 l_freeze_override_flag VARCHAR2(3);
40682 l_output_file VARCHAR2(240);
40683 v_debug_switch CONSTANT VARCHAR2(30) := 'QP_DEBUG';
40684 v_om_debug_switch CONSTANT VARCHAR2(30) := 'ONT_DEBUG_LEVEL';
40685 l_max_line_detail_index PLS_INTEGER;
40686 l_price_flag_indx NUMBER;
40687 l_price_flag_yes_only VARCHAR2(1);
40688 l_header_limit_exists VARCHAR2(1);
40689 l_line_limit_exists VARCHAR2(1);
40690 v_order_amount NUMBER;
40691 l_pricing_start_time NUMBER;
40692 l_pricing_end_time NUMBER;
40693 l_time_difference NUMBER;
40694 l_pricing_start_redo NUMBER;
40695 l_pricing_end_redo NUMBER;
40696 l_redo_difference NUMBER;
40697 l_prev_pricing_phase_id NUMBER := -9999;
40698 l_error_status_code VARCHAR2(30);
40699 l_error_status_text VARCHAR2(240);
40700 l_time_stats VARCHAR2(240);
40701 l_formula_processing VARCHAR2(1) := 'N'; --8892565
40702
40703 -- Essilor Fix bug 2789138
40704 L_MANUAL_ADJUSTMENTS_CALL_FLAG VARCHAR2(1) := 'N';
40705 L_RETURN_MANUAL_DISCOUNT VARCHAR2(1) := nvl(FND_PROFILE.VALUE('QP_RETURN_MANUAL_DISCOUNTS'),'N');
40706
40707 E_SEARCH_FLAG_IS_NULL EXCEPTION;
40708 E_INVALID_CONTROL_RECORD EXCEPTION;
40709 E_ROUTINE_ERRORS EXCEPTION;
40710 E_INVALID_PHASE EXCEPTION;
40711 E_NO_SOURCE_SYSTEM EXCEPTION;
40712 E_DEBUG_ROUTINE_ERROR EXCEPTION;
40713
40714 l_gone_in_phase_cur_loop varchar2(1); -- bug 3963888
40715 /*
40716 INDX,QP_PREQ_GRP.price_request.l_phase_cur,QP_EVENT_PHASES_U1,PRICING_EVENT_CODE,1
40717
40718 INDX,QP_PREQ_GRP.price_request.l_phase_cur,QP_PRICING_PHASES_U1,PRICING_PHASE_ID,1
40719 */
40720 --ignore_pricing start smbalara 8203956
40721 l_line_index_tbl QP_PREQ_GRP.NUMBER_TYPE;
40722 l_price_list_header_id_tbl QP_PREQ_GRP.NUMBER_TYPE;
40723 l_line_quantity_tbl QP_PREQ_GRP.NUMBER_TYPE;
40724 l_line_uom_code_tbl QP_PREQ_GRP.VARCHAR_TYPE;
40725
40726 CURSOR IGNORE_PRICE_LINES_CUR IS
40727 SELECT LINE_TMP.LINE_INDEX L_INDEX,
40728 ATTRS_TMP1.VALUE_FROM PRICE_LIST_HEADER_ID,
40729 LINE_TMP.LINE_QUANTITY LINE_QUANTITY,
40730 LINE_TMP.LINE_UOM_CODE LINE_UOM_CODE
40731 FROM QP_NPREQ_LINES_TMP LINE_TMP ,
40732 QP_NPREQ_LINE_ATTRS_TMP ATTRS_TMP,
40733 QP_NPREQ_LINE_ATTRS_TMP ATTRS_TMP1
40734 WHERE LINE_TMP.LINE_INDEX=ATTRS_TMP.LINE_INDEX
40735 AND LINE_TMP.LINE_INDEX=ATTRS_TMP1.LINE_INDEX
40736 AND ATTRS_TMP.CONTEXT = G_LIST_HEADER_CONTEXT
40737 AND ATTRS_TMP.ATTRIBUTE = G_IGN_PRIC_ATTRIBUTE
40738 AND ATTRS_TMP.VALUE_FROM = G_YES
40739 --AND LINE_TMP.PRICE_FLAG='N'
40740 AND ATTRS_TMP1.LINE_INDEX=ATTRS_TMP.LINE_INDEX
40741 AND ATTRS_TMP1.CONTEXT = G_LIST_HEADER_CONTEXT
40742 AND ATTRS_TMP1.ATTRIBUTE = G_DEF_PL_HDR_ID_ATTRIBUTE ;
40743 --ignore_pricing end smbalara
40744
40745 -- Essilor Fix bug 2789138
40746 --[julin/4865213] merged unions, plan unaffected
40747 CURSOR l_phase_cur(l_event_code VARCHAR2,
40748 l_event_code1 VARCHAR2) IS
40749 SELECT QPP.PRICING_PHASE_ID,
40750 QPP.LIST_TYPE_CODE,
40751 nvl(QPEP.USER_SEARCH_FLAG,QPEP.SEARCH_FLAG) SEARCH_FLAG,
40752 nvl(QPP.USER_INCOMPAT_RESOLVE_CODE,QPP.INCOMPAT_RESOLVE_CODE) INCOMPAT_RESOLVE_CODE,
40753 QPP.PHASE_SEQUENCE,
40754 nvl(QPP.USER_FREEZE_OVERRIDE_FLAG,QPP.FREEZE_OVERRIDE_FLAG) FREEZE_OVERRIDE_FLAG,
40755 QPP.NAME,
40756 --QPEP.PRICING_EVENT_CODE
40757 nvl(QPEP.pattern_search_path,nvl(QPP.pattern_search_path,G_PAT_SEARCH_PATH)) pattern_search_path,
40758 DECODE(nvl(QPEP.pattern_search_path,nvl(QPP.pattern_search_path,G_PAT_SEARCH_PATH)),1,'Search Headers First','Search Lines First') pattern_search_path_desc
40759 FROM QP_PRICING_PHASES QPP, QP_EVENT_PHASES QPEP
40760 WHERE ((L_MANUAL_ADJUSTMENTS_CALL_FLAG IS NULL)
40761 OR
40762 (L_MANUAL_ADJUSTMENTS_CALL_FLAG = 'N' AND
40763 NVL(QPP.MANUAL_MODIFIER_FLAG,'B') in ('A', 'B'))
40764 OR
40765 (L_MANUAL_ADJUSTMENTS_CALL_FLAG = 'Y' AND
40766 (L_RETURN_MANUAL_DISCOUNT = 'N' AND
40767 NVL(QPP.MANUAL_MODIFIER_FLAG,'B') in ('M', 'B'))
40768 OR
40769 (L_RETURN_MANUAL_DISCOUNT = 'Y')
40770 )
40771 )
40772 AND QPEP.PRICING_EVENT_CODE IN
40773 (SELECT decode(rownum
40774 ,1 ,substr(l_event_code,1,instr(l_event_code1,',',1,1)-1)
40775 ,2 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40776 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40777 ,3 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40778 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40779 ,4 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40780 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40781 ,5 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40782 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40783 ,6 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40784 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1)))
40785 FROM qp_event_phases
40786 WHERE rownum < 7)
40787 AND trunc(sysdate) between trunc(nvl(QPEP.START_DATE_ACTIVE,sysdate))
40788 and trunc(nvl(QPEP.END_DATE_ACTIVE,sysdate))
40789 AND QPP.PRICING_PHASE_ID = QPEP.PRICING_PHASE_ID
40790 -- if p_control_rec.get_freight_flag is 'Y' then select phases from qp_pricing_phases table freight_exists column has value 'Y'
40791 AND ((nvl(p_control_rec.get_freight_flag, G_NO) = G_YES AND QPP.freight_exists = G_YES) OR
40792 (nvl(p_control_rec.get_freight_flag, G_NO) = G_NO))
40793 ORDER BY 5,3 DESC;
40794
40795 /*
40796 UNION
40797 SELECT QPP.PRICING_PHASE_ID,
40798 QPP.LIST_TYPE_CODE,
40799 nvl(QPEP.USER_SEARCH_FLAG,QPEP.SEARCH_FLAG) SEARCH_FLAG,
40800 nvl(QPP.USER_INCOMPAT_RESOLVE_CODE,QPP.INCOMPAT_RESOLVE_CODE) INCOMPAT_RESOLVE_CODE,
40801 QPP.PHASE_SEQUENCE,
40802 nvl(QPP.USER_FREEZE_OVERRIDE_FLAG,QPP.FREEZE_OVERRIDE_FLAG) FREEZE_OVERRIDE_FLAG
40803 --QPEP.PRICING_EVENT_CODE
40804 FROM QP_PRICING_PHASES QPP, QP_EVENT_PHASES QPEP
40805 WHERE L_MANUAL_ADJUSTMENTS_CALL_FLAG = 'N'
40806 AND NVL(QPP.MANUAL_MODIFIER_FLAG,'B') in ('A', 'B')
40807 AND QPEP.PRICING_EVENT_CODE IN
40808 (SELECT decode(rownum
40809 ,1 ,substr(l_event_code,1,instr(l_event_code1,',',1,1)-1)
40810 ,2 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40811 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40812 ,3 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40813 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40814 ,4 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40815 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40816 ,5 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40817 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40818 ,6 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40819 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1)))
40820 FROM qp_event_phases
40821 WHERE rownum < 7)
40822 AND trunc(sysdate) between trunc(nvl(QPEP.START_DATE_ACTIVE,sysdate))
40823 and trunc(nvl(QPEP.END_DATE_ACTIVE,sysdate))
40824 AND QPP.PRICING_PHASE_ID = QPEP.PRICING_PHASE_ID
40825 -- if p_control_rec.get_freight_flag is 'Y' then select phases from qp_pricing_phases table freight_exists column has value 'Y'
40826 AND ((nvl(p_control_rec.get_freight_flag, G_NO) = G_YES AND QPP.freight_exists = G_YES) OR
40827 (nvl(p_control_rec.get_freight_flag, G_NO) = G_NO))
40828 UNION
40829 SELECT QPP.PRICING_PHASE_ID,
40830 QPP.LIST_TYPE_CODE,
40831 nvl(QPEP.USER_SEARCH_FLAG,QPEP.SEARCH_FLAG) SEARCH_FLAG,
40832 nvl(QPP.USER_INCOMPAT_RESOLVE_CODE,QPP.INCOMPAT_RESOLVE_CODE) INCOMPAT_RESOLVE_CODE,
40833 QPP.PHASE_SEQUENCE,
40834 nvl(QPP.USER_FREEZE_OVERRIDE_FLAG,QPP.FREEZE_OVERRIDE_FLAG) FREEZE_OVERRIDE_FLAG
40835 --QPEP.PRICING_EVENT_CODE
40836 FROM QP_PRICING_PHASES QPP, QP_EVENT_PHASES QPEP
40837 WHERE L_MANUAL_ADJUSTMENTS_CALL_FLAG = 'Y'
40838 AND L_RETURN_MANUAL_DISCOUNT = 'N'
40839 AND NVL(QPP.MANUAL_MODIFIER_FLAG,'B') in ('M', 'B')
40840 AND QPEP.PRICING_EVENT_CODE IN
40841 (SELECT decode(rownum
40842 ,1 ,substr(l_event_code,1,instr(l_event_code1,',',1,1)-1)
40843 ,2 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40844 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40845 ,3 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40846 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40847 ,4 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40848 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40849 ,5 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40850 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40851 ,6 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40852 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1)))
40853 FROM qp_event_phases
40854 WHERE rownum < 7)
40855 AND trunc(sysdate) between trunc(nvl(QPEP.START_DATE_ACTIVE,sysdate))
40856 and trunc(nvl(QPEP.END_DATE_ACTIVE,sysdate))
40857 AND QPP.PRICING_PHASE_ID = QPEP.PRICING_PHASE_ID
40858 -- if p_control_rec.get_freight_flag is 'Y' then select phases from qp_pricing_phases table freight_exists column has value 'Y'
40859 AND ((nvl(p_control_rec.get_freight_flag, G_NO) = G_YES AND QPP.freight_exists = G_YES) OR
40860 (nvl(p_control_rec.get_freight_flag, G_NO) = G_NO))
40861 UNION
40862 SELECT QPP.PRICING_PHASE_ID,
40863 QPP.LIST_TYPE_CODE,
40864 nvl(QPEP.USER_SEARCH_FLAG,QPEP.SEARCH_FLAG) SEARCH_FLAG,
40865 nvl(QPP.USER_INCOMPAT_RESOLVE_CODE,QPP.INCOMPAT_RESOLVE_CODE) INCOMPAT_RESOLVE_CODE,
40866 QPP.PHASE_SEQUENCE,
40867 nvl(QPP.USER_FREEZE_OVERRIDE_FLAG,QPP.FREEZE_OVERRIDE_FLAG) FREEZE_OVERRIDE_FLAG
40868 --QPEP.PRICING_EVENT_CODE
40869 FROM QP_PRICING_PHASES QPP, QP_EVENT_PHASES QPEP
40870 WHERE L_MANUAL_ADJUSTMENTS_CALL_FLAG = 'Y'
40871 AND L_RETURN_MANUAL_DISCOUNT = 'Y'
40872 AND QPEP.PRICING_EVENT_CODE IN
40873 (SELECT decode(rownum
40874 ,1 ,substr(l_event_code,1,instr(l_event_code1,',',1,1)-1)
40875 ,2 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40876 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40877 ,3 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40878 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40879 ,4 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40880 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40881 ,5 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40882 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40883 ,6 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40884 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1)))
40885 FROM qp_event_phases
40886 WHERE rownum < 7)
40887 AND trunc(sysdate) between trunc(nvl(QPEP.START_DATE_ACTIVE,sysdate))
40888 and trunc(nvl(QPEP.END_DATE_ACTIVE,sysdate))
40889 AND QPP.PRICING_PHASE_ID = QPEP.PRICING_PHASE_ID
40890 -- if p_control_rec.get_freight_flag is 'Y' then select phases from qp_pricing_phases table freight_exists column has value 'Y'
40891 AND ((nvl(p_control_rec.get_freight_flag, G_NO) = G_YES AND QPP.freight_exists = G_YES) OR
40892 (nvl(p_control_rec.get_freight_flag, G_NO) = G_NO))*/
40893
40894 /* CURSOR l_phase_cur(l_event_code VARCHAR2,
40895 l_event_code1 VARCHAR2) IS
40896 SELECT QPP.PRICING_PHASE_ID,
40897 QPP.LIST_TYPE_CODE,
40898 nvl(QPEP.USER_SEARCH_FLAG,QPEP.SEARCH_FLAG) SEARCH_FLAG,
40899 nvl(QPP.USER_INCOMPAT_RESOLVE_CODE,QPP.INCOMPAT_RESOLVE_CODE) INCOMPAT_RESOLVE_CODE,
40900 QPP.PHASE_SEQUENCE,
40901 nvl(QPP.USER_FREEZE_OVERRIDE_FLAG,QPP.FREEZE_OVERRIDE_FLAG) FREEZE_OVERRIDE_FLAG
40902 --QPEP.PRICING_EVENT_CODE
40903 FROM QP_PRICING_PHASES QPP, QP_EVENT_PHASES QPEP
40904 WHERE QPEP.PRICING_EVENT_CODE IN
40905 (SELECT decode(rownum
40906 ,1 ,substr(l_event_code,1,instr(l_event_code1,',',1,1)-1)
40907 ,2 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40908 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40909 ,3 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40910 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40911 ,4 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40912 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40913 ,5 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40914 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
40915 ,6 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
40916 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1)))
40917 FROM qp_event_phases
40918 WHERE rownum < 7)
40919 AND trunc(sysdate) between trunc(nvl(QPEP.START_DATE_ACTIVE,sysdate))
40920 and trunc(nvl(QPEP.END_DATE_ACTIVE,sysdate))
40921 AND QPP.PRICING_PHASE_ID = QPEP.PRICING_PHASE_ID
40922 -- if p_control_rec.get_freight_flag is 'Y' then select phases from qp_pricing_phases table freight_exists column has value 'Y'
40923 AND ((nvl(p_control_rec.get_freight_flag, G_NO) = G_YES AND QPP.freight_exists = G_YES) OR
40924 (nvl(p_control_rec.get_freight_flag, G_NO) = G_NO))
40925 ORDER BY QPP.PHASE_SEQUENCE,SEARCH_FLAG DESC; */
40926
40927 /*
40928 Can use N2 instead of N4
40929 INDX,QP_PREQ_GRP.price_request.l_get_line_index_cur,qp_npreq_ldets_tmp_N2,PRICING_PHASE_ID,1
40930 INDX,QP_PREQ_GRP.price_request.l_get_line_index_cur,qp_npreq_ldets_tmp_N2,PRICING_STATUS_CODE,2
40931 */
40932 CURSOR l_get_line_index_cur(p_pricing_phase_id NUMBER) IS
40933 SELECT DISTINCT LINE_INDEX
40934 FROM qp_npreq_ldets_tmp
40935 WHERE PRICING_PHASE_ID = p_pricing_phase_id
40936 AND PRICING_STATUS_CODE = G_STATUS_NEW;
40937
40938 /*
40939 INDX,QP_PREQ_GRP.price_request.l_get_list_price_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
40940 */
40941 CURSOR l_get_list_price_cur(p_line_index PLS_INTEGER) IS
40942 SELECT UNIT_PRICE,LINE_QUANTITY,PRICED_QUANTITY,PRICED_UOM_CODE,LINE_UOM_CODE,PRICING_EFFECTIVE_DATE
40943 FROM qp_npreq_lines_tmp
40944 WHERE LINE_INDEX = p_line_index;
40945 --FOR UPDATE OF ROUNDING_FACTOR;
40946
40947 /*
40948 INDX,QP_PREQ_GRP.price_request.get_source_system_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
40949 */
40950 CURSOR get_source_system_cur IS
40951 SELECT 'X'
40952 FROM dual
40953 WHERE EXISTS
40954 (Select 'X'
40955 --From QP_PRICE_REQ_SOURCES
40956 From QP_PRICE_REQ_SOURCES_V /* yangli */
40957 Where REQUEST_TYPE_CODE
40958 In (SELECT REQUEST_TYPE_CODE
40959 FROM qp_npreq_lines_tmp));
40960
40961 CURSOR get_request_type_code_cur IS -- shu, aso rounding
40962 SELECT REQUEST_TYPE_CODE
40963 FROM qp_npreq_lines_tmp
40964 WHERE rownum=1;
40965
40966 /*
40967 INDX,QP_PREQ_GRP.price_request.debug_cur,- No Index Used -,NA,NA
40968 */
40969 CURSOR debug_cur IS
40970 SELECT REQUEST_TYPE_CODE,LINE_INDEX,LINE_TYPE_CODE,PRICE_FLAG,PRICE_LIST_HEADER_ID,ROUNDING_FACTOR
40971 FROM qp_npreq_lines_tmp;
40972
40973 /*
40974 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
40975 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,PRICING_PHASE_ID,2
40976 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,ASK_FOR_FLAG,3
40977 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,CREATED_FROM_LIST_LINE_TYPE,4
40978 */
40979 CURSOR l_chk_deleted_pbh_cur(p_line_index IN PLS_INTEGER,
40980 p_pricing_phase_id NUMBER) IS
40981 SELECT /*+ INDEX(qp_npreq_ldets_tmp QP_PREQ_LDETS_TMP_N2) */ 'X' --bug 14464004
40982 FROM qp_npreq_ldets_tmp
40983 WHERE created_from_list_line_type = G_PRICE_BREAK_TYPE
40984 AND line_index = p_line_index
40985 AND pricing_phase_id = p_pricing_phase_id
40986 AND pricing_status_code <> G_STATUS_NEW;
40987
40988 --check if there is such a list line with passed in phase id
40989 /*
40990 INDX,QP_PREQ_GRP.price_request.l_chk_phase_exists,QP_LIST_LINES_N5,PRICING_PHASE_ID,1
40991 */
40992
40993 -- [julin/4742368/4766135] modified to try list_header_phases first; if not found, go to
40994 -- lines/headers; assuming that phase/qual on lines is a better EXISTS filter than
40995 -- active flag on headers (can purge if many inactive modifiers)
40996 CURSOR l_chk_phase_exists(p_phase_id IN PLS_INTEGER) IS
40997 SELECT 'x'
40998 FROM dual
40999 WHERE
41000 EXISTS (
41001 select /*+ ORDERED */ 'x'
41002 from qp_list_header_phases lhp, qp_list_headers_b qplh
41003 where lhp.pricing_phase_id = p_phase_id
41004 and qplh.list_header_id = lhp.list_header_id
41005 and qplh.active_flag = 'Y')
41006 OR
41007 EXISTS (
41008 select /*+ ORDERED */ 'x'
41009 from qp_list_lines qpll, qp_list_headers_b qplh
41010 where qpll.pricing_phase_id = p_phase_id
41011 and qpll.qualification_ind in (0, 4, 20)
41012 and qpll.list_header_id = qplh.list_header_id
41013 and qplh.active_flag = 'Y');
41014 /*
41015 -- julin [3773033]: removing hint /*+ ordered use_nl(qpll) index(qpll QP_LIST_LINES_N5) /
41016 -- bug 3804392 - exclude factor lists as well
41017 CURSOR l_chk_phase_exists(p_phase_id IN PLS_INTEGER) IS
41018 select 'x'
41019 from qp_list_headers_b qplh, qp_list_lines qpll
41020 where qplh.active_flag = 'Y'
41021 and qplh.list_type_code not in ('PRL', 'AGR', 'PML')
41022 and qpll.list_header_id = qplh.list_header_id
41023 and qpll.pricing_phase_id = p_phase_id
41024 and qpll.qualification_ind in (0, 2, 4, 6, 8, 10, 12, 14, 20, 22, 28, 30)
41025 and rownum = 1;
41026 select 'X' from dual
41027 where exists (select 'X' from qp_list_lines
41028 where pricing_phase_id = p_phase_id
41029 AND modifier_level_code IN ('LINE','LINEGROUP','ORDER') --3169430
41030 and rownum = 1);*/
41031
41032 /*
41033 INDX,QP_PREQ_GRP.price_request.l_debug,- No Index Used -,NA,NA
41034 */
41035 CURSOR l_debug IS
41036 SELECT CONTEXT,
41037 ATTRIBUTE,
41038 VALUE_FROM,
41039 LINE_INDEX,
41040 LINE_DETAIL_INDEX
41041 FROM qp_npreq_line_attrs_tmp;
41042
41043 /*
41044 INDX,QP_PREQ_GRP.price_request.l_check_pricing_phase_exists,QP_PRICING_PHASES_U1,PRICING_PHASE_ID,1
41045
41046 INDX,QP_PREQ_GRP.price_request.l_check_pricing_phase_exists,QP_EVENT_PHASES_U1,PRICING_EVENT_CODE,1
41047 INDX,QP_PREQ_GRP.price_request.l_check_pricing_phase_exists,QP_EVENT_PHASES_U1,PRICING_PHASE_ID,2
41048 */
41049 CURSOR l_check_pricing_phase_exists(l_event_code VARCHAR2,l_event_code1 VARCHAR2) IS
41050 SELECT b.pricing_phase_id,b.freeze_override_flag
41051 FROM qp_event_phases a , qp_pricing_phases b
41052 WHERE a.pricing_event_code in (SELECT decode(rownum
41053 ,1 ,substr(l_event_code,1,instr(l_event_code1,',',1,1)-1)
41054 ,2 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
41055 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
41056 ,3 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
41057 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
41058 ,4 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
41059 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
41060 ,5 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
41061 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
41062 ,6 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
41063 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1)))
41064 FROM qp_event_phases
41065 WHERE rownum < 7)
41066 AND a.pricing_phase_id = G_PRICE_LIST_PHASE_ID
41067 AND b.pricing_phase_id = G_PRICE_LIST_PHASE_ID
41068 AND trunc(sysdate) BETWEEN trunc(nvl(a.START_DATE_ACTIVE,sysdate))
41069 AND trunc(nvl(a.END_DATE_ACTIVE,sysdate));
41070
41071 /*
41072 INDX,QP_PREQ_GRP.price_request.l_get_max_line_detail_index,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
41073 */
41074 CURSOR l_get_max_line_detail_index IS
41075 SELECT MAX(LINE_DETAIL_INDEX)
41076 FROM qp_npreq_ldets_tmp;
41077
41078 /*
41079 INDX,QP_PREQ_GRP.price_request.l_limit_check_cur,qp_npreq_ldets_tmp_N4,HEADER_LIMIT_EXISTS,1
41080 INDX,QP_PREQ_GRP.price_request.l_limit_check_cur,qp_npreq_ldets_tmp_N4,PRICING_STATUS_CODE,2
41081 */
41082 CURSOR l_limit_check_cur IS
41083 SELECT HEADER_LIMIT_EXISTS,LINE_LIMIT_EXISTS
41084 FROM qp_npreq_ldets_tmp
41085 WHERE PRICING_STATUS_CODE = G_STATUS_NEW
41086 AND HEADER_LIMIT_EXISTS = G_YES ;
41087
41088 /*
41089 INDX,QP_PREQ_GRP.price_request.order_amount_cur,- No Index Used -,NA,NA
41090 */
41091 CURSOR order_amount_cur IS
41092 --SELECT nvl(SUM(UNIT_PRICE * PRICED_QUANTITY),0)
41093 select nvl(sum(nvl(line_unit_price * line_quantity, UNIT_PRICE * PRICED_QUANTITY)),0)
41094 FROM qp_npreq_lines_tmp
41095 WHERE charge_periodicity_code is NULL; -- added for recurring charges Bug # 4465168
41096
41097 /*
41098 INDX,QP_PREQ_GRP.price_request.limit_trans_cur,QP_LIMIT_TRANSACTIONS_U1,PRICE_REQUEST_CODE,1
41099 */
41100 CURSOR limit_trans_cur IS
41101 SELECT 'X'
41102 FROM qp_limit_transactions
41103 WHERE price_request_code > fnd_global.local_chr(0);
41104 --WHERE price_request_code > chr(0); fix GSCC compilation warning
41105
41106 l_product_app_id number; -- bug 3841192
41107
41108 CURSOR pricing_install_status_cur IS
41109 SELECT status
41110 FROM fnd_product_installations
41111 WHERE application_id=l_product_app_id;
41112
41113 -- ** Added for showing context and attribute in msg which caused number conversion error **
41114 CURSOR am_attr_msg_cur
41115 IS
41116 SELECT lattr.value_from,lattr.value_to,lattr.context,
41117 nvl(SEGMENTS_TL.SEEDED_SEGMENT_NAME,SEGMENTS_TL.USER_SEGMENT_NAME) attribute
41118 FROM qp_npreq_line_attrs_tmp lattr,fnd_flex_value_sets VSET,
41119 qp_segments_b SEGMENTS, qp_prc_contexts_b PCONTEXTS, qp_segments_tl SEGMENTS_TL
41120 WHERE attribute_type = G_PRICING_TYPE
41121 AND pricing_status_code = G_STATUS_UNCHANGED
41122 AND vset.flex_value_set_id = segments.user_valueset_id
41123 AND segments.application_id = 661
41124 AND pcontexts.prc_context_type <> 'QUALIFIER'
41125 AND pcontexts.prc_context_code = lattr.context
41126 AND segments.segment_mapping_column = lattr.attribute
41127 AND segments.prc_context_id = pcontexts.prc_context_id
41128 AND segments.segment_id = segments_tl.segment_id
41129 AND vset.format_type = 'N';
41130
41131 CURSOR attr_msg_cur
41132 IS
41133 SELECT value_from,value_to,context,attribute
41134 FROM qp_npreq_line_attrs_tmp lattr
41135 WHERE attribute_type = G_PRICING_TYPE
41136 AND pricing_status_code = G_STATUS_UNCHANGED
41137 AND exists (
41138 SELECT format_type
41139 FROM fnd_flex_value_sets VSET,fnd_descr_flex_column_usages DFLEX
41140 WHERE vset.flex_value_set_id = dflex.flex_value_set_id
41141 AND dflex.application_id = 661
41142 AND dflex.descriptive_flexfield_name = 'QP_ATTR_DEFNS_PRICING'
41143 AND dflex.descriptive_flex_context_code = lattr.context
41144 AND dflex.application_column_name = lattr.attribute
41145 AND vset.format_type = 'N');
41146
41147 --added by yangli for Java Engine changes
41148 CURSOR l_lines_info_cur
41149 is
41150 select line_index, unit_price, price_flag
41151 from qp_npreq_lines_tmp
41152 where QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N'
41153 UNION ALL
41154 select line_index, unit_price, price_flag
41155 from qp_int_lines
41156 where QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'Y';
41157
41158 --skattama
41159 /*
41160 INDX,QP_PREQ_GRP.list_header_search.l_check_no_list_passed,- No Index Used-,NA,NA
41161 */
41162 CURSOR L_CHECK_NO_LIST_PASSED IS
41163 SELECT 'X'
41164 FROM qp_npreq_lines_tmp A
41165 WHERE PROCESSED_CODE IN (G_NO_LIST_PASSED,G_STS_LHS_NOT_FOUND)
41166 AND LINE_TYPE_CODE <> G_ORDER_LEVEL
41167 AND (instr(PROCESS_STATUS,'FREEGOOD')=0); -- bug 2693700
41168
41169 /*
41170 INDX,QP_PREQ_GRP.list_header_search.l_check_secondary_search,- No Index Used-,NA,NA
41171 */
41172 CURSOR l_check_secondary_search IS
41173 SELECT 'X'
41174 FROM qp_npreq_lines_tmp
41175 WHERE PROCESSED_CODE = G_STS_LHS_NOT_FOUND
41176 AND LINE_TYPE_CODE <> G_ORDER_LEVEL
41177 AND (instr(PROCESS_STATUS,'FREEGOOD')=0); -- bug 2693700
41178
41179
41180 --skattama
41181
41182
41183 --added by yangli for Java Engine changes
41184 l_msg_value_from NUMBER;
41185 l_msg_value_to NUMBER;
41186 l_msg_context VARCHAR2(240);
41187 l_msg_attribute VARCHAR2(80);
41188 -- end changes
41189
41190 l_trans VARCHAR2(1);
41191 l_install_status VARCHAR2(1);
41192 l_limits_installed VARCHAR2(1) := FND_PROFILE.VALUE('QP_LIMITS_INSTALLED');
41193 --added by yangli for Java Engine 3086881
41194 l_begin_time number;
41195 l_end_time number;
41196 l_request_id number;
41197 --added by yangli for Java Engine 3086881
41198
41199 --Added for pattern engine
41200 l_devlp_log_dumped VARCHAR2(1) := 'N';
41201 l_lines_cnt NUMBER;
41202
41203 l_patrn_srch_path_desc VARCHAR2(50);
41204 l_patrn_srch_prof_desc VARCHAR2(50);
41205 l_tot_phase_time NUMBER;
41206
41207 BEGIN
41208
41209 QP_PREQ_GRP.Set_QP_Debug;
41210
41211 --KDURGASI changes for pattern based select modifiers
41212 G_PAT_SEARCH_PATH := NVL(FND_PROFILE.VALUE('QP_PATTERN_SEARCH_PATH'),2);
41213 G_QP_PATTERN_SEARCH := NVL(FND_PROFILE.VALUE('QP_PATTERN_SEARCH'),'N');
41214 G_LIN_QTY_ATTR_SRCD := 'N';
41215
41216 SELECT DECODE(G_PAT_SEARCH_PATH,1,'Search Headers First','Search Lines First') INTO l_patrn_srch_path_desc FROM dual;
41217
41218 IF G_QP_PATTERN_SEARCH = 'B' THEN
41219 l_patrn_srch_prof_desc:= 'Both Modifier and Price List';
41220 ELSIF G_QP_PATTERN_SEARCH = 'M' THEN
41221 l_patrn_srch_prof_desc:= 'Modifier';
41222 ELSIF G_QP_PATTERN_SEARCH = 'P' THEN
41223 l_patrn_srch_prof_desc:= 'Price List';
41224 ELSE
41225 l_patrn_srch_prof_desc:= 'Pattern Search Off';
41226 END IF;
41227
41228 --KDURGASI changes for pattern based select modifiers
41229
41230 IF qp_debug_util.IsTimeLogDebugOn THEN
41231 SELECT COUNT(*) INTO l_lines_cnt FROM qp_npreq_lines_tmp;
41232 END IF;
41233
41234 qp_debug_util.addSummaryTimeLog('Event: ' || p_control_rec.PRICING_EVENT, 0,1,0);
41235 qp_debug_util.addSummaryTimeLog('Number of lines: ' || l_lines_cnt, 0,1,0);
41236 qp_debug_util.addSummaryTimeLog('PROFILE Pattern Search: ' || l_patrn_srch_prof_desc, 0,1,0);
41237 qp_debug_util.addSummaryTimeLog('PROFILE Search Path: ' || l_patrn_srch_path_desc, 0,1,0);
41238
41239 qp_debug_util.tstart('ENGINE_CALL_QPXGPREB','QPXGPREB Price Engine Call (Lines - '||l_lines_cnt||')');
41240
41241 --==========START: Debug Viewere needed by JAVA and PL/SQL engine=======
41242 --G_QP_DEBUG_PROFILE_VALUE := FND_PROFILE.VALUE(v_debug_switch);
41243 G_PUBLIC_API_CALL_FLAG := nvl(p_control_rec.public_api_call_flag,'N');
41244
41245 -- Set the G_DEBUG_ENGINE if the call is not from public API
41246 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
41247 Set_QP_Debug;
41248 END IF;
41249
41250 l_pricing_start_time := dbms_utility.get_time;
41251
41252 IF G_QP_DEBUG_PROFILE_VALUE = G_ENGINE_TIME_TRACE_ON THEN --3085171
41253 --added to note redo generation
41254 begin
41255 select value into l_pricing_start_redo
41256 from v$mystat, v$statname
41257 where v$mystat.statistic# = v$statname.statistic#
41258 and v$statname.name = 'redo size';
41259 exception
41260 when others then
41261 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41262 engine_debug('Error in looking up debug'||SQLERRM);
41263 END IF;
41264 end;
41265 END IF;
41266
41267 --l_pricing_start_time := sysdate;
41268
41269 -- Debug Screen related change
41270 -- Irrespective of om debug if qp debug is on debug information is captured into qp debug tables
41271 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
41272 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
41273 -- A call to QP_COPY_DEBUG_PVT.Generate_Debug_Req_Seq to initialize Global Variables
41274 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
41275 QP_COPY_DEBUG_PVT.Generate_Debug_Req_Seq(l_return_status,
41276 l_status_text);
41277 --x_return_status := l_return_status; -- fix bug 2756754
41278 --x_return_status_text := l_status_text; -- fix bug 2756754
41279 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
41280 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41281 engine_debug('Error QP_COPY_DEBUG_PVT.Generate_Debug_Req_Seq: '||l_status_text);
41282 END IF; -- END IF G_DEBUG_ENGINE
41283 RAISE E_DEBUG_ROUTINE_ERROR; -- fix bug 2756754, dbg failed should not be an hard error
41284 END IF;
41285 END IF;
41286 END IF;
41287
41288
41289 /* IF (NOT OE_DEBUG_PUB.ISDebugOn) THEN --If om debug is not on , then only look at qp_debug
41290 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
41291 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
41292 oe_debug_pub.SetDebugLevel(10);
41293 oe_debug_pub.Initialize;
41294 oe_debug_pub.debug_on;
41295 l_output_file := oe_debug_pub.Set_Debug_Mode('FILE');
41296 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41297 engine_debug ('The output file is : ' || l_output_file );
41298 END IF;
41299 G_DEBUG_ENGINE:= FND_API.G_TRUE;
41300 ELSE
41301 G_DEBUG_ENGINE:= FND_API.G_FALSE;
41302 END IF;
41303 ELSE
41304 G_DEBUG_ENGINE:= FND_API.G_TRUE;
41305 END IF; */
41306
41307 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41308 engine_debug('***Entering Oracle Pricing***');
41309 engine_debug('Please set debug level 3 in profile option to see all Pricing Debug Messages');
41310 engine_debug('-----------------New Engine Call----------------------');
41311 engine_debug('Pricing Event: ' || p_control_rec.PRICING_EVENT);
41312 engine_debug('Pricing Engine Version: ' || QP_PREQ_GRP.GET_VERSION);
41313
41314 END IF;
41315 X_RETURN_STATUS:=FND_API.G_RET_STS_SUCCESS;
41316 --==========END: Debug Viewere needed by JAVA and PL/SQL engine=======
41317
41318 --======moved here by yangli, needed by JAVA and PL/SQL engine=============
41319 G_TEMP_TABLE_INSERT_FLAG := nvl(p_control_rec.temp_table_insert_flag,'Y');
41320
41321 --Setting current event in debug util
41322 qp_debug_util.setCurrentEvent(p_control_rec.PRICING_EVENT);
41323 --G_CURR_PRICE_EVENT := p_control_rec.PRICING_EVENT;
41324
41325 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
41326 --=====START: Specific to PL/SQL engine =======================
41327 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41328 ENGINE_DEBUG('Java Engine not Installed ----------');
41329 END IF;
41330
41331 -- julin [3805113]: resetting tables used in handle_break/call_calculation_engine
41332 G_CHILD_VALUE_FROM_TBL.delete;
41333 G_CHILD_VALUE_TO_TBL.delete;
41334 G_PARENT_LINE_DETAIL_INDEX_TBL.delete;
41335
41336 --dbms_output.put_line('Final Debug: ' || oe_debug_pub.g_debug);
41337 --G_DEBUG_ENGINE := FND_API.G_TRUE;
41338 --G_LINE_DETAIL_INDEX := 0;
41339 G_MANUAL_DISCOUNT_FLAG := nvl(FND_PROFILE.VALUE(G_RETURN_MANUAL_DISCOUNTS),'Y'); --p_control_rec.manual_discount_flag;
41340 G_GSA_CHECK_FLAG := p_control_rec.gsa_check_flag;
41341 G_GSA_DUP_CHECK_FLAG := nvl(p_control_rec.gsa_dup_check_flag,'N');
41342 --moved to top for both PL/SQL and Java Engine
41343 --G_TEMP_TABLE_INSERT_FLAG := nvl(p_control_rec.temp_table_insert_flag,'Y');
41344 G_MANUAL_ADJUSTMENTS_CALL_FLAG := nvl(p_control_rec.manual_adjustments_call_flag,'N');
41345 G_INSERT_INTO_FORMULA_TMP := FALSE;
41346 G_INSERT_FORMULA_STEP_VALUES := nvl(FND_PROFILE.VALUE('QP_INSERT_FORMULA_STEP_VALUES'),'Y');
41347 G_BLIND_DISCOUNT_PROFILE := nvl(FND_PROFILE.VALUE(G_BLIND_DISCOUNT),'N');
41348 G_MULTI_CURRENCY_PROFILE := nvl(FND_PROFILE.VALUE(G_MULTI_CURRENCY),'N'); -- vivek
41349 G_QUALIFY_SECONDARY := NVL(FND_PROFILE.VALUE('QP_QUALIFY_SECONDARY_PRICE_LISTS'),'N');--profile option
41350 --G_USE_MULTI_CURRENCY := p_control_rec.use_multi_currency; -- Vivek
41351
41352
41353 G_ORDER_ID := null; -- accum range break
41354
41355 if p_control_rec.use_multi_currency = 'Y' then
41356 G_USE_MULTI_CURRENCY := p_control_rec.use_multi_currency;
41357 else
41358 -- Added new profile (QP_MULTI_CURRENCY_USAGE) with default value 'N' to maintain
41359 -- current behaviour,bug 2943033
41360 G_USE_MULTI_CURRENCY := nvl(fnd_profile.value('QP_MULTI_CURRENCY_USAGE'), 'N');
41361 end if;
41362
41363 -- Essilor Fix bug 2789138
41364 L_MANUAL_ADJUSTMENTS_CALL_FLAG := nvl(p_control_rec.manual_adjustments_call_flag,NULL);
41365
41366 -- shu ADD TO MAIN
41367 IF G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
41368 G_MCURR_INSTALLED_USED := 'Y';
41369 ELSE
41370 G_MCURR_INSTALLED_USED := 'N';
41371 END IF;
41372 G_SECURITY_CONTROL := nvl(FND_PROFILE.VALUE('QP_SECURITY_CONTROL'), 'OFF'); --security
41373 G_CURRENT_USER_OP_UNIT := NVL(p_control_rec.org_id, QP_UTIL.GET_ORG_ID); --security
41374 -- [prarasto] changed to use get_org_id instead of profile for implementing MOAC
41375
41376 --added for moac
41377 --Initialize MOAC and set org context to Org passed in nvl(p_control_rec.org_id, mo_default_org_id)
41378 --so that the pricing engine will look at data specific to the
41379 --passed org or mo_default_org plus global data only
41380
41381 IF MO_GLOBAL.get_access_mode is null THEN
41382 MO_GLOBAL.Init('QP');
41383 IF G_CURRENT_USER_OP_UNIT IS NOT NULL THEN
41384 MO_GLOBAL.set_policy_context('S', G_CURRENT_USER_OP_UNIT);
41385 END IF;
41386 END IF;--MO_GLOBAL
41387
41388
41389 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41390 engine_debug('G_SECURITY_CONTROL: '||G_SECURITY_CONTROL);
41391 engine_debug('G_CURRENT_USER_OP_UNIT: '||G_CURRENT_USER_OP_UNIT);
41392
41393 END IF;
41394 --=====END: Specific to PL/SQL engine =======================
41395 END IF; --Java engine is not insalled
41396
41397 --=====START: Set_Request_Id needed by both Java and PL/SQL engine
41398 -- Set the request id if called from plsql/path and not temp table insert path
41399 IF (G_TEMP_TABLE_INSERT_FLAG = G_YES) THEN
41400 QP_Price_Request_Context.Set_Request_Id;
41401 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41402 engine_debug('Request id in QP_PREQ_GRP : ' ||sys_context('qp_context','request_id'));
41403 END IF;
41404 END IF;
41405 --=====END: Set_Request_Id needed by both Java and PL/SQL engine
41406
41407 --=====START: No-Pricing-Line check needed by both Java and PL/SQL engine
41408 l_price_flag_indx := NULL;
41409 l_price_flag_yes_only := G_NO;
41410
41411 IF G_TEMP_TABLE_INSERT_FLAG = G_YES THEN -- pl/sql path
41412
41413 IF (p_line_tbl.COUNT > 0) THEN
41414 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41415 engine_debug('There are lines to be priced');
41416 END IF;
41417 FOR i in p_line_tbl.FIRST .. p_line_tbl.LAST
41418 LOOP
41419 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41420 engine_debug('In the Loop');
41421 engine_debug('Before Pricing Line Index: ' || p_line_tbl(i).line_index);
41422 engine_debug('Before Pricing Unit Price: ' || p_line_tbl(i).unit_price);
41423 engine_debug('Before Pricing Price Flag: ' || p_line_tbl(i).price_flag);
41424 END IF;
41425 END LOOP;
41426 ELSE -- else (p_line_tbl.COUNT > 0)
41427 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41428 engine_debug('There are no lines to be priced');
41429 END IF;
41430 END IF; -- end if (p_line_tbl.COUNT > 0)
41431
41432 ELSE --G_TEMP_TABLE_INSERT_FLAG = 'N', direct insert/performance path, shulin dbg 2437534
41433 --FOR cl IN (select line_index, unit_price, price_flag from qp_npreq_lines_tmp)
41434 FOR cl IN l_lines_info_cur --by yangli for Java Engine changes
41435 LOOP
41436 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41437 engine_debug('In direct insert Loop / performance path');
41438 engine_debug('Before Pricing Line Index: ' || cl.line_index);
41439 engine_debug('Before Pricing Unit Price: ' || cl.unit_price);
41440 engine_debug('Before Pricing Price Flag: ' || cl.price_flag);
41441 END IF;
41442 END LOOP;
41443 END IF;--temp_table_insert_flag
41444
41445 --for Java Engine case, the check here will catch it instead of contacting Java Engine
41446 IF (G_TEMP_TABLE_INSERT_FLAG = G_YES) THEN -- If records are inserted in pricing engine from pl/sql tables
41447 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41448 engine_debug('Check to see if all the lines have price flag N');
41449 END IF;
41450 I:= p_line_tbl.FIRST;
41451 WHILE I IS NOT NULL
41452 LOOP
41453 IF (p_line_tbl(I).PRICE_FLAG = G_YES or p_line_tbl(I).PRICE_FLAG = G_PHASE) THEN
41454 l_price_flag_indx := p_line_tbl(I).LINE_INDEX;
41455 EXIT;
41456 END IF;
41457 I:=p_line_tbl.NEXT(I);
41458 END LOOP;
41459
41460 I:= p_line_tbl.FIRST;
41461 WHILE I IS NOT NULL
41462 LOOP
41463
41464 --shu, begin for bug 2437534
41465 --if there is at least 1 line with price_flag = 'Y'
41466 --or if there is at least 1 line with price_flag = 'P' and unit_price is not passed price list search should be done
41467 IF l_price_flag_yes_only = G_NO THEN -- shu, 'N' was default init value for l_price_flag_yes_only
41468 IF p_line_tbl(I).PRICE_FLAG = G_YES
41469 or (p_line_tbl(I).PRICE_FLAG = G_PHASE -- G_PHASE is 'P'
41470 and p_line_tbl(I).unit_price is null)
41471 THEN
41472 l_price_flag_yes_only := G_YES;
41473 EXIT;
41474 END IF;--PRICE_FLAG = G_YES or PRICE_FLAG = G_PHASE
41475 END IF;--l_price_flag_yes_only
41476 -- shu, fix bug 2437534
41477
41478 I:=p_line_tbl.NEXT(I);
41479 END LOOP;
41480
41481 -- The flag tells if there is atleast 1 order line with price_flag = 'Y'
41482 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41483 engine_debug('Price Flag Yes: ' || l_price_flag_yes_only);
41484
41485 END IF;
41486 IF (l_price_flag_indx IS NULL ) THEN
41487 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41488 engine_debug('All the lines have price flag N.Hence no pricing returning');
41489 END IF;
41490 x_line_tbl := p_line_tbl;
41491 x_line_qual := p_qual_tbl;
41492 x_line_attr_tbl := p_line_attr_tbl;
41493 x_line_detail_tbl := p_line_detail_tbl;
41494 RETURN; -- No pricing needs to be done as all the lines have price flag as 'N'
41495 END IF;
41496 END IF;
41497 --=====END: No-Pricing-Line check needed by both Java and PL/SQL engine
41498
41499 --=====START: needed by both Java and PL/SQL engine, used later in shared code
41500 --this method will populate G_PRICE_LIST_SEQUENCE and G_PRICE_LIST_PHASE_ID
41501 --and later NOT-NULL check against these two globals are performed
41502 Get_Price_List_Sequence(l_return_status,l_status_text);
41503
41504 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
41505 RAISE E_ROUTINE_ERRORS;
41506 END IF;
41507 --=====END: needed by both Java and PL/SQL engine, used later in shared code
41508
41509 --=====START: needed by both Java and PL/SQL engine, used in Populate_Output()
41510 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41511 engine_debug('Rounding flag: '||p_control_rec.rounding_flag);
41512 END IF;
41513 l_rounding_flag := nvl(p_control_rec.rounding_flag,G_YES);
41514 --=====START: needed by both Java and PL/SQL engine, used in Populate_Output()
41515
41516 --********************************************************************
41517 --If user populates the temp tables directly
41518 --the public API will populate the currency_code etc in
41519 --public variables
41520 --********************************************************************
41521 -- qp_number.canonical_mask := 'FM999999999999999999999.99999999999999999999999999999999999999'; --3085147
41522 qp_number.canonical_mask := 'FM999999999999999999999.9999999999999999999999999999999999999999'; --3169430
41523
41524 --=======START: Pre-pricing processing needed by JAVA and PL/SQL engine======
41525 IF G_TEMP_TABLE_INSERT_FLAG = G_YES THEN
41526
41527 /*Truncate_Temp_Tables (l_return_status,l_status_text);
41528 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
41529 RAISE E_ROUTINE_ERRORS;
41530 END IF; */
41531
41532 -- qp_number.canonical_mask := 'FM999999999999999999999.99999999999999999999999999999999999999';
41533
41534
41535 l_bypass_pricing := FND_PROFILE.VALUE(G_BYPASS_PRICING);
41536
41537 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41538 engine_debug ('Pricing Bypass : ' || l_bypass_pricing);
41539
41540 END IF;
41541 IF (l_bypass_pricing = 'Y' ) THEN
41542
41543 x_line_tbl := p_line_tbl;
41544 x_line_qual := p_qual_tbl;
41545 x_line_attr_tbl := p_line_attr_tbl;
41546 x_line_detail_tbl := p_line_detail_tbl;
41547
41548 I:= x_line_tbl.FIRST;
41549
41550 WHILE I IS NOT NULL LOOP
41551 If x_line_tbl(I).UNIT_PRICE is null or x_line_tbl(I).ADJUSTED_UNIT_PRICE is null
41552 or x_line_tbl(I).UNIT_PRICE = fnd_api.g_miss_num or
41553 x_line_tbl(I).ADJUSTED_UNIT_PRICE = fnd_api.g_miss_num then
41554
41555 x_line_tbl(I).UNIT_PRICE := l_FIXED_PRICE;
41556 x_line_tbl(I).ADJUSTED_UNIT_PRICE := l_FIXED_PRICE;
41557 x_line_tbl(I).STATUS_CODE := QP_PREQ_GRP.G_STATUS_UPDATED;
41558 end if;
41559 I:=x_line_tbl.NEXT(I);
41560 END LOOP;
41561
41562 RETURN;
41563 END IF;
41564
41565 IF(p_control_rec.PRICING_EVENT = NULL
41566 OR p_control_rec.calculate_flag = NULL
41567 OR UPPER(p_control_rec.SIMULATION_FLAG) NOT IN (G_YES,G_NO)
41568 ) THEN
41569 RAISE E_INVALID_CONTROL_RECORD;
41570 END IF;
41571
41572
41573 IF(G_PRICE_LIST_SEQUENCE = NULL OR G_PRICE_LIST_SEQUENCE = FND_API.G_MISS_NUM
41574 OR G_PRICE_LIST_PHASE_ID = NULL OR G_PRICE_LIST_PHASE_ID = FND_API.G_MISS_NUM) THEN
41575 RAISE E_INVALID_PHASE;
41576 END IF;
41577
41578 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41579 engine_debug('Related_lines count: '||p_related_lines_tbl.COUNT);
41580
41581 END IF;
41582 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
41583 RAISE E_ROUTINE_ERRORS;
41584 END IF;
41585
41586 --=====needed by both Java Engine and PL/SQL engine, used in populate_output()
41587 IF (p_control_rec.calculate_flag = G_CALCULATE_ONLY) THEN
41588 l_pricing_status_code := G_STATUS_NEW;
41589 ELSE
41590 l_pricing_status_code := G_STATUS_UNCHANGED;
41591 END IF;
41592
41593 OPEN l_check_pricing_phase_exists(p_control_rec.PRICING_EVENT,p_control_rec.PRICING_EVENT || ',');
41594 FETCH l_check_pricing_phase_exists INTO l_pricing_phase,l_freeze_override_flag;
41595 CLOSE l_check_pricing_phase_exists;
41596
41597 IF (l_pricing_phase IS NOT NULL) THEN
41598 l_price_phase_flag := TRUE;
41599 G_PRICE_PHASE_FLAG := TRUE;
41600 ELSE
41601 l_price_phase_flag := FALSE;
41602 G_PRICE_PHASE_FLAG := FALSE;
41603 END IF;
41604 --=====needed by both Java Engine and PL/SQL engine, used in populate_output()
41605
41606 ELSE --g_temp_table_insert_flag = 'N', performance path
41607 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41608 engine_debug('Calling application inserted into temp tables');
41609
41610 END IF;
41611 G_CURRENCY_CODE := QP_PREQ_PUB.G_CURRENCY_CODE;
41612 G_PRICE_PHASE_FLAG := QP_PREQ_PUB.G_PRICE_PHASE_FLAG;
41613 G_PRICE_LIST_SEQUENCE := QP_PREQ_PUB.G_PRICE_LIST_SEQUENCE;
41614 G_PRICE_LIST_PHASE_ID := QP_PREQ_PUB.G_PRICE_LIST_PHASE_ID;
41615 G_MIN_PRICING_DATE := QP_PREQ_PUB.G_MIN_PRICING_DATE;
41616 G_MAX_PRICING_DATE := QP_PREQ_PUB.G_MAX_PRICING_DATE;
41617
41618 l_price_flag_yes_only := NULL; -- reset, default
41619 -- Check if atleast there is one line with price_flag = 'Y'
41620 -- shu, begin bug 2437534 fix
41621 IF l_price_flag_yes_only is null THEN
41622 --FOR cl IN (select unit_price, price_flag from qp_npreq_lines_tmp)
41623 FOR cl IN l_lines_info_cur
41624 LOOP
41625 IF cl.price_flag = G_YES OR (cl.unit_price is NULL and cl.price_flag = G_PHASE) then
41626 l_price_flag_yes_only := G_YES;
41627 exit;
41628 END IF;
41629 END LOOP;
41630
41631 END IF;
41632 -- shu, end bug 2437534 fix
41633
41634 l_price_flag_indx := NULL;
41635 -- Check if atleast there is one line with price_flag = 'Y' or price_flag = 'P'
41636 BEGIN
41637 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
41638 SELECT 1
41639 INTO l_price_flag_indx
41640 FROM qp_npreq_lines_tmp
41641 WHERE PRICE_FLAG IN (G_YES,G_PHASE)
41642 AND ROWNUM=1;
41643 --added by yangli for Java Engine
41644 ELSE
41645 SELECT 1
41646 INTO l_price_flag_indx
41647 FROM qp_int_lines
41648 WHERE PRICE_FLAG IN (G_YES, G_PHASE)
41649 AND ROWNUM=1;
41650 END IF;
41651 --added by yangli for Java Engine
41652 EXCEPTION
41653 WHEN NO_DATA_FOUND THEN
41654 l_price_flag_indx := NULL;
41655 END ;
41656
41657 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41658 engine_debug('Direct Temp Table Insert Price Flag Yes Only : '||l_price_flag_yes_only);
41659
41660 END IF;
41661 -- This is the code when calling app inserted into temp tables to quit pricing when there are no lines
41662 -- with either price flag = 'Y' or 'P'
41663 IF (l_price_flag_indx IS NULL) THEN
41664 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41665 engine_debug('No Pricing. Returning, call from direct insert into temp tables by calling app');
41666 END IF;
41667 RETURN;
41668 END IF;
41669
41670 END IF;---p_control_rec.temp_table_insert_flag = G_NO
41671 --=======END: Pre-pricing processing needed by JAVA and PL/SQL engine======
41672
41673 --IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41674 --engine_debug('Pricing Event: ' || p_control_rec.PRICING_EVENT);
41675 --engine_debug('Pricing Engine Version: ' || QP_PREQ_GRP.GET_VERSION);
41676 --END IF; -- 4033618
41677
41678 IF (G_TEMP_TABLE_INSERT_FLAG = G_YES) THEN
41679 --=======START: Truncate/Populate_Temp_tables() needed by JAVA and PL/SQL engine======
41680 Truncate_Temp_Tables (l_return_status,l_status_text);
41681 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
41682 RAISE E_ROUTINE_ERRORS;
41683 END IF;
41684
41685 Populate_Temp_Tables
41686 (p_line_tbl,
41687 p_qual_tbl,
41688 p_line_attr_tbl,
41689 p_LINE_DETAIL_tbl,
41690 p_LINE_DETAIL_qual_tbl,
41691 p_LINE_DETAIL_attr_tbl,
41692 p_related_lines_tbl,
41693 l_rounding_flag,
41694 l_pricing_status_code,
41695 l_price_phase_flag,
41696 l_freeze_override_flag,
41697 p_control_rec.pricing_event,
41698 p_control_rec.calculate_flag,
41699 l_return_status,
41700 l_status_text);
41701
41702 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
41703 RAISE E_ROUTINE_ERRORS;
41704 END IF;
41705 --========END: Truncate/Populate_Temp_tables() needed by JAVA and PL/SQL engine======
41706 ELSE
41707 -----------------START: Specific to PL/SQL Engine----------------------
41708 --added by yangli for Java Engine project
41709 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
41710 -- for accum range break
41711 -- manually set G_ORDER_ID in the direct insert path
41712 -- because Populate_Temp_Tables was not called
41713 BEGIN
41714 select line_id
41715 into G_ORDER_ID
41716 from qp_npreq_lines_tmp
41717 where line_type_code = QP_PREQ_GRP.G_ORDER_LEVEL;
41718 EXCEPTION
41719 WHEN NO_DATA_FOUND THEN
41720 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41721 QP_PREQ_GRP.engine_debug(' - could not get order header ID! Summary request line missing');
41722 END IF; --4033618
41723 END;
41724 END IF;--java engine not installed
41725 --added by yangli for Java Engine project
41726 -----------------END: Specific to PL/SQL Engine----------------------
41727 END IF;
41728
41729 --ignore_pricing start 8203956
41730 IF ( NVL(Fnd_Profile.value('QP_CUSTOM_IGNORE_PRICING'),'N') = 'Y') THEN
41731 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41732 QP_PREQ_GRP.engine_debug('ignore_pricing : Updating non-pricable lines 1');
41733 END IF;
41734 OPEN IGNORE_PRICE_LINES_CUR;
41735 FETCH IGNORE_PRICE_LINES_CUR BULK COLLECT INTO
41736 l_line_index_tbl,
41737 l_price_list_header_id_tbl,
41738 l_line_quantity_tbl,
41739 l_line_uom_code_tbl ;
41740 CLOSE IGNORE_PRICE_LINES_CUR;
41741 IF (l_line_index_tbl.COUNT > 0) THEN
41742 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41743 QP_PREQ_GRP.engine_debug('ignore_pricing : Updating non-pricable lines 2');
41744 --print_tmp_tabs();
41745 END IF;
41746 FORALL i in 1 .. l_line_index_tbl.COUNT
41747 UPDATE qp_npreq_lines_tmp
41748 SET
41749 price_flag = G_NO,
41750 PRICE_LIST_HEADER_ID = l_price_list_header_id_tbl(i),
41751 LINE_UNIT_PRICE = 0,
41752 UOM_QUANTITY = l_line_quantity_tbl(i),
41753 PRICED_QUANTITY = l_line_quantity_tbl(i),
41754 PRICED_UOM_CODE = l_line_uom_code_tbl(i),
41755 UNIT_PRICE = 0,
41756 ADJUSTED_UNIT_PRICE = 0,
41757 processed_flag =G_YES,
41758 PRICING_STATUS_CODE =G_STATUS_UPDATED
41759 WHERE LINE_INDEX = l_line_index_tbl(i);
41760 END If;
41761 END IF;
41762 --ignore_pricing end
41763
41764 -- [5112585/5087820]
41765 -- This block of code moved outside of the previous IF-THEN-ELSE block.
41766 -- max(line_detail_index)+1 is now correctly computed for both the PL/SQL table
41767 -- and the direct insert path for the PL/SQL engine.
41768 -----------------START: Specific to PL/SQL Engine----------------------
41769 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
41770 -- Assign the max line detail index
41771 OPEN l_get_max_line_detail_index;
41772 FETCH l_get_max_line_detail_index INTO l_max_line_detail_index;
41773 CLOSE l_get_max_line_detail_index;
41774
41775 --Put back the changes for bug 2457983
41776 --in OC case where caller passes adjustments, the adjustments are inserted
41777 --but G_LINE_DETAIL_INDEX is not incremented which causes a
41778 --unique constraint violation on qp_npreq_ldets_tmp_U1
41779 --hence need to fetch the maximum line_detail_index
41780 G_LINE_DETAIL_INDEX := nvl(l_max_line_detail_index,1);
41781 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41782 engine_debug('G_LINE_DETAIL_INDEX '||G_LINE_DETAIL_INDEX);
41783 END IF;
41784 END IF;--java engine not installed
41785 -----------------END: Specific to PL/SQL Engine----------------------
41786
41787 /*+------------------TO INSERT HIERARCHY RECORDS IN ATTRS_TMP Added for TCA ----+*/
41788
41789 INSERT_QUALIFIER_HIERARCHY;
41790
41791 /*+------------------------------------------------------------------------------+*/
41792
41793 --added by yangli for Java Engine project
41794 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
41795 -----------------START: Specific to PL/SQL Engine----------------------
41796 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41797 ENGINE_DEBUG('Java Engine not Installed ----------');
41798 END IF;
41799
41800 Update_Processing_Order(l_return_status,l_status_text);
41801 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41802 engine_debug('After calling update_procss--');
41803
41804 END IF;
41805 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
41806 RAISE E_ROUTINE_ERRORS;
41807 END IF;
41808
41809 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41810 FOR i in l_debug loop
41811 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41812 engine_debug('=CONTEXT PASSED: '||i.CONTEXT);
41813 engine_debug('=ATTRIBUTE : '||i.ATTRIBUTE);
41814 engine_debug('=VALUE : ' ||i.VALUE_FROM);
41815 engine_debug('=LINE INDEX : ' ||i.LINE_INDEX);
41816 engine_debug('================================');
41817 END IF;
41818 END LOOP;
41819
41820 FOR I in debug_cur LOOP
41821 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41822 engine_debug('Request Type Code: '|| I.REQUEST_TYPE_CODE);
41823 engine_debug('Line Index: '|| I.LINE_INDEX);
41824 engine_debug('Line Type Code: '|| I.LINE_TYPE_CODE);
41825 engine_debug('Price Flag: ' || I.PRICE_FLAG);
41826 engine_debug('Price List Header Id: ' || I.PRICE_LIST_HEADER_ID);
41827 engine_debug('Rounding Factor : ' || I.ROUNDING_FACTOR);
41828 END IF;
41829 END LOOP;
41830
41831
41832 END IF;
41833
41834 /*
41835 INDX,QP_PREQ_GRP.price_request.price_request_upd1,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
41836 INDX,QP_PREQ_GRP.price_request.price_request_upd1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
41837 */
41838 /*
41839 INDX,QP_PREQ_GRP.price_request.price_request_sel1,FND_DESCR_FLEX_COL_USAGES_U1,APPLICATION_ID,1
41840 INDX,QP_PREQ_GRP.price_request.price_request_sel1,FND_DESCR_FLEX_COL_USAGES_U1,DESCRIPTIVE_FLEXFIELD_NAME,2
41841 INDX,QP_PREQ_GRP.price_request.price_request_sel1,FND_DESCR_FLEX_COL_USAGES_U1,DESCRIPTIVE_FLEX_CONTEXT_CODE,3
41842 INDX,QP_PREQ_GRP.price_request.price_request_sel1,FND_DESCR_FLEX_COL_USAGES_U1,APPLICATION_COLUMN_NAME,4
41843
41844 INDX,QP_PREQ_GRP.price_request.price_request_sel1,FND_FLEX_VALUE_SETS_U1,FLEX_VALUE_SET_ID,1
41845 */
41846 --G_AM_INSTALLED_PROFILE := nvl(FND_PROFILE.value('QP_ATTRIBUTE_MANAGER_INSTALLED'), G_YES); /* default is G_YES by yangli 03/12/2002*/
41847 G_AM_INSTALLED_PROFILE := QP_UTIL.Attrmgr_Installed;
41848 /* by yangli 05/02/02*/
41849
41850 IF G_AM_INSTALLED_PROFILE = G_YES THEN
41851 BEGIN
41852 UPDATE /*+ dynamic_sampling(1) */ qp_npreq_line_attrs_tmp lattr
41853 SET value_from = qp_number.number_to_canonical(qp_number.canonical_to_number(lattr.value_from)),
41854 value_to = qp_number.number_to_canonical(qp_number.canonical_to_number(lattr.value_to))
41855 WHERE attribute_type = G_PRICING_TYPE
41856 AND pricing_status_code = G_STATUS_UNCHANGED
41857 AND exists (
41858 SELECT format_type
41859 FROM fnd_flex_value_sets VSET,
41860 qp_segments_b SEGMENTS, qp_prc_contexts_b PCONTEXTS
41861 WHERE vset.flex_value_set_id = segments.user_valueset_id
41862 AND segments.application_id = 661
41863 AND pcontexts.prc_context_type <> 'QUALIFIER'
41864 AND pcontexts.prc_context_code = lattr.context
41865 AND segments.segment_mapping_column = lattr.attribute
41866 AND segments.prc_context_id = pcontexts.prc_context_id
41867 AND vset.format_type = 'N'); --by yangli 03/06/2002 9:30am
41868
41869 EXCEPTION
41870 WHEN OTHERS THEN
41871 x_return_status := FND_API.G_RET_STS_ERROR;
41872 BEGIN
41873
41874 FOR l_rec IN am_attr_msg_cur
41875 LOOP
41876 l_msg_context := l_rec.context;
41877 l_msg_attribute := l_rec.attribute;
41878 l_msg_value_from := qp_number.number_to_canonical(l_rec.value_from);
41879 l_msg_value_to := qp_number.number_to_canonical(l_rec.value_to);
41880 END LOOP;
41881
41882 EXCEPTION
41883 WHEN OTHERS THEN
41884 l_status_text := 'Exception in QP_PREQ_GRP.PRICE_REQUEST ';
41885 l_status_text := l_status_text|| 'This Attribute( with Context: ' || l_msg_context || ' and Attribute: '|| l_msg_attribute||' ) is defined as numeric but passed as non-numeric/Errored ';
41886 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41887 engine_debug('l_status_text '|| l_status_text);
41888 END IF; --4033618
41889 END;
41890 RAISE E_ROUTINE_ERRORS;
41891 END;
41892
41893 ELSE
41894
41895 BEGIN
41896 UPDATE qp_npreq_line_attrs_tmp lattr
41897 SET value_from = qp_number.number_to_canonical(qp_number.canonical_to_number(lattr.value_from)),
41898 value_to = qp_number.number_to_canonical(qp_number.canonical_to_number(lattr.value_to))
41899 WHERE attribute_type = G_PRICING_TYPE
41900 AND pricing_status_code = G_STATUS_UNCHANGED
41901 AND exists (
41902 SELECT format_type
41903 FROM fnd_flex_value_sets VSET,fnd_descr_flex_column_usages DFLEX
41904 WHERE vset.flex_value_set_id = dflex.flex_value_set_id
41905 AND dflex.application_id = 661
41906 AND dflex.descriptive_flexfield_name = 'QP_ATTR_DEFNS_PRICING'
41907 AND dflex.descriptive_flex_context_code = lattr.context
41908 AND dflex.application_column_name = lattr.attribute
41909 AND vset.format_type = 'N');
41910
41911 EXCEPTION
41912 --changes for bug 2174000 a qty>23digits causes numeric or value error
41913 --due to the format mas in number_to_canonical
41914 When OTHERS Then
41915 x_return_status := FND_API.G_RET_STS_ERROR;
41916 BEGIN
41917 FOR l_rec IN attr_msg_cur
41918 LOOP
41919 l_msg_context := l_rec.context;
41920 l_msg_attribute := l_rec.attribute;
41921 l_msg_value_from := qp_number.number_to_canonical(l_rec.value_from);
41922 l_msg_value_to := qp_number.number_to_canonical(l_rec.value_to);
41923 END LOOP;
41924 EXCEPTION
41925 WHEN OTHERS THEN
41926 l_status_text := 'Exception in QP_PREQ_GRP.PRICE_REQUEST ';
41927 l_status_text := l_status_text || 'This Attribute( with Context: ' || l_msg_context || ' and Attribute: '|| l_msg_attribute||' ) is defined as numeric but passed a
41928 s non-numeric/Errored';
41929 END;
41930 Raise E_ROUTINE_ERRORS;
41931 END;
41932
41933 END IF; --if G_AM_INSTALLED_PROFILE is true
41934
41935 -- begin shu, aso rounding
41936 FOR i IN get_request_type_code_cur LOOP
41937 G_REQUEST_TYPE_CODE:=i.request_type_code;
41938 END LOOP;
41939 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41940 engine_debug ('G_REQUEST_TYPE_CODE: '||G_REQUEST_TYPE_CODE);
41941 engine_debug ('G_TEMP_TABLE_INSERT_FLAG: '||G_TEMP_TABLE_INSERT_FLAG);
41942 END IF;
41943
41944 -- Code for Pattern Engine
41945 -- To get PTE code
41946
41947 BEGIN
41948 SELECT pte_code
41949 INTO G_PTE_CODE
41950 FROM QP_PTE_REQUEST_TYPES_B
41951 WHERE request_type_code = G_REQUEST_TYPE_CODE;
41952
41953 EXCEPTION
41954 WHEN OTHERS THEN
41955 G_PTE_CODE := NULL;
41956 END;
41957
41958 engine_debug ('G_PTE_CODE: '||G_PTE_CODE);
41959
41960 SELECT MIN(line_index), MAX(line_index)
41961 INTO G_MIN_LINE_INDEX,G_MAX_LINE_INDEX
41962 FROM QP_NPREQ_LINES_TMP;
41963
41964 engine_debug ('G_MIN_LINE_INDEX: '||G_MIN_LINE_INDEX);
41965 engine_debug ('G_MAX_LINE_INDEX: '||G_MAX_LINE_INDEX);
41966
41967 -- Pattern Code end
41968
41969
41970 IF (p_control_rec.rounding_flag IS NULL) THEN
41971 IF G_REQUEST_TYPE_CODE = 'ASO' AND G_TEMP_TABLE_INSERT_FLAG='Y' THEN
41972 G_ROUNDING_FLAG := 'Q';
41973 ELSE -- non 'ASO'
41974 G_ROUNDING_FLAG := 'Y';
41975 END IF;
41976 ELSE -- p_control_rec.rounding_flag not null, honor what is passed
41977 G_ROUNDING_FLAG := p_control_rec.rounding_flag;
41978 END IF;
41979 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41980 engine_debug ('G_ROUNDING_FLAG: '||G_ROUNDING_FLAG);
41981 END IF;
41982 -- end shu, aso rounding
41983
41984 -- Bug 3143535 - ORDER AMOUNT CALCULATION ISSUE
41985 -- if G_PRICE_PHASE_FLAG = TRUE then *** Comment for bug#3588320 ***
41986 OPEN order_amount_cur;
41987 FETCH order_amount_cur INTO G_BEFORE_PRICING_ORD_AMT;
41988 CLOSE order_amount_cur;
41989 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
41990 engine_debug ('G_BEFORE_PRICING_ORD_AMT: '||G_BEFORE_PRICING_ORD_AMT);
41991 END IF;
41992 -- end if;
41993
41994 IF (p_control_rec.calculate_flag = G_CALCULATE_ONLY) THEN
41995 qp_debug_util.tstart('CALL_CALCULATION_ENGINE_A','Procedure stage A call CALL_CALCULATION_ENGINE');
41996 CALL_CALCULATION_ENGINE(p_is_direct_call => TRUE,
41997 x_status_code =>l_return_status,
41998 x_status_text =>l_status_text);
41999 qp_debug_util.tstop('CALL_CALCULATION_ENGINE_A');
42000 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
42001 RAISE E_ROUTINE_ERRORS;
42002 END IF;
42003
42004 ELSIF (p_control_rec.calculate_flag IN (G_SEARCH_N_CALCULATE,G_SEARCH_ONLY) )THEN
42005
42006 -- 4227407/4361975, this call to update_rounding_factor used to be inside l_phase_cur
42007 -- shu, fix bug 2416047
42008 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42009 engine_debug('update_rounding_factor...');
42010 END IF;
42011 -- Update Rounding Factor, if rounding_flag not N -- Ravi, shu new rounding
42012 IF G_ROUNDING_FLAG <> 'N' THEN -- shu, aso rounding,
42013 UPDATE_ROUNDING_FACTOR (
42014 QP_PREQ_GRP.G_MCURR_INSTALLED_USED,
42015 l_return_status,
42016 l_status_text);
42017 END IF; -- end if rounding_flag
42018 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42019 RAISE E_ROUTINE_ERRORS;
42020 END IF;
42021
42022 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42023 engine_debug('BEFORE event phase loop');
42024 END IF;
42025 l_gone_in_phase_cur_loop := 'N';
42026 --KDURGASI changes for pattern based select modifiers
42027 IF G_QP_PATTERN_SEARCH IN (G_QP_PATTERN_MOD_SEARCH,G_QP_PATTERN_PRL_SEARCH,G_QP_PATTERN_BOTH_SEARCH) THEN
42028 qp_debug_util.tstart('populate_attr_values','Populate Hash Key Values');
42029 -- populate_attr_values(x_status_code => l_return_status,x_status_text => l_status_text);
42030 populate_segment_id(x_status_code => l_return_status,x_status_text => l_status_text);
42031 G_PATRNS_TWO_THREE_INSERTED := 'N'; --smuhamme, whethe pattern_id -2 and -3 inserted or not
42032 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
42033 RAISE E_ROUTINE_ERRORS;
42034 END IF;
42035 qp_debug_util.tstop('populate_attr_values');
42036 END IF;
42037 --KDURGASI changes for pattern based select modifiers
42038
42039 qp_debug_util.addSummaryTimeLog('Search time in each Phase:',1,1,0);
42040
42041 FOR I IN l_phase_cur(l_event_code => p_control_rec.pricing_event,
42042 l_event_code1 => p_control_rec.pricing_event || ',') LOOP
42043 l_gone_in_phase_cur_loop := 'Y';
42044 l_formula_processing := 'N'; --8892565
42045
42046 IF (l_prev_pricing_phase_id <> I.pricing_phase_id) THEN
42047
42048 l_prev_pricing_phase_id := I.pricing_phase_id;
42049
42050 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42051 engine_debug('Price Flag Yes Only : '||l_price_flag_yes_only);
42052 END IF;
42053
42054 IF (I.phase_sequence = G_PRICE_LIST_SEQUENCE AND G_MANUAL_ADJUSTMENTS_CALL_FLAG = G_NO AND l_price_flag_yes_only = G_YES) THEN
42055
42056 qp_debug_util.tstart('L_PHASE_CUR_LIST_PRICE','List Line Phase(Id) : '||I.name||' ('||I.pricing_phase_id||') ', false, true);
42057 --Set Global Flag ( Change)
42058 G_INSERT_INTO_FORMULA_TMP := TRUE;
42059 --G_INSERT_INTO_FORMULA_TMP := 'Y';
42060
42061 -- Call to Source Item Quantity
42062 /*IF (l_pricelist_phase_count = 0) THEN
42063 Source_Vol_Contexts_Attributes(I.PHASE_SEQUENCE,
42064 I.FREEZE_OVERRIDE_FLAG,
42065 nvl(p_control_rec.source_order_amount_flag,G_NO),
42066 l_return_status,
42067 l_status_text);
42068 l_pricelist_phase_count := l_pricelist_phase_count + 1;
42069 END IF;*/
42070
42071 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42072 engine_debug('Working on phase: '||I.pricing_phase_id);
42073 END IF;
42074
42075 -- Update the price list id , validated flag
42076 Update_Price_List_Information(I.freeze_override_flag, l_return_status, l_status_text); -- fix bug 2756754
42077 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
42078 Raise E_ROUTINE_ERRORS;
42079 END IF;
42080
42081 -- ********
42082 -- 4227047/4361975, the call to Update_Rounding_Factor that used to be here
42083 -- was moved to before this phase cursor
42084 IF G_QP_PATTERN_SEARCH IN (G_QP_PATTERN_PRL_SEARCH, G_QP_PATTERN_BOTH_SEARCH) THEN
42085 create_pattern(G_PRICE_LIST_PHASE_ID, x_status_code =>l_return_status, x_status_text=>l_status_text);
42086 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42087 RAISE E_ROUTINE_ERRORS;
42088 END IF;
42089 LIST_HEADER_PATTERN_SEARCH(
42090 p_pricing_phase_id => I.pricing_phase_id,
42091 p_freeze_override_flag => I.freeze_override_flag,
42092 p_control_rec => p_control_rec,
42093 x_status_code => l_return_status,
42094 x_status_text => l_status_text
42095 );
42096 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42097 RAISE E_ROUTINE_ERRORS;
42098 END IF;
42099 OPEN l_check_secondary_search;
42100 FETCH l_check_secondary_search INTO l_dummy;
42101
42102 IF l_check_secondary_search%FOUND THEN
42103 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42104 engine_debug('Trying to perform pattern Secondary Search ');
42105 END IF;
42106 PERFORM_SECONDARY_PATRN_SEARCH(I.freeze_override_flag,
42107 I.pattern_search_path,
42108 p_control_rec,
42109 l_return_status,
42110 l_status_text);
42111 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42112 RAISE E_ROUTINE_ERRORS;
42113 END IF;
42114 END IF;
42115 CLOSE l_check_secondary_search;
42116
42117 OPEN l_check_no_list_passed;
42118 FETCH l_check_no_list_passed INTO l_dummy;
42119
42120 IF (l_check_no_list_passed%FOUND and (I.SEARCH_FLAG = G_YES OR
42121 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) THEN
42122 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42123 engine_debug('Trying to Perform pattern BIG Search ');
42124 END IF;
42125
42126 SELECT_PRICE_LIST_LINES_PAT(
42127 p_pricing_phase_id => I.pricing_phase_id,
42128 p_freeze_override_flag => I.freeze_override_flag,
42129 p_search_path => I.pattern_search_path,
42130 p_control_rec => p_control_rec,
42131 x_status_code => l_return_status,
42132 x_status_text => l_status_text
42133 );
42134 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42135 RAISE E_ROUTINE_ERRORS;
42136 END IF;
42137 -- SELECT_PRICE_LIST_LINES_PATRN API CALL -- DEEPAK ADD CODE
42138
42139
42140 END IF;
42141
42142 CLOSE l_check_no_list_passed;
42143
42144 ELSE --G_QP_PATTERN_SEARCH
42145 qp_debug_util.tstart('PLL_LIST_HEADER_SEARCH','Price List Search - LIST_HEADER_SEARCH API');
42146 LIST_HEADER_SEARCH(p_pricing_phase_id => I.pricing_phase_id,
42147 p_is_price_list => TRUE,
42148 p_freeze_override_flag => I.freeze_override_flag,
42149 p_control_rec => p_control_rec,
42150 p_list_mode => 'PLL',
42151 x_further_search => l_further_search,
42152 x_status_code => l_return_status,
42153 x_status_text => l_status_text
42154 );
42155
42156 qp_debug_util.tstop('PLL_LIST_HEADER_SEARCH');
42157 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42158 RAISE E_ROUTINE_ERRORS;
42159 END IF;
42160
42161 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42162 engine_debug('l_further_search: '||l_further_search);
42163 engine_debug('l_further_search: '||l_further_search);
42164
42165 END IF;
42166 -- Do further search only if asked for using I.SEARCH_FLAG on the price list phase
42167 -- Bug# 1367546
42168
42169 IF (l_further_search = G_YES and (I.SEARCH_FLAG = G_YES or
42170 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) -- price book
42171 THEN
42172 qp_debug_util.tstart('SELECT_PRICE_LIST_LINES','Select Price List Lines(Search Flag on) - SELECT_PRICE_LIST_LINES API');
42173
42174 SELECT_PRICE_LIST_LINES(p_pricing_phase_id => I.pricing_phase_id,
42175 p_freeze_override_flag => I.freeze_override_flag,
42176 x_status_code => l_return_status,
42177 x_status_text => l_status_text,
42178 p_control_rec => p_control_rec); -- vivek\
42179 qp_debug_util.tstop('SELECT_PRICE_LIST_LINES');
42180 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42181 RAISE E_ROUTINE_ERRORS;
42182 END IF;
42183
42184 --perform grouping will group all the attributes which
42185 --contribute to one list. It will compare, the incoming
42186 --attributes against setup attributes. If the count all the
42187 --required attributes match, then it will UPDATE
42188 --pricing status code of the list from 'T'(transient) to 'N'
42189 --(new). If doesn't mathch then it will set the status as
42190 --D_GRP (DELETED by grouping).
42191
42192 --Evaluating between operator for both qualifiers and pricing attributes
42193 Evaluate_Between(I.pricing_phase_id,NULL,NULL,l_return_status,l_status_text);
42194
42195 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42196 RAISE E_ROUTINE_ERRORS;
42197 END IF;
42198
42199
42200 -- Check for multiple item categories and customer classes
42201 Eliminate_Multiple_Hierarchies(I.pricing_phase_id,l_return_status,l_status_text);
42202
42203 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42204 RAISE E_ROUTINE_ERRORS;
42205 END IF;
42206
42207 --Handle_Excluder(I.pricing_phase_id,NULL,l_return_status,l_status_text);
42208
42209 Perform_Grouping(I.pricing_phase_id, NULL,l_return_status, l_status_text);
42210
42211 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42212 RAISE E_ROUTINE_ERRORS;
42213 END IF;
42214
42215 --Process_Line_Group(I.pricing_phase_id);
42216
42217 --Evaluating between operator for both qualifiers and pricing attributes
42218 Evaluate_Between(I.pricing_phase_id,'Y',NULL,l_return_status,l_status_text);
42219
42220 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42221 RAISE E_ROUTINE_ERRORS;
42222 END IF;
42223
42224 QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty
42225 (p_line_index => NULL,
42226 p_order_uom_code => NULL,
42227 p_order_qty => NULL,
42228 p_pricing_phase_id => I.pricing_phase_id,
42229 p_call_big_search => TRUE,
42230 x_list_line_id => l_list_line_id,
42231 x_return_status => l_return_status,
42232 x_return_status_txt => l_status_text);
42233
42234 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42235 RAISE E_ROUTINE_ERRORS;
42236 END IF;
42237
42238 -- 3773652
42239 -- re-run Evaluate_Between after UOM conversion to check PLL really qualifies
42240 begin
42241 select 'x' into l_dummy
42242 from qp_npreq_lines_tmp
42243 where LINE_UOM_CODE <> nvl(PRICED_UOM_CODE, LINE_UOM_CODE)
42244 and (PRICE_FLAG = G_YES
42245 or
42246 PRICE_FLAG = G_PHASE and l_freeze_override_flag = G_YES)
42247 and rownum = 1;
42248
42249 Evaluate_Between(i.pricing_phase_id,NULL,NULL,l_return_status,l_status_text);
42250 exception
42251 when no_data_found then
42252 null;
42253 end;
42254
42255
42256 Update_Request_Line_Status(p_control_rec,'SUCCESS',i.freeze_override_flag,l_return_status,l_status_text); --[julin/4708044]
42257 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42258 RAISE E_ROUTINE_ERRORS;
42259 END IF;
42260
42261
42262 --bug# 2091386 not reflecting the right price on change on UOM on the order line . Since
42263 --QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty determines the pricing_qty
42264 --which is needed later in Get_Eligible_Price_Break we need to call Get_Eligible_Price_Break
42265 --after QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty.
42266 --By doing this we will get the right price in the PRICE event on change of UOM on the order line
42267 --for price based on price break
42268 Get_Eligible_Price_Break(I.pricing_phase_id,NULL,l_return_status,l_status_text);
42269
42270 -- Update the request line status for lines which got valid price list
42271
42272 --delete children lines of PBH if the parent PBH line get eliminated in
42273 --QP_Resolve_Incompatability_PVT
42274
42275 /*OPEN l_chk_deleted_pbh_cur(J.line_index,G_PRICE_LIST_PHASE_ID);
42276 FETCH l_chk_deleted_pbh_cur INTO l_dummy;
42277 IF l_chk_deleted_pbh_cur%FOUND THEN
42278 Delete_Invalid_PBH_Children(J.line_index,G_PRICE_LIST_PHASE_ID);
42279 END IF;
42280 CLOSE l_chk_deleted_pbh_cur;*/
42281
42282 END IF; -- l_further_search
42283 END IF; --G_QP_PATTERN_PRL_SEARCH
42284 -- Bug 3183982, following 4 lines added
42285 CREATE_QUALIFIER_FROM_LIST(l_return_status,l_status_text);
42286 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42287 RAISE E_ROUTINE_ERRORS;
42288 END IF;
42289
42290 -- Formula Integration
42291 Formula_Processing(NULL, --J.LINE_INDEX,
42292 I.pricing_phase_id,
42293 l_return_status,
42294 l_status_text);
42295
42296 /*IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42297 DELETE_LINES(J.LINE_INDEX,
42298 l_return_status,
42299 l_status_text);
42300 END IF;*/
42301
42302
42303 -- vivek, call new API
42304 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
42305 G_MCURR_INSTALLED_USED := 'Y'; -- shulin, used in QPXPCLPB Calculate_List_Price
42306 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42307 engine_debug('multi-currency TRUE - calling QP_MULTI_CURRENCY_PVT.CURRENCY_CONVERSION_API');
42308 END IF;
42309 QP_MULTI_CURRENCY_PVT.CURRENCY_CONVERSION_API(
42310 P_USER_CONVERSION_RATE => P_CONTROL_REC.USER_CONVERSION_RATE
42311 ,P_USER_CONVERSION_TYPE => P_CONTROL_REC.USER_CONVERSION_TYPE
42312 ,P_FUNCTION_CURRENCY => P_CONTROL_REC.FUNCTION_CURRENCY
42313 ,P_ROUNDING_FLAG => nvl(P_CONTROL_REC.ROUNDING_FLAG, 'Y')
42314 );
42315 end if;
42316 -- Calculation Engine
42317 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42318 engine_debug('------Before 1st call cal-----------');
42319
42320 END IF;
42321
42322 -- Bug 3183982, following 4 lines commented and moved above before calling formula engine
42323 --CREATE_QUALIFIER_FROM_LIST(l_return_status,l_status_text);
42324 --IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42325 -- RAISE E_ROUTINE_ERRORS;
42326 --END IF;
42327
42328 -- IF p_control_rec.calculate_flag = G_SEARCH_N_CALCULATE THEN
42329 qp_debug_util.tstart('CALL_CALCULATION_ENGINE_B','Procedure stage B call CALL_CALCULATION_ENGINE');
42330 Call_Calculation_Engine(p_phase_sequence => I.phase_sequence,
42331 p_freeze_override_flag => I.freeze_override_flag,
42332 x_status_code =>l_return_status,
42333 x_status_text =>l_status_text);
42334 qp_debug_util.tstop('CALL_CALCULATION_ENGINE_B');
42335 -- END IF;
42336
42337 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42338 RAISE E_ROUTINE_ERRORS;
42339 END IF;
42340
42341 --If it is a price list sequence we need to create this
42342 --list as a qualifier for next phase. Because price list itself
42343 --can be a qualifier for next phase.
42344
42345 qp_debug_util.tstop('L_PHASE_CUR_LIST_PRICE',l_tot_phase_time);
42346 qp_debug_util.addSummaryTimeLog(I.name || ' : ' ||i.pattern_search_path_desc || ' : ' || l_tot_phase_time || 'ms',0,2,0);
42347 ELSE -- not a price list sequence
42348 --KDURGASI changes for pattern based select modifiers
42349 qp_debug_util.tstart('L_PHASE_CUR_MODIFIERS','Modifiers Phase(Id) : '||I.name||' ('||I.pricing_phase_id||') ', false, true);
42350
42351 IF G_QP_PATTERN_SEARCH IN (G_QP_PATTERN_MOD_SEARCH, G_QP_PATTERN_BOTH_SEARCH) then
42352 create_pattern(i.pricing_phase_id, x_status_code =>l_return_status, x_status_text=>l_status_text);
42353 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42354 RAISE E_ROUTINE_ERRORS;
42355 END IF;
42356 END IF;
42357
42358 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42359 engine_debug ('Starting new a phase, pricing phase id :' || i.pricing_phase_id);
42360 END IF;
42361 --do not execute the rest is there is no list lines at all
42362 --in those rarely used phase.
42363
42364 -- [julin/4329337/4336077] checking for price list phase before l_chk_phase_exists
42365 IF (i.pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
42366 l_exec_flag := G_NO;
42367 ELSE
42368 --IF i.pricing_phase_id >= l_rare_phase_id THEN
42369 OPEN l_chk_phase_exists(i.pricing_phase_id);
42370 FETCH l_chk_phase_exists INTO l_dummy;
42371 IF l_chk_phase_exists%NOTFOUND THEN
42372 l_exec_flag := G_NO;
42373 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42374 engine_debug('In rare_phase_id:'||i.pricing_phase_id||' exec_flag set to N');
42375 END IF;
42376 ELSE
42377 l_exec_flag := G_YES;
42378 END IF;
42379 CLOSE l_chk_phase_exists;
42380 --END IF;
42381 END IF;
42382
42383 -- shu, get price_list_header_id for ORDER event, manual adjustments BATCH EVENT
42384 -- so we can update rounding factor in lines_tmp
42385
42386 IF (G_PRICE_PHASE_FLAG=FALSE) THEN
42387
42388 --[julin/pricebook] added hint
42389 UPDATE qp_npreq_lines_tmp a
42390 SET (price_list_header_id,validated_flag) =
42391 (SELECT /*+ index(b QP_PREQ_LINE_ATTRS_TMP_N2) */ distinct qp_number.canonical_to_number(value_from),validated_flag
42392 FROM qp_npreq_line_attrs_tmp b
42393 WHERE a.line_index = b.line_index
42394 AND context = G_LIST_HEADER_CONTEXT
42395 AND attribute = G_PRICELIST_ATTRIBUTE
42396 AND attribute_type = G_QUALIFIER_TYPE
42397 AND pricing_status_code = G_STATUS_UNCHANGED
42398 AND a.PRICE_LIST_HEADER_ID < 0 )
42399 WHERE a.PRICE_LIST_HEADER_ID < 0;
42400
42401 -- ********
42402 -- 4227047/4361975, the call to Update_Rounding_Factor that used to be here
42403 -- was moved to before this phase cursor
42404
42405 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42406 engine_debug('update_rounding_factor...');
42407 END IF;
42408 -- 9856359
42409 -- Update Rounding Factor, if rounding_flag not N -- Ravi, shu new rounding
42410 IF G_ROUNDING_FLAG <> 'N' THEN -- shu, aso rounding,
42411 UPDATE_ROUNDING_FACTOR (
42412 QP_PREQ_GRP.G_MCURR_INSTALLED_USED,
42413 l_return_status,
42414 l_status_text);
42415 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42416 RAISE E_ROUTINE_ERRORS;
42417 END IF;
42418 END IF; -- end if rounding_flag
42419 --9856359
42420 END IF; /* G_PRICE_PHASE_FLAG = FALSE */
42421
42422 IF l_exec_flag = G_YES THEN
42423
42424 IF (l_discount_phase_count = 0) THEN
42425
42426 --Set Global Flag
42427 G_INSERT_INTO_FORMULA_TMP := TRUE;
42428 --G_INSERT_INTO_FORMULA_TMP := 'Y';
42429
42430 Source_Vol_Contexts_Attributes(I.PHASE_SEQUENCE,
42431 I.FREEZE_OVERRIDE_FLAG,
42432 nvl(p_control_rec.source_order_amount_flag,G_NO),
42433 l_return_status,
42434 l_status_text);
42435 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42436 RAISE E_ROUTINE_ERRORS;
42437 END IF;
42438
42439 Update_Distinct_Qualifier_Flag(l_return_status,l_status_text);
42440 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42441 RAISE E_ROUTINE_ERRORS;
42442 END IF;
42443
42444 l_discount_phase_count := l_discount_phase_count + 1;
42445 END IF;
42446
42447
42448 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42449 engine_debug('#9999999999990');
42450
42451 END IF;
42452 qp_debug_util.tstart('DIS_LIST_HEADER_SEARCH','Modifier Search - LIST_HEADER_SEARCH API');
42453 LIST_HEADER_SEARCH(p_pricing_phase_id => I.pricing_phase_id,
42454 p_is_price_list => FALSE,
42455 p_freeze_override_flag => I.freeze_override_flag,
42456 p_control_rec => p_control_rec,
42457 p_list_mode => 'DIS',
42458 x_further_search => l_further_search,
42459 x_status_code => l_return_status,
42460 x_status_text => l_status_text
42461 );
42462 qp_debug_util.tstop('DIS_LIST_HEADER_SEARCH');
42463 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42464 RAISE E_ROUTINE_ERRORS;
42465 END IF;
42466
42467
42468
42469 --only modifiers look at search flag
42470 IF (I.SEARCH_FLAG = G_YES) THEN
42471
42472 l_disc_exist_flag := 'Y';
42473 --KDURGASI changes for pattern based select modifiers
42474 IF G_QP_PATTERN_SEARCH IN (G_QP_PATTERN_MOD_SEARCH, G_QP_PATTERN_BOTH_SEARCH) THEN
42475 qp_debug_util.tstart('PATRN_SELECT_MODIFIERS','Modifier Selection - SELECT_MODIFIERS API');
42476 Select_modifiers_patrn (p_pricing_phase_id => I.pricing_phase_id,
42477 p_freeze_override_flag => I.freeze_override_flag,
42478 p_search_path => I.pattern_search_path,
42479 x_status_code => l_return_status,
42480 x_status_text => l_status_text);
42481 engine_debug('Select_modifiers_patrn-success-'||l_return_status);
42482 qp_debug_util.tstop('PATRN_SELECT_MODIFIERS');
42483
42484 ELSE --KDURGASI changes for pattern based select modifiers
42485
42486 qp_debug_util.tstart('SELECT_MODIFIERS','Modifier Selection - SELECT_MODIFIERS API');
42487 SELECT_MODIFIERS(p_pricing_phase_id => I.pricing_phase_id,
42488 p_freeze_override_flag => I.freeze_override_flag,
42489 x_status_code => l_return_status,
42490 x_status_text => l_status_text);
42491
42492 qp_debug_util.tstop('SELECT_MODIFIERS');
42493 END IF;
42494 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42495 RAISE E_ROUTINE_ERRORS;
42496 END IF;
42497 END IF;
42498
42499 IF G_QP_PATTERN_SEARCH NOT IN (G_QP_PATTERN_MOD_SEARCH, G_QP_PATTERN_BOTH_SEARCH) THEN --KDURGASI changes for pattern based select modifiers
42500 -- Check for multiple item categories and customer classes
42501 Eliminate_Multiple_Hierarchies(I.pricing_phase_id,l_return_status,l_status_text);
42502
42503 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42504 RAISE E_ROUTINE_ERRORS;
42505 END IF;
42506
42507 --Evaluating between operator for only pricing attributes and not qualifiers
42508 Evaluate_Between(I.pricing_phase_id,NULL,NULL,l_return_status,l_status_text);
42509
42510 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42511 RAISE E_ROUTINE_ERRORS;
42512 END IF;
42513
42514 -- Not needed in modifiers phases as l_outer_qual_cur takes care of this
42515 --Handle_Excluder(I.pricing_phase_id,l_return_status,l_status_text);
42516
42517 -- Only product grouping is done in this ...
42518 Perform_Grouping(I.pricing_phase_id, NULL,l_return_status, l_status_text);
42519
42520 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42521 RAISE E_ROUTINE_ERRORS;
42522 END IF;
42523 END IF; --KDURGASI changes for pattern based select modifiers
42524 Process_Line_Group(I.pricing_phase_id,l_return_status,l_status_text);
42525 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42526 RAISE E_ROUTINE_ERRORS;
42527 END IF;
42528
42529 --Evaluating between operator for both qualifiers and pricing attributes
42530 Evaluate_Between(I.pricing_phase_id,'Y',NULL,l_return_status,l_status_text);
42531
42532 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42533 RAISE E_ROUTINE_ERRORS;
42534 END IF;
42535
42536 Get_Eligible_Price_Break(I.pricing_phase_id,NULL,l_return_status,l_status_text);
42537 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42538 RAISE E_ROUTINE_ERRORS;
42539 END IF;
42540
42541 --[julin/5529345]
42542 QP_Process_Other_Benefits_PVT.Calculate_Recurring_Quantity(I.pricing_phase_id, l_return_status, l_status_text);
42543
42544 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42545 RAISE E_ROUTINE_ERRORS;
42546 END IF;
42547
42548 FOR J IN l_get_line_index_cur(I.pricing_phase_id)
42549 LOOP
42550 OPEN l_get_list_price_cur(J.LINE_INDEX);
42551 FETCH l_get_list_price_cur
42552 INTO l_list_price,l_line_quantity,l_priced_quantity,l_priced_uom_code,l_line_uom_code,l_pricing_effective_date;
42553 CLOSE l_get_list_price_cur;
42554
42555 Delete_Un_Asked_For_Promotions(J.LINE_INDEX,
42556 I.pricing_phase_id,
42557 I.INCOMPAT_RESOLVE_CODE,
42558 l_return_status,
42559 l_status_text);
42560
42561 -- OID/PRG/DIS/Freight Charges
42562 QP_Process_Other_Benefits_PVT.Process_Other_Benefits
42563 (J.LINE_INDEX,
42564 I.pricing_phase_id,
42565 l_pricing_effective_date,
42566 l_priced_quantity,
42567 p_control_rec.simulation_flag,
42568 l_return_status,
42569 l_status_text);
42570
42571 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42572 DELETE_LINES(J.LINE_INDEX,
42573 l_return_status,
42574 l_status_text,
42575 l_error_status_code,
42576 l_error_status_text);
42577 END IF;
42578
42579 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42580 engine_debug('list price after phase 1 :'||l_list_price);
42581 END IF;
42582
42583 --best_price_formula evaluation project 8892565 begin
42584 IF(NVL(Fnd_Profile.value('QP_BEST_PRICE_FORMULA_EVALUATION'),'N')='Y') THEN
42585 IF (l_formula_processing = 'N') then
42586 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42587 engine_debug ('Best price Formula Processing begin');
42588 END IF;
42589 Formula_Processing(null,--J.LINE_INDEX,
42590 I.pricing_phase_id,
42591 l_return_status,
42592 l_status_text);
42593 l_formula_processing :='Y';
42594 END if;
42595 END IF;
42596 --end best_price_formula evaluation project 8892565 end
42597
42598 --IF (l_list_price IS NOT NULL) THEN
42599 IF (I.INCOMPAT_RESOLVE_CODE = G_INCOMP_PRECEDENCE) THEN
42600 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42601 engine_debug('Precedence evaluation');
42602 END IF;
42603 --qp_debug_util.tstart('RESOLVE_INCOMPATABILITY','Resolving Modifiers Incompatability - Resolve_Incompatability API');
42604 QP_Resolve_Incompatability_PVT.Resolve_Incompatability
42605 (I.pricing_phase_id,
42606 G_DISCOUNT_PROCESSING,
42607 l_list_price,
42608 J.LINE_INDEX,
42609 l_return_status,
42610 l_status_text);
42611 --qp_debug_util.tstop('RESOLVE_INCOMPATABILITY');
42612 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42613 RAISE E_ROUTINE_ERRORS;
42614 END IF;
42615 ELSIF (I.INCOMPAT_RESOLVE_CODE = G_INCOMP_BEST_PRICE) THEN
42616 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42617 engine_debug('Best price for phase');
42618 END IF;
42619 QP_Resolve_Incompatability_PVT.Best_Price_For_Phase
42620 (l_list_price,
42621 J.LINE_INDEX,
42622 I.pricing_phase_id,
42623 l_return_status,
42624 l_status_text);
42625 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42626 RAISE E_ROUTINE_ERRORS;
42627 END IF;
42628 ELSE
42629 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42630 engine_debug('Error, invalid incomp code: '||I.INCOMPAT_RESOLVE_CODE);
42631 END IF;
42632 END IF;
42633 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42634 engine_debug ('G_LINE_DETAIL_INDEX 6: '||G_LINE_DETAIL_INDEX);
42635 END IF;
42636
42637 --check if there is a pbh line deleted by incomp
42638 --if it has one, delete the children lines.
42639 OPEN l_chk_deleted_pbh_cur(J.line_index,I.pricing_phase_id);
42640 FETCH l_chk_deleted_pbh_cur INTO l_dummy;
42641 IF l_chk_deleted_pbh_cur%FOUND THEN
42642 Delete_Invalid_PBH_Children(J.line_index,I.pricing_phase_id,l_return_status,l_status_text);
42643 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42644 RAISE E_ROUTINE_ERRORS;
42645 END IF;
42646 END IF;
42647 CLOSE l_chk_deleted_pbh_cur;
42648
42649 --END IF;
42650
42651
42652 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
42653 DELETE_LINES(J.LINE_INDEX,
42654 l_return_status,
42655 l_status_text,
42656 l_error_status_code,
42657 l_error_status_text);
42658 END IF;
42659
42660 END LOOP; --l_get_line_index_cur
42661
42662 -- Formula Processing
42663 --best_price_formula evaluation project 8892565 begin
42664 IF(NVL(Fnd_Profile.value('QP_BEST_PRICE_FORMULA_EVALUATION'),'N')='N') THEN
42665 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42666 engine_debug ('Normal flow Formula Processing begin');
42667 END IF;
42668 Formula_Processing(NULL, --J.LINE_INDEX,
42669 I.pricing_phase_id,
42670 l_return_status,
42671 l_status_text);
42672 END IF;
42673 --best_price_formula evaluation project 8892565 end
42674
42675 /*IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42676 DELETE_LINES(J.LINE_INDEX,
42677 l_return_status,
42678 l_status_text);
42679 END IF;*/
42680 END IF; --end if for if l_exec_flag=G_YES
42681 qp_debug_util.tstop('L_PHASE_CUR_MODIFIERS',l_tot_phase_time);
42682 qp_debug_util.addSummaryTimeLog(I.name || ' : ' ||i.pattern_search_path_desc || ' : ' || l_tot_phase_time || 'ms',0,2,0);
42683 END IF; --end if for if price_list_sequence
42684 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42685 engine_debug('calling Set_Order_List_Rltd');
42686 END IF;
42687
42688
42689 Set_Order_Level_Rltd(p_freeze_override_flag =>I.freeze_override_flag,
42690 p_pricing_phase_id =>I.pricing_phase_id,
42691 x_status_code =>l_return_status,
42692 x_status_text =>l_status_text);
42693 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42694 RAISE E_ROUTINE_ERRORS;
42695 END IF;
42696 END IF; -- l_pricing_phase_id <> I.pricing_phase_id
42697 END LOOP l_phase_cur;
42698
42699 IF G_QP_PATTERN_SEARCH IN (G_QP_PATTERN_MOD_SEARCH, G_QP_PATTERN_BOTH_SEARCH, G_QP_PATTERN_PRL_SEARCH) THEN
42700 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42701 l_devlp_log_dumped := 'Y';
42702 qp_Debug_util.print_development_csv;
42703 END IF;
42704 END IF;
42705
42706 --Bug fix 3963888 - Call UPDATE_ROUNDING_FACTOR if l_phase_cur cursor did not return any record
42707 If l_gone_in_phase_cur_loop = 'N' then
42708 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42709 engine_debug('l_gone_in_phase_cur_loop is N');
42710 END IF;
42711 -- Update Rounding Factor, if rounding_flag not N -- Ravi, shu new rounding
42712 IF G_ROUNDING_FLAG <> 'N' THEN -- shu, aso rounding,
42713 UPDATE_ROUNDING_FACTOR (
42714 QP_PREQ_GRP.G_MCURR_INSTALLED_USED,
42715 l_return_status,
42716 l_status_text);
42717
42718 END IF; -- end if rounding_flag
42719 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42720 RAISE E_ROUTINE_ERRORS;
42721 END IF;
42722 End if;
42723
42724 l_product_app_id := 661; -- bug 3963628
42725
42726 OPEN pricing_install_status_cur;
42727 FETCH pricing_install_status_cur into l_install_status;
42728 CLOSE pricing_install_status_cur;
42729
42730 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42731 engine_debug('Pricing Install Status : ' || l_install_status);
42732 engine_debug('Limits Install Status : ' || l_limits_installed);
42733
42734 END IF;
42735 --4900095
42736 IF QP_PREQ_GRP.G_Service_line_qty_tbl.COUNT = 0 THEN
42737 QP_PREQ_PUB.Determine_svc_item_quantity;
42738 END IF;
42739 -- Reset
42740 -- This global variable is used to not calculate the Recurring Qty routine and update the Operand
42741 -- if Limits Code is called to avoid second time calculation of the OPERAND value from the Calculation Engine
42742 -- QP_Process_Other_Limits.Calculate_Recurring_Qty
42743 G_LIMITS_CODE_EXECUTED := 'N';
42744
42745 -- If advanced pricing and limits profile option = 'Y' call calc engine for limits
42746 IF (l_install_status = 'I' and l_limits_installed = G_YES and
42747 UPPER(p_control_rec.simulation_flag) = 'N' and
42748 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES) -- price book
42749 THEN
42750 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42751 engine_debug('------Advanced Pricing and Limits Profile is Set-----------');
42752 END IF;
42753 --IF p_control_rec.calculate_flag = G_SEARCH_N_CALCULATE THEN -- check not needed once limits are installed
42754 qp_debug_util.tstart('CALL_CALCULATION_ENGINE_C','Procedure stage C call CALL_CALCULATION_ENGINE');
42755 Call_Calculation_Engine(x_status_code =>l_return_status,
42756 x_status_text =>l_status_text);
42757 qp_debug_util.tstop('CALL_CALCULATION_ENGINE_C');
42758 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
42759 RAISE E_ROUTINE_ERRORS;
42760 END IF;
42761
42762 G_LIMITS_CODE_EXECUTED := 'Y';
42763
42764 --END IF;
42765 ELSE
42766 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42767 engine_debug('------Not calling calculation Engine of limits-----------');
42768 END IF;
42769 END IF ; --l_install_status = 'I' and l_limits_installed = G_YES
42770
42771 END IF; -- END IF for G_SEARCH_ONLY or G_SEARCH_N_CALCULATE
42772
42773
42774 IF (l_install_status = 'I' and l_limits_installed = G_YES and
42775 UPPER(p_control_rec.simulation_flag) = 'N' and
42776 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES) -- price book
42777 THEN
42778 qp_debug_util.tstart('LIMITS_CALCULATION','Inside LIMITS_CALCULATION');
42779 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42780 engine_debug('------Advanced Pricing and Limits Profile is Set 2 -----------');
42781
42782 END IF;
42783 --Call the Delete Transactions API only if there is atleast one record in
42784 --qp_limit_transactions table(that is, if limits functionality being used)
42785 OPEN limit_trans_cur;
42786 FETCH limit_trans_cur INTO l_trans;
42787
42788 IF limit_trans_cur%FOUND THEN
42789 QP_Limit_Transactions_PVT.Delete(p_control_rec.pricing_event, l_return_status);
42790 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42791 RAISE E_ROUTINE_ERRORS;
42792 END IF;
42793 END IF;
42794 CLOSE limit_trans_cur;
42795
42796 OPEN l_limit_check_cur;
42797 FETCH l_limit_check_cur INTO l_header_limit_exists , l_line_limit_exists;
42798 CLOSE l_limit_check_cur;
42799
42800 -- Process Limits and call calculation engine
42801 IF (l_header_limit_exists = G_YES or l_line_limit_exists = G_YES) THEN
42802 -- Bug 3143535
42803 -- get the order amount from attributes. if not found then sum it from order lines
42804 begin
42805 select qp_number.canonical_to_number(value_from) -- 5515203
42806 into v_order_amount
42807 from qp_npreq_line_attrs_tmp
42808 where CONTEXT = G_PRIC_VOLUME_CONTEXT
42809 AND ATTRIBUTE = G_ORDER_AMOUNT_ATTRIBUTE
42810 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
42811 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
42812 and rownum = 1;
42813 exception
42814 when no_data_found then
42815 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42816 engine_debug ('order amount not found in attributes ');
42817 END IF;
42818 OPEN order_amount_cur;
42819 FETCH order_amount_cur INTO v_order_amount;
42820 CLOSE order_amount_cur;
42821 end;
42822
42823 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42824 engine_debug ('Total order amount = ' || v_order_amount);
42825 END IF;
42826
42827 /*
42828 INDX,QP_PREQ_GRP.price_request.price_request_upd1,qp_npreq_lines_tmp_N2,LINE_TYPE_CODE,1
42829 */
42830 UPDATE qp_npreq_lines_tmp
42831 SET UNIT_PRICE = v_order_amount,
42832 PRICED_QUANTITY = 1
42833 WHERE LINE_TYPE_CODE = 'ORDER';
42834
42835 QP_Limit_Balance_Check_PVT.Process_Limits(l_return_status,l_status_text);
42836
42837 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
42838 RAISE E_ROUTINE_ERRORS;
42839 END IF;
42840
42841 --fix for bug 4765137
42842 --to call the delete txn API to delete the limit transactions
42843 --for the modifiers that the process_limits API marked deleted
42844 --during exceptions
42845 --note that the delete API was already called earlier to delete
42846 --the transactions for the modifiers the search engine did not apply
42847 --need to call the delete API again after process_limits which will also
42848 --update the balance
42849 --Call the Delete Transactions API only if there is atleast one record in
42850 --qp_limit_transactions table(that is, if limits functionality being used)
42851 OPEN limit_trans_cur;
42852 FETCH limit_trans_cur INTO l_trans;
42853
42854 IF limit_trans_cur%FOUND THEN
42855 QP_Limit_Transactions_PVT.Delete(p_control_rec.pricing_event, l_return_status);
42856 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
42857 RAISE E_ROUTINE_ERRORS;
42858 END IF;--l_return_status
42859 END IF;--limit_trans_cur%FOUND
42860 CLOSE limit_trans_cur;
42861 --end fix for bug 4765137
42862
42863
42864 END IF ;
42865 qp_debug_util.tstop('LIMITS_CALCULATION');
42866 END IF; --l_install_status = 'I' and l_limits_installed = G_YES
42867
42868 -- Do not Call Calculation Engine if it is from public API Call
42869 -- l_disc_exist_flag will be G_YES when there are discounts. Make a second calculation engine call
42870 -- only if there are discounts,since calculation engine is called for pricing once
42871 IF (G_PUBLIC_API_CALL_FLAG = G_NO and l_disc_exist_flag = G_YES) THEN
42872 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42873 engine_debug('------Calling Calculation Engine as the call is from Group Engine Call-----------');
42874 END IF;
42875 qp_debug_util.tstart('CALL_CALCULATION_ENGINE_D','Procedure stage D call CALL_CALCULATION_ENGINE');
42876 Call_Calculation_Engine(x_status_code =>l_return_status,
42877 x_status_text =>l_status_text);
42878 qp_debug_util.tstop('CALL_CALCULATION_ENGINE_D');
42879 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
42880 RAISE E_ROUTINE_ERRORS;
42881 END IF;
42882 ELSE
42883 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42884 engine_debug('------Not Calling Calculation Engine as the call is from Public Engine Call-----------');
42885 END IF;
42886 END IF;
42887
42888 qp_debug_util.tstart('REDEEM_COUPONS','Procedure QP_COUPON_PVT.REDEEM_COUPONS');
42889 l_status_text:='QP_COUPON_PVT.REDEEM_COUPONS';
42890 QP_COUPON_PVT.REDEEM_COUPONS(p_control_rec.simulation_flag, l_return_status, l_status_text);
42891 qp_debug_util.tstop('REDEEM_COUPONS');
42892 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
42893 l_status_text:= 'QP_COUPON_PVT.REDEEM_COUPONS'||l_status_text;
42894 RAISE E_ROUTINE_ERRORS;
42895 END IF;
42896 -----------------END: Specific to PL/SQL Engine----------------------
42897 ELSE --Java Engine installed
42898 -----------------START: Specific to Java Engine------------------------
42899 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42900 engine_debug('Before calling QP_JAVA_ENGINE.request_price..');
42901 l_begin_time := dbms_utility.get_time;
42902 END IF;
42903
42904 l_request_id := QP_Price_Request_Context.GET_REQUEST_ID;
42905 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42906 engine_debug('Request Id:'||l_request_id);
42907 engine_debug('calc_flag:'||p_control_rec.calculate_flag);
42908 END IF;
42909
42910 QP_JAVA_ENGINE.request_price(request_id => l_request_id,
42911 p_control_rec => p_control_rec,
42912 x_return_status => l_return_status,
42913 x_return_status_text => l_status_Text);
42914
42915 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
42916 --l_status_text:= 'QP_JAVA_ENGINE.request_price:'||l_status_text;
42917 RAISE E_ROUTINE_ERRORS;
42918 END IF;
42919 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42920 l_end_time := dbms_utility.get_time;
42921 engine_debug('Elapsed time for calling QP_JAVA_ENGINE: '||(l_end_time - l_begin_time)/100);
42922 END IF;
42923 --------------END: Specific to Java Engine------------------
42924 END IF; -- DONE PL/SQL and JAVA ENGINE CALL SWITCH by yangli
42925
42926 --============START: Populate_Output() needed by Java and PL/SQL engine=============
42927 IF (G_TEMP_TABLE_INSERT_FLAG = G_YES and G_PUBLIC_API_CALL_FLAG = G_NO) THEN
42928 Populate_Output ( l_line_tbl,
42929 l_line_qual,
42930 l_line_attr_tbl,
42931 l_line_detail_tbl,
42932 l_line_detail_qual_tbl,
42933 l_line_detail_attr_tbl,
42934 l_related_lines_tbl);
42935
42936 x_line_tbl := l_line_tbl;
42937 x_line_qual := l_line_qual;
42938 x_line_attr_tbl := l_line_attr_tbl;
42939 x_line_detail_tbl := l_line_detail_tbl;
42940 x_line_detail_qual_tbl := l_line_detail_qual_tbl;
42941 x_line_detail_attr_tbl := l_line_detail_attr_tbl;
42942 x_related_lines_tbl := l_related_lines_tbl;
42943
42944 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42945 engine_debug('No of record in x_line_detail_attr_tbl: '|| x_line_detail_attr_tbl.count);
42946
42947 END IF;
42948 END IF;
42949 --===========END: Populate_Output() needed by both Java Engine and PL/SQL engine=======
42950
42951 --l_pricing_end_time := sysdate;
42952
42953 --l_pricing_end_time := dbms_utility.get_time;
42954
42955
42956 --l_time_difference := (l_pricing_end_time - l_pricing_start_time)/100 ;
42957
42958 --============START: Debug Viewer needed by Java and PL/SQL engine=============
42959 IF G_QP_DEBUG_PROFILE_VALUE = G_ENGINE_TIME_TRACE_ON THEN --3085171
42960 --added to note redo log
42961 begin
42962 select value into l_pricing_end_redo
42963 from v$mystat, v$statname
42964 where v$mystat.statistic# = v$statname.statistic#
42965 and v$statname.name = 'redo size';
42966 exception
42967 when others then
42968 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42969 engine_debug('Error in looking up redo end '||SQLERRM);
42970 END IF;
42971 end;
42972 END IF;
42973
42974 --hw
42975 -- change session time and session redo
42976 g_start_time := g_total_time;
42977 g_start_redo := g_total_redo;
42978 g_total_time := g_total_time + (dbms_utility.get_time - l_pricing_start_time)/100;
42979 g_total_redo := g_total_redo + (l_pricing_end_redo - l_pricing_start_redo);
42980
42981 --Changes for bug2961617
42982 /*
42983 execute immediate 'select ' || '''' || 'QP_PREQ_GRP: version, start redo, total redo, start time, total time: ' || G_VERSION || ', ' || g_start_redo || ', ' || g_total_redo || ', ' || g_start_time || ', ' || g_total_time || '''' || ' from dual ';
42984 */
42985
42986 IF G_QP_DEBUG_PROFILE_VALUE = G_ENGINE_TIME_TRACE_ON THEN --3085171
42987 BEGIN
42988
42989 execute immediate 'select ' || '''' || 'QP_PREQ_GRP: version, start redo, total redo, start time, total time: ' || G_VERSION || ', ' || g_start_redo || ', ' || g_total_redo || ', ' || g_start_time || ', ' || g_total_time || '''' || ' from dual ';
42990 /*
42991 SELECT 'QP_PREQ_GRP: version, start redo, total redo, start time, total time: '||G_VERSION ||g_start_redo ||g_total_redo ||g_start_time ||g_total_time INTO l_time_stats FROM DUAL;
42992 */
42993
42994 EXCEPTION
42995
42996 WHEN OTHERS THEN
42997 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
42998 engine_debug('< In Price_Request procedure>. Failed to get time statistics');
42999 END IF;
43000 END;
43001 END IF;
43002
43003 /*
43004 l_redo_difference := l_pricing_end_redo - l_pricing_start_redo ;
43005
43006 execute immediate 'select '||''''|| ' Total Time in QP_PREQ_GRP(in sec) : ' || l_time_difference||' Total redo in QP_PREQ_GRP : '||l_redo_difference||''''||' from dual ';
43007 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43008 engine_debug('redo log in GRP '||l_redo_difference);
43009 END IF;
43010 */
43011
43012 /* IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
43013 x_return_status := FND_API.G_RET_STS_ERROR;
43014 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43015 engine_debug('< In Price_Request procedure>. Populate_Temp_Tables return with errors');
43016 END IF;
43017 RETURN;
43018 END IF; */
43019
43020 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
43021 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
43022 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
43023 QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES(p_control_rec,
43024 l_return_status,
43025 l_status_text
43026 );
43027 --x_return_status := l_return_status; -- fix bug 2756754
43028 --x_return_status_text := l_status_text; -- fix bug 2756754
43029 IF l_return_status = FND_API.G_RET_STS_ERROR THEN -- fix bug 2756754
43030 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43031 engine_debug('Error QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES: '||l_status_text);
43032 END IF; -- END IF G_DEBUG_ENGINE
43033 RAISE E_DEBUG_ROUTINE_ERROR; -- fix bug 2756754, dbg error should not be an hard error
43034 END IF;
43035 END IF;
43036 END IF;
43037
43038 -- added global condition for caching - hwong
43039 G_NEW_PRICING_CALL := G_YES;
43040 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43041 engine_debug('hw/pre: change to g_yes');
43042
43043
43044
43045 engine_debug('***Exiting Oracle Pricing***');
43046
43047 END IF;
43048 --============END: Debug Viewer needed by Java and PL/SQL engine=============
43049
43050 qp_debug_util.tstop('ENGINE_CALL_QPXGPREB');
43051
43052 /*qp_debug_util.tdump;
43053 qp_debug_util.tflush;*/
43054
43055 EXCEPTION
43056 WHEN E_SEARCH_FLAG_IS_NULL THEN
43057 x_return_status := FND_API.G_RET_STS_ERROR;
43058 x_return_status_text := 'The search flag on qp_event_phase is null for phase '||l_pricing_phase_id;
43059 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43060 engine_debug( 'The search flag on qp_event_phase is null for phase '||l_pricing_phase_id);
43061 END IF;
43062 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
43063 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
43064 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
43065 QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES(p_control_rec,
43066 l_return_status,
43067 l_status_text
43068 );
43069 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
43070 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43071 engine_debug('Error occured in Debug Routine: ' || l_status_text);
43072 END IF;
43073 END IF;
43074 END IF;
43075 END IF;
43076 WHEN E_INVALID_CONTROL_RECORD THEN
43077 x_return_status := FND_API.G_RET_STS_ERROR;
43078 x_return_status_text := 'INVALID CONTROL RECORD';
43079
43080 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
43081 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
43082 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
43083 QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES(p_control_rec,
43084 l_return_status,
43085 l_status_text
43086 );
43087 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
43088 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43089 engine_debug('Error occured in Debug Routine: ' || l_return_status);
43090 END IF;
43091 END IF;
43092 END IF;
43093 END IF;
43094 WHEN E_ROUTINE_ERRORS THEN
43095 x_return_status := FND_API.G_RET_STS_ERROR;
43096 x_return_status_text := l_status_text;
43097 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43098 engine_debug(l_status_text);
43099
43100 END IF;
43101 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
43102 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
43103 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
43104 QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES(p_control_rec,
43105 l_return_status,
43106 l_status_text
43107 );
43108 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
43109 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43110 engine_debug('Error occured in Debug Routine: ' || l_status_text);
43111 END IF;
43112 END IF;
43113 END IF;
43114 END IF;
43115
43116 -- Changes for pattern
43117 IF G_QP_PATTERN_SEARCH IN (G_QP_PATTERN_MOD_SEARCH, G_QP_PATTERN_BOTH_SEARCH, G_QP_PATTERN_PRL_SEARCH) THEN
43118 IF G_DEBUG_ENGINE = FND_API.G_TRUE AND l_devlp_log_dumped = 'N' THEN
43119 qp_Debug_util.print_development_csv;
43120 END IF;
43121 END IF;
43122 WHEN E_INVALID_PHASE THEN
43123 x_return_status := FND_API.G_RET_STS_ERROR;
43124 x_return_status_text := 'Invalid phase sequence for Price List phase, Check setup data';
43125 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43126 engine_debug('Invalid phase sequence for Price List phase');
43127
43128 END IF;
43129 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
43130 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
43131 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
43132 QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES(p_control_rec,
43133 l_return_status,
43134 l_status_text
43135 );
43136 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
43137 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43138 engine_debug('Error occured in Debug Routine: ' || l_status_text);
43139 END IF;
43140 END IF;
43141 END IF;
43142 END IF;
43143 WHEN E_NO_SOURCE_SYSTEM THEN
43144 x_return_status := FND_API.G_RET_STS_ERROR;
43145 x_return_status_text := ('No source system found for your request type');
43146 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43147 engine_debug('No source system found for your request type');
43148
43149 END IF;
43150 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
43151 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
43152 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
43153 QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES(p_control_rec,
43154 l_return_status,
43155 l_status_text
43156 );
43157 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
43158 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43159 engine_debug('Error occured in Debug Routine: ' || l_status_text);
43160 END IF;
43161 END IF;
43162 END IF;
43163 END IF;
43164 --fix bug 2756754
43165 WHEN E_DEBUG_ROUTINE_ERROR THEN
43166 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43167 engine_debug('Error occured in Debug Routine.');
43168 END IF;
43169
43170 WHEN OTHERS THEN
43171 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43172 engine_debug('In Price_Request: '||l_status_text||' '||SQLERRM);
43173 END IF;
43174 x_return_status := FND_API.G_RET_STS_ERROR;
43175 x_return_status_text := SQLERRM;
43176
43177 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
43178 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
43179 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
43180 QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES(p_control_rec,
43181 l_return_status,
43182 l_status_text
43183 );
43184 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
43185 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
43186 engine_debug('Error occured in Debug Routine: ' || l_status_text);
43187 END IF;
43188 END IF;
43189 END IF;
43190 END IF;
43191 END PRICE_REQUEST;
43192
43193
43194
43195 END QP_PREQ_GRP;