[Home] [Help]
PACKAGE BODY: APPS.QP_PREQ_GRP
Source
1 PACKAGE BODY QP_PREQ_GRP AS
2 /* $Header: QPXGPREB.pls 120.70.12010000.6 2008/12/01 17:58:47 dhgupta ship $ */
3
4 G_VERSION VARCHAR2(240):= '/* $Header: QPXGPREB.pls 120.70.12010000.6 2008/12/01 17:58:47 dhgupta 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_LIST_LINE_NO_TBL VARCHAR_TYPE;
133 G_ACCRUAL_FLAG_TBL VARCHAR_TYPE;
134 G_ACCRUAL_CONVERSION_RATE_TBL NUMBER_TYPE;
135 G_ESTIM_ACCRUAL_RATE_TBL NUMBER_TYPE;
136 G_RECURRING_FLAG_TBL VARCHAR_TYPE;
137 G_SELECTED_VOLUME_ATTR_TBL VARCHAR_TYPE;
138 G_QUALIFIERS_EXIST_FLAG_TBL VARCHAR_TYPE;
139 G_PRICING_ATTRS_EXIST_FLAG_TBL VARCHAR_TYPE;
140 G_PRICE_LIST_ID_TBL NUMBER_TYPE;
141 G_PL_VALIDATED_FLAG_TBL VARCHAR_TYPE;
142 G_HEADER_LIMIT_EXISTS_TBL VARCHAR_TYPE;
143 G_LINE_LIMIT_EXISTS_TBL VARCHAR_TYPE;
144 G_CHARGE_TYPE_CODE_TBL VARCHAR_TYPE;
145 G_CHARGE_SUBTYPE_CODE_TBL VARCHAR_TYPE;
146 G_CURRENCY_HEADER_ID_TBL NUMBER_TYPE; /* vivek */
147 G_SELLING_ROUNDING_TBL NUMBER_TYPE; /* vivek */
148 G_ORDER_CURRENCY_TBL VARCHAR_TYPE; /* vivek */
149 G_BASE_CURRENCY_CODE_TBL VARCHAR_TYPE; /* vivek */
150 G_CURRENCY_DETAIL_ID_TBL NUMBER_TYPE; /* sunilpandey */
151 -- G_LDET_LINE_QUANTITY_TBL NUMBER_TYPE; -- defined in SPEC
152 G_ACCUM_CONTEXT_TBL VARCHAR_TYPE; -- for accum range break
153 G_ACCUM_ATTRIBUTE_TBL VARCHAR_TYPE; -- for accum range break
154 G_ACCUM_FLAG_TBL VARCHAR_TYPE; -- for accum range break
155 G_BREAK_UOM_TBL VARCHAR_TYPE; /* Proration */
156 G_BREAK_CONTEXT_TBL VARCHAR_TYPE; /* Proration */
157 G_BREAK_ATTRIBUTE_TBL VARCHAR_TYPE; /* Proration */
158 G_SECONDARY_PRICELIST_IND_TBL VARCHAR_30_TYPE;
159
160 G_LIST_HEADER_ID_TBL_Q NUMBER_TYPE;
161 G_LIST_LINE_ID_TBL_Q NUMBER_TYPE;
162 G_LINE_INDEX_TBL_Q NUMBER_TYPE;
163 G_LIST_LINE_TYPE_TBL_Q VARCHAR_TYPE;
164 G_VALIDATED_FLAG_TBL_Q VARCHAR_TYPE;
165 G_APPLIED_FLAG_TBL_Q VARCHAR_TYPE;
166 G_AUTOMATIC_FLAG_TBL_Q VARCHAR_TYPE;
167 G_START_DATE_ACTIVE_TBL_Q DATE_TYPE;
168 G_END_DATE_ACTIVE_TBL_Q DATE_TYPE;
169 G_PRICING_EFFECTIVE_DATE_TBL_Q DATE_TYPE;
170 G_LINE_TYPE_CODE_TBL_Q VARCHAR_TYPE;
171 G_PRICING_PHASE_ID_TBL_Q PLS_INTEGER_TYPE;
172 G_UNIQUE_KEY_TBL_Q VARCHAR_TYPE;
173 G_ATTRIBUTE_LEVEL_TBL_Q VARCHAR_TYPE;
174 G_ATTRIBUTE_TYPE_TBL_Q VARCHAR_TYPE;
175 G_CONTEXT_TBL_Q VARCHAR_TYPE;
176 G_ATTRIBUTE_TBL_Q VARCHAR_TYPE;
177 G_VALUE_FROM_TBL_Q VARCHAR_TYPE;
178 G_GROUPING_NO_TBL_Q PLS_INTEGER_TYPE;
179 G_QUALIFIER_PRECEDENCE_TBL_Q PLS_INTEGER_TYPE;
180 G_DATATYPE_TBL_Q VARCHAR_TYPE;
181 G_SETUP_VALUE_FROM_TBL_Q VARCHAR_TYPE;
182 G_SETUP_VALUE_TO_TBL_Q VARCHAR_TYPE;
183 G_PRICING_ATTR_FLAG_TBL_Q VARCHAR_TYPE;
184 G_OPERATOR_TYPE_TBL_Q VARCHAR_TYPE;
185 G_CURRENCY_CODE_TBL_Q VARCHAR_TYPE;
186 G_ASK_FOR_FLAG_TBL_Q VARCHAR_TYPE;
187 G_LIST_TYPE_CODE_TBL_Q VARCHAR_TYPE;
188 G_QUALIFIER_TYPE_TBL_Q VARCHAR_TYPE;
189 G_QUALIFIER_GROUP_CNT_TBL_Q NUMBER_TYPE;
190 G_OTHERS_GROUP_CNT_TBL_Q NUMBER_TYPE;
191 G_HEADER_QUALS_EXIST_FLG_TBL_Q VARCHAR_TYPE;
192 G_SEARCH_IND_TBL_Q NUMBER_TYPE;
193 G_PRICING_STATUS_CODE_TBL_Q VARCHAR_TYPE;
194 G_START_DATE_ACTIVE_TBL_H_Q DATE_TYPE;
195 G_END_DATE_ACTIVE_TBL_H_Q DATE_TYPE;
196 G_START_DATE_ACTIVE_SEC_TBL_Q DATE_TYPE;
197 G_END_DATE_ACTIVE_SEC_TBL_Q DATE_TYPE;
198 G_ACTIVE_DATE_FIR_TYPE_TBL_Q VARCHAR_TYPE;
199 G_ACTIVE_DATE_SEC_TYPE_TBL_Q VARCHAR_TYPE;
200 G_START_DATE_ACTIVE_FIR_TBL_Q DATE_TYPE;
201 G_END_DATE_ACTIVE_FIR_TBL_Q DATE_TYPE;
202 G_HEADER_LIMIT_EXISTS_TBL_Q VARCHAR_TYPE;
203 G_ACTIVE_DATE_FIRST_TBL_Q DATE_TYPE;
204 G_ACTIVE_DATE_SECOND_TBL_Q DATE_TYPE;
205 G_INCOMP_GRP_CODE_TBL_Q VARCHAR_TYPE;
206 G_ACCR_CONVERSION_RATE_TBL_Q NUMBER_TYPE;
207 G_ACCRUAL_FLAG_TBL_Q VARCHAR_TYPE;
208 G_MODIFIER_LEVEL_CODE_TBL_Q VARCHAR_TYPE;
209 G_LIST_PRICE_TBL_Q NUMBER_TYPE;
210 G_LIST_LINE_NO_TBL_Q VARCHAR_TYPE;
211 G_PRIMARY_UOM_FLAG_TBL_Q VARCHAR_TYPE;
212 G_OPER_CALCULATION_CODE_TBL_Q VARCHAR_TYPE;
213 G_OPERAND_TBL_Q NUMBER_TYPE;
214 G_NET_AMOUNT_FLAG_TBL_Q VARCHAR_TYPE; -- IT net_amount 2720717
215 G_PRICING_GROUP_SEQUENCE_TBL_Q NUMBER_TYPE;
216 G_PRICE_BREAK_TYPE_CODE_TBL_Q VARCHAR_TYPE;
217 G_PRICE_FORMULA_ID_TBL_Q NUMBER_TYPE;
218 G_PRODUCT_PRECEDENCE_TBL_Q NUMBER_TYPE;
219 G_ESTIM_ACCRUAL_RATE_TBL_Q NUMBER_TYPE;
220 G_DERIVED_QUALIFIER_FLAG_TBL_Q VARCHAR_TYPE; -- Added for TCA
221
222 G_LINE_INDEX_TBL_P NUMBER_TYPE;
223 G_LINE_DETAIL_INDEX_TBL_P NUMBER_TYPE;
224 G_LIST_HEADER_ID_TBL_P NUMBER_TYPE;
225 G_LIST_LINE_ID_TBL_P NUMBER_TYPE;
226 G_PRICE_BREAK_TYPE_CODE_TBL_P VARCHAR_TYPE;
227 G_LIST_PRICE_TBL_P NUMBER_TYPE;
228 G_LIST_LINE_TYPE_TBL_P VARCHAR_TYPE;
229 G_LIST_TYPE_CODE_TBL_P VARCHAR_TYPE;
230 G_PRICING_GROUP_SEQUENCE_TBL_P NUMBER_TYPE;
231 G_PRICING_PHASE_ID_TBL_P PLS_INTEGER_TYPE;
232 G_OPER_CALCULATION_CODE_TBL_P VARCHAR_TYPE;
233 G_OPERAND_VALUE_TBL_P NUMBER_TYPE;
234 G_NET_AMOUNT_FLAG_TBL_P VARCHAR_TYPE; -- IT net_amount 2720717
235 G_ASK_FOR_FLAG_TBL_P VARCHAR_TYPE;
236 G_PRICE_FORMULA_ID_TBL_P NUMBER_TYPE;
237 G_PRODUCT_PRECEDENCE_TBL_P NUMBER_TYPE;
238 G_INCOMP_GRP_CODE_TBL_P VARCHAR_TYPE;
239 G_AUTOMATIC_FLAG_TBL_P VARCHAR_TYPE;
240 G_OVERRIDE_FLAG_TBL_P VARCHAR_TYPE;
241 G_PRIMARY_UOM_FLAG_TBL_P VARCHAR_TYPE;
242 G_PRINT_ON_INVOICE_FLAG_TBL_P VARCHAR_TYPE;
243 G_MODIFIER_LEVEL_CODE_TBL_P VARCHAR_TYPE;
244 G_BENEFIT_QTY_TBL_P NUMBER_TYPE;
245 G_BENEFIT_UOM_CODE_TBL_P VARCHAR_TYPE;
246 G_LIST_LINE_NO_TBL_P VARCHAR_TYPE;
247 G_ACCRUAL_FLAG_TBL_P VARCHAR_TYPE;
248 G_ACCR_CONVERSION_RATE_TBL_P NUMBER_TYPE;
249 G_ESTIM_ACCRUAL_RATE_TBL_P NUMBER_TYPE;
250 G_ATTRIBUTE_LEVEL_TBL_P VARCHAR_TYPE;
251 G_ATTRIBUTE_TYPE_TBL_P VARCHAR_TYPE;
252 G_CONTEXT_TBL_P VARCHAR_TYPE;
253 G_ATTRIBUTE_TBL_P VARCHAR_TYPE;
254 G_VALUE_FROM_TBL_P VARCHAR_TYPE;
255 G_SETUP_VALUE_FROM_TBL_P VARCHAR_TYPE;
256 G_VALIDATED_FLAG_TBL_P VARCHAR_TYPE;
257 G_APPLIED_FLAG_TBL_P VARCHAR_TYPE;
258 G_PRICING_ATTR_FLAG_TBL_P VARCHAR_TYPE;
259 G_GROUPING_NUMBER_TBL_P NUMBER_TYPE;
260 G_QUALIFIER_PRECEDENCE_TBL_P NUMBER_TYPE;
261 G_EXCLUDER_FLAG_TBL_P VARCHAR_TYPE;
262 G_PRODUCT_UOM_CODE_TBL_P VARCHAR_TYPE;
263 G_QUALIFIER_TYPE_TBL_P VARCHAR_TYPE;
264 G_ROUNDING_FACTOR_TBL_P NUMBER_TYPE;
265 G_HEADER_LIMIT_EXISTS_TBL_P VARCHAR_TYPE;
266 G_LINE_LIMIT_EXISTS_TBL_P VARCHAR_TYPE;
267 G_CHARGE_TYPE_CODE_TBL_P VARCHAR_TYPE;
268 G_CHARGE_SUBTYPE_CODE_TBL_P VARCHAR_TYPE;
269 G_CURRENCY_HEADER_ID_TBL_P NUMBER_TYPE; /* vivek */
270 G_SELLING_ROUNDING_TBL_P NUMBER_TYPE; /* vivek */
271 G_ORDER_CURRENCY_TBL_P VARCHAR_TYPE; /* vivek */
272 G_PRICING_EFFECTIVE_DATE_TBL_P DATE_TYPE; /* vivek */
273 G_BASE_CURRENCY_CODE_TBL_P VARCHAR_TYPE; /* vivek */
274 G_CURRENCY_DETAIL_ID_TBL_P NUMBER_TYPE; /* sunilpandey */
275 G_ACCUM_CONTEXT_TBL_P VARCHAR_TYPE; -- for accum range break
276 G_ACCUM_ATTRIBUTE_TBL_P VARCHAR_TYPE; -- for accum range break
277 G_ACCUM_FLAG_TBL_P VARCHAR_TYPE; -- for accum range break
278
279 G_ATTRIBUTE_LEVEL_TBL_PR VARCHAR_TYPE;
280 G_ATTRIBUTE_TYPE_TBL_PR VARCHAR_TYPE;
281 G_CONTEXT_TBL_PR VARCHAR_TYPE;
282 G_ATTRIBUTE_TBL_PR VARCHAR_TYPE;
283 G_VALUE_FROM_TBL_PR VARCHAR_TYPE;
284 G_OPERATOR_TYPE_TBL_PR VARCHAR_TYPE;
285 G_SETUP_VALUE_FROM_TBL_PR VARCHAR_TYPE;
286 G_SETUP_VALUE_TO_TBL_PR VARCHAR_TYPE;
287 G_DATATYPE_TBL_PR VARCHAR_TYPE;
288 G_BREAK_UOM_TBL_P VARCHAR_TYPE; /* Proration */
289 G_BREAK_CONTEXT_TBL_P VARCHAR_TYPE; /* Proration */
290 G_BREAK_ATTRIBUTE_TBL_P VARCHAR_TYPE; /* Proration */
291
292 G_LINE_INDEX_TBL_B PLS_INTEGER_TYPE;
293 G_LIST_HEADER_ID_TBL_B NUMBER_TYPE;
294 G_LIST_LINE_ID_TBL_B NUMBER_TYPE;
295 G_PRICE_BREAK_TYPE_CODE_TBL_B VARCHAR_TYPE;
296 G_LIST_PRICE_TBL_B NUMBER_TYPE;
297 G_LIST_LINE_TYPE_TBL_B VARCHAR_TYPE;
298 G_LIST_TYPE_CODE_TBL_B VARCHAR_TYPE;
299 G_PRICING_GROUP_SEQUENCE_TBL_B NUMBER_TYPE;
300 G_PRICING_PHASE_ID_TBL_B PLS_INTEGER_TYPE;
301 G_OPER_CALCULATION_CODE_TBL_B VARCHAR_TYPE;
302 G_OPERAND_VALUE_TBL_B VARCHAR_TYPE;
303 G_NET_AMOUNT_FLAG_TBL_B VARCHAR_TYPE; -- IT net_amount 2720717
304 G_ASK_FOR_FLAG_TBL_B VARCHAR_TYPE;
305 G_PRICE_FORMULA_ID_TBL_B NUMBER_TYPE;
306 G_PRODUCT_PRECEDENCE_TBL_B NUMBER_TYPE;
307 G_INCOMP_GRP_CODE_TBL_B VARCHAR_TYPE;
308 G_AUTOMATIC_FLAG_TBL_B VARCHAR_TYPE;
309 G_OVERRIDE_FLAG_TBL_B VARCHAR_TYPE;
310 G_PRIMARY_UOM_FLAG_TBL_B VARCHAR_TYPE;
311 G_PRINT_ON_INVOICE_FLAG_TBL_B VARCHAR_TYPE;
312 G_MODIFIER_LEVEL_CODE_TBL_B VARCHAR_TYPE;
313 G_BENEFIT_QTY_TBL_B NUMBER_TYPE;
314 G_BENEFIT_UOM_CODE_TBL_B VARCHAR_TYPE;
315 G_LIST_LINE_NO_TBL_B VARCHAR_TYPE;
316 G_ACCRUAL_FLAG_TBL_B VARCHAR_TYPE;
317 G_ACCR_CONVERSION_RATE_TBL_B NUMBER_TYPE;
318 G_ESTIM_ACCRUAL_RATE_TBL_B NUMBER_TYPE;
319
320 G_LINE_INDEX_TBL_G NUMBER_TYPE;
321 G_LIST_HEADER_ID_TBL_G NUMBER_TYPE;
322 G_LIST_LINE_ID_TBL_G NUMBER_TYPE;
323 G_NO_OF_PATTS_IN_GRP_TBL_G NUMBER_TYPE;
324
325 G_PRICING_PHASE_ID_TBL_A PLS_INTEGER_TYPE;
326 G_INCOMP_GRP_CODE_TBL_A VARCHAR_TYPE;
327 G_LINE_DETAIL_TYPE_CODE_TBL_A VARCHAR_TYPE;
328 G_MODIFIER_LEVEL_CODE_TBL_A VARCHAR_TYPE;
329 G_PRIMARY_UOM_FLAG_TBL_A VARCHAR_TYPE;
330 G_LINE_INDEX_TBL_A PLS_INTEGER_TYPE;
331 G_LINE_DETAIL_INDEX_TBL_A PLS_INTEGER_TYPE;
332 G_LIST_LINE_ID_TBL_A NUMBER_TYPE;
333 G_LIST_HEADER_ID_TBL_A NUMBER_TYPE;
334
335 --G_QUALIFIER_TEMP_EMPTY CONSTANT VARCHAR2(10) := 'E';
336 --G_QUALIFIER_TEMP_UPDATED CONSTANT VARCHAR2(10) := 'U';
337 --G_QUALIFIER_TEMP_NEED_UPDATE CONSTANT VARCHAR2(10) := 'N';
338 G_QUALIFIER_TEMP VARCHAR2(10);
339 G_LINE_QUALIFIER_TEMP VARCHAR2(10);
340
341 G_INSERT_INTO_FORMULA_TMP BOOLEAN ; -- Change
342 --G_INSERT_INTO_FORMULA_TMP VARCHAR2(10) := 'N'; -- Change
343
344 -- security
345 G_SECURITY_CONTROL VARCHAR2(10) := 'OFF'; -- security
346 --G_CURRENT_USER_OP_UNIT NUMBER := NULL; -- security (moved to spec)
347
348 -- Bug 3143535 - ORDER AMOUNT CALCULATION ISSUE
349 G_BEFORE_PRICING_ORD_AMT NUMBER := 0;
350
351 G_NULL_PROFILE_VALUE VARCHAR2(30) := 'NULL';
352
353 -- julin [3805113]: storing for call_calculation_engine()
354 G_CHILD_VALUE_FROM_TBL VARCHAR_TYPE;
355 G_CHILD_VALUE_TO_TBL VARCHAR_TYPE;
356 G_PARENT_LINE_DETAIL_INDEX_TBL NUMBER_TYPE;
357
358 -- julin [3805113]: default bulk fetch size
359 G_BATCH_SIZE NUMBER := 1000;
360 G_BATCH_SIZE_1 NUMBER := 50000; -- bug 6364923
361
362 -- Debug procedure
363 PROCEDURE Set_QP_Debug AS
364
365 l_output_file VARCHAR2(240);
366 l_routine VARCHAR2(30) := 'Set_QP_Debug';
367 v_debug_switch CONSTANT VARCHAR2(30) := 'QP_DEBUG';
368
369 BEGIN
370 G_QP_DEBUG_PROFILE_VALUE := FND_PROFILE.VALUE(v_debug_switch);
371 -- Introduced for facilitating debugging for non OM Applications
372 --IF (NOT OE_DEBUG_PUB.ISDebugOn) THEN --If om debug is not on , then only look at qp_debug
373 if oe_debug_pub.g_debug_level > 0 then
374 G_DEBUG_ENGINE:= FND_API.G_TRUE;
375 else
376 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
377 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
378 oe_debug_pub.SetDebugLevel(10);
379 oe_debug_pub.Initialize;
380 oe_debug_pub.debug_on;
381 l_output_file := oe_debug_pub.Set_Debug_Mode('FILE');
382 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
383 engine_debug ('The output file is : ' || l_output_file );
384 END IF;
385 G_DEBUG_ENGINE:= FND_API.G_TRUE;
386 ELSE
387 G_DEBUG_ENGINE:= FND_API.G_FALSE;
388 END IF;
389 END IF;
390
391 EXCEPTION
392 WHEN OTHERS THEN
393 --x_status_code := FND_API.G_RET_STS_ERROR;
394 --x_status_text :=l_routine||' '||SQLERRM;
395 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
396 engine_debug(l_routine||' '||SQLERRM);
397 END IF;
398
399 END Set_QP_Debug;
400
401 -- shu new rounding implementation
402 /*+--------------------------------------------------------------------
403 | UPDATE_ROUNDING_FACTOR
404 | to update rounding_factor in the qp_npreq_lines_tmp table
405 +--------------------------------------------------------------------
406 */
407 PROCEDURE UPDATE_ROUNDING_FACTOR(
408 p_mcurr_installed_used_flag IN VARCHAR2,
409 x_status_code OUT NOCOPY VARCHAR2,
410 x_status_text OUT NOCOPY VARCHAR2) AS
411
412 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.UPDATE_ROUNDING_FACTOR';
413
414 CURSOR get_price_lists_cur IS
415 SELECT distinct price_list_header_id , currency_code , trunc(pricing_effective_date) pricing_effective_date
416 FROM qp_npreq_lines_tmp
417 where price_flag in ('Y','P')
418 and line_type_code = 'LINE'
419 and rounding_factor is null
420 and price_list_header_id > 0; --[julin/5395256]
421
422
423 p_price_list_id_tbl NUMBER_TYPE;
424 p_currency_code_tbl VARCHAR_TYPE;
425 p_pricing_eff_date_tbl DATE_TYPE;
426 p_rounding_factor_tbl NUMBER_TYPE;
427 nROWS NUMBER :=1000;
428 v_count NUMBER := 0;
429
430 BEGIN
431
432 OPEN get_price_lists_cur;
433
434 LOOP
435
436 p_price_list_id_tbl.delete;
437 p_currency_code_tbl.delete;
438 p_pricing_eff_date_tbl.delete;
439
440 FETCH get_price_lists_cur BULK COLLECT INTO
441 p_price_list_id_tbl,
442 p_currency_code_tbl,
443 p_pricing_eff_date_tbl LIMIT nROWS;
444
445 EXIT WHEN p_price_list_id_tbl.COUNT = 0;
446
447 IF (p_price_list_id_tbl.COUNT > 0) THEN
448
449 v_count := p_price_list_id_tbl.count;
450
451 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
452 engine_debug('Calling Round Factor function for : '||v_count|| ' price list,currency,pricing date combinations');
453 END IF;
454
455 FOR i in p_price_list_id_tbl.FIRST .. p_price_list_id_tbl.LAST
456 LOOP
457
458 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
459 engine_debug('Price List Id : ' || p_price_list_id_tbl(i));
460 engine_debug('Currency Code : ' || p_currency_code_tbl(i));
461 engine_debug('Pricing Date : ' || p_pricing_eff_date_tbl(i));
462 END IF;
463 p_rounding_factor_tbl(i) :=
464 qp_util_pub.get_rounding_factor(
465 p_mcurr_installed_used_flag,
466 p_price_list_id_tbl(i),
467 p_currency_code_tbl(i),
468 p_pricing_eff_date_tbl(i));
469
470 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
471 engine_debug('Rounding factor in QP_PREQ_GRP after the function call : ' || p_rounding_factor_tbl(i));
472 END IF;
473
474 END LOOP;
475
476 FORALL i in p_price_list_id_tbl.FIRST .. p_price_list_id_tbl.LAST
477 UPDATE qp_npreq_lines_tmp
478 SET ROUNDING_FACTOR = p_rounding_factor_tbl(i)
479 WHERE PRICE_FLAG in (QP_PREQ_GRP.G_YES, QP_PREQ_GRP.G_PHASE)
480 AND PRICE_LIST_HEADER_ID = p_price_list_id_tbl(i)
481 AND CURRENCY_CODE = p_currency_code_tbl(i)
482 AND trunc(PRICING_EFFECTIVE_DATE) = p_pricing_eff_date_tbl(i); -- bug 3364978
483
484 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
485 engine_debug('Number of lines updated with rounding factor : ' || SQL%ROWCOUNT);
486 END IF;
487
488 END IF;
489 END LOOP;
490
491 CLOSE get_price_lists_cur;
492
493 EXCEPTION
494 WHEN OTHERS THEN
495 x_status_code := FND_API.G_RET_STS_ERROR;
496 x_status_text :=l_routine||' '||SQLERRM;
497 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
498 engine_debug(l_routine||' '||SQLERRM);
499 END IF;
500 END;
501
502 /*+--------------------------------------------------------------------
503 |ENGINE_DEBUG
504 |For performance concern, we can avoid calling debug
505 |if the debug features is turned off
506 +--------------------------------------------------------------------
507 */
508 PROCEDURE ENGINE_DEBUG(p_text IN VARCHAR2) AS
509 l_return_status VARCHAR2(240);
510 l_status_text VARCHAR2(240);
511 BEGIN
512 --IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
513 oe_debug_pub.add(p_text,3);
514
515 -- Debug Screen related change
516 -- Irrespective of om debug if qp debug is on debug information is captured into qp debug tables
517 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) THEN
518 QP_COPY_DEBUG_PVT.INSERT_DEBUG_LINE(p_text);
519 END IF;
520
521 --END IF;
522 EXCEPTION
523 WHEN OTHERS THEN
524 NULL;
525 END;
526
527 /*+---------------------------------------------------------------------
528 |GET_VERSION
529 +---------------------------------------------------------------------
530 */
531 FUNCTION GET_VERSION RETURN VARCHAR2 IS
532 BEGIN
533 --engine_debug(G_VERSION);
534 RETURN G_VERSION;
535 END;
536
537 /*+----------------------------------------------------------------------
538 |Procedure INSERT_QUAL
539 +----------------------------------------------------------------------
540 */
541 PROCEDURE INSERT_QUAL(
542 p_LIST_HEADER_ID IN NUMBER_TYPE,
543 p_LIST_LINE_ID IN NUMBER_TYPE,
544 p_VALIDATED_FLAG IN VARCHAR_TYPE,
545 p_APPLIED_FLAG IN VARCHAR_TYPE,
546 p_ATTRIBUTE_LEVEL IN VARCHAR_TYPE,
547 p_ATTRIBUTE_TYPE IN VARCHAR_TYPE,
548 p_CONTEXT IN VARCHAR_TYPE,
549 p_ATTRIBUTE IN VARCHAR_TYPE,
550 p_VALUE_FROM IN VARCHAR_TYPE,
551 p_GROUPING_NO IN PLS_INTEGER_TYPE,
552 p_QUALIFIER_PRECEDENCE IN PLS_INTEGER_TYPE,
553 p_DATATYPE IN VARCHAR_TYPE,
554 p_SETUP_VALUE_FROM IN VARCHAR_TYPE,
555 p_SETUP_VALUE_TO IN VARCHAR_TYPE,
556 p_PRICING_ATTR_FLAG IN VARCHAR_TYPE,
557 p_OPERATOR_TYPE IN VARCHAR_TYPE,
558 p_LIST_TYPE_CODE IN VARCHAR_TYPE,
559 p_ASK_FOR_FLAG IN VARCHAR_TYPE,
560 p_QUALIFIER_TYPE IN VARCHAR_TYPE,
561 p_QUALIFIER_GROUP_CNT IN NUMBER_TYPE,
562 p_OTHERS_GROUP_CNT IN NUMBER_TYPE,
563 p_HEADER_QUALS_EXIST_FLAG IN VARCHAR_TYPE,
564 p_SEARCH_IND IN NUMBER_TYPE,
565 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
566 p_START_DATE_ACTIVE IN DATE_TYPE,
567 p_END_DATE_ACTIVE IN DATE_TYPE,
568 p_LINE_INDEX IN NUMBER_TYPE,
569 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE,
570 p_START_DATE_ACTIVE_FIR IN DATE_TYPE,
571 p_END_DATE_ACTIVE_FIR IN DATE_TYPE,
572 p_LINE_TYPE_CODE IN VARCHAR_TYPE,
573 p_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
574 p_UNIQUE_KEY IN VARCHAR_TYPE,
575 p_START_DATE_ACTIVE_H IN DATE_TYPE,
576 p_END_DATE_ACTIVE_H IN DATE_TYPE,
577 p_START_DATE_ACTIVE_SEC IN DATE_TYPE,
578 p_END_DATE_ACTIVE_SEC IN DATE_TYPE,
579 p_ACTIVE_DATE_FIR_TYPE IN VARCHAR_TYPE,
580 p_ACTIVE_DATE_SEC_TYPE IN VARCHAR_TYPE,
581 p_HEADER_LIMIT_EXISTS IN VARCHAR_TYPE,
582 p_DERIVED_QUALIFIER_FLAG IN VARCHAR_TYPE, -- Added for TCA
583 x_status_code OUT NOCOPY VARCHAR2,
584 x_status_text OUT NOCOPY VARCHAR2) AS
585
586 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_QUAL';
587
588 BEGIN
589 FORALL i in p_list_header_id.FIRST..p_list_header_id.LAST
590 Insert into QP_PREQ_QUAL_TMP
591 ( LIST_HEADER_ID
592 , LIST_LINE_ID
593 , LINE_INDEX
594 , QUALIFIER_ATTRIBUTE_LEVEL
595 , QUALIFIER_ATTRIBUTE_TYPE
596 , QUALIFIER_ATTRIBUTE_CONTEXT
597 , QUALIFIER_ATTRIBUTE
598 , QUALIFIER_ATTRIBUTE_VALUE
599 , QUALIFIER_GROUPING_NO
600 , QUALIFIER_PRECEDENCE
601 , QUALIFIER_DATATYPE
602 , SETUP_VALUE_FROM
603 , SETUP_VALUE_TO
604 , QUALIFIER_PRICING_ATTR_FLAG
605 , QUALIFIER_OPERATOR_TYPE
606 , ASK_FOR_FLAG
607 , CREATED_FROM_LIST_TYPE
608 , VALIDATED_FLAG
609 , APPLIED_FLAG
610 , QUALIFIER_TYPE
611 , QUALIFIER_GROUP_CNT
612 , OTHERS_GROUP_CNT
613 , HEADER_QUALS_EXIST_FLAG
614 , SEARCH_IND
615 , PRICING_STATUS_CODE
616 , START_DATE_ACTIVE
617 , END_DATE_ACTIVE
618 , PRICING_EFFECTIVE_DATE
619 , START_DATE_ACTIVE_FIRST
620 , END_DATE_ACTIVE_FIRST
621 , LINE_TYPE_CODE
622 , UNIQUE_KEY
623 , PRICING_PHASE_ID
624 , START_DATE_ACTIVE_H
625 , END_DATE_ACTIVE_H
626 , START_DATE_ACTIVE_SECOND
627 , END_DATE_ACTIVE_SECOND
628 , ACTIVE_DATE_FIRST_TYPE
629 , ACTIVE_DATE_SECOND_TYPE
630 , HEADER_LIMIT_EXISTS
631 , DERIVED_QUALIFIER_FLAG -- Added for TCA
632 )
633 VALUES
634 ( p_LIST_HEADER_ID(i)
635 , p_LIST_LINE_ID(i)
636 , p_LINE_INDEX(i)
637 , p_ATTRIBUTE_LEVEL(i)
638 , p_ATTRIBUTE_TYPE(i)
639 , p_CONTEXT(i)
640 , p_ATTRIBUTE(i)
641 , p_VALUE_FROM(i)
642 , p_GROUPING_NO(i)
643 , p_QUALIFIER_PRECEDENCE(i)
644 , p_DATATYPE(i)
645 , p_SETUP_VALUE_FROM(i)
646 , p_SETUP_VALUE_TO(i)
647 , p_PRICING_ATTR_FLAG(i)
648 , p_OPERATOR_TYPE(i)
649 , p_ASK_FOR_FLAG(i)
650 , p_LIST_TYPE_CODE(i)
651 , p_VALIDATED_FLAG(i)
652 , p_APPLIED_FLAG(i)
653 , p_QUALIFIER_TYPE(i)
654 , p_QUALIFIER_GROUP_CNT(i)
655 , p_OTHERS_GROUP_CNT(i)
656 , p_HEADER_QUALS_EXIST_FLAG(i)
657 , p_SEARCH_IND(i)
658 , p_PRICING_STATUS_CODE(i)
659 , p_START_DATE_ACTIVE(i)
660 , p_END_DATE_ACTIVE(i)
661 , p_PRICING_EFFECTIVE_DATE(i)
662 , p_START_DATE_ACTIVE_FIR(i)
663 , p_END_DATE_ACTIVE_FIR(i)
664 , p_LINE_TYPE_CODE(i)
665 , p_UNIQUE_KEY(i)
666 , p_PRICING_PHASE_ID(i)
667 , p_START_DATE_ACTIVE_H(i)
668 , p_END_DATE_ACTIVE_H(i)
669 , p_START_DATE_ACTIVE_SEC(i)
670 , p_END_DATE_ACTIVE_SEC(i)
671 , p_ACTIVE_DATE_FIR_TYPE(i)
672 , p_ACTIVE_DATE_SEC_TYPE(i)
673 , p_HEADER_LIMIT_EXISTS(i)
674 , p_DERIVED_QUALIFIER_FLAG(i)); -- Added for TCA
675 EXCEPTION
676 WHEN OTHERS THEN
677 x_status_code := FND_API.G_RET_STS_ERROR;
678 x_status_text :=l_routine||' '||SQLERRM;
679 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
680 engine_debug(l_routine||' '||SQLERRM);
681 END IF;
682 END;
683
684 /*+--------------------------------------------------------------------
685 |Mini_Cache_Qualifiers
686 |To get qualifiers for matched headers with search_ind=2
687 +--------------------------------------------------------------------
688 */
689
690 PROCEDURE Mini_Cache_Qualifiers( p_list_header_id IN NUMBER
691 , p_list_line_id IN NUMBER
692 , p_grouping_no IN NUMBER
693 , p_pricing_phase_id IN NUMBER
694 , x_status_code OUT NOCOPY VARCHAR2
695 , x_status_text OUT NOCOPY VARCHAR2) AS
696
697 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.Mini_Cache_Qualifiers';
698
699 /*
700 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
701 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
702 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
703 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_QUALIFIERS_N1,COMPARISON_OPERATOR_CODE,4
704 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_QUALIFIERS_N1,SEARCH_IND,5
705 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_QUALIFIERS_N1,ACTIVE_FLAG,6
706 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_QUALIFIERS_N1,QUALIFIER_GROUP_CNT,7
707
708 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
709 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
710 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
711 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
712 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
713 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
714 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,qp_npreq_line_attrs_tmp_N2,DISTINCT_QUALIFIER_FLAG,7
715
716 INDX,QP_PREQ_GRP.mini_cache_qualifiers.l_mini_outer_qual_cur,QP_LIST_HEADERS_B_N2,LIST_HEADER_ID,1
717 */
718 -- Changed the cursor l_outer_qual_cur for bug#3002632
719 --Added index hints for bug#7480862
720 CURSOR l_MINI_OUTER_QUAL_CUR IS
721 -- Qualifier Only
722 select /*+ ORDERED NO_EXPAND USE_NL(qpq qplatq qph) index (qplatq,QP_PREQ_LINE_ATTRS_TMP_N6)
723 index(qpq qp_qualifiers_n1) index(qph qp_list_headers_b_n7) l_mini_outer_qual_cur_mod */
724 qpq.list_header_id,
725 qpq.list_line_id list_line_id,
726 qpq.qualifier_group_cnt,
727 qpq.others_group_cnt,
728 qpq.header_quals_exist_flag,
729 qpq.search_ind,
730 G_NO validated_flag,
731 G_NO applied_flag,
732 G_LINE_LEVEL attribute_level,
733 G_QUALIFIER_TYPE attribute_type,
734 qplatq.context ,
735 qplatq.attribute ,
736 qplatq.value_from ,
737 qpq.qualifier_grouping_no qualifier_grouping_no ,
738 qpq.qualifier_precedence ,
739 qpq.qualifier_datatype,
740 qpq.qualifier_attr_value ,
741 qpq.qualifier_attr_value_to ,
742 qpq.start_date_active,
743 qpq.end_date_active,
744 G_NO pricing_attr_flag,
745 qpq.comparison_operator_code ,
746 qph.list_type_code,
747 qph.ask_for_flag,
748 qplatq.pricing_status_code,
749 'OHQ1' ,
750 NULL line_index,
751 NULL pricing_effective_date,
752 qph.start_date_active_first start_date_active_first,
753 qph.end_date_active_first end_date_active_first,
754 NULL line_type_code,
755 p_pricing_phase_id pricing_phase_id,
756 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
757 qph.start_date_active start_date_active_h,
758 qph.end_date_active end_date_active_h,
759 qph.start_date_active_second start_date_active_second,
760 qph.end_date_active_second end_date_active_second,
761 qph.active_date_first_type,
762 qph.active_date_second_type,
763 qph.limit_exists_flag,
764 qplatq.derived_qualifier_flag -- Added for TCA
765 from
766 (select distinct list_header_id,list_line_id,qualifier_grouping_no
767 from qp_preq_qual_tmp
768 where pricing_status_code = G_STATUS_UNCHANGED
769 and pricing_phase_id = p_pricing_phase_id) qptq,
770 qp_qualifiers qpq ,
771 qp_npreq_line_attrs_tmp qplatq,
772 qp_list_headers_b qph,
773 qp_price_req_sources_v qprs
774 where
775 qpq.list_header_id = qptq.list_header_id
776 and qpq.list_line_id = qptq.list_line_id
777 and qpq.qualifier_grouping_no = qptq.qualifier_grouping_no
778 and qpq.qualifier_grouping_no <> -1
779 and qpq.qualifier_context = qplatq.context
780 and qpq.qualifier_attribute = qplatq.attribute
781 and qpq.qualifier_attr_value = qplatq.value_from
782 and qpq.comparison_operator_code = '='
783 and qpq.search_ind = 2
784 and qpq.qualifier_group_cnt > 1
785 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
786 OR
787 qph.currency_code IS NULL) -- optional currency
788 -- bug 2799120
789 --added for moac -- commented references to security profile
790 --security will be built into qp_list_headers_b
791 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
792 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
793 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
794 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
795 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
796 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
797 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
798 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
799 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
800 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
801 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
802 and qph.list_type_code not in ('PRL','AGR')
803 and qph.active_flag = G_YES
804 and qpq.active_flag = G_YES
805 and qpq.list_header_id = qph.list_header_id
806 and qplatq.line_index > 0
807 and qplatq.distinct_qualifier_flag = G_YES
808 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
809 and qplatq.attribute_type = G_QUALIFIER_TYPE
810 and qprs.request_type_code = G_REQUEST_TYPE_CODE
811 and qph.source_system_code = qprs.source_system_code
812 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
813 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
814 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
815 --and qptq.pricing_phase_id = p_pricing_phase_id
816 union all
817 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
818 uter_qual_cur_mod */
819 qpq.list_header_id,
820 qpq.list_line_id list_line_id,
821 qpq.qualifier_group_cnt,
822 qpq.others_group_cnt,
823 qpq.header_quals_exist_flag,
824 qpq.search_ind,
825 G_NO validated_flag,
826 G_NO applied_flag,
827 G_LINE_LEVEL attribute_level,
828 G_QUALIFIER_TYPE attribute_type,
829 qplatq.context ,
830 qplatq.attribute ,
831 qplatq.value_from ,
832 qpq.qualifier_grouping_no qualifier_grouping_no ,
833 qpq.qualifier_precedence ,
834 qpq.qualifier_datatype,
835 qpq.qualifier_attr_value ,
836 qpq.qualifier_attr_value_to ,
837 qpq.start_date_active,
838 qpq.end_date_active,
839 G_NO pricing_attr_flag,
840 qpq.comparison_operator_code ,
841 qph.list_type_code,
842 qph.ask_for_flag,
843 qplatq.pricing_status_code,
844 'OHQ1' ,
845 NULL line_index,
846 NULL pricing_effective_date,
847 qph.start_date_active_first start_date_active_first,
848 qph.end_date_active_first end_date_active_first,
849 NULL line_type_code,
850 p_pricing_phase_id pricing_phase_id,
851 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
852 qph.start_date_active start_date_active_h,
853 qph.end_date_active end_date_active_h,
854 qph.start_date_active_second start_date_active_second,
855 qph.end_date_active_second end_date_active_second,
856 qph.active_date_first_type,
857 qph.active_date_second_type,
858 qph.limit_exists_flag,
859 qplatq.derived_qualifier_flag -- Added for TCA
860 from
861 (select distinct list_header_id,list_line_id
862 from qp_preq_qual_tmp
863 where pricing_status_code = G_STATUS_UNCHANGED
864 and pricing_phase_id = p_pricing_phase_id) qptq,
865 qp_qualifiers qpq ,
866 qp_npreq_line_attrs_tmp qplatq,
867 qp_list_headers_b qph,
868 qp_price_req_sources_v qprs
869 where
870 qpq.list_header_id = qptq.list_header_id
871 and qpq.list_line_id = qptq.list_line_id
872 and qpq.qualifier_grouping_no = -1
873 and qpq.qualifier_context = qplatq.context
874 and qpq.qualifier_attribute = qplatq.attribute
875 and qpq.qualifier_attr_value = qplatq.value_from
876 and qpq.comparison_operator_code = '='
877 and qpq.search_ind = 2
878 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
879 OR
880 qph.currency_code IS NULL) -- optional currency
881 -- bug 2799120
882 --added for moac -- commented references to security profile
883 --security will be built into qp_list_headers_b
884 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
885 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
886 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
887 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
888 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
889 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
890 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
891 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
892 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
893 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
894 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
895 and qph.list_type_code not in ('PRL','AGR')
896 and qph.active_flag = G_YES
897 and qpq.active_flag = G_YES
898 and qpq.list_header_id = qph.list_header_id
899 and qplatq.line_index > 0
900 and qplatq.distinct_qualifier_flag = G_YES
901 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
902 and qplatq.attribute_type = G_QUALIFIER_TYPE
903 and qprs.request_type_code = G_REQUEST_TYPE_CODE
904 and qph.source_system_code = qprs.source_system_code
905 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
906 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
907 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
908 --and qptq.pricing_phase_id = p_pricing_phase_id
909 union all
910 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 */
911 qpq.list_header_id,
912 qpq.list_line_id list_line_id,
913 qpq.qualifier_group_cnt,
914 qpq.others_group_cnt,
915 qpq.header_quals_exist_flag,
916 qpq.search_ind,
917 G_NO validated_flag,
918 G_NO applied_flag,
919 G_LINE_LEVEL attribute_level,
920 G_QUALIFIER_TYPE attribute_type,
921 qplatq.context ,
922 qplatq.attribute ,
923 qplatq.value_from ,
924 qpq.qualifier_grouping_no qualifier_grouping_no ,
925 qpq.qualifier_precedence ,
926 qpq.qualifier_datatype,
927 qpq.qualifier_attr_value ,
928 qpq.qualifier_attr_value_to ,
929 qpq.start_date_active,
930 qpq.end_date_active,
931 G_NO pricing_attr_flag,
932 qpq.comparison_operator_code ,
933 qph.list_type_code,
934 qph.ask_for_flag,
935 qplatq.pricing_status_code,
936 'OHQ1' ,
937 NULL line_index,
938 NULL pricing_effective_date,
939 qph.start_date_active_first start_date_active_first,
940 qph.end_date_active_first end_date_active_first,
941 NULL line_type_code,
942 p_pricing_phase_id pricing_phase_id,
943 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
944 qph.start_date_active start_date_active_h,
945 qph.end_date_active end_date_active_h,
946 qph.start_date_active_second start_date_active_second,
947 qph.end_date_active_second end_date_active_second,
948 qph.active_date_first_type,
949 qph.active_date_second_type,
950 qph.limit_exists_flag,
951 qplatq.derived_qualifier_flag -- Added for TCA
952 from
953 (select distinct list_header_id,list_line_id,qualifier_grouping_no
954 from qp_preq_qual_tmp
955 where pricing_status_code = G_STATUS_UNCHANGED
956 and pricing_phase_id = p_pricing_phase_id) qptq,
957 qp_qualifiers qpq ,
958 qp_npreq_line_attrs_tmp qplatq,
959 qp_list_headers_b qph,
960 qp_price_req_sources_v qprs
961 where
962 qpq.list_header_id = qptq.list_header_id
963 and qpq.list_line_id = qptq.list_line_id
964 and qpq.qualifier_grouping_no = qptq.qualifier_grouping_no
965 and qpq.qualifier_grouping_no <> -1
966 and qpq.qualifier_context = qplatq.context
967 and qpq.qualifier_attribute = qplatq.attribute
968 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
969 and qpq.qualifier_datatype = G_NUMERIC
970 and qpq.search_ind = 2
971 and qpq.qualifier_group_cnt > 1
972 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
973 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number
974 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
975 OR
976 qph.currency_code IS NULL) -- optional currency
977 -- bug 2799120
978 --added for moac -- commented references to security profile
979 --security will be built into qp_list_headers_b
980 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
981 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
982 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
983 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
984 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
985 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
986 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
987 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
988 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
989 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
990 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
991 and qph.list_type_code not in ('PRL','AGR')
992 and qph.active_flag = G_YES
993 and qpq.active_flag = G_YES
994 and qpq.list_header_id = qph.list_header_id
995 and qplatq.line_index > 0
996 and qplatq.distinct_qualifier_flag = G_YES
997 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
998 and qplatq.attribute_type = G_QUALIFIER_TYPE
999 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1000 and qph.source_system_code = qprs.source_system_code
1001 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1002 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
1003 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
1004 --and qptq.pricing_phase_id = p_pricing_phase_id
1005 union all
1006 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
1007 ter_qual_cur_mod */
1008 qpq.list_header_id,
1009 qpq.list_line_id list_line_id,
1010 qpq.qualifier_group_cnt,
1011 qpq.others_group_cnt,
1012 qpq.header_quals_exist_flag,
1013 qpq.search_ind,
1014 G_NO validated_flag,
1015 G_NO applied_flag,
1016 G_LINE_LEVEL attribute_level,
1017 G_QUALIFIER_TYPE attribute_type,
1018 qplatq.context ,
1019 qplatq.attribute ,
1020 qplatq.value_from ,
1021 qpq.qualifier_grouping_no qualifier_grouping_no ,
1022 qpq.qualifier_precedence ,
1023 qpq.qualifier_datatype,
1024 qpq.qualifier_attr_value ,
1025 qpq.qualifier_attr_value_to ,
1026 qpq.start_date_active,
1027 qpq.end_date_active,
1028 G_NO pricing_attr_flag,
1029 qpq.comparison_operator_code ,
1030 qph.list_type_code,
1031 qph.ask_for_flag,
1032 qplatq.pricing_status_code,
1033 'OHQ1' ,
1034 NULL line_index,
1035 NULL pricing_effective_date,
1036 qph.start_date_active_first start_date_active_first,
1037 qph.end_date_active_first end_date_active_first,
1038 NULL line_type_code,
1039 p_pricing_phase_id pricing_phase_id,
1040 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1041 qph.start_date_active start_date_active_h,
1042 qph.end_date_active end_date_active_h,
1043 qph.start_date_active_second start_date_active_second,
1044 qph.end_date_active_second end_date_active_second,
1045 qph.active_date_first_type,
1046 qph.active_date_second_type,
1047 qph.limit_exists_flag,
1048 qplatq.derived_qualifier_flag -- Added for TCA
1049 from
1050 (select distinct list_header_id,list_line_id
1051 from qp_preq_qual_tmp
1052 where pricing_status_code = G_STATUS_UNCHANGED
1053 and pricing_phase_id = p_pricing_phase_id) qptq,
1054 qp_qualifiers qpq ,
1055 qp_npreq_line_attrs_tmp qplatq,
1056 qp_list_headers_b qph,
1057 qp_price_req_sources_v qprs
1058 where
1059 qpq.list_header_id = qptq.list_header_id
1060 and qpq.list_line_id = qptq.list_line_id
1061 and qpq.qualifier_grouping_no = -1
1062 and qpq.qualifier_context = qplatq.context
1063 and qpq.qualifier_attribute = qplatq.attribute
1064 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
1065 and qpq.qualifier_datatype = G_NUMERIC
1066 and qpq.search_ind = 2
1067 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
1068 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number
1069 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1070 OR
1071 qph.currency_code IS NULL) -- optional currency
1072 -- bug 2799120
1073 --added for moac -- commented references to security profile
1074 --security will be built into qp_list_headers_b
1075 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1076 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1077 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1078 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1079 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1080 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1081 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1082 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1083 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1084 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1085 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
1086 and qph.list_type_code not in ('PRL','AGR')
1087 and qph.active_flag = G_YES
1088 and qpq.active_flag = G_YES
1089 and qpq.list_header_id = qph.list_header_id
1090 and qplatq.line_index > 0
1091 and qplatq.distinct_qualifier_flag = G_YES
1092 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
1093 and qplatq.attribute_type = G_QUALIFIER_TYPE
1094 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1095 and qph.source_system_code = qprs.source_system_code
1096 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1097 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
1098 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
1099 --and qptq.pricing_phase_id = p_pricing_phase_id
1100 union all
1101 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 */
1102 qpq.list_header_id,
1103 qpq.list_line_id list_line_id,
1104 qpq.qualifier_group_cnt,
1105 qpq.others_group_cnt,
1106 qpq.header_quals_exist_flag,
1107 qpq.search_ind,
1108 G_NO validated_flag,
1109 G_NO applied_flag,
1110 G_LINE_LEVEL attribute_level,
1111 G_QUALIFIER_TYPE attribute_type,
1112 qplatq.context ,
1113 qplatq.attribute ,
1114 qplatq.value_from ,
1115 qpq.qualifier_grouping_no qualifier_grouping_no ,
1116 qpq.qualifier_precedence ,
1117 qpq.qualifier_datatype,
1118 qpq.qualifier_attr_value ,
1119 qpq.qualifier_attr_value_to ,
1120 qpq.start_date_active,
1121 qpq.end_date_active,
1122 G_NO pricing_attr_flag,
1123 qpq.comparison_operator_code ,
1124 qph.list_type_code,
1125 qph.ask_for_flag,
1126 qplatq.pricing_status_code,
1127 'OHQ1' ,
1128 NULL line_index,
1129 NULL pricing_effective_date,
1130 qph.start_date_active_first start_date_active_first,
1131 qph.end_date_active_first end_date_active_first,
1132 NULL line_type_code,
1133 p_pricing_phase_id pricing_phase_id,
1134 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1135 qph.start_date_active start_date_active_h,
1136 qph.end_date_active end_date_active_h,
1137 qph.start_date_active_second start_date_active_second,
1138 qph.end_date_active_second end_date_active_second,
1139 qph.active_date_first_type,
1140 qph.active_date_second_type,
1141 qph.limit_exists_flag,
1142 qplatq.derived_qualifier_flag -- Added for TCA
1143 from
1144 (select distinct list_header_id,list_line_id,qualifier_grouping_no
1145 from qp_preq_qual_tmp
1146 where pricing_status_code = G_STATUS_UNCHANGED
1147 and pricing_phase_id = p_pricing_phase_id) qptq,
1148 qp_qualifiers qpq ,
1149 qp_npreq_line_attrs_tmp qplatq,
1150 qp_list_headers_b qph,
1151 qp_price_req_sources_v qprs
1152 where
1153 qpq.list_header_id = qptq.list_header_id
1154 and qpq.list_line_id = qptq.list_line_id
1155 and qpq.qualifier_grouping_no = qptq.qualifier_grouping_no
1156 and qpq.qualifier_grouping_no <> -1
1157 and qpq.qualifier_context = qplatq.context
1158 and qpq.qualifier_attribute = qplatq.attribute
1159 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
1160 and qpq.search_ind = 2
1161 and qpq.qualifier_group_cnt > 1
1162 and qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y)
1163 --and decode(qpq.qualifier_datatype,G_VARCHAR,qplatq.value_from,G_DATE_X,qplatq.value_from,
1164 -- G_DATE_Y,qplatq.value_from,null)
1165 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to
1166 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1167 OR
1168 qph.currency_code IS NULL) -- optional currency
1169 -- bug 2799120
1170 --added for moac -- commented references to security profile
1171 --security will be built into qp_list_headers_b
1172 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1173 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1174 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1175 and qph.active_flag = G_YES
1176 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1177 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1178 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1179 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1180 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1181 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1182 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1183 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
1184 and qph.list_type_code not in ('PRL','AGR')
1185 and qpq.active_flag = G_YES
1186 and qplatq.line_index > 0
1187 and qplatq.distinct_qualifier_flag = G_YES
1188 and qpq.list_header_id = qph.list_header_id
1189 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
1190 and qplatq.attribute_type = G_QUALIFIER_TYPE
1191 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1192 and qph.source_system_code = qprs.source_system_code
1193 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1194 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
1195 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
1196 --and qptq.pricing_phase_id = p_pricing_phase_id
1197 union all
1198 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
1199 er_qual_cur_mod */
1200 qpq.list_header_id,
1201 qpq.list_line_id list_line_id,
1202 qpq.qualifier_group_cnt,
1203 qpq.others_group_cnt,
1204 qpq.header_quals_exist_flag,
1205 qpq.search_ind,
1206 G_NO validated_flag,
1207 G_NO applied_flag,
1208 G_LINE_LEVEL attribute_level,
1209 G_QUALIFIER_TYPE attribute_type,
1210 qplatq.context ,
1211 qplatq.attribute ,
1212 qplatq.value_from ,
1213 qpq.qualifier_grouping_no qualifier_grouping_no ,
1214 qpq.qualifier_precedence ,
1215 qpq.qualifier_datatype,
1216 qpq.qualifier_attr_value ,
1217 qpq.qualifier_attr_value_to ,
1218 qpq.start_date_active,
1219 qpq.end_date_active,
1220 G_NO pricing_attr_flag,
1221 qpq.comparison_operator_code ,
1222 qph.list_type_code,
1223 qph.ask_for_flag,
1224 qplatq.pricing_status_code,
1225 'OHQ1' ,
1226 NULL line_index,
1227 NULL pricing_effective_date,
1228 qph.start_date_active_first start_date_active_first,
1229 qph.end_date_active_first end_date_active_first,
1230 NULL line_type_code,
1231 p_pricing_phase_id pricing_phase_id,
1232 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1233 qph.start_date_active start_date_active_h,
1234 qph.end_date_active end_date_active_h,
1235 qph.start_date_active_second start_date_active_second,
1236 qph.end_date_active_second end_date_active_second,
1237 qph.active_date_first_type,
1238 qph.active_date_second_type,
1239 qph.limit_exists_flag,
1240 qplatq.derived_qualifier_flag -- Added for TCA
1241 from
1242 (select distinct list_header_id,list_line_id
1243 from qp_preq_qual_tmp
1244 where pricing_status_code = G_STATUS_UNCHANGED
1245 and pricing_phase_id = p_pricing_phase_id) qptq,
1246 qp_qualifiers qpq ,
1247 qp_npreq_line_attrs_tmp qplatq,
1248 qp_list_headers_b qph,
1249 qp_price_req_sources_v qprs
1250 where
1251 qpq.list_header_id = qptq.list_header_id
1252 and qpq.list_line_id = qptq.list_line_id
1253 and qpq.qualifier_grouping_no = -1
1254 and qpq.qualifier_context = qplatq.context
1255 and qpq.qualifier_attribute = qplatq.attribute
1256 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
1257 and qpq.search_ind = 2
1258 and qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y)
1259 --and decode(qpq.qualifier_datatype,G_VARCHAR,qplatq.value_from,G_DATE_X,qplatq.value_from,
1260 -- G_DATE_Y,qplatq.value_from,null)
1261 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to
1262 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1263 OR
1264 qph.currency_code IS NULL) -- optional currency
1265 -- bug 2799120
1266 --added for moac -- commented references to security profile
1267 --security will be built into qp_list_headers_b
1268 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1269 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1270 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1271 and qph.active_flag = G_YES
1272 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1273 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1274 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1275 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1276 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1277 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1278 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1279 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
1280 and qph.list_type_code not in ('PRL','AGR')
1281 and qpq.active_flag = G_YES
1282 and qplatq.line_index > 0
1283 and qplatq.distinct_qualifier_flag = G_YES
1284 and qpq.list_header_id = qph.list_header_id
1285 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
1286 and qplatq.attribute_type = G_QUALIFIER_TYPE
1287 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1288 and qph.source_system_code = qprs.source_system_code
1289 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1290 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
1291 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
1292 --and qptq.pricing_phase_id = p_pricing_phase_id
1293 union all
1294 select /*+ ORDERED USE_NL(qpq qplh qph) index (qplatq,QP_PREQ_LINE_ATTRS_TMP_N7)
1295 index(qpq qp_qualifiers_n1) index(qph qp_list_headers_b_n7) l_mini_outer_qual_cur_mod */
1296 qpq.list_header_id,
1297 qpq.list_line_id list_line_id,
1298 qpq.qualifier_group_cnt,
1299 qpq.others_group_cnt,
1300 qpq.header_quals_exist_flag,
1301 qpq.search_ind,
1302 G_NO validated_flag,
1303 G_NO applied_flag,
1304 G_LINE_LEVEL attribute_level,
1305 G_QUALIFIER_TYPE attribute_type,
1306 qplatq.context ,
1307 qplatq.attribute ,
1308 qplatq.value_from ,
1309 qpq.qualifier_grouping_no qualifier_grouping_no ,
1310 qpq.qualifier_precedence ,
1311 qpq.qualifier_datatype,
1312 qpq.qualifier_attr_value ,
1313 qpq.qualifier_attr_value_to ,
1314 qpq.start_date_active,
1315 qpq.end_date_active,
1316 G_NO pricing_attr_flag,
1317 qpq.comparison_operator_code ,
1318 qph.list_type_code,
1319 qph.ask_for_flag,
1320 qplatq.pricing_status_code,
1321 'OHQ1' ,
1322 NULL line_index,
1323 NULL pricing_effective_date,
1324 qph.start_date_active_first start_date_active_first,
1325 qph.end_date_active_first end_date_active_first,
1326 NULL line_type_code,
1327 p_pricing_phase_id pricing_phase_id,
1328 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1329 qph.start_date_active start_date_active_h,
1330 qph.end_date_active end_date_active_h,
1331 qph.start_date_active_second start_date_active_second,
1332 qph.end_date_active_second end_date_active_second,
1333 qph.active_date_first_type,
1334 qph.active_date_second_type,
1335 qph.limit_exists_flag,
1336 qplatq.derived_qualifier_flag -- Added for TCA
1337 from
1338 (select distinct list_header_id,list_line_id,qualifier_grouping_no
1339 from qp_preq_qual_tmp
1340 where pricing_status_code = G_STATUS_UNCHANGED
1341 and pricing_phase_id = p_pricing_phase_id) qptq,
1342 qp_qualifiers qpq ,
1343 qp_npreq_line_attrs_tmp qplatq,
1344 qp_list_headers_b qph,
1345 qp_price_req_sources_v qprs
1346 where
1347 qpq.list_header_id = qptq.list_header_id
1348 and qpq.list_line_id = qptq.list_line_id
1349 and qpq.qualifier_grouping_no = qptq.qualifier_grouping_no
1350 and qpq.qualifier_grouping_no <> -1
1351 and qpq.qualifier_context = qplatq.context
1352 and qpq.qualifier_attribute = qplatq.attribute
1353 and qpq.comparison_operator_code = 'NOT ='
1354 and qpq.qualifier_attr_value <> qplatq.value_from
1355 and qpq.search_ind = 2
1356 and qpq.qualifier_group_cnt > 1
1357 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1358 OR
1359 qph.currency_code IS NULL) -- optional currency
1360 -- bug 2799120
1361 --added for moac -- commented references to security profile
1362 --security will be built into qp_list_headers_b
1363 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1364 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1365 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1366 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1367 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1368 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1369 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1370 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1371 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1372 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1373 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
1374 and qph.list_type_code not in ('PRL','AGR')
1375 and qph.active_flag = G_YES
1376 and qpq.active_flag = G_YES
1377 and qpq.list_header_id = qph.list_header_id
1378 and qplatq.line_index > 0
1379 and qplatq.distinct_qualifier_flag = G_YES
1380 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
1381 and qplatq.attribute_type = G_QUALIFIER_TYPE
1382 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1383 and qph.source_system_code = qprs.source_system_code
1384 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1385 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
1386 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
1387 --and qptq.pricing_phase_id = p_pricing_phase_id
1388 union all
1389 select /*+ ORDERED USE_NL(qpq qplh qph) index (qplatq,QP_PREQ_LINE_ATTRS_TMP_N7)
1390 index(qpq qp_qualifiers_n1) index(qph qp_list_headers_b_n7) l_mini_outer_qual_cur_mod */
1391 qpq.list_header_id,
1392 qpq.list_line_id list_line_id,
1393 qpq.qualifier_group_cnt,
1394 qpq.others_group_cnt,
1395 qpq.header_quals_exist_flag,
1396 qpq.search_ind,
1397 G_NO validated_flag,
1398 G_NO applied_flag,
1399 G_LINE_LEVEL attribute_level,
1400 G_QUALIFIER_TYPE attribute_type,
1401 qplatq.context ,
1402 qplatq.attribute ,
1403 qplatq.value_from ,
1404 qpq.qualifier_grouping_no qualifier_grouping_no ,
1405 qpq.qualifier_precedence ,
1406 qpq.qualifier_datatype,
1407 qpq.qualifier_attr_value ,
1408 qpq.qualifier_attr_value_to ,
1409 qpq.start_date_active,
1410 qpq.end_date_active,
1411 G_NO pricing_attr_flag,
1412 qpq.comparison_operator_code ,
1413 qph.list_type_code,
1414 qph.ask_for_flag,
1415 qplatq.pricing_status_code,
1416 'OHQ1' ,
1417 NULL line_index,
1418 NULL pricing_effective_date,
1419 qph.start_date_active_first start_date_active_first,
1420 qph.end_date_active_first end_date_active_first,
1421 NULL line_type_code,
1422 p_pricing_phase_id pricing_phase_id,
1423 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1424 qph.start_date_active start_date_active_h,
1425 qph.end_date_active end_date_active_h,
1426 qph.start_date_active_second start_date_active_second,
1427 qph.end_date_active_second end_date_active_second,
1428 qph.active_date_first_type,
1429 qph.active_date_second_type,
1430 qph.limit_exists_flag,
1431 qplatq.derived_qualifier_flag -- Added for TCA
1432 from
1433 (select distinct list_header_id,list_line_id
1434 from qp_preq_qual_tmp
1435 where pricing_status_code = G_STATUS_UNCHANGED
1436 and pricing_phase_id = p_pricing_phase_id) qptq,
1437 qp_qualifiers qpq ,
1438 qp_npreq_line_attrs_tmp qplatq,
1439 qp_list_headers_b qph,
1440 qp_price_req_sources_v qprs
1441 where
1442 qpq.list_header_id = qptq.list_header_id
1443 and qpq.list_line_id = qptq.list_line_id
1444 and qpq.qualifier_grouping_no = -1
1445 and qpq.qualifier_context = qplatq.context
1446 and qpq.qualifier_attribute = qplatq.attribute
1447 and qpq.comparison_operator_code = 'NOT ='
1448 and qpq.qualifier_attr_value <> qplatq.value_from
1449 and qpq.search_ind = 2
1450 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1451 OR
1452 qph.currency_code IS NULL) -- optional currency
1453 -- bug 2799120
1454 --added for moac -- commented references to security profile
1455 --security will be built into qp_list_headers_b
1456 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1457 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1458 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1459 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1460 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1461 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1462 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1463 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1464 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1465 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1466 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
1467 and qph.list_type_code not in ('PRL','AGR')
1468 and qph.active_flag = G_YES
1469 and qpq.active_flag = G_YES
1470 and qpq.list_header_id = qph.list_header_id
1471 and qplatq.line_index > 0
1472 and qplatq.distinct_qualifier_flag = G_YES
1473 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
1474 and qplatq.attribute_type = G_QUALIFIER_TYPE
1475 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1476 and qph.source_system_code = qprs.source_system_code
1477 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1478 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')); -- Added for TCA
1479
1480 --and qptq.pricing_status_code = G_STATUS_UNCHANGED
1481 --and qptq.pricing_phase_id = p_pricing_phase_id;
1482
1483 nROWS CONSTANT NUMBER := 1000;
1484
1485 l_status_code VARCHAR2(30);
1486 l_status_text VARCHAR2(240);
1487 E_ROUTINE_ERRORS EXCEPTION;
1488
1489 BEGIN
1490
1491 --Delete from QP_PREQ_QUAL_TMP;
1492
1493 --G_QUALIFIER_TEMP := G_QUALIFIER_TEMP_EMPTY;
1494
1495 OPEN l_mini_outer_qual_cur;
1496
1497 LOOP
1498 G_LIST_HEADER_ID_TBL_Q.delete;
1499 G_LIST_LINE_ID_TBL_Q.delete;
1500 G_VALIDATED_FLAG_TBL_Q.delete;
1501 G_APPLIED_FLAG_TBL_Q.delete;
1502 G_ATTRIBUTE_LEVEL_TBL_Q.delete;
1503 G_ATTRIBUTE_TYPE_TBL_Q.delete;
1504 G_CONTEXT_TBL_Q.delete;
1505 G_ATTRIBUTE_TBL_Q.delete;
1506 G_VALUE_FROM_TBL_Q.delete;
1507 G_GROUPING_NO_TBL_Q.delete;
1508 G_QUALIFIER_PRECEDENCE_TBL_Q.delete;
1509 G_DATATYPE_TBL_Q.delete;
1510 G_SETUP_VALUE_FROM_TBL_Q.delete;
1511 G_SETUP_VALUE_TO_TBL_Q.delete;
1512 G_PRICING_ATTR_FLAG_TBL_Q.delete;
1513 G_OPERATOR_TYPE_TBL_Q.delete;
1514 G_QUALIFIER_TYPE_TBL_Q.delete;
1515 G_LIST_TYPE_CODE_TBL_Q.delete;
1516 G_ASK_FOR_FLAG_TBL_Q.delete;
1517 G_QUALIFIER_GROUP_CNT_TBL_Q.delete;
1518 G_OTHERS_GROUP_CNT_TBL_Q.delete;
1519 G_HEADER_QUALS_EXIST_FLG_TBL_Q.delete;
1520 G_SEARCH_IND_TBL_Q.delete;
1521 G_PRICING_STATUS_CODE_TBL_Q.delete;
1522 G_START_DATE_ACTIVE_TBL_Q.delete;
1523 G_END_DATE_ACTIVE_TBL_Q.delete;
1524 G_LINE_INDEX_TBL_Q.delete;
1525 G_PRICING_EFFECTIVE_DATE_TBL_Q.delete;
1526 G_START_DATE_ACTIVE_FIR_TBL_Q.delete;
1527 G_END_DATE_ACTIVE_FIR_TBL_Q.delete;
1528 G_LINE_TYPE_CODE_TBL_Q.delete;
1529 G_PRICING_PHASE_ID_TBL_Q.delete;
1530 G_UNIQUE_KEY_TBL_Q.delete;
1531 G_START_DATE_ACTIVE_TBL_H_Q.delete;
1532 G_END_DATE_ACTIVE_TBL_H_Q.delete;
1533 G_START_DATE_ACTIVE_SEC_TBL_Q.delete;
1534 G_END_DATE_ACTIVE_SEC_TBL_Q.delete;
1535 G_ACTIVE_DATE_FIR_TYPE_TBL_Q.delete;
1536 G_ACTIVE_DATE_SEC_TYPE_TBL_Q.delete;
1537 G_HEADER_LIMIT_EXISTS_TBL_Q.delete;
1538 G_DERIVED_QUALIFIER_FLAG_TBL_Q.delete; -- Added for TCA
1539
1540 FETCH l_mini_outer_qual_cur
1541 BULK COLLECT INTO
1542 G_LIST_HEADER_ID_TBL_Q
1543 , G_LIST_LINE_ID_TBL_Q
1544 , G_QUALIFIER_GROUP_CNT_TBL_Q
1545 , G_OTHERS_GROUP_CNT_TBL_Q
1546 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
1547 , G_SEARCH_IND_TBL_Q
1548 , G_VALIDATED_FLAG_TBL_Q
1549 , G_APPLIED_FLAG_TBL_Q
1550 , G_ATTRIBUTE_LEVEL_TBL_Q
1551 , G_ATTRIBUTE_TYPE_TBL_Q
1552 , G_CONTEXT_TBL_Q
1553 , G_ATTRIBUTE_TBL_Q
1554 , G_VALUE_FROM_TBL_Q
1555 , G_GROUPING_NO_TBL_Q
1556 , G_QUALIFIER_PRECEDENCE_TBL_Q
1557 , G_DATATYPE_TBL_Q
1558 , G_SETUP_VALUE_FROM_TBL_Q
1559 , G_SETUP_VALUE_TO_TBL_Q
1560 , G_START_DATE_ACTIVE_TBL_Q
1561 , G_END_DATE_ACTIVE_TBL_Q
1562 , G_PRICING_ATTR_FLAG_TBL_Q
1563 , G_OPERATOR_TYPE_TBL_Q
1564 , G_LIST_TYPE_CODE_TBL_Q
1565 , G_ASK_FOR_FLAG_TBL_Q
1566 , G_PRICING_STATUS_CODE_TBL_Q
1567 , G_QUALIFIER_TYPE_TBL_Q
1568 , G_LINE_INDEX_TBL_Q
1569 , G_PRICING_EFFECTIVE_DATE_TBL_Q
1570 , G_START_DATE_ACTIVE_FIR_TBL_Q
1571 , G_END_DATE_ACTIVE_FIR_TBL_Q
1572 , G_LINE_TYPE_CODE_TBL_Q
1573 , G_PRICING_PHASE_ID_TBL_Q
1574 , G_UNIQUE_KEY_TBL_Q
1575 , G_START_DATE_ACTIVE_TBL_H_Q
1576 , G_END_DATE_ACTIVE_TBL_H_Q
1577 , G_START_DATE_ACTIVE_SEC_TBL_Q
1578 , G_END_DATE_ACTIVE_SEC_TBL_Q
1579 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
1580 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
1581 , G_HEADER_LIMIT_EXISTS_TBL_Q
1582 , G_DERIVED_QUALIFIER_FLAG_TBL_Q LIMIT nROWS; -- Added for TCA
1583 EXIT WHEN G_LIST_HEADER_ID_TBL_Q.COUNT = 0;
1584
1585 IF (G_LIST_HEADER_ID_TBL_Q.COUNT > 0) THEN
1586 --G_QUALIFIER_TEMP := G_QUALIFIER_TEMP_UPDATED;
1587 INSERT_QUAL(
1588 G_LIST_HEADER_ID_TBL_Q
1589 , G_LIST_LINE_ID_TBL_Q
1590 , G_VALIDATED_FLAG_TBL_Q
1591 , G_APPLIED_FLAG_TBL_Q
1592 , G_ATTRIBUTE_LEVEL_TBL_Q
1593 , G_ATTRIBUTE_TYPE_TBL_Q
1594 , G_CONTEXT_TBL_Q
1595 , G_ATTRIBUTE_TBL_Q
1596 , G_VALUE_FROM_TBL_Q
1597 , G_GROUPING_NO_TBL_Q
1598 , G_QUALIFIER_PRECEDENCE_TBL_Q
1599 , G_DATATYPE_TBL_Q
1600 , G_SETUP_VALUE_FROM_TBL_Q
1601 , G_SETUP_VALUE_TO_TBL_Q
1602 , G_PRICING_ATTR_FLAG_TBL_Q
1603 , G_OPERATOR_TYPE_TBL_Q
1604 , G_LIST_TYPE_CODE_TBL_Q
1605 , G_ASK_FOR_FLAG_TBL_Q
1606 , G_QUALIFIER_TYPE_TBL_Q
1607 , G_QUALIFIER_GROUP_CNT_TBL_Q
1608 , G_OTHERS_GROUP_CNT_TBL_Q
1609 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
1610 , G_SEARCH_IND_TBL_Q
1611 , G_PRICING_STATUS_CODE_TBL_Q
1612 , G_START_DATE_ACTIVE_TBL_Q
1613 , G_END_DATE_ACTIVE_TBL_Q
1614 , G_LINE_INDEX_TBL_Q
1615 , G_PRICING_EFFECTIVE_DATE_TBL_Q
1616 , G_START_DATE_ACTIVE_FIR_TBL_Q
1617 , G_END_DATE_ACTIVE_FIR_TBL_Q
1618 , G_LINE_TYPE_CODE_TBL_Q
1619 , G_PRICING_PHASE_ID_TBL_Q
1620 , G_UNIQUE_KEY_TBL_Q
1621 , G_START_DATE_ACTIVE_TBL_H_Q
1622 , G_END_DATE_ACTIVE_TBL_H_Q
1623 , G_START_DATE_ACTIVE_SEC_TBL_Q
1624 , G_END_DATE_ACTIVE_SEC_TBL_Q
1625 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
1626 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
1627 , G_HEADER_LIMIT_EXISTS_TBL_Q
1628 , G_DERIVED_QUALIFIER_FLAG_TBL_Q -- Added for TCA
1629 , l_status_code
1630 , l_status_text);
1631
1632 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
1633 RAISE E_ROUTINE_ERRORS;
1634 END IF;
1635
1636 END IF;
1637
1638 END LOOP;
1639 CLOSE l_mini_outer_qual_cur;
1640
1641 EXCEPTION
1642 WHEN OTHERS THEN
1643 x_status_code := FND_API.G_RET_STS_ERROR;
1644 x_status_text :=l_routine||' '||SQLERRM;
1645 IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
1646 engine_debug(l_routine||' '||SQLERRM);
1647 END IF;
1648
1649 END Mini_Cache_Qualifiers;
1650
1651 /*+--------------------------------------------------------------------
1652 |Cache_Line_Qualifiers
1653 |To get the pure line level quals and
1654 |To get the line level quals for satisfied headers
1655 |
1656 +--------------------------------------------------------------------
1657 */
1658 PROCEDURE Cache_Line_Qualifiers(p_pricing_phase_id IN NUMBER,
1659 x_status_code OUT NOCOPY VARCHAR2,
1660 x_status_text OUT NOCOPY VARCHAR2) As
1661 /*
1662 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,qp_npreq_line_attrs_tmp_N4,DISTINCT_QUALIFIER_FLAG,1
1663 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,qp_npreq_line_attrs_tmp_N4,ATTRIBUTE_TYPE,2
1664 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,qp_npreq_line_attrs_tmp_N4,PRICING_STATUS_CODE,3
1665
1666 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,QUALIFIER_CONTEXT,1
1667 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,QUALIFIER_ATTRIBUTE,2
1668 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,QUALIFIER_ATTR_VALUE,3
1669 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,COMPARISON_OPERATOR_CODE,4
1670 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,ACTIVE_FLAG,5
1671 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,SEARCH_IND,6
1672
1673 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_LIST_HEADER_PHASES_U1,PRICING_PHASE_ID,1
1674 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_LIST_HEADER_PHASES_U1,LIST_HEADER_ID,2
1675
1676 INDX,QP_PREQ_GRP.cache_line_qualifiers.l_outer_qual_cur,QP_LIST_HEADERS_B_N2,LIST_HEADER_ID,1
1677 */
1678 -- Changed the cursor l_outer_qual_cur for bug#3002632
1679 -- [julin/4396043/4471795] perform header filter before prod check, go to qp_pricing_attributes
1680 -- before qp_npreq_line_attrs_tmp during prod check.
1681 CURSOR l_OUTER_QUAL_CUR IS
1682 -- Qualifier Only
1683 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 */
1684 qpq.list_header_id,
1685 qpq.list_line_id list_line_id,
1686 qpq.qualifier_group_cnt,
1687 qpq.others_group_cnt,
1688 qpq.header_quals_exist_flag,
1689 qpq.search_ind,
1690 G_NO validated_flag,
1691 G_NO applied_flag,
1692 G_LINE_LEVEL attribute_level,
1693 G_QUALIFIER_TYPE attribute_type,
1694 qplatq.context ,
1695 qplatq.attribute ,
1696 qplatq.value_from ,
1697 qpq.qualifier_grouping_no qualifier_grouping_no ,
1698 qpq.qualifier_precedence ,
1699 qpq.qualifier_datatype,
1700 qpq.qualifier_attr_value ,
1701 qpq.qualifier_attr_value_to ,
1702 qpq.start_date_active,
1703 qpq.end_date_active,
1704 G_NO pricing_attr_flag,
1705 qpq.comparison_operator_code ,
1706 qph.list_type_code,
1707 qph.ask_for_flag,
1708 qplatq.pricing_status_code,
1709 'OHQ' ,
1710 NULL line_index,
1711 NULL pricing_effective_date,
1712 qph.start_date_active_first start_date_active_first,
1713 qph.end_date_active_first end_date_active_first,
1714 NULL line_type_code,
1715 p_pricing_phase_id pricing_phase_id,
1716 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1717 qph.start_date_active start_date_active_h,
1718 qph.end_date_active end_date_active_h,
1719 qph.start_date_active_second start_date_active_second,
1720 qph.end_date_active_second end_date_active_second,
1721 qph.active_date_first_type,
1722 qph.active_date_second_type,
1723 qph.limit_exists_flag,
1724 qplatq.derived_qualifier_flag -- Added for TCA
1725 from
1726 qp_npreq_line_attrs_tmp qplatq,
1727 qp_qualifiers qpq ,
1728 qp_list_header_phases qplh,
1729 qp_list_headers_b qph,
1730 qp_price_req_sources_v qprs
1731 where
1732 qpq.list_header_id = qplh.list_header_id
1733 and qplh.list_header_id = qph.list_header_id
1734 -- bug 2799120
1735 --added for moac -- commented references to security profile
1736 --security will be built into qp_list_headers_b
1737 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1738 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1739 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1740 and qplh.pricing_phase_id = p_pricing_phase_id
1741 and qpq.qualifier_context = qplatq.context
1742 and qpq.qualifier_attribute = qplatq.attribute
1743 and qpq.qualifier_attr_value = qplatq.value_from
1744 and qpq.comparison_operator_code = '='
1745 and qpq.search_ind = 1
1746 and qpq.list_line_id <> -1
1747 and ( qpq.list_header_id in (SELECT distinct list_header_id -- for qualified headers from Cache_Header_Qualifiers
1748 FROM qp_preq_qual_tmp
1749 WHERE pricing_phase_id = p_pricing_phase_id
1750 AND pricing_status_code = G_STATUS_UNCHANGED)
1751 or
1752 qpq.header_quals_exist_flag = G_NO) -- Pure line level qualifiers
1753 and (not exists (select 'x' --3520634 start
1754 from qp_pricing_attributes qp_pa -- if no product defined,select the header
1755 where qp_pa.list_line_id = qpq.list_line_id
1756 and rownum = 1)
1757 OR -- If product defined on line level,select headers for which product matches.
1758 exists (select /*+ ORDERED USE_NL(qpprod) */ 'x'
1759 FROM qp_pricing_attributes c, qp_npreq_line_attrs_tmp qpprod
1760 WHERE c.list_header_id = qpq.list_header_id
1761 AND c.list_line_id = qpq.list_line_id
1762 AND c.pricing_phase_id = p_pricing_phase_id
1763 AND qpprod.context = c.product_attribute_context
1764 AND qpprod.attribute = c.product_attribute
1765 AND qpprod.value_from = c.product_attr_value
1766 AND qpprod.pricing_status_code = G_STATUS_UNCHANGED
1767 AND c.qualification_ind in (G_YES_PROD_LINE_QUAL_IND, G_YES_PROD_PRIC_LINE_QUAL_IND,
1768 G_YES_PROD_HDR_LINE_QUAL_IND, G_YES_PRIC_HDR_LINE_QUAL_IND)
1769 AND qpprod.attribute_type = G_PRODUCT_TYPE
1770 AND c.excluder_flag = G_NO
1771 --3683298 AND qpprod.line_index = qplatq.line_index
1772 AND rownum = 1)
1773 ) --3520634 end
1774 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1775 OR
1776 qph.currency_code IS NULL) -- optional currency
1777 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1778 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1779 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1780 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1781 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1782 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1783 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1784 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
1785 and qph.list_type_code not in ('PRL','AGR')
1786 and qpq.list_type_code not in ('PRL','AGR')
1787 and qph.active_flag = G_YES
1788 and qpq.active_flag = G_YES
1789 and qplatq.distinct_qualifier_flag = G_YES
1790 and qpq.list_header_id = qph.list_header_id
1791 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
1792 and qplatq.attribute_type = G_QUALIFIER_TYPE
1793 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1794 and qph.source_system_code = qprs.source_system_code
1795 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1796 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
1797 union all
1798 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 */
1799 qpq.list_header_id,
1800 qpq.list_line_id list_line_id,
1801 qpq.qualifier_group_cnt,
1802 qpq.others_group_cnt,
1803 qpq.header_quals_exist_flag,
1804 qpq.search_ind,
1805 G_NO validated_flag,
1806 G_NO applied_flag,
1807 G_LINE_LEVEL attribute_level,
1808 G_QUALIFIER_TYPE attribute_type,
1809 qplatq.context ,
1810 qplatq.attribute ,
1811 qplatq.value_from ,
1812 qpq.qualifier_grouping_no qualifier_grouping_no ,
1813 qpq.qualifier_precedence ,
1814 qpq.qualifier_datatype,
1815 qpq.qualifier_attr_value ,
1816 qpq.qualifier_attr_value_to ,
1817 qpq.start_date_active,
1818 qpq.end_date_active,
1819 G_NO pricing_attr_flag,
1820 qpq.comparison_operator_code ,
1821 qph.list_type_code,
1822 qph.ask_for_flag,
1823 qplatq.pricing_status_code,
1824 'OHQ' ,
1825 NULL line_index,
1826 NULL pricing_effective_date,
1827 qph.start_date_active_first start_date_active_first,
1828 qph.end_date_active_first end_date_active_first,
1829 NULL line_type_code,
1830 p_pricing_phase_id pricing_phase_id,
1831 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1832 qph.start_date_active start_date_active_h,
1833 qph.end_date_active end_date_active_h,
1834 qph.start_date_active_second start_date_active_second,
1835 qph.end_date_active_second end_date_active_second,
1836 qph.active_date_first_type,
1837 qph.active_date_second_type,
1838 qph.limit_exists_flag,
1839 qplatq.derived_qualifier_flag -- Added for TCA
1840 from
1841 qp_npreq_line_attrs_tmp qplatq,
1842 qp_qualifiers qpq ,
1843 qp_list_header_phases qplh,
1844 qp_list_headers_b qph,
1845 qp_price_req_sources_v qprs
1846 where
1847 qpq.list_header_id = qplh.list_header_id
1848 and qplh.list_header_id = qph.list_header_id
1849 -- bug 2799120
1850 --added for moac -- commented references to security profile
1851 --security will be built into qp_list_headers_b
1852 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1853 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1854 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1855 and qplh.pricing_phase_id = p_pricing_phase_id
1856 and qpq.qualifier_context = qplatq.context
1857 and qpq.qualifier_attribute = qplatq.attribute
1858 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
1859 and qpq.qualifier_datatype = G_NUMERIC
1860 and qpq.search_ind = 1
1861 and qpq.list_line_id <> -1
1862 and ( qpq.list_header_id in (SELECT distinct list_header_id
1863 FROM qp_preq_qual_tmp
1864 WHERE pricing_phase_id = p_pricing_phase_id
1865 AND pricing_status_code = G_STATUS_UNCHANGED)
1866 or
1867 qpq.header_quals_exist_flag = G_NO)
1868 and (not exists (select 'x' --3520634 start
1869 from qp_pricing_attributes qp_pa -- if no product defined,select the header
1870 where qp_pa.list_line_id = qpq.list_line_id
1871 and rownum = 1)
1872 OR -- If product defined on line level,select headers for which product matches.
1873 exists (select /*+ ORDERED USE_NL(qpprod) */ 'x'
1874 FROM qp_pricing_attributes c, qp_npreq_line_attrs_tmp qpprod
1875 WHERE c.list_header_id = qpq.list_header_id
1876 AND c.list_line_id = qpq.list_line_id
1877 AND c.pricing_phase_id = p_pricing_phase_id
1878 AND qpprod.context = c.product_attribute_context
1879 AND qpprod.attribute = c.product_attribute
1880 AND qpprod.value_from = c.product_attr_value
1881 AND qpprod.pricing_status_code = G_STATUS_UNCHANGED
1882 AND c.qualification_ind in (G_YES_PROD_LINE_QUAL_IND, G_YES_PROD_PRIC_LINE_QUAL_IND,
1883 G_YES_PROD_HDR_LINE_QUAL_IND, G_YES_PRIC_HDR_LINE_QUAL_IND)
1884 AND qpprod.attribute_type = G_PRODUCT_TYPE
1885 AND c.excluder_flag = G_NO
1886 --3683298 AND qpprod.line_index = qplatq.line_index
1887 AND rownum = 1)
1888 ) --3520634 end
1889 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
1890 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number
1891 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
1892 OR
1893 qph.currency_code IS NULL) -- optional currency
1894 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
1895 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
1896 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
1897 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
1898 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
1899 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
1900 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
1901 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
1902 and qph.list_type_code not in ('PRL','AGR')
1903 and qpq.list_type_code not in ('PRL','AGR')
1904 and qph.active_flag = G_YES
1905 and qpq.active_flag = G_YES
1906 and qplatq.distinct_qualifier_flag = G_YES
1907 and qpq.list_header_id = qph.list_header_id
1908 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
1909 and qplatq.attribute_type = G_QUALIFIER_TYPE
1910 and qprs.request_type_code = G_REQUEST_TYPE_CODE
1911 and qph.source_system_code = qprs.source_system_code
1912 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
1913 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
1914 union all
1915 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 */
1916 qpq.list_header_id,
1917 qpq.list_line_id list_line_id,
1918 qpq.qualifier_group_cnt,
1919 qpq.others_group_cnt,
1920 qpq.header_quals_exist_flag,
1921 qpq.search_ind,
1922 G_NO validated_flag,
1923 G_NO applied_flag,
1924 G_LINE_LEVEL attribute_level,
1925 G_QUALIFIER_TYPE attribute_type,
1926 qplatq.context ,
1927 qplatq.attribute ,
1928 qplatq.value_from ,
1929 qpq.qualifier_grouping_no qualifier_grouping_no ,
1930 qpq.qualifier_precedence ,
1931 qpq.qualifier_datatype,
1932 qpq.qualifier_attr_value ,
1933 qpq.qualifier_attr_value_to ,
1934 qpq.start_date_active,
1935 qpq.end_date_active,
1936 G_NO pricing_attr_flag,
1937 qpq.comparison_operator_code ,
1938 qph.list_type_code,
1939 qph.ask_for_flag,
1940 qplatq.pricing_status_code,
1941 'OHQ' ,
1942 NULL line_index,
1943 NULL pricing_effective_date,
1944 qph.start_date_active_first start_date_active_first,
1945 qph.end_date_active_first end_date_active_first,
1946 NULL line_type_code,
1947 p_pricing_phase_id pricing_phase_id,
1948 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
1949 qph.start_date_active start_date_active_h,
1950 qph.end_date_active end_date_active_h,
1951 qph.start_date_active_second start_date_active_second,
1952 qph.end_date_active_second end_date_active_second,
1953 qph.active_date_first_type,
1954 qph.active_date_second_type,
1955 qph.limit_exists_flag,
1956 qplatq.derived_qualifier_flag -- Added for TCA
1957 from
1958 qp_npreq_line_attrs_tmp qplatq,
1959 qp_qualifiers qpq ,
1960 qp_list_header_phases qplh,
1961 qp_list_headers_b qph,
1962 qp_price_req_sources_v qprs
1963 where
1964 qpq.list_header_id = qplh.list_header_id
1965 and qplh.list_header_id = qph.list_header_id
1966 -- bug 2799120
1967 --added for moac -- commented references to security profile
1968 --security will be built into qp_list_headers_b
1969 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
1970 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
1971 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
1972 and qplh.pricing_phase_id = p_pricing_phase_id
1973 and qpq.qualifier_context = qplatq.context
1974 and qpq.qualifier_attribute = qplatq.attribute
1975 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
1976 and qpq.search_ind = 1
1977 and qpq.list_line_id <> -1
1978 and ( qpq.list_header_id in (SELECT distinct list_header_id
1979 FROM qp_preq_qual_tmp
1980 WHERE pricing_phase_id = p_pricing_phase_id
1981 AND pricing_status_code = G_STATUS_UNCHANGED)
1982 or
1983 qpq.header_quals_exist_flag = G_NO)
1984 and (not exists (select 'x' --3520634 start
1985 from qp_pricing_attributes qp_pa -- if no product defined,select the header
1986 where qp_pa.list_line_id = qpq.list_line_id
1987 and rownum = 1)
1988 OR -- If product defined on line level,select headers for which product matches.
1989 exists (select /*+ ORDERED USE_NL(qpprod) */ 'x'
1990 FROM qp_pricing_attributes c, qp_npreq_line_attrs_tmp qpprod
1991 WHERE c.list_header_id = qpq.list_header_id
1992 AND c.list_line_id = qpq.list_line_id
1993 AND c.pricing_phase_id = p_pricing_phase_id
1994 AND qpprod.context = c.product_attribute_context
1995 AND qpprod.attribute = c.product_attribute
1996 AND qpprod.value_from = c.product_attr_value
1997 AND qpprod.pricing_status_code = G_STATUS_UNCHANGED
1998 AND c.qualification_ind in (G_YES_PROD_LINE_QUAL_IND, G_YES_PROD_PRIC_LINE_QUAL_IND,
1999 G_YES_PROD_HDR_LINE_QUAL_IND, G_YES_PRIC_HDR_LINE_QUAL_IND)
2000 AND qpprod.attribute_type = G_PRODUCT_TYPE
2001 AND c.excluder_flag = G_NO
2002 --3683298 AND qpprod.line_index = qplatq.line_index
2003 AND rownum = 1)
2004 ) --3520634 end
2005 and qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y)
2006 --and decode(qpq.qualifier_datatype,G_VARCHAR,qplatq.value_from,G_DATE_X,qplatq.value_from,
2007 -- G_DATE_Y,qplatq.value_from,null)
2008 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to
2009 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
2010 OR
2011 qph.currency_code IS NULL) -- optional currency
2012 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
2013 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
2014 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
2015 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
2016 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
2017 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
2018 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
2019 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
2020 and qph.list_type_code not in ('PRL','AGR')
2021 and qpq.list_type_code not in ('PRL','AGR')
2022 and qph.active_flag = G_YES
2023 and qpq.active_flag = G_YES
2024 and qplatq.distinct_qualifier_flag = G_YES
2025 and qpq.list_header_id = qph.list_header_id
2026 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
2027 and qplatq.attribute_type = G_QUALIFIER_TYPE
2028 and qprs.request_type_code = G_REQUEST_TYPE_CODE
2029 and qph.source_system_code = qprs.source_system_code
2030 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
2031 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
2032 union all
2033 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 */
2034 qpq.list_header_id,
2035 qpq.list_line_id list_line_id,
2036 qpq.qualifier_group_cnt,
2037 qpq.others_group_cnt,
2038 qpq.header_quals_exist_flag,
2039 qpq.search_ind,
2040 G_NO validated_flag,
2041 G_NO applied_flag,
2042 G_LINE_LEVEL attribute_level,
2043 G_QUALIFIER_TYPE attribute_type,
2044 qplatq.context ,
2045 qplatq.attribute ,
2046 qplatq.value_from ,
2047 qpq.qualifier_grouping_no qualifier_grouping_no ,
2048 qpq.qualifier_precedence ,
2049 qpq.qualifier_datatype,
2050 qpq.qualifier_attr_value ,
2051 qpq.qualifier_attr_value_to ,
2052 qpq.start_date_active,
2053 qpq.end_date_active,
2054 G_NO pricing_attr_flag,
2055 qpq.comparison_operator_code ,
2056 qph.list_type_code,
2057 qph.ask_for_flag,
2058 qplatq.pricing_status_code,
2059 'OHQ' ,
2060 NULL line_index,
2061 NULL pricing_effective_date,
2062 qph.start_date_active_first start_date_active_first,
2063 qph.end_date_active_first end_date_active_first,
2064 NULL line_type_code,
2065 p_pricing_phase_id pricing_phase_id,
2066 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
2067 qph.start_date_active start_date_active_h,
2068 qph.end_date_active end_date_active_h,
2069 qph.start_date_active_second start_date_active_second,
2070 qph.end_date_active_second end_date_active_second,
2071 qph.active_date_first_type,
2072 qph.active_date_second_type,
2073 qph.limit_exists_flag,
2074 qplatq.derived_qualifier_flag -- Added for TCA
2075 from
2076 qp_npreq_line_attrs_tmp qplatq,
2077 qp_qualifiers qpq ,
2078 qp_list_header_phases qplh,
2079 qp_list_headers_b qph,
2080 qp_price_req_sources_v qprs
2081 where
2082 qpq.list_header_id = qplh.list_header_id
2083 and qplh.list_header_id = qph.list_header_id
2084 -- bug 2799120
2085 --added for moac -- commented references to security profile
2086 --security will be built into qp_list_headers_b
2087 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
2088 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
2089 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
2090 and qplh.pricing_phase_id = p_pricing_phase_id
2091 and qpq.qualifier_context = qplatq.context
2092 and qpq.qualifier_attribute = qplatq.attribute
2093 and qpq.comparison_operator_code = 'NOT ='
2094 and qpq.qualifier_attr_value <> qplatq.value_from
2095 and qpq.search_ind = 1
2096 and qpq.list_line_id <> -1
2097 and ( qpq.list_header_id in (SELECT distinct list_header_id
2098 FROM qp_preq_qual_tmp
2099 WHERE pricing_phase_id = p_pricing_phase_id
2100 AND pricing_status_code = G_STATUS_UNCHANGED)
2101 or
2102 qpq.header_quals_exist_flag = G_NO)
2103 and (not exists (select 'x' --3520634 start
2104 from qp_pricing_attributes qp_pa -- if no product defined,select the header
2105 where qp_pa.list_line_id = qpq.list_line_id
2106 and rownum = 1)
2107 OR -- If product defined on line level,select headers for which product matches.
2108 exists (select /*+ ORDERED USE_NL(qpprod) */ 'x'
2109 FROM qp_pricing_attributes c, qp_npreq_line_attrs_tmp qpprod
2110 WHERE c.list_header_id = qpq.list_header_id
2111 AND c.list_line_id = qpq.list_line_id
2112 AND c.pricing_phase_id = p_pricing_phase_id
2113 AND qpprod.context = c.product_attribute_context
2114 AND qpprod.attribute = c.product_attribute
2115 AND qpprod.value_from = c.product_attr_value
2116 AND qpprod.pricing_status_code = G_STATUS_UNCHANGED
2117 AND c.qualification_ind in (G_YES_PROD_LINE_QUAL_IND, G_YES_PROD_PRIC_LINE_QUAL_IND,
2118 G_YES_PROD_HDR_LINE_QUAL_IND, G_YES_PRIC_HDR_LINE_QUAL_IND)
2119 AND qpprod.attribute_type = G_PRODUCT_TYPE
2120 AND c.excluder_flag = G_NO
2121 --3683298 AND qpprod.line_index = qplatq.line_index
2122 AND rownum = 1)
2123 ) --3520634 end
2124 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
2125 OR
2126 qph.currency_code IS NULL) -- optional currency
2127 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
2128 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
2129 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
2130 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
2131 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
2132 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
2133 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
2134 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
2135 and qph.list_type_code not in ('PRL','AGR')
2136 and qpq.list_type_code not in ('PRL','AGR')
2137 and qph.active_flag = G_YES
2138 and qpq.active_flag = G_YES
2139 and qplatq.distinct_qualifier_flag = G_YES
2140 and qpq.list_header_id = qph.list_header_id
2141 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
2142 and qplatq.attribute_type = G_QUALIFIER_TYPE
2143 and qprs.request_type_code = G_REQUEST_TYPE_CODE
2144 and qph.source_system_code = qprs.source_system_code
2145 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
2146 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')); -- Added for TCA
2147
2148
2149 nROWS CONSTANT NUMBER := 1000;
2150
2151 l_status_code VARCHAR2(30);
2152 l_status_text VARCHAR2(240);
2153
2154 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.Cache_Line_Qualifiers';
2155
2156 BEGIN
2157
2158 --Delete from QP_PREQ_QUAL_TMP;
2159
2160 G_LINE_QUALIFIER_TEMP := 'E';
2161
2162 OPEN l_outer_qual_cur;
2163
2164 LOOP
2165 G_LIST_HEADER_ID_TBL_Q.delete;
2166 G_LIST_LINE_ID_TBL_Q.delete;
2167 G_VALIDATED_FLAG_TBL_Q.delete;
2168 G_APPLIED_FLAG_TBL_Q.delete;
2169 G_ATTRIBUTE_LEVEL_TBL_Q.delete;
2170 G_ATTRIBUTE_TYPE_TBL_Q.delete;
2171 G_CONTEXT_TBL_Q.delete;
2172 G_ATTRIBUTE_TBL_Q.delete;
2173 G_VALUE_FROM_TBL_Q.delete;
2174 G_GROUPING_NO_TBL_Q.delete;
2175 G_QUALIFIER_PRECEDENCE_TBL_Q.delete;
2176 G_DATATYPE_TBL_Q.delete;
2177 G_SETUP_VALUE_FROM_TBL_Q.delete;
2178 G_SETUP_VALUE_TO_TBL_Q.delete;
2179 G_PRICING_ATTR_FLAG_TBL_Q.delete;
2180 G_OPERATOR_TYPE_TBL_Q.delete;
2181 G_QUALIFIER_TYPE_TBL_Q.delete;
2182 G_LIST_TYPE_CODE_TBL_Q.delete;
2183 G_ASK_FOR_FLAG_TBL_Q.delete;
2184 G_QUALIFIER_GROUP_CNT_TBL_Q.delete;
2185 G_OTHERS_GROUP_CNT_TBL_Q.delete;
2186 G_HEADER_QUALS_EXIST_FLG_TBL_Q.delete;
2187 G_SEARCH_IND_TBL_Q.delete;
2188 G_PRICING_STATUS_CODE_TBL_Q.delete;
2189 G_START_DATE_ACTIVE_TBL_Q.delete;
2190 G_END_DATE_ACTIVE_TBL_Q.delete;
2191 G_LINE_INDEX_TBL_Q.delete;
2192 G_PRICING_EFFECTIVE_DATE_TBL_Q.delete;
2193 G_START_DATE_ACTIVE_FIR_TBL_Q.delete;
2194 G_END_DATE_ACTIVE_FIR_TBL_Q.delete;
2195 G_LINE_TYPE_CODE_TBL_Q.delete;
2196 G_PRICING_PHASE_ID_TBL_Q.delete;
2197 G_UNIQUE_KEY_TBL_Q.delete;
2198 G_START_DATE_ACTIVE_TBL_H_Q.delete;
2199 G_END_DATE_ACTIVE_TBL_H_Q.delete;
2200 G_START_DATE_ACTIVE_SEC_TBL_Q.delete;
2201 G_END_DATE_ACTIVE_SEC_TBL_Q.delete;
2202 G_ACTIVE_DATE_FIR_TYPE_TBL_Q.delete;
2203 G_ACTIVE_DATE_SEC_TYPE_TBL_Q.delete;
2204 G_HEADER_LIMIT_EXISTS_TBL_Q.delete;
2205 G_DERIVED_QUALIFIER_FLAG_TBL_Q.delete; -- Added for TCA
2206
2207 FETCH l_outer_qual_cur
2208 BULK COLLECT INTO
2209 G_LIST_HEADER_ID_TBL_Q
2210 , G_LIST_LINE_ID_TBL_Q
2211 , G_QUALIFIER_GROUP_CNT_TBL_Q
2212 , G_OTHERS_GROUP_CNT_TBL_Q
2213 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
2214 , G_SEARCH_IND_TBL_Q
2215 , G_VALIDATED_FLAG_TBL_Q
2216 , G_APPLIED_FLAG_TBL_Q
2217 , G_ATTRIBUTE_LEVEL_TBL_Q
2218 , G_ATTRIBUTE_TYPE_TBL_Q
2219 , G_CONTEXT_TBL_Q
2220 , G_ATTRIBUTE_TBL_Q
2221 , G_VALUE_FROM_TBL_Q
2222 , G_GROUPING_NO_TBL_Q
2223 , G_QUALIFIER_PRECEDENCE_TBL_Q
2224 , G_DATATYPE_TBL_Q
2225 , G_SETUP_VALUE_FROM_TBL_Q
2226 , G_SETUP_VALUE_TO_TBL_Q
2227 , G_START_DATE_ACTIVE_TBL_Q
2228 , G_END_DATE_ACTIVE_TBL_Q
2229 , G_PRICING_ATTR_FLAG_TBL_Q
2230 , G_OPERATOR_TYPE_TBL_Q
2231 , G_LIST_TYPE_CODE_TBL_Q
2232 , G_ASK_FOR_FLAG_TBL_Q
2233 , G_PRICING_STATUS_CODE_TBL_Q
2234 , G_QUALIFIER_TYPE_TBL_Q
2235 , G_LINE_INDEX_TBL_Q
2236 , G_PRICING_EFFECTIVE_DATE_TBL_Q
2237 , G_START_DATE_ACTIVE_FIR_TBL_Q
2238 , G_END_DATE_ACTIVE_FIR_TBL_Q
2239 , G_LINE_TYPE_CODE_TBL_Q
2240 , G_PRICING_PHASE_ID_TBL_Q
2241 , G_UNIQUE_KEY_TBL_Q
2242 , G_START_DATE_ACTIVE_TBL_H_Q
2243 , G_END_DATE_ACTIVE_TBL_H_Q
2244 , G_START_DATE_ACTIVE_SEC_TBL_Q
2245 , G_END_DATE_ACTIVE_SEC_TBL_Q
2246 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
2247 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
2248 , G_HEADER_LIMIT_EXISTS_TBL_Q
2249 , G_DERIVED_QUALIFIER_FLAG_TBL_Q LIMIT nROWS; -- Added for TCA
2250 EXIT WHEN G_LIST_HEADER_ID_TBL_Q.COUNT = 0;
2251
2252 IF (G_LIST_HEADER_ID_TBL_Q.COUNT > 0) THEN
2253
2254 G_LINE_QUALIFIER_TEMP := 'U';
2255
2256 INSERT_QUAL(
2257 G_LIST_HEADER_ID_TBL_Q
2258 , G_LIST_LINE_ID_TBL_Q
2259 , G_VALIDATED_FLAG_TBL_Q
2260 , G_APPLIED_FLAG_TBL_Q
2261 , G_ATTRIBUTE_LEVEL_TBL_Q
2262 , G_ATTRIBUTE_TYPE_TBL_Q
2263 , G_CONTEXT_TBL_Q
2264 , G_ATTRIBUTE_TBL_Q
2265 , G_VALUE_FROM_TBL_Q
2266 , G_GROUPING_NO_TBL_Q
2267 , G_QUALIFIER_PRECEDENCE_TBL_Q
2268 , G_DATATYPE_TBL_Q
2269 , G_SETUP_VALUE_FROM_TBL_Q
2270 , G_SETUP_VALUE_TO_TBL_Q
2271 , G_PRICING_ATTR_FLAG_TBL_Q
2272 , G_OPERATOR_TYPE_TBL_Q
2273 , G_LIST_TYPE_CODE_TBL_Q
2274 , G_ASK_FOR_FLAG_TBL_Q
2275 , G_QUALIFIER_TYPE_TBL_Q
2276 , G_QUALIFIER_GROUP_CNT_TBL_Q
2277 , G_OTHERS_GROUP_CNT_TBL_Q
2278 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
2279 , G_SEARCH_IND_TBL_Q
2280 , G_PRICING_STATUS_CODE_TBL_Q
2281 , G_START_DATE_ACTIVE_TBL_Q
2282 , G_END_DATE_ACTIVE_TBL_Q
2283 , G_LINE_INDEX_TBL_Q
2284 , G_PRICING_EFFECTIVE_DATE_TBL_Q
2285 , G_START_DATE_ACTIVE_FIR_TBL_Q
2286 , G_END_DATE_ACTIVE_FIR_TBL_Q
2287 , G_LINE_TYPE_CODE_TBL_Q
2288 , G_PRICING_PHASE_ID_TBL_Q
2289 , G_UNIQUE_KEY_TBL_Q
2290 , G_START_DATE_ACTIVE_TBL_H_Q
2291 , G_END_DATE_ACTIVE_TBL_H_Q
2292 , G_START_DATE_ACTIVE_SEC_TBL_Q
2293 , G_END_DATE_ACTIVE_SEC_TBL_Q
2294 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
2295 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
2296 , G_HEADER_LIMIT_EXISTS_TBL_Q
2297 , G_DERIVED_QUALIFIER_FLAG_TBL_Q -- Added for TCA
2298 , l_status_code
2299 , l_status_text);
2300 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
2301 RAISE FND_API.G_EXC_ERROR;
2302 END IF;
2303 END IF;
2304
2305 END LOOP;
2306 CLOSE l_outer_qual_cur;
2307
2308 -- Nitin
2309 -- addeded check to delete header level qualifiers if no line qualifier is selected
2310 -- and the header has no lines without line level qualifier in that phase.
2311
2312 UPDATE QP_PREQ_QUAL_TMP a
2313 SET a.PRICING_STATUS_CODE = G_DELETED_GRP
2314 WHERE
2315 a.list_line_id = '-1'
2316 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
2317 AND a.PRICING_PHASE_ID = p_pricing_phase_id
2318 and a.line_index is null
2319 and not exists
2320 (select 'x' from qp_preq_qual_tmp b where
2321 b.list_header_id = a.list_header_id
2322 and b.list_line_id <> '-1'
2323 and b.pricing_phase_id = p_pricing_phase_id
2324 and b.pricing_status_code = G_STATUS_UNCHANGED
2325 and b.line_index is null)
2326 and a.list_header_id in
2327 (select list_header_id from
2328 qp_list_header_phases
2329 where
2330 pricing_phase_id = p_pricing_phase_id
2331 and qualifier_flag = 'Y');
2332
2333 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
2334 engine_debug('Nitin - Delete headers - rows deleted '||sql%rowcount);
2335
2336 END IF;
2337 EXCEPTION
2338 WHEN OTHERS THEN
2339 x_status_code := FND_API.G_RET_STS_ERROR;
2340 x_status_text :=l_routine||' '||SQLERRM;
2341 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
2342 engine_debug(l_routine||' '||SQLERRM);
2343 END IF;
2344 END Cache_Line_Qualifiers;
2345
2346 /*+--------------------------------------------------------------------
2347 |Cache_Header_Qualifiers
2348 |To match only the header level qualifiers and get qualified headers (list_line_id = -1)
2349 |
2350 +--------------------------------------------------------------------
2351 */
2352 PROCEDURE Cache_Header_Qualifiers(p_pricing_phase_id IN NUMBER,
2353 x_status_code OUT NOCOPY VARCHAR2,
2354 x_status_text OUT NOCOPY VARCHAR2) As
2355 /*
2356 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,qp_npreq_line_attrs_tmp_N4,DISTINCT_QUALIFIER_FLAG,1
2357 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,qp_npreq_line_attrs_tmp_N4,ATTRIBUTE_TYPE,2
2358 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,qp_npreq_line_attrs_tmp_N4,PRICING_STATUS_CODE,3
2359
2360 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,QUALIFIER_CONTEXT,1
2361 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,QUALIFIER_ATTRIBUTE,2
2362 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,QUALIFIER_ATTR_VALUE,3
2363 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,COMPARISON_OPERATOR_CODE,4
2364 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,ACTIVE_FLAG,5
2365 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_QUALIFIERS_N4,SEARCH_IND,6
2366
2367 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_LIST_HEADER_PHASES_U1,PRICING_PHASE_ID,1
2368 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_LIST_HEADER_PHASES_U1,LIST_HEADER_ID,2
2369
2370 INDX,QP_PREQ_GRP.cache_header_qualifiers.l_outer_qual_cur,QP_LIST_HEADERS_B_N2,LIST_HEADER_ID,1
2371 */
2372 -- Changed the cursor l_outer_qual_cur for bug#3002632
2373 CURSOR l_OUTER_QUAL_CUR IS
2374 -- Qualifier Only
2375 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 */
2376 qpq.list_header_id,
2377 qpq.list_line_id list_line_id,
2378 qpq.qualifier_group_cnt,
2379 qpq.others_group_cnt,
2380 qpq.header_quals_exist_flag,
2381 qpq.search_ind,
2382 G_NO validated_flag,
2383 G_NO applied_flag,
2384 G_LINE_LEVEL attribute_level,
2385 G_QUALIFIER_TYPE attribute_type,
2386 qplatq.context ,
2387 qplatq.attribute ,
2388 qplatq.value_from ,
2389 qpq.qualifier_grouping_no qualifier_grouping_no ,
2390 qpq.qualifier_precedence ,
2391 qpq.qualifier_datatype,
2392 qpq.qualifier_attr_value ,
2393 qpq.qualifier_attr_value_to ,
2394 qpq.start_date_active,
2395 qpq.end_date_active,
2396 G_NO pricing_attr_flag,
2397 qpq.comparison_operator_code ,
2398 qph.list_type_code,
2399 qph.ask_for_flag,
2400 qplatq.pricing_status_code,
2401 'OHQ' ,
2402 NULL line_index,
2403 NULL pricing_effective_date,
2404 qph.start_date_active_first start_date_active_first,
2405 qph.end_date_active_first end_date_active_first,
2406 NULL line_type_code,
2407 p_pricing_phase_id pricing_phase_id,
2408 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
2409 qph.start_date_active start_date_active_h,
2410 qph.end_date_active end_date_active_h,
2411 qph.start_date_active_second start_date_active_second,
2412 qph.end_date_active_second end_date_active_second,
2413 qph.active_date_first_type,
2414 qph.active_date_second_type,
2415 qph.limit_exists_flag,
2416 qplatq.derived_qualifier_flag -- Added for TCA
2417 from
2418 qp_npreq_line_attrs_tmp qplatq,
2419 qp_qualifiers qpq ,
2420 qp_list_header_phases qplh,
2421 qp_list_headers_b qph,
2422 qp_price_req_sources_v qprs
2423 where
2424 qpq.list_header_id = qplh.list_header_id
2425 and qplh.list_header_id = qph.list_header_id
2426 -- bug 2799120
2427 --added for moac -- commented references to security profile
2428 --security will be built into qp_list_headers_b
2429 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
2430 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
2431 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
2432 and qplh.pricing_phase_id = p_pricing_phase_id
2433 and qpq.qualifier_context = qplatq.context
2434 and qpq.qualifier_attribute = qplatq.attribute
2435 and qpq.qualifier_attr_value = qplatq.value_from
2436 and qpq.comparison_operator_code = '='
2437 and qpq.list_line_id = -1 -- only Header level quals
2438 and qpq.search_ind = 1
2439 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
2440 OR
2441 qph.currency_code IS NULL) -- optional currency
2442 and ((qph.ask_for_flag = G_YES and
2443 qph.list_header_id in (SELECT list_header_id
2444 FROM qp_npreq_line_attrs_tmp
2445 WHERE attribute_type = 'QUALIFIER'
2446 AND pricing_status_code = G_STATUS_UNCHANGED
2447 AND validated_flag = G_NO
2448 AND list_header_id IS NOT NULL))
2449 OR qph.ask_for_flag = G_NO)
2450 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
2451 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
2452 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
2453 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
2454 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
2455 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
2456 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
2457 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
2458 and qph.list_type_code not in ('PRL','AGR')
2459 and qpq.list_type_code not in ('PRL','AGR')
2460 and qph.active_flag = G_YES
2461 and qpq.active_flag = G_YES
2462 and qplatq.distinct_qualifier_flag = G_YES
2463 and qpq.list_header_id = qph.list_header_id
2464 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
2465 and qplatq.attribute_type = G_QUALIFIER_TYPE
2466 and qprs.request_type_code = G_REQUEST_TYPE_CODE
2467 and qph.source_system_code = qprs.source_system_code
2468 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
2469 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
2470 union all
2471 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 */
2472 qpq.list_header_id,
2473 qpq.list_line_id list_line_id,
2474 qpq.qualifier_group_cnt,
2475 qpq.others_group_cnt,
2476 qpq.header_quals_exist_flag,
2477 qpq.search_ind,
2478 G_NO validated_flag,
2479 G_NO applied_flag,
2480 G_LINE_LEVEL attribute_level,
2481 G_QUALIFIER_TYPE attribute_type,
2482 qplatq.context ,
2483 qplatq.attribute ,
2484 qplatq.value_from ,
2485 qpq.qualifier_grouping_no qualifier_grouping_no ,
2486 qpq.qualifier_precedence ,
2487 qpq.qualifier_datatype,
2488 qpq.qualifier_attr_value ,
2489 qpq.qualifier_attr_value_to ,
2490 qpq.start_date_active,
2491 qpq.end_date_active,
2492 G_NO pricing_attr_flag,
2493 qpq.comparison_operator_code ,
2494 qph.list_type_code,
2495 qph.ask_for_flag,
2496 qplatq.pricing_status_code,
2497 'OHQ' ,
2498 NULL line_index,
2499 NULL pricing_effective_date,
2500 qph.start_date_active_first start_date_active_first,
2501 qph.end_date_active_first end_date_active_first,
2502 NULL line_type_code,
2503 p_pricing_phase_id pricing_phase_id,
2504 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
2505 qph.start_date_active start_date_active_h,
2506 qph.end_date_active end_date_active_h,
2507 qph.start_date_active_second start_date_active_second,
2508 qph.end_date_active_second end_date_active_second,
2509 qph.active_date_first_type,
2510 qph.active_date_second_type,
2511 qph.limit_exists_flag,
2512 qplatq.derived_qualifier_flag -- Added for TCA
2513 from
2514 qp_npreq_line_attrs_tmp qplatq,
2515 qp_qualifiers qpq ,
2516 qp_list_header_phases qplh,
2517 qp_list_headers_b qph,
2518 qp_price_req_sources_v qprs
2519 where
2520 qpq.list_header_id = qplh.list_header_id
2521 and qplh.list_header_id = qph.list_header_id
2522 -- bug 2799120
2523 --added for moac -- commented references to security profile
2524 --security will be built into qp_list_headers_b
2525 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
2526 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
2527 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
2528 and qplh.pricing_phase_id = p_pricing_phase_id
2529 and qpq.qualifier_context = qplatq.context
2530 and qpq.qualifier_attribute = qplatq.attribute
2531 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
2532 and qpq.qualifier_datatype = G_NUMERIC
2533 and qpq.search_ind = 1
2534 and qpq.list_line_id = -1 -- Header level quals
2535 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
2536 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number
2537 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
2538 OR
2539 qph.currency_code IS NULL) -- optional currency
2540 and ((qph.ask_for_flag = G_YES and
2541 qph.list_header_id in (SELECT list_header_id
2542 FROM qp_npreq_line_attrs_tmp
2543 WHERE attribute_type = 'QUALIFIER'
2544 AND pricing_status_code = G_STATUS_UNCHANGED
2545 AND validated_flag = G_NO
2546 AND list_header_id IS NOT NULL))
2547 OR qph.ask_for_flag = G_NO)
2548 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
2549 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
2550 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
2551 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
2552 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
2553 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
2554 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
2555 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
2556 and qph.list_type_code not in ('PRL','AGR')
2557 and qpq.list_type_code not in ('PRL','AGR')
2558 and qph.active_flag = G_YES
2559 and qpq.active_flag = G_YES
2560 and qplatq.distinct_qualifier_flag = G_YES
2561 and qpq.list_header_id = qph.list_header_id
2562 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
2563 and qplatq.attribute_type = G_QUALIFIER_TYPE
2564 and qprs.request_type_code = G_REQUEST_TYPE_CODE
2565 and qph.source_system_code = qprs.source_system_code
2566 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
2567 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
2568 union all
2569 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 */
2570 qpq.list_header_id,
2571 qpq.list_line_id list_line_id,
2572 qpq.qualifier_group_cnt,
2573 qpq.others_group_cnt,
2574 qpq.header_quals_exist_flag,
2575 qpq.search_ind,
2576 G_NO validated_flag,
2577 G_NO applied_flag,
2578 G_LINE_LEVEL attribute_level,
2579 G_QUALIFIER_TYPE attribute_type,
2580 qplatq.context ,
2581 qplatq.attribute ,
2582 qplatq.value_from ,
2583 qpq.qualifier_grouping_no qualifier_grouping_no ,
2584 qpq.qualifier_precedence ,
2585 qpq.qualifier_datatype,
2586 qpq.qualifier_attr_value ,
2587 qpq.qualifier_attr_value_to ,
2588 qpq.start_date_active,
2589 qpq.end_date_active,
2590 G_NO pricing_attr_flag,
2591 qpq.comparison_operator_code ,
2592 qph.list_type_code,
2593 qph.ask_for_flag,
2594 qplatq.pricing_status_code,
2595 'OHQ' ,
2596 NULL line_index,
2597 NULL pricing_effective_date,
2598 qph.start_date_active_first start_date_active_first,
2599 qph.end_date_active_first end_date_active_first,
2600 NULL line_type_code,
2601 p_pricing_phase_id pricing_phase_id,
2602 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
2603 qph.start_date_active start_date_active_h,
2604 qph.end_date_active end_date_active_h,
2605 qph.start_date_active_second start_date_active_second,
2606 qph.end_date_active_second end_date_active_second,
2607 qph.active_date_first_type,
2608 qph.active_date_second_type,
2609 qph.limit_exists_flag,
2610 qplatq.derived_qualifier_flag -- Added for TCA
2611
2612 from
2613 qp_npreq_line_attrs_tmp qplatq,
2614 qp_qualifiers qpq ,
2615 qp_list_header_phases qplh,
2616 qp_list_headers_b qph,
2617 qp_price_req_sources_v qprs
2618 where
2619 qpq.list_header_id = qplh.list_header_id
2620 and qplh.list_header_id = qph.list_header_id
2621 -- bug 2799120
2622 --added for moac -- commented references to security profile
2623 --security will be built into qp_list_headers_b
2624 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
2625 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
2626 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
2627 and qplh.pricing_phase_id = p_pricing_phase_id
2628 and qpq.qualifier_context = qplatq.context
2629 and qpq.qualifier_attribute = qplatq.attribute
2630 and qpq.comparison_operator_code = G_OPERATOR_BETWEEN
2631 and qpq.search_ind = 1
2632 and qpq.list_line_id = -1 -- Header level quals
2633 and qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y)
2634 --and decode(qpq.qualifier_datatype,G_VARCHAR,qplatq.value_from,G_DATE_X,qplatq.value_from,
2635 -- G_DATE_Y,qplatq.value_from,null)
2636 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to
2637 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
2638 OR
2639 qph.currency_code IS NULL) -- optional currency
2640 and ((qph.ask_for_flag = G_YES and
2641 qph.list_header_id in (SELECT list_header_id
2642 FROM qp_npreq_line_attrs_tmp
2643 WHERE attribute_type = 'QUALIFIER'
2644 AND pricing_status_code = G_STATUS_UNCHANGED
2645 AND validated_flag = G_NO
2646 AND list_header_id IS NOT NULL))
2647 OR qph.ask_for_flag = G_NO)
2648 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
2649 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
2650 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
2651 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
2652 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
2653 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
2654 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
2655 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
2656 and qph.list_type_code not in ('PRL','AGR')
2657 and qpq.list_type_code not in ('PRL','AGR')
2658 and qph.active_flag = G_YES
2659 and qpq.active_flag = G_YES
2660 and qplatq.distinct_qualifier_flag = G_YES
2661 and qpq.list_header_id = qph.list_header_id
2662 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
2663 and qplatq.attribute_type = G_QUALIFIER_TYPE
2664 and qprs.request_type_code = G_REQUEST_TYPE_CODE
2665 and qph.source_system_code = qprs.source_system_code
2666 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
2667 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
2668 union all
2669 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 */
2670 qpq.list_header_id,
2671 qpq.list_line_id list_line_id,
2672 qpq.qualifier_group_cnt,
2673 qpq.others_group_cnt,
2674 qpq.header_quals_exist_flag,
2675 qpq.search_ind,
2676 G_NO validated_flag,
2677 G_NO applied_flag,
2678 G_LINE_LEVEL attribute_level,
2679 G_QUALIFIER_TYPE attribute_type,
2680 qplatq.context ,
2681 qplatq.attribute ,
2682 qplatq.value_from ,
2683 qpq.qualifier_grouping_no qualifier_grouping_no ,
2684 qpq.qualifier_precedence ,
2685 qpq.qualifier_datatype,
2686 qpq.qualifier_attr_value ,
2687 qpq.qualifier_attr_value_to ,
2688 qpq.start_date_active,
2689 qpq.end_date_active,
2690 G_NO pricing_attr_flag,
2691 qpq.comparison_operator_code ,
2692 qph.list_type_code,
2693 qph.ask_for_flag,
2694 qplatq.pricing_status_code,
2695 'OHQ' ,
2696 NULL line_index,
2697 NULL pricing_effective_date,
2698 qph.start_date_active_first start_date_active_first,
2699 qph.end_date_active_first end_date_active_first,
2700 NULL line_type_code,
2701 p_pricing_phase_id pricing_phase_id,
2702 qpq.LIST_HEADER_ID || '-' || qpq.LIST_LINE_ID || '-' || qpq.QUALIFIER_GROUPING_NO UNIQUE_KEY,
2703 qph.start_date_active start_date_active_h,
2704 qph.end_date_active end_date_active_h,
2705 qph.start_date_active_second start_date_active_second,
2706 qph.end_date_active_second end_date_active_second,
2707 qph.active_date_first_type,
2708 qph.active_date_second_type,
2709 qph.limit_exists_flag,
2710 qplatq.derived_qualifier_flag -- Added for TCA
2711
2712 from
2713 qp_npreq_line_attrs_tmp qplatq,
2714 qp_qualifiers qpq ,
2715 qp_list_header_phases qplh,
2716 qp_list_headers_b qph,
2717 qp_price_req_sources_v qprs
2718 where
2719 qpq.list_header_id = qplh.list_header_id
2720 and qplh.list_header_id = qph.list_header_id
2721 -- bug 2799120
2722 --added for moac -- commented references to security profile
2723 --security will be built into qp_list_headers_b
2724 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
2725 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
2726 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
2727 and qplh.pricing_phase_id = p_pricing_phase_id
2728 and qpq.qualifier_context = qplatq.context
2729 and qpq.qualifier_attribute = qplatq.attribute
2730 and qpq.comparison_operator_code = 'NOT ='
2731 and qpq.qualifier_attr_value <> qplatq.value_from
2732 and qpq.search_ind = 1
2733 and qpq.list_line_id = -1 -- Header Level Quals
2734 and ((qph.currency_code IS NOT NULL AND qph.currency_code = G_CURRENCY_CODE)
2735 OR
2736 qph.currency_code IS NULL) -- optional currency
2737 and ((qph.ask_for_flag = G_YES and
2738 qph.list_header_id in (SELECT list_header_id
2739 FROM qp_npreq_line_attrs_tmp
2740 WHERE attribute_type = 'QUALIFIER'
2741 AND pricing_status_code = G_STATUS_UNCHANGED
2742 AND validated_flag = G_NO
2743 AND list_header_id IS NOT NULL))
2744 OR qph.ask_for_flag = G_NO)
2745 and ((G_MIN_PRICING_DATE between nvl(qph.start_date_active , G_MIN_PRICING_DATE)
2746 and nvl(qph.end_date_active,G_MIN_PRICING_DATE)
2747 or G_MAX_PRICING_DATE between nvl(qph.start_date_active , G_MAX_PRICING_DATE)
2748 and nvl(qph.end_date_active,G_MAX_PRICING_DATE)))
2749 and ((G_MIN_PRICING_DATE between nvl(qpq.start_date_active , G_MIN_PRICING_DATE)
2750 and nvl(qpq.end_date_active,G_MIN_PRICING_DATE)
2751 or G_MAX_PRICING_DATE between nvl(qpq.start_date_active , G_MAX_PRICING_DATE)
2752 and nvl(qpq.end_date_active,G_MAX_PRICING_DATE)))
2753 and qph.list_type_code not in ('PRL','AGR')
2754 and qpq.list_type_code not in ('PRL','AGR')
2755 and qph.active_flag = G_YES
2756 and qpq.active_flag = G_YES
2757 and qplatq.distinct_qualifier_flag = G_YES
2758 and qpq.list_header_id = qph.list_header_id
2759 and qplatq.pricing_status_code = G_STATUS_UNCHANGED
2760 and qplatq.attribute_type = G_QUALIFIER_TYPE
2761 and qprs.request_type_code = G_REQUEST_TYPE_CODE
2762 and qph.source_system_code = qprs.source_system_code
2763 and ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') = 'N')
2764 OR (qplatq.DERIVED_QUALIFIER_FLAG = 'Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')); -- Added for TCA
2765
2766
2767 nROWS CONSTANT NUMBER := 1000;
2768
2769 l_status_code VARCHAR2(30);
2770 l_status_text VARCHAR2(240);
2771
2772 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.Cache_Header_Qualifiers';
2773
2774 BEGIN
2775
2776 --Delete from QP_PREQ_QUAL_TMP;
2777
2778 G_QUALIFIER_TEMP := 'E';
2779
2780 OPEN l_outer_qual_cur;
2781
2782 LOOP
2783 G_LIST_HEADER_ID_TBL_Q.delete;
2784 G_LIST_LINE_ID_TBL_Q.delete;
2785 G_VALIDATED_FLAG_TBL_Q.delete;
2786 G_APPLIED_FLAG_TBL_Q.delete;
2787 G_ATTRIBUTE_LEVEL_TBL_Q.delete;
2788 G_ATTRIBUTE_TYPE_TBL_Q.delete;
2789 G_CONTEXT_TBL_Q.delete;
2790 G_ATTRIBUTE_TBL_Q.delete;
2791 G_VALUE_FROM_TBL_Q.delete;
2792 G_GROUPING_NO_TBL_Q.delete;
2793 G_QUALIFIER_PRECEDENCE_TBL_Q.delete;
2794 G_DATATYPE_TBL_Q.delete;
2795 G_SETUP_VALUE_FROM_TBL_Q.delete;
2796 G_SETUP_VALUE_TO_TBL_Q.delete;
2797 G_PRICING_ATTR_FLAG_TBL_Q.delete;
2798 G_OPERATOR_TYPE_TBL_Q.delete;
2799 G_QUALIFIER_TYPE_TBL_Q.delete;
2800 G_LIST_TYPE_CODE_TBL_Q.delete;
2801 G_ASK_FOR_FLAG_TBL_Q.delete;
2802 G_QUALIFIER_GROUP_CNT_TBL_Q.delete;
2803 G_OTHERS_GROUP_CNT_TBL_Q.delete;
2804 G_HEADER_QUALS_EXIST_FLG_TBL_Q.delete;
2805 G_SEARCH_IND_TBL_Q.delete;
2806 G_PRICING_STATUS_CODE_TBL_Q.delete;
2807 G_START_DATE_ACTIVE_TBL_Q.delete;
2808 G_END_DATE_ACTIVE_TBL_Q.delete;
2809 G_LINE_INDEX_TBL_Q.delete;
2810 G_PRICING_EFFECTIVE_DATE_TBL_Q.delete;
2811 G_START_DATE_ACTIVE_FIR_TBL_Q.delete;
2812 G_END_DATE_ACTIVE_FIR_TBL_Q.delete;
2813 G_LINE_TYPE_CODE_TBL_Q.delete;
2814 G_PRICING_PHASE_ID_TBL_Q.delete;
2815 G_UNIQUE_KEY_TBL_Q.delete;
2816 G_START_DATE_ACTIVE_TBL_H_Q.delete;
2817 G_END_DATE_ACTIVE_TBL_H_Q.delete;
2818 G_START_DATE_ACTIVE_SEC_TBL_Q.delete;
2819 G_END_DATE_ACTIVE_SEC_TBL_Q.delete;
2820 G_ACTIVE_DATE_FIR_TYPE_TBL_Q.delete;
2821 G_ACTIVE_DATE_SEC_TYPE_TBL_Q.delete;
2822 G_HEADER_LIMIT_EXISTS_TBL_Q.delete;
2823 G_DERIVED_QUALIFIER_FLAG_TBL_Q.delete; -- Added for TCA
2824
2825 FETCH l_outer_qual_cur
2826 BULK COLLECT INTO
2827 G_LIST_HEADER_ID_TBL_Q
2828 , G_LIST_LINE_ID_TBL_Q
2829 , G_QUALIFIER_GROUP_CNT_TBL_Q
2830 , G_OTHERS_GROUP_CNT_TBL_Q
2831 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
2832 , G_SEARCH_IND_TBL_Q
2833 , G_VALIDATED_FLAG_TBL_Q
2834 , G_APPLIED_FLAG_TBL_Q
2835 , G_ATTRIBUTE_LEVEL_TBL_Q
2836 , G_ATTRIBUTE_TYPE_TBL_Q
2837 , G_CONTEXT_TBL_Q
2838 , G_ATTRIBUTE_TBL_Q
2839 , G_VALUE_FROM_TBL_Q
2840 , G_GROUPING_NO_TBL_Q
2841 , G_QUALIFIER_PRECEDENCE_TBL_Q
2842 , G_DATATYPE_TBL_Q
2843 , G_SETUP_VALUE_FROM_TBL_Q
2844 , G_SETUP_VALUE_TO_TBL_Q
2845 , G_START_DATE_ACTIVE_TBL_Q
2846 , G_END_DATE_ACTIVE_TBL_Q
2847 , G_PRICING_ATTR_FLAG_TBL_Q
2848 , G_OPERATOR_TYPE_TBL_Q
2849 , G_LIST_TYPE_CODE_TBL_Q
2850 , G_ASK_FOR_FLAG_TBL_Q
2851 , G_PRICING_STATUS_CODE_TBL_Q
2852 , G_QUALIFIER_TYPE_TBL_Q
2853 , G_LINE_INDEX_TBL_Q
2854 , G_PRICING_EFFECTIVE_DATE_TBL_Q
2855 , G_START_DATE_ACTIVE_FIR_TBL_Q
2856 , G_END_DATE_ACTIVE_FIR_TBL_Q
2857 , G_LINE_TYPE_CODE_TBL_Q
2858 , G_PRICING_PHASE_ID_TBL_Q
2859 , G_UNIQUE_KEY_TBL_Q
2860 , G_START_DATE_ACTIVE_TBL_H_Q
2861 , G_END_DATE_ACTIVE_TBL_H_Q
2862 , G_START_DATE_ACTIVE_SEC_TBL_Q
2863 , G_END_DATE_ACTIVE_SEC_TBL_Q
2864 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
2865 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
2866 , G_HEADER_LIMIT_EXISTS_TBL_Q
2867 , G_DERIVED_QUALIFIER_FLAG_TBL_Q LIMIT nROWS; -- Added for TCA
2868 EXIT WHEN G_LIST_HEADER_ID_TBL_Q.COUNT = 0;
2869
2870 IF (G_LIST_HEADER_ID_TBL_Q.COUNT > 0) THEN
2871
2872 G_QUALIFIER_TEMP := 'U';
2873
2874 INSERT_QUAL(
2875 G_LIST_HEADER_ID_TBL_Q
2876 , G_LIST_LINE_ID_TBL_Q
2877 , G_VALIDATED_FLAG_TBL_Q
2878 , G_APPLIED_FLAG_TBL_Q
2879 , G_ATTRIBUTE_LEVEL_TBL_Q
2880 , G_ATTRIBUTE_TYPE_TBL_Q
2881 , G_CONTEXT_TBL_Q
2882 , G_ATTRIBUTE_TBL_Q
2883 , G_VALUE_FROM_TBL_Q
2884 , G_GROUPING_NO_TBL_Q
2885 , G_QUALIFIER_PRECEDENCE_TBL_Q
2886 , G_DATATYPE_TBL_Q
2887 , G_SETUP_VALUE_FROM_TBL_Q
2888 , G_SETUP_VALUE_TO_TBL_Q
2889 , G_PRICING_ATTR_FLAG_TBL_Q
2890 , G_OPERATOR_TYPE_TBL_Q
2891 , G_LIST_TYPE_CODE_TBL_Q
2892 , G_ASK_FOR_FLAG_TBL_Q
2893 , G_QUALIFIER_TYPE_TBL_Q
2894 , G_QUALIFIER_GROUP_CNT_TBL_Q
2895 , G_OTHERS_GROUP_CNT_TBL_Q
2896 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
2897 , G_SEARCH_IND_TBL_Q
2898 , G_PRICING_STATUS_CODE_TBL_Q
2899 , G_START_DATE_ACTIVE_TBL_Q
2900 , G_END_DATE_ACTIVE_TBL_Q
2901 , G_LINE_INDEX_TBL_Q
2902 , G_PRICING_EFFECTIVE_DATE_TBL_Q
2903 , G_START_DATE_ACTIVE_FIR_TBL_Q
2904 , G_END_DATE_ACTIVE_FIR_TBL_Q
2905 , G_LINE_TYPE_CODE_TBL_Q
2906 , G_PRICING_PHASE_ID_TBL_Q
2907 , G_UNIQUE_KEY_TBL_Q
2908 , G_START_DATE_ACTIVE_TBL_H_Q
2909 , G_END_DATE_ACTIVE_TBL_H_Q
2910 , G_START_DATE_ACTIVE_SEC_TBL_Q
2911 , G_END_DATE_ACTIVE_SEC_TBL_Q
2912 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
2913 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
2914 , G_HEADER_LIMIT_EXISTS_TBL_Q
2915 , G_DERIVED_QUALIFIER_FLAG_TBL_Q -- Added for TCA
2916 , l_status_code
2917 , l_status_text);
2918 END IF;
2919
2920 END LOOP;
2921 CLOSE l_outer_qual_cur;
2922 EXCEPTION
2923 WHEN OTHERS THEN
2924 x_status_code := FND_API.G_RET_STS_ERROR;
2925 x_status_text :=l_routine||' '||SQLERRM;
2926 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
2927 engine_debug(l_routine||' '||SQLERRM);
2928
2929 END IF;
2930 END Cache_Header_Qualifiers;
2931
2932 /*+--------------------------------------------------------------------
2933 |Reset_All_Tbls
2934 |To Reset all pl/sql tables.
2935 +--------------------------------------------------------------------
2936 */
2937 PROCEDURE Reset_All_Tbls(x_status_code OUT NOCOPY VARCHAR2,
2938 x_status_text OUT NOCOPY VARCHAR2)
2939 AS
2940 l_routine VARCHAR2(240):='QP_PREQ_GRP.Reset_All_Tbls';
2941 BEGIN
2942 G_LINE_INDEX_tbl.delete;
2943 G_USAGE_PRICING_TYPE_TBL.delete;
2944 G_LINE_CATEGORY_TBL.delete;
2945 G_LINE_CATEGORY_DEF_TBL.delete;
2946 G_CONTRACT_START_DATE_TBL.delete; /* shulin */
2947 G_CONTRACT_END_DATE_TBL.delete; /* shulin */
2948 G_LINE_UNIT_PRICE_TBL.delete; /* shu_latest */
2949 G_CONTRACT_START_DATE_DEF_TBL.delete; /* shulin */
2950 G_CONTRACT_END_DATE_DEF_TBL.delete; /* shulin */
2951 G_LINE_UNIT_PRICE_DEF_TBL.delete; /* shu_latest */
2952 G_CHARGE_PERIODICITY_CODE_TBL.delete;
2953 G_CURRENCY_HEADER_ID_DEF_TBL.delete; /* vivek */
2954 G_SELLING_ROUNDING_DEF_TBL.delete; /* vivek */
2955 G_ORDER_CURRENCY_DEF_TBL.delete; /* vivek */
2956 G_PRICING_EFF_DATE_DEF_TBL.delete; /* vivek */
2957 G_BASE_CURRENCY_DEF_TBL.delete; /* vivek */
2958 G_CURRENCY_DETAIL_ID_DEF_TBL.delete; /* sunilpandey */
2959
2960 G_LINE_DETAIL_INDEX_tbl.delete;
2961 G_ATTRIBUTE_LEVEL_tbl.delete;
2962 G_ATTRIBUTE_TYPE_tbl.delete;
2963 G_LIST_HEADER_ID_tbl.delete;
2964 G_LIST_LINE_ID_tbl.delete;
2965 G_CONTEXT_tbl.delete;
2966 G_ATTRIBUTE_tbl.delete;
2967 G_VALUE_FROM_tbl.delete;
2968 G_SETUP_VALUE_FROM_tbl.delete;
2969 G_VALUE_TO_tbl.delete;
2970 G_SETUP_VALUE_TO_tbl.delete;
2971 G_GROUPING_NUMBER_tbl.delete;
2972 G_NO_QUALIFIERS_IN_GRP_tbl.delete;
2973 G_COMPARISON_OPERATOR_TYPE_tbl.delete;
2974 G_VALIDATED_FLAG_tbl.delete;
2975 G_APPLIED_FLAG_tbl.delete;
2976 G_PRICING_STATUS_CODE_tbl.delete;
2977 G_PRICING_STATUS_TEXT_tbl.delete;
2978 G_QUALIFIER_PRECEDENCE_tbl.delete;
2979 G_DATATYPE_tbl.delete;
2980 G_PRICING_ATTR_FLAG_tbl.delete;
2981 G_QUALIFIER_TYPE_tbl.delete;
2982 G_product_uom_code_tbl.delete;
2983
2984 G_ROUNDING_FLAG_TBL.delete;
2985 G_LINE_TYPE_CODE_TBL.delete ;
2986 G_PRICING_EFFECTIVE_DATE_TBL.delete ;
2987 G_ACTIVE_DATE_FIRST_TBL.delete ;
2988 G_ACTIVE_DATE_FIRST_TYPE_TBL.delete ;
2989 G_ACTIVE_DATE_SECOND_TBL.delete ;
2990 G_ACTIVE_DATE_SECOND_TYPE_TBL.delete ;
2991 G_LINE_QUANTITY_TBL.delete ;
2992 G_LINE_UOM_CODE_TBL.delete ;
2993 G_REQUEST_TYPE_CODE_TBL.delete ;
2994 G_PRICED_QUANTITY_TBL.delete ;
2995 G_UOM_QUANTITY_TBL.delete ;
2996 G_PRICED_UOM_CODE_TBL.delete ;
2997 G_CURRENCY_CODE_TBL.delete ;
2998 G_UNIT_PRICE_TBL.delete ;
2999 G_PERCENT_PRICE_TBL.delete ;
3000 G_ADJUSTED_UNIT_PRICE_TBL.delete ;
3001 G_UPD_ADJUSTED_UNIT_PRICE_TBL.delete;
3002 G_PROCESSED_FLAG_TBL.delete ;
3003 G_PRICE_FLAG_TBL.delete ;
3004 G_LINE_ID_TBL.delete ;
3005 G_PROCESSING_ORDER_TBL.delete ;
3006 G_EXCLUDER_FLAG_TBL.delete ;
3007 G_PRICE_REQUEST_CODE_TBL.delete;
3008 G_HEADER_LIMIT_EXISTS_TBL.delete;
3009 G_LINE_LIMIT_EXISTS_TBL.delete;
3010 G_CHARGE_TYPE_CODE_TBL.delete;
3011 G_CHARGE_SUBTYPE_CODE_TBL.delete;
3012 G_CURRENCY_HEADER_ID_TBL.delete; /* vivek */
3013 G_SELLING_ROUNDING_TBL.delete; /* vivek */
3014 G_ORDER_CURRENCY_TBL.delete; /* vivek */
3015 G_BASE_CURRENCY_CODE_TBL.delete; /* vivek */
3016 G_CURRENCY_DETAIL_ID_TBL.delete; /* sunilpandey */
3017 G_ACCUM_CONTEXT_TBL.delete; -- accum range break
3018 G_ACCUM_ATTRIBUTE_TBL.delete; -- accum range break
3019 G_ACCUM_FLAG_TBL.delete; -- accum range break
3020 G_UPDATED_FLAG_TBL.delete; -- 3215497
3021 G_CALCULATION_CODE_TBL.delete; -- 3215497
3022 G_CHANGE_REASON_CODE_TBL.delete; -- 3215497
3023 G_CHANGE_REASON_TEXT_TBL.delete; -- 3215497
3024 G_PROCESS_CODE_TBL.delete; -- 3215497
3025 G_LINE_DETAIL_TYPE_CODE_TBL.delete ;
3026 G_PRICE_BREAK_TYPE_CODE_TBL.delete ;
3027 G_LIST_PRICE_TBL.delete ;
3028 G_LIST_LINE_TYPE_TBL.delete ;
3029 G_LIST_TYPE_CODE_TBL.delete ;
3030 G_CREATED_FROM_SQL_TBL.delete ;
3031 G_PRICING_GROUP_SEQUENCE_TBL.delete ;
3032 G_PRICING_PHASE_ID_TBL.delete ;
3033 G_OPERAND_CALCULATION_CODE_TBL.delete ;
3034 G_OPERAND_VALUE_TBL.delete ;
3035 G_SUBSTITUTION_TYPE_CODE_TBL.delete ;
3036 G_SUBSTITUTION_VALUE_FROM_TBL.delete ;
3037 G_SUBSTITUTION_VALUE_TO_TBL.delete ;
3038 G_ASK_FOR_FLAG_TBL.delete ;
3039 G_PRICE_FORMULA_ID_TBL.delete ;
3040 G_PRODUCT_PRECEDENCE_TBL.delete ;
3041 G_INCOMP_GRP_CODE_TBL.delete ;
3042 G_AUTOMATIC_FLAG_TBL.delete ;
3043 G_OVERRIDE_FLAG_TBL.delete ;
3044 G_PRIMARY_UOM_FLAG_TBL.delete ;
3045 G_PRINT_ON_INVOICE_FLAG_TBL.delete ;
3046 G_MODIFIER_LEVEL_CODE_TBL.delete ;
3047 G_BENEFIT_QTY_TBL.delete ;
3048 G_BENEFIT_UOM_CODE_TBL.delete ;
3049 G_LIST_LINE_NO_TBL.delete ;
3050 G_ACCRUAL_FLAG_TBL.delete ;
3051 G_ACCRUAL_CONVERSION_RATE_TBL.delete ;
3052 G_ESTIM_ACCRUAL_RATE_TBL.delete ;
3053 G_RECURRING_FLAG_TBL.delete ;
3054 G_QUALIFIERS_EXIST_FLAG_TBL.delete;
3055 G_PRICING_ATTRS_EXIST_FLAG_TBL.delete;
3056 G_SELECTED_VOLUME_ATTR_TBL.delete ;
3057 G_ROUNDING_FACTOR_TBL.delete ;
3058 G_LINE_INDEX_LD_TBL.delete ;
3059 G_LINE_DETAIL_INDEX_LD_TBL.delete ;
3060 G_LIST_HEADER_ID_LD_TBL.delete ;
3061 G_LIST_LINE_ID_LD_TBL.delete ;
3062 G_PRICING_STATUS_CODE_LD_TBL.delete ;
3063 G_PRICING_STATUS_TEXT_LD_TBL.delete ;
3064 G_APPLIED_FLAG_LD_TBL.delete;
3065 G_PROCESSED_FLAG_LD_TBL.delete;
3066 G_LINE_INDEX_l_TBL.delete;
3067 G_LINE_DETAIL_INDEX_l_TBL.delete;
3068 G_PRICING_STATUS_CODE_L_TBL.delete;
3069 G_PRICING_STATUS_TEXT_L_TBL.delete;
3070
3071 G_LIST_HEADER_ID_TBL_Q.delete;
3072 G_LIST_LINE_ID_TBL_Q.delete;
3073 G_LINE_INDEX_TBL_Q.delete;
3074 G_VALIDATED_FLAG_TBL_Q.delete;
3075 G_APPLIED_FLAG_TBL_Q.delete;
3076 G_START_DATE_ACTIVE_TBL_Q.delete;
3077 G_END_DATE_ACTIVE_TBL_Q.delete;
3078 G_PRICING_EFFECTIVE_DATE_TBL_Q.delete;
3079 G_LINE_TYPE_CODE_TBL_Q.delete;
3080 G_ATTRIBUTE_LEVEL_TBL_Q.delete;
3081 G_ATTRIBUTE_TYPE_TBL_Q.delete;
3082 G_CONTEXT_TBL_Q.delete;
3083 G_ATTRIBUTE_TBL_Q.delete;
3084 G_VALUE_FROM_TBL_Q.delete;
3085 G_GROUPING_NO_TBL_Q.delete;
3086 G_QUALIFIER_PRECEDENCE_TBL_Q.delete;
3087 G_DATATYPE_TBL_Q.delete;
3088 G_SETUP_VALUE_FROM_TBL_Q.delete;
3089 G_SETUP_VALUE_TO_TBL_Q.delete;
3090 G_PRICING_ATTR_FLAG_TBL_Q.delete;
3091 G_OPERATOR_TYPE_TBL_Q.delete;
3092 G_CURRENCY_CODE_TBL_Q.delete;
3093 G_ASK_FOR_FLAG_TBL_Q.delete;
3094 G_LIST_TYPE_CODE_TBL_Q.delete;
3095 G_QUALIFIER_TYPE_TBL_Q.delete;
3096 G_QUALIFIER_GROUP_CNT_TBL_Q.delete;
3097 G_OTHERS_GROUP_CNT_TBL_Q.delete;
3098 G_HEADER_QUALS_EXIST_FLG_TBL_Q.delete;
3099 G_SEARCH_IND_TBL_Q.delete;
3100 G_HEADER_LIMIT_EXISTS_TBL_Q.delete;
3101 G_LIST_LINE_NO_TBL_Q.delete;
3102
3103 G_LINE_INDEX_TBL_P.delete;
3104 G_LINE_DETAIL_INDEX_TBL_P.delete;
3105 G_LIST_HEADER_ID_TBL_P.delete;
3106 G_LIST_LINE_ID_TBL_P.delete;
3107 G_PRICE_BREAK_TYPE_CODE_TBL_P.delete;
3108 G_LIST_PRICE_TBL_P.delete;
3109 G_LIST_LINE_TYPE_TBL_P.delete;
3110 G_LIST_TYPE_CODE_TBL_P.delete;
3111 G_PRICING_GROUP_SEQUENCE_TBL_P.delete;
3112 G_PRICING_PHASE_ID_TBL_P.delete;
3113 G_OPER_CALCULATION_CODE_TBL_P.delete;
3114 G_OPERAND_VALUE_TBL_P.delete;
3115 G_ASK_FOR_FLAG_TBL_P.delete;
3116 G_PRICE_FORMULA_ID_TBL_P.delete;
3117 G_PRODUCT_PRECEDENCE_TBL_P.delete;
3118 G_INCOMP_GRP_CODE_TBL_P.delete;
3119 G_AUTOMATIC_FLAG_TBL_P.delete;
3120 G_OVERRIDE_FLAG_TBL_P.delete;
3121 G_PRIMARY_UOM_FLAG_TBL_P.delete;
3122 G_PRINT_ON_INVOICE_FLAG_TBL_P.delete;
3123 G_MODIFIER_LEVEL_CODE_TBL_P.delete;
3124 G_BENEFIT_QTY_TBL_P.delete;
3125 G_BENEFIT_UOM_CODE_TBL_P.delete;
3126 G_LIST_LINE_NO_TBL_P.delete;
3127 G_ACCRUAL_FLAG_TBL_P.delete;
3128 G_ACCR_CONVERSION_RATE_TBL_P.delete;
3129 G_ESTIM_ACCRUAL_RATE_TBL_P.delete;
3130 G_ATTRIBUTE_LEVEL_TBL_P.delete;
3131 G_ATTRIBUTE_TYPE_TBL_P.delete;
3132 G_CONTEXT_TBL_P.delete;
3133 G_ATTRIBUTE_TBL_P.delete;
3134 G_VALUE_FROM_TBL_P.delete;
3135 G_SETUP_VALUE_FROM_TBL_P.delete;
3136 G_VALIDATED_FLAG_TBL_P.delete;
3137 G_APPLIED_FLAG_TBL_P.delete;
3138 G_PRICING_ATTR_FLAG_TBL_P.delete;
3139 G_GROUPING_NUMBER_TBL_P.delete;
3140 G_QUALIFIER_PRECEDENCE_TBL_P.delete;
3141 G_EXCLUDER_FLAG_TBL_P.delete;
3142 G_PRODUCT_UOM_CODE_TBL_P.delete;
3143 G_QUALIFIER_TYPE_TBL_P.delete;
3144 G_ROUNDING_FACTOR_TBL_P.delete;
3145 G_HEADER_LIMIT_EXISTS_TBL_P.delete;
3146 G_LINE_LIMIT_EXISTS_TBL_P.delete;
3147 G_CHARGE_TYPE_CODE_TBL_P.delete;
3148 G_CHARGE_SUBTYPE_CODE_TBL_P.delete;
3149 G_CURRENCY_HEADER_ID_TBL_P.delete; /* vivek */
3150 G_SELLING_ROUNDING_TBL_P.delete; /* vivek */
3151 G_ORDER_CURRENCY_TBL_P.delete; /* vivek */
3152 G_PRICING_EFFECTIVE_DATE_TBL_P.delete; /* vivek */
3153 G_BASE_CURRENCY_CODE_TBL_P.delete; /* vivek */
3154 G_CURRENCY_DETAIL_ID_TBL_P.delete; /* sunilpandey */
3155 G_ACCUM_CONTEXT_TBL_P.delete; -- accum range break
3156 G_ACCUM_ATTRIBUTE_TBL_P.delete; -- accum range break
3157 G_ACCUM_FLAG_TBL_P.delete; -- accum range break
3158
3159 G_ATTRIBUTE_LEVEL_TBL_PR.delete;
3160 G_ATTRIBUTE_TYPE_TBL_PR.delete;
3161 G_CONTEXT_TBL_PR.delete;
3162 G_ATTRIBUTE_TBL_PR.delete;
3163 G_VALUE_FROM_TBL_PR.delete;
3164 G_OPERATOR_TYPE_TBL_PR.delete;
3165 G_SETUP_VALUE_FROM_TBL_PR.delete;
3166 G_SETUP_VALUE_TO_TBL_PR.delete;
3167 G_DATATYPE_TBL_PR.delete;
3168
3169 G_LINE_INDEX_TBL_B.delete;
3170 G_LIST_HEADER_ID_TBL_B.delete;
3171 G_LIST_LINE_ID_TBL_B.delete;
3172 G_PRICE_BREAK_TYPE_CODE_TBL_B.delete;
3173 G_LIST_PRICE_TBL_B.delete;
3174 G_LIST_LINE_TYPE_TBL_B.delete;
3175 G_LIST_TYPE_CODE_TBL_B.delete;
3176 G_PRICING_GROUP_SEQUENCE_TBL_B.delete;
3177 G_PRICING_PHASE_ID_TBL_B.delete;
3178 G_OPER_CALCULATION_CODE_TBL_B.delete;
3179 G_OPERAND_VALUE_TBL_B.delete;
3180 G_ASK_FOR_FLAG_TBL_B.delete;
3181 G_PRICE_FORMULA_ID_TBL_B.delete;
3182 G_PRODUCT_PRECEDENCE_TBL_B.delete;
3183 G_INCOMP_GRP_CODE_TBL_B.delete;
3184 G_AUTOMATIC_FLAG_TBL_B.delete;
3185 G_OVERRIDE_FLAG_TBL_B.delete;
3186 G_PRIMARY_UOM_FLAG_TBL_B.delete;
3187 G_PRINT_ON_INVOICE_FLAG_TBL_B.delete;
3188 G_MODIFIER_LEVEL_CODE_TBL_B.delete;
3189 G_BENEFIT_QTY_TBL_B.delete;
3190 G_BENEFIT_UOM_CODE_TBL_B.delete;
3191 G_LIST_LINE_NO_TBL_B.delete;
3192 G_ACCRUAL_FLAG_TBL_B.delete;
3193 G_ACCR_CONVERSION_RATE_TBL_B.delete;
3194 G_ESTIM_ACCRUAL_RATE_TBL_B.delete;
3195 G_LINE_INDEX_TBL_G.delete;
3196 G_LIST_HEADER_ID_TBL_G.delete;
3197 G_LIST_LINE_ID_TBL_G.delete;
3198 G_NO_OF_PATTS_IN_GRP_TBL_G.delete;
3199
3200 G_PRICING_PHASE_ID_TBL_A.delete;
3201 G_INCOMP_GRP_CODE_TBL_A.delete;
3202 G_LINE_DETAIL_TYPE_CODE_TBL_A.delete;
3203 G_MODIFIER_LEVEL_CODE_TBL_A.delete;
3204 G_PRIMARY_UOM_FLAG_TBL_A.delete;
3205
3206 EXCEPTION
3207 WHEN OTHERS THEN
3208 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3209 engine_debug(l_routine||': '||SQLERRM);
3210 END IF;
3211 x_status_code := FND_API.G_RET_STS_ERROR;
3212 x_status_text := l_routine || ': ' || SQLERRM;
3213 END Reset_All_Tbls;
3214
3215 /*+---------------------------------------------------------------------
3216 |Update Processing_Order
3217 |For service lines, two request lines might be related to each other and one
3218 |might be the parent and the other might be child.
3219 |This relationship are passed by the calling application
3220 |thru rltd_tbl structure. From this structure, we can find
3221 |the which is the parent and child. Parent lines
3222 |need to be process before the child lines. This information
3223 |is store in processing_order column in temp by this procedure
3224 +---------------------------------------------------------------------
3225 */
3226 PROCEDURE Update_Processing_Order (x_status_code OUT NOCOPY VARCHAR2,
3227 x_status_text OUT NOCOPY VARCHAR2)
3228 AS
3229
3230 /*
3231 INDX,QP_PREQ_GRP.Update_Processing_Order.l_Service_Cur,-No Index Used-,NA,NA
3232 */
3233 CURSOR l_Service_Cur IS
3234 SELECT LINE_INDEX,
3235 RELATED_LINE_INDEX
3236 FROM qp_npreq_rltd_lines_tmp
3237 WHERE LINE_INDEX IS NOT NULL
3238 AND RELATED_LINE_INDEX IS NOT NULL
3239 AND RELATIONSHIP_TYPE_CODE = G_SERVICE_LINE;
3240
3241 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.Update_Processing_Order';
3242 l_line_index_tbl NUMBER_TYPE;
3243 l_related_line_index_tbl NUMBER_TYPE;
3244
3245 BEGIN
3246 x_status_code := FND_API.G_RET_STS_SUCCESS;
3247 /*
3248 INDX,QP_PREQ_GRP.Update_Processing_Order.Update_Processing_Order_upd1,qp_npreq_lines_tmp_U1,LINE_INDEX,1
3249 */
3250
3251 -- julin [3805113]: using bulk collect and update
3252 OPEN l_Service_Cur;
3253 LOOP
3254 FETCH l_Service_Cur BULK COLLECT INTO
3255 l_line_index_tbl,
3256 l_related_line_index_tbl
3257 LIMIT G_BATCH_SIZE;
3258 EXIT WHEN l_line_index_tbl.count = 0;
3259
3260 -- julin [3805113]: bulk update
3261 FORALL I IN l_line_index_tbl.first..l_line_index_tbl.last
3262 UPDATE qp_npreq_lines_tmp --upd1
3263 SET PROCESSING_ORDER = 1
3264 WHERE LINE_INDEX = l_line_index_tbl(I);
3265
3266 --Assuming that parent line has it index on related_line_index column
3267 /*
3268 INDX,QP_PREQ_GRP.Update_Processing_Order.Update_Processing_Order_upd2,qp_npreq_lines_tmp_U1,LINE_INDEX,1
3269 */
3270 -- julin [3805113]: bulk update
3271 FORALL I IN l_related_line_index_tbl.first..l_related_line_index_tbl.last
3272 UPDATE qp_npreq_lines_tmp --upd2
3273 SET PROCESSING_ORDER = 2
3274 WHERE LINE_INDEX = l_related_line_index_tbl(I);
3275
3276 END LOOP;
3277 CLOSE l_Service_Cur;
3278
3279 --added for 4900095
3280 --marking the service lines with uom_quantity as null
3281 --this will be used in lumpsum calculation
3282 for cl in (select line_index from qp_npreq_lines_tmp line
3283 where processing_order = 2
3284 and (contract_start_date is not null or contract_end_date is not null)
3285 and uom_quantity is null)
3286 loop
3287 G_service_line_ind_tbl(cl.line_index) := cl.line_index;
3288 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3289 IF G_service_line_ind_tbl.exists(cl.line_index) THEN
3290 engine_debug('service line with uom_qty as null line_index: '||G_service_line_ind_tbl(cl.line_index));
3291 END IF;--G_service_line_ind_tbl.exists
3292 END IF;--G_DEBUG_ENGINE
3293 end loop;
3294
3295 EXCEPTION
3296 WHEN OTHERS THEN
3297 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3298 engine_debug(l_routine||' '||SQLERRM);
3299 END IF;
3300 x_status_code := FND_API.G_RET_STS_ERROR;
3301 x_status_text := 'Error in '||l_routine||SQLERRM;
3302 END;
3303
3304 /*+----------------------------------------------------------------------
3305 | Function GET_LINE_DETAIL_INDEX
3306 | Output: Unique number
3307 | This function behave like a sequence, to return uniq
3308 +----------------------------------------------------------------------
3309 */
3310 FUNCTION GET_LINE_DETAIL_INDEX RETURN PLS_INTEGER IS
3311 BEGIN
3312 G_LINE_DETAIL_INDEX :=G_LINE_DETAIL_INDEX + 1;
3313 RETURN G_LINE_DETAIL_INDEX;
3314 END;
3315
3316 /*+----------------------------------------------------------------------
3317 |PROCEDURE SET_STATUS_CODE
3318 +----------------------------------------------------------------------
3319 */
3320 PROCEDURE SET_STATUS_CODE (p_status_code IN VARCHAR2,
3321 p_status_text IN VARCHAR2:=NULL,
3322 p_line_index IN NUMBER,
3323 p_line_detail_index IN PLS_INTEGER:=NULL,
3324 p_temp_table IN VARCHAR2,
3325 x_status_code OUT NOCOPY VARCHAR2,
3326 x_status_text OUT NOCOPY VARCHAR2)
3327 AS
3328 l_routine VARCHAR2(240):='QP_PREQ_GRP.SET_STATUS_CODE';
3329 BEGIN
3330 IF(p_temp_table = 'LINES') THEN
3331 /*
3332 INDX,QP_PREQ_GRP.set_status_code.set_status_code_upd1,qp_npreq_lines_tmp_N1,LINE_INDEX,1
3333 */
3334 -- shulin fix bug1745788, widen substr to 2000
3335 UPDATE qp_npreq_lines_tmp --upd1
3336 SET PRICING_STATUS_CODE = p_status_code,
3337 PRICING_STATUS_TEXT = substr(p_status_text,1,2000)
3338 WHERE LINE_INDEX = p_line_index;
3339 ELSIF (p_temp_table = 'LDETS' AND p_line_index IS NOT NULL) THEN
3340 /*
3341 INDX,QP_PREQ_GRP.set_status_code.set_status_code_upd2,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
3342 */
3343 -- shulin fix bug1745788, widen substr to 2000
3344 UPDATE qp_npreq_ldets_tmp --upd2
3345 SET PRICING_STATUS_CODE = p_status_code,
3346 PRICING_STATUS_TEXT =
3347 substr(pricing_status_code||'+'||p_status_code||'+'||p_status_text,1,2000)
3348 WHERE LINE_INDEX = p_line_index
3349 AND PRICING_STATUS_CODE <> G_STATUS_UNCHANGED;
3350 ELSIF (p_temp_table = 'ATTRS' AND p_line_index IS NOT NULL
3351 AND p_line_detail_index IS NULL) THEN
3352 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3353 engine_debug('----Updating status code for LDETS---------');
3354 END IF;
3355 /*
3356 INDX,QP_PREQ_GRP.set_status_code.set_status_code_upd3,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
3357 INDX,QP_PREQ_GRP.set_status_code.set_status_code_upd3,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
3358 */
3359 UPDATE /*+ dynamic_sampling(1) */ qp_npreq_line_attrs_tmp --upd3
3360 SET PRICING_STATUS_CODE = p_status_code,
3361 PRICING_STATUS_TEXT = substr(p_status_text,1,240)
3362 WHERE LINE_INDEX = p_line_index
3363 AND PRICING_STATUS_CODE <> G_STATUS_UNCHANGED;
3364 END IF;
3365 EXCEPTION
3366 WHEN OTHERS THEN
3367 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3368 engine_debug(l_routine||' '||SQLERRM);
3369 END IF;
3370 x_status_code := FND_API.G_RET_STS_ERROR;
3371 x_status_text := l_routine||': '||SQLERRM;
3372
3373 END SET_STATUS_CODE;
3374
3375
3376 /*+----------------------------------------------------------------------
3377 |PROCEDURE SET_PROCESSED_CODE
3378 +----------------------------------------------------------------------
3379 */
3380 PROCEDURE SET_PROCESSED_CODE (p_processed_code IN VARCHAR2,
3381 p_line_index IN NUMBER,
3382 p_line_detail_index IN PLS_INTEGER:=NULL,
3383 p_temp_table IN VARCHAR2,
3384 x_status_code OUT NOCOPY VARCHAR2,
3385 x_status_text OUT NOCOPY VARCHAR2)
3386 AS
3387 l_routine VARCHAR2(240):='QP_PREQ_GRP.SET_PROCESSED_CODE';
3388 BEGIN
3389 IF(p_temp_table = 'LINES') THEN
3390 /*
3391 INDX,QP_PREQ_GRP.set_processed_code.set_processed_code_upd1,qp_npreq_lines_tmp_N1,LINE_INDEX,1
3392 */
3393 UPDATE qp_npreq_lines_tmp --upd1
3394 SET PROCESSED_CODE = p_processed_code
3395 WHERE LINE_INDEX = p_line_index;
3396 ELSIF (p_temp_table = 'ATTRS' AND p_line_index IS NOT NULL
3397 AND p_line_detail_index IS NULL) THEN
3398 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3399 engine_debug('----Updating status code for LDETS---------');
3400 END IF;
3401 /*
3402 INDX,QP_PREQ_GRP.set_processed_code.set_processed_code_upd2,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
3403 */
3404 UPDATE qp_npreq_line_attrs_tmp --upd2
3405 SET PROCESSED_CODE = p_processed_code
3406 WHERE LINE_INDEX = p_line_index;
3407 END IF;
3408 EXCEPTION
3409 WHEN OTHERS THEN
3410 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3411 engine_debug(l_routine||' '||SQLERRM);
3412 END IF;
3413 x_status_code := FND_API.G_RET_STS_ERROR;
3414 x_status_text := l_routine||': '||SQLERRM;
3415
3416 END SET_PROCESSED_CODE;
3417
3418 /*+----------------------------------------------------
3419 |PROCEDURE DELETE_ALL_LINES
3420 |This procedure mark qp_npreq_line_attrs_tmp and qp_npreq_ldets_tmp
3421 |for delete. And mark qp_preq_lines status code as
3422 |whatever calling procedure wanted. Which is usually
3423 |not a 'Delete' because record in qp_npreq_lines_tmp
3424 |is the only one which communicates with outside
3425 |world (order managment for example).
3426 +----------------------------------------------------
3427 */
3428
3429 PROCEDURE DELETE_LINES(p_line_index IN NUMBER,
3430 p_line_status_code IN VARCHAR2,
3431 p_status_text IN VARCHAR2,
3432 x_status_code OUT NOCOPY VARCHAR2,
3433 x_status_text OUT NOCOPY VARCHAR2) AS
3434
3435 l_routine VARCHAR2(240):='QP_PREQ_GRP.DELETE_LINES';
3436
3437 l_error_status_code VARCHAR2(30);
3438 l_error_status_text VARCHAR2(240);
3439
3440 E_ROUTINE_ERRORS EXCEPTION;
3441
3442 BEGIN
3443 SET_STATUS_CODE(p_line_status_code,
3444 p_status_text,
3445 P_LINE_INDEX,
3446 NULL,
3447 'LINES',
3448 l_error_status_code,
3449 l_error_status_text);
3450
3451 IF (l_error_status_code = FND_API.G_RET_STS_ERROR) THEN
3452 RAISE E_ROUTINE_ERRORS;
3453 END IF;
3454
3455 SET_STATUS_CODE(G_STATUS_DELETED,
3456 p_status_text,
3457 P_LINE_INDEX,
3458 NULL,
3459 'ATTRS',
3460 l_error_status_code,
3461 l_error_status_text);
3462
3463 IF (l_error_status_code = FND_API.G_RET_STS_ERROR) THEN
3464 RAISE E_ROUTINE_ERRORS;
3465 END IF;
3466
3467 SET_STATUS_CODE(G_STATUS_DELETED,
3468 p_status_text,
3469 P_LINE_INDEX,
3470 NULL,
3471 'LDETS',
3472 l_error_status_code,
3473 l_error_status_text);
3474
3475 IF (l_error_status_code = FND_API.G_RET_STS_ERROR) THEN
3476 RAISE E_ROUTINE_ERRORS;
3477 END IF;
3478
3479 EXCEPTION
3480 WHEN E_ROUTINE_ERRORS THEN
3481 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3482 engine_debug(l_routine||': '||l_error_status_text);
3483 END IF;
3484 x_status_code := FND_API.G_RET_STS_ERROR;
3485 x_status_text := l_routine||': '||l_error_status_text;
3486 WHEN OTHERS THEN
3487 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3488 engine_debug(l_routine||' '||SQLERRM);
3489 END IF;
3490 x_status_code := FND_API.G_RET_STS_ERROR;
3491 x_status_text := 'Error in '||l_routine||SQLERRM;
3492 END DELETE_LINES;
3493
3494 /*+----------------------------------------------------------------------
3495 |Procedure Group INSERT_LINE_ATTRS2_AT
3496 +----------------------------------------------------------------------
3497 */
3498
3499 PROCEDURE INSERT_LINE_ATTRS2_AT
3500 ( p_LINE_INDEX_tbl number_type,
3501 p_LINE_DETAIL_INDEX_tbl pls_integer_type ,
3502 p_ATTRIBUTE_TYPE_tbl varchar_type,
3503 p_CONTEXT_tbl varchar_type,
3504 p_ATTRIBUTE_tbl varchar_type,
3505 p_VALUE_FROM_tbl varchar_type,
3506 p_VALUE_TO_tbl varchar_type,
3507 p_VALIDATED_FLAG_tbl varchar_type,
3508 x_status_code OUT NOCOPY VARCHAR2,
3509 x_status_text OUT NOCOPY VARCHAR2)
3510 AS
3511 PRAGMA AUTONOMOUS_TRANSACTION;
3512 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LINE_ATTRS2_AT';
3513 l_request_id number;
3514
3515 BEGIN
3516 x_status_code := FND_API.G_RET_STS_SUCCESS;
3517 l_request_id := nvl(SYS_CONTEXT('QP_CONTEXT','request_id'),-9999);
3518
3519 FORALL i in p_line_index_tbl.FIRST..p_line_index_tbl.LAST
3520 INSERT INTO QP_INT_LINE_ATTRS_T
3521 (LINE_INDEX,
3522 LINE_DETAIL_INDEX,
3523 ATTRIBUTE_TYPE,
3524 CONTEXT,
3525 ATTRIBUTE,
3526 VALUE_FROM,
3527 VALUE_TO,
3528 VALIDATED_FLAG,
3529 request_id)
3530 VALUES (p_LINE_INDEX_tbl(i),
3531 p_LINE_DETAIL_INDEX_tbl(i),
3532 p_ATTRIBUTE_TYPE_tbl(i),
3533 p_CONTEXT_tbl(i),
3534 p_ATTRIBUTE_tbl(i),
3535 p_VALUE_FROM_tbl(i),
3536 p_VALUE_TO_tbl(i),
3537 p_VALIDATED_FLAG_tbl(i),
3538 l_request_id);
3539 /*INSERT INTO QP_INT_LINE_ATTRS
3540 (LINE_INDEX,
3541 LINE_DETAIL_INDEX,
3542 ATTRIBUTE_TYPE,
3543 CONTEXT,
3544 ATTRIBUTE,
3545 VALUE_FROM,
3546 VALUE_TO,
3547 VALIDATED_FLAG)
3548 VALUES (p_LINE_INDEX_tbl(i),
3549 p_LINE_DETAIL_INDEX_tbl(i),
3550 p_ATTRIBUTE_TYPE_tbl(i),
3551 p_CONTEXT_tbl(i),
3552 p_ATTRIBUTE_tbl(i),
3553 p_VALUE_FROM_tbl(i),
3554 p_VALUE_TO_tbl(i),
3555 p_VALIDATED_FLAG_tbl(i));
3556 */
3557 QP_PREQ_GRP.G_INT_ATTRS_NO := QP_PREQ_GRP.G_INT_ATTRS_NO + p_LINE_INDEX_tbl.count;
3558 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3559 QP_PREQ_GRP.engine_debug('QP_PREQ_GRP.G_INT_ATTRS_NO='||QP_PREQ_GRP.G_INT_ATTRS_NO);
3560 END IF;
3561 COMMIT;
3562 EXCEPTION
3563 WHEN OTHERS THEN
3564 x_status_code := FND_API.G_RET_STS_ERROR;
3565 x_status_text :=l_routine||' '||SQLERRM;
3566 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3567 QP_PREQ_GRP.engine_debug(l_routine||' '||SQLERRM);
3568 END IF;
3569 END;
3570
3571 /*+----------------------------------------------------------------------
3572 |Procedure Group INSERT_LINE_ATTRS2
3573 +----------------------------------------------------------------------
3574 */
3575
3576 PROCEDURE INSERT_LINE_ATTRS2
3577 ( p_LINE_INDEX_tbl number_type,
3578 p_LINE_DETAIL_INDEX_tbl pls_integer_type ,
3579 p_ATTRIBUTE_TYPE_tbl varchar_type,
3580 p_CONTEXT_tbl varchar_type,
3581 p_ATTRIBUTE_tbl varchar_type,
3582 p_VALUE_FROM_tbl varchar_type,
3583 p_VALUE_TO_tbl varchar_type,
3584 p_VALIDATED_FLAG_tbl varchar_type,
3585 x_status_code OUT NOCOPY VARCHAR2,
3586 x_status_text OUT NOCOPY VARCHAR2)
3587 AS
3588 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LINE_ATTRS2';
3589 --added by yangli for Java Engine 3086881
3590 l_debug varchar2(3);
3591 --added by yangli for Java Engine 3086881
3592 BEGIN
3593
3594 --added by yangli for Java Engine 3086881
3595 -- Set the global variable G_DEBUG_ENGINE
3596 QP_PREQ_GRP.Set_QP_Debug;
3597
3598 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
3599
3600 --added by yangli for Java Engine project
3601 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
3602 IF l_debug = FND_API.G_TRUE THEN
3603 ENGINE_DEBUG('Java Engine not Installed ----------');
3604 END IF;
3605 --added by yangli for Java Engine 3086881
3606 x_status_code := FND_API.G_RET_STS_SUCCESS;
3607
3608 FORALL i in p_line_index_tbl.FIRST..p_line_index_tbl.LAST
3609 INSERT INTO qp_npreq_line_attrs_tmp
3610 (LINE_INDEX,
3611 LINE_DETAIL_INDEX,
3612 ATTRIBUTE_TYPE,
3613 CONTEXT,
3614 ATTRIBUTE,
3615 VALUE_FROM,
3616 VALUE_TO,
3617 VALIDATED_FLAG)
3618 VALUES (p_LINE_INDEX_tbl(i),
3619 p_LINE_DETAIL_INDEX_tbl(i),
3620 p_ATTRIBUTE_TYPE_tbl(i),
3621 p_CONTEXT_tbl(i),
3622 p_ATTRIBUTE_tbl(i),
3623 p_VALUE_FROM_tbl(i),
3624 p_VALUE_TO_tbl(i),
3625 p_VALIDATED_FLAG_tbl(i));
3626 --added by yangli for Java Engine 3086881
3627 ELSE
3628 IF l_debug = FND_API.G_TRUE THEN
3629 ENGINE_DEBUG('Java Engine Installed ----------');
3630 END IF;
3631 QP_PREQ_GRP.INSERT_LINE_ATTRS2_AT(
3632 p_LINE_INDEX_tbl ,
3633 p_LINE_DETAIL_INDEX_tbl ,
3634 p_ATTRIBUTE_TYPE_tbl ,
3635 p_CONTEXT_tbl ,
3636 p_ATTRIBUTE_tbl ,
3637 p_VALUE_FROM_tbl ,
3638 p_VALUE_TO_tbl ,
3639 p_VALIDATED_FLAG_tbl ,
3640 x_status_code ,
3641 x_status_text
3642 );
3643
3644 END IF;
3645 --added by yangli for Java Engine 3086881
3646
3647 EXCEPTION
3648 WHEN OTHERS THEN
3649 x_status_code := FND_API.G_RET_STS_ERROR;
3650 x_status_text :=l_routine||' '||SQLERRM;
3651 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3652 engine_debug(l_routine||' '||SQLERRM);
3653 END IF;
3654 END;
3655
3656
3657 /*+-----------------------------------------------------------------------
3658 | PROCEDURE INSERT_LINE_ATTRS
3659 +-----------------------------------------------------------------------
3660 */
3661 PROCEDURE INSERT_LINE_ATTRS
3662 ( p_LINE_INDEX IN PLS_INTEGER,
3663 p_LINE_DETAIL_INDEX IN PLS_INTEGER :=NULL,
3664 p_ATTRIBUTE_LEVEL IN VARCHAR2,
3665 p_ATTRIBUTE_TYPE IN VARCHAR2,
3666 p_LIST_HEADER_ID IN NUMBER :=NULL,
3667 p_LIST_LINE_ID IN NUMBER :=NULL,
3668 p_CONTEXT IN VARCHAR2,
3669 p_ATTRIBUTE IN VARCHAR2,
3670 p_VALUE_FROM IN VARCHAR2,
3671 p_SETUP_VALUE_FROM IN VARCHAR2 :=NULL,
3672 p_VALUE_TO IN VARCHAR2 :=NULL,
3673 p_SETUP_VALUE_TO IN VARCHAR2 :=NULL,
3674 p_GROUPING_NUMBER IN PLS_INTEGER :=NULL,
3675 p_NO_QUALIFIERS_IN_GRP IN PLS_INTEGER :=NULL,
3676 p_COMPARISON_OPERATOR_TYPE IN VARCHAR2 :=NULL,
3677 p_VALIDATED_FLAG IN VARCHAR2 :=NULL,
3678 p_APPLIED_FLAG IN VARCHAR2 :=NULL,
3679 p_PRICING_STATUS_CODE IN VARCHAR2,
3680 p_PRICING_STATUS_TEXT IN VARCHAR2 :=NULL,
3681 p_QUALIFIER_PRECEDENCE IN PLS_INTEGER :=NULL,
3682 p_DATATYPE IN VARCHAR2 :=NULL,
3683 p_PRICING_ATTR_FLAG IN VARCHAR2 :=NULL,
3684 p_QUALIFIER_TYPE IN VARCHAR2 :=NULL,
3685 p_product_uom_code IN VARCHAR2 :=NULL,
3686 p_excluder_flag IN VARCHAR2 :=NULL,
3687 x_status_code OUT NOCOPY VARCHAR2,
3688 x_status_text OUT NOCOPY VARCHAR2)
3689 AS
3690 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LINE_ATTRS';
3691 BEGIN
3692 x_status_code := FND_API.G_RET_STS_SUCCESS;
3693 INSERT INTO qp_npreq_line_attrs_tmp
3694 (LINE_INDEX,
3695 LINE_DETAIL_INDEX,
3696 ATTRIBUTE_LEVEL,
3697 ATTRIBUTE_TYPE,
3698 LIST_HEADER_ID,
3699 LIST_LINE_ID,
3700 CONTEXT,
3701 ATTRIBUTE,
3702 VALUE_FROM,
3703 SETUP_VALUE_FROM,
3704 VALUE_TO,
3705 SETUP_VALUE_TO,
3706 GROUPING_NUMBER,
3707 COMPARISON_OPERATOR_TYPE_CODE,
3708 VALIDATED_FLAG,
3709 APPLIED_FLAG,
3710 PRICING_STATUS_CODE,
3711 PRICING_STATUS_TEXT,
3712 QUALIFIER_PRECEDENCE,
3713 DATATYPE,
3714 PRICING_ATTR_FLAG,
3715 QUALIFIER_TYPE,
3716 PRODUCT_UOM_CODE,
3717 EXCLUDER_FLAG
3718 )
3719 VALUES (p_LINE_INDEX,
3720 p_LINE_DETAIL_INDEX,
3721 p_ATTRIBUTE_LEVEL,
3722 p_ATTRIBUTE_TYPE,
3723 p_LIST_HEADER_ID,
3724 p_LIST_LINE_ID,
3725 p_CONTEXT,
3726 p_ATTRIBUTE,
3727 p_VALUE_FROM,
3728 p_SETUP_VALUE_FROM,
3729 p_VALUE_TO,
3730 p_SETUP_VALUE_TO,
3731 p_GROUPING_NUMBER,
3732 p_COMPARISON_OPERATOR_TYPE,
3733 p_VALIDATED_FLAG,
3734 p_APPLIED_FLAG,
3735 p_PRICING_STATUS_CODE,
3736 p_PRICING_STATUS_TEXT,
3737 p_QUALIFIER_PRECEDENCE,
3738 p_DATATYPE,
3739 p_PRICING_ATTR_FLAG,
3740 p_QUALIFIER_TYPE,
3741 p_PRODUCT_UOM_CODE,
3742 p_EXCLUDER_FLAG
3743 );
3744 EXCEPTION
3745 WHEN OTHERS THEN
3746 x_status_code := FND_API.G_RET_STS_ERROR;
3747 x_status_text :=l_routine||' '||SQLERRM;
3748 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3749 engine_debug(l_routine||' '||SQLERRM);
3750 END IF;
3751 END;
3752
3753 /*+-----------------------------------------------------------------------
3754 | PROCEDURE INSERT_PRICE_LIST_ATTRS
3755 +-----------------------------------------------------------------------
3756 */
3757 PROCEDURE INSERT_PRICE_LIST_ATTRS
3758 ( p_LINE_INDEX_tbl pls_integer_type,
3759 p_LINE_DETAIL_INDEX_tbl pls_integer_type ,
3760 p_ATTRIBUTE_LEVEL_tbl varchar_type,
3761 p_ATTRIBUTE_TYPE_tbl varchar_type,
3762 p_LIST_HEADER_ID_tbl number_type,
3763 p_LIST_LINE_ID_tbl number_type,
3764 p_CONTEXT_tbl varchar_type,
3765 p_ATTRIBUTE_tbl varchar_type,
3766 p_VALUE_FROM_tbl varchar_type,
3767 p_SETUP_VALUE_FROM_tbl varchar_type,
3768 p_SETUP_VALUE_TO_tbl varchar_type,
3769 p_GROUPING_NUMBER_tbl pls_integer_type,
3770 p_COMPARISON_OPERATOR_TYPE_tbl varchar_type,
3771 p_VALIDATED_FLAG_tbl varchar_type,
3772 p_APPLIED_FLAG_tbl varchar_type,
3773 p_PRICING_STATUS_CODE_tbl varchar_type,
3774 p_PRICING_STATUS_TEXT_tbl varchar_type,
3775 p_QUALIFIER_PRECEDENCE_tbl pls_integer_type,
3776 p_DATATYPE_tbl varchar_type,
3777 p_PRICING_ATTR_FLAG_tbl varchar_type,
3778 p_QUALIFIER_TYPE_tbl varchar_type,
3779 p_PRODUCT_UOM_CODE_TBL varchar_type,
3780 p_EXCLUDER_FLAG_TBL varchar_type ,
3781 p_PRICING_PHASE_ID_TBL pls_integer_type ,
3782 p_INCOMPATABILITY_GRP_CODE_TBL varchar_type ,
3783 p_LINE_DETAIL_TYPE_CODE_TBL varchar_type ,
3784 p_MODIFIER_LEVEL_CODE_TBL varchar_type ,
3785 p_PRIMARY_UOM_FLAG_TBL varchar_type ,
3786 x_status_code OUT NOCOPY VARCHAR2,
3787 x_status_text OUT NOCOPY VARCHAR2)
3788 AS
3789
3790
3791 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_PRICE_LIST_ATTRS';
3792 BEGIN
3793 x_status_code := FND_API.G_RET_STS_SUCCESS;
3794
3795 FORALL i in p_line_index_tbl.FIRST..p_line_index_tbl.LAST
3796 INSERT INTO qp_npreq_line_attrs_tmp
3797 (LINE_INDEX,
3798 LINE_DETAIL_INDEX,
3799 ATTRIBUTE_LEVEL,
3800 ATTRIBUTE_TYPE,
3801 LIST_HEADER_ID,
3802 LIST_LINE_ID,
3803 CONTEXT,
3804 ATTRIBUTE,
3805 VALUE_FROM,
3806 SETUP_VALUE_FROM,
3807 SETUP_VALUE_TO,
3808 GROUPING_NUMBER,
3809 COMPARISON_OPERATOR_TYPE_CODE,
3810 VALIDATED_FLAG,
3811 APPLIED_FLAG,
3812 PRICING_STATUS_CODE,
3813 PRICING_STATUS_TEXT,
3814 QUALIFIER_PRECEDENCE,
3815 DATATYPE,
3816 PRICING_ATTR_FLAG,
3817 QUALIFIER_TYPE,
3818 PRODUCT_UOM_CODE,
3819 EXCLUDER_FLAG,
3820 PRICING_PHASE_ID,
3821 INCOMPATABILITY_GRP_CODE,
3822 LINE_DETAIL_TYPE_CODE,
3823 MODIFIER_LEVEL_CODE,
3824 PRIMARY_UOM_FLAG
3825 )
3826 VALUES (p_LINE_INDEX_tbl(i),
3827 p_LINE_DETAIL_INDEX_tbl(i),
3828 p_ATTRIBUTE_LEVEL_tbl(i),
3829 p_ATTRIBUTE_TYPE_tbl(i),
3830 p_LIST_HEADER_ID_tbl(i),
3831 p_LIST_LINE_ID_tbl(i),
3832 p_CONTEXT_tbl(i),
3833 p_ATTRIBUTE_tbl(i),
3834 p_VALUE_FROM_tbl(i),
3835 p_SETUP_VALUE_FROM_tbl(i),
3836 p_SETUP_VALUE_TO_tbl(i),
3837 p_GROUPING_NUMBER_tbl(i),
3838 p_COMPARISON_OPERATOR_TYPE_tbl(i),
3839 p_VALIDATED_FLAG_tbl(i),
3840 p_APPLIED_FLAG_tbl(i),
3841 p_PRICING_STATUS_CODE_tbl(i),
3842 p_PRICING_STATUS_TEXT_tbl(i),
3843 p_QUALIFIER_PRECEDENCE_tbl(i),
3844 p_DATATYPE_tbl(i),
3845 p_PRICING_ATTR_FLAG_tbl(i),
3846 p_QUALIFIER_TYPE_tbl(i),
3847 p_PRODUCT_UOM_CODE_tbl(i),
3848 p_EXCLUDER_FLAG_TBL(i),
3849 p_PRICING_PHASE_ID_TBL(i),
3850 p_INCOMPATABILITY_GRP_CODE_TBL(i),
3851 p_LINE_DETAIL_TYPE_CODE_TBL(i),
3852 p_MODIFIER_LEVEL_CODE_TBL(i),
3853 p_PRIMARY_UOM_FLAG_TBL(i)
3854 );
3855 EXCEPTION
3856 WHEN OTHERS THEN
3857 x_status_code := FND_API.G_RET_STS_ERROR;
3858 x_status_text :=l_routine||' '||SQLERRM;
3859 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
3860 engine_debug(l_routine||' '||SQLERRM);
3861 END IF;
3862 END;
3863
3864 /*+-----------------------------------------------------------------------
3865 | PROCEDURE INSERT_LINE_ATTRS2_AT
3866 +-----------------------------------------------------------------------
3867 */
3868 PROCEDURE INSERT_LINE_ATTRS2_AT
3869 ( p_LINE_INDEX_tbl pls_integer_type,
3870 p_LINE_DETAIL_INDEX_tbl pls_integer_type ,
3871 p_ATTRIBUTE_LEVEL_tbl varchar_type,
3872 p_ATTRIBUTE_TYPE_tbl varchar_type,
3873 p_LIST_HEADER_ID_tbl number_type,
3874 p_LIST_LINE_ID_tbl number_type,
3875 p_CONTEXT_tbl varchar_type,
3876 p_ATTRIBUTE_tbl varchar_type,
3877 p_VALUE_FROM_tbl varchar_type,
3878 p_SETUP_VALUE_FROM_tbl varchar_type,
3879 p_VALUE_TO_tbl varchar_type,
3880 p_SETUP_VALUE_TO_tbl varchar_type,
3881 p_GROUPING_NUMBER_tbl pls_integer_type,
3882 p_NO_QUALIFIERS_IN_GRP_tbl pls_integer_type,
3883 p_COMPARISON_OPERATOR_TYPE_tbl varchar_type,
3884 p_VALIDATED_FLAG_tbl varchar_type,
3885 p_APPLIED_FLAG_tbl varchar_type,
3886 p_PRICING_STATUS_CODE_tbl varchar_type,
3887 p_PRICING_STATUS_TEXT_tbl varchar_type,
3888 p_QUALIFIER_PRECEDENCE_tbl pls_integer_type,
3889 p_DATATYPE_tbl varchar_type,
3890 p_PRICING_ATTR_FLAG_tbl varchar_type,
3891 p_QUALIFIER_TYPE_tbl varchar_type,
3892 p_PRODUCT_UOM_CODE_TBL varchar_type,
3893 p_EXCLUDER_FLAG_TBL varchar_type ,
3894 p_PRICING_PHASE_ID_TBL pls_integer_type ,
3895 p_INCOMPATABILITY_GRP_CODE_TBL varchar_type ,
3896 p_LINE_DETAIL_TYPE_CODE_TBL varchar_type ,
3897 p_MODIFIER_LEVEL_CODE_TBL varchar_type ,
3898 p_PRIMARY_UOM_FLAG_TBL varchar_type ,
3899 x_status_code OUT NOCOPY VARCHAR2,
3900 x_status_text OUT NOCOPY VARCHAR2)
3901 AS
3902 PRAGMA AUTONOMOUS_TRANSACTION;
3903 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LINE_ATTRS2_AT';
3904 l_request_id number;
3905 BEGIN
3906 x_status_code := FND_API.G_RET_STS_SUCCESS;
3907 l_request_id := nvl(SYS_CONTEXT('QP_CONTEXT','request_id'),-9999);
3908
3909 FORALL i in p_line_index_tbl.FIRST..p_line_index_tbl.LAST
3910 /*INSERT INTO QP_INT_LINE_ATTRS
3911 ( LINE_INDEX,
3912 LINE_DETAIL_INDEX,
3913 ATTRIBUTE_LEVEL,
3914 ATTRIBUTE_TYPE,
3915 LIST_HEADER_ID,
3916 LIST_LINE_ID,
3917 CONTEXT,
3918 ATTRIBUTE,
3919 VALUE_FROM,
3920 SETUP_VALUE_FROM,
3921 VALUE_TO,
3922 SETUP_VALUE_TO,
3923 GROUPING_NUMBER,
3924 COMPARISON_OPERATOR_TYPE_CODE,
3925 VALIDATED_FLAG,
3926 APPLIED_FLAG,
3927 PRICING_STATUS_CODE,
3928 PRICING_STATUS_TEXT,
3929 QUALIFIER_PRECEDENCE,
3930 DATATYPE,
3931 PRICING_ATTR_FLAG,
3932 QUALIFIER_TYPE,
3933 PRODUCT_UOM_CODE,
3934 EXCLUDER_FLAG,
3935 PRICING_PHASE_ID,
3936 INCOMPATABILITY_GRP_CODE,
3937 LINE_DETAIL_TYPE_CODE,
3938 MODIFIER_LEVEL_CODE,
3939 PRIMARY_UOM_FLAG
3940 )
3941 VALUES ( p_LINE_INDEX_tbl(i),
3942 p_LINE_DETAIL_INDEX_tbl(i),
3943 p_ATTRIBUTE_LEVEL_tbl(i),
3944 p_ATTRIBUTE_TYPE_tbl(i),
3945 --made changes to fix bug 2374591 ask for promotions not
3946 --getting applied in performance code path
3947 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)),
3948 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)),
3949 p_CONTEXT_tbl(i),
3950 p_ATTRIBUTE_tbl(i),
3951 p_VALUE_FROM_tbl(i),
3952 p_SETUP_VALUE_FROM_tbl(i),
3953 p_VALUE_TO_tbl(i),
3954 p_SETUP_VALUE_TO_tbl(i),
3955 p_GROUPING_NUMBER_tbl(i),
3956 p_COMPARISON_OPERATOR_TYPE_tbl(i),
3957 p_VALIDATED_FLAG_tbl(i),
3958 p_APPLIED_FLAG_tbl(i),
3959 p_PRICING_STATUS_CODE_tbl(i),
3960 p_PRICING_STATUS_TEXT_tbl(i),
3961 p_QUALIFIER_PRECEDENCE_tbl(i),
3962 p_DATATYPE_tbl(i),
3963 p_PRICING_ATTR_FLAG_tbl(i),
3964 p_QUALIFIER_TYPE_tbl(i),
3965 p_PRODUCT_UOM_CODE_tbl(i),
3966 p_EXCLUDER_FLAG_TBL(i),
3967 p_PRICING_PHASE_ID_TBL(i),
3968 p_INCOMPATABILITY_GRP_CODE_TBL(i),
3969 p_LINE_DETAIL_TYPE_CODE_TBL(i),
3970 p_MODIFIER_LEVEL_CODE_TBL(i),
3971 p_PRIMARY_UOM_FLAG_TBL(i)
3972 );*/
3973 INSERT INTO QP_INT_LINE_ATTRS_T
3974 ( LINE_INDEX,
3975 LINE_DETAIL_INDEX,
3976 ATTRIBUTE_LEVEL,
3977 ATTRIBUTE_TYPE,
3978 LIST_HEADER_ID,
3979 LIST_LINE_ID,
3980 CONTEXT,
3981 ATTRIBUTE,
3982 VALUE_FROM,
3983 SETUP_VALUE_FROM,
3984 VALUE_TO,
3985 SETUP_VALUE_TO,
3986 GROUPING_NUMBER,
3987 COMPARISON_OPERATOR_TYPE_CODE,
3988 VALIDATED_FLAG,
3989 APPLIED_FLAG,
3990 PRICING_STATUS_CODE,
3991 PRICING_STATUS_TEXT,
3992 QUALIFIER_PRECEDENCE,
3993 DATATYPE,
3994 PRICING_ATTR_FLAG,
3995 QUALIFIER_TYPE,
3996 PRODUCT_UOM_CODE,
3997 EXCLUDER_FLAG,
3998 PRICING_PHASE_ID,
3999 INCOMPATABILITY_GRP_CODE,
4000 LINE_DETAIL_TYPE_CODE,
4001 MODIFIER_LEVEL_CODE,
4002 PRIMARY_UOM_FLAG,
4003 request_id
4004 )
4005 VALUES ( p_LINE_INDEX_tbl(i),
4006 p_LINE_DETAIL_INDEX_tbl(i),
4007 p_ATTRIBUTE_LEVEL_tbl(i),
4008 p_ATTRIBUTE_TYPE_tbl(i),
4009 --made changes to fix bug 2374591 ask for promotions not
4010 --getting applied in performance code path
4011 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)),
4012 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)),
4013 p_CONTEXT_tbl(i),
4014 p_ATTRIBUTE_tbl(i),
4015 p_VALUE_FROM_tbl(i),
4016 p_SETUP_VALUE_FROM_tbl(i),
4017 p_VALUE_TO_tbl(i),
4018 p_SETUP_VALUE_TO_tbl(i),
4019 p_GROUPING_NUMBER_tbl(i),
4020 p_COMPARISON_OPERATOR_TYPE_tbl(i),
4021 p_VALIDATED_FLAG_tbl(i),
4022 p_APPLIED_FLAG_tbl(i),
4023 p_PRICING_STATUS_CODE_tbl(i),
4024 p_PRICING_STATUS_TEXT_tbl(i),
4025 p_QUALIFIER_PRECEDENCE_tbl(i),
4026 p_DATATYPE_tbl(i),
4027 p_PRICING_ATTR_FLAG_tbl(i),
4028 p_QUALIFIER_TYPE_tbl(i),
4029 p_PRODUCT_UOM_CODE_tbl(i),
4030 p_EXCLUDER_FLAG_TBL(i),
4031 p_PRICING_PHASE_ID_TBL(i),
4032 p_INCOMPATABILITY_GRP_CODE_TBL(i),
4033 p_LINE_DETAIL_TYPE_CODE_TBL(i),
4034 p_MODIFIER_LEVEL_CODE_TBL(i),
4035 p_PRIMARY_UOM_FLAG_TBL(i),
4036 l_request_id
4037 );
4038 QP_PREQ_GRP.G_INT_ATTRS_NO := QP_PREQ_GRP.G_INT_ATTRS_NO + p_LINE_INDEX_tbl.count;
4039 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4040 QP_PREQ_GRP.engine_debug('QP_PREQ_GRP.G_INT_ATTRS_NO='||QP_PREQ_GRP.G_INT_ATTRS_NO);
4041 END IF;
4042
4043 COMMIT;
4044 EXCEPTION
4045 WHEN OTHERS THEN
4046 x_status_code := FND_API.G_RET_STS_ERROR;
4047 x_status_text :=l_routine||' '||SQLERRM;
4048 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4049 QP_PREQ_GRP.engine_debug(l_routine||' '||SQLERRM);
4050 END IF;
4051 END;
4052
4053 /*+-----------------------------------------------------------------------
4054 | PROCEDURE INSERT_LINE_ATTRS2
4055 +-----------------------------------------------------------------------
4056 */
4057 PROCEDURE INSERT_LINE_ATTRS2
4058 ( p_LINE_INDEX_tbl pls_integer_type,
4059 p_LINE_DETAIL_INDEX_tbl pls_integer_type ,
4060 p_ATTRIBUTE_LEVEL_tbl varchar_type,
4061 p_ATTRIBUTE_TYPE_tbl varchar_type,
4062 p_LIST_HEADER_ID_tbl number_type,
4063 p_LIST_LINE_ID_tbl number_type,
4064 p_CONTEXT_tbl varchar_type,
4065 p_ATTRIBUTE_tbl varchar_type,
4066 p_VALUE_FROM_tbl varchar_type,
4067 p_SETUP_VALUE_FROM_tbl varchar_type,
4068 p_VALUE_TO_tbl varchar_type,
4069 p_SETUP_VALUE_TO_tbl varchar_type,
4070 p_GROUPING_NUMBER_tbl pls_integer_type,
4071 p_NO_QUALIFIERS_IN_GRP_tbl pls_integer_type,
4072 p_COMPARISON_OPERATOR_TYPE_tbl varchar_type,
4073 p_VALIDATED_FLAG_tbl varchar_type,
4074 p_APPLIED_FLAG_tbl varchar_type,
4075 p_PRICING_STATUS_CODE_tbl varchar_type,
4076 p_PRICING_STATUS_TEXT_tbl varchar_type,
4077 p_QUALIFIER_PRECEDENCE_tbl pls_integer_type,
4078 p_DATATYPE_tbl varchar_type,
4079 p_PRICING_ATTR_FLAG_tbl varchar_type,
4080 p_QUALIFIER_TYPE_tbl varchar_type,
4081 p_PRODUCT_UOM_CODE_TBL varchar_type,
4082 p_EXCLUDER_FLAG_TBL varchar_type ,
4083 p_PRICING_PHASE_ID_TBL pls_integer_type ,
4084 p_INCOMPATABILITY_GRP_CODE_TBL varchar_type ,
4085 p_LINE_DETAIL_TYPE_CODE_TBL varchar_type ,
4086 p_MODIFIER_LEVEL_CODE_TBL varchar_type ,
4087 p_PRIMARY_UOM_FLAG_TBL varchar_type ,
4088 x_status_code OUT NOCOPY VARCHAR2,
4089 x_status_text OUT NOCOPY VARCHAR2)
4090 AS
4091
4092
4093 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LINE_ATTRS2';
4094 --added by yangli for Java Engine 3086881
4095 l_debug varchar2(3);
4096 BEGIN
4097 --added by yangli for Java Engine 3086881
4098 -- Set the global variable G_DEBUG_ENGINE
4099 QP_PREQ_GRP.Set_QP_Debug;
4100
4101 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
4102
4103 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
4104 IF l_debug = FND_API.G_TRUE THEN
4105 ENGINE_DEBUG('Java Engine not Installed ----------');
4106 END IF;
4107 --added by yangli for Java Engine 3086881
4108
4109 x_status_code := FND_API.G_RET_STS_SUCCESS;
4110
4111 FORALL i in p_line_index_tbl.FIRST..p_line_index_tbl.LAST
4112 INSERT INTO qp_npreq_line_attrs_tmp
4113 (LINE_INDEX,
4114 LINE_DETAIL_INDEX,
4115 ATTRIBUTE_LEVEL,
4116 ATTRIBUTE_TYPE,
4117 LIST_HEADER_ID,
4118 LIST_LINE_ID,
4119 CONTEXT,
4120 ATTRIBUTE,
4121 VALUE_FROM,
4122 SETUP_VALUE_FROM,
4123 VALUE_TO,
4124 SETUP_VALUE_TO,
4125 GROUPING_NUMBER,
4126 COMPARISON_OPERATOR_TYPE_CODE,
4127 VALIDATED_FLAG,
4128 APPLIED_FLAG,
4129 PRICING_STATUS_CODE,
4130 PRICING_STATUS_TEXT,
4131 QUALIFIER_PRECEDENCE,
4132 DATATYPE,
4133 PRICING_ATTR_FLAG,
4134 QUALIFIER_TYPE,
4135 PRODUCT_UOM_CODE,
4136 EXCLUDER_FLAG,
4137 PRICING_PHASE_ID,
4138 INCOMPATABILITY_GRP_CODE,
4139 LINE_DETAIL_TYPE_CODE,
4140 MODIFIER_LEVEL_CODE,
4141 PRIMARY_UOM_FLAG
4142 )
4143 VALUES (p_LINE_INDEX_tbl(i),
4144 p_LINE_DETAIL_INDEX_tbl(i),
4145 p_ATTRIBUTE_LEVEL_tbl(i),
4146 p_ATTRIBUTE_TYPE_tbl(i),
4147 --made changes to fix bug 2374591 ask for promotions not
4148 --getting applied in performance code path
4149 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)),
4150 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)),
4151 p_CONTEXT_tbl(i),
4152 p_ATTRIBUTE_tbl(i),
4153 p_VALUE_FROM_tbl(i),
4154 p_SETUP_VALUE_FROM_tbl(i),
4155 p_VALUE_TO_tbl(i),
4156 p_SETUP_VALUE_TO_tbl(i),
4157 p_GROUPING_NUMBER_tbl(i),
4158 p_COMPARISON_OPERATOR_TYPE_tbl(i),
4159 p_VALIDATED_FLAG_tbl(i),
4160 p_APPLIED_FLAG_tbl(i),
4161 p_PRICING_STATUS_CODE_tbl(i),
4162 p_PRICING_STATUS_TEXT_tbl(i),
4163 p_QUALIFIER_PRECEDENCE_tbl(i),
4164 p_DATATYPE_tbl(i),
4165 p_PRICING_ATTR_FLAG_tbl(i),
4166 p_QUALIFIER_TYPE_tbl(i),
4167 p_PRODUCT_UOM_CODE_tbl(i),
4168 p_EXCLUDER_FLAG_TBL(i),
4169 p_PRICING_PHASE_ID_TBL(i),
4170 p_INCOMPATABILITY_GRP_CODE_TBL(i),
4171 p_LINE_DETAIL_TYPE_CODE_TBL(i),
4172 p_MODIFIER_LEVEL_CODE_TBL(i),
4173 p_PRIMARY_UOM_FLAG_TBL(i)
4174 );
4175 --added by yangli for Java Engine 3086881
4176 ELSE
4177 IF l_debug = FND_API.G_TRUE THEN
4178 ENGINE_DEBUG('Java Engine Installed ----------');
4179 END IF;
4180 QP_PREQ_GRP.INSERT_LINE_ATTRS2_AT
4181 ( p_LINE_INDEX_tbl ,
4182 p_LINE_DETAIL_INDEX_tbl ,
4183 p_ATTRIBUTE_LEVEL_tbl ,
4184 p_ATTRIBUTE_TYPE_tbl ,
4185 p_LIST_HEADER_ID_tbl ,
4186 p_LIST_LINE_ID_tbl ,
4187 p_CONTEXT_tbl ,
4188 p_ATTRIBUTE_tbl ,
4189 p_VALUE_FROM_tbl ,
4190 p_SETUP_VALUE_FROM_tbl ,
4191 p_VALUE_TO_tbl ,
4192 p_SETUP_VALUE_TO_tbl ,
4193 p_GROUPING_NUMBER_tbl ,
4194 p_NO_QUALIFIERS_IN_GRP_tbl ,
4195 p_COMPARISON_OPERATOR_TYPE_tbl ,
4196 p_VALIDATED_FLAG_tbl ,
4197 p_APPLIED_FLAG_tbl ,
4198 p_PRICING_STATUS_CODE_tbl ,
4199 p_PRICING_STATUS_TEXT_tbl ,
4200 p_QUALIFIER_PRECEDENCE_tbl ,
4201 p_DATATYPE_tbl ,
4202 p_PRICING_ATTR_FLAG_tbl ,
4203 p_QUALIFIER_TYPE_tbl ,
4204 p_PRODUCT_UOM_CODE_TBL ,
4205 p_EXCLUDER_FLAG_TBL ,
4206 p_PRICING_PHASE_ID_TBL ,
4207 p_INCOMPATABILITY_GRP_CODE_TBL ,
4208 p_LINE_DETAIL_TYPE_CODE_TBL ,
4209 p_MODIFIER_LEVEL_CODE_TBL ,
4210 p_PRIMARY_UOM_FLAG_TBL ,
4211 x_status_code ,
4212 x_status_text );
4213
4214 END IF;
4215 --added by yangli for Java Engine 3086881
4216
4217 EXCEPTION
4218 WHEN OTHERS THEN
4219 x_status_code := FND_API.G_RET_STS_ERROR;
4220 x_status_text :=l_routine||' '||SQLERRM;
4221 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4222 engine_debug(l_routine||' '||SQLERRM);
4223 END IF;
4224 END;
4225
4226 /*+-----------------------------------------------------------------------
4227 |PROCEDURE INSERT_LINES
4228 +-----------------------------------------------------------------------
4229 */
4230 PROCEDURE INSERT_LINES
4231 (p_LINE_INDEX IN PLS_INTEGER,
4232 p_LINE_TYPE_CODE IN VARCHAR2,
4233 p_PRICING_EFFECTIVE_DATE IN DATE :=NULL,
4234 p_ACTIVE_DATE_FIRST IN DATE :=NULL,
4235 p_ACTIVE_DATE_FIRST_TYPE IN VARCHAR2 :=NULL,
4236 p_ACTIVE_DATE_SECOND IN DATE :=NULL,
4237 p_ACTIVE_DATE_SECOND_TYPE IN VARCHAR2 :=NULL,
4238 p_LINE_QUANTITY IN NUMBER :=NULL,
4239 p_LINE_UOM_CODE IN VARCHAR2:=NULL,
4240 p_REQUEST_TYPE_CODE IN VARCHAR2:=NULL,
4241 p_PRICED_QUANTITY IN NUMBER :=NULL,
4242 p_PRICED_UOM_CODE IN VARCHAR2:=NULL,
4243 p_CURRENCY_CODE IN VARCHAR2:=NULL,
4244 p_UNIT_PRICE IN NUMBER:=NULL,
4245 p_PERCENT_PRICE IN NUMBER:=NULL,
4246 p_UOM_QUANTITY IN NUMBER :=NULL,
4247 p_ADJUSTED_UNIT_PRICE IN NUMBER:=NULL,
4248 p_PROCESSED_FLAG IN VARCHAR2:=NULL,
4249 p_PRICE_FLAG IN VARCHAR2,
4250 p_LINE_ID IN NUMBER:=NULL,
4251 p_PROCESSING_ORDER IN PLS_INTEGER:=NULL,
4252 p_PRICING_STATUS_CODE IN VARCHAR2,
4253 p_PRICING_STATUS_TEXT IN VARCHAR2:=NULL,
4254 p_ROUNDING_FLAG IN VARCHAR2:=NULL,
4255 p_LINE_CATEGORY IN VARCHAR2:=NULL,
4256 p_charge_periodicity_code IN VARCHAR2:=NULL,
4257 x_status_code OUT NOCOPY VARCHAR2,
4258 x_status_text OUT NOCOPY VARCHAR2 )
4259 AS
4260 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.INSERT_LINES';
4261 BEGIN
4262 x_status_code := FND_API.G_RET_STS_SUCCESS;
4263 INSERT INTO qp_npreq_lines_tmp
4264 (LINE_INDEX,
4265 LINE_TYPE_CODE,
4266 PRICING_EFFECTIVE_DATE,
4267 START_DATE_ACTIVE_FIRST,
4268 ACTIVE_DATE_FIRST_TYPE,
4269 START_DATE_ACTIVE_SECOND,
4270 ACTIVE_DATE_SECOND_TYPE,
4271 LINE_QUANTITY,
4272 LINE_UOM_CODE,
4273 REQUEST_TYPE_CODE,
4274 PRICED_QUANTITY,
4275 PRICED_UOM_CODE,
4276 CURRENCY_CODE,
4277 UNIT_PRICE,
4278 PERCENT_PRICE,
4279 UOM_QUANTITY,
4280 ADJUSTED_UNIT_PRICE,
4281 PROCESSED_FLAG,
4282 PRICE_FLAG,
4283 LINE_ID,
4284 PROCESSING_ORDER,
4285 ROUNDING_FLAG,
4286 PRICING_STATUS_CODE,
4287 PRICING_STATUS_TEXT,
4288 LINE_CATEGORY,
4289 CHARGE_PERIODICITY_CODE)
4290 VALUES ( p_LINE_INDEX,
4291 p_LINE_TYPE_CODE,
4292 p_PRICING_EFFECTIVE_DATE,
4293 p_ACTIVE_DATE_FIRST,
4294 p_ACTIVE_DATE_FIRST_TYPE,
4295 p_ACTIVE_DATE_SECOND,
4296 p_ACTIVE_DATE_SECOND_TYPE,
4297 p_LINE_QUANTITY,
4298 p_LINE_UOM_CODE,
4299 p_REQUEST_TYPE_CODE,
4300 p_PRICED_QUANTITY,
4301 p_PRICED_UOM_CODE ,
4302 p_CURRENCY_CODE,
4303 p_UNIT_PRICE ,
4304 p_PERCENT_PRICE,
4305 p_UOM_QUANTITY,
4306 p_ADJUSTED_UNIT_PRICE,
4307 p_PROCESSED_FLAG,
4308 p_PRICE_FLAG,
4309 p_LINE_ID,
4310 P_PROCESSING_ORDER,
4311 P_ROUNDING_FLAG,
4312 p_PRICING_STATUS_CODE,
4313 p_PRICING_STATUS_TEXT,
4314 p_LINE_CATEGORY,
4315 p_CHARGE_PERIODICITY_CODE
4316 );
4317 EXCEPTION
4318 WHEN OTHERS THEN
4319 x_status_code := FND_API.G_RET_STS_ERROR;
4320 x_status_text :=l_routine||' '||SQLERRM;
4321 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4322 engine_debug(l_routine||' '||SQLERRM);
4323 engine_debug(SQLERRM);
4324 END IF;
4325 END;
4326
4327 /*+----------------------------------------------------------------------
4328 |Procedure Group INSERT_LINES2_AT
4329 +----------------------------------------------------------------------
4330 */
4331
4332 PROCEDURE INSERT_LINES2_AT
4333 (p_LINE_INDEX IN NUMBER_TYPE,
4334 p_LINE_TYPE_CODE IN VARCHAR_TYPE,
4335 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE ,
4336 p_ACTIVE_DATE_FIRST IN DATE_TYPE ,
4337 p_ACTIVE_DATE_FIRST_TYPE IN VARCHAR_TYPE,
4338 p_ACTIVE_DATE_SECOND IN DATE_TYPE ,
4339 p_ACTIVE_DATE_SECOND_TYPE IN VARCHAR_TYPE ,
4340 p_LINE_QUANTITY IN NUMBER_TYPE ,
4341 p_LINE_UOM_CODE IN VARCHAR_TYPE,
4342 p_REQUEST_TYPE_CODE IN VARCHAR_TYPE,
4343 p_PRICED_QUANTITY IN NUMBER_TYPE,
4344 p_PRICED_UOM_CODE IN VARCHAR_TYPE,
4345 p_CURRENCY_CODE IN VARCHAR_TYPE,
4346 p_UNIT_PRICE IN NUMBER_TYPE,
4347 p_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
4348 p_UPD_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
4349 p_UOM_QUANTITY IN NUMBER_TYPE,
4350 p_PRICE_FLAG IN VARCHAR_TYPE,
4351 p_LINE_ID IN NUMBER_TYPE,
4352 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
4353 p_PRICE_LIST_ID IN NUMBER_TYPE,
4354 p_PRICE_REQUEST_CODE IN VARCHAR_TYPE,
4355 p_USAGE_PRICING_TYPE IN VARCHAR_TYPE,
4356 p_LINE_CATEGORY IN VARCHAR_TYPE,
4357 p_CONTRACT_START_DATE IN DATE_TYPE,
4358 p_CONTRACT_END_DATE IN DATE_TYPE,
4359 p_CATCHWEIGHT_QTY IN NUMBER_TYPE,
4360 p_ACTUAL_ORDER_QTY IN NUMBER_TYPE,
4361 p_LIST_PRICE_OVERRIDE_FLAG IN VARCHAR_TYPE,
4362 p_charge_periodicity_code IN VARCHAR_3_TYPE,
4363 x_status_code OUT NOCOPY VARCHAR2,
4364 x_status_text OUT NOCOPY VARCHAR2 )
4365 AS
4366 PRAGMA AUTONOMOUS_TRANSACTION;
4367 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.INSERT_LINES2_AT';
4368 l_request_id number;
4369 BEGIN
4370 x_status_code := FND_API.G_RET_STS_SUCCESS;
4371 l_request_id := nvl(SYS_CONTEXT('QP_CONTEXT','request_id'),-9999);
4372
4373 FORALL i in p_line_index.FIRST..p_line_index.LAST
4374 /*INSERT INTO QP_INT_LINES
4375 (LINE_INDEX,
4376 LINE_TYPE_CODE,
4377 PRICING_EFFECTIVE_DATE,
4378 START_DATE_ACTIVE_FIRST,
4379 ACTIVE_DATE_FIRST_TYPE,
4380 START_DATE_ACTIVE_SECOND,
4381 ACTIVE_DATE_SECOND_TYPE,
4382 LINE_QUANTITY,
4383 LINE_UOM_CODE,
4384 REQUEST_TYPE_CODE,
4385 PRICED_QUANTITY,
4386 PRICED_UOM_CODE,
4387 CURRENCY_CODE,
4388 UNIT_PRICE,
4389 ADJUSTED_UNIT_PRICE,
4390 PRICE_FLAG,
4391 UOM_QUANTITY,
4392 LINE_ID,
4393 ROUNDING_FACTOR,
4394 UPDATED_ADJUSTED_UNIT_PRICE,
4395 PRICE_LIST_HEADER_ID,
4396 PRICE_REQUEST_CODE,
4397 USAGE_PRICING_TYPE,
4398 LINE_CATEGORY,
4399 CONTRACT_START_DATE,
4400 CONTRACT_END_DATE,
4401 CATCHWEIGHT_QTY,
4402 ACTUAL_ORDER_QUANTITY,
4403 LIST_PRICE_OVERRIDE_FLAG, --po integration
4404 CHARGE_PERIODICITY_CODE,
4405 ORDER_UOM_SELLING_PRICE
4406 )
4407 VALUES ( p_LINE_INDEX(i),
4408 p_LINE_TYPE_CODE(i),
4409 p_PRICING_EFFECTIVE_DATE(i),
4410 p_ACTIVE_DATE_FIRST(i),
4411 p_ACTIVE_DATE_FIRST_TYPE(i),
4412 p_ACTIVE_DATE_SECOND(i),
4413 p_ACTIVE_DATE_SECOND_TYPE(i),
4414 p_LINE_QUANTITY(i),
4415 p_LINE_UOM_CODE(i),
4416 p_REQUEST_TYPE_CODE(i),
4417 p_PRICED_QUANTITY(i),
4418 p_PRICED_UOM_CODE (i),
4419 p_CURRENCY_CODE(i),
4420 p_UNIT_PRICE (i),
4421 p_ADJUSTED_UNIT_PRICE(i),
4422 p_PRICE_FLAG(i),
4423 p_UOM_QUANTITY(i),
4424 p_LINE_ID(i),
4425 P_ROUNDING_FACTOR(i),
4426 p_UPD_ADJUSTED_UNIT_PRICE(i),
4427 nvl(p_PRICE_LIST_ID(i),-9999),
4428 p_PRICE_REQUEST_CODE(i),
4429 nvl(p_USAGE_PRICING_TYPE(i),'REGULAR'),
4430 p_LINE_CATEGORY(i),
4431 p_CONTRACT_START_DATE(i),
4432 p_CONTRACT_END_DATE(i),
4433 p_CATCHWEIGHT_QTY(i),
4434 p_ACTUAL_ORDER_QTY(i),
4435 nvl (p_LIST_PRICE_OVERRIDE_FLAG(i), 'N'),
4436 p_CHARGE_PERIODICITY_CODE,
4437 p_UNIT_PRICE(i)-- po integration
4438 );*/
4439 INSERT INTO QP_INT_LINES_t
4440 (LINE_INDEX,
4441 LINE_TYPE_CODE,
4442 PRICING_EFFECTIVE_DATE,
4443 START_DATE_ACTIVE_FIRST,
4444 ACTIVE_DATE_FIRST_TYPE,
4445 START_DATE_ACTIVE_SECOND,
4446 ACTIVE_DATE_SECOND_TYPE,
4447 LINE_QUANTITY,
4448 LINE_UOM_CODE,
4449 REQUEST_TYPE_CODE,
4450 PRICED_QUANTITY,
4451 PRICED_UOM_CODE,
4452 CURRENCY_CODE,
4453 UNIT_PRICE,
4454 ADJUSTED_UNIT_PRICE,
4455 PRICE_FLAG,
4456 UOM_QUANTITY,
4457 LINE_ID,
4458 ROUNDING_FACTOR,
4459 UPDATED_ADJUSTED_UNIT_PRICE,
4460 PRICE_LIST_HEADER_ID,
4461 PRICE_REQUEST_CODE,
4462 USAGE_PRICING_TYPE,
4463 LINE_CATEGORY,
4464 CONTRACT_START_DATE,
4465 CONTRACT_END_DATE,
4466 CATCHWEIGHT_QTY,
4467 ACTUAL_ORDER_QUANTITY,
4468 LIST_PRICE_OVERRIDE_FLAG, --po integration
4469 ORDER_UOM_SELLING_PRICE ,
4470 CHARGE_PERIODICITY_CODE,
4471 request_id
4472 )
4473 VALUES ( p_LINE_INDEX(i),
4474 p_LINE_TYPE_CODE(i),
4475 p_PRICING_EFFECTIVE_DATE(i),
4476 p_ACTIVE_DATE_FIRST(i),
4477 p_ACTIVE_DATE_FIRST_TYPE(i),
4478 p_ACTIVE_DATE_SECOND(i),
4479 p_ACTIVE_DATE_SECOND_TYPE(i),
4480 p_LINE_QUANTITY(i),
4481 p_LINE_UOM_CODE(i),
4482 p_REQUEST_TYPE_CODE(i),
4483 p_PRICED_QUANTITY(i),
4484 p_PRICED_UOM_CODE (i),
4485 p_CURRENCY_CODE(i),
4486 p_UNIT_PRICE (i),
4487 p_ADJUSTED_UNIT_PRICE(i),
4488 p_PRICE_FLAG(i),
4489 p_UOM_QUANTITY(i),
4490 p_LINE_ID(i),
4491 P_ROUNDING_FACTOR(i),
4492 p_UPD_ADJUSTED_UNIT_PRICE(i),
4493 nvl(p_PRICE_LIST_ID(i),-9999),
4494 p_PRICE_REQUEST_CODE(i),
4495 nvl(p_USAGE_PRICING_TYPE(i),'REGULAR'),
4496 p_LINE_CATEGORY(i),
4497 p_CONTRACT_START_DATE(i),
4498 p_CONTRACT_END_DATE(i),
4499 p_CATCHWEIGHT_QTY(i),
4500 p_ACTUAL_ORDER_QTY(i),
4501 nvl (p_LIST_PRICE_OVERRIDE_FLAG(i), 'N'),
4502 p_UNIT_PRICE(i), -- po integration
4503 p_CHARGE_PERIODICITY_CODE(i),
4504 l_request_id
4505 );
4506 QP_PREQ_GRP.G_INT_LINES_NO := QP_PREQ_GRP.G_INT_LINES_NO + p_LINE_INDEX.count;
4507 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4508 QP_PREQ_GRP.engine_debug('QP_PREQ_GRP.G_INT_LINES_NO='||QP_PREQ_GRP.G_INT_LINES_NO);
4509 END IF;
4510 COMMIT;
4511 EXCEPTION
4512 WHEN OTHERS THEN
4513 x_status_code := FND_API.G_RET_STS_ERROR;
4514 x_status_text :=l_routine||' '||SQLERRM;
4515 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4516 QP_PREQ_GRP.engine_debug(l_routine||' '||SQLERRM);
4517 END IF;
4518 END ;
4519
4520 /*+----------------------------------------------------------------------
4521 |Procedure Group INSERT_LINES2
4522 +----------------------------------------------------------------------
4523 */
4524
4525 PROCEDURE INSERT_LINES2
4526 (p_LINE_INDEX IN NUMBER_TYPE,
4527 p_LINE_TYPE_CODE IN VARCHAR_TYPE,
4528 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE ,
4529 p_ACTIVE_DATE_FIRST IN DATE_TYPE ,
4530 p_ACTIVE_DATE_FIRST_TYPE IN VARCHAR_TYPE,
4531 p_ACTIVE_DATE_SECOND IN DATE_TYPE ,
4532 p_ACTIVE_DATE_SECOND_TYPE IN VARCHAR_TYPE ,
4533 p_LINE_QUANTITY IN NUMBER_TYPE ,
4534 p_LINE_UOM_CODE IN VARCHAR_TYPE,
4535 p_REQUEST_TYPE_CODE IN VARCHAR_TYPE,
4536 p_PRICED_QUANTITY IN NUMBER_TYPE,
4537 p_PRICED_UOM_CODE IN VARCHAR_TYPE,
4538 p_CURRENCY_CODE IN VARCHAR_TYPE,
4539 p_UNIT_PRICE IN NUMBER_TYPE,
4540 p_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
4541 p_UPD_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
4542 p_UOM_QUANTITY IN NUMBER_TYPE,
4543 p_PRICE_FLAG IN VARCHAR_TYPE,
4544 p_LINE_ID IN NUMBER_TYPE,
4545 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
4546 p_PRICE_LIST_ID IN NUMBER_TYPE,
4547 p_PRICE_REQUEST_CODE IN VARCHAR_TYPE,
4548 p_USAGE_PRICING_TYPE IN VARCHAR_TYPE,
4549 p_LINE_CATEGORY IN VARCHAR_TYPE,
4550 p_CONTRACT_START_DATE IN DATE_TYPE,
4551 p_CONTRACT_END_DATE IN DATE_TYPE,
4552 p_CATCHWEIGHT_QTY IN NUMBER_TYPE,
4553 p_ACTUAL_ORDER_QTY IN NUMBER_TYPE,
4554 p_LIST_PRICE_OVERRIDE_FLAG IN VARCHAR_TYPE,
4555 p_charge_periodicity_code IN VARCHAR_3_TYPE,
4556 x_status_code OUT NOCOPY VARCHAR2,
4557 x_status_text OUT NOCOPY VARCHAR2 )
4558 AS
4559 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.INSERT_LINES2';
4560 --added by yangli for Java Engine project 3086881
4561 l_debug varchar2(3);
4562 BEGIN
4563 --added by yangli for Java Engine project 3086881
4564 -- Set the global variable G_DEBUG_ENGINE
4565 QP_PREQ_GRP.Set_QP_Debug;
4566
4567 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
4568
4569 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
4570 IF l_debug = FND_API.G_TRUE THEN
4571 ENGINE_DEBUG('Java Engine not Installed ----------');
4572 END IF;
4573 --added by yangli for Java Engine project 3086881
4574
4575 x_status_code := FND_API.G_RET_STS_SUCCESS;
4576
4577 FORALL i in p_line_index.FIRST..p_line_index.LAST
4578 INSERT INTO qp_npreq_lines_tmp
4579 (LINE_INDEX,
4580 LINE_TYPE_CODE,
4581 PRICING_EFFECTIVE_DATE,
4582 START_DATE_ACTIVE_FIRST,
4583 ACTIVE_DATE_FIRST_TYPE,
4584 START_DATE_ACTIVE_SECOND,
4585 ACTIVE_DATE_SECOND_TYPE,
4586 LINE_QUANTITY,
4587 LINE_UOM_CODE,
4588 REQUEST_TYPE_CODE,
4589 PRICED_QUANTITY,
4590 PRICED_UOM_CODE,
4591 CURRENCY_CODE,
4592 UNIT_PRICE,
4593 ADJUSTED_UNIT_PRICE,
4594 PRICE_FLAG,
4595 UOM_QUANTITY,
4596 LINE_ID,
4597 ROUNDING_FACTOR,
4598 UPDATED_ADJUSTED_UNIT_PRICE,
4599 PRICE_LIST_HEADER_ID,
4600 PRICE_REQUEST_CODE,
4601 USAGE_PRICING_TYPE,
4602 LINE_CATEGORY,
4603 CONTRACT_START_DATE,
4604 CONTRACT_END_DATE,
4605 CATCHWEIGHT_QTY,
4606 ACTUAL_ORDER_QUANTITY,
4607 LIST_PRICE_OVERRIDE_FLAG, --po integration
4608 CHARGE_PERIODICITY_CODE,
4609 ORDER_UOM_SELLING_PRICE
4610 )
4611 VALUES ( p_LINE_INDEX(i),
4612 p_LINE_TYPE_CODE(i),
4613 p_PRICING_EFFECTIVE_DATE(i),
4614 p_ACTIVE_DATE_FIRST(i),
4615 p_ACTIVE_DATE_FIRST_TYPE(i),
4616 p_ACTIVE_DATE_SECOND(i),
4617 p_ACTIVE_DATE_SECOND_TYPE(i),
4618 p_LINE_QUANTITY(i),
4619 p_LINE_UOM_CODE(i),
4620 p_REQUEST_TYPE_CODE(i),
4621 p_PRICED_QUANTITY(i),
4622 p_PRICED_UOM_CODE (i),
4623 p_CURRENCY_CODE(i),
4624 p_UNIT_PRICE (i),
4625 p_ADJUSTED_UNIT_PRICE(i),
4626 p_PRICE_FLAG(i),
4627 p_UOM_QUANTITY(i),
4628 p_LINE_ID(i),
4629 P_ROUNDING_FACTOR(i),
4630 p_UPD_ADJUSTED_UNIT_PRICE(i),
4631 nvl(p_PRICE_LIST_ID(i),-9999),
4632 p_PRICE_REQUEST_CODE(i),
4633 nvl(p_USAGE_PRICING_TYPE(i),'REGULAR'),
4634 p_LINE_CATEGORY(i),
4635 p_CONTRACT_START_DATE(i),
4636 p_CONTRACT_END_DATE(i),
4637 p_CATCHWEIGHT_QTY(i),
4638 p_ACTUAL_ORDER_QTY(i),
4639 nvl (p_LIST_PRICE_OVERRIDE_FLAG(i), 'N'),
4640 p_CHARGE_PERIODICITY_CODE(i),
4641 p_UNIT_PRICE(i)
4642 ); --po integration
4643 --added by yangli for Java Engine project 3086881
4644 ELSE
4645 IF l_debug = FND_API.G_TRUE THEN
4646 ENGINE_DEBUG('Java Engine Installed ----------');
4647 END IF;
4648 QP_PREQ_GRP.INSERT_LINES2_AT
4649 (p_LINE_INDEX ,
4650 p_LINE_TYPE_CODE ,
4651 p_PRICING_EFFECTIVE_DATE ,
4652 p_ACTIVE_DATE_FIRST ,
4653 p_ACTIVE_DATE_FIRST_TYPE ,
4654 p_ACTIVE_DATE_SECOND ,
4655 p_ACTIVE_DATE_SECOND_TYPE,
4656 p_LINE_QUANTITY ,
4657 p_LINE_UOM_CODE ,
4658 p_REQUEST_TYPE_CODE ,
4659 p_PRICED_QUANTITY ,
4660 p_PRICED_UOM_CODE ,
4661 p_CURRENCY_CODE ,
4662 p_UNIT_PRICE ,
4663 p_ADJUSTED_UNIT_PRICE ,
4664 p_UPD_ADJUSTED_UNIT_PRICE,
4665 p_UOM_QUANTITY ,
4666 p_PRICE_FLAG ,
4667 p_LINE_ID ,
4668 p_ROUNDING_FACTOR ,
4669 p_PRICE_LIST_ID ,
4670 p_PRICE_REQUEST_CODE ,
4671 p_USAGE_PRICING_TYPE ,
4672 p_LINE_CATEGORY ,
4673 p_CONTRACT_START_DATE ,
4674 p_CONTRACT_END_DATE ,
4675 p_CATCHWEIGHT_QTY ,
4676 p_ACTUAL_ORDER_QTY ,
4677 p_LIST_PRICE_OVERRIDE_FLAG, --po integration
4678 p_charge_periodicity_code,
4679 x_status_code ,
4680 x_status_text );
4681
4682 END IF;
4683 --added by yangli for Java Engine project 3086881
4684
4685 EXCEPTION
4686 WHEN OTHERS THEN
4687 x_status_code := FND_API.G_RET_STS_ERROR;
4688 x_status_text :=l_routine||' '||SQLERRM;
4689 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4690 engine_debug(l_routine||' '||SQLERRM);
4691 END IF;
4692 END ;
4693
4694 /*+-----------------------------------------------------------------------
4695 |PROCEDURE INSERT_LINES2_AT for bulk binding
4696 +-----------------------------------------------------------------------
4697 */
4698 PROCEDURE INSERT_LINES2_AT
4699 (p_LINE_INDEX IN PLS_INTEGER_TYPE,
4700 p_LINE_TYPE_CODE IN VARCHAR_TYPE,
4701 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE ,
4702 p_ACTIVE_DATE_FIRST IN DATE_TYPE ,
4703 p_ACTIVE_DATE_FIRST_TYPE IN VARCHAR_TYPE,
4704 p_ACTIVE_DATE_SECOND IN DATE_TYPE ,
4705 p_ACTIVE_DATE_SECOND_TYPE IN VARCHAR_TYPE ,
4706 p_LINE_QUANTITY IN NUMBER_TYPE ,
4707 p_LINE_UOM_CODE IN VARCHAR_TYPE,
4708 p_REQUEST_TYPE_CODE IN VARCHAR_TYPE,
4709 p_PRICED_QUANTITY IN NUMBER_TYPE,
4710 p_PRICED_UOM_CODE IN VARCHAR_TYPE,
4711 p_CURRENCY_CODE IN VARCHAR_TYPE,
4712 p_UNIT_PRICE IN NUMBER_TYPE,
4713 p_PERCENT_PRICE IN NUMBER_TYPE,
4714 p_UOM_QUANTITY IN NUMBER_TYPE,
4715 p_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
4716 p_UPD_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
4717 p_PROCESSED_FLAG IN VARCHAR_TYPE,
4718 p_PRICE_FLAG IN VARCHAR_TYPE,
4719 p_LINE_ID IN NUMBER_TYPE,
4720 p_PROCESSING_ORDER IN PLS_INTEGER_TYPE,
4721 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
4722 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE,
4723 p_ROUNDING_FLAG IN FLAG_TYPE,
4724 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
4725 p_QUALIFIERS_EXIST_FLAG IN VARCHAR_TYPE,
4726 p_PRICING_ATTRS_EXIST_FLAG IN VARCHAR_TYPE,
4727 p_PRICE_LIST_ID IN NUMBER_TYPE,
4728 p_VALIDATED_FLAG IN VARCHAR_TYPE,
4729 p_PRICE_REQUEST_CODE IN VARCHAR_TYPE,
4730 p_USAGE_PRICING_TYPE IN VARCHAR_TYPE,
4731 p_LINE_CATEGORY IN VARCHAR_TYPE,
4732 p_CONTRACT_START_DATE IN DATE_TYPE,
4733 p_CONTRACT_END_DATE IN DATE_TYPE,
4734 p_LINE_UNIT_PRICE IN NUMBER_TYPE,
4735 p_CATCHWEIGHT_QTY IN NUMBER_TYPE,
4736 p_ACTUAL_ORDER_QTY IN NUMBER_TYPE,
4737 p_LIST_PRICE_OVERRIDE_FLAG IN VARCHAR_TYPE,--po integration
4738 p_charge_periodicity_code IN VARCHAR_3_TYPE,
4739 x_status_code OUT NOCOPY VARCHAR2,
4740 x_status_text OUT NOCOPY VARCHAR2 )
4741 AS
4742 PRAGMA AUTONOMOUS_TRANSACTION;
4743 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.INSERT_LINES2_AT';
4744 l_request_id number;
4745 BEGIN
4746 x_status_code := FND_API.G_RET_STS_SUCCESS;
4747 l_request_id := nvl(SYS_CONTEXT('QP_CONTEXT','request_id'),-9999);
4748 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4749 QP_PREQ_GRP.engine_debug('Before bulk inserting lines...');
4750 QP_PREQ_GRP.engine_debug('line index size:'||p_line_index.count());
4751 END IF;
4752
4753 FORALL i in p_line_index.FIRST..p_line_index.LAST
4754 /*INSERT INTO QP_INT_LINES
4755 ( LINE_INDEX,
4756 LINE_TYPE_CODE,
4757 PRICING_EFFECTIVE_DATE,
4758 START_DATE_ACTIVE_FIRST,
4759 ACTIVE_DATE_FIRST_TYPE,
4760 START_DATE_ACTIVE_SECOND,
4761 ACTIVE_DATE_SECOND_TYPE,
4762 LINE_QUANTITY,
4763 LINE_UOM_CODE,
4764 REQUEST_TYPE_CODE,
4765 PRICED_QUANTITY,
4766 PRICED_UOM_CODE,
4767 CURRENCY_CODE,
4768 UNIT_PRICE,
4769 PERCENT_PRICE,
4770 UOM_QUANTITY,
4771 ADJUSTED_UNIT_PRICE,
4772 PROCESSED_FLAG,
4773 PRICE_FLAG,
4774 LINE_ID,
4775 PROCESSING_ORDER,
4776 ROUNDING_FLAG,
4777 ROUNDING_FACTOR,
4778 PRICING_STATUS_CODE,
4779 PRICING_STATUS_TEXT,
4780 UPDATED_ADJUSTED_UNIT_PRICE,
4781 QUALIFIERS_EXIST_FLAG,
4782 PRICING_ATTRS_EXIST_FLAG,
4783 PRICE_LIST_HEADER_ID,
4784 VALIDATED_FLAG,
4785 PRICE_REQUEST_CODE,
4786 USAGE_PRICING_TYPE,
4787 LINE_CATEGORY,
4788 CONTRACT_START_DATE, -- shulin
4789 CONTRACT_END_DATE, -- shulin
4790 LINE_UNIT_PRICE, -- shu_latest
4791 CATCHWEIGHT_QTY,
4792 ACTUAL_ORDER_QUANTITY,
4793 LIST_PRICE_OVERRIDE_FLAG, -- po integration
4794 CHARGE_PERIODICITY_CODE,
4795 ORDER_UOM_SELLING_PRICE)
4796 VALUES ( p_LINE_INDEX(i),
4797 p_LINE_TYPE_CODE(i),
4798 p_PRICING_EFFECTIVE_DATE(i),
4799 p_ACTIVE_DATE_FIRST(i),
4800 p_ACTIVE_DATE_FIRST_TYPE(i),
4801 p_ACTIVE_DATE_SECOND(i),
4802 p_ACTIVE_DATE_SECOND_TYPE(i),
4803 p_LINE_QUANTITY(i),
4804 p_LINE_UOM_CODE(i),
4805 p_REQUEST_TYPE_CODE(i),
4806 p_PRICED_QUANTITY(i),
4807 p_PRICED_UOM_CODE (i),
4808 p_CURRENCY_CODE(i),
4809 p_UNIT_PRICE (i),
4810 p_PERCENT_PRICE(i),
4811 p_UOM_QUANTITY(i),
4812 p_ADJUSTED_UNIT_PRICE(i),
4813 p_PROCESSED_FLAG(i),
4814 p_PRICE_FLAG(i),
4815 p_LINE_ID(i),
4816 P_PROCESSING_ORDER(i),
4817 P_ROUNDING_FLAG(i),
4818 P_ROUNDING_FACTOR(i),
4819 p_PRICING_STATUS_CODE(i),
4820 p_PRICING_STATUS_TEXT(i),
4821 p_UPD_ADJUSTED_UNIT_PRICE(i),
4822 nvl(p_QUALIFIERS_EXIST_FLAG(i),'N'),
4823 nvl(p_PRICING_ATTRS_EXIST_FLAG(i),'N'),
4824 nvl(p_PRICE_LIST_ID(i),-9999),
4825 nvl(p_VALIDATED_FLAG(i),'N'),
4826 p_PRICE_REQUEST_CODE(i),
4827 nvl(p_USAGE_PRICING_TYPE(i),'REGULAR'),
4828 G_LINE_CATEGORY_DEF_TBL(i),
4829 G_CONTRACT_START_DATE_DEF_TBL(i),
4830 G_CONTRACT_END_DATE_DEF_TBL(i),
4831 G_LINE_UNIT_PRICE_DEF_TBL(i),
4832 G_CATCHWEIGHT_QTY_DEF_TBL(i),
4833 G_ACTUAL_ORDER_QTY_DEF_TBL(i),
4834 NVL(p_LIST_PRICE_OVERRIDE_FLAG(i), 'N'), --po integration
4835 p_CHARGE_PERIODICITY_CODE(i),
4836 p_UNIT_PRICE(i)
4837 );*/
4838 INSERT INTO QP_INT_LINES_T
4839 ( LINE_INDEX,
4840 LINE_TYPE_CODE,
4841 PRICING_EFFECTIVE_DATE,
4842 START_DATE_ACTIVE_FIRST,
4843 ACTIVE_DATE_FIRST_TYPE,
4844 START_DATE_ACTIVE_SECOND,
4845 ACTIVE_DATE_SECOND_TYPE,
4846 LINE_QUANTITY,
4847 LINE_UOM_CODE,
4848 REQUEST_TYPE_CODE,
4849 PRICED_QUANTITY,
4850 PRICED_UOM_CODE,
4851 CURRENCY_CODE,
4852 UNIT_PRICE,
4853 PERCENT_PRICE,
4854 UOM_QUANTITY,
4855 ADJUSTED_UNIT_PRICE,
4856 PROCESSED_FLAG,
4857 PRICE_FLAG,
4858 LINE_ID,
4859 PROCESSING_ORDER,
4860 ROUNDING_FLAG,
4861 ROUNDING_FACTOR,
4862 PRICING_STATUS_CODE,
4863 PRICING_STATUS_TEXT,
4864 UPDATED_ADJUSTED_UNIT_PRICE,
4865 QUALIFIERS_EXIST_FLAG,
4866 PRICING_ATTRS_EXIST_FLAG,
4867 PRICE_LIST_HEADER_ID,
4868 VALIDATED_FLAG,
4869 PRICE_REQUEST_CODE,
4870 USAGE_PRICING_TYPE,
4871 LINE_CATEGORY,
4872 CONTRACT_START_DATE, -- shulin
4873 CONTRACT_END_DATE, -- shulin
4874 LINE_UNIT_PRICE, -- shu_latest
4875 CATCHWEIGHT_QTY,
4876 ACTUAL_ORDER_QUANTITY,
4877 LIST_PRICE_OVERRIDE_FLAG, -- po integration
4878 CHARGE_PERIODICITY_CODE,
4879 ORDER_UOM_SELLING_PRICE,
4880 request_id)
4881 VALUES ( p_LINE_INDEX(i),
4882 p_LINE_TYPE_CODE(i),
4883 p_PRICING_EFFECTIVE_DATE(i),
4884 p_ACTIVE_DATE_FIRST(i),
4885 p_ACTIVE_DATE_FIRST_TYPE(i),
4886 p_ACTIVE_DATE_SECOND(i),
4887 p_ACTIVE_DATE_SECOND_TYPE(i),
4888 p_LINE_QUANTITY(i),
4889 p_LINE_UOM_CODE(i),
4890 p_REQUEST_TYPE_CODE(i),
4891 p_PRICED_QUANTITY(i),
4892 p_PRICED_UOM_CODE (i),
4893 p_CURRENCY_CODE(i),
4894 p_UNIT_PRICE (i),
4895 p_PERCENT_PRICE(i),
4896 p_UOM_QUANTITY(i),
4897 p_ADJUSTED_UNIT_PRICE(i),
4898 p_PROCESSED_FLAG(i),
4899 p_PRICE_FLAG(i),
4900 p_LINE_ID(i),
4901 P_PROCESSING_ORDER(i),
4902 P_ROUNDING_FLAG(i),
4903 P_ROUNDING_FACTOR(i),
4904 p_PRICING_STATUS_CODE(i),
4905 p_PRICING_STATUS_TEXT(i),
4906 p_UPD_ADJUSTED_UNIT_PRICE(i),
4907 nvl(p_QUALIFIERS_EXIST_FLAG(i),'N'),
4908 nvl(p_PRICING_ATTRS_EXIST_FLAG(i),'N'),
4909 nvl(p_PRICE_LIST_ID(i),-9999),
4910 nvl(p_VALIDATED_FLAG(i),'N'),
4911 p_PRICE_REQUEST_CODE(i),
4912 nvl(p_USAGE_PRICING_TYPE(i),'REGULAR'),
4913 G_LINE_CATEGORY_DEF_TBL(i),
4914 G_CONTRACT_START_DATE_DEF_TBL(i), /* shulin */
4915 G_CONTRACT_END_DATE_DEF_TBL(i), /* shulin */
4916 G_LINE_UNIT_PRICE_DEF_TBL(i), /* shu_latest */
4917 G_CATCHWEIGHT_QTY_DEF_TBL(i),
4918 G_ACTUAL_ORDER_QTY_DEF_TBL(i),
4919 NVL(p_LIST_PRICE_OVERRIDE_FLAG(i), 'N'), --po integration
4920 p_CHARGE_PERIODICITY_CODE(i),
4921 p_UNIT_PRICE(i),
4922 l_request_id
4923 );
4924 QP_PREQ_GRP.G_INT_LINES_NO := QP_PREQ_GRP.G_INT_LINES_NO + p_LINE_INDEX.count;
4925 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4926 QP_PREQ_GRP.engine_debug('QP_PREQ_GRP.G_INT_LINES_NO='||QP_PREQ_GRP.G_INT_LINES_NO);
4927 END IF;
4928
4929 COMMIT;
4930
4931 EXCEPTION
4932 WHEN OTHERS THEN
4933 x_status_code := FND_API.G_RET_STS_ERROR;
4934 x_status_text :=l_routine||' '||SQLERRM;
4935 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
4936 QP_PREQ_GRP.engine_debug(l_routine||' '||SQLERRM);
4937 QP_PREQ_GRP.engine_debug(SQLERRM);
4938 END IF;
4939 END;
4940
4941 /*+-----------------------------------------------------------------------
4942 |PROCEDURE INSERT_LINES2 for bulk binding
4943 +-----------------------------------------------------------------------
4944 */
4945 PROCEDURE INSERT_LINES2
4946 (p_LINE_INDEX IN PLS_INTEGER_TYPE,
4947 p_LINE_TYPE_CODE IN VARCHAR_TYPE,
4948 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE ,
4949 p_ACTIVE_DATE_FIRST IN DATE_TYPE ,
4950 p_ACTIVE_DATE_FIRST_TYPE IN VARCHAR_TYPE,
4951 p_ACTIVE_DATE_SECOND IN DATE_TYPE ,
4952 p_ACTIVE_DATE_SECOND_TYPE IN VARCHAR_TYPE ,
4953 p_LINE_QUANTITY IN NUMBER_TYPE ,
4954 p_LINE_UOM_CODE IN VARCHAR_TYPE,
4955 p_REQUEST_TYPE_CODE IN VARCHAR_TYPE,
4956 p_PRICED_QUANTITY IN NUMBER_TYPE,
4957 p_PRICED_UOM_CODE IN VARCHAR_TYPE,
4958 p_CURRENCY_CODE IN VARCHAR_TYPE,
4959 p_UNIT_PRICE IN NUMBER_TYPE,
4960 p_PERCENT_PRICE IN NUMBER_TYPE,
4961 p_UOM_QUANTITY IN NUMBER_TYPE,
4962 p_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
4963 p_UPD_ADJUSTED_UNIT_PRICE IN NUMBER_TYPE,
4964 p_PROCESSED_FLAG IN VARCHAR_TYPE,
4965 p_PRICE_FLAG IN VARCHAR_TYPE,
4966 p_LINE_ID IN NUMBER_TYPE,
4967 p_PROCESSING_ORDER IN PLS_INTEGER_TYPE,
4968 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
4969 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE,
4970 p_ROUNDING_FLAG IN FLAG_TYPE,
4971 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
4972 p_QUALIFIERS_EXIST_FLAG IN VARCHAR_TYPE,
4973 p_PRICING_ATTRS_EXIST_FLAG IN VARCHAR_TYPE,
4974 p_PRICE_LIST_ID IN NUMBER_TYPE,
4975 p_VALIDATED_FLAG IN VARCHAR_TYPE,
4976 p_PRICE_REQUEST_CODE IN VARCHAR_TYPE,
4977 p_USAGE_PRICING_TYPE IN VARCHAR_TYPE,
4978 p_LINE_CATEGORY IN VARCHAR_TYPE,
4979 p_CONTRACT_START_DATE IN DATE_TYPE,
4980 p_CONTRACT_END_DATE IN DATE_TYPE,
4981 p_LINE_UNIT_PRICE IN NUMBER_TYPE,
4982 p_CATCHWEIGHT_QTY IN NUMBER_TYPE,
4983 p_ACTUAL_ORDER_QTY IN NUMBER_TYPE,
4984 p_LIST_PRICE_OVERRIDE_FLAG IN VARCHAR_TYPE, --po integration
4985 p_charge_periodicity_code IN VARCHAR_3_TYPE,
4986 x_status_code OUT NOCOPY VARCHAR2,
4987 x_status_text OUT NOCOPY VARCHAR2 )
4988 AS
4989 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.INSERT_LINES2';
4990 --added by yangli for Java Engine project
4991 l_debug varchar2(3);
4992 --added by yangli for Java Engine project
4993 BEGIN
4994 --added by yangli for Java Engine project
4995 -- Set the global variable G_DEBUG_ENGINE
4996 QP_PREQ_GRP.Set_QP_Debug;
4997
4998 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
4999 --added by yangli for Java Engine project
5000
5001 x_status_code := FND_API.G_RET_STS_SUCCESS;
5002
5003 -- Defaulting
5004 IF (p_line_category.count = 0) THEN -- p_line_category not passed at all
5005 FOR i in p_line_index.FIRST .. p_line_index.LAST
5006 LOOP
5007 G_LINE_CATEGORY_DEF_TBL(i) := NULL;
5008 END LOOP;
5009 ELSE
5010 FOR i in p_line_index.FIRST .. p_line_index.LAST
5011 LOOP
5012 G_LINE_CATEGORY_DEF_TBL(i) := p_LINE_CATEGORY(i);
5013 END LOOP;
5014 END IF;
5015
5016 -- shulin
5017 -- Defaulting
5018 IF (p_contract_start_date.count = 0) THEN -- p_contract_start_date not passed at all
5019 FOR i in p_line_index.FIRST .. p_line_index.LAST
5020 LOOP
5021 G_CONTRACT_START_DATE_DEF_TBL(i) := NULL;
5022 END LOOP;
5023 ELSE
5024 FOR i in p_line_index.FIRST .. p_line_index.LAST
5025 LOOP
5026 G_CONTRACT_START_DATE_DEF_TBL(i) := p_CONTRACT_START_DATE(i); /* shulin */
5027 END LOOP;
5028 END IF;
5029
5030 IF (p_contract_end_date.count = 0) THEN -- p_contract_end_date not passed at all
5031 FOR i in p_line_index.FIRST .. p_line_index.LAST
5032 LOOP
5033 G_CONTRACT_END_DATE_DEF_TBL(i) := NULL;
5034 END LOOP;
5035 ELSE
5036 FOR i in p_line_index.FIRST .. p_line_index.LAST
5037 LOOP
5038 G_CONTRACT_END_DATE_DEF_TBL(i) := p_CONTRACT_END_DATE(i); /* shulin */
5039 END LOOP;
5040 END IF;
5041
5042 IF (p_line_unit_price.count = 0) THEN -- p_line_unit_price not passed at all
5043 FOR i in p_line_index.FIRST .. p_line_index.LAST
5044 LOOP
5045 G_LINE_UNIT_PRICE_DEF_TBL(i) := NULL;
5046 END LOOP;
5047 ELSE
5048 FOR i in p_line_index.FIRST .. p_line_index.LAST
5049 LOOP
5050 G_LINE_UNIT_PRICE_DEF_TBL(i) := p_LINE_UNIT_PRICE(i); /* shu_latest */
5051 END LOOP;
5052 END IF;
5053
5054 IF (p_catchweight_qty.count = 0) THEN -- p_catchweight_qty not passed at all
5055 FOR i in p_line_index.FIRST .. p_line_index.LAST
5056 LOOP
5057 G_CATCHWEIGHT_QTY_DEF_TBL(i) := NULL;
5058 END LOOP;
5059 ELSE
5060 FOR i in p_line_index.FIRST .. p_line_index.LAST
5061 LOOP
5062 G_CATCHWEIGHT_QTY_DEF_TBL(i) := p_catchweight_qty(i); /* shu_latest */
5063 END LOOP;
5064 END IF;
5065
5066 IF (p_actual_order_qty.count = 0) THEN
5067 FOR i in p_line_index.FIRST .. p_line_index.LAST
5068 LOOP
5069 G_ACTUAL_ORDER_QTY_DEF_TBL(i) := NULL;
5070 END LOOP;
5071 ELSE
5072 FOR i in p_line_index.FIRST .. p_line_index.LAST
5073 LOOP
5074 G_ACTUAL_ORDER_QTY_DEF_TBL(i) := p_actual_order_qty(i);
5075 END LOOP;
5076 END IF;
5077
5078 -- start po integration
5079 IF (p_list_price_override_flag.count= 0)
5080 THEN
5081 FOR i in p_line_index.FIRST .. p_line_index.LAST
5082 LOOP
5083 G_LIST_PRICE_OVERRIDE_FLAG_TBL(i) := 'N';
5084 END LOOP;
5085 ELSE
5086 FOR i in p_line_index.FIRST .. p_line_index.LAST
5087 LOOP
5088 G_LIST_PRICE_OVERRIDE_FLAG_TBL(i) := nvl (p_list_price_override_flag(i), 'N');
5089 END LOOP;
5090 End IF;
5091 -- end po integration
5092
5093 IF (p_charge_periodicity_code.count = 0) THEN
5094 FOR i in p_line_index.FIRST .. p_line_index.LAST LOOP
5095 G_CHARGE_PERIODICITY_CODE_TBL(i) := NULL;
5096 END LOOP;
5097 ELSE
5098 FOR i in p_line_index.FIRST .. p_line_index.LAST LOOP
5099 G_CHARGE_PERIODICITY_CODE_TBL(i) := p_charge_periodicity_code(i);
5100 END LOOP;
5101 END IF;
5102
5103 --added by yangli for Java Engine project
5104 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
5105 IF l_debug = FND_API.G_TRUE THEN
5106 ENGINE_DEBUG('Java Engine not Installed ----------');
5107 END IF;
5108 --added by yangli for Java Engine project
5109
5110 FORALL i in p_line_index.FIRST..p_line_index.LAST
5111
5112 INSERT INTO qp_npreq_lines_tmp
5113 (LINE_INDEX,
5114 LINE_TYPE_CODE,
5115 PRICING_EFFECTIVE_DATE,
5116 START_DATE_ACTIVE_FIRST,
5117 ACTIVE_DATE_FIRST_TYPE,
5118 START_DATE_ACTIVE_SECOND,
5119 ACTIVE_DATE_SECOND_TYPE,
5120 LINE_QUANTITY,
5121 LINE_UOM_CODE,
5122 REQUEST_TYPE_CODE,
5123 PRICED_QUANTITY,
5124 PRICED_UOM_CODE,
5125 CURRENCY_CODE,
5126 UNIT_PRICE,
5127 PERCENT_PRICE,
5128 UOM_QUANTITY,
5129 ADJUSTED_UNIT_PRICE,
5130 PROCESSED_FLAG,
5131 PRICE_FLAG,
5132 LINE_ID,
5133 PROCESSING_ORDER,
5134 ROUNDING_FLAG,
5135 ROUNDING_FACTOR,
5136 PRICING_STATUS_CODE,
5137 PRICING_STATUS_TEXT,
5138 UPDATED_ADJUSTED_UNIT_PRICE,
5139 QUALIFIERS_EXIST_FLAG,
5140 PRICING_ATTRS_EXIST_FLAG,
5141 PRICE_LIST_HEADER_ID,
5142 VALIDATED_FLAG,
5143 PRICE_REQUEST_CODE,
5144 USAGE_PRICING_TYPE,
5145 LINE_CATEGORY,
5146 CONTRACT_START_DATE, -- shulin
5147 CONTRACT_END_DATE, -- shulin
5148 LINE_UNIT_PRICE, -- shu_latest
5149 CATCHWEIGHT_QTY,
5150 ACTUAL_ORDER_QUANTITY,
5151 LIST_PRICE_OVERRIDE_FLAG, -- po integration
5152 CHARGE_PERIODICITY_CODE,
5153 ORDER_UOM_SELLING_PRICE
5154 )
5155 VALUES ( p_LINE_INDEX(i),
5156 p_LINE_TYPE_CODE(i),
5157 p_PRICING_EFFECTIVE_DATE(i),
5158 p_ACTIVE_DATE_FIRST(i),
5159 p_ACTIVE_DATE_FIRST_TYPE(i),
5160 p_ACTIVE_DATE_SECOND(i),
5161 p_ACTIVE_DATE_SECOND_TYPE(i),
5162 p_LINE_QUANTITY(i),
5163 p_LINE_UOM_CODE(i),
5164 p_REQUEST_TYPE_CODE(i),
5165 p_PRICED_QUANTITY(i),
5166 p_PRICED_UOM_CODE (i),
5167 p_CURRENCY_CODE(i),
5168 p_UNIT_PRICE (i),
5169 p_PERCENT_PRICE(i),
5170 p_UOM_QUANTITY(i),
5171 p_ADJUSTED_UNIT_PRICE(i),
5172 p_PROCESSED_FLAG(i),
5173 p_PRICE_FLAG(i),
5174 p_LINE_ID(i),
5175 P_PROCESSING_ORDER(i),
5176 P_ROUNDING_FLAG(i),
5177 P_ROUNDING_FACTOR(i),
5178 p_PRICING_STATUS_CODE(i),
5179 p_PRICING_STATUS_TEXT(i),
5180 p_UPD_ADJUSTED_UNIT_PRICE(i),
5181 nvl(p_QUALIFIERS_EXIST_FLAG(i),'N'),
5182 nvl(p_PRICING_ATTRS_EXIST_FLAG(i),'N'),
5183 nvl(p_PRICE_LIST_ID(i),-9999),
5184 nvl(p_VALIDATED_FLAG(i),'N'),
5185 p_PRICE_REQUEST_CODE(i),
5186 nvl(p_USAGE_PRICING_TYPE(i),'REGULAR'),
5187 G_LINE_CATEGORY_DEF_TBL(i),
5188 G_CONTRACT_START_DATE_DEF_TBL(i), /* shulin */
5189 G_CONTRACT_END_DATE_DEF_TBL(i), /* shulin */
5190 G_LINE_UNIT_PRICE_DEF_TBL(i), /* shu_latest */
5191 G_CATCHWEIGHT_QTY_DEF_TBL(i),
5192 G_ACTUAL_ORDER_QTY_DEF_TBL(i),
5193 nvl (G_LIST_PRICE_OVERRIDE_FLAG_TBL(i), 'N'), -- po integration
5194 G_CHARGE_PERIODICITY_CODE_TBL(i),
5195 p_UNIT_PRICE(i)
5196 );
5197 --added by yangli for Java Engine project
5198 ELSE
5199 IF l_debug = FND_API.G_TRUE THEN
5200 ENGINE_DEBUG('Java Engine Installed ----------');
5201 END IF;
5202 QP_PREQ_GRP.INSERT_LINES2_AT(
5203 p_LINE_INDEX,
5204 p_LINE_TYPE_CODE ,
5205 p_PRICING_EFFECTIVE_DATE ,
5206 p_ACTIVE_DATE_FIRST ,
5207 p_ACTIVE_DATE_FIRST_TYPE ,
5208 p_ACTIVE_DATE_SECOND ,
5209 p_ACTIVE_DATE_SECOND_TYPE,
5210 p_LINE_QUANTITY ,
5211 p_LINE_UOM_CODE ,
5212 p_REQUEST_TYPE_CODE ,
5213 p_PRICED_QUANTITY ,
5214 p_PRICED_UOM_CODE ,
5215 p_CURRENCY_CODE ,
5216 p_UNIT_PRICE ,
5217 p_PERCENT_PRICE ,
5218 p_UOM_QUANTITY ,
5219 p_ADJUSTED_UNIT_PRICE ,
5220 p_UPD_ADJUSTED_UNIT_PRICE,
5221 p_PROCESSED_FLAG ,
5222 p_PRICE_FLAG ,
5223 p_LINE_ID ,
5224 p_PROCESSING_ORDER ,
5225 p_PRICING_STATUS_CODE ,
5226 p_PRICING_STATUS_TEXT ,
5227 p_ROUNDING_FLAG ,
5228 p_ROUNDING_FACTOR ,
5229 p_QUALIFIERS_EXIST_FLAG ,
5230 p_PRICING_ATTRS_EXIST_FLAG ,
5231 p_PRICE_LIST_ID ,
5232 p_VALIDATED_FLAG ,
5233 p_PRICE_REQUEST_CODE ,
5234 p_USAGE_PRICING_TYPE ,
5235 G_LINE_CATEGORY_DEF_TBL,
5236 G_CONTRACT_START_DATE_DEF_TBL,
5237 G_CONTRACT_END_DATE_DEF_TBL,
5238 G_LINE_UNIT_PRICE_DEF_TBL,
5239 G_CATCHWEIGHT_QTY_DEF_TBL,
5240 G_ACTUAL_ORDER_QTY_DEF_TBL,
5241 G_LIST_PRICE_OVERRIDE_FLAG_TBL, --po integration
5242 G_CHARGE_PERIODICITY_CODE_TBL,
5243 x_status_code ,
5244 x_status_text
5245 );
5246 END IF;
5247 --added by yangli for Java Engine project
5248
5249 G_LINE_CATEGORY_DEF_TBL.delete;
5250 G_CONTRACT_START_DATE_DEF_TBL.delete;
5251 G_CONTRACT_END_DATE_DEF_TBL.delete;
5252 G_LINE_UNIT_PRICE_DEF_TBL.delete;
5253 G_CATCHWEIGHT_QTY_DEF_TBL.delete;
5254 G_ACTUAL_ORDER_QTY_DEF_TBL.delete;
5255 G_LIST_PRICE_OVERRIDE_FLAG_TBL.delete;
5256 G_CHARGE_PERIODICITY_CODE_TBL.delete;
5257
5258 EXCEPTION
5259 WHEN OTHERS THEN
5260 x_status_code := FND_API.G_RET_STS_ERROR;
5261 x_status_text :=l_routine||' '||SQLERRM;
5262 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
5263 engine_debug(l_routine||' '||SQLERRM);
5264 engine_debug(SQLERRM);
5265 END IF;
5266 END;
5267
5268 /*+----------------------------------------------------------------------
5269 |Procedure INSERT_LDETS
5270 +----------------------------------------------------------------------
5271 */
5272 PROCEDURE INSERT_LDETS
5273 (p_LINE_DETAIL_index IN PLS_INTEGER,
5274 p_LINE_DETAIL_TYPE_CODE IN VARCHAR2,
5275 p_PRICE_BREAK_TYPE_CODE IN VARCHAR2:=NULL,
5276 p_LIST_PRICE IN NUMBER:=NULL,
5277 p_LINE_INDEX IN PLS_INTEGER,
5278 p_CREATED_FROM_LIST_HEADER_ID IN NUMBER,
5279 p_CREATED_FROM_LIST_LINE_ID IN NUMBER,
5280 p_CREATED_FROM_LIST_LINE_TYPE IN VARCHAR2,
5281 p_CREATED_FROM_LIST_TYPE_CODE IN VARCHAR2:=NULL,
5282 p_CREATED_FROM_SQL IN VARCHAR2:=NULL,
5283 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER:=NULL,
5284 P_PRICING_PHASE_ID IN PLS_INTEGER:=NULL,
5285 p_OPERAND_CALCULATION_CODE IN VARCHAR2:=NULL,
5286 p_OPERAND_VALUE IN VARCHAR2:=NULL,
5287 p_SUBSTITUTION_TYPE_CODE IN VARCHAR2:=NULL,
5288 p_SUBSTITUTION_VALUE_FROM IN VARCHAR2:=NULL,
5289 p_SUBSTITUTION_VALUE_TO IN VARCHAR2:=NULL,
5290 p_ASK_FOR_FLAG IN VARCHAR2:=NULL,
5291 p_PRICE_FORMULA_ID IN NUMBER:=NULL,
5292 p_PRICING_STATUS_CODE IN VARCHAR2,
5293 p_PRICING_STATUS_TEXT IN VARCHAR2:=NULL,
5294 p_PRODUCT_PRECEDENCE IN PLS_INTEGER:=NULL,
5295 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR2:=NULL,
5296 p_PROCESSED_FLAG IN VARCHAR2:=NULL,
5297 p_APPLIED_FLAG IN VARCHAR2:=NULL,
5298 p_AUTOMATIC_FLAG IN VARCHAR2:=NULL,
5299 p_OVERRIDE_FLAG IN VARCHAR2:=NULL,
5300 p_PRIMARY_UOM_FLAG IN VARCHAR2:=NULL,
5301 p_PRINT_ON_INVOICE_FLAG IN VARCHAR2:=NULL,
5302 p_MODIFIER_LEVEL_CODE IN VARCHAR2:=NULL,
5303 p_BENEFIT_QTY IN NUMBER:=NULL,
5304 p_BENEFIT_UOM_CODE IN VARCHAR2:=NULL,
5305 p_LIST_LINE_NO IN VARCHAR2:=NULL,
5306 p_ACCRUAL_FLAG IN VARCHAR2:=NULL,
5307 p_ACCRUAL_CONVERSION_RATE IN NUMBER:=NULL,
5308 p_ESTIM_ACCRUAL_RATE IN NUMBER:=NULL,
5309 p_RECURRING_FLAG IN VARCHAR2:=NULL,
5310 p_RECURRING_VALUE IN NUMBER:=NULL, -- block pricing
5311 p_SELECTED_VOLUME_ATTR IN VARCHAR2:=NULL,
5312 p_ROUNDING_FACTOR IN NUMBER:=NULL,
5313 p_SECONDARY_PRICELIST_IND IN VARCHAR2:=NULL,
5314 p_UPDATED_FLAG IN VARCHAR := NULL,
5315 p_PROCESS_CODE IN VARCHAR := NULL,
5316 p_CHARGE_TYPE_CODE IN VARCHAR := NULL,
5317 p_CHARGE_SUBTYPE_CODE IN VARCHAR := NULL,
5318 p_GROUP_QUANTITY IN NUMBER :=NULL,
5319 p_GROUP_AMOUNT IN NUMBER :=NULL,
5320 p_CALCULATION_CODE IN VARCHAR2 := NULL,
5321 p_CURRENCY_DETAIL_ID IN NUMBER :=NULL, /*vivek */
5322 p_CURRENCY_HEADER_ID IN NUMBER :=NULL, /*vivek */
5323 p_SELLING_ROUNDING_FACTOR IN NUMBER :=NULL, /*vivek */
5324 p_ORDER_CURRENCY IN VARCHAR := NULL, /*vivek */
5325 p_PRICING_EFFECTIVE_DATE IN DATE := NULL,/*vivek */
5326 p_BASE_CURRENCY_CODE IN VARCHAR := NULL,/*vivek */
5327 p_CHANGE_REASON_CODE IN VARCHAR2 := NULL,
5328 p_CHANGE_REASON_TEXT IN VARCHAR2 := NULL,
5329 p_LINE_QUANTITY IN NUMBER := NULL,
5330 p_BREAK_UOM_CODE IN VARCHAR2 := NULL, /* Proration */
5331 p_BREAK_UOM_CONTEXT IN VARCHAR2 := NULL, /* Proration */
5332 p_BREAK_UOM_ATTRIBUTE IN VARCHAR2 := NULL, /* Proration */
5333 x_status_code OUT NOCOPY VARCHAR2,
5334 x_status_text OUT NOCOPY VARCHAR2)
5335 AS
5336 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS';
5337 BEGIN
5338 INSERT INTO qp_npreq_ldets_tmp
5339 (LINE_DETAIL_INDEX,
5340 LINE_DETAIL_TYPE_CODE,
5341 PRICE_BREAK_TYPE_CODE,
5342 LINE_INDEX,
5343 CREATED_FROM_LIST_HEADER_ID,
5344 CREATED_FROM_LIST_LINE_ID,
5345 CREATED_FROM_LIST_LINE_TYPE,
5346 CREATED_FROM_LIST_TYPE_CODE,
5347 CREATED_FROM_SQL,
5348 PRICING_GROUP_SEQUENCE,
5349 PRICING_PHASE_ID,
5350 OPERAND_CALCULATION_CODE,
5351 OPERAND_VALUE,
5352 SUBSTITUTION_TYPE_CODE,
5353 SUBSTITUTION_VALUE_FROM,
5354 SUBSTITUTION_VALUE_TO,
5355 ASK_FOR_FLAG,
5356 PRICE_FORMULA_ID,
5357 PRICING_STATUS_CODE,
5358 PRICING_STATUS_TEXT,
5359 PRODUCT_PRECEDENCE,
5360 INCOMPATABILITY_GRP_CODE,
5361 PROCESSED_FLAG,
5362 APPLIED_FLAG,
5363 AUTOMATIC_FLAG,
5364 OVERRIDE_FLAG,
5365 PRINT_ON_INVOICE_FLAG,
5366 PRIMARY_UOM_FLAG,
5367 MODIFIER_LEVEL_CODE,
5368 BENEFIT_QTY,
5369 BENEFIT_UOM_CODE,
5370 LIST_LINE_NO,
5371 ACCRUAL_FLAG,
5372 ACCRUAL_CONVERSION_RATE,
5373 ESTIM_ACCRUAL_RATE,
5374 RECURRING_FLAG,
5375 RECURRING_VALUE, -- block pricing
5376 SELECTED_VOLUME_ATTR,
5377 ROUNDING_FACTOR,
5378 UPDATED_FLAG,
5379 PROCESS_CODE,
5380 CHARGE_TYPE_CODE,
5381 CHARGE_SUBTYPE_CODE,
5382 GROUP_QUANTITY,
5383 GROUP_AMOUNT,
5384 CALCULATION_CODE,
5385 CURRENCY_DETAIL_ID, /*vivek */
5386 CURRENCY_HEADER_ID, /*vivek */
5387 SELLING_ROUNDING_FACTOR, /*vivek */
5388 ORDER_CURRENCY, /*vivek */
5389 PRICING_EFFECTIVE_DATE,/*vivek */
5390 BASE_CURRENCY_CODE,/*vivek */
5391 CHANGE_REASON_CODE,
5392 CHANGE_REASON_TEXT,
5393 LINE_QUANTITY
5394 ,BREAK_UOM_CODE /* Proration */
5395 ,BREAK_UOM_CONTEXT /* Proration */
5396 ,BREAK_UOM_ATTRIBUTE /* Proration */
5397 )
5398 VALUES ( p_LINE_DETAIL_INDEX,
5399 p_LINE_DETAIL_TYPE_CODE,
5400 p_PRICE_BREAK_TYPE_CODE,
5401 p_LINE_INDEX,
5402 p_CREATED_FROM_LIST_HEADER_ID,
5403 p_CREATED_FROM_LIST_LINE_ID,
5404 p_CREATED_FROM_LIST_LINE_TYPE,
5405 p_CREATED_FROM_LIST_TYPE_CODE,
5406 p_CREATED_FROM_SQL,
5407 p_PRICING_GROUP_SEQUENCE,
5408 p_PRICING_PHASE_ID,
5409 p_OPERAND_CALCULATION_CODE,
5410 p_OPERAND_VALUE,
5411 p_SUBSTITUTION_TYPE_CODE,
5412 p_SUBSTITUTION_VALUE_FROM,
5413 p_SUBSTITUTION_VALUE_TO,
5414 p_ASK_FOR_FLAG,
5415 p_PRICE_FORMULA_ID,
5416 p_PRICING_STATUS_CODE,
5417 p_PRICING_STATUS_TEXT,
5418 p_PRODUCT_PRECEDENCE,
5419 p_INCOMPATABLILITY_GRP_CODE,
5420 p_PROCESSED_FLAG,
5421 p_APPLIED_FLAG,
5422 p_AUTOMATIC_FLAG,
5423 p_OVERRIDE_FLAG,
5424 p_PRINT_ON_INVOICE_FLAG,
5425 p_PRIMARY_UOM_FLAG,
5426 p_MODIFIER_LEVEL_CODE,
5427 p_BENEFIT_QTY,
5428 p_BENEFIT_UOM_CODE,
5429 p_LIST_LINE_NO,
5430 p_ACCRUAL_FLAG,
5431 p_ACCRUAL_CONVERSION_RATE,
5432 p_ESTIM_ACCRUAL_RATE,
5433 p_RECURRING_FLAG,
5434 p_RECURRING_VALUE, -- block pricing
5435 p_SELECTED_VOLUME_ATTR,
5436 p_ROUNDING_FACTOR,
5437 p_UPDATED_FLAG,
5438 nvl(p_PROCESS_CODE,G_STATUS_NEW),
5439 p_CHARGE_TYPE_CODE,
5440 p_CHARGE_SUBTYPE_CODE,
5441 p_GROUP_QUANTITY,
5442 p_GROUP_AMOUNT,
5443 p_CALCULATION_CODE,
5444 P_CURRENCY_DETAIL_ID, /*vivek */
5445 P_CURRENCY_HEADER_ID, /*vivek */
5446 P_SELLING_ROUNDING_FACTOR, /*vivek */
5447 P_ORDER_CURRENCY, /*vivek */
5448 P_PRICING_EFFECTIVE_DATE,/*vivek */
5449 P_BASE_CURRENCY_CODE,/*vivek */
5450 p_CHANGE_REASON_CODE,
5451 p_CHANGE_REASON_TEXT,
5452 p_LINE_QUANTITY
5453 ,p_BREAK_UOM_CODE /* Proration */
5454 ,p_BREAK_UOM_CONTEXT /* Proration */
5455 ,p_BREAK_UOM_ATTRIBUTE /* Proration */
5456 );
5457 EXCEPTION
5458 WHEN OTHERS THEN
5459 x_status_code := FND_API.G_RET_STS_ERROR;
5460 x_status_text :=l_routine||' '||SQLERRM;
5461 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
5462 engine_debug(l_routine||' '||SQLERRM);
5463 engine_debug(SQLERRM);
5464 END IF;
5465 END;
5466
5467 /*+----------------------------------------------------------------------
5468 |Procedure INSERT_LDETS_PRICE_LIST_PVT
5469 +----------------------------------------------------------------------
5470 */
5471 PROCEDURE INSERT_LDETS_PRICE_LIST_PVT
5472 (p_LINE_DETAIL_index IN PLS_INTEGER_TYPE,
5473 p_LINE_DETAIL_TYPE_CODE IN VARCHAR_TYPE,
5474 p_PRICE_BREAK_TYPE_CODE IN VARCHAR_TYPE,
5475 p_LINE_INDEX IN PLS_INTEGER_TYPE,
5476 p_CREATED_FROM_LIST_HEADER_ID IN NUMBER_TYPE,
5477 p_CREATED_FROM_LIST_LINE_ID IN NUMBER_TYPE,
5478 p_CREATED_FROM_LIST_LINE_TYPE IN VARCHAR_TYPE,
5479 p_CREATED_FROM_LIST_TYPE_CODE IN VARCHAR_TYPE,
5480 p_CREATED_FROM_SQL IN VARCHAR_TYPE,
5481 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER_TYPE,
5482 P_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
5483 p_OPERAND_CALCULATION_CODE IN VARCHAR_TYPE,
5484 p_OPERAND_VALUE IN VARCHAR_TYPE,
5485 p_PRICE_FORMULA_ID IN NUMBER_TYPE,
5486 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
5487 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE,
5488 p_PRODUCT_PRECEDENCE IN PLS_INTEGER_TYPE,
5489 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR_TYPE,
5490 p_PROCESSED_FLAG IN VARCHAR_TYPE,
5491 p_APPLIED_FLAG IN VARCHAR_TYPE,
5492 p_AUTOMATIC_FLAG IN VARCHAR_TYPE,
5493 p_PRIMARY_UOM_FLAG IN VARCHAR_TYPE,
5494 p_MODIFIER_LEVEL_CODE IN VARCHAR_TYPE,
5495 p_LIST_LINE_NO IN VARCHAR_TYPE,
5496 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
5497 p_BREAK_UOM_CODE IN VARCHAR_TYPE, /* Proration */
5498 p_BREAK_UOM_CONTEXT IN VARCHAR_TYPE, /* Proration */
5499 p_BREAK_UOM_ATTRIBUTE IN VARCHAR_TYPE, /* Proration */
5500 x_status_code OUT NOCOPY VARCHAR2,
5501 x_status_text OUT NOCOPY VARCHAR2)
5502 AS
5503 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS_PRICE_LIST_PVT';
5504
5505 BEGIN
5506
5507 FORALL i in p_line_index.FIRST..p_line_index.LAST
5508 INSERT INTO qp_npreq_ldets_tmp
5509 (LINE_DETAIL_INDEX,
5510 LINE_DETAIL_TYPE_CODE,
5511 PRICE_BREAK_TYPE_CODE,
5512 LINE_INDEX,
5513 CREATED_FROM_LIST_HEADER_ID,
5514 CREATED_FROM_LIST_LINE_ID,
5515 CREATED_FROM_LIST_LINE_TYPE,
5516 CREATED_FROM_LIST_TYPE_CODE,
5517 CREATED_FROM_SQL,
5518 PRICING_GROUP_SEQUENCE,
5519 PRICING_PHASE_ID,
5520 OPERAND_CALCULATION_CODE,
5521 OPERAND_VALUE,
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 PRIMARY_UOM_FLAG,
5531 MODIFIER_LEVEL_CODE,
5532 LIST_LINE_NO,
5533 PROCESS_CODE,
5534 ROUNDING_FACTOR
5535 ,BREAK_UOM_CODE /* Proration */
5536 ,BREAK_UOM_CONTEXT /* Proration */
5537 ,BREAK_UOM_ATTRIBUTE /* Proration */
5538 )
5539 VALUES ( p_LINE_DETAIL_INDEX(i),
5540 p_LINE_DETAIL_TYPE_CODE(i),
5541 p_PRICE_BREAK_TYPE_CODE(i),
5542 p_LINE_INDEX(i),
5543 p_CREATED_FROM_LIST_HEADER_ID(i),
5544 p_CREATED_FROM_LIST_LINE_ID(i),
5545 p_CREATED_FROM_LIST_LINE_TYPE(i),
5546 p_CREATED_FROM_LIST_TYPE_CODE(i),
5547 p_CREATED_FROM_SQL(i),
5548 p_PRICING_GROUP_SEQUENCE(i),
5549 p_PRICING_PHASE_ID(i),
5550 p_OPERAND_CALCULATION_CODE(i),
5551 p_OPERAND_VALUE(i),
5552 p_PRICE_FORMULA_ID(i),
5553 p_PRICING_STATUS_CODE(i),
5554 p_PRICING_STATUS_TEXT(i),
5555 p_PRODUCT_PRECEDENCE(i),
5556 p_INCOMPATABLILITY_GRP_CODE(i),
5557 p_PROCESSED_FLAG(i),
5558 p_APPLIED_FLAG(i),
5559 p_AUTOMATIC_FLAG(i),
5560 p_PRIMARY_UOM_FLAG(i),
5561 p_MODIFIER_LEVEL_CODE(i),
5562 p_LIST_LINE_NO(i),
5563 G_STATUS_NEW,
5564 p_ROUNDING_FACTOR(i)
5565 ,p_BREAK_UOM_CODE(i) /* Proration */
5566 ,p_BREAK_UOM_CONTEXT(i) /* Proration */
5567 ,p_BREAK_UOM_ATTRIBUTE(i) /* Proration */
5568 );
5569 EXCEPTION
5570 WHEN OTHERS THEN
5571 x_status_code := FND_API.G_RET_STS_ERROR;
5572 x_status_text :=l_routine||' '||SQLERRM;
5573 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
5574 engine_debug(l_routine||' '||SQLERRM);
5575 engine_debug(SQLERRM);
5576 END IF;
5577 END;
5578
5579 /*+----------------------------------------------------------------------
5580 |Procedure INSERT_LDETS_PRICE_LIST_MULT
5581 +----------------------------------------------------------------------
5582 */
5583 PROCEDURE INSERT_LDETS_PRICE_LIST_MULT
5584 (p_LINE_DETAIL_index IN PLS_INTEGER_TYPE,
5585 p_LINE_DETAIL_TYPE_CODE IN VARCHAR_TYPE,
5586 p_PRICE_BREAK_TYPE_CODE IN VARCHAR_TYPE,
5587 p_LINE_INDEX IN PLS_INTEGER_TYPE,
5588 p_CREATED_FROM_LIST_HEADER_ID IN NUMBER_TYPE,
5589 p_CREATED_FROM_LIST_LINE_ID IN NUMBER_TYPE,
5590 p_CREATED_FROM_LIST_LINE_TYPE IN VARCHAR_TYPE,
5591 p_CREATED_FROM_LIST_TYPE_CODE IN VARCHAR_TYPE,
5592 p_CREATED_FROM_SQL IN VARCHAR_TYPE,
5593 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER_TYPE,
5594 P_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
5595 p_OPERAND_CALCULATION_CODE IN VARCHAR_TYPE,
5596 p_OPERAND_VALUE IN VARCHAR_TYPE,
5597 p_PRICE_FORMULA_ID IN NUMBER_TYPE,
5598 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
5599 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE,
5600 p_PRODUCT_PRECEDENCE IN PLS_INTEGER_TYPE,
5601 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR_TYPE,
5602 p_PROCESSED_FLAG IN VARCHAR_TYPE,
5603 p_APPLIED_FLAG IN VARCHAR_TYPE,
5604 p_AUTOMATIC_FLAG IN VARCHAR_TYPE,
5605 p_PRIMARY_UOM_FLAG IN VARCHAR_TYPE,
5606 p_MODIFIER_LEVEL_CODE IN VARCHAR_TYPE,
5607 p_LIST_LINE_NO IN VARCHAR_TYPE,
5608 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
5609 p_CURRENCY_DETAIL_ID IN NUMBER_TYPE,
5610 p_CURRENCY_HEADER_ID IN NUMBER_TYPE,
5611 p_SELLING_ROUNDING_FACTOR IN NUMBER_TYPE,
5612 p_ORDER_CURRENCY IN VARCHAR_TYPE,
5613 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE,
5614 p_BASE_CURRENCY_CODE IN VARCHAR_TYPE,
5615 p_BREAK_UOM_CODE IN VARCHAR_TYPE, /* Proration */
5616 p_BREAK_UOM_CONTEXT IN VARCHAR_TYPE, /* Proration */
5617 p_BREAK_UOM_ATTRIBUTE IN VARCHAR_TYPE, /* Proration */
5618 x_status_code OUT NOCOPY VARCHAR2,
5619 x_status_text OUT NOCOPY VARCHAR2)
5620 AS
5621 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS_PRICE_LIST_MULT';
5622
5623 BEGIN
5624
5625 FORALL i in p_line_index.FIRST..p_line_index.LAST
5626 INSERT INTO qp_npreq_ldets_tmp
5627 (LINE_DETAIL_INDEX,
5628 LINE_DETAIL_TYPE_CODE,
5629 PRICE_BREAK_TYPE_CODE,
5630 LINE_INDEX,
5631 CREATED_FROM_LIST_HEADER_ID,
5632 CREATED_FROM_LIST_LINE_ID,
5633 CREATED_FROM_LIST_LINE_TYPE,
5634 CREATED_FROM_LIST_TYPE_CODE,
5635 CREATED_FROM_SQL,
5636 PRICING_GROUP_SEQUENCE,
5637 PRICING_PHASE_ID,
5638 OPERAND_CALCULATION_CODE,
5639 OPERAND_VALUE,
5640 PRICE_FORMULA_ID,
5641 PRICING_STATUS_CODE,
5642 PRICING_STATUS_TEXT,
5643 PRODUCT_PRECEDENCE,
5644 INCOMPATABILITY_GRP_CODE,
5645 PROCESSED_FLAG,
5646 APPLIED_FLAG,
5647 AUTOMATIC_FLAG,
5648 PRIMARY_UOM_FLAG,
5649 MODIFIER_LEVEL_CODE,
5650 LIST_LINE_NO,
5651 ROUNDING_FACTOR,
5652 CURRENCY_DETAIL_ID,
5653 CURRENCY_HEADER_ID,
5654 SELLING_ROUNDING_FACTOR,
5655 ORDER_CURRENCY,
5656 PRICING_EFFECTIVE_DATE,
5657 PROCESS_CODE,
5658 BASE_CURRENCY_CODE
5659 ,BREAK_UOM_CODE /* Proration */
5660 ,BREAK_UOM_CONTEXT /* Proration */
5661 ,BREAK_UOM_ATTRIBUTE /* Proration */
5662 )
5663 VALUES ( p_LINE_DETAIL_INDEX(i),
5664 p_LINE_DETAIL_TYPE_CODE(i),
5665 p_PRICE_BREAK_TYPE_CODE(i),
5666 p_LINE_INDEX(i),
5667 p_CREATED_FROM_LIST_HEADER_ID(i),
5668 p_CREATED_FROM_LIST_LINE_ID(i),
5669 p_CREATED_FROM_LIST_LINE_TYPE(i),
5670 p_CREATED_FROM_LIST_TYPE_CODE(i),
5671 p_CREATED_FROM_SQL(i),
5672 p_PRICING_GROUP_SEQUENCE(i),
5673 p_PRICING_PHASE_ID(i),
5674 p_OPERAND_CALCULATION_CODE(i),
5675 p_OPERAND_VALUE(i),
5676 p_PRICE_FORMULA_ID(i),
5677 p_PRICING_STATUS_CODE(i),
5678 p_PRICING_STATUS_TEXT(i),
5679 p_PRODUCT_PRECEDENCE(i),
5680 p_INCOMPATABLILITY_GRP_CODE(i),
5681 p_PROCESSED_FLAG(i),
5682 p_APPLIED_FLAG(i),
5683 p_AUTOMATIC_FLAG(i),
5684 p_PRIMARY_UOM_FLAG(i),
5685 p_MODIFIER_LEVEL_CODE(i),
5686 p_LIST_LINE_NO(i),
5687 p_ROUNDING_FACTOR(i),
5688 p_CURRENCY_DETAIL_ID(i),
5689 p_CURRENCY_HEADER_ID(i),
5690 p_SELLING_ROUNDING_FACTOR(i),
5691 p_ORDER_CURRENCY(i),
5692 p_PRICING_EFFECTIVE_DATE(i),
5693 G_STATUS_NEW,
5694 p_BASE_CURRENCY_CODE(i)
5695 ,p_BREAK_UOM_CODE(i) /* Proration */
5696 ,p_BREAK_UOM_CONTEXT(i) /* Proration */
5697 ,p_BREAK_UOM_ATTRIBUTE(i) /* Proration */
5698 );
5699
5700 EXCEPTION
5701 WHEN OTHERS THEN
5702 x_status_code := FND_API.G_RET_STS_ERROR;
5703 x_status_text :=l_routine||' '||SQLERRM;
5704 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
5705 engine_debug(l_routine||' '||SQLERRM);
5706 engine_debug(SQLERRM);
5707 END IF;
5708 END;
5709
5710 /*+----------------------------------------------------------------------
5711 |Procedure Group INSERT_LDETS2_AT
5712 +----------------------------------------------------------------------
5713 */
5714
5715 PROCEDURE INSERT_LDETS2_AT
5716 (p_LINE_DETAIL_INDEX IN PLS_INTEGER_TYPE,
5717 p_LINE_DETAIL_TYPE_CODE IN VARCHAR_TYPE,
5718 p_PRICE_BREAK_TYPE_CODE IN VARCHAR_TYPE,
5719 p_LINE_INDEX IN NUMBER_TYPE,
5720 p_LIST_HEADER_ID IN NUMBER_TYPE,
5721 p_LIST_LINE_ID IN NUMBER_TYPE,
5722 p_LIST_LINE_TYPE_CODE IN VARCHAR_TYPE,
5723 p_LIST_TYPE_CODE IN VARCHAR_TYPE,
5724 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER_TYPE,
5725 p_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
5726 p_OPERAND_CALCULATION_CODE IN VARCHAR_TYPE,
5727 p_OPERAND_VALUE IN VARCHAR_TYPE,
5728 p_SUBSTITUTION_TYPE_CODE IN VARCHAR_TYPE,
5729 p_SUBSTITUTION_VALUE_FROM IN VARCHAR_TYPE,
5730 p_SUBSTITUTION_VALUE_TO IN VARCHAR_TYPE,
5731 p_PRICE_FORMULA_ID IN NUMBER_TYPE,
5732 p_PRODUCT_PRECEDENCE IN PLS_INTEGER_TYPE,
5733 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR_TYPE,
5734 p_APPLIED_FLAG IN VARCHAR_TYPE,
5735 p_AUTOMATIC_FLAG IN VARCHAR_TYPE,
5736 p_OVERRIDE_FLAG IN VARCHAR_TYPE,
5737 p_MODIFIER_LEVEL_CODE IN VARCHAR_TYPE,
5738 p_BENEFIT_QTY IN NUMBER_TYPE,
5739 p_BENEFIT_UOM_CODE IN VARCHAR_TYPE,
5740 p_LIST_LINE_NO IN VARCHAR_TYPE,
5741 p_ACCRUAL_FLAG IN VARCHAR_TYPE,
5742 p_ACCRUAL_CONVERSION_RATE IN NUMBER_TYPE,
5743 p_ESTIM_ACCRUAL_RATE IN NUMBER_TYPE,
5744 p_CHARGE_TYPE_CODE IN VARCHAR_TYPE,
5745 p_CHARGE_SUBTYPE_CODE IN VARCHAR_TYPE,
5746 p_LINE_QUANTITY IN NUMBER_TYPE,
5747 p_UPDATED_FLAG IN VARCHAR_TYPE,
5748 p_CALCULATION_CODE IN VARCHAR_TYPE,
5749 p_CHANGE_REASON_CODE IN VARCHAR_TYPE,
5750 p_CHANGE_REASON_TEXT IN VARCHAR_TYPE,
5751 p_ACCUM_CONTEXT IN VARCHAR_TYPE, -- accum range break
5752 p_ACCUM_ATTRIBUTE IN VARCHAR_TYPE, -- accum range break
5753 p_ACCUM_FLAG IN VARCHAR_TYPE, -- accum range break
5754 p_BREAK_UOM_CODE IN VARCHAR_TYPE, /* Proration*/
5755 p_BREAK_UOM_CONTEXT IN VARCHAR_TYPE, /* Proration*/
5756 p_BREAK_UOM_ATTRIBUTE IN VARCHAR_TYPE, /* Proration*/
5757 x_status_code OUT NOCOPY VARCHAR2,
5758 x_status_text OUT NOCOPY VARCHAR2) AS
5759 PRAGMA AUTONOMOUS_TRANSACTION;
5760 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS2_AT';
5761 l_request_id number;
5762 BEGIN
5763 l_request_id := nvl(SYS_CONTEXT('QP_CONTEXT','request_id'),-9999);
5764 FORALL i in p_line_index.FIRST..p_line_index.LAST
5765 /*INSERT INTO QP_INT_LDETS
5766 (LINE_DETAIL_INDEX,
5767 LINE_DETAIL_TYPE_CODE,
5768 PRICE_BREAK_TYPE_CODE,
5769 LINE_INDEX,
5770 CREATED_FROM_LIST_HEADER_ID,
5771 CREATED_FROM_LIST_LINE_ID,
5772 CREATED_FROM_LIST_LINE_TYPE,
5773 CREATED_FROM_LIST_TYPE_CODE,
5774 PRICING_GROUP_SEQUENCE,
5775 PRICING_PHASE_ID,
5776 OPERAND_CALCULATION_CODE,
5777 OPERAND_VALUE,
5778 SUBSTITUTION_TYPE_CODE,
5779 SUBSTITUTION_VALUE_FROM,
5780 SUBSTITUTION_VALUE_TO,
5781 PRICE_FORMULA_ID,
5782 PRICING_STATUS_CODE,
5783 PRODUCT_PRECEDENCE,
5784 INCOMPATABILITY_GRP_CODE,
5785 APPLIED_FLAG,
5786 AUTOMATIC_FLAG,
5787 OVERRIDE_FLAG,
5788 MODIFIER_LEVEL_CODE,
5789 BENEFIT_QTY,
5790 BENEFIT_UOM_CODE,
5791 LIST_LINE_NO,
5792 ACCRUAL_FLAG,
5793 ACCRUAL_CONVERSION_RATE,
5794 ESTIM_ACCRUAL_RATE,
5795 CHARGE_TYPE_CODE,
5796 CHARGE_SUBTYPE_CODE,
5797 PROCESS_CODE,
5798 LINE_QUANTITY,
5799 UPDATED_FLAG, -- begin shu, fix Bug 2599822
5800 CALCULATION_CODE,
5801 CHANGE_REASON_CODE,
5802 CHANGE_REASON_TEXT,
5803 ACCUM_CONTEXT, -- accum range break
5804 ACCUM_ATTRIBUTE, -- accum range break
5805 ACCUM_ATTR_RUN_SRC_FLAG,
5806 BREAK_UOM_CODE,
5807 BREAK_UOM_CONTEXT,
5808 BREAK_UOM_ATTRIBUTE)
5809 VALUES (
5810 p_LINE_DETAIL_INDEX(i),
5811 'NULL',
5812 p_PRICE_BREAK_TYPE_CODE(i),
5813 p_LINE_INDEX(i),
5814 p_LIST_HEADER_ID(i),
5815 p_LIST_LINE_ID(i),
5816 p_LIST_LINE_TYPE_CODE(i),
5817 p_LIST_TYPE_CODE(i),
5818 p_PRICING_GROUP_SEQUENCE(i),
5819 p_PRICING_PHASE_ID(i),
5820 p_OPERAND_CALCULATION_CODE(i),
5821 p_OPERAND_VALUE(i),
5822 p_SUBSTITUTION_TYPE_CODE(i),
5823 p_SUBSTITUTION_VALUE_FROM(i),
5824 p_SUBSTITUTION_VALUE_TO(i),
5825 p_PRICE_FORMULA_ID(i),
5826 G_STATUS_NEW,
5827 p_PRODUCT_PRECEDENCE(i),
5828 p_INCOMPATABLILITY_GRP_CODE(i),
5829 p_APPLIED_FLAG(i),
5830 p_AUTOMATIC_FLAG(i),
5831 p_OVERRIDE_FLAG(i),
5832 p_MODIFIER_LEVEL_CODE(i),
5833 p_BENEFIT_QTY(i),
5834 p_BENEFIT_UOM_CODE(i),
5835 p_LIST_LINE_NO(i),
5836 p_ACCRUAL_FLAG(i),
5837 p_ACCRUAL_CONVERSION_RATE(i),
5838 p_ESTIM_ACCRUAL_RATE(i),
5839 p_CHARGE_TYPE_CODE(i),
5840 p_CHARGE_SUBTYPE_CODE(i),
5841 G_STATUS_NEW,
5842 p_LINE_QUANTITY(i),
5843 p_UPDATED_FLAG(i),
5844 p_CALCULATION_CODE(i),
5845 p_CHANGE_REASON_CODE(i),
5846 p_CHANGE_REASON_TEXT(i),
5847 p_ACCUM_CONTEXT(i), -- accum range break
5848 p_ACCUM_ATTRIBUTE(i), -- accum range break
5849 p_ACCUM_FLAG(i)
5850 ,p_BREAK_UOM_CODE(i)
5851 ,p_BREAK_UOM_CONTEXT(i)
5852 ,p_BREAK_UOM_ATTRIBUTE(i)
5853 );*/
5854 INSERT INTO QP_INT_LDETS_T
5855 (LINE_DETAIL_INDEX,
5856 LINE_DETAIL_TYPE_CODE,
5857 PRICE_BREAK_TYPE_CODE,
5858 LINE_INDEX,
5859 CREATED_FROM_LIST_HEADER_ID,
5860 CREATED_FROM_LIST_LINE_ID,
5861 CREATED_FROM_LIST_LINE_TYPE,
5862 CREATED_FROM_LIST_TYPE_CODE,
5863 PRICING_GROUP_SEQUENCE,
5864 PRICING_PHASE_ID,
5865 OPERAND_CALCULATION_CODE,
5866 OPERAND_VALUE,
5867 SUBSTITUTION_TYPE_CODE,
5868 SUBSTITUTION_VALUE_FROM,
5869 SUBSTITUTION_VALUE_TO,
5870 PRICE_FORMULA_ID,
5871 PRICING_STATUS_CODE,
5872 PRODUCT_PRECEDENCE,
5873 INCOMPATABILITY_GRP_CODE,
5874 APPLIED_FLAG,
5875 AUTOMATIC_FLAG,
5876 OVERRIDE_FLAG,
5877 MODIFIER_LEVEL_CODE,
5878 BENEFIT_QTY,
5879 BENEFIT_UOM_CODE,
5880 LIST_LINE_NO,
5881 ACCRUAL_FLAG,
5882 ACCRUAL_CONVERSION_RATE,
5883 ESTIM_ACCRUAL_RATE,
5884 CHARGE_TYPE_CODE,
5885 CHARGE_SUBTYPE_CODE,
5886 PROCESS_CODE,
5887 LINE_QUANTITY,
5888 UPDATED_FLAG, -- begin shu, fix Bug 2599822
5889 CALCULATION_CODE,
5890 CHANGE_REASON_CODE,
5891 CHANGE_REASON_TEXT,
5892 ACCUM_CONTEXT, -- accum range break
5893 ACCUM_ATTRIBUTE, -- accum range break
5894 ACCUM_ATTR_RUN_SRC_FLAG,
5895 BREAK_UOM_CODE, /* Proration */
5896 BREAK_UOM_CONTEXT, /* Proration */
5897 BREAK_UOM_ATTRIBUTE, /* Proration */
5898 request_id)
5899 VALUES (
5900 p_LINE_DETAIL_INDEX(i),
5901 'NULL',
5902 p_PRICE_BREAK_TYPE_CODE(i),
5903 p_LINE_INDEX(i),
5904 p_LIST_HEADER_ID(i),
5905 p_LIST_LINE_ID(i),
5906 p_LIST_LINE_TYPE_CODE(i),
5907 p_LIST_TYPE_CODE(i),
5908 p_PRICING_GROUP_SEQUENCE(i),
5909 p_PRICING_PHASE_ID(i),
5910 p_OPERAND_CALCULATION_CODE(i),
5911 p_OPERAND_VALUE(i),
5912 p_SUBSTITUTION_TYPE_CODE(i),
5913 p_SUBSTITUTION_VALUE_FROM(i),
5914 p_SUBSTITUTION_VALUE_TO(i),
5915 p_PRICE_FORMULA_ID(i),
5916 G_STATUS_NEW,
5917 p_PRODUCT_PRECEDENCE(i),
5918 p_INCOMPATABLILITY_GRP_CODE(i),
5919 p_APPLIED_FLAG(i),
5920 p_AUTOMATIC_FLAG(i),
5921 p_OVERRIDE_FLAG(i),
5922 p_MODIFIER_LEVEL_CODE(i),
5923 p_BENEFIT_QTY(i),
5924 p_BENEFIT_UOM_CODE(i),
5925 p_LIST_LINE_NO(i),
5926 p_ACCRUAL_FLAG(i),
5927 p_ACCRUAL_CONVERSION_RATE(i),
5928 p_ESTIM_ACCRUAL_RATE(i),
5929 p_CHARGE_TYPE_CODE(i),
5930 p_CHARGE_SUBTYPE_CODE(i),
5931 G_STATUS_NEW,
5932 p_LINE_QUANTITY(i),
5933 p_UPDATED_FLAG(i),
5934 p_CALCULATION_CODE(i),
5935 p_CHANGE_REASON_CODE(i),
5936 p_CHANGE_REASON_TEXT(i),
5937 p_ACCUM_CONTEXT(i), -- accum range break
5938 p_ACCUM_ATTRIBUTE(i), -- accum range break
5939 p_ACCUM_FLAG(i)
5940 ,p_BREAK_UOM_CODE(i) /* Proration */
5941 ,p_BREAK_UOM_CONTEXT(i) /* Proration */
5942 ,p_BREAK_UOM_ATTRIBUTE(i), /* Proration */
5943 l_request_id
5944 );
5945 QP_PREQ_GRP.G_INT_LDETS_NO := QP_PREQ_GRP.G_INT_LDETS_NO + p_LINE_DETAIL_INDEX.count;
5946 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
5947 QP_PREQ_GRP.engine_debug('QP_PREQ_GRP.G_INT_LDETS_NO='||QP_PREQ_GRP.G_INT_LDETS_NO);
5948 END IF;
5949
5950 COMMIT;
5951 EXCEPTION
5952 WHEN OTHERS THEN
5953 x_status_code := FND_API.G_RET_STS_ERROR;
5954 x_status_text :=l_routine||' '||SQLERRM;
5955 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
5956 QP_PREQ_GRP.engine_debug(l_routine||' '||SQLERRM);
5957 QP_PREQ_GRP.engine_debug(SQLERRM);
5958 END IF;
5959 END;
5960
5961 /*+----------------------------------------------------------------------
5962 |Procedure Group INSERT_LDETS2
5963 +----------------------------------------------------------------------
5964 */
5965
5966 PROCEDURE INSERT_LDETS2
5967 (p_LINE_DETAIL_INDEX IN PLS_INTEGER_TYPE,
5968 p_LINE_DETAIL_TYPE_CODE IN VARCHAR_TYPE,
5969 p_PRICE_BREAK_TYPE_CODE IN VARCHAR_TYPE,
5970 p_LINE_INDEX IN NUMBER_TYPE,
5971 p_LIST_HEADER_ID IN NUMBER_TYPE,
5972 p_LIST_LINE_ID IN NUMBER_TYPE,
5973 p_LIST_LINE_TYPE_CODE IN VARCHAR_TYPE,
5974 p_LIST_TYPE_CODE IN VARCHAR_TYPE,
5975 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER_TYPE,
5976 p_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
5977 p_OPERAND_CALCULATION_CODE IN VARCHAR_TYPE,
5978 p_OPERAND_VALUE IN VARCHAR_TYPE,
5979 p_SUBSTITUTION_TYPE_CODE IN VARCHAR_TYPE,
5980 p_SUBSTITUTION_VALUE_FROM IN VARCHAR_TYPE,
5981 p_SUBSTITUTION_VALUE_TO IN VARCHAR_TYPE,
5982 p_PRICE_FORMULA_ID IN NUMBER_TYPE,
5983 p_PRODUCT_PRECEDENCE IN PLS_INTEGER_TYPE,
5984 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR_TYPE,
5985 p_APPLIED_FLAG IN VARCHAR_TYPE,
5986 p_AUTOMATIC_FLAG IN VARCHAR_TYPE,
5987 p_OVERRIDE_FLAG IN VARCHAR_TYPE,
5988 p_MODIFIER_LEVEL_CODE IN VARCHAR_TYPE,
5989 p_BENEFIT_QTY IN NUMBER_TYPE,
5990 p_BENEFIT_UOM_CODE IN VARCHAR_TYPE,
5991 p_LIST_LINE_NO IN VARCHAR_TYPE,
5992 p_ACCRUAL_FLAG IN VARCHAR_TYPE,
5993 p_ACCRUAL_CONVERSION_RATE IN NUMBER_TYPE,
5994 p_ESTIM_ACCRUAL_RATE IN NUMBER_TYPE,
5995 p_CHARGE_TYPE_CODE IN VARCHAR_TYPE,
5996 p_CHARGE_SUBTYPE_CODE IN VARCHAR_TYPE,
5997 p_LINE_QUANTITY IN NUMBER_TYPE,
5998 p_UPDATED_FLAG IN VARCHAR_TYPE,
5999 p_CALCULATION_CODE IN VARCHAR_TYPE,
6000 p_CHANGE_REASON_CODE IN VARCHAR_TYPE,
6001 p_CHANGE_REASON_TEXT IN VARCHAR_TYPE,
6002 p_ACCUM_CONTEXT IN VARCHAR_TYPE, -- accum range break
6003 p_ACCUM_ATTRIBUTE IN VARCHAR_TYPE, -- accum range break
6004 p_ACCUM_FLAG IN VARCHAR_TYPE, -- accum range break
6005 p_BREAK_UOM_CODE IN VARCHAR_TYPE, /* Proration*/
6006 p_BREAK_UOM_CONTEXT IN VARCHAR_TYPE, /* Proration*/
6007 p_BREAK_UOM_ATTRIBUTE IN VARCHAR_TYPE, /* Proration*/
6008 x_status_code OUT NOCOPY VARCHAR2,
6009 x_status_text OUT NOCOPY VARCHAR2) AS
6010
6011 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS2';
6012 --added by yangli for Java Engine project
6013 l_debug varchar2(3);
6014 --added by yangli for Java Engine project
6015 BEGIN
6016 --added by yangli for Java Engine project
6017 -- Set the global variable G_DEBUG_ENGINE
6018 QP_PREQ_GRP.Set_QP_Debug;
6019
6020 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
6021
6022 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
6023 IF l_debug = FND_API.G_TRUE THEN
6024 ENGINE_DEBUG('Java Engine not Installed ----------');
6025 END IF;
6026 --added by yangli for Java Engine project
6027
6028 FORALL i in p_line_index.FIRST..p_line_index.LAST
6029 INSERT INTO qp_npreq_ldets_tmp
6030 (LINE_DETAIL_INDEX,
6031 LINE_DETAIL_TYPE_CODE,
6032 PRICE_BREAK_TYPE_CODE,
6033 LINE_INDEX,
6034 CREATED_FROM_LIST_HEADER_ID,
6035 CREATED_FROM_LIST_LINE_ID,
6036 CREATED_FROM_LIST_LINE_TYPE,
6037 CREATED_FROM_LIST_TYPE_CODE,
6038 PRICING_GROUP_SEQUENCE,
6039 PRICING_PHASE_ID,
6040 OPERAND_CALCULATION_CODE,
6041 OPERAND_VALUE,
6042 SUBSTITUTION_TYPE_CODE,
6043 SUBSTITUTION_VALUE_FROM,
6044 SUBSTITUTION_VALUE_TO,
6045 PRICE_FORMULA_ID,
6046 PRICING_STATUS_CODE,
6047 PRODUCT_PRECEDENCE,
6048 INCOMPATABILITY_GRP_CODE,
6049 APPLIED_FLAG,
6050 AUTOMATIC_FLAG,
6051 OVERRIDE_FLAG,
6052 MODIFIER_LEVEL_CODE,
6053 BENEFIT_QTY,
6054 BENEFIT_UOM_CODE,
6055 LIST_LINE_NO,
6056 ACCRUAL_FLAG,
6057 ACCRUAL_CONVERSION_RATE,
6058 ESTIM_ACCRUAL_RATE,
6059 CHARGE_TYPE_CODE,
6060 CHARGE_SUBTYPE_CODE,
6061 PROCESS_CODE,
6062 LINE_QUANTITY,
6063 UPDATED_FLAG, -- begin shu, fix Bug 2599822
6064 CALCULATION_CODE,
6065 CHANGE_REASON_CODE,
6066 CHANGE_REASON_TEXT,
6067 ACCUM_CONTEXT, -- accum range break
6068 ACCUM_ATTRIBUTE, -- accum range break
6069 ACCUM_ATTR_RUN_SRC_FLAG
6070 ,BREAK_UOM_CODE /* Proration */
6071 ,BREAK_UOM_CONTEXT /* Proration */
6072 ,BREAK_UOM_ATTRIBUTE /* Proration */
6073 )
6074 VALUES (
6075 p_LINE_DETAIL_INDEX(i),
6076 'NULL',
6077 p_PRICE_BREAK_TYPE_CODE(i),
6078 p_LINE_INDEX(i),
6079 p_LIST_HEADER_ID(i),
6080 p_LIST_LINE_ID(i),
6081 p_LIST_LINE_TYPE_CODE(i),
6082 p_LIST_TYPE_CODE(i),
6083 p_PRICING_GROUP_SEQUENCE(i),
6084 p_PRICING_PHASE_ID(i),
6085 p_OPERAND_CALCULATION_CODE(i),
6086 p_OPERAND_VALUE(i),
6087 p_SUBSTITUTION_TYPE_CODE(i),
6088 p_SUBSTITUTION_VALUE_FROM(i),
6089 p_SUBSTITUTION_VALUE_TO(i),
6090 p_PRICE_FORMULA_ID(i),
6091 G_STATUS_NEW,
6092 p_PRODUCT_PRECEDENCE(i),
6093 p_INCOMPATABLILITY_GRP_CODE(i),
6094 p_APPLIED_FLAG(i),
6095 p_AUTOMATIC_FLAG(i),
6096 p_OVERRIDE_FLAG(i),
6097 p_MODIFIER_LEVEL_CODE(i),
6098 p_BENEFIT_QTY(i),
6099 p_BENEFIT_UOM_CODE(i),
6100 p_LIST_LINE_NO(i),
6101 p_ACCRUAL_FLAG(i),
6102 p_ACCRUAL_CONVERSION_RATE(i),
6103 p_ESTIM_ACCRUAL_RATE(i),
6104 p_CHARGE_TYPE_CODE(i),
6105 p_CHARGE_SUBTYPE_CODE(i),
6106 G_STATUS_NEW,
6107 p_LINE_QUANTITY(i),
6108 p_UPDATED_FLAG(i),
6109 p_CALCULATION_CODE(i),
6110 p_CHANGE_REASON_CODE(i),
6111 p_CHANGE_REASON_TEXT(i),
6112 p_ACCUM_CONTEXT(i), -- accum range break
6113 p_ACCUM_ATTRIBUTE(i), -- accum range break
6114 p_ACCUM_FLAG(i)
6115 ,p_BREAK_UOM_CODE(i) /* Proration */
6116 ,p_BREAK_UOM_CONTEXT(i) /* Proration */
6117 ,p_BREAK_UOM_ATTRIBUTE(i) /* Proration */
6118 );
6119 --added by yangli for Java Engine project
6120 ELSE
6121 IF l_debug = FND_API.G_TRUE THEN
6122 ENGINE_DEBUG('Java Engine Installed ----------');
6123 END IF;
6124 QP_PREQ_GRP.INSERT_LDETS2_AT
6125 (p_LINE_DETAIL_INDEX ,
6126 p_LINE_DETAIL_TYPE_CODE ,
6127 p_PRICE_BREAK_TYPE_CODE ,
6128 p_LINE_INDEX ,
6129 p_LIST_HEADER_ID ,
6130 p_LIST_LINE_ID ,
6131 p_LIST_LINE_TYPE_CODE ,
6132 p_LIST_TYPE_CODE ,
6133 p_PRICING_GROUP_SEQUENCE ,
6134 p_PRICING_PHASE_ID ,
6135 p_OPERAND_CALCULATION_CODE ,
6136 p_OPERAND_VALUE ,
6137 p_SUBSTITUTION_TYPE_CODE ,
6138 p_SUBSTITUTION_VALUE_FROM ,
6139 p_SUBSTITUTION_VALUE_TO ,
6140 p_PRICE_FORMULA_ID ,
6141 p_PRODUCT_PRECEDENCE ,
6142 p_INCOMPATABLILITY_GRP_CODE ,
6143 p_APPLIED_FLAG ,
6144 p_AUTOMATIC_FLAG ,
6145 p_OVERRIDE_FLAG ,
6146 p_MODIFIER_LEVEL_CODE ,
6147 p_BENEFIT_QTY ,
6148 p_BENEFIT_UOM_CODE ,
6149 p_LIST_LINE_NO ,
6150
6151 p_ACCRUAL_FLAG ,
6152
6153 p_ACCRUAL_CONVERSION_RATE ,
6154 p_ESTIM_ACCRUAL_RATE ,
6155
6156 p_CHARGE_TYPE_CODE ,
6157 p_CHARGE_SUBTYPE_CODE ,
6158 p_LINE_QUANTITY ,
6159 p_UPDATED_FLAG ,
6160 p_CALCULATION_CODE ,
6161 p_CHANGE_REASON_CODE ,
6162 p_CHANGE_REASON_TEXT ,
6163 p_ACCUM_CONTEXT, -- accum range break
6164 p_ACCUM_ATTRIBUTE, -- accum range break
6165 p_ACCUM_FLAG,
6166 p_BREAK_UOM_CODE, /* Proration */
6167 p_BREAK_UOM_CONTEXT, /* Proration */
6168 p_BREAK_UOM_ATTRIBUTE, /* Proration */
6169 x_status_code ,
6170 x_status_text );
6171 END IF;
6172 --added by yangli for Java Engine project
6173
6174 EXCEPTION
6175 WHEN OTHERS THEN
6176 x_status_code := FND_API.G_RET_STS_ERROR;
6177 x_status_text :=l_routine||' '||SQLERRM;
6178 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
6179 engine_debug(l_routine||' '||SQLERRM);
6180 engine_debug(SQLERRM);
6181 END IF;
6182 END;
6183
6184 /*+----------------------------------------------------------------------
6185 |Procedure INSERT_LDETS_PVT
6186 +----------------------------------------------------------------------
6187 */
6188 PROCEDURE INSERT_LDETS_PVT
6189 (p_LINE_DETAIL_INDEX IN PLS_INTEGER_TYPE,
6190 p_LINE_DETAIL_TYPE_CODE IN VARCHAR_TYPE,
6191 p_PRICE_BREAK_TYPE_CODE IN VARCHAR_TYPE,
6192 p_LINE_INDEX IN PLS_INTEGER_TYPE,
6193 p_CREATED_FROM_LIST_HEADER_ID IN NUMBER_TYPE,
6194 p_CREATED_FROM_LIST_LINE_ID IN NUMBER_TYPE,
6195 p_CREATED_FROM_LIST_LINE_TYPE IN VARCHAR_TYPE,
6196 p_CREATED_FROM_LIST_TYPE_CODE IN VARCHAR_TYPE,
6197 p_CREATED_FROM_SQL IN VARCHAR_TYPE,
6198 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER_TYPE,
6199 P_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
6200 p_OPERAND_CALCULATION_CODE IN VARCHAR_TYPE,
6201 p_OPERAND_VALUE IN VARCHAR_TYPE,
6202 p_NET_AMOUNT_FLAG IN VARCHAR_TYPE, --2720717, net_amount
6203 p_ASK_FOR_FLAG IN VARCHAR_TYPE,
6204 p_PRICE_FORMULA_ID IN NUMBER_TYPE,
6205 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
6206 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE,
6207 p_PRODUCT_PRECEDENCE IN PLS_INTEGER_TYPE,
6208 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR_TYPE,
6209 p_PROCESSED_FLAG IN VARCHAR_TYPE,
6210 p_APPLIED_FLAG IN VARCHAR_TYPE,
6211 p_AUTOMATIC_FLAG IN VARCHAR_TYPE,
6212 p_OVERRIDE_FLAG IN VARCHAR_TYPE,
6213 p_PRIMARY_UOM_FLAG IN VARCHAR_TYPE,
6214 p_MODIFIER_LEVEL_CODE IN VARCHAR_TYPE,
6215 p_BENEFIT_QTY IN NUMBER_TYPE,
6216 p_BENEFIT_UOM_CODE IN VARCHAR_TYPE,
6217 p_LIST_LINE_NO IN VARCHAR_TYPE,
6218 p_ACCRUAL_FLAG IN VARCHAR_TYPE,
6219 p_ACCRUAL_CONVERSION_RATE IN NUMBER_TYPE,
6220 p_ESTIM_ACCRUAL_RATE IN NUMBER_TYPE,
6221 p_HEADER_LIMIT_EXISTS IN VARCHAR_TYPE,
6222 p_LINE_LIMIT_EXISTS IN VARCHAR_TYPE,
6223 p_CHARGE_TYPE_CODE IN VARCHAR_TYPE,
6224 p_CHARGE_SUBTYPE_CODE IN VARCHAR_TYPE,
6225 p_ACCUM_CONTEXT IN VARCHAR_TYPE, -- accum range break
6226 p_ACCUM_ATTRIBUTE IN VARCHAR_TYPE, -- accum range break
6227 p_ACCUM_FLAG IN VARCHAR_TYPE, -- accum range break
6228 x_status_code OUT NOCOPY VARCHAR2,
6229 x_status_text OUT NOCOPY VARCHAR2)
6230 AS
6231 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS_PVT';
6232
6233 BEGIN
6234
6235 FORALL i in p_line_index.FIRST..p_line_index.LAST
6236 INSERT INTO qp_npreq_ldets_tmp
6237 (LINE_DETAIL_INDEX,
6238 LINE_DETAIL_TYPE_CODE,
6239 PRICE_BREAK_TYPE_CODE,
6240 LINE_INDEX,
6241 CREATED_FROM_LIST_HEADER_ID,
6242 CREATED_FROM_LIST_LINE_ID,
6243 CREATED_FROM_LIST_LINE_TYPE,
6244 CREATED_FROM_LIST_TYPE_CODE,
6245 CREATED_FROM_SQL,
6246 PRICING_GROUP_SEQUENCE,
6247 PRICING_PHASE_ID,
6248 OPERAND_CALCULATION_CODE,
6249 OPERAND_VALUE,
6250 NET_AMOUNT_FLAG, --2720717, net_amount
6251 ASK_FOR_FLAG,
6252 PRICE_FORMULA_ID,
6253 PRICING_STATUS_CODE,
6254 PRICING_STATUS_TEXT,
6255 PRODUCT_PRECEDENCE,
6256 INCOMPATABILITY_GRP_CODE,
6257 PROCESSED_FLAG,
6258 APPLIED_FLAG,
6259 AUTOMATIC_FLAG,
6260 OVERRIDE_FLAG,
6261 PRIMARY_UOM_FLAG,
6262 MODIFIER_LEVEL_CODE,
6263 BENEFIT_QTY,
6264 BENEFIT_UOM_CODE,
6265 LIST_LINE_NO,
6266 ACCRUAL_FLAG,
6267 ACCRUAL_CONVERSION_RATE,
6268 ESTIM_ACCRUAL_RATE,
6269 HEADER_LIMIT_EXISTS,
6270 LINE_LIMIT_EXISTS,
6271 PROCESS_CODE,
6272 CHARGE_TYPE_CODE,
6273 CHARGE_SUBTYPE_CODE,
6274 ACCUM_CONTEXT,
6275 ACCUM_ATTRIBUTE,
6276 ACCUM_ATTR_RUN_SRC_FLAG)
6277 VALUES ( p_LINE_DETAIL_INDEX(i),
6278 p_LINE_DETAIL_TYPE_CODE(i),
6279 p_PRICE_BREAK_TYPE_CODE(i),
6280 p_LINE_INDEX(i),
6281 p_CREATED_FROM_LIST_HEADER_ID(i),
6282 p_CREATED_FROM_LIST_LINE_ID(i),
6283 p_CREATED_FROM_LIST_LINE_TYPE(i),
6284 p_CREATED_FROM_LIST_TYPE_CODE(i),
6285 p_CREATED_FROM_SQL(i),
6286 p_PRICING_GROUP_SEQUENCE(i),
6287 p_PRICING_PHASE_ID(i),
6288 p_OPERAND_CALCULATION_CODE(i),
6289 p_OPERAND_VALUE(i),
6290 p_NET_AMOUNT_FLAG(i), --2720717, net_amount
6291 p_ASK_FOR_FLAG(i),
6292 p_PRICE_FORMULA_ID(i),
6293 p_PRICING_STATUS_CODE(i),
6294 p_PRICING_STATUS_TEXT(i),
6295 p_PRODUCT_PRECEDENCE(i),
6296 p_INCOMPATABLILITY_GRP_CODE(i),
6297 p_PROCESSED_FLAG(i),
6298 p_APPLIED_FLAG(i),
6299 p_AUTOMATIC_FLAG(i),
6300 p_OVERRIDE_FLAG(i),
6301 p_PRIMARY_UOM_FLAG(i),
6302 p_MODIFIER_LEVEL_CODE(i),
6303 p_BENEFIT_QTY(i),
6304 p_BENEFIT_UOM_CODE(i),
6305 p_LIST_LINE_NO(i),
6306 p_ACCRUAL_FLAG(i),
6307 p_ACCRUAL_CONVERSION_RATE(i),
6308 p_ESTIM_ACCRUAL_RATE(i),
6309 decode(p_HEADER_LIMIT_EXISTS(i),'Y','Y',decode(p_LINE_LIMIT_EXISTS(i),'Y','Y','N')),
6310 p_LINE_LIMIT_EXISTS(i),
6311 G_STATUS_NEW,
6312 p_CHARGE_TYPE_CODE(i),
6313 p_CHARGE_SUBTYPE_CODE(i),
6314 p_ACCUM_CONTEXT(i),
6315 p_ACCUM_ATTRIBUTE(i),
6316 p_ACCUM_FLAG(i));
6317 EXCEPTION
6318 WHEN OTHERS THEN
6319 x_status_code := FND_API.G_RET_STS_ERROR;
6320 x_status_text :=l_routine||' '||SQLERRM;
6321 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
6322 engine_debug(l_routine||' '||SQLERRM);
6323 engine_debug(SQLERRM);
6324 END IF;
6325 END;
6326
6327 /*+----------------------------------------------------------------------
6328 |Procedure Public INSERT_LDETS2_AT
6329 +----------------------------------------------------------------------
6330 */
6331 PROCEDURE INSERT_LDETS2_AT
6332 (p_LINE_DETAIL_index IN PLS_INTEGER_TYPE,
6333 p_LINE_DETAIL_TYPE_CODE IN VARCHAR_TYPE,
6334 p_PRICE_BREAK_TYPE_CODE IN VARCHAR_TYPE,
6335 p_LIST_PRICE IN NUMBER_TYPE,
6336 p_LINE_INDEX IN PLS_INTEGER_TYPE,
6337 p_CREATED_FROM_LIST_HEADER_ID IN NUMBER_TYPE,
6338 p_CREATED_FROM_LIST_LINE_ID IN NUMBER_TYPE,
6339 p_CREATED_FROM_LIST_LINE_TYPE IN VARCHAR_TYPE,
6340 p_CREATED_FROM_LIST_TYPE_CODE IN VARCHAR_TYPE,
6341 p_CREATED_FROM_SQL IN VARCHAR_TYPE,
6342 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER_TYPE,
6343 P_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
6344 p_OPERAND_CALCULATION_CODE IN VARCHAR_TYPE,
6345 p_OPERAND_VALUE IN VARCHAR_TYPE,
6346 p_SUBSTITUTION_TYPE_CODE IN VARCHAR_TYPE,
6347 p_SUBSTITUTION_VALUE_FROM IN VARCHAR_TYPE,
6348 p_SUBSTITUTION_VALUE_TO IN VARCHAR_TYPE,
6349 p_ASK_FOR_FLAG IN VARCHAR_TYPE,
6350 p_PRICE_FORMULA_ID IN NUMBER_TYPE,
6351 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
6352 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE,
6353 p_PRODUCT_PRECEDENCE IN PLS_INTEGER_TYPE,
6354 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR_TYPE,
6355 p_PROCESSED_FLAG IN VARCHAR_TYPE,
6356 p_APPLIED_FLAG IN VARCHAR_TYPE,
6357 p_AUTOMATIC_FLAG IN VARCHAR_TYPE,
6358 p_OVERRIDE_FLAG IN VARCHAR_TYPE,
6359 p_PRIMARY_UOM_FLAG IN VARCHAR_TYPE,
6360 p_PRINT_ON_INVOICE_FLAG IN VARCHAR_TYPE,
6361 p_MODIFIER_LEVEL_CODE IN VARCHAR_TYPE,
6362 p_BENEFIT_QTY IN NUMBER_TYPE,
6363 p_BENEFIT_UOM_CODE IN VARCHAR_TYPE,
6364 p_LIST_LINE_NO IN VARCHAR_TYPE,
6365 p_ACCRUAL_FLAG IN VARCHAR_TYPE,
6366 p_ACCRUAL_CONVERSION_RATE IN NUMBER_TYPE,
6367 p_ESTIM_ACCRUAL_RATE IN NUMBER_TYPE,
6368 p_RECURRING_FLAG IN VARCHAR_TYPE,
6369 p_SELECTED_VOLUME_ATTR IN VARCHAR_TYPE,
6370 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
6371 p_HEADER_LIMIT_EXISTS IN VARCHAR_TYPE,
6372 p_LINE_LIMIT_EXISTS IN VARCHAR_TYPE,
6373 p_CHARGE_TYPE_CODE IN VARCHAR_TYPE,
6374 p_CHARGE_SUBTYPE_CODE IN VARCHAR_TYPE,
6375 p_CURRENCY_DETAIL_ID IN NUMBER_TYPE,
6376 p_CURRENCY_HEADER_ID IN NUMBER_TYPE,
6377 p_SELLING_ROUNDING_FACTOR IN NUMBER_TYPE,
6378 p_ORDER_CURRENCY IN VARCHAR_TYPE,
6379 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE,
6380 p_BASE_CURRENCY_CODE IN VARCHAR_TYPE,
6381 p_LINE_QUANTITY IN NUMBER_TYPE,
6382 p_UPDATED_FLAG IN VARCHAR_TYPE,
6383 p_CALCULATION_CODE IN VARCHAR_TYPE,
6384 p_CHANGE_REASON_CODE IN VARCHAR_TYPE,
6385 p_CHANGE_REASON_TEXT IN VARCHAR_TYPE,
6386 p_PRICE_ADJUSTMENT_ID IN NUMBER_TYPE, -- bug 3099847
6387 p_ACCUM_CONTEXT IN VARCHAR_TYPE, -- accum range break
6388 p_ACCUM_ATTRIBUTE IN VARCHAR_TYPE, -- accum range break
6389 p_ACCUM_FLAG IN VARCHAR_TYPE, -- accum range break
6390 p_BREAK_UOM_CODE IN VARCHAR_TYPE, /* Proration*/
6391 p_BREAK_UOM_CONTEXT IN VARCHAR_TYPE, /* Proration*/
6392 p_BREAK_UOM_ATTRIBUTE IN VARCHAR_TYPE, /* Proration*/
6393 p_PROCESS_CODE IN VARCHAR_TYPE, -- 3215497
6394 x_status_code OUT NOCOPY VARCHAR2,
6395 x_status_text OUT NOCOPY VARCHAR2)
6396 AS
6397 PRAGMA AUTONOMOUS_TRANSACTION;
6398 l_request_id number;
6399 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS2';
6400 BEGIN
6401 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
6402 QP_PREQ_GRP.engine_debug('G_LINE_DETAIL_INDEX b4 insert_ldets2 '||G_LINE_DETAIL_INDEX);
6403 QP_PREQ_GRP.engine_debug('current request_id: '||sys_context('qp_context','request_id'));
6404 END IF;
6405 l_request_id := nvl(SYS_CONTEXT('QP_CONTEXT','request_id'),-9999);
6406
6407 FORALL i in p_line_index.FIRST..p_line_index.LAST
6408 INSERT INTO QP_INT_LDETS_T
6409 ( LINE_DETAIL_INDEX,
6410 LINE_DETAIL_TYPE_CODE,
6411 PRICE_BREAK_TYPE_CODE,
6412 LINE_INDEX,
6413 CREATED_FROM_LIST_HEADER_ID,
6414 CREATED_FROM_LIST_LINE_ID,
6415 CREATED_FROM_LIST_LINE_TYPE,
6416 CREATED_FROM_LIST_TYPE_CODE,
6417 CREATED_FROM_SQL,
6418 PRICING_GROUP_SEQUENCE,
6419 PRICING_PHASE_ID,
6420 OPERAND_CALCULATION_CODE,
6421 OPERAND_VALUE,
6422 SUBSTITUTION_TYPE_CODE,
6423 SUBSTITUTION_VALUE_FROM,
6424 SUBSTITUTION_VALUE_TO,
6425 ASK_FOR_FLAG,
6426 PRICE_FORMULA_ID,
6427 PRICING_STATUS_CODE,
6428 PRICING_STATUS_TEXT,
6429 PRODUCT_PRECEDENCE,
6430 INCOMPATABILITY_GRP_CODE,
6431 PROCESSED_FLAG,
6432 APPLIED_FLAG,
6433 AUTOMATIC_FLAG,
6434 OVERRIDE_FLAG,
6435 PRINT_ON_INVOICE_FLAG,
6436 PRIMARY_UOM_FLAG,
6437 MODIFIER_LEVEL_CODE,
6438 BENEFIT_QTY,
6439 BENEFIT_UOM_CODE,
6440 LIST_LINE_NO,
6441 ACCRUAL_FLAG,
6442 ACCRUAL_CONVERSION_RATE,
6443 ESTIM_ACCRUAL_RATE,
6444 RECURRING_FLAG,
6445 SELECTED_VOLUME_ATTR,
6446 ROUNDING_FACTOR,
6447 HEADER_LIMIT_EXISTS,
6448 LINE_LIMIT_EXISTS,
6449 CHARGE_TYPE_CODE,
6450 CHARGE_SUBTYPE_CODE,
6451 CURRENCY_DETAIL_ID, /*sunilpandey */
6452 CURRENCY_HEADER_ID, /*vivek */
6453 SELLING_ROUNDING_FACTOR, /*vivek */
6454 ORDER_CURRENCY, /*vivek */
6455 PRICING_EFFECTIVE_DATE,/*vivek */
6456 BASE_CURRENCY_CODE,/*vivek */
6457 PROCESS_CODE,
6458 LINE_QUANTITY,
6459 UPDATED_FLAG, -- begin shu fix bug 2599822
6460 CALCULATION_CODE,
6461 CHANGE_REASON_CODE,
6462 CHANGE_REASON_TEXT, -- end shu fix bug 2599822
6463 PRICE_ADJUSTMENT_ID, -- bug 3099847
6464 ACCUM_CONTEXT, -- accum range break
6465 ACCUM_ATTRIBUTE, -- accum range break
6466 ACCUM_ATTR_RUN_SRC_FLAG, -- accum range break
6467 BREAK_UOM_CODE, /* Proration */
6468 BREAK_UOM_CONTEXT, /* Proration */
6469 BREAK_UOM_ATTRIBUTE, /* Proration */
6470 request_id
6471 )
6472 VALUES ( p_LINE_DETAIL_INDEX(i),
6473 p_LINE_DETAIL_TYPE_CODE(i),
6474 p_PRICE_BREAK_TYPE_CODE(i),
6475 p_LINE_INDEX(i),
6476 p_CREATED_FROM_LIST_HEADER_ID(i),
6477 p_CREATED_FROM_LIST_LINE_ID(i),
6478 p_CREATED_FROM_LIST_LINE_TYPE(i),
6479 p_CREATED_FROM_LIST_TYPE_CODE(i),
6480 p_CREATED_FROM_SQL(i),
6481 p_PRICING_GROUP_SEQUENCE(i),
6482 p_PRICING_PHASE_ID(i),
6483 p_OPERAND_CALCULATION_CODE(i),
6484 p_OPERAND_VALUE(i),
6485 p_SUBSTITUTION_TYPE_CODE(i),
6486 p_SUBSTITUTION_VALUE_FROM(i),
6487 p_SUBSTITUTION_VALUE_TO(i),
6488 p_ASK_FOR_FLAG(i),
6489 p_PRICE_FORMULA_ID(i),
6490 p_PRICING_STATUS_CODE(i),
6491 p_PRICING_STATUS_TEXT(i),
6492 p_PRODUCT_PRECEDENCE(i),
6493 p_INCOMPATABLILITY_GRP_CODE(i),
6494 p_PROCESSED_FLAG(i),
6495 p_APPLIED_FLAG(i),
6496 p_AUTOMATIC_FLAG(i),
6497 p_OVERRIDE_FLAG(i),
6498 p_PRINT_ON_INVOICE_FLAG(i),
6499 p_PRIMARY_UOM_FLAG(i),
6500 p_MODIFIER_LEVEL_CODE(i),
6501 p_BENEFIT_QTY(i),
6502 p_BENEFIT_UOM_CODE(i),
6503 p_LIST_LINE_NO(i),
6504 p_ACCRUAL_FLAG(i),
6505 p_ACCRUAL_CONVERSION_RATE(i),
6506 p_ESTIM_ACCRUAL_RATE(i),
6507 p_RECURRING_FLAG(i),
6508 p_SELECTED_VOLUME_ATTR(i),
6509 p_ROUNDING_FACTOR(i),
6510 decode(p_HEADER_LIMIT_EXISTS(i),'Y','Y',decode(p_LINE_LIMIT_EXISTS(i),'Y','Y','N')),
6511 p_LINE_LIMIT_EXISTS(i),
6512 p_CHARGE_TYPE_CODE(i),
6513 p_CHARGE_SUBTYPE_CODE(i),
6514 p_CURRENCY_DETAIL_ID(i), /* sunilpandey */
6515 p_CURRENCY_HEADER_ID(i), /* vivek */
6516 p_SELLING_ROUNDING_FACTOR(i), /* vivek */
6517 p_ORDER_CURRENCY(i), /* vivek */
6518 p_PRICING_EFFECTIVE_DATE(i), /* vivek */
6519 p_BASE_CURRENCY_CODE(i), /* vivek */
6520 p_PROCESS_CODE(i), -- 3215497, changed from G_STATUS_NEW
6521 p_LINE_QUANTITY(i),
6522 p_UPDATED_FLAG(i), -- begin shu fix bug 2599822
6523 p_CALCULATION_CODE(i),
6524 p_CHANGE_REASON_CODE(i),
6525 p_CHANGE_REASON_TEXT(i), -- end shu fix bug 2599822
6526 p_PRICE_ADJUSTMENT_ID(i), -- bug 3099847
6527 p_ACCUM_CONTEXT(i), -- accum range break
6528 p_ACCUM_ATTRIBUTE(i), -- accum range break
6529 p_ACCUM_FLAG(i), -- accum range break
6530 p_BREAK_UOM_CODE(i), /* Proration */
6531 p_BREAK_UOM_CONTEXT(i), /* Proration */
6532 p_BREAK_UOM_ATTRIBUTE(i), /* Proration */
6533 l_request_id
6534 );
6535 QP_PREQ_GRP.G_INT_LDETS_NO := QP_PREQ_GRP.G_INT_LDETS_NO + p_LINE_DETAIL_INDEX.count;
6536 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
6537 QP_PREQ_GRP.engine_debug('QP_PREQ_GRP.G_INT_LDETS_NO='||QP_PREQ_GRP.G_INT_LDETS_NO);
6538 END IF;
6539 COMMIT;
6540
6541 EXCEPTION
6542 WHEN OTHERS THEN
6543 x_status_code := FND_API.G_RET_STS_ERROR;
6544 x_status_text :=l_routine||' '||SQLERRM;
6545 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
6546 QP_PREQ_GRP.engine_debug(l_routine||' '||SQLERRM);
6547 QP_PREQ_GRP.engine_debug(SQLERRM);
6548 END IF;
6549 END;
6550
6551 /*+----------------------------------------------------------------------
6552 |Procedure Public INSERT_LDETS2
6553 +----------------------------------------------------------------------
6554 */
6555 PROCEDURE INSERT_LDETS2
6556 (p_LINE_DETAIL_index IN PLS_INTEGER_TYPE,
6557 p_LINE_DETAIL_TYPE_CODE IN VARCHAR_TYPE,
6558 p_PRICE_BREAK_TYPE_CODE IN VARCHAR_TYPE,
6559 p_LIST_PRICE IN NUMBER_TYPE,
6560 p_LINE_INDEX IN PLS_INTEGER_TYPE,
6561 p_CREATED_FROM_LIST_HEADER_ID IN NUMBER_TYPE,
6562 p_CREATED_FROM_LIST_LINE_ID IN NUMBER_TYPE,
6563 p_CREATED_FROM_LIST_LINE_TYPE IN VARCHAR_TYPE,
6564 p_CREATED_FROM_LIST_TYPE_CODE IN VARCHAR_TYPE,
6565 p_CREATED_FROM_SQL IN VARCHAR_TYPE,
6566 p_PRICING_GROUP_SEQUENCE IN PLS_INTEGER_TYPE,
6567 P_PRICING_PHASE_ID IN PLS_INTEGER_TYPE,
6568 p_OPERAND_CALCULATION_CODE IN VARCHAR_TYPE,
6569 p_OPERAND_VALUE IN VARCHAR_TYPE,
6570 p_SUBSTITUTION_TYPE_CODE IN VARCHAR_TYPE,
6571 p_SUBSTITUTION_VALUE_FROM IN VARCHAR_TYPE,
6572 p_SUBSTITUTION_VALUE_TO IN VARCHAR_TYPE,
6573 p_ASK_FOR_FLAG IN VARCHAR_TYPE,
6574 p_PRICE_FORMULA_ID IN NUMBER_TYPE,
6575 p_PRICING_STATUS_CODE IN VARCHAR_TYPE,
6576 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE,
6577 p_PRODUCT_PRECEDENCE IN PLS_INTEGER_TYPE,
6578 p_INCOMPATABLILITY_GRP_CODE IN VARCHAR_TYPE,
6579 p_PROCESSED_FLAG IN VARCHAR_TYPE,
6580 p_APPLIED_FLAG IN VARCHAR_TYPE,
6581 p_AUTOMATIC_FLAG IN VARCHAR_TYPE,
6582 p_OVERRIDE_FLAG IN VARCHAR_TYPE,
6583 p_PRIMARY_UOM_FLAG IN VARCHAR_TYPE,
6584 p_PRINT_ON_INVOICE_FLAG IN VARCHAR_TYPE,
6585 p_MODIFIER_LEVEL_CODE IN VARCHAR_TYPE,
6586 p_BENEFIT_QTY IN NUMBER_TYPE,
6587 p_BENEFIT_UOM_CODE IN VARCHAR_TYPE,
6588 p_LIST_LINE_NO IN VARCHAR_TYPE,
6589 p_ACCRUAL_FLAG IN VARCHAR_TYPE,
6590 p_ACCRUAL_CONVERSION_RATE IN NUMBER_TYPE,
6591 p_ESTIM_ACCRUAL_RATE IN NUMBER_TYPE,
6592 p_RECURRING_FLAG IN VARCHAR_TYPE,
6593 p_SELECTED_VOLUME_ATTR IN VARCHAR_TYPE,
6594 p_ROUNDING_FACTOR IN PLS_INTEGER_TYPE,
6595 p_HEADER_LIMIT_EXISTS IN VARCHAR_TYPE,
6596 p_LINE_LIMIT_EXISTS IN VARCHAR_TYPE,
6597 p_CHARGE_TYPE_CODE IN VARCHAR_TYPE,
6598 p_CHARGE_SUBTYPE_CODE IN VARCHAR_TYPE,
6599 p_CURRENCY_DETAIL_ID IN NUMBER_TYPE,
6600 p_CURRENCY_HEADER_ID IN NUMBER_TYPE,
6601 p_SELLING_ROUNDING_FACTOR IN NUMBER_TYPE,
6602 p_ORDER_CURRENCY IN VARCHAR_TYPE,
6603 p_PRICING_EFFECTIVE_DATE IN DATE_TYPE,
6604 p_BASE_CURRENCY_CODE IN VARCHAR_TYPE,
6605 p_LINE_QUANTITY IN NUMBER_TYPE,
6606 p_UPDATED_FLAG IN VARCHAR_TYPE,
6607 p_CALCULATION_CODE IN VARCHAR_TYPE,
6608 p_CHANGE_REASON_CODE IN VARCHAR_TYPE,
6609 p_CHANGE_REASON_TEXT IN VARCHAR_TYPE,
6610 p_PRICE_ADJUSTMENT_ID IN NUMBER_TYPE, -- bug 3099847
6611 p_ACCUM_CONTEXT IN VARCHAR_TYPE, -- accum range break
6612 p_ACCUM_ATTRIBUTE IN VARCHAR_TYPE, -- accum range break
6613 p_ACCUM_FLAG IN VARCHAR_TYPE, -- accum range break
6614 p_BREAK_UOM_CODE IN VARCHAR_TYPE, /* Proration*/
6615 p_BREAK_UOM_CONTEXT IN VARCHAR_TYPE, /* Proration*/
6616 p_BREAK_UOM_ATTRIBUTE IN VARCHAR_TYPE, /* Proration*/
6617 p_PROCESS_CODE IN VARCHAR_TYPE, -- 3215497
6618 x_status_code OUT NOCOPY VARCHAR2,
6619 x_status_text OUT NOCOPY VARCHAR2)
6620 AS
6621 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_LDETS2';
6622 --added by yangli for Java Engine project
6623 l_debug varchar2(3);
6624 --added by yangli for Java Engine project
6625 BEGIN
6626 --added by yangli for Java Engine project
6627 -- Set the global variable G_DEBUG_ENGINE
6628 QP_PREQ_GRP.Set_QP_Debug;
6629
6630 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
6631 --added by yangli for Java Engine project
6632
6633 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
6634 engine_debug('G_LINE_DETAIL_INDEX b4 insert_ldets2 '||G_LINE_DETAIL_INDEX);
6635
6636 engine_debug('current request_id: '||sys_context('qp_context','request_id'));
6637
6638 END IF;
6639 -- sunilpandey, begin defaulting for multi-currency
6640 IF (p_currency_detail_id.count = 0) THEN -- p_currency_detail_id not passed at all
6641 FOR i in p_line_index.FIRST .. p_line_index.LAST
6642 LOOP
6643 G_CURRENCY_DETAIL_ID_DEF_TBL(i) := NULL;
6644 END LOOP;
6645 ELSE
6646 FOR i in p_line_index.FIRST .. p_line_index.LAST
6647 LOOP
6648 G_CURRENCY_DETAIL_ID_DEF_TBL(i) := p_currency_detail_id(i);
6649 END LOOP;
6650 END IF;
6651 -- sunilpandey, begin defaulting for multi-currency
6652
6653 -- vivek, begin defaulting for multi-currency
6654 IF (p_currency_header_id.count = 0) THEN -- p_currency_header_id not passed at all
6655 FOR i in p_line_index.FIRST .. p_line_index.LAST
6656 LOOP
6657 G_CURRENCY_HEADER_ID_DEF_TBL(i) := NULL;
6658 END LOOP;
6659 ELSE
6660 FOR i in p_line_index.FIRST .. p_line_index.LAST
6661 LOOP
6662 G_CURRENCY_HEADER_ID_DEF_TBL(i) := p_currency_header_id(i);
6663 END LOOP;
6664 END IF;
6665
6666 -- vivek, begin defaulting for multi-currency - selling_rounding_factor
6667 IF (p_selling_rounding_factor.count = 0) THEN -- p_selling_rounding_factor not passed at all
6668 FOR i in p_line_index.FIRST .. p_line_index.LAST
6669 LOOP
6670 G_SELLING_ROUNDING_DEF_TBL(i) := NULL;
6671 END LOOP;
6672 ELSE
6673 FOR i in p_line_index.FIRST .. p_line_index.LAST
6674 LOOP
6675 G_SELLING_ROUNDING_DEF_TBL(i) := p_selling_rounding_factor(i);
6676 END LOOP;
6677 END IF;
6678
6679 IF (p_order_currency.count = 0) THEN -- p_order_currency not passed at all
6680 FOR i in p_line_index.FIRST .. p_line_index.LAST
6681 LOOP
6682 G_ORDER_CURRENCY_DEF_TBL(i) := NULL;
6683 END LOOP;
6684 ELSE
6685 FOR i in p_line_index.FIRST .. p_line_index.LAST
6686 LOOP
6687 G_ORDER_CURRENCY_DEF_TBL(i) := p_order_currency(i);
6688 END LOOP;
6689 END IF;
6690
6691 IF (p_pricing_effective_date.count = 0) THEN -- p_pricing_effective_date not passed at all
6692 FOR i in p_line_index.FIRST .. p_line_index.LAST
6693 LOOP
6694 G_PRICING_EFF_DATE_DEF_TBL(i) := NULL;
6695 END LOOP;
6696 ELSE
6697 FOR i in p_line_index.FIRST .. p_line_index.LAST
6698 LOOP
6699 G_PRICING_EFF_DATE_DEF_TBL(i) := p_pricing_effective_date(i);
6700 END LOOP;
6701 END IF;
6702
6703 IF (p_base_currency_code.count = 0) THEN -- p_base_currency_code not passed at all
6704 FOR i in p_line_index.FIRST .. p_line_index.LAST
6705 LOOP
6706 G_BASE_CURRENCY_DEF_TBL(i) := NULL;
6707 END LOOP;
6708 ELSE
6709 FOR i in p_line_index.FIRST .. p_line_index.LAST
6710 LOOP
6711 G_BASE_CURRENCY_DEF_TBL(i) := p_base_currency_code(i);
6712 END LOOP;
6713 END IF;
6714
6715 -- vivek, end defaulting for multi-currency
6716
6717 --added by spgopal for user-passed line_quantity
6718 IF p_LINE_QUANTITY.count = 0
6719 THEN
6720 FOR i IN p_LINE_DETAIL_INDEX.FIRST..p_LINE_DETAIL_INDEX.LAST
6721 LOOP
6722 G_LDET_LINE_QUANTITY_TBL(i) := NULL;
6723 END LOOP;
6724 ELSE
6725 FOR i IN p_LINE_DETAIL_INDEX.FIRST..p_LINE_DETAIL_INDEX.LAST
6726 LOOP
6727 G_LDET_LINE_QUANTITY_TBL(i) := p_LINE_QUANTITY(i);
6728 END LOOP;
6729 END IF;--p_LINE_QUANTITY.count
6730
6731 -- begin shu fix bug 2599822
6732 IF p_UPDATED_FLAG.count = 0 THEN
6733 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6734 G_UPDATED_FLAG_DEF_TBL(i) := NULL;
6735 END LOOP;
6736 ELSE
6737 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6738 G_UPDATED_FLAG_DEF_TBL(i) := p_UPDATED_FLAG(i);
6739 END LOOP;
6740 END IF;
6741
6742 IF p_CALCULATION_CODE.count = 0 THEN
6743 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6744 G_CALCULATION_CODE_DEF_TBL(i) := NULL;
6745 END LOOP;
6746 ELSE
6747 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6748 G_CALCULATION_CODE_DEF_TBL(i) := p_CALCULATION_CODE(i);
6749 END LOOP;
6750 END IF;
6751
6752
6753 IF p_CHANGE_REASON_CODE.count = 0 THEN
6754 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6755 G_CHANGE_REASON_CODE_DEF_TBL(i) := NULL;
6756 END LOOP;
6757 ELSE
6758 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6759 G_CHANGE_REASON_CODE_DEF_TBL(i) := p_CHANGE_REASON_CODE(i);
6760 END LOOP;
6761 END IF;
6762
6763 IF p_CHANGE_REASON_TEXT.count = 0 THEN
6764 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6765 G_CHANGE_REASON_TEXT_DEF_TBL(i) := NULL;
6766 END LOOP;
6767 ELSE
6768 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6769 G_CHANGE_REASON_TEXT_DEF_TBL(i) := p_CHANGE_REASON_TEXT(i);
6770 END LOOP;
6771 END IF; -- end shu fix bug 2599822
6772
6773 -- bug 3099847
6774 IF p_PRICE_ADJUSTMENT_ID.count = 0 THEN
6775 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6776 G_PRICE_ADJUSTMENT_ID_DEF_TBL(i) := null;
6777 END LOOP;
6778 ELSE
6779 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6780 G_PRICE_ADJUSTMENT_ID_DEF_TBL(i) := p_PRICE_ADJUSTMENT_ID(i);
6781 END LOOP;
6782 END IF;
6783
6784 -- begin accum range break
6785 IF p_ACCUM_CONTEXT.count = 0 THEN
6786 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6787 G_ACCUM_CONTEXT_DEF_TBL(i) := null;
6788 END LOOP;
6789 ELSE
6790 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6791 G_ACCUM_CONTEXT_DEF_TBL(i) := p_ACCUM_CONTEXT(i);
6792 END LOOP;
6793 END IF;
6794
6795 IF p_ACCUM_ATTRIBUTE.count = 0 THEN
6796 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6797 G_ACCUM_ATTRIBUTE_DEF_TBL(i) := null;
6798 END LOOP;
6799 ELSE
6800 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6801 G_ACCUM_ATTRIBUTE_DEF_TBL(i) := p_ACCUM_ATTRIBUTE(i);
6802 END LOOP;
6803 END IF;
6804
6805 IF p_ACCUM_FLAG.count = 0 THEN
6806 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6807 G_ACCUM_FLAG_DEF_TBL(i) := null;
6808 END LOOP;
6809 ELSE
6810 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6811 G_ACCUM_FLAG_DEF_TBL(i) := p_ACCUM_FLAG(i);
6812 END LOOP;
6813 END IF;
6814 -- end accum range break
6815 /* Proration defaulting START*/
6816 IF p_BREAK_UOM_CODE.count = 0 THEN
6817 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6818 G_BREAK_UOM_CODE_DEF_TBL(i) := NULL;
6819 END LOOP;
6820 ELSE
6821 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6822 G_BREAK_UOM_CODE_DEF_TBL(i) := p_BREAK_UOM_CODE(i);
6823 END LOOP;
6824 END IF;
6825
6826 IF p_BREAK_UOM_CONTEXT.count = 0 THEN
6827 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6828 G_BREAK_UOM_CONTEXT_DEF_TBL(i) := NULL;
6829 END LOOP;
6830 ELSE
6831 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6832 G_BREAK_UOM_CONTEXT_DEF_TBL(i) := p_BREAK_UOM_CONTEXT(i);
6833 END LOOP;
6834 END IF;
6835
6836 IF p_BREAK_UOM_ATTRIBUTE.count = 0 THEN
6837 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6838 G_BREAK_UOM_ATTRIBUTE_DEF_TBL(i) := NULL;
6839 END LOOP;
6840 ELSE
6841 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6842 G_BREAK_UOM_ATTRIBUTE_DEF_TBL(i) := p_BREAK_UOM_ATTRIBUTE(i);
6843 END LOOP;
6844 END IF;
6845 /* Proration defaulting END*/
6846
6847 -- 3215497, defaulting process_code
6848 IF p_PROCESS_CODE.count = 0 THEN
6849 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6850 G_PROCESS_CODE_DEF_TBL(i) := G_STATUS_NEW;
6851 END LOOP;
6852 ELSE
6853 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
6854 G_PROCESS_CODE_DEF_TBL(i) := p_PROCESS_CODE(i);
6855 END LOOP;
6856 END IF;
6857
6858 --added by yangli for Java Engine project
6859 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
6860 IF l_debug = FND_API.G_TRUE THEN
6861 ENGINE_DEBUG('Java Engine not Installed ----------');
6862 END IF;
6863
6864 --added by yangli for Java Engine project
6865 FORALL i in p_line_index.FIRST..p_line_index.LAST
6866 INSERT INTO qp_npreq_ldets_tmp
6867 (LINE_DETAIL_INDEX,
6868 LINE_DETAIL_TYPE_CODE,
6869 PRICE_BREAK_TYPE_CODE,
6870 LINE_INDEX,
6871 CREATED_FROM_LIST_HEADER_ID,
6872 CREATED_FROM_LIST_LINE_ID,
6873 CREATED_FROM_LIST_LINE_TYPE,
6874 CREATED_FROM_LIST_TYPE_CODE,
6875 CREATED_FROM_SQL,
6876 PRICING_GROUP_SEQUENCE,
6877 PRICING_PHASE_ID,
6878 OPERAND_CALCULATION_CODE,
6879 OPERAND_VALUE,
6880 SUBSTITUTION_TYPE_CODE,
6881 SUBSTITUTION_VALUE_FROM,
6882 SUBSTITUTION_VALUE_TO,
6883 ASK_FOR_FLAG,
6884 PRICE_FORMULA_ID,
6885 PRICING_STATUS_CODE,
6886 PRICING_STATUS_TEXT,
6887 PRODUCT_PRECEDENCE,
6888 INCOMPATABILITY_GRP_CODE,
6889 PROCESSED_FLAG,
6890 APPLIED_FLAG,
6891 AUTOMATIC_FLAG,
6892 OVERRIDE_FLAG,
6893 PRINT_ON_INVOICE_FLAG,
6894 PRIMARY_UOM_FLAG,
6895 MODIFIER_LEVEL_CODE,
6896 BENEFIT_QTY,
6897 BENEFIT_UOM_CODE,
6898 LIST_LINE_NO,
6899 ACCRUAL_FLAG,
6900 ACCRUAL_CONVERSION_RATE,
6901 ESTIM_ACCRUAL_RATE,
6902 RECURRING_FLAG,
6903 SELECTED_VOLUME_ATTR,
6904 ROUNDING_FACTOR,
6905 HEADER_LIMIT_EXISTS,
6906 LINE_LIMIT_EXISTS,
6907 CHARGE_TYPE_CODE,
6908 CHARGE_SUBTYPE_CODE,
6909 CURRENCY_DETAIL_ID, /*sunilpandey */
6910 CURRENCY_HEADER_ID, /*vivek */
6911 SELLING_ROUNDING_FACTOR, /*vivek */
6912 ORDER_CURRENCY, /*vivek */
6913 PRICING_EFFECTIVE_DATE,/*vivek */
6914 BASE_CURRENCY_CODE,/*vivek */
6915 PROCESS_CODE,
6916 LINE_QUANTITY,
6917 UPDATED_FLAG, -- begin shu fix bug 2599822
6918 CALCULATION_CODE,
6919 CHANGE_REASON_CODE,
6920 CHANGE_REASON_TEXT, -- end shu fix bug 2599822
6921 PRICE_ADJUSTMENT_ID, -- bug 3099847
6922 ACCUM_CONTEXT, -- accum range break
6923 ACCUM_ATTRIBUTE, -- accum range break
6924 ACCUM_ATTR_RUN_SRC_FLAG, -- accum range break
6925 BREAK_UOM_CODE, /* Proration */
6926 BREAK_UOM_CONTEXT, /* Proration */
6927 BREAK_UOM_ATTRIBUTE /* Proration */
6928 )
6929 VALUES ( p_LINE_DETAIL_INDEX(i),
6930 p_LINE_DETAIL_TYPE_CODE(i),
6931 p_PRICE_BREAK_TYPE_CODE(i),
6932 p_LINE_INDEX(i),
6933 p_CREATED_FROM_LIST_HEADER_ID(i),
6934 p_CREATED_FROM_LIST_LINE_ID(i),
6935 p_CREATED_FROM_LIST_LINE_TYPE(i),
6936 p_CREATED_FROM_LIST_TYPE_CODE(i),
6937 p_CREATED_FROM_SQL(i),
6938 p_PRICING_GROUP_SEQUENCE(i),
6939 p_PRICING_PHASE_ID(i),
6940 p_OPERAND_CALCULATION_CODE(i),
6941 p_OPERAND_VALUE(i),
6942 p_SUBSTITUTION_TYPE_CODE(i),
6943 p_SUBSTITUTION_VALUE_FROM(i),
6944 p_SUBSTITUTION_VALUE_TO(i),
6945 p_ASK_FOR_FLAG(i),
6946 p_PRICE_FORMULA_ID(i),
6947 p_PRICING_STATUS_CODE(i),
6948 p_PRICING_STATUS_TEXT(i),
6949 p_PRODUCT_PRECEDENCE(i),
6950 p_INCOMPATABLILITY_GRP_CODE(i),
6951 p_PROCESSED_FLAG(i),
6952 p_APPLIED_FLAG(i),
6953 p_AUTOMATIC_FLAG(i),
6954 p_OVERRIDE_FLAG(i),
6955 p_PRINT_ON_INVOICE_FLAG(i),
6956 p_PRIMARY_UOM_FLAG(i),
6957 p_MODIFIER_LEVEL_CODE(i),
6958 p_BENEFIT_QTY(i),
6959 p_BENEFIT_UOM_CODE(i),
6960 p_LIST_LINE_NO(i),
6961 p_ACCRUAL_FLAG(i),
6962 p_ACCRUAL_CONVERSION_RATE(i),
6963 p_ESTIM_ACCRUAL_RATE(i),
6964 p_RECURRING_FLAG(i),
6965 p_SELECTED_VOLUME_ATTR(i),
6966 p_ROUNDING_FACTOR(i),
6967 decode(p_HEADER_LIMIT_EXISTS(i),'Y','Y',decode(p_LINE_LIMIT_EXISTS(i),'Y','Y','N')),
6968 p_LINE_LIMIT_EXISTS(i),
6969 p_CHARGE_TYPE_CODE(i),
6970 p_CHARGE_SUBTYPE_CODE(i),
6971 G_CURRENCY_DETAIL_ID_DEF_TBL(i), /* sunilpandey */
6972 G_CURRENCY_HEADER_ID_DEF_TBL(i), /* vivek */
6973 G_SELLING_ROUNDING_DEF_TBL(i), /* vivek */
6974 G_ORDER_CURRENCY_DEF_TBL(i), /* vivek */
6975 G_PRICING_EFF_DATE_DEF_TBL(i), /* vivek */
6976 G_BASE_CURRENCY_DEF_TBL(i), /* vivek */
6977 G_PROCESS_CODE_DEF_TBL(i), -- 3215497, changed from G_STATUS_NEW,
6978 G_LDET_LINE_QUANTITY_TBL(i),
6979 G_UPDATED_FLAG_DEF_TBL(i), -- begin shu fix bug 2599822
6980 G_CALCULATION_CODE_DEF_TBL(i),
6981 G_CHANGE_REASON_CODE_DEF_TBL(i),
6982 G_CHANGE_REASON_TEXT_DEF_TBL(i), -- end shu fix bug 2599822
6983 G_PRICE_ADJUSTMENT_ID_DEF_TBL(i), -- bug 3099847
6984 G_ACCUM_CONTEXT_DEF_TBL(i), -- accum range break
6985 G_ACCUM_ATTRIBUTE_DEF_TBL(i), -- accum range break
6986 G_ACCUM_FLAG_DEF_TBL(i), -- accum range break
6987 G_BREAK_UOM_CODE_DEF_TBL(i), /* Proration */
6988 G_BREAK_UOM_CONTEXT_DEF_TBL(i), /* Proration */
6989 G_BREAK_UOM_ATTRIBUTE_DEF_TBL(i) /* Proration */
6990 );
6991 --added by yangli for Java Engine project
6992 ELSE
6993 IF l_debug = FND_API.G_TRUE THEN
6994 ENGINE_DEBUG('Java Engine Installed ----------');
6995 END IF;
6996 QP_PREQ_GRP.INSERT_LDETS2_AT
6997 (p_LINE_DETAIL_index ,
6998 p_LINE_DETAIL_TYPE_CODE ,
6999 p_PRICE_BREAK_TYPE_CODE ,
7000 p_LIST_PRICE ,
7001 p_LINE_INDEX ,
7002 p_CREATED_FROM_LIST_HEADER_ID ,
7003 p_CREATED_FROM_LIST_LINE_ID ,
7004 p_CREATED_FROM_LIST_LINE_TYPE ,
7005 p_CREATED_FROM_LIST_TYPE_CODE ,
7006 p_CREATED_FROM_SQL ,
7007 p_PRICING_GROUP_SEQUENCE ,
7008 P_PRICING_PHASE_ID ,
7009 p_OPERAND_CALCULATION_CODE ,
7010 p_OPERAND_VALUE ,
7011 p_SUBSTITUTION_TYPE_CODE ,
7012 p_SUBSTITUTION_VALUE_FROM ,
7013 p_SUBSTITUTION_VALUE_TO ,
7014 p_ASK_FOR_FLAG ,
7015 p_PRICE_FORMULA_ID ,
7016 p_PRICING_STATUS_CODE ,
7017 p_PRICING_STATUS_TEXT ,
7018 p_PRODUCT_PRECEDENCE ,
7019 p_INCOMPATABLILITY_GRP_CODE ,
7020 p_PROCESSED_FLAG ,
7021 p_APPLIED_FLAG ,
7022 p_AUTOMATIC_FLAG ,
7023 p_OVERRIDE_FLAG ,
7024 p_PRIMARY_UOM_FLAG ,
7025 p_PRINT_ON_INVOICE_FLAG ,
7026 p_MODIFIER_LEVEL_CODE ,
7027 p_BENEFIT_QTY ,
7028 p_BENEFIT_UOM_CODE ,
7029 p_LIST_LINE_NO ,
7030 p_ACCRUAL_FLAG ,
7031 p_ACCRUAL_CONVERSION_RATE ,
7032 p_ESTIM_ACCRUAL_RATE ,
7033 p_RECURRING_FLAG ,
7034 p_SELECTED_VOLUME_ATTR ,
7035 p_ROUNDING_FACTOR ,
7036 p_HEADER_LIMIT_EXISTS ,
7037 p_LINE_LIMIT_EXISTS ,
7038 p_CHARGE_TYPE_CODE ,
7039 p_CHARGE_SUBTYPE_CODE ,
7040 G_CURRENCY_DETAIL_ID_DEF_TBL, /* sunilpandey */
7041 G_CURRENCY_HEADER_ID_DEF_TBL, /* vivek */
7042 G_SELLING_ROUNDING_DEF_TBL, /* vivek */
7043 G_ORDER_CURRENCY_DEF_TBL, /* vivek */
7044 G_PRICING_EFF_DATE_DEF_TBL, /* vivek */
7045 G_BASE_CURRENCY_DEF_TBL, /* vivek */
7046 G_LDET_LINE_QUANTITY_TBL,
7047 G_UPDATED_FLAG_DEF_TBL, -- begin shu fix bug 2599822
7048 G_CALCULATION_CODE_DEF_TBL,
7049 G_CHANGE_REASON_CODE_DEF_TBL,
7050 G_CHANGE_REASON_TEXT_DEF_TBL, -- end shu fix bug 2599822
7051 G_PRICE_ADJUSTMENT_ID_DEF_TBL, -- bug 3099847
7052 G_ACCUM_CONTEXT_DEF_TBL, -- accum range break
7053 G_ACCUM_ATTRIBUTE_DEF_TBL, -- accum range break
7054 G_ACCUM_FLAG_DEF_TBL, -- accum range break
7055 G_BREAK_UOM_CODE_DEF_TBL, /* Proration */
7056 G_BREAK_UOM_CONTEXT_DEF_TBL, /* Proration */
7057 G_BREAK_UOM_ATTRIBUTE_DEF_TBL, /* Proration */
7058 G_PROCESS_CODE_DEF_TBL, -- 3215497
7059 x_status_code ,
7060 x_status_text );
7061 END IF;
7062 --added by yangli for Java Engine project
7063
7064 G_CURRENCY_DETAIL_ID_DEF_TBL.delete;
7065 G_CURRENCY_HEADER_ID_DEF_TBL.delete;
7066 G_SELLING_ROUNDING_DEF_TBL.delete;
7067 G_ORDER_CURRENCY_DEF_TBL.delete;
7068 G_PRICING_EFF_DATE_DEF_TBL.delete;
7069 G_BASE_CURRENCY_DEF_TBL.delete;
7070 G_LDET_LINE_QUANTITY_TBL.delete;
7071 G_UPDATED_FLAG_DEF_TBL.delete; -- begin shu fix bug 2599822
7072 G_CALCULATION_CODE_DEF_TBL.delete;
7073 G_CHANGE_REASON_CODE_DEF_TBL.delete;
7074 G_CHANGE_REASON_TEXT_DEF_TBL.delete; -- end shu fix bug 2599822
7075 G_PRICE_ADJUSTMENT_ID_DEF_TBL.delete; -- bug 3099847
7076 G_ACCUM_CONTEXT_DEF_TBL.delete; -- accum range break
7077 G_ACCUM_ATTRIBUTE_DEF_TBL.delete; -- accum range break
7078 G_ACCUM_FLAG_DEF_TBL.delete; -- accum range break
7079 G_BREAK_UOM_CODE_DEF_TBL.delete; /* Proration */
7080 G_BREAK_UOM_CONTEXT_DEF_TBL.delete; /* Proration */
7081 G_BREAK_UOM_ATTRIBUTE_DEF_TBL.delete; /* Proration */
7082 G_PROCESS_CODE_DEF_TBL.delete; -- 3215497
7083
7084 EXCEPTION
7085 WHEN OTHERS THEN
7086 x_status_code := FND_API.G_RET_STS_ERROR;
7087 x_status_text :=l_routine||' '||SQLERRM;
7088 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7089 engine_debug(l_routine||' '||SQLERRM);
7090 engine_debug(SQLERRM);
7091 END IF;
7092 END;
7093
7094 /*+----------------------------------------------------------------------
7095 |Procedure INSERT_RLTD_LINES2_AT, API to insert relationship data
7096 +----------------------------------------------------------------------
7097 */
7098 PROCEDURE INSERT_RLTD_LINES2_AT(
7099 p_LINE_INDEX IN PLS_INTEGER_TYPE,
7100 p_LINE_DETAIL_INDEX IN PLS_INTEGER_TYPE,
7101 p_RELATIONSHIP_TYPE_CODE IN VARCHAR_TYPE,
7102 p_RELATED_LINE_INDEX IN PLS_INTEGER_TYPE,
7103 p_RELATED_LINE_DETAIL_INDEX IN PLS_INTEGER_TYPE,
7104 x_status_code OUT NOCOPY VARCHAR2,
7105 x_status_text OUT NOCOPY VARCHAR2,
7106 p_LIST_LINE_ID IN NUMBER_TYPE, /* bug 3020816 */
7107 p_RELATED_LIST_LINE_ID IN NUMBER_TYPE, /* bug 3020816 */
7108 p_pricing_status_text IN VARCHAR_TYPE)
7109 IS
7110 PRAGMA AUTONOMOUS_TRANSACTION;
7111 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_RLTD_LINES2_AT';
7112 l_request_id number;
7113 BEGIN
7114 l_request_id := nvl(SYS_CONTEXT('QP_CONTEXT','request_id'),-9999);
7115 FORALL i in p_line_index.FIRST..p_line_index.LAST
7116 INSERT INTO QP_INT_RLTD_LINES_T (
7117 LINE_INDEX,
7118 LINE_DETAIL_INDEX,
7119 RELATIONSHIP_TYPE_CODE,
7120 RELATED_LINE_INDEX,
7121 RELATED_LINE_DETAIL_INDEX,
7122 REQUEST_TYPE_CODE,
7123 PRICING_STATUS_CODE,
7124 LIST_LINE_ID,
7125 RELATED_LIST_LINE_ID,
7126 PRICING_STATUS_TEXT,
7127 request_id)
7128
7129 VALUES ( p_LINE_INDEX (i),
7130 p_LINE_DETAIL_INDEX(i),
7131 p_RELATIONSHIP_TYPE_CODE(i),
7132 p_RELATED_LINE_INDEX(i),
7133 p_RELATED_LINE_DETAIL_INDEX(i),
7134 'NULL', -- ASK PRIYA
7135 G_STATUS_NEW, -- SHOULD THIS BE UNCHANGED??, SHU, WHAT HAPPENED TO SERVICE LINE
7136 p_list_line_id(i),
7137 p_related_list_line_id(i),
7138 p_pricing_status_text(i),
7139 l_request_id
7140 );
7141 QP_PREQ_GRP.G_INT_RELS_NO := QP_PREQ_GRP.G_INT_RELS_NO + p_LINE_INDEX.count;
7142 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7143 QP_PREQ_GRP.engine_debug('QP_PREQ_GRP.G_INT_RELS_NO='||QP_PREQ_GRP.G_INT_RELS_NO);
7144 END IF;
7145 COMMIT;
7146 EXCEPTION
7147 WHEN OTHERS THEN
7148 x_status_code := FND_API.G_RET_STS_ERROR;
7149 x_status_text :=l_routine||' '||SQLERRM;
7150 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7151 QP_PREQ_GRP.engine_debug(l_routine||' '||SQLERRM);
7152 QP_PREQ_GRP.engine_debug(SQLERRM);
7153 END IF;
7154 END;
7155
7156
7157 /*+----------------------------------------------------------------------
7158 |Procedure INSERT_RLTD_LINES2, API to insert relationship data
7159 +----------------------------------------------------------------------
7160 */
7161 PROCEDURE INSERT_RLTD_LINES2(
7162 p_LINE_INDEX IN PLS_INTEGER_TYPE,
7163 p_LINE_DETAIL_INDEX IN PLS_INTEGER_TYPE,
7164 p_RELATIONSHIP_TYPE_CODE IN VARCHAR_TYPE,
7165 p_RELATED_LINE_INDEX IN PLS_INTEGER_TYPE,
7166 p_RELATED_LINE_DETAIL_INDEX IN PLS_INTEGER_TYPE,
7167 x_status_code OUT NOCOPY VARCHAR2,
7168 x_status_text OUT NOCOPY VARCHAR2,
7169 p_LIST_LINE_ID IN NUMBER_TYPE, /* bug 3020816 */
7170 p_RELATED_LIST_LINE_ID IN NUMBER_TYPE, /* bug 3020816 */
7171 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE) --added for Java Engine
7172 IS
7173 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.INSERT_RLTD_LINES2';
7174 --added by yangli for Java Engine project
7175 l_debug varchar2(3);
7176 --added by yangli for Java Engine project
7177 BEGIN
7178 --added by yangli for Java Engine project
7179 -- Set the global variable G_DEBUG_ENGINE
7180 QP_PREQ_GRP.Set_QP_Debug;
7181
7182 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
7183 --added by yangli for Java Engine project
7184
7185 -- bug 3020816 - need to allow insert into list_line_id and related_list_line_id columns
7186 IF (p_list_line_id.count = 0) THEN -- p_list_line_id not passed at all
7187 FOR i in p_line_index.FIRST .. p_line_index.LAST
7188 LOOP
7189 G_LIST_LINE_ID_DEF_TBL(i) := NULL;
7190 END LOOP;
7191 ELSE
7192 FOR i in p_line_index.FIRST .. p_line_index.LAST
7193 LOOP
7194 G_LIST_LINE_ID_DEF_TBL(i) := p_list_line_id(i);
7195 END LOOP;
7196 END IF;
7197
7198 IF (p_related_list_line_id.count = 0) THEN -- p_related_list_line_id not passed at all
7199 FOR i in p_line_index.FIRST .. p_line_index.LAST
7200 LOOP
7201 G_RLTD_LIST_LINE_ID_DEF_TBL(i) := NULL;
7202 END LOOP;
7203 ELSE
7204 FOR i in p_line_index.FIRST .. p_line_index.LAST
7205 LOOP
7206 G_RLTD_LIST_LINE_ID_DEF_TBL(i) := p_related_list_line_id(i);
7207 END LOOP;
7208 END IF;
7209
7210 --added by yangli for Java Engine project
7211 IF (p_pricing_status_text.count = 0) THEN -- p_pricing_status_text not passed at all
7212 FOR i in p_line_index.FIRST .. p_line_index.LAST
7213 LOOP
7214 G_PRICING_STATUS_TEXT_DEF_TBL(i) := NULL;
7215 END LOOP;
7216 ELSE
7217 FOR i in p_line_index.FIRST .. p_line_index.LAST
7218 LOOP
7219 G_PRICING_STATUS_TEXT_DEF_TBL(i) := p_pricing_status_text(i);
7220 END LOOP;
7221 END IF;
7222
7223 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
7224 IF l_debug = FND_API.G_TRUE THEN
7225 ENGINE_DEBUG('Java Engine not Installed ----------');
7226 END IF;
7227 --added by yangli for Java Engine project
7228
7229 FORALL i in p_line_index.FIRST..p_line_index.LAST
7230 INSERT INTO qp_npreq_rltd_lines_tmp (
7231 LINE_INDEX,
7232 LINE_DETAIL_INDEX,
7233 RELATIONSHIP_TYPE_CODE,
7234 RELATED_LINE_INDEX,
7235 RELATED_LINE_DETAIL_INDEX,
7236 REQUEST_TYPE_CODE,
7237 PRICING_STATUS_CODE,
7238 LIST_LINE_ID,
7239 RELATED_LIST_LINE_ID)
7240
7241 VALUES (
7242 p_LINE_INDEX (i),
7243 p_LINE_DETAIL_INDEX(i),
7244 p_RELATIONSHIP_TYPE_CODE(i),
7245 p_RELATED_LINE_INDEX(i),
7246 p_RELATED_LINE_DETAIL_INDEX(i),
7247 'NULL', -- ASK PRIYA
7248 G_STATUS_NEW, -- SHOULD THIS BE UNCHANGED??, SHU, WHAT HAPPENED TO SERVICE LINE
7249 G_LIST_LINE_ID_DEF_TBL(i),
7250 G_RLTD_LIST_LINE_ID_DEF_TBL(i)
7251 );
7252 --added by yangli for Java Engine project
7253 ELSE
7254 IF l_debug = FND_API.G_TRUE THEN
7255 ENGINE_DEBUG('Java Engine Installed ----------');
7256 END IF;
7257 QP_PREQ_GRP.INSERT_RLTD_LINES2_AT
7258 (p_LINE_INDEX ,
7259 p_LINE_DETAIL_INDEX ,
7260 p_RELATIONSHIP_TYPE_CODE ,
7261 p_RELATED_LINE_INDEX ,
7262 p_RELATED_LINE_DETAIL_INDEX ,
7263 x_status_code ,
7264 x_status_text,
7265 G_LIST_LINE_ID_DEF_TBL,
7266 G_RLTD_LIST_LINE_ID_DEF_TBL,
7267 G_PRICING_STATUS_TEXT_DEF_TBL);
7268 END IF;
7269 --added by yangli for Java Engine project
7270
7271 G_LIST_LINE_ID_DEF_TBL.delete;
7272 G_RLTD_LIST_LINE_ID_DEF_TBL.delete;
7273 --added by yangli for Java Engine project
7274 G_PRICING_STATUS_TEXT_DEF_TBL.delete;
7275 EXCEPTION
7276 WHEN OTHERS THEN
7277 x_status_code := FND_API.G_RET_STS_ERROR;
7278 x_status_text :=l_routine||' '||SQLERRM;
7279 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7280 engine_debug(l_routine||' '||SQLERRM);
7281 engine_debug(SQLERRM);
7282 END IF;
7283 END INSERT_RLTD_LINES2; -- public version
7284
7285 /*+----------------------------------------------------------------------
7286 |Procedure INSERT_RLTD_LINES2, overloaded version, bug 3215497
7287 +----------------------------------------------------------------------*/
7288 PROCEDURE INSERT_RLTD_LINES2(
7289 p_LINE_INDEX IN NUMBER_TYPE,
7290 p_LINE_DETAIL_INDEX IN NUMBER_TYPE,
7291 p_RELATIONSHIP_TYPE_CODE IN VARCHAR_TYPE,
7292 p_RELATED_LINE_INDEX IN NUMBER_TYPE,
7293 p_RELATED_LINE_DETAIL_INDEX IN NUMBER_TYPE,
7294 x_status_code OUT NOCOPY VARCHAR2,
7295 x_status_text OUT NOCOPY VARCHAR2,
7296 p_LIST_LINE_ID IN NUMBER_TYPE, /* bug 3020816 */
7297 p_RELATED_LIST_LINE_ID IN NUMBER_TYPE, /* bug 3020816 */
7298 p_PRICING_STATUS_TEXT IN VARCHAR_TYPE) --added for Java Engine
7299 IS
7300 i NUMBER;
7301 l_line_index PLS_INTEGER_TYPE;
7302 l_ldet_index PLS_INTEGER_TYPE;
7303 l_rltd_line_index PLS_INTEGER_TYPE;
7304 l_rltd_ldet_index PLS_INTEGER_TYPE;
7305 BEGIN
7306 FOR i IN p_LINE_INDEX.FIRST .. p_LINE_INDEX.LAST LOOP
7307 l_line_index(i) := p_LINE_INDEX(i);
7308 END LOOP;
7309 FOR i IN p_LINE_DETAIL_INDEX.FIRST .. p_LINE_DETAIL_INDEX.LAST LOOP
7310 l_ldet_index(i) := p_LINE_DETAIL_INDEX(i);
7311 END LOOP;
7312 FOR i IN p_RELATED_LINE_INDEX.FIRST .. p_RELATED_LINE_INDEX.LAST LOOP
7313 l_rltd_line_index(i) := p_RELATED_LINE_INDEX(i);
7314 END LOOP;
7315 FOR i IN p_RELATED_LINE_DETAIL_INDEX.FIRST .. p_RELATED_LINE_DETAIL_INDEX.LAST LOOP
7316 l_rltd_ldet_index(i) := p_RELATED_LINE_DETAIL_INDEX(i);
7317 END LOOP;
7318
7319 -- call new version
7320 INSERT_RLTD_LINES2(
7321 p_LINE_INDEX => l_line_index,
7322 p_LINE_DETAIL_INDEX => l_ldet_index,
7323 p_RELATIONSHIP_TYPE_CODE => p_RELATIONSHIP_TYPE_CODE,
7324 p_RELATED_LINE_INDEX => l_rltd_line_index,
7325 p_RELATED_LINE_DETAIL_INDEX => l_rltd_ldet_index,
7326 x_status_code => x_status_code,
7327 x_status_text => x_status_text,
7328 p_LIST_LINE_ID => p_LIST_LINE_ID,
7329 p_RELATED_LIST_LINE_ID => p_RELATED_LIST_LINE_ID,
7330 p_PRICING_STATUS_TEXT => p_PRICING_STATUS_TEXT
7331 );
7332 END INSERT_RLTD_LINES2; -- overloaded version
7333
7334 /*
7335 +------------------------------------------------------------------------
7336 |PROCEDURE Source_Vol_Contexts_Attributes
7337 +-------------------------------------------------------------------------
7338 */
7339
7340 PROCEDURE Source_Vol_Contexts_Attributes(p_pricing_phase_seq PLS_INTEGER,
7341 p_freeze_override_flag VARCHAR2,
7342 p_ordr_amt_flag VARCHAR2,
7343 x_status_code OUT NOCOPY VARCHAR2,
7344 x_status_text OUT NOCOPY VARCHAR2) AS
7345 /*
7346 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.get_request_lines_cur,- No Index Used-,NA,NA
7347 */
7348 CURSOR get_request_lines_cur IS
7349 SELECT LINE_INDEX,
7350 LINE_QUANTITY,
7351 PRICED_QUANTITY,
7352 UNIT_PRICE,
7353 LINE_TYPE_CODE,
7354 LINE_UOM_CODE,
7355 PRICED_UOM_CODE,
7356 PRICE_FLAG
7357 FROM qp_npreq_lines_tmp;
7358 --WHERE LINE_UOM_CODE <> PRICED_UOM_CODE;
7359 /*WHERE (PRICE_FLAG = G_YES
7360 OR
7361 (PRICE_FLAG = G_PHASE
7362 AND
7363 p_freeze_override_flag = G_YES)
7364 );*/
7365
7366 /*
7367 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.get_inventory_item_id_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
7368 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.get_inventory_item_id_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
7369 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.get_inventory_item_id_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
7370 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.get_inventory_item_id_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
7371 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.get_inventory_item_id_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
7372 */
7373 CURSOR get_inventory_item_id_cur(p_line_index PLS_INTEGER) IS
7374 SELECT /*+ dynamic_sampling(1) */ to_number(VALUE_FROM)
7375 FROM qp_npreq_line_attrs_tmp
7376 WHERE CONTEXT = G_PRIC_ITEM_CONTEXT
7377 AND ATTRIBUTE = G_PRIC_ATTRIBUTE1
7378 AND ATTRIBUTE_TYPE = G_PRODUCT_TYPE
7379 AND LINE_INDEX = p_line_index
7380 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED;
7381
7382 /*
7383 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.order_amount_cur,- No Index Used -,NA,NA
7384 */
7385 CURSOR order_amount_cur IS
7386 --SELECT nvl(SUM(UNIT_PRICE * PRICED_QUANTITY),0)
7387 select nvl(sum(nvl(line_unit_price * line_quantity, UNIT_PRICE * PRICED_QUANTITY)),0) /* 3143535 */
7388 FROM qp_npreq_lines_tmp
7389 WHERE charge_periodicity_code is NULL; -- added for recurring charges Bug # 4465168
7390
7391
7392
7393 v_order_amt NUMBER;
7394 v_count PLS_INTEGER;
7395 v_inventory_item_id NUMBER;
7396 v_uom_rate NUMBER;
7397 l_status_code VARCHAR2(30);
7398 l_status_text VARCHAR2(240);
7399 l_routine CONSTANT VARCHAR2(240) := 'QP_PREQ_GRP.Source_Vol_Contexts_Attributes';
7400
7401 l_l_line_index_tbl NUMBER_TYPE;
7402 l_l_line_quantity_tbl NUMBER_TYPE;
7403 l_l_priced_quantity_tbl NUMBER_TYPE;
7404 l_l_unit_price_tbl NUMBER_TYPE;
7405 l_l_line_type_code_tbl VARCHAR_30_TYPE;
7406 l_l_line_uom_code_tbl VARCHAR_30_TYPE;
7407 l_l_priced_uom_code_tbl VARCHAR_30_TYPE;
7408 l_l_price_flag_tbl VARCHAR_30_TYPE;
7409
7410 l_co_line_index_tbl NUMBER_TYPE;
7411 l_co_bulk_count NUMBER := 0;
7412
7413 l_ia_value_from_tbl VARCHAR_TYPE;
7414 l_ia_line_index_tbl NUMBER_TYPE;
7415 l_ia_attribute_tbl VARCHAR_TYPE;
7416 l_ia_bulk_count NUMBER := 0;
7417
7418 BEGIN
7419
7420 -- julin [3805113]: bulk fetch request lines
7421 OPEN get_request_lines_cur;
7422 LOOP
7423 FETCH get_request_lines_cur BULK COLLECT INTO
7424 l_l_line_index_tbl,
7425 l_l_line_quantity_tbl,
7426 l_l_priced_quantity_tbl,
7427 l_l_unit_price_tbl,
7428 l_l_line_type_code_tbl,
7429 l_l_line_uom_code_tbl,
7430 l_l_priced_uom_code_tbl,
7431 l_l_price_flag_tbl
7432 LIMIT G_BATCH_SIZE;
7433 EXIT WHEN l_l_line_index_tbl.count = 0;
7434
7435 l_co_line_index_tbl.delete;
7436 l_ia_value_from_tbl.delete;
7437 l_ia_line_index_tbl.delete;
7438 l_ia_attribute_tbl.delete;
7439
7440 FOR I in l_l_line_index_tbl.first .. l_l_line_index_tbl.last
7441 LOOP
7442
7443 -- ITEM QUANTITY(Price List Sequence)
7444 /* IF (p_pricing_phase_seq = G_PRICE_LIST_SEQUENCE AND i.LINE_TYPE_CODE = G_LINE_LEVEL) THEN
7445
7446 UPDATE qp_npreq_line_attrs_tmp
7447 SET VALUE_FROM = qp_number.number_to_canonical(nvl(I.LINE_QUANTITY,0))
7448 WHERE LINE_INDEX = I.LINE_INDEX
7449 AND CONTEXT = G_PRIC_VOLUME_CONTEXT
7450 AND ATTRIBUTE = G_QUANTITY_ATTRIBUTE
7451 AND ATTRIBUTE_TYPE = G_PRICING_TYPE
7452 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED;
7453
7454 IF SQL%ROWCOUNT = 0 THEN
7455 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7456 engine_debug('No volume context in temp table, inserting one');
7457 END IF;
7458 INSERT_LINE_ATTRS
7459 (p_LINE_INDEX =>I.LINE_INDEX,
7460 p_ATTRIBUTE_LEVEL =>G_LINE_LEVEL,
7461 p_ATTRIBUTE_TYPE =>G_PRICING_TYPE,
7462 p_CONTEXT =>G_PRIC_VOLUME_CONTEXT,
7463 p_ATTRIBUTE =>G_QUANTITY_ATTRIBUTE,
7464 p_VALUE_FROM =>qp_number.number_to_canonical(NVL(I.LINE_QUANTITY,0)),
7465 p_VALIDATED_FLAG =>G_NO,
7466 p_APPLIED_FLAG =>G_LIST_NOT_APPLIED,
7467 p_PRICING_STATUS_CODE =>G_STATUS_UNCHANGED,
7468 P_PRICING_ATTR_FLAG =>G_PRICING_YES,
7469 x_status_code =>l_status_code,
7470 x_status_text =>l_status_text);
7471
7472 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
7473 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7474 END IF;
7475 END IF;
7476 -- Reset the unit price if price event occurs
7477 IF (i.PRICE_FLAG = G_YES OR (i.PRICE_FLAG = G_PHASE AND p_freeze_override_flag = G_YES)) THEN
7478 UPDATE qp_npreq_lines_tmp
7479 SET UNIT_PRICE = NULL
7480 WHERE LINE_INDEX = I.LINE_INDEX;
7481 END IF;
7482
7483 END IF; */
7484
7485 -- PRICED QUANTITY(Discounts Sequence)
7486 -- bug 3572594 - update the cross order volume period qty even if there is no price phase in the current engine call
7487 IF (p_pricing_phase_seq <> G_PRICE_LIST_SEQUENCE AND l_l_line_type_code_tbl(I) = G_LINE_LEVEL ) THEN
7488 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7489 engine_debug('Trying to update cross order volume period qty in temp table');
7490
7491 END IF;
7492 -- Cross Order Quantities
7493 OPEN get_inventory_item_id_cur(l_l_line_index_tbl(I));
7494 FETCH get_inventory_item_id_cur INTO v_inventory_item_id;
7495 CLOSE get_inventory_item_id_cur;
7496
7497 -- Get the pricing uom qty with the uom conversion routine
7498 Inv_convert.inv_um_conversion(l_l_line_uom_code_tbl(I),
7499 l_l_priced_uom_code_tbl(I),
7500 v_inventory_item_id,
7501 v_uom_rate);
7502
7503 -- Update Period1 Item Qty, Period2 Item Qty , Period3 Item Qty with conversion from order uom to pricing uom
7504 IF (v_uom_rate = -99999) THEN
7505 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7506 engine_debug('Uom Rate cannot be -99999');
7507 END IF;
7508 ELSE
7509 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7510 engine_debug('Uom Rate Is: ' || v_uom_rate );
7511 END IF;
7512
7513 -- bug 3572594 - round the multiplied value to profile QP_INV_DECIMAL_PRECISION
7514 if G_INV_DECIMAL_PRECISION is null then
7515 G_INV_DECIMAL_PRECISION := nvl(FND_PROFILE.Value('QP_INV_DECIMAL_PRECISION'),10);
7516 end if;
7517 /*
7518 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd4,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
7519 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd4,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
7520 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd4,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
7521 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd4,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
7522 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd4,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
7523 */
7524
7525 -- julin [3805113]: bulk update
7526 l_co_line_index_tbl(l_co_bulk_count) := l_l_line_index_tbl(I);
7527 l_co_bulk_count := l_co_bulk_count + 1;
7528 END IF;
7529 END IF;
7530
7531 -- ITEM AMOUNT(Discounts Sequence)
7532 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
7533 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7534 engine_debug ('Trying to update line quantity and line amount in temp table');
7535
7536 END IF;
7537 /*
7538 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd3,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
7539 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd3,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
7540 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd3,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
7541 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd3,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
7542 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd3,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
7543 */
7544 -- julin [3805113]: bulk update
7545 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));
7546 l_ia_line_index_tbl(l_ia_bulk_count) := l_l_line_index_tbl(I);
7547 l_ia_attribute_tbl(l_ia_bulk_count) := G_QUANTITY_ATTRIBUTE;
7548 l_ia_bulk_count := l_ia_bulk_count + 1;
7549
7550 /* IF SQL%ROWCOUNT = 0 THEN
7551 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7552 engine_debug('No volume context in temp table, inserting one');
7553 END IF;
7554 INSERT_LINE_ATTRS
7555 (p_LINE_INDEX =>I.LINE_INDEX,
7556 p_ATTRIBUTE_LEVEL =>G_LINE_LEVEL,
7557 p_ATTRIBUTE_TYPE =>G_PRICING_TYPE,
7558 p_CONTEXT =>G_PRIC_VOLUME_CONTEXT,
7559 p_ATTRIBUTE =>G_QUANTITY_ATTRIBUTE,
7560 p_VALUE_FROM =>qp_number.number_to_canonical(nvl(NVL(I.PRICED_QUANTITY,I.LINE_QUANTITY),0)),
7561 p_VALIDATED_FLAG =>G_NO,
7562 p_APPLIED_FLAG =>G_LIST_NOT_APPLIED,
7563 p_PRICING_STATUS_CODE =>G_STATUS_UNCHANGED,
7564 P_PRICING_ATTR_FLAG =>G_PRICING_YES,
7565 x_status_code =>l_status_code,
7566 x_status_text =>l_status_text);
7567 END IF; */ -- Attribute Mapping is sourcing Volume Attributes 01/14/02, AC Nielsen Performance
7568
7569 /*
7570 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd5,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
7571 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd5,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
7572 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd5,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
7573 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd5,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
7574 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd5,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
7575 */
7576 -- julin [3805113]: bulk update
7577 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));
7578 l_ia_line_index_tbl(l_ia_bulk_count) := l_l_line_index_tbl(I);
7579 l_ia_attribute_tbl(l_ia_bulk_count) := G_LINE_AMT_ATTRIBUTE;
7580 l_ia_bulk_count := l_ia_bulk_count + 1;
7581
7582 /* IF SQL%ROWCOUNT = 0 THEN
7583 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7584 engine_debug('No volume context and line amt in temp table, inserting one');
7585 END IF;
7586 INSERT_LINE_ATTRS
7587 (p_LINE_INDEX =>I.LINE_INDEX,
7588 p_ATTRIBUTE_LEVEL =>G_LINE_LEVEL,
7589 p_ATTRIBUTE_TYPE =>G_PRICING_TYPE,
7590 p_CONTEXT =>G_PRIC_VOLUME_CONTEXT,
7591 p_ATTRIBUTE =>G_LINE_AMT_ATTRIBUTE,
7592 p_VALUE_FROM =>qp_number.number_to_canonical(nvl(nvl(I.PRICED_QUANTITY,I.LINE_QUANTITY) * I.UNIT_PRICE ,0)),
7593 p_VALIDATED_FLAG =>G_NO,
7594 p_APPLIED_FLAG =>G_LIST_NOT_APPLIED,
7595 p_PRICING_STATUS_CODE =>G_STATUS_UNCHANGED,
7596 P_PRICING_ATTR_FLAG =>G_PRICING_YES,
7597 x_status_code =>l_status_code,
7598 x_status_text =>l_status_text);
7599 END IF; */ -- Attribute Mapping is sourcing Volume Attributes 01/14/02, AC Nielsen Performance
7600
7601
7602 /*UPDATE qp_npreq_lines_tmp
7603 SET LINE_AMOUNT = nvl(nvl(I.PRICED_QUANTITY,I.LINE_QUANTITY) * I.UNIT_PRICE,0)
7604 WHERE LINE_INDEX = I.LINE_INDEX; */
7605
7606 G_QUALIFIER_TEMP := 'N';
7607
7608 END IF;
7609
7610 END LOOP;
7611
7612 -- julin [3805113]: bulk update for CROSS ORDER VOLUME
7613 IF (l_co_line_index_tbl.count > 0) THEN
7614 FORALL I IN l_co_line_index_tbl.first..l_co_line_index_tbl.last
7615 UPDATE /*+ index(qp_npreq_line_attrs_tmp qp_preq_line_attrs_tmp_n2) */ qp_npreq_line_attrs_tmp --upd4
7616 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))
7617 WHERE LINE_INDEX = l_co_line_index_tbl(I)
7618 AND CONTEXT = G_PRIC_VOLUME_CONTEXT
7619 AND ATTRIBUTE IN ('PRICING_ATTRIBUTE3','PRICING_ATTRIBUTE1','PRICING_ATTRIBUTE11')
7620 AND ATTRIBUTE_TYPE = G_PRICING_TYPE
7621 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED;
7622 END IF;
7623
7624 -- julin [3805113]: bulk update for ITEM AMOUNT
7625 IF (l_ia_line_index_tbl.count > 0) THEN
7626 FORALL I IN l_ia_line_index_tbl.first..l_ia_line_index_tbl.last
7627 UPDATE /*+ index(qp_npreq_line_attrs_tmp qp_preq_line_attrs_tmp_n2) */ qp_npreq_line_attrs_tmp --upd3, upd5
7628 SET VALUE_FROM = l_ia_value_from_tbl(I)
7629 WHERE LINE_INDEX = l_ia_line_index_tbl(I)
7630 AND CONTEXT = G_PRIC_VOLUME_CONTEXT
7631 AND ATTRIBUTE = l_ia_attribute_tbl(I)
7632 AND ATTRIBUTE_TYPE = G_PRICING_TYPE
7633 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED;
7634 END IF;
7635
7636 -- ORDER AMOUNT(Discounts Sequence) only for BATCH event
7637 IF (p_pricing_phase_seq <> G_PRICE_LIST_SEQUENCE and p_ordr_amt_flag = G_YES) THEN
7638 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7639 engine_debug ('Trying to update order amount in temp table');
7640
7641 END IF;
7642 OPEN order_amount_cur;
7643 FETCH order_amount_cur INTO v_order_amt;
7644 CLOSE order_amount_cur;
7645
7646 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7647 engine_debug ('v_order_amt = ' || v_order_amt);
7648 engine_debug ('G_BEFORE_PRICING_ORD_AMT = ' || G_BEFORE_PRICING_ORD_AMT);
7649 END IF;
7650
7651 /*
7652 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd6,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
7653 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd6,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
7654 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd6,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
7655 INDX,QP_PREQ_GRP.source_vol_contexts_attributes.source_vol_contexts_attributes_upd6,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
7656 */
7657 -- Bug 3143535 - ORDER AMOUNT CALCULATION ISSUE
7658 UPDATE qp_npreq_line_attrs_tmp --upd6
7659 --SET VALUE_FROM = qp_number.number_to_canonical(v_order_amt)
7660 SET VALUE_FROM = qp_number.number_to_canonical(qp_number.canonical_to_number(value_from)
7661 - G_BEFORE_PRICING_ORD_AMT
7662 + v_order_amt)
7663 WHERE
7664 CONTEXT = G_PRIC_VOLUME_CONTEXT
7665 AND ATTRIBUTE = G_ORDER_AMOUNT_ATTRIBUTE
7666 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
7667 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED;
7668
7669 IF SQL%ROWCOUNT = 0 THEN
7670 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7671 engine_debug('No volume context and order amt in temp table, inserting one');
7672
7673 END IF;
7674 INSERT INTO qp_npreq_line_attrs_tmp
7675 (LINE_INDEX,ATTRIBUTE_LEVEL,ATTRIBUTE_TYPE,CONTEXT,ATTRIBUTE,VALUE_FROM,
7676 VALIDATED_FLAG,APPLIED_FLAG,PRICING_STATUS_CODE,PRICING_ATTR_FLAG)
7677 SELECT
7678 LINE_INDEX,
7679 LINE_TYPE_CODE,
7680 G_QUALIFIER_TYPE,
7681 G_PRIC_VOLUME_CONTEXT,
7682 G_ORDER_AMOUNT_ATTRIBUTE,
7683 qp_number.number_to_canonical(v_order_amt),
7684 G_NO,
7685 G_NO,
7686 G_STATUS_UNCHANGED,
7687 G_NO
7688 FROM qp_npreq_lines_tmp;
7689
7690 END IF;
7691
7692 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7693 declare
7694 l_value_from varchar2(240);
7695 begin
7696 select value_from
7697 into l_value_from
7698 from qp_npreq_line_attrs_tmp
7699 where CONTEXT = G_PRIC_VOLUME_CONTEXT
7700 AND ATTRIBUTE = G_ORDER_AMOUNT_ATTRIBUTE
7701 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
7702 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
7703 and rownum = 1;
7704
7705 engine_debug ('final order amount attribute = ' || l_value_from);
7706 exception
7707 when no_data_found then
7708 null;
7709 when others then
7710 null;
7711 end;
7712 END IF;
7713
7714 END IF;
7715
7716 END LOOP;
7717 CLOSE get_request_lines_cur;
7718
7719 EXCEPTION
7720 WHEN OTHERS THEN
7721 x_status_code := FND_API.G_RET_STS_ERROR;
7722 x_status_text := l_routine ||': '||SQLERRM;
7723 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7724 engine_debug(x_status_text);
7725 END IF;
7726 END Source_Vol_Contexts_Attributes;
7727
7728 PROCEDURE Update_Distinct_Qualifier_Flag( x_status_code OUT NOCOPY VARCHAR2,
7729 x_status_text OUT NOCOPY VARCHAR2) AS
7730
7731 l_routine VARCHAR2(40) := 'Update_Distinct_Qualifier_Flag';
7732 BEGIN
7733
7734 /*
7735 INDX,QP_PREQ_GRP.update_distinct_qualifier_flag.sel1,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
7736 INDX,QP_PREQ_GRP.update_distinct_qualifier_flag.sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
7737 INDX,QP_PREQ_GRP.update_distinct_qualifier_flag.sel1,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
7738 INDX,QP_PREQ_GRP.update_distinct_qualifier_flag.sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
7739 INDX,QP_PREQ_GRP.update_distinct_qualifier_flag.sel1,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
7740 INDX,QP_PREQ_GRP.update_distinct_qualifier_flag.sel1,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
7741 */
7742 UPDATE /*+ dynamic_sampling(1) */ qp_npreq_line_attrs_tmp a
7743 SET distinct_qualifier_flag = 'Y'
7744 WHERE pricing_status_code = G_STATUS_UNCHANGED
7745 AND attribute_type = G_QUALIFIER_TYPE
7746 AND rowid = (SELECT /*+ dynamic_sampling(1) */ min(rowid)
7747 FROM qp_npreq_line_attrs_tmp b
7748 WHERE a.context = b.context
7749 AND a.attribute = b.attribute
7750 AND a.value_from = b.value_from
7751 AND b.attribute_type = G_QUALIFIER_TYPE
7752 AND b.pricing_status_code = G_STATUS_UNCHANGED);
7753
7754 -- This is much performant than the previous sql
7755 /* UPDATE qp_npreq_line_attrs_tmp a
7756 SET distinct_qualifier_flag = 'Y'
7757 WHERE pricing_status_code = G_STATUS_UNCHANGED
7758 AND attribute_type = G_QUALIFIER_TYPE
7759 AND rowid = (SELECT min(rowid)
7760 FROM qp_npreq_line_attrs_tmp b
7761 WHERE b.attribute_type = G_QUALIFIER_TYPE
7762 AND b.pricing_status_code = G_STATUS_UNCHANGED
7763 GROUP BY b.context , b.attribute , b.value_from); */
7764 EXCEPTION
7765 WHEN OTHERS THEN
7766 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7767 engine_debug(l_routine||' '||SQLERRM);
7768 END IF;
7769 x_status_code := FND_API.G_RET_STS_ERROR;
7770 x_status_text := 'Error in '||l_routine||SQLERRM;
7771
7772 END Update_Distinct_Qualifier_Flag;
7773
7774
7775 /*+-----------------------------------------------------------------------
7776 |PROCEDURE Delete_Duplicate_List_Lines
7777 +------------------------------------------------------------------------
7778 */
7779
7780 -- shu fix bug 1915355
7781
7782 PROCEDURE Delete_Duplicate_List_Lines(p_pricing_phase_id NUMBER,
7783 x_status_code OUT NOCOPY VARCHAR2,
7784 x_status_text OUT NOCOPY VARCHAR2) AS
7785
7786 l_routine VARCHAR2(40) := 'Delete_Duplicate_List_Lines';
7787
7788 CURSOR get_duplicate_list_lines_count IS
7789 SELECT count(*)
7790 FROM qp_npreq_ldets_tmp
7791 WHERE pricing_status_code = G_STATUS_NEW
7792 AND pricing_phase_id = p_pricing_phase_id
7793 GROUP BY line_index,created_from_list_line_id
7794 HAVING count(*) > 1;
7795
7796 l_count NUMBER := 0;
7797
7798 BEGIN
7799
7800 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7801 engine_debug('In Delete Duplicate List Lines procedure');
7802
7803 END IF;
7804 OPEN get_duplicate_list_lines_count;
7805 FETCH get_duplicate_list_lines_count INTO l_count;
7806 CLOSE get_duplicate_list_lines_count;
7807
7808 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7809 engine_debug('Duplicate List Lines Count : ' || l_count);
7810 END IF;
7811
7812 IF (l_count > 0) THEN
7813 UPDATE qp_npreq_ldets_tmp a
7814 SET pricing_status_code = 'DUPLICATE_LIST_LINE'
7815 WHERE pricing_status_code = G_STATUS_NEW
7816 AND pricing_phase_id = p_pricing_phase_id
7817 AND rowid not in (SELECT min(rowid)
7818 FROM qp_npreq_ldets_tmp
7819 WHERE pricing_status_code = G_STATUS_NEW
7820 AND pricing_phase_id = p_pricing_phase_id
7821 GROUP BY line_index,created_from_list_line_id);
7822 END IF;
7823 EXCEPTION
7824 WHEN OTHERS THEN
7825 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7826 engine_debug(l_routine||' '||SQLERRM);
7827 END IF;
7828 x_status_code := FND_API.G_RET_STS_ERROR;
7829 x_status_text := 'Error in '||l_routine||SQLERRM;
7830
7831 END Delete_Duplicate_List_Lines;
7832 --Added new procedure Delete_Hdrs_With_No_ProdAttr for 3520634
7833 /*+-----------------------------------------------------------------------
7834 |PROCEDURE Delete_Hdrs_With_No_ProdAttr
7835 +------------------------------------------------------------------------
7836 */
7837 --Added index hints for bug#7480862
7838 PROCEDURE Delete_Hdrs_With_No_ProdAttr(p_pricing_phase_id NUMBER,
7839 x_status_code OUT NOCOPY VARCHAR2,
7840 x_status_text OUT NOCOPY VARCHAR2) AS
7841
7842 l_routine VARCHAR2(40) := 'Delete_Hdrs_With_No_ProdAttr';
7843
7844 BEGIN
7845
7846 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7847 engine_debug('Entering '||l_routine);
7848 END IF;
7849 UPDATE /*+ index(a qpprod QP_PREQ_QUAL_TMP_N1) dynamic_sampling(1) */ qp_preq_qual_tmp a --5658579
7850 --UPDATE qp_preq_qual_tmp a
7851 SET pricing_status_code = G_STATUS_DELETED
7852 WHERE pricing_status_code = G_STATUS_UNCHANGED
7853 AND pricing_phase_id = p_pricing_phase_id
7854 AND list_line_id = -1
7855 AND NOT EXISTS (select /*+ NO_UNNEST
7856 leading (c)
7857 use_nl (c qpprod)
7858 index (qpprod, QP_PREQ_LINE_ATTRS_TMP_N6)
7859 index(c qp_pricing_attributes_n13) */
7860 'x'
7861 FROM qp_npreq_line_attrs_tmp qpprod, qp_pricing_attributes c
7862 WHERE c.list_header_id = a.list_header_id -- delete header for which product does
7863 AND c.pricing_phase_id = p_pricing_phase_id -- not match
7864 AND qpprod.context = c.product_attribute_context
7865 AND qpprod.attribute = c.product_attribute
7866 AND qpprod.value_from = c.product_attr_value
7867 AND qpprod.pricing_status_code = G_STATUS_UNCHANGED
7868 AND c.qualification_ind in (G_YES_PROD_HDR_LINE_QUAL_IND, G_YES_PROD_HDR_QUAL_IND,
7869 G_YES_PROD_PRIC_HDR_QUAL_IND, G_YES_PRIC_HDR_LINE_QUAL_IND)
7870 AND qpprod.attribute_type = G_PRODUCT_TYPE
7871 AND c.excluder_flag = G_NO
7872 AND rownum = 1
7873 --UNION
7874 --SELECT /*+ ORDERED USE_NL(d qppric) index(d qp_pricing_attributes_n5) */ 'x'
7875 /*FROM qp_npreq_line_attrs_tmp qpprod,
7876 qp_pricing_attributes d,
7877 qp_preq_line_attrs_tmp qppric
7878 WHERE d.list_header_id = a.list_header_id -- delete header for which product and
7879 AND d.pricing_phase_id = p_pricing_phase_id -- pricing attrbutes do not match
7880 AND d.QUALIFICATION_IND in (G_YES_PROD_PRIC_HDR_QUAL_IND, G_YES_PRIC_HDR_LINE_QUAL_IND)
7881 AND d.product_attribute_context = qpprod.context
7882 AND d.product_attribute = qpprod.attribute
7883 AND d.product_attr_value = qpprod.value_from
7884 AND d.excluder_flag = G_NO
7885 AND d.pricing_attribute_context = qppric.context
7886 AND d.pricing_attribute = qppric.attribute
7887 AND (d.pricing_attr_value_from = qppric.value_from
7888 or d.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN))
7889 AND qpprod.attribute_type='PRODUCT'
7890 AND qpprod.pricing_status_code=G_STATUS_UNCHANGED
7891 AND qppric.attribute_type = 'PRICING'
7892 AND qppric.pricing_status_code = G_STATUS_UNCHANGED
7893 AND qpprod.line_index = qppric.line_index
7894 AND rownum = 1*/
7895 )
7896 AND NOT EXISTS (SELECT 'x' --do not delete header for which product is not defined
7897 FROM qp_list_lines d
7898 WHERE d.list_header_id = a.list_header_id
7899 AND d.qualification_ind in (G_YES_HDR_LINE_QUAL_IND,G_YES_HDR_QUAL_IND)
7900 AND d.pricing_phase_id = p_pricing_phase_id
7901 AND rownum=1);
7902
7903 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7904 engine_debug('No of headers deleted from qual tmp due to non-matching of product : ' || l_routine || ' ' || SQL%ROWCOUNT);
7905 END IF;
7906
7907 EXCEPTION
7908 WHEN OTHERS THEN
7909 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
7910 engine_debug(l_routine||' '||SQLERRM);
7911 END IF;
7912 x_status_code := FND_API.G_RET_STS_ERROR;
7913 x_status_text := 'Error in '||l_routine||SQLERRM;
7914
7915 END Delete_Hdrs_With_No_ProdAttr;
7916
7917
7918
7919 PROCEDURE Delete_Un_Asked_For_Promotions (p_line_index IN NUMBER,
7920 p_pricing_phase_id IN NUMBER,
7921 p_incompat_resolve_code IN VARCHAR2,
7922 x_return_status OUT NOCOPY
7923 VARCHAR2,
7924 x_return_status_txt OUT NOCOPY
7925 VARCHAR2) AS
7926 l_debug varchar2(3);
7927 l_pricing_status_code varchar2(30);
7928 BEGIN
7929 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
7930
7931 -- [julin/4116856]: moved from QP_Resolve_Incompatability_PVT.Best_Price_-
7932 -- For_Phase; required to delete un-asked-for promotions before they are
7933 -- processed.
7934 -- Delete lines which are actually ask_for in setup , but are not asked for in the Order
7935 -- Because Engine selects these lines irrespective of their ask_for_flag
7936 -- Index Certificate
7937 /*
7938 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
7939 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_ldets_tmp_N3,PRICING_PHASE_ID,2
7940 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_ldets_tmp_N3,ASK_FOR_FLAG,3
7941 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
7942 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
7943 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
7944 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
7945 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
7946 INDX,QP_Resolve_Incompatability_PVTRUN.best_price_for_phase.upd1,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
7947 */
7948 IF (p_incompat_resolve_code = G_INCOMP_BEST_PRICE) THEN
7949 l_pricing_status_code := QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL;
7950 ELSE
7951 l_pricing_status_code := QP_PREQ_GRP.G_STATUS_INCOMP_LOGIC;
7952 END IF;
7953
7954
7955 UPDATE qp_npreq_ldets_tmp a --upd1
7956 SET PRICING_STATUS_CODE = l_pricing_status_code
7957 WHERE a.ASK_FOR_FLAG = QP_PREQ_GRP.G_YES
7958 AND a.PRICING_PHASE_ID = p_pricing_phase_id
7959 AND a.LINE_INDEX = p_line_index
7960 AND NOT EXISTS (
7961 SELECT /*+ index(b QP_PREQ_LINE_ATTRS_TMP_N2) */ 'X' -- This can use N2 instead of N7
7962 FROM qp_npreq_line_attrs_tmp b
7963 WHERE b.LINE_INDEX = p_line_index
7964 AND b.PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_UNCHANGED
7965 AND b.ATTRIBUTE_TYPE = QP_PREQ_GRP.G_QUALIFIER_TYPE
7966 AND b.CONTEXT = QP_PREQ_GRP.G_LIST_HEADER_CONTEXT
7967 AND b.ATTRIBUTE IN (QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,
7968 QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,
7969 QP_PREQ_GRP.G_QUAL_ATTRIBUTE6)
7970 AND b.VALUE_FROM = decode(b.ATTRIBUTE,
7971 QP_PREQ_GRP.G_QUAL_ATTRIBUTE1,to_char(a.CREATED_FROM_LIST_HEADER_ID),
7972 QP_PREQ_GRP.G_QUAL_ATTRIBUTE2,to_char(a.CREATED_FROM_LIST_LINE_ID),
7973 QP_PREQ_GRP.G_QUAL_ATTRIBUTE6,to_char(a.CREATED_FROM_LIST_HEADER_ID)));
7974
7975 IF l_debug = FND_API.G_TRUE THEN
7976 QP_PREQ_GRP.engine_debug ('Deleted Un Asked for promotions:'||l_pricing_status_code);
7977 END IF;
7978
7979 EXCEPTION
7980 WHEN OTHERS THEN
7981 x_return_status := FND_API.G_RET_STS_ERROR;
7982 x_return_status_txt := 'Unexpected error in QP_PREQ_GRP.Delete_Un_Asked_For_Promotions: ' || SQLERRM;
7983 END Delete_Un_Asked_For_Promotions;
7984
7985
7986
7987 /*+-----------------------------------------------------------------------
7988 |PROCEDURE Populate_Temp_Tables
7989 +------------------------------------------------------------------------
7990 */
7991 PROCEDURE Populate_Temp_Tables
7992 (p_line_tbl IN LINE_TBL_TYPE,
7993 p_qual_tbl IN QUAL_TBL_TYPE,
7994 p_line_attr_tbl IN LINE_ATTR_TBL_TYPE,
7995 p_LINE_DETAIL_tbl IN LINE_DETAIL_TBL_TYPE,
7996 p_LINE_DETAIL_qual_tbl IN LINE_DETAIL_QUAL_TBL_TYPE,
7997 p_LINE_DETAIL_attr_tbl IN LINE_DETAIL_ATTR_TBL_TYPE,
7998 p_rltd_lines_tbl IN RELATED_LINES_TBL_TYPE,
7999 p_rounding_flag IN VARCHAR2,
8000 p_pricing_status_code IN VARCHAR2,
8001 p_price_phase_flag IN BOOLEAN,
8002 p_freeze_override_flag IN VARCHAR2,
8003 p_pricing_event IN VARCHAR2,
8004 p_calculate_flag IN VARCHAR2,
8005 x_status_code OUT NOCOPY VARCHAR2,
8006 x_status_text OUT NOCOPY VARCHAR2
8007 )
8008
8009 AS
8010
8011 I PLS_INTEGER;
8012 v_error_code NUMBER;
8013 v_error_message VARCHAR2(255);
8014 l_message VARCHAR2(255);
8015 l_status_code VARCHAR2(240);
8016 l_status_text VARCHAR2(240);
8017 l_pricing_status_code VARCHAR2(30);
8018 v_pricing_status_code VARCHAR2(30);
8019 J PLS_INTEGER:=1;
8020 K PLS_INTEGER:=1;
8021 TYPE line_index_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
8022 l_line_index_tbl line_index_type;
8023 E_DATE_IS_NULL EXCEPTION;
8024 E_CURRENCY_CODE_IS_NULL EXCEPTION;
8025 l_routine VARCHAR2(240):='QP_PREQ_GRP.Populate_Temp_Tables';
8026 l_count PLS_INTEGER;
8027 l_attribute_type VARCHAR2(30);
8028 l_line_quantity NUMBER;
8029 l_line_amount NUMBER;
8030 l_unit_price NUMBER;
8031 l_order_header_id VARCHAR2(200) := 'MISSING HEADER';
8032 l_order_line_id NUMBER;
8033 l_not_insert_order_line_flag BOOLEAN := FALSE;
8034 l_summary_line_index PLS_INTEGER;
8035 l_price_flag VARCHAR2(1);
8036 l_source_qty_flag VARCHAR2(1);
8037 l_source_amt_flag VARCHAR2(1);
8038
8039 E_ROUTINE_ERRORS EXCEPTION;
8040
8041 /*
8042 INDX,QP_PREQ_GRP.populate_temp_tables.l_get_count_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
8043 */
8044 CURSOR l_get_count_cur IS
8045 SELECT COUNT(*)
8046 FROM qp_npreq_line_attrs_tmp
8047 WHERE PRICING_STATUS_CODE = 'X';
8048
8049 --added by yangli for Java Engine project
8050 /*
8051 INDX,QP_PREQ_GRP.populate_temp_tables.l_int_count_cur,qp_int_line_attrs_N2,PRICING_STATUS_CODE,1
8052 */
8053 CURSOR l_int_count_cur IS
8054 SELECT COUNT(*)
8055 FROM qp_int_line_attrs
8056 WHERE PRICING_STATUS_CODE = 'X';
8057 --added by yangli for Java Engine project
8058
8059 -- begin declare shu fix bug 1728757
8060 l_list_header_id qp_qualifiers.list_header_id%type := NULL;
8061 --l_cascade_ask_for_profile VARCHAR2(2):= nvl(FND_PROFILE.value ('QP_CASCADE_ASK_FOR_PROMOTION'), G_NO);
8062 l_cascade_ask_for_profile VARCHAR2(2):= G_NO;
8063 l_ask_for_flag qp_list_headers_b.ask_for_flag%type := NULL;
8064
8065 CURSOR get_ask_for_flag_cur (l_list_header_id IN NUMBER) IS
8066 SELECT a.ask_for_flag
8067 FROM qp_list_headers_b a
8068 WHERE a.list_header_id = l_list_header_id;
8069
8070 CURSOR l_ask_for_child_ids (l_list_header_id IN NUMBER) IS
8071 SELECT
8072 qp_lhdr_b.list_header_id
8073 FROM
8074 qp_list_headers_b qp_lhdr_b
8075 WHERE
8076 qp_lhdr_b.parent_list_header_id = l_list_header_id AND qp_lhdr_b.ask_for_flag = G_YES;
8077
8078 -- end shu fix bug 1728757
8079
8080 BEGIN
8081 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8082 engine_debug('Rounding Flag: '||p_rounding_flag);
8083 engine_debug ('Passed in Attribute Count : ' || p_line_attr_tbl.count);
8084 engine_debug ('Passed in Qualifier Count : ' || p_qual_tbl.count);
8085 engine_debug ('Passed in Lines Count : ' || p_line_tbl.count);
8086 engine_debug ('Passed in Line dtls Count : ' || p_LINE_DETAIL_tbl.count);
8087 engine_debug ('-----Line information passed-----');
8088 END IF;
8089 I:= p_line_tbl.FIRST;
8090
8091 --if the control record says it is calculate_only
8092 --then it will bypass search so, pricing_status_code should
8093 --be G_STATUS_NEW as is it is selected by search engine.
8094
8095 l_pricing_status_code := p_pricing_status_code;
8096
8097
8098 --Reset_all_tbls;
8099 Reset_All_Tbls(l_status_code ,l_status_text );
8100 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
8101 RAISE E_ROUTINE_ERRORS;
8102 END IF;
8103
8104 K:=1;
8105 WHILE I IS NOT NULL LOOP
8106
8107
8108 IF ( p_line_tbl(I).CURRENCY_CODE IS NULL or
8109 p_line_tbl(I).CURRENCY_CODE = FND_API.G_MISS_CHAR ) THEN
8110 RAISE E_CURRENCY_CODE_IS_NULL;
8111 ELSE
8112 --IF (G_CURRENCY_CODE IS NULL) THEN
8113 G_CURRENCY_CODE := p_line_tbl(I).CURRENCY_CODE;
8114 --END IF;
8115 END IF;
8116
8117
8118 IF ( p_line_tbl(I).PRICING_EFFECTIVE_DATE IS NULL ) THEN
8119 RAISE E_DATE_IS_NULL;
8120 END IF;
8121
8122 -- IF (G_MIN_PRICING_DATE IS NULL) THEN --FP 7321922
8123 G_MIN_PRICING_DATE := TRUNC(p_line_tbl(I).PRICING_EFFECTIVE_DATE);
8124 G_MAX_PRICING_DATE := TRUNC(p_line_tbl(I).PRICING_EFFECTIVE_DATE);
8125 /* --FP 7321922
8126 ELSE
8127 IF (TRUNC(p_line_tbl(I).PRICING_EFFECTIVE_DATE) < TRUNC(G_MIN_PRICING_DATE) AND
8128 p_line_tbl(I).LINE_TYPE_CODE <> 'ORDER') THEN
8129 G_MIN_PRICING_DATE := TRUNC(p_line_tbl(I).PRICING_EFFECTIVE_DATE);
8130 END IF;
8131 IF (TRUNC(p_line_tbl(I).PRICING_EFFECTIVE_DATE) > TRUNC(G_MAX_PRICING_DATE) AND
8132 p_line_tbl(I).LINE_TYPE_CODE <> 'ORDER') THEN
8133 G_MAX_PRICING_DATE := TRUNC(p_line_tbl(I).PRICING_EFFECTIVE_DATE);
8134 END IF;
8135 END IF;
8136 */
8137 IF (instr(p_pricing_event || ',' ,'PRICE,',1,1) > 0 OR instr(p_pricing_event || ',' ,'LINE,',1,1) > 0) THEN
8138 --IF (p_pricing_event in ('PRICE','LINE')) THEN
8139 l_not_insert_order_line_flag := TRUE;
8140 ELSE
8141 l_not_insert_order_line_flag := FALSE;
8142 END IF;
8143
8144 l_summary_line_index := -99999; -- Reset
8145 l_price_flag := p_line_tbl(I).price_flag ; -- Default/Reset
8146
8147 IF (p_line_tbl(I).LINE_TYPE_CODE = G_ORDER_LEVEL) THEN
8148 l_summary_line_index := p_line_tbl(I).LINE_INDEX;
8149 l_order_header_id := to_char(p_line_tbl(I).LINE_ID);
8150 G_ORDER_ID := p_line_tbl(I).LINE_ID; -- accum range break
8151 --Global variable for limits
8152 G_ORDER_PRICE_REQUEST_CODE := p_line_tbl(I).REQUEST_TYPE_CODE || '-' || l_order_header_id;
8153 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8154 engine_debug( ' Order Price Request Code : ' || G_ORDER_PRICE_REQUEST_CODE);
8155 END IF;
8156 END IF;
8157
8158 IF (p_line_tbl(I).LINE_TYPE_CODE = G_ORDER_LEVEL AND l_not_insert_order_line_flag = TRUE) THEN
8159 l_price_flag := 'N'; -- for summary line
8160 END IF;
8161
8162 --dbms_output.put_line ('Min Sysdate : ' || G_MIN_PRICING_DATE);
8163 --dbms_output.put_line ('Max Sysdate : ' || G_MAX_PRICING_DATE);
8164
8165 -- do not overwrite the list price if it is a calculate call
8166 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))
8167 AND p_price_phase_flag = TRUE AND G_MANUAL_ADJUSTMENTS_CALL_FLAG = G_NO
8168 AND p_calculate_flag IN (G_SEARCH_ONLY,G_SEARCH_N_CALCULATE))
8169 AND NVL (p_line_tbl(I).LIST_PRICE_OVERRIDE_FLAG, 'N') = 'N' --po integration
8170 THEN
8171 l_unit_price := NULL;
8172 ELSE
8173 l_unit_price := p_line_tbl(I).UNIT_PRICE;
8174 END IF;
8175
8176 --IF (l_not_insert_order_line_flag = TRUE and p_line_tbl(I).LINE_TYPE_CODE <> G_ORDER_LEVEL or
8177 -- l_not_insert_order_line_flag = FALSE) THEN
8178 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8179 engine_debug (' Loading the line info into plsql tables');
8180
8181 END IF;
8182 G_LINE_INDEX_TBL(K) := p_line_tbl(I).LINE_INDEX;
8183 G_LINE_TYPE_CODE_TBL(K) := p_line_tbl(I).LINE_TYPE_CODE;
8184 G_PRICING_EFFECTIVE_DATE_TBL(K):= TRUNC(p_line_tbl(I).PRICING_EFFECTIVE_DATE);
8185 G_ACTIVE_DATE_FIRST_TBL(K) := TRUNC(p_line_tbl(I).ACTIVE_DATE_FIRST);
8186 G_ACTIVE_DATE_FIRST_TYPE_TBL(K):= p_line_tbl(I).ACTIVE_DATE_FIRST_TYPE;
8187 G_ACTIVE_DATE_SECOND_TBL(K) := TRUNC(p_line_tbl(I).ACTIVE_DATE_SECOND);
8188 G_ACTIVE_DATE_SECOND_TYPE_TBL(K):= p_line_tbl(I).ACTIVE_DATE_SECOND_TYPE;
8189 G_LINE_QUANTITY_TBL(K) := p_line_tbl(I).LINE_QUANTITY;
8190 G_LINE_UOM_CODE_TBL(K) := p_line_tbl(I).LINE_UOM_CODE;
8191 G_REQUEST_TYPE_CODE_TBL(K) := p_line_tbl(I).REQUEST_TYPE_CODE;
8192 G_UOM_QUANTITY_TBL(K) := p_line_tbl(I).UOM_QUANTITY;
8193
8194 If p_price_phase_flag = TRUE AND p_line_tbl(I).LIST_PRICE_OVERRIDE_FLAG IN (
8195 'Y', 'O')
8196 Then --po integration
8197 G_PRICED_QUANTITY_TBL(K) := p_line_tbl(I).LINE_QUANTITY;
8198 G_PRICED_UOM_CODE_TBL(K) := p_line_tbl(I).LINE_UOM_CODE;
8199 G_ADJUSTED_UNIT_PRICE_TBL(K) := l_unit_price;
8200 G_LINE_UNIT_PRICE_TBL(K) := l_unit_price; /* shu_latest */
8201 Else
8202 G_PRICED_QUANTITY_TBL(K) := p_line_tbl(I).PRICED_QUANTITY;
8203 G_PRICED_UOM_CODE_TBL(K) := p_line_tbl(I).PRICED_UOM_CODE;
8204 G_ADJUSTED_UNIT_PRICE_TBL(K) := p_line_tbl(I).ADJUSTED_UNIT_PRICE;
8205 G_LINE_UNIT_PRICE_TBL(K) := p_line_tbl(I).LINE_UNIT_PRICE; /* shu_latest */
8206 End If; --po integration
8207
8208 G_CURRENCY_CODE_TBL(K) := p_line_tbl(I).CURRENCY_CODE;
8209 G_UNIT_PRICE_TBL(K) := l_unit_price;
8210 G_PERCENT_PRICE_TBL(K) := p_line_tbl(I).PERCENT_PRICE;
8211 G_UPD_ADJUSTED_UNIT_PRICE_TBL(K):= p_line_tbl(I).UPDATED_ADJUSTED_UNIT_PRICE;
8212 G_PROCESSED_FLAG_TBL(K) := G_NOT_PROCESSED;
8213 G_PRICE_FLAG_TBL(K) := l_price_flag;
8214 G_LINE_ID_TBL(K) := p_line_tbl(I).LINE_ID;
8215 G_ROUNDING_FLAG_TBL(K) := p_rounding_flag;
8216 G_ROUNDING_FACTOR_TBL(K) := p_line_tbl(I).ROUNDING_FACTOR;
8217 G_PROCESSING_ORDER_TBL(K) := NULL;
8218 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_UNCHANGED; -- always when inserted
8219 G_PRICING_STATUS_TEXT_tbl(K) := NULL;
8220 G_QUALIFIERS_EXIST_FLAG_TBL(K) := 'N';
8221 G_PRICING_ATTRS_EXIST_FLAG_TBL(K) := 'N';
8222 G_PRICE_LIST_ID_TBL(K) := -9999;
8223 G_PL_VALIDATED_FLAG_TBL(K) := 'N';
8224 G_USAGE_PRICING_TYPE_TBL(K) := nvl(p_line_tbl(I).USAGE_PRICING_TYPE,G_REGULAR_USAGE_TYPE);
8225 G_LINE_CATEGORY_TBL(K) := p_line_tbl(I).LINE_CATEGORY;
8226 G_CONTRACT_START_DATE_TBL(K) := p_line_tbl(I).CONTRACT_START_DATE; /* shulin */
8227 G_CONTRACT_END_DATE_TBL(K) := p_line_tbl(I).CONTRACT_END_DATE; /* shulin */
8228 G_LIST_PRICE_OVERRIDE_FLAG_TBL(K) := nvl (p_line_tbl(I).LIST_PRICE_OVERRIDE_FLAG, 'N'); --po integration
8229 G_CHARGE_PERIODICITY_CODE_TBL(K) := p_line_tbl(I).CHARGE_PERIODICITY_CODE;
8230
8231 /* IF (p_line_tbl(I).HEADER_ID IS NULL) THEN
8232 l_order_header_id := 'MISSING HEADER';
8233 ELSE
8234 l_order_header_id := to_char(p_line_tbl(I).HEADER_ID);
8235 END IF; */
8236
8237 IF (p_line_tbl(I).LINE_ID IS NULL) THEN
8238 SELECT qp_limit_price_request_code_s.nextval
8239 INTO l_order_line_id
8240 FROM dual;
8241 ELSE
8242 l_order_line_id := p_line_tbl(I).LINE_ID;
8243 END IF;
8244
8245 IF (p_line_tbl(I).LINE_TYPE_CODE = G_LINE_LEVEL) THEN
8246 IF (p_line_tbl(I).PRICE_REQUEST_CODE IS NULL) THEN
8247 G_PRICE_REQUEST_CODE_TBL(K):=p_line_tbl(I).REQUEST_TYPE_CODE || '-' || l_order_header_id || '-' || l_order_line_id;
8248 ELSE
8249 G_PRICE_REQUEST_CODE_TBL(K):=p_line_tbl(I).PRICE_REQUEST_CODE;
8250 END IF;
8251 ELSE
8252 IF (p_line_tbl(I).PRICE_REQUEST_CODE IS NULL) THEN
8253 G_PRICE_REQUEST_CODE_TBL(K):=p_line_tbl(I).REQUEST_TYPE_CODE || '-' || l_order_header_id;
8254 ELSE
8255 G_PRICE_REQUEST_CODE_TBL(K):=p_line_tbl(I).PRICE_REQUEST_CODE;
8256 END IF;
8257 END IF;
8258
8259 --END IF;
8260
8261 I:= p_line_tbl.NEXT(I);
8262 K:=K+1;
8263 END LOOP;
8264
8265 IF K > 1 THEN
8266 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8267 engine_debug ('Bulk Inserting the actual lines : ' || G_PRICE_LIST_ID_TBL(1));
8268 END IF;
8269 INSERT_LINES2
8270 (p_LINE_INDEX => G_LINE_INDEX_TBL,
8271 p_LINE_TYPE_CODE => G_LINE_TYPE_CODE_TBL,
8272 p_PRICING_EFFECTIVE_DATE =>G_PRICING_EFFECTIVE_DATE_TBL,
8273 p_ACTIVE_DATE_FIRST =>G_ACTIVE_DATE_FIRST_TBL,
8274 p_ACTIVE_DATE_FIRST_TYPE =>G_ACTIVE_DATE_FIRST_TYPE_TBL,
8275 p_ACTIVE_DATE_SECOND =>G_ACTIVE_DATE_SECOND_TBL,
8276 p_ACTIVE_DATE_SECOND_TYPE =>G_ACTIVE_DATE_SECOND_TYPE_TBL,
8277 p_LINE_QUANTITY => G_LINE_QUANTITY_TBL,
8278 p_LINE_UOM_CODE => G_LINE_UOM_CODE_TBL,
8279 p_REQUEST_TYPE_CODE => G_REQUEST_TYPE_CODE_TBL,
8280 p_PRICED_QUANTITY => G_PRICED_QUANTITY_TBL,
8281 p_PRICED_UOM_CODE => G_PRICED_UOM_CODE_TBL,
8282 p_CURRENCY_CODE => G_CURRENCY_CODE_TBL,
8283 p_UNIT_PRICE => G_UNIT_PRICE_TBL,
8284 p_PERCENT_PRICE => G_PERCENT_PRICE_TBL,
8285 p_UOM_QUANTITY => G_UOM_QUANTITY_TBL,
8286 p_ADJUSTED_UNIT_PRICE =>G_ADJUSTED_UNIT_PRICE_TBL,
8287 p_UPD_ADJUSTED_UNIT_PRICE =>G_UPD_ADJUSTED_UNIT_PRICE_TBL,
8288 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_TBL,
8289 p_PRICE_FLAG =>G_PRICE_FLAG_TBL,
8290 p_LINE_ID =>G_LINE_ID_TBL,
8291 p_PROCESSING_ORDER =>G_PROCESSING_ORDER_TBL,
8292 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_tbl,
8293 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_tbl,
8294 p_ROUNDING_FLAG =>G_ROUNDING_FLAG_TBL,
8295 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
8296 p_QUALIFIERS_EXIST_FLAG => G_QUALIFIERS_EXIST_FLAG_TBL,
8297 p_PRICING_ATTRS_EXIST_FLAG =>G_PRICING_ATTRS_EXIST_FLAG_TBL,
8298 p_PRICE_LIST_ID => G_PRICE_LIST_ID_TBL,
8299 p_VALIDATED_FLAG => G_PL_VALIDATED_FLAG_TBL,
8300 p_PRICE_REQUEST_CODE => G_PRICE_REQUEST_CODE_TBL,
8301 p_USAGE_PRICING_TYPE =>G_USAGE_PRICING_TYPE_tbl,
8302 p_LINE_CATEGORY =>G_LINE_CATEGORY_TBL,
8303 p_CONTRACT_START_DATE =>G_CONTRACT_START_DATE_TBL, /* shulin */
8304 p_CONTRACT_END_DATE =>G_CONTRACT_END_DATE_TBL, /* shulin */
8305 p_LINE_UNIT_PRICE =>G_LINE_UNIT_PRICE_TBL, /* shu_latest */
8306 p_LIST_PRICE_OVERRIDE_FLAG => G_LIST_PRICE_OVERRIDE_FLAG_TBL, -- po integration
8307 p_CHARGE_PERIODICITY_CODE => G_CHARGE_PERIODICITY_CODE_TBL,
8308 x_status_code =>l_status_code,
8309 x_status_text =>l_status_text);
8310
8311 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
8312 RAISE E_ROUTINE_ERRORS;
8313 END IF;
8314 END IF;
8315
8316 /*************************populating line attributes *****************************/
8317
8318 --Reset_all_tbls;
8319 Reset_All_Tbls(l_status_code ,l_status_text );
8320 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
8321 RAISE E_ROUTINE_ERRORS;
8322 END IF;
8323
8324 I:= p_qual_tbl.FIRST;
8325 K:=1;
8326
8327 WHILE (I IS NOT NULL AND
8328 (l_not_insert_order_line_flag = TRUE
8329 and p_qual_tbl(I).LINE_INDEX <> l_summary_line_index or
8330 l_not_insert_order_line_flag = FALSE)) LOOP
8331 G_LINE_INDEX_tbl(K) := p_qual_tbl(I).LINE_INDEX;
8332 G_ATTRIBUTE_LEVEL_tbl(K) := G_LINE_LEVEL;
8333 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
8334 G_CONTEXT_tbl(K) := p_qual_tbl(I).QUALIFIER_CONTEXT;
8335 G_ATTRIBUTE_tbl(K) := p_qual_tbl(I).QUALIFIER_ATTRIBUTE;
8336 G_VALUE_FROM_tbl(K) := p_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM;
8337 G_VALUE_TO_tbl(K) := p_qual_tbl(I).QUALIFIER_ATTR_VALUE_TO;
8338 G_COMPARISON_OPERATOR_TYPE_tbl(K):=p_qual_tbl(I).COMPARISON_OPERATOR_CODE;
8339 G_VALIDATED_FLAG_tbl(K) := p_qual_tbl(I).VALIDATED_FLAG;
8340 G_APPLIED_FLAG_tbl(K) := G_LIST_NOT_APPLIED;
8341 G_PRICING_STATUS_CODE_tbl(K) := l_pricing_status_code;
8342 G_PRICING_ATTR_FLAG_tbl(K) := G_YES;
8343 G_LINE_DETAIL_INDEX_tbl(K) := NULL;
8344 G_LIST_HEADER_ID_tbl(K) :=NULL;
8345 G_LIST_LINE_ID_tbl(K) :=NULL;
8346 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
8347 G_SETUP_VALUE_TO_tbl(K) :=NULL;
8348 G_GROUPING_NUMBER_tbl(K) :=NULL;
8349 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
8350 G_PRICING_STATUS_TEXT_tbl(K) :=NULL;
8351 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
8352 G_DATATYPE_tbl(K) :=NULL;
8353 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
8354 G_QUALIFIER_TYPE_TBL(K) :=NULL;
8355 G_EXCLUDER_FLAG_TBL(K) :=NULL;
8356 G_PRICING_PHASE_ID_TBL_A(K) :=NULL;
8357 G_INCOMP_GRP_CODE_TBL_A(K) := NULL;
8358 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := NULL;
8359 G_MODIFIER_LEVEL_CODE_TBL_A(K) := NULL;
8360 G_PRIMARY_UOM_FLAG_TBL_A(K) := NULL;
8361
8362 -- begin shu_promo, fix bug 1728757
8363
8364 IF p_qual_tbl(I).QUALIFIER_CONTEXT = 'MODLIST' AND
8365 p_qual_tbl(I).QUALIFIER_ATTRIBUTE IN ('QUALIFIER_ATTRIBUTE1','QUALIFIER_ATTRIBUTE6')-- promotion no.
8366 THEN
8367 G_LIST_HEADER_ID_TBL(K) := p_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM; -- promotion hdr id
8368 END IF;
8369
8370 IF p_qual_tbl(I).QUALIFIER_CONTEXT = 'MODLIST' AND
8371 p_qual_tbl(I).QUALIFIER_ATTRIBUTE IN ('QUALIFIER_ATTRIBUTE2')-- list line id
8372 THEN
8373 --G_LIST_LINE_ID_TBL(K) := p_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM; -- promotion list line id
8374 -- Get the list header id for the list line
8375 BEGIN
8376 SELECT list_header_id
8377 INTO G_LIST_HEADER_ID_TBL(K)
8378 FROM qp_list_lines
8379 WHERE list_line_id = to_number(p_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM);
8380 EXCEPTION
8381 WHEN NO_DATA_FOUND THEN
8382 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8383 engine_debug('Error in Finding List Header Id for List Line : '||
8384 p_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM);
8385 END IF;
8386 l_status_code := FND_API.G_RET_STS_ERROR;
8387 l_status_text := 'Error in Finding List Header Id for List Line : '||
8388 p_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM;
8389 RAISE E_ROUTINE_ERRORS;
8390 END ;
8391 END IF;
8392
8393 -- if it is a promotion
8394 IF p_qual_tbl(I).QUALIFIER_CONTEXT = 'MODLIST' AND
8395 p_qual_tbl(I).QUALIFIER_ATTRIBUTE = 'QUALIFIER_ATTRIBUTE1' -- promotion no.
8396 THEN
8397 l_list_header_id := p_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM; -- promotion hdr id
8398 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8399 engine_debug ('promotion hdr id: '|| l_list_header_id);
8400 END IF;
8401
8402 -- get ask_for_flag of this promotion
8403 OPEN get_ask_for_flag_cur(l_list_header_id);
8404 FETCH get_ask_for_flag_cur INTO l_ask_for_flag;
8405 CLOSE get_ask_for_flag_cur;
8406
8407 IF ( l_cascade_ask_for_profile = G_YES AND l_ask_for_flag = G_YES) THEN
8408 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8409 engine_debug ('perform cascading ask for pormotion to ask for deals...');
8410 END IF;
8411 -- cascade ask_for_promotion to ask_for_deals
8412
8413 --cursor gets ask for deals' list_header_ids
8414 for l_ask_for_child_ids_data in l_ask_for_child_ids (l_list_header_id) loop
8415 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8416 engine_debug ('cascaded ask for deals: ' || l_ask_for_child_ids_data.list_header_id);
8417 END IF;
8418 K:= K+1;
8419 G_LINE_INDEX_tbl(K) := p_qual_tbl(I).LINE_INDEX;
8420 G_ATTRIBUTE_LEVEL_tbl(K) := G_LINE_LEVEL;
8421 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
8422 G_CONTEXT_tbl(K) := p_qual_tbl(I).QUALIFIER_CONTEXT;
8423 G_ATTRIBUTE_tbl(K) := p_qual_tbl(I).QUALIFIER_ATTRIBUTE;
8424 G_VALUE_FROM_tbl(K) := l_ask_for_child_ids_data.list_header_id;
8425 G_VALUE_TO_tbl(K) := p_qual_tbl(I).QUALIFIER_ATTR_VALUE_TO;
8426 G_COMPARISON_OPERATOR_TYPE_tbl(K):=p_qual_tbl(I).COMPARISON_OPERATOR_CODE;
8427 G_VALIDATED_FLAG_tbl(K) := p_qual_tbl(I).VALIDATED_FLAG;
8428 G_APPLIED_FLAG_tbl(K) := G_LIST_NOT_APPLIED;
8429 G_PRICING_STATUS_CODE_tbl(K) := l_pricing_status_code;
8430 G_PRICING_ATTR_FLAG_tbl(K) := G_YES;
8431 G_LINE_DETAIL_INDEX_tbl(K) := NULL;
8432 G_LIST_HEADER_ID_tbl(K) :=NULL;
8433 G_LIST_LINE_ID_tbl(K) :=NULL;
8434 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
8435 G_SETUP_VALUE_TO_tbl(K) :=NULL;
8436 G_GROUPING_NUMBER_tbl(K) :=NULL;
8437 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
8438 G_PRICING_STATUS_TEXT_tbl(K) :=NULL;
8439 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
8440 G_DATATYPE_tbl(K) :=NULL;
8441 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
8442 G_QUALIFIER_TYPE_TBL(K) :=NULL;
8443 G_EXCLUDER_FLAG_TBL(K) :=NULL;
8444 G_PRICING_PHASE_ID_TBL_A(K) :=NULL;
8445 G_INCOMP_GRP_CODE_TBL_A(K) := NULL;
8446 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := NULL;
8447 G_MODIFIER_LEVEL_CODE_TBL_A(K) := NULL;
8448 G_PRIMARY_UOM_FLAG_TBL_A(K) := NULL;
8449 end loop; --end cursor l_ask_for_child_ids loop
8450 END IF; -- end if cascade ask_for_promotion
8451 END IF; -- end if if is a promotion
8452
8453 -- end shu_promo
8454 K:= K+1;
8455 I:= p_qual_tbl.NEXT(I);
8456 END LOOP;
8457
8458 I := p_line_attr_tbl.FIRST;
8459
8460 WHILE I IS NOT NULL LOOP
8461 IF (p_line_attr_tbl(I).PRICING_CONTEXT = G_ITEM_CONTEXT) THEN
8462 l_attribute_type := G_PRODUCT_TYPE;
8463 ELSE
8464 l_attribute_type := G_PRICING_TYPE;
8465 END IF;
8466
8467 G_LINE_INDEX_tbl(K) := p_line_attr_tbl(I).LINE_INDEX;
8468 G_ATTRIBUTE_LEVEL_tbl(K) := G_LINE_LEVEL;
8469 G_ATTRIBUTE_TYPE_tbl(K) := l_attribute_type;
8470 G_CONTEXT_tbl(K) := p_line_attr_tbl(I).PRICING_CONTEXT;
8471 G_ATTRIBUTE_tbl(K) := p_line_attr_tbl(I).PRICING_ATTRIBUTE;
8472 G_VALUE_FROM_tbl(K) := p_line_attr_tbl(I).PRICING_ATTR_VALUE_FROM;
8473 G_VALUE_TO_tbl(K) := p_line_attr_tbl(I).PRICING_ATTR_VALUE_TO;
8474 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
8475 G_VALIDATED_FLAG_tbl(K) := p_line_attr_tbl(I).VALIDATED_FLAG;
8476 G_APPLIED_FLAG_tbl(K) := G_LIST_NOT_APPLIED;
8477 G_PRICING_STATUS_CODE_tbl(K) := l_pricing_status_code;
8478 G_PRICING_ATTR_FLAG_tbl(K) := G_YES;
8479 G_LINE_DETAIL_INDEX_tbl(K) := NULL;
8480 G_LIST_HEADER_ID_tbl(K) :=NULL;
8481 G_LIST_LINE_ID_tbl(K) :=NULL;
8482 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
8483 G_SETUP_VALUE_TO_tbl(K) :=NULL;
8484 G_GROUPING_NUMBER_tbl(K) :=NULL;
8485 G_NO_QUALIFIERS_IN_GRP_tbl(K):=NULL;
8486 G_PRICING_STATUS_TEXT_tbl(K) :=NULL;
8487 G_QUALIFIER_PRECEDENCE_tbl(K):=NULL;
8488 G_DATATYPE_tbl(K) :=NULL;
8489 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
8490 G_QUALIFIER_TYPE_TBL(K) :=NULL;
8491 G_EXCLUDER_FLAG_TBL(K) :=NULL;
8492 G_PRICING_PHASE_ID_TBL_A(K) :=NULL;
8493 G_INCOMP_GRP_CODE_TBL_A(K) := NULL;
8494 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := NULL;
8495 G_MODIFIER_LEVEL_CODE_TBL_A(K) := NULL;
8496 G_PRIMARY_UOM_FLAG_TBL_A(K) := NULL;
8497 K:= K+1;
8498 I:= p_line_attr_tbl.NEXT(I);
8499 END LOOP;
8500
8501
8502 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8503 engine_debug('Before Sourcing Volume Attributes');
8504
8505 END IF;
8506 l_source_qty_flag := QP_BUILD_SOURCING_PVT.Is_Attribute_Used('VOLUME','PRICING_ATTRIBUTE10');
8507 l_source_amt_flag := QP_BUILD_SOURCING_PVT.Is_Attribute_Used('VOLUME','PRICING_ATTRIBUTE12');
8508
8509 IF (l_source_qty_flag = G_YES) THEN
8510
8511 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8512 engine_debug('Sourcing Quantity Attribute');
8513
8514 END IF;
8515 FOR G IN p_line_tbl.first .. p_line_tbl.last
8516 LOOP
8517
8518 IF (p_price_phase_flag = TRUE) THEN
8519 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8520 engine_debug('Pricing Phase Exists.. Sourcing Line Quantity');
8521 END IF;
8522 l_line_quantity := nvl(p_line_tbl(G).LINE_QUANTITY,0);
8523 ELSE
8524 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8525 engine_debug('Pricing Phase Does not Exist.. Sourcing Priced Quantity');
8526 END IF;
8527 l_line_quantity := nvl(nvl(p_line_tbl(G).PRICED_QUANTITY,p_line_tbl(G).LINE_QUANTITY),0);
8528 END IF;
8529
8530 --dbms_output.put_line ('Sourcing Item Qty for Line : ' ||p_line_tbl(G).LINE_INDEX );
8531
8532 -- Source Item Quantity
8533 G_LINE_INDEX_tbl(K) := p_line_tbl(G).LINE_INDEX;
8534 G_ATTRIBUTE_LEVEL_tbl(K) := G_LINE_LEVEL;
8535 G_ATTRIBUTE_TYPE_tbl(K) := G_PRICING_TYPE;
8536 G_CONTEXT_tbl(K) := G_PRIC_VOLUME_CONTEXT;
8537 G_ATTRIBUTE_tbl(K) := G_QUANTITY_ATTRIBUTE;
8538 G_VALUE_FROM_tbl(K) := qp_number.number_to_canonical(l_line_quantity);
8539 G_VALUE_TO_tbl(K) := NULL;
8540 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
8541 G_VALIDATED_FLAG_tbl(K) := G_NO;
8542 G_APPLIED_FLAG_tbl(K) := G_LIST_NOT_APPLIED;
8543 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_UNCHANGED;
8544 G_PRICING_ATTR_FLAG_tbl(K) := G_YES;
8545 G_LINE_DETAIL_INDEX_tbl(K) := NULL;
8546 G_LIST_HEADER_ID_tbl(K) :=NULL;
8547 G_LIST_LINE_ID_tbl(K) :=NULL;
8548 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
8549 G_SETUP_VALUE_TO_tbl(K) :=NULL;
8550 G_GROUPING_NUMBER_tbl(K) :=NULL;
8551 G_NO_QUALIFIERS_IN_GRP_tbl(K):=NULL;
8552 G_PRICING_STATUS_TEXT_tbl(K) :=NULL;
8553 G_QUALIFIER_PRECEDENCE_tbl(K):=NULL;
8554 G_DATATYPE_tbl(K) :=NULL;
8555 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
8556 G_QUALIFIER_TYPE_TBL(K) :=NULL;
8557 G_EXCLUDER_FLAG_TBL(K) :=NULL;
8558 G_PRICING_PHASE_ID_TBL_A(K) :=NULL;
8559 G_INCOMP_GRP_CODE_TBL_A(K) := NULL;
8560 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := NULL;
8561 G_MODIFIER_LEVEL_CODE_TBL_A(K) := NULL;
8562 G_PRIMARY_UOM_FLAG_TBL_A(K) := NULL;
8563
8564 K:= K+1;
8565
8566 END LOOP; -- Attribute Mapping is sourcing Volume Attributes 01/14/02, AC Nielsen Performance
8567 END IF;
8568
8569 IF (l_source_amt_flag = G_YES) THEN
8570
8571 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8572 engine_debug('Sourcing Amount Attribute');
8573
8574 END IF;
8575 FOR G IN p_line_tbl.first .. p_line_tbl.last
8576 LOOP
8577
8578 IF (p_price_phase_flag = TRUE) THEN
8579 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8580 engine_debug('Pricing Phase Exists.. Sourcing Line Quantity');
8581 END IF;
8582 l_line_amount := nvl(p_line_tbl(G).LINE_QUANTITY * p_line_tbl(G).UNIT_PRICE,0);
8583 ELSE
8584 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8585 engine_debug('Pricing Phase Does not Exist.. ,l_status_textSourcing Priced Quantity');
8586 END IF;
8587 l_line_amount := nvl(nvl(p_line_tbl(G).PRICED_QUANTITY,p_line_tbl(G).LINE_QUANTITY) * p_line_tbl(G).UNIT_PRICE,0);
8588 END IF;
8589
8590 --dbms_output.put_line ('Sourcing Item Qty for Line : ' ||p_line_tbl(G).LINE_INDEX );
8591
8592 -- Source Item Amount
8593 G_LINE_INDEX_tbl(K) := p_line_tbl(G).LINE_INDEX;
8594 G_ATTRIBUTE_LEVEL_tbl(K) := G_LINE_LEVEL;
8595 G_ATTRIBUTE_TYPE_tbl(K) := G_PRICING_TYPE;
8596 G_CONTEXT_tbl(K) := G_PRIC_VOLUME_CONTEXT;
8597 G_ATTRIBUTE_tbl(K) := G_LINE_AMT_ATTRIBUTE;
8598 G_VALUE_FROM_tbl(K) := qp_number.number_to_canonical(l_line_amount);
8599 G_VALUE_TO_tbl(K) := NULL;
8600 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
8601 G_VALIDATED_FLAG_tbl(K) := G_NO;
8602 G_APPLIED_FLAG_tbl(K) := G_LIST_NOT_APPLIED;
8603 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_UNCHANGED;
8604 G_PRICING_ATTR_FLAG_tbl(K) := G_YES;
8605 G_LINE_DETAIL_INDEX_tbl(K) := NULL;
8606 G_LIST_HEADER_ID_tbl(K) :=NULL;
8607 G_LIST_LINE_ID_tbl(K) :=NULL;
8608 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
8609 G_SETUP_VALUE_TO_tbl(K) :=NULL;
8610 G_GROUPING_NUMBER_tbl(K) :=NULL;
8611 G_NO_QUALIFIERS_IN_GRP_tbl(K):=NULL;
8612 G_PRICING_STATUS_TEXT_tbl(K) :=NULL;
8613 G_QUALIFIER_PRECEDENCE_tbl(K):=NULL;
8614 G_DATATYPE_tbl(K) :=NULL;
8615 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
8616 G_QUALIFIER_TYPE_TBL(K) :=NULL;
8617 G_EXCLUDER_FLAG_TBL(K) :=NULL;
8618 G_PRICING_PHASE_ID_TBL_A(K) :=NULL;
8619 G_INCOMP_GRP_CODE_TBL_A(K) := NULL;
8620 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := NULL;
8621 G_MODIFIER_LEVEL_CODE_TBL_A(K) := NULL;
8622 G_PRIMARY_UOM_FLAG_TBL_A(K) := NULL;
8623
8624 K:= K+1;
8625
8626 END LOOP; -- Attribute Mapping is sourcing Volume Attributes 01/14/02, AC Nielsen Performance
8627 END IF;
8628
8629 --Insert record only if there is record
8630 IF K > 1 THEN
8631 INSERT_LINE_ATTRS2
8632 ( G_LINE_INDEX_tbl,
8633 G_LINE_DETAIL_INDEX_tbl ,
8634 G_ATTRIBUTE_LEVEL_tbl ,
8635 G_ATTRIBUTE_TYPE_tbl ,
8636 G_LIST_HEADER_ID_tbl ,
8637 G_LIST_LINE_ID_tbl ,
8638 G_CONTEXT_tbl ,
8639 G_ATTRIBUTE_tbl ,
8640 G_VALUE_FROM_tbl ,
8641 G_SETUP_VALUE_FROM_tbl ,
8642 G_VALUE_TO_tbl ,
8643 G_SETUP_VALUE_TO_tbl ,
8644 G_GROUPING_NUMBER_tbl ,
8645 G_NO_QUALIFIERS_IN_GRP_tbl ,
8646 G_COMPARISON_OPERATOR_TYPE_tbl ,
8647 G_VALIDATED_FLAG_tbl ,
8648 G_APPLIED_FLAG_tbl ,
8649 G_PRICING_STATUS_CODE_tbl ,
8650 G_PRICING_STATUS_TEXT_tbl ,
8651 G_QUALIFIER_PRECEDENCE_tbl ,
8652 G_DATATYPE_tbl ,
8653 G_PRICING_ATTR_FLAG_tbl ,
8654 G_QUALIFIER_TYPE_tbl ,
8655 G_PRODUCT_UOM_CODE_TBL ,
8656 G_EXCLUDER_FLAG_TBL ,
8657 G_PRICING_PHASE_ID_TBL_A ,
8658 G_INCOMP_GRP_CODE_TBL_A ,
8659 G_LINE_DETAIL_TYPE_CODE_TBL_A ,
8660 G_MODIFIER_LEVEL_CODE_TBL_A ,
8661 G_PRIMARY_UOM_FLAG_TBL_A ,
8662 l_status_code ,
8663 l_status_text );
8664
8665 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
8666 RAISE E_ROUTINE_ERRORS;
8667 END IF;
8668
8669 END IF;
8670
8671 /* begin bulk insert ldets -- 3215497 */
8672 -- first reset global tables
8673 Reset_All_Tbls(l_status_code, l_status_text);
8674 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
8675 RAISE E_ROUTINE_ERRORS;
8676 END IF;
8677
8678 I := p_LINE_DETAIL_tbl.FIRST;
8679 K := 1;
8680
8681 IF (G_PUBLIC_API_CALL_FLAG = G_YES) THEN
8682 v_pricing_status_code := G_STATUS_UNCHANGED; -- insert passed adjustments with X
8683 ELSE
8684 v_pricing_status_code := G_STATUS_NEW; -- passed adjustments with N if called from qp_preq_grp
8685 END IF;
8686
8687 WHILE (I IS NOT NULL AND
8688 (l_not_insert_order_line_flag = TRUE and
8689 p_line_detail_tbl(I).LINE_INDEX <> l_summary_line_index or
8690 l_not_insert_order_line_flag = FALSE)
8691 )
8692 LOOP
8693 -- populate relevant tables
8694 G_LINE_DETAIL_INDEX_tbl(K) := p_LINE_DETAIL_tbl(I).LINE_DETAIL_INDEX;
8695 G_LINE_DETAIL_TYPE_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).LINE_DETAIL_TYPE_CODE;
8696 G_PRICE_BREAK_TYPE_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).PRICE_BREAK_TYPE_CODE;
8697 G_LINE_INDEX_tbl(K) := p_LINE_DETAIL_tbl(I).LINE_INDEX;
8698 G_LIST_HEADER_ID_tbl(K) := p_LINE_DETAIL_tbl(I).LIST_HEADER_ID;
8699 G_LIST_LINE_ID_tbl(K) := p_LINE_DETAIL_tbl(I).LIST_LINE_ID;
8700 G_LIST_LINE_TYPE_TBL(K) := p_LINE_DETAIL_tbl(I).LIST_LINE_TYPE_CODE;
8701 G_LIST_TYPE_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).CREATED_FROM_LIST_TYPE_CODE;
8702 G_PRICING_GROUP_SEQUENCE_TBL(K) := p_LINE_DETAIL_tbl(I).PRICING_GROUP_SEQUENCE;
8703 G_PRICING_PHASE_ID_TBL(K) := p_LINE_DETAIL_tbl(I).PRICING_PHASE_ID; --added for usage_pricing
8704 G_OPERAND_CALCULATION_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).OPERAND_CALCULATION_CODE;
8705 G_OPERAND_VALUE_TBL(K) := p_LINE_DETAIL_tbl(I).OPERAND_VALUE;
8706 G_SUBSTITUTION_TYPE_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).SUBSTITUTION_TYPE_CODE;
8707 G_SUBSTITUTION_VALUE_FROM_TBL(K) := p_LINE_DETAIL_tbl(I).SUBSTITUTION_FROM;
8708 G_SUBSTITUTION_VALUE_TO_TBL(K) := p_LINE_DETAIL_tbl(I).SUBSTITUTION_TO;
8709 G_PRICING_STATUS_CODE_tbl(K) := v_pricing_status_code;
8710 G_APPLIED_FLAG_tbl(K) := p_LINE_DETAIL_tbl(I).APPLIED_FLAG;
8711 G_AUTOMATIC_FLAG_TBL(K) := p_LINE_DETAIL_tbl(I).AUTOMATIC_FLAG;
8712 G_OVERRIDE_FLAG_TBL(K) := p_LINE_DETAIL_tbl(I).OVERRIDE_FLAG;
8713 G_PRINT_ON_INVOICE_FLAG_TBL(K) := p_LINE_DETAIL_tbl(I).PRINT_ON_INVOICE_FLAG;
8714 G_MODIFIER_LEVEL_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).MODIFIER_LEVEL_CODE;
8715 G_LIST_LINE_NO_TBL(K) := p_LINE_DETAIL_tbl(I).LIST_LINE_NO; --shu, fix bug 2226344
8716 G_CHARGE_TYPE_CODE_TBL(K) := nvl(p_LINE_DETAIL_tbl(I).CHARGE_TYPE_CODE,'');
8717 G_CHARGE_SUBTYPE_CODE_TBL(K) := nvl(p_LINE_DETAIL_tbl(I).CHARGE_SUBTYPE_CODE,'');
8718 G_LINE_QUANTITY_TBL(K) := p_LINE_DETAIL_tbl(I).LINE_QUANTITY;
8719 G_UPDATED_FLAG_TBL(K) := p_LINE_DETAIL_tbl(I).UPDATED_FLAG;
8720 G_CALCULATION_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).CALCULATION_CODE;
8721 G_CHANGE_REASON_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).CHANGE_REASON_CODE;
8722 G_CHANGE_REASON_TEXT_TBL(K) := p_LINE_DETAIL_tbl(I).CHANGE_REASON_TEXT;
8723 G_PROCESS_CODE_TBL(K) := p_LINE_DETAIL_tbl(I).PROCESS_CODE;
8724 -- remaining tables defaulted to null
8725 G_LIST_PRICE_TBL(K) := null;
8726 G_CREATED_FROM_SQL_TBL(K) := null;
8727 G_ASK_FOR_FLAG_TBL(K) := null;
8728 G_PRICE_FORMULA_ID_TBL(K) := null;
8729 G_PRICING_STATUS_TEXT_tbl(K) := null;
8730 G_PRODUCT_PRECEDENCE_TBL(K) := null;
8731 G_INCOMP_GRP_CODE_TBL(K) := null;
8732 G_PROCESSED_FLAG_TBL(K) := null;
8733 G_PRIMARY_UOM_FLAG_TBL(K) := null;
8734 G_BENEFIT_QTY_TBL(K) := null;
8735 G_BENEFIT_UOM_CODE_TBL(K) := null;
8736 G_ACCRUAL_FLAG_TBL(K) := null;
8737 G_ACCRUAL_CONVERSION_RATE_TBL(K) := null;
8738 G_ESTIM_ACCRUAL_RATE_TBL(K) := null;
8739 G_RECURRING_FLAG_TBL(K) := null;
8740 G_SELECTED_VOLUME_ATTR_TBL(K) := null;
8741 G_ROUNDING_FACTOR_TBL(K) := null;
8742 G_HEADER_LIMIT_EXISTS_TBL(K) := null;
8743 G_LINE_LIMIT_EXISTS_TBL(K) := null;
8744
8745 I := p_LINE_DETAIL_tbl.NEXT(I);
8746 K := K+1;
8747 END LOOP;
8748
8749 -- perform bulk insert (using public API) if any records present
8750 IF (K > 1) THEN
8751 INSERT_LDETS2(
8752 p_LINE_DETAIL_index => G_LINE_DETAIL_INDEX_tbl,
8753 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
8754 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
8755 p_LIST_PRICE => G_LIST_PRICE_TBL,
8756 p_LINE_INDEX => G_LINE_INDEX_tbl,
8757 p_CREATED_FROM_LIST_HEADER_ID => G_LIST_HEADER_ID_tbl,
8758 p_CREATED_FROM_LIST_LINE_ID => G_LIST_LINE_ID_tbl,
8759 p_CREATED_FROM_LIST_LINE_TYPE => G_LIST_LINE_TYPE_TBL,
8760 p_CREATED_FROM_LIST_TYPE_CODE => G_LIST_TYPE_CODE_TBL,
8761 p_CREATED_FROM_SQL => G_CREATED_FROM_SQL_TBL,
8762 p_PRICING_GROUP_SEQUENCE => G_PRICING_GROUP_SEQUENCE_TBL,
8763 p_PRICING_PHASE_ID => G_PRICING_PHASE_ID_TBL,
8764 p_OPERAND_CALCULATION_CODE => G_OPERAND_CALCULATION_CODE_TBL,
8765 p_OPERAND_VALUE => G_OPERAND_VALUE_TBL,
8766 p_SUBSTITUTION_TYPE_CODE => G_SUBSTITUTION_TYPE_CODE_TBL,
8767 p_SUBSTITUTION_VALUE_FROM => G_SUBSTITUTION_VALUE_FROM_TBL,
8768 p_SUBSTITUTION_VALUE_TO => G_SUBSTITUTION_VALUE_TO_TBL,
8769 p_ASK_FOR_FLAG => G_ASK_FOR_FLAG_TBL,
8770 p_PRICE_FORMULA_ID => G_PRICE_FORMULA_ID_TBL,
8771 p_PRICING_STATUS_CODE => G_PRICING_STATUS_CODE_tbl,
8772 p_PRICING_STATUS_TEXT => G_PRICING_STATUS_TEXT_tbl,
8773 p_PRODUCT_PRECEDENCE => G_PRODUCT_PRECEDENCE_TBL,
8774 p_INCOMPATABLILITY_GRP_CODE => G_INCOMP_GRP_CODE_TBL,
8775 p_PROCESSED_FLAG => G_PROCESSED_FLAG_TBL,
8776 p_APPLIED_FLAG => G_APPLIED_FLAG_tbl,
8777 p_AUTOMATIC_FLAG => G_AUTOMATIC_FLAG_TBL,
8778 p_OVERRIDE_FLAG => G_OVERRIDE_FLAG_TBL,
8779 p_PRIMARY_UOM_FLAG => G_PRIMARY_UOM_FLAG_TBL,
8780 p_PRINT_ON_INVOICE_FLAG => G_PRINT_ON_INVOICE_FLAG_TBL,
8781 p_MODIFIER_LEVEL_CODE => G_MODIFIER_LEVEL_CODE_TBL,
8782 p_BENEFIT_QTY => G_BENEFIT_QTY_TBL,
8783 p_BENEFIT_UOM_CODE => G_BENEFIT_UOM_CODE_TBL,
8784 p_LIST_LINE_NO => G_LIST_LINE_NO_TBL,
8785 p_ACCRUAL_FLAG => G_ACCRUAL_FLAG_TBL,
8786 p_ACCRUAL_CONVERSION_RATE => G_ACCRUAL_CONVERSION_RATE_TBL,
8787 p_ESTIM_ACCRUAL_RATE => G_ESTIM_ACCRUAL_RATE_TBL,
8788 p_RECURRING_FLAG => G_RECURRING_FLAG_TBL,
8789 p_SELECTED_VOLUME_ATTR => G_SELECTED_VOLUME_ATTR_TBL,
8790 p_ROUNDING_FACTOR => G_ROUNDING_FACTOR_TBL,
8791 p_HEADER_LIMIT_EXISTS => G_HEADER_LIMIT_EXISTS_TBL,
8792 p_LINE_LIMIT_EXISTS => G_LINE_LIMIT_EXISTS_TBL,
8793 p_CHARGE_TYPE_CODE => G_CHARGE_TYPE_CODE_TBL,
8794 p_CHARGE_SUBTYPE_CODE => G_CHARGE_SUBTYPE_CODE_TBL,
8795 p_LINE_QUANTITY => G_LINE_QUANTITY_TBL,
8796 p_UPDATED_FLAG => G_UPDATED_FLAG_TBL,
8797 p_CALCULATION_CODE => G_CALCULATION_CODE_TBL,
8798 p_CHANGE_REASON_CODE =>G_CHANGE_REASON_CODE_TBL,
8799 p_CHANGE_REASON_TEXT => G_CHANGE_REASON_TEXT_TBL,
8800 p_PROCESS_CODE => G_PROCESS_CODE_TBL,
8801 x_status_code => l_status_code,
8802 x_status_text => l_status_text
8803 );
8804 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
8805 RAISE E_ROUTINE_ERRORS;
8806 END IF;
8807 END IF;
8808 /* end bulk insert ldets */
8809
8810
8811 /* begin bulk insert ldet qualifiers -- 3215497 */
8812 -- first reset global tables
8813 Reset_All_Tbls(l_status_code, l_status_text);
8814 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
8815 RAISE E_ROUTINE_ERRORS;
8816 END IF;
8817
8818 I := p_LINE_DETAIL_qual_tbl.FIRST;
8819 K := 1;
8820 WHILE I IS NOT NULL LOOP
8821 -- populate relevant tables
8822 G_LINE_DETAIL_INDEX_tbl(K) := p_LINE_DETAIL_qual_tbl(I).LINE_DETAIL_INDEX;
8823 G_ATTRIBUTE_LEVEL_tbl(K) := G_DETAIL_LEVEL;
8824 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
8825 G_CONTEXT_tbl(K) := p_LINE_DETAIL_qual_tbl(I).QUALIFIER_CONTEXT;
8826 G_ATTRIBUTE_tbl(K) := p_LINE_DETAIL_qual_tbl(I).QUALIFIER_ATTRIBUTE;
8827 G_VALUE_FROM_tbl(K) := p_LINE_DETAIL_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM;
8828 G_VALUE_TO_tbl(K) := p_LINE_DETAIL_qual_tbl(I).QUALIFIER_ATTR_VALUE_TO;
8829 G_COMPARISON_OPERATOR_TYPE_tbl(K) := p_LINE_DETAIL_qual_tbl(I).COMPARISON_OPERATOR_CODE;
8830 G_VALIDATED_FLAG_tbl(K) := p_LINE_DETAIL_qual_tbl(I).VALIDATED_FLAG;
8831 -- remaining tables defaulted to null
8832 G_LINE_INDEX_tbl(K) := null;
8833 G_LIST_HEADER_ID_tbl(K) := null;
8834 G_LIST_LINE_ID_tbl(K) := null;
8835 G_SETUP_VALUE_FROM_tbl(K) := null;
8836 G_SETUP_VALUE_TO_tbl(K) := null;
8837 G_GROUPING_NUMBER_tbl(K) := null;
8838 G_NO_QUALIFIERS_IN_GRP_tbl(K) := null;
8839 G_APPLIED_FLAG_tbl(K) := null;
8840 G_PRICING_STATUS_CODE_tbl(K) := null;
8841 G_PRICING_STATUS_TEXT_tbl(K) := null;
8842 G_QUALIFIER_PRECEDENCE_tbl(K) := null;
8843 G_DATATYPE_tbl(K) := null;
8844 G_PRICING_ATTR_FLAG_tbl(K) := null;
8845 G_QUALIFIER_TYPE_tbl(K) := null;
8846 G_PRODUCT_UOM_CODE_tbl(K) := null;
8847 G_EXCLUDER_FLAG_tbl(K) := null;
8848 G_PRICING_PHASE_ID_tbl(K) := null;
8849 G_INCOMP_GRP_CODE_tbl(K) := null;
8850 G_LINE_DETAIL_TYPE_CODE_tbl(K) := null;
8851 G_MODIFIER_LEVEL_CODE_tbl(K) := null;
8852 G_PRIMARY_UOM_FLAG_tbl(K) := null;
8853
8854 I := p_LINE_DETAIL_qual_tbl.NEXT(I);
8855 K := K+1;
8856 END LOOP;
8857
8858 -- the next piece of code, which handles ldet line attributes, also calls
8859 -- INSERT_LINE_ATTRS2, so don't reset the global tables, and wait until the
8860 -- tables are completely populated before making one call to the insert API
8861 /* end bulk insert ldet qualifiers */
8862
8863 /* begin bulk insert ldet line attributes -- 3215497 */
8864 -- continue using global tables where last left off
8865 I := p_LINE_DETAIL_attr_tbl.FIRST;
8866 WHILE I IS NOT NULL LOOP
8867 -- populate relevant tables
8868 G_LINE_INDEX_tbl(K) := p_LINE_DETAIL_attr_tbl(I).LINE_INDEX;
8869 G_LINE_DETAIL_INDEX_tbl(K) := p_LINE_DETAIL_attr_tbl(I).LINE_DETAIL_INDEX;
8870 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
8871 G_ATTRIBUTE_LEVEL_tbl(K) := G_LINE_LEVEL;
8872 G_CONTEXT_tbl(K) := p_LINE_DETAIL_attr_tbl(I).PRICING_CONTEXT;
8873 G_ATTRIBUTE_tbl(K) := p_LINE_DETAIL_attr_tbl(I).PRICING_ATTRIBUTE;
8874 G_VALUE_FROM_tbl(K) := p_LINE_DETAIL_attr_tbl(I).PRICING_ATTR_VALUE_FROM;
8875 G_VALIDATED_FLAG_tbl(K) := p_LINE_DETAIL_attr_tbl(I).VALIDATED_FLAG;
8876 IF (p_LINE_DETAIL_attr_tbl(I).PRICING_CONTEXT = G_ITEM_CONTEXT) THEN
8877 G_ATTRIBUTE_TYPE_tbl(K) := G_PRODUCT_TYPE;
8878 G_VALUE_TO_tbl(K) := null;
8879 ELSIF (p_LINE_DETAIL_attr_tbl(I).PRICING_CONTEXT IS NOT NULL) THEN
8880 G_ATTRIBUTE_TYPE_tbl(K) := G_PRICING_TYPE;
8881 G_VALUE_TO_tbl(K) := p_LINE_DETAIL_attr_tbl(I).PRICING_ATTR_VALUE_TO;
8882 ELSE
8883 G_ATTRIBUTE_TYPE_tbl(K) := null;
8884 G_VALUE_TO_tbl(K) := null;
8885 END IF;
8886 -- remaining tables defaulted to null
8887 G_LIST_HEADER_ID_tbl(K) := null;
8888 G_LIST_LINE_ID_tbl(K) := null;
8889 G_SETUP_VALUE_FROM_tbl(K) := null;
8890 G_SETUP_VALUE_TO_tbl(K) := null;
8891 G_GROUPING_NUMBER_tbl(K) := null;
8892 G_NO_QUALIFIERS_IN_GRP_tbl(K) := null;
8893 G_COMPARISON_OPERATOR_TYPE_tbl(K) := null;
8894 G_APPLIED_FLAG_tbl(K) := null;
8895 G_PRICING_STATUS_TEXT_tbl(K) := null;
8896 G_QUALIFIER_PRECEDENCE_tbl(K) := null;
8897 G_DATATYPE_tbl(K) := null;
8898 G_PRICING_ATTR_FLAG_tbl(K) := null;
8899 G_QUALIFIER_TYPE_tbl(K) := null;
8900 G_PRODUCT_UOM_CODE_tbl(K) := null;
8901 G_EXCLUDER_FLAG_tbl(K) := null;
8902 G_PRICING_PHASE_ID_tbl(K) := null;
8903 G_INCOMP_GRP_CODE_tbl(K) := null;
8904 G_LINE_DETAIL_TYPE_CODE_tbl(K) := null;
8905 G_MODIFIER_LEVEL_CODE_tbl(K) := null;
8906 G_PRIMARY_UOM_FLAG_tbl(K) := null;
8907
8908 I := p_LINE_DETAIL_attr_tbl.NEXT(I);
8909 K := K+1;
8910 END LOOP;
8911
8912 -- perform bulk insert (using public API) if any records present
8913 IF (K > 1) THEN
8914 INSERT_LINE_ATTRS2(
8915 p_LINE_INDEX_tbl => G_LINE_INDEX_tbl,
8916 p_LINE_DETAIL_INDEX_tbl => G_LINE_DETAIL_INDEX_tbl,
8917 p_ATTRIBUTE_LEVEL_tbl => G_ATTRIBUTE_LEVEL_tbl,
8918 p_ATTRIBUTE_TYPE_tbl => G_ATTRIBUTE_TYPE_tbl,
8919 p_LIST_HEADER_ID_tbl => G_LIST_HEADER_ID_tbl,
8920 p_LIST_LINE_ID_tbl => G_LIST_LINE_ID_tbl,
8921 p_CONTEXT_tbl => G_CONTEXT_tbl,
8922 p_ATTRIBUTE_tbl => G_ATTRIBUTE_tbl,
8923 p_VALUE_FROM_tbl => G_VALUE_FROM_tbl,
8924 p_SETUP_VALUE_FROM_tbl => G_SETUP_VALUE_FROM_tbl,
8925 p_VALUE_TO_tbl => G_VALUE_TO_tbl,
8926 p_SETUP_VALUE_TO_tbl => G_SETUP_VALUE_TO_tbl,
8927 p_GROUPING_NUMBER_tbl => G_GROUPING_NUMBER_tbl,
8928 p_NO_QUALIFIERS_IN_GRP_tbl => G_NO_QUALIFIERS_IN_GRP_tbl,
8929 p_COMPARISON_OPERATOR_TYPE_tbl => G_COMPARISON_OPERATOR_TYPE_tbl,
8930 p_VALIDATED_FLAG_tbl => G_VALIDATED_FLAG_tbl,
8931 p_APPLIED_FLAG_tbl => G_APPLIED_FLAG_tbl,
8932 p_PRICING_STATUS_CODE_tbl => G_PRICING_STATUS_CODE_tbl,
8933 p_PRICING_STATUS_TEXT_tbl => G_PRICING_STATUS_TEXT_tbl,
8934 p_QUALIFIER_PRECEDENCE_tbl => G_QUALIFIER_PRECEDENCE_tbl,
8935 p_DATATYPE_tbl => G_DATATYPE_tbl,
8936 p_PRICING_ATTR_FLAG_tbl => G_PRICING_ATTR_FLAG_tbl,
8937 p_QUALIFIER_TYPE_tbl => G_QUALIFIER_TYPE_tbl,
8938 p_PRODUCT_UOM_CODE_TBL => G_PRODUCT_UOM_CODE_tbl,
8939 p_EXCLUDER_FLAG_TBL => G_EXCLUDER_FLAG_tbl,
8940 p_PRICING_PHASE_ID_TBL => G_PRICING_PHASE_ID_tbl,
8941 p_INCOMPATABILITY_GRP_CODE_TBL => G_INCOMP_GRP_CODE_tbl,
8942 p_LINE_DETAIL_TYPE_CODE_TBL => G_LINE_DETAIL_TYPE_CODE_tbl,
8943 p_MODIFIER_LEVEL_CODE_TBL => G_MODIFIER_LEVEL_CODE_tbl,
8944 p_PRIMARY_UOM_FLAG_TBL => G_PRIMARY_UOM_FLAG_tbl,
8945 x_status_code => l_status_code,
8946 x_status_text => l_status_text
8947 );
8948 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
8949 RAISE E_ROUTINE_ERRORS;
8950 END IF;
8951 END IF;
8952 /* end bulk insert ldet line attributes */
8953
8954
8955 /* begin bulk insert rltd lines -- 3215497 */
8956 -- first reset global tables
8957 Reset_All_Tbls(l_status_code, l_status_text);
8958 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
8959 RAISE E_ROUTINE_ERRORS;
8960 END IF;
8961
8962 I := p_rltd_lines_tbl.FIRST;
8963 K := 1;
8964 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8965 engine_debug('RLTD first in populate_temp_table: '||I);
8966 END IF;
8967 WHILE I IS NOT NULL LOOP
8968 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8969 engine_debug('Collecting in rltd table');
8970 END IF;
8971 -- populate relevant tables
8972 G_LINE_INDEX_tbl(K) := p_rltd_lines_tbl(I).LINE_INDEX;
8973 G_LINE_DETAIL_INDEX_tbl(K) := p_rltd_lines_tbl(I).LINE_DETAIL_INDEX;
8974 G_RELATIONSHIP_TYPE_TBL(K) := p_rltd_lines_tbl(I).RELATIONSHIP_TYPE_CODE;
8975 G_RLTD_LINE_INDEX_TBL(K) := p_rltd_lines_tbl(I).RELATED_LINE_INDEX;
8976 G_RLTD_LINE_DETAIL_INDEX_TBL(K) := p_rltd_lines_tbl(I).RELATED_LINE_DETAIL_INDEX;
8977
8978 I := p_rltd_lines_tbl.NEXT(I);
8979 K := K+1;
8980 END LOOP;
8981
8982 -- perform bulk insert (using public API) if any records present
8983 IF (K > 1) THEN
8984 INSERT_RLTD_LINES2(
8985 p_LINE_INDEX => G_LINE_INDEX_tbl,
8986 p_LINE_DETAIL_INDEX => G_LINE_DETAIL_INDEX_tbl,
8987 p_RELATIONSHIP_TYPE_CODE => G_RELATIONSHIP_TYPE_TBL,
8988 p_RELATED_LINE_INDEX => G_RLTD_LINE_INDEX_TBL,
8989 p_RELATED_LINE_DETAIL_INDEX => G_RLTD_LINE_DETAIL_INDEX_TBL,
8990 x_status_code => l_status_code,
8991 x_status_text => l_status_text
8992 );
8993 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
8994 RAISE E_ROUTINE_ERRORS;
8995 END IF;
8996 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
8997 engine_debug('after bulk insert rltd lines');
8998 END IF;
8999 END IF;
9000 /* end bulk insert rltd lines */
9001
9002
9003
9004 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9005 OPEN l_get_count_cur;
9006 FETCH l_get_count_cur INTO l_count;
9007 CLOSE l_get_count_cur;
9008 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9009 engine_debug ('Culprit Attribute Count :' || l_count);
9010 END IF;
9011 END IF;
9012
9013 --x_status_code := FND_API.G_RET_STS_SUCCESS;
9014
9015
9016 --Reset_all_tbls;
9017 Reset_All_Tbls(l_status_code ,l_status_text );
9018 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
9019 RAISE E_ROUTINE_ERRORS;
9020 END IF;
9021
9022 EXCEPTION
9023 WHEN E_ROUTINE_ERRORS THEN
9024 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9025 engine_debug(l_routine||': '||l_status_text);
9026 END IF;
9027 x_status_text := l_status_text;
9028 x_status_code := FND_API.G_RET_STS_ERROR;
9029 WHEN E_DATE_IS_NULL THEN
9030 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9031 engine_debug('Date or date type is null');
9032 engine_debug('Date or date type is null');
9033 END IF;
9034 x_status_code := FND_API.G_RET_STS_ERROR;
9035 x_status_text := 'Error in QP_PREQ_GRP.populate_temp_tables: One of the three dates is null';
9036 WHEN E_CURRENCY_CODE_IS_NULL THEN
9037 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9038 engine_debug('Currency code can not be null');
9039 engine_debug('Currency code can not be null');
9040 END IF;
9041 x_status_code := FND_API.G_RET_STS_ERROR;
9042 x_status_text := 'Error in QP_PREQ_GRP.populate_temp_tables: Currency can not be null';
9043 WHEN OTHERS THEN
9044 v_error_code :=SQLCODE;
9045 v_error_message:=SQLERRM;
9046 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9047 engine_debug('Error in QP_PREQ_GRP.populate_temp_tables: '||SQLERRM);
9048 END IF;
9049 x_status_code := FND_API.G_RET_STS_ERROR;
9050 x_status_text :='Error in QP_PREQ_GRP.populate_temp_tables:'||SQLERRM;
9051
9052 END Populate_Temp_Tables;
9053
9054 /*+------------------------------------------------------------
9055 |PROCEDURE SET_EXPIRATION_DATES
9056 +------------------------------------------------------------
9057 */
9058
9059 PROCEDURE SET_EXPIRATION_DATES (p_number_expiration_period IN NUMBER,
9060 p_expiration_period_uom_code IN VARCHAR2,
9061 p_line_index IN NUMBER,
9062 x_expiration_period_end_date OUT NOCOPY DATE,
9063 x_status_code OUT NOCOPY VARCHAR2,
9064 x_status_text OUT NOCOPY VARCHAR2) AS
9065 E_Coupon_Error EXCEPTION;
9066 l_expiration_period_end_date Date;
9067 l_dummy Date;
9068 l_status_code VARCHAR2(240);
9069 l_status_text VARCHAR2(240);
9070 l_routine VARCHAR2(240):='QP_PRQ_GRP.SET_EXPIRATION_DATES';
9071 l_pricing_effective_date Date;
9072 l_debug varchar2(3);
9073
9074 /*
9075 INDX,QP_PREQ_GRP.set_expiration_dates.l_get_pricing_effective_date,qp_npreq_lines_tmp_N1,LINE_INDEX,1
9076 */
9077 CURSOR l_get_pricing_effective_date (p_line_index IN PLS_INTEGER) IS
9078 SELECT pricing_effective_date
9079 FROM qp_npreq_lines_tmp
9080 WHERE line_index = p_line_index;
9081
9082 --added by yangli for Java Engine interface tables
9083 /*
9084 INDX,QP_PREQ_GRP.set_expiration_dates.l_int_pricing_effective_date,qp_int_lines_N1,LINE_INDEX,1
9085 */
9086 CURSOR l_int_pricing_effective_date (p_line_index IN PLS_INTEGER) IS
9087 SELECT pricing_effective_date
9088 FROM qp_int_lines
9089 WHERE line_index = p_line_index;
9090
9091 BEGIN
9092 x_status_code := FND_API.G_RET_STS_SUCCESS;
9093
9094 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
9095 --ADDED BY YANGLI FOR JAVA ENGINE PUB 3086881
9096 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
9097 IF l_debug = FND_API.G_TRUE THEN
9098 QP_PREQ_GRP.ENGINE_DEBUG('Populate_Price_Adj_ID: Java Engine not Installed ----------');
9099 END IF;
9100 --ADDED BY YANGLI FOR JAVA ENGINE PUB 3086881
9101 OPEN l_get_pricing_effective_date (p_line_index);
9102 FETCH l_get_pricing_effective_date into l_pricing_effective_date;
9103 CLOSE l_get_pricing_effective_date;
9104 ELSE
9105 IF l_debug = FND_API.G_TRUE THEN
9106 QP_PREQ_GRP.ENGINE_DEBUG('Set_Expiration_Dates: Java Engine is Installed ----------');
9107 END IF;
9108 OPEN l_int_pricing_effective_date (p_line_index);
9109 FETCH l_int_pricing_effective_date into l_pricing_effective_date;
9110 CLOSE l_int_pricing_effective_date;
9111 END IF;
9112
9113 QP_COUPON_PVT.Set_Expiration_Dates
9114 (l_dummy,
9115 l_expiration_period_end_date,
9116 p_number_expiration_period,
9117 p_expiration_period_uom_code,
9118 l_pricing_effective_date,
9119 l_status_code,
9120 l_status_text);
9121
9122 IF (l_status_code <> FND_API.G_RET_STS_SUCCESS) Then
9123 Raise E_Coupon_Error;
9124 END IF;
9125
9126 x_expiration_period_end_date := l_expiration_period_end_date;
9127
9128 EXCEPTION
9129
9130 WHEN E_Coupon_Error THEN
9131 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9132 engine_debug('Error returned by QP_COUPON_PVT.Set_Expiration_Dates');
9133 END IF;
9134 x_status_code := FND_API.G_RET_STS_ERROR;
9135 x_status_text :=l_routine||':'||l_status_text;
9136 WHEN OTHERS THEN
9137 x_status_code := FND_API.G_RET_STS_ERROR;
9138 x_status_code := l_routine||':'||SQLERRM;
9139 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9140 engine_debug(l_routine||':'||SQLERRM);
9141 END IF;
9142 END;
9143
9144
9145 /*+-----------------------------------------------------------
9146 |PROCEDURE Populate_OutPut
9147 +-----------------------------------------------------------
9148 */
9149 PROCEDURE Populate_Output
9150 (x_line_tbl OUT NOCOPY LINE_TBL_TYPE,
9151 x_line_qual_tbl OUT NOCOPY QUAL_TBL_TYPE,
9152 x_line_attr_tbl OUT NOCOPY LINE_ATTR_TBL_TYPE,
9153 x_line_detail_tbl OUT NOCOPY LINE_DETAIL_TBL_TYPE,
9154 x_line_detail_qual_tbl OUT NOCOPY LINE_DETAIL_QUAL_TBL_TYPE,
9155 x_line_detail_attr_tbl OUT NOCOPY LINE_DETAIL_ATTR_TBL_TYPE,
9156 x_related_lines_tbl OUT NOCOPY RELATED_LINES_TBL_TYPE)
9157 AS
9158 /*
9159 INDX,QP_PREQ_GRP.populate_output.l_lines_cur,- No Index Used -,NA,NA
9160 */
9161 CURSOR l_lines_cur IS
9162 SELECT LINE_INDEX,
9163 LINE_ID,
9164 PRICE_LIST_HEADER_ID, -- shu, print out this
9165 LINE_TYPE_CODE,
9166 LINE_QUANTITY,
9167 LINE_UOM_CODE,
9168 LINE_UNIT_PRICE, -- shu
9169 ROUNDING_FACTOR, -- shu
9170 PRICED_QUANTITY,
9171 UOM_QUANTITY,
9172 PRICED_UOM_CODE,
9173 CURRENCY_CODE,
9174 UNIT_PRICE,
9175 PERCENT_PRICE,
9176 PARENT_PRICE,
9177 PARENT_QUANTITY,
9178 PARENT_UOM_CODE,
9179 PRICE_FLAG,
9180 ADJUSTED_UNIT_PRICE,
9181 UPDATED_ADJUSTED_UNIT_PRICE,
9182 PROCESSING_ORDER,
9183 PROCESSED_CODE,
9184 PRICING_STATUS_CODE,
9185 PRICING_STATUS_TEXT,
9186 HOLD_CODE,
9187 HOLD_TEXT,
9188 PRICE_REQUEST_CODE,
9189 PRICING_EFFECTIVE_DATE,
9190 EXTENDED_PRICE /* block pricing */
9191 --EXTENDED_SELLING_PRICE_UR, --[prarasto:Post Round]New fields for unrounded values, [julin/postround] redesign
9192 --ORDER_UOM_SELLING_PRICE_UR, --[prarasto:Post Round]
9193 --ADJUSTED_UNIT_PRICE_UR --[prarasto:Post Round]
9194 FROM qp_npreq_lines_tmp;
9195
9196 /*
9197 INDX,QP_PREQ_GRP.populate_output.l_qual_cur,qp_npreq_ldets_tmp_N4,PRICING_STATUS_CODE,1
9198
9199 INDX,QP_PREQ_GRP.populate_output.l_qual_cur,qp_npreq_line_attrs_tmp_N3,LINE_DETAIL_INDEX,1
9200 INDX,QP_PREQ_GRP.populate_output.l_qual_cur,qp_npreq_line_attrs_tmp_N3,ATTRIBUTE_TYPE,2
9201 */
9202 CURSOR l_qual_cur (L_ATTRIBUTE_LEVEL VARCHAR2)IS
9203 SELECT /*+ dynamic_sampling(1) */ QPLAT.LINE_INDEX,
9204 QPLAT.LINE_DETAIL_INDEX,
9205 QPLAT.CONTEXT,
9206 QPLAT.ATTRIBUTE,
9207 QPLAT.SETUP_VALUE_FROM,
9208 QPLAT.SETUP_VALUE_TO,
9209 QPLAT.COMPARISON_OPERATOR_TYPE_CODE,
9210 QPLAT.VALIDATED_FLAG,
9211 QPLAT.PRICING_STATUS_CODE,
9212 QPLAT.PRICING_STATUS_TEXT
9213 FROM qp_npreq_ldets_tmp QPLD ,
9214 qp_npreq_line_attrs_tmp QPLAT
9215 WHERE QPLD.LINE_DETAIL_INDEX = QPLAT.LINE_DETAIL_INDEX
9216 AND QPLD.PRICING_STATUS_CODE = G_STATUS_NEW
9217 AND QPLAT.ATTRIBUTE_TYPE = 'QUALIFIER';
9218 --AND QPLAT.PRICING_STATUS_CODE = G_STATUS_NEW;
9219
9220 /*
9221 INDX,QP_PREQ_GRP.populate_output.l_pricing_attr_cur,qp_npreq_ldets_tmp_N4,PRICING_STATUS_CODE,1
9222
9223 INDX,QP_PREQ_GRP.populate_output.l_pricing_attr_cur,qp_npreq_line_attrs_tmp_N3,LINE_DETAIL_INDEX,1
9224 INDX,QP_PREQ_GRP.populate_output.l_pricing_attr_cur,qp_npreq_line_attrs_tmp_N3,ATTRIBUTE_TYPE,2
9225 */
9226 CURSOR l_pricing_attr_cur IS
9227 SELECT /*+ dynamic_sampling(1) */ QPLAT_PRICING.CONTEXT PRICING_CONTEXT,
9228 QPLAT_PRICING.ATTRIBUTE PRICING_ATTRIBUTE,
9229 nvl(QPLAT_PRICING.SETUP_VALUE_FROM,QPLAT_PRICING.VALUE_FROM) PRICING_ATTR_VALUE_FROM,
9230 QPLAT_PRICING.SETUP_VALUE_TO PRICING_ATTR_VALUE_TO,
9231 QPLAT_PRICING.COMPARISON_OPERATOR_TYPE_CODE,
9232 QPLAT_PRICING.LINE_DETAIL_INDEX,
9233 QPLAT_PRICING.LINE_INDEX,
9234 QPLAT_PRICING.VALIDATED_FLAG
9235 FROM qp_npreq_ldets_tmp QPLD ,
9236 qp_npreq_line_attrs_tmp QPLAT_PRICING
9237 WHERE QPLD.LINE_DETAIL_INDEX = QPLAT_PRICING.LINE_DETAIL_INDEX
9238 AND QPLD.PRICING_STATUS_CODE = G_STATUS_NEW
9239 AND QPLAT_PRICING.ATTRIBUTE_TYPE IN ('PRICING','PRODUCT');
9240 --AND QPLAT_PRICING.PRICING_STATUS_CODE = G_STATUS_NEW;
9241
9242 /*
9243 INDX,QP_PREQ_GRP.populate_output.l_ldets_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
9244
9245 INDX,QP_PREQ_GRP.populate_output.l_ldets_cur,qp_npreq_ldets_tmp_N4,PRICING_STATUS_CODE,1
9246
9247 INDX,QP_PREQ_GRP.populate_output.l_ldets_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
9248 */
9249 CURSOR l_ldets_cur IS
9250
9251 SELECT /*+ ORDERED USE_NL(A B C) l_ldets_cur */
9252
9253 a.LINE_DETAIL_INDEX,
9254 a.LINE_DETAIL_TYPE_CODE,
9255 a.LINE_INDEX,
9256 a.CREATED_FROM_LIST_HEADER_ID LIST_HEADER_ID,
9257 a.CREATED_FROM_LIST_LINE_ID LIST_LINE_ID,
9258 a.CREATED_FROM_LIST_LINE_TYPE LIST_LINE_TYPE_CODE,
9259 a.PRICE_BREAK_TYPE_CODE,
9260 a.LINE_QUANTITY,
9261 a.ADJUSTMENT_AMOUNT,
9262 a.AUTOMATIC_FLAG,
9263 a.PRICING_PHASE_ID,
9264 a.OPERAND_CALCULATION_CODE,
9265 a.OPERAND_VALUE,
9266 a.PRICING_GROUP_SEQUENCE,
9267 a.CREATED_FROM_LIST_TYPE_CODE,
9268 a.APPLIED_FLAG,
9269 a.PRICING_STATUS_CODE,
9270 a.PRICING_STATUS_TEXT,
9271 a.LIMIT_CODE,
9272 a.LIMIT_TEXT,
9273 a.LIST_LINE_NO,
9274 a.GROUP_QUANTITY,
9275 a.GROUP_AMOUNT, -- 2388011_new
9276 a.UPDATED_FLAG,
9277 a.PROCESS_CODE,
9278 a.CALCULATION_CODE,
9279 a.CHANGE_REASON_CODE,
9280 a.CHANGE_REASON_TEXT,
9281 b.SUBSTITUTION_VALUE SUBSTITUTION_VALUE_TO,
9282 b.SUBSTITUTION_ATTRIBUTE,
9283 b.ACCRUAL_FLAG,
9284 b.modifier_level_code,
9285 b.ESTIM_GL_VALUE,
9286 b.ACCRUAL_CONVERSION_RATE,
9287 --Pass throuh components
9288 b.OVERRIDE_FLAG,
9289 b.PRINT_ON_INVOICE_FLAG,
9290 b.INVENTORY_ITEM_ID,
9291 b.ORGANIZATION_ID,
9292 b.RELATED_ITEM_ID,
9293 b.RELATIONSHIP_TYPE_ID,
9294 b.ESTIM_ACCRUAL_RATE,
9295 b.EXPIRATION_DATE,
9296 b.BENEFIT_PRICE_LIST_LINE_ID,
9297 b.RECURRING_FLAG,
9298 b.RECURRING_VALUE, --for block pricing bug 3657116
9299 b.BENEFIT_LIMIT,
9300 b.CHARGE_TYPE_CODE,
9301 b.CHARGE_SUBTYPE_CODE,
9302 b.BENEFIT_QTY,
9303 b.BENEFIT_UOM_CODE,
9304 b.PRORATION_TYPE_CODE,
9305 b.INCLUDE_ON_RETURNS_FLAG,
9306 b.REBATE_TRANSACTION_TYPE_CODE,
9307 b.NUMBER_EXPIRATION_PERIODS,
9308 b.EXPIRATION_PERIOD_UOM,
9309 b.COMMENTS,
9310 b.break_uom_code, /* proration */
9311 b.break_uom_context, /* proration */
9312 b.break_uom_attribute /* proration */
9313 FROM qp_npreq_ldets_tmp a,
9314 QP_LIST_LINES b
9315 WHERE a.CREATED_FROM_LIST_LINE_ID = b.LIST_LINE_ID
9316 AND a.PRICING_STATUS_CODE = G_STATUS_NEW;
9317
9318 /*
9319 INDX,QP_PREQ_GRP.populate_output.l_rltd_lines_cur,- No Index Used -,NA,NA
9320 */
9321 CURSOR l_rltd_lines_cur IS
9322 SELECT LINE_INDEX,
9323 LINE_DETAIL_INDEX,
9324 RELATIONSHIP_TYPE_CODE,
9325 RELATED_LINE_INDEX,
9326 RELATED_LINE_DETAIL_INDEX,
9327 PRICING_STATUS_CODE,
9328 PRICING_STATUS_TEXT
9329 FROM qp_npreq_rltd_lines_tmp
9330 WHERE PRICING_STATUS_CODE = G_STATUS_NEW
9331 ORDER BY SETUP_VALUE_FROM;
9332
9333 --for Java Engine interface tables
9334 /*
9335 INDX,QP_PREQ_GRP.populate_output.l_int_lines_cur,- No Index Used -,NA,NA
9336 */
9337 CURSOR l_int_lines_cur IS
9338 SELECT LINE_INDEX,
9339 LINE_ID,
9340 PRICE_LIST_HEADER_ID, -- shu, print out this
9341 LINE_TYPE_CODE,
9342 LINE_QUANTITY,
9343 LINE_UOM_CODE,
9344 LINE_UNIT_PRICE, -- shu
9345 ROUNDING_FACTOR, -- shu
9346 PRICED_QUANTITY,
9347 UOM_QUANTITY,
9348 PRICED_UOM_CODE,
9349 CURRENCY_CODE,
9350 UNIT_PRICE,
9351 PERCENT_PRICE,
9352 PARENT_PRICE,
9353 PARENT_QUANTITY,
9354 PARENT_UOM_CODE,
9355 PRICE_FLAG,
9356 ADJUSTED_UNIT_PRICE,
9357 UPDATED_ADJUSTED_UNIT_PRICE,
9358 PROCESSING_ORDER,
9359 PROCESSED_CODE,
9360 PRICING_STATUS_CODE,
9361 PRICING_STATUS_TEXT,
9362 HOLD_CODE,
9363 HOLD_TEXT,
9364 PRICE_REQUEST_CODE,
9365 PRICING_EFFECTIVE_DATE,
9366 EXTENDED_PRICE /* block pricing */
9367 FROM qp_int_lines;
9368
9369 /*
9370 INDX,QP_PREQ_GRP.populate_output.l_int_qual_cur,qp_int_ldets_N4,PRICING_STATUS_CODE,1
9371
9372 INDX,QP_PREQ_GRP.populate_output.l_int_qual_cur,qp_int_line_attrs_N3,LINE_DETAIL_INDEX,1
9373 INDX,QP_PREQ_GRP.populate_output.l_int_qual_cur,qp_int_line_attrs_N3,ATTRIBUTE_TYPE,2
9374 */
9375 CURSOR l_int_qual_cur (L_ATTRIBUTE_LEVEL VARCHAR2)IS
9376 SELECT /*+ dynamic_sampling(1) */ QPLAT.LINE_INDEX,
9377 QPLAT.LINE_DETAIL_INDEX,
9378 QPLAT.CONTEXT,
9379 QPLAT.ATTRIBUTE,
9380 QPLAT.SETUP_VALUE_FROM,
9381 QPLAT.SETUP_VALUE_TO,
9382 QPLAT.COMPARISON_OPERATOR_TYPE_CODE,
9383 QPLAT.VALIDATED_FLAG,
9384 QPLAT.PRICING_STATUS_CODE,
9385 QPLAT.PRICING_STATUS_TEXT
9386 FROM qp_int_ldets QPLD ,
9387 qp_int_line_attrs QPLAT
9388 WHERE QPLD.LINE_DETAIL_INDEX = QPLAT.LINE_DETAIL_INDEX
9389 AND QPLD.PRICING_STATUS_CODE = G_STATUS_NEW
9390 AND QPLAT.ATTRIBUTE_TYPE = 'QUALIFIER';
9391 --AND QPLAT.PRICING_STATUS_CODE = G_STATUS_NEW;
9392
9393 /*
9394 INDX,QP_PREQ_GRP.populate_output.l_int_pricing_attr_cur,qp_int_ldets_N4,PRICING_STATUS_CODE,1
9395
9396 INDX,QP_PREQ_GRP.populate_output.l_int_pricing_attr_cur,qp_int_line_attrs_N3,LINE_DETAIL_INDEX,1
9397 INDX,QP_PREQ_GRP.populate_output.l_int_pricing_attr_cur,qp_int_line_attrs_N3,ATTRIBUTE_TYPE,2
9398 */
9399 CURSOR l_int_pricing_attr_cur IS
9400 SELECT QPLAT_PRICING.CONTEXT PRICING_CONTEXT,
9401 QPLAT_PRICING.ATTRIBUTE PRICING_ATTRIBUTE,
9402 nvl(QPLAT_PRICING.SETUP_VALUE_FROM,QPLAT_PRICING.VALUE_FROM) PRICING_ATTR_VALUE_FROM,
9403 QPLAT_PRICING.SETUP_VALUE_TO PRICING_ATTR_VALUE_TO,
9404 QPLAT_PRICING.COMPARISON_OPERATOR_TYPE_CODE,
9405 QPLAT_PRICING.LINE_DETAIL_INDEX,
9406 QPLAT_PRICING.LINE_INDEX,
9407 QPLAT_PRICING.VALIDATED_FLAG
9408 FROM qp_int_ldets QPLD ,
9409 qp_int_line_attrs QPLAT_PRICING
9410 WHERE QPLD.LINE_DETAIL_INDEX = QPLAT_PRICING.LINE_DETAIL_INDEX
9411 AND QPLD.PRICING_STATUS_CODE = G_STATUS_NEW
9412 AND QPLAT_PRICING.ATTRIBUTE_TYPE IN ('PRICING','PRODUCT');
9413 --AND QPLAT_PRICING.PRICING_STATUS_CODE = G_STATUS_NEW;
9414
9415 /*
9416 INDX,QP_PREQ_GRP.populate_output.l_int_ldets_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
9417
9418 INDX,QP_PREQ_GRP.populate_output.l_int_ldets_cur,qp_int_ldets_N4,PRICING_STATUS_CODE,1
9419
9420 INDX,QP_PREQ_GRP.populate_output.l_int_ldets_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
9421 */
9422 CURSOR l_int_ldets_cur IS
9423
9424 SELECT /*+ ORDERED USE_NL(A B C) l_int_ldets_cur */
9425
9426 a.LINE_DETAIL_INDEX,
9427 a.LINE_DETAIL_TYPE_CODE,
9428 a.LINE_INDEX,
9429 a.CREATED_FROM_LIST_HEADER_ID LIST_HEADER_ID,
9430 a.CREATED_FROM_LIST_LINE_ID LIST_LINE_ID,
9431 a.CREATED_FROM_LIST_LINE_TYPE LIST_LINE_TYPE_CODE,
9432 a.PRICE_BREAK_TYPE_CODE,
9433 a.LINE_QUANTITY,
9434 a.ADJUSTMENT_AMOUNT,
9435 a.AUTOMATIC_FLAG,
9436 a.PRICING_PHASE_ID,
9437 a.OPERAND_CALCULATION_CODE,
9438 a.OPERAND_VALUE,
9439 a.PRICING_GROUP_SEQUENCE,
9440 a.CREATED_FROM_LIST_TYPE_CODE,
9441 a.APPLIED_FLAG,
9442 a.PRICING_STATUS_CODE,
9443 a.PRICING_STATUS_TEXT,
9444 a.LIMIT_CODE,
9445 a.LIMIT_TEXT,
9446 a.LIST_LINE_NO,
9447 a.GROUP_QUANTITY,
9448 a.GROUP_AMOUNT, -- 2388011_new
9449 a.UPDATED_FLAG,
9450 a.PROCESS_CODE,
9451 a.CALCULATION_CODE,
9452 a.CHANGE_REASON_CODE,
9453 a.CHANGE_REASON_TEXT,
9454 b.SUBSTITUTION_VALUE SUBSTITUTION_VALUE_TO,
9455 b.SUBSTITUTION_ATTRIBUTE,
9456 b.ACCRUAL_FLAG,
9457 b.modifier_level_code,
9458 b.ESTIM_GL_VALUE,
9459 b.ACCRUAL_CONVERSION_RATE,
9460 --Pass throuh components
9461 b.OVERRIDE_FLAG,
9462 b.PRINT_ON_INVOICE_FLAG,
9463 b.INVENTORY_ITEM_ID,
9464 b.ORGANIZATION_ID,
9465 b.RELATED_ITEM_ID,
9466 b.RELATIONSHIP_TYPE_ID,
9467 b.ESTIM_ACCRUAL_RATE,
9468 b.EXPIRATION_DATE,
9469 b.BENEFIT_PRICE_LIST_LINE_ID,
9470 b.RECURRING_FLAG,
9471 b.BENEFIT_LIMIT,
9472 b.CHARGE_TYPE_CODE,
9473 b.CHARGE_SUBTYPE_CODE,
9474 b.BENEFIT_QTY,
9475 b.BENEFIT_UOM_CODE,
9476 b.PRORATION_TYPE_CODE,
9477 b.INCLUDE_ON_RETURNS_FLAG,
9478 b.REBATE_TRANSACTION_TYPE_CODE,
9479 b.NUMBER_EXPIRATION_PERIODS,
9480 b.EXPIRATION_PERIOD_UOM,
9481 b.COMMENTS,
9482 b.break_uom_code, /* proration */
9483 b.break_uom_context, /* proration */
9484 b.break_uom_attribute /* proration */
9485 FROM qp_int_ldets a,
9486 QP_LIST_LINES b
9487 WHERE a.CREATED_FROM_LIST_LINE_ID = b.LIST_LINE_ID
9488 AND a.PRICING_STATUS_CODE = G_STATUS_NEW;
9489
9490 /*
9491 INDX,QP_PREQ_GRP.populate_output.l_int_rltd_lines_cur,- No Index Used -,NA,NA
9492 */
9493 CURSOR l_int_rltd_lines_cur IS
9494 SELECT LINE_INDEX,
9495 LINE_DETAIL_INDEX,
9496 RELATIONSHIP_TYPE_CODE,
9497 RELATED_LINE_INDEX,
9498 RELATED_LINE_DETAIL_INDEX,
9499 PRICING_STATUS_CODE,
9500 PRICING_STATUS_TEXT
9501 FROM qp_int_rltd_lines
9502 WHERE PRICING_STATUS_CODE = G_STATUS_NEW
9503 ORDER BY SETUP_VALUE_FROM;
9504
9505 I PLS_INTEGER :=1;
9506 J PLS_INTEGER :=1;
9507 l_expiration_period_end_date Date;
9508 l_status_code VARCHAR2(30);
9509 l_status_text VARCHAR2(30);
9510 E_ROUTINE_ERROR EXCEPTION;
9511 l_routine VARCHAR2(240):='QP_PREQ_GRP.POPULATE_OUTPUT';
9512 l_debug varchar2(3);
9513
9514 BEGIN
9515 l_debug := QP_PREQ_GRP.G_DEBUG_ENGINE;
9516
9517 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9518 engine_debug('----Before populate l_line_tbl-----');
9519 engine_debug('----Line information return back to caller----');
9520 END IF;
9521
9522 --ADDED BY YANGLI FOR JAVA ENGINE PUB 3086881
9523 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
9524 IF l_debug = FND_API.G_TRUE THEN
9525 QP_PREQ_GRP.ENGINE_DEBUG('Populate_output: Java Engine not Installed ----------');
9526 END IF;
9527 --ADDED BY YANGLI FOR JAVA ENGINE PUB 3086881
9528
9529 FOR l_line IN l_lines_cur LOOP
9530 --requirement from Jay, will cause holes in pl/sql table.
9531 I := l_line.LINE_INDEX;
9532 x_line_tbl(I).LINE_INDEX := l_line.LINE_INDEX;
9533 x_line_tbl(I).LINE_ID := l_line.LINE_ID;
9534 x_line_tbl(I).HEADER_ID := l_line.PRICE_LIST_HEADER_ID;
9535 x_line_tbl(I).LINE_TYPE_CODE := l_line.LINE_TYPE_CODE;
9536 x_line_tbl(I).PRICED_QUANTITY := l_line.PRICED_QUANTITY;
9537 x_line_tbl(I).CURRENCY_CODE := l_line.CURRENCY_CODE;
9538 x_line_tbl(I).ROUNDING_FACTOR := l_line.ROUNDING_FACTOR;
9539 x_line_tbl(I).PRICED_UOM_CODE := l_line.PRICED_UOM_CODE;
9540 x_line_tbl(I).UNIT_PRICE := l_line.UNIT_PRICE; --shu_latest
9541 x_line_tbl(I).LINE_QUANTITY:=l_line.LINE_QUANTITY;
9542 x_line_tbl(I).LINE_UOM_CODE:=l_line.LINE_UOM_CODE;
9543 x_line_tbl(I).LINE_UNIT_PRICE := l_line.LINE_UNIT_PRICE; --shu_latest
9544 x_line_tbl(I).UOM_QUANTITY := l_line.UOM_QUANTITY; --shu_latest
9545 x_line_tbl(I).PERCENT_PRICE := l_line.PERCENT_PRICE;
9546 x_line_tbl(I).ADJUSTED_UNIT_PRICE := l_line.ADJUSTED_UNIT_PRICE;
9547 x_line_tbl(I).UPDATED_ADJUSTED_UNIT_PRICE := l_line.UPDATED_ADJUSTED_UNIT_PRICE;
9548 x_line_tbl(I).PARENT_PRICE := l_line.PARENT_PRICE;
9549 x_line_tbl(I).PARENT_QUANTITY := l_line.PARENT_QUANTITY;
9550 x_line_tbl(I).PARENT_UOM_CODE := l_line.PARENT_UOM_CODE;
9551 x_line_tbl(I).PROCESSED_CODE := l_line.PROCESSED_CODE;
9552 x_line_tbl(I).PRICE_FLAG := l_line.PRICE_FLAG;
9553 x_line_tbl(I).STATUS_CODE := l_line.PRICING_STATUS_CODE;
9554 x_line_tbl(I).STATUS_TEXT := substr(l_line.PRICING_STATUS_TEXT,1,2000); -- shulin, fix bug 1745788
9555 x_line_tbl(I).HOLD_CODE := l_line.HOLD_CODE;
9556 x_line_tbl(I).HOLD_TEXT := substr(l_line.HOLD_TEXT,1,240);
9557 x_line_tbl(I).PRICE_REQUEST_CODE := l_line.PRICE_REQUEST_CODE;
9558 x_line_tbl(I).PRICING_EFFECTIVE_DATE := l_line.PRICING_EFFECTIVE_DATE;
9559 x_line_tbl(I).EXTENDED_PRICE := l_line.EXTENDED_PRICE; -- block pricing
9560 --x_line_tbl(I).EXTENDED_SELLING_PRICE_UR := l_line.EXTENDED_SELLING_PRICE_UR; --[prarasto:Post Round], [julin/postround] redesign
9561 --x_line_tbl(I).ORDER_UOM_SELLING_PRICE_UR := l_line.ORDER_UOM_SELLING_PRICE_UR; --[prarasto:Post Round]
9562 --x_line_tbl(I).ADJUSTED_UNIT_PRICE_UR := l_line.ADJUSTED_UNIT_PRICE_UR; --[prarasto:Post Round]
9563
9564 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9565 engine_debug('LINE_INDEX :='||l_line.LINE_INDEX);
9566 engine_debug('LINE_ID :='||l_line.LINE_ID);
9567 engine_debug('PRICE_LIST_HEADER_ID :='||l_line.PRICE_LIST_HEADER_ID); -- shu, print out this
9568 engine_debug('LINE_TYPE_CODE :='||l_line.LINE_TYPE_CODE);
9569 engine_debug('UOM_QUANTITY :='||l_line.UOM_QUANTITY);
9570 engine_debug('CURRENCY_CODE :='||l_line.CURRENCY_CODE);
9571 engine_debug('ROUNDING_FACTOR :='||l_line.ROUNDING_FACTOR);
9572 engine_debug('PRICED_QUANTITY :='||l_line.PRICED_QUANTITY);
9573 engine_debug('PRICED_UOM_CODE :='||l_line.PRICED_UOM_CODE);
9574 engine_debug('UNIT_PRICE :='||l_line.UNIT_PRICE);
9575 engine_debug('LINE_QUANTITY:='||l_line.LINE_QUANTITY);
9576 engine_debug('LINE_UOM_CODE:='||l_line.LINE_UOM_CODE);
9577 engine_debug('LINE_UNIT_PRICE:='||l_line.LINE_UNIT_PRICE); -- shu_latest
9578 engine_debug('PERCENT_PRICE :='||l_line.PERCENT_PRICE);
9579 engine_debug('ADJUSTED_UNIT_PRICE :='||l_line.ADJUSTED_UNIT_PRICE);
9580 engine_debug('PARENT_PRICE :='||l_line.PARENT_PRICE);
9581 engine_debug('PARENT_QUANTITY :='||l_line.PARENT_QUANTITY);
9582 engine_debug('PARENT_UOM_CODE :='||l_line.PARENT_UOM_CODE);
9583 engine_debug('processed_code :='||l_line.processed_code);
9584 engine_debug('Price Flag :='||l_line.price_flag);
9585 engine_debug('STATUS_CODE :='||l_line.PRICING_STATUS_CODE);
9586 engine_debug('STATUS_TEXT :='|| substr(l_line.PRICING_STATUS_TEXT,1,2000));
9587 engine_debug('HOLD_CODE := '||l_line.HOLD_CODE);
9588 engine_debug('HOLD_TEXT := '||substr(l_line.HOLD_TEXT,1,240));
9589 engine_debug('PRICE_REQUEST_CODE := '||l_line.PRICE_REQUEST_CODE);
9590 engine_debug('PRICING_DATE := '||l_line.PRICING_EFFECTIVE_DATE);
9591 engine_debug('EXTENDED_PRICE := '||l_line.EXTENDED_PRICE);
9592 --engine_debug('EXTENDED_SELLING_PRICE_UR := '|| l_line.EXTENDED_SELLING_PRICE_UR); --[prarasto:Post Round], [julin/postround] redesign
9593 --engine_debug('ORDER_UOM_SELLING_PRICE_UR := '|| l_line.ORDER_UOM_SELLING_PRICE_UR); --[prarasto:Post Round]
9594 --engine_debug('ADJUSTED_UNIT_PRICE_UR := '|| l_line.ADJUSTED_UNIT_PRICE_UR); --[prarasto:Post Round]
9595 END IF;
9596
9597 END LOOP;
9598 I:=1;
9599
9600
9601 --Populate Line detail
9602 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9603 engine_debug('----Line detail information return back to caller----');
9604 END IF;
9605 FOR l_dets IN l_ldets_cur LOOP
9606 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9607 engine_debug('----populating line detail output------');
9608 END IF;
9609
9610 --requirement by Jay, will cause holes in pl/sql tbl
9611 I := l_dets.line_detail_index;
9612 x_line_detail_tbl(I).LINE_DETAIL_INDEX := l_dets.LINE_DETAIL_INDEX;
9613 x_line_detail_tbl(I).LINE_DETAIL_TYPE_CODE:=l_dets.LINE_DETAIL_TYPE_CODE;
9614 x_line_detail_tbl(I).LINE_INDEX:=l_dets.LINE_INDEX;
9615 x_line_detail_tbl(I).LIST_HEADER_ID:=l_dets.LIST_HEADER_ID;
9616 x_line_detail_tbl(I).LIST_LINE_ID:=l_dets.LIST_LINE_ID;
9617 x_line_detail_tbl(I).LIST_LINE_TYPE_CODE:=l_dets.LIST_LINE_TYPE_CODE;
9618 x_line_detail_tbl(I).SUBSTITUTION_TO:=l_dets.SUBSTITUTION_VALUE_TO;
9619 x_line_detail_tbl(I).LINE_QUANTITY :=l_dets.LINE_QUANTITY;
9620 x_line_detail_tbl(I).ADJUSTMENT_AMOUNT := l_dets.ADJUSTMENT_AMOUNT;
9621 x_line_detail_tbl(I).AUTOMATIC_FLAG := l_dets.AUTOMATIC_FLAG;
9622 x_line_detail_tbl(I).APPLIED_FLAG := l_dets.APPLIED_FLAG;
9623 x_line_detail_tbl(I).PRICING_GROUP_SEQUENCE := l_dets.PRICING_GROUP_SEQUENCE;
9624 x_line_detail_tbl(I).CREATED_FROM_LIST_TYPE_CODE:=l_dets.CREATED_FROM_LIST_TYPE_CODE;
9625 x_line_detail_tbl(I).PRICE_BREAK_TYPE_CODE := l_dets.PRICE_BREAK_TYPE_CODE;
9626 x_line_detail_tbl(I).OVERRIDE_FLAG := l_dets.override_flag;
9627 x_line_detail_tbl(I).PRINT_ON_INVOICE_FLAG :=l_dets.print_on_invoice_flag;
9628 x_line_detail_tbl(I).PRICING_PHASE_ID := l_dets.PRICING_PHASE_ID;
9629 x_line_detail_tbl(I).APPLIED_FLAG := l_dets.APPLIED_FLAG;
9630 x_line_detail_tbl(I).OPERAND_CALCULATION_CODE := l_dets.OPERAND_CALCULATION_CODE;
9631 x_line_detail_tbl(I).OPERAND_VALUE := l_dets.OPERAND_VALUE;
9632 x_line_detail_tbl(I).STATUS_CODE:=l_dets.PRICING_STATUS_CODE;
9633 x_line_detail_tbl(I).STATUS_TEXT:=substr(l_dets.PRICING_STATUS_TEXT,1,240);
9634 x_line_detail_tbl(I).SUBSTITUTION_ATTRIBUTE:=l_dets.SUBSTITUTION_ATTRIBUTE;
9635 x_line_detail_tbl(I).ACCRUAL_FLAG:=l_dets.ACCRUAL_FLAG;
9636 x_line_detail_tbl(I).LIST_LINE_NO:=l_dets.LIST_LINE_NO;
9637 x_line_detail_tbl(I).ESTIM_GL_VALUE:=l_dets.ESTIM_GL_VALUE;
9638 x_line_detail_tbl(I).ACCRUAL_CONVERSION_RATE:=l_dets.ACCRUAL_CONVERSION_RATE;
9639 --Pass throuh components
9640 x_line_detail_tbl(I).OVERRIDE_FLAG:= l_dets.OVERRIDE_FLAG;
9641 x_line_detail_tbl(I).PRINT_ON_INVOICE_FLAG:=l_dets.PRINT_ON_INVOICE_FLAG;
9642 x_line_detail_tbl(I).INVENTORY_ITEM_ID:=l_dets.INVENTORY_ITEM_ID;
9643 x_line_detail_tbl(I).ORGANIZATION_ID:=l_dets.ORGANIZATION_ID;
9644 x_line_detail_tbl(I).RELATED_ITEM_ID:= l_dets.RELATED_ITEM_ID;
9645 x_line_detail_tbl(I).RELATIONSHIP_TYPE_ID:=l_dets.RELATIONSHIP_TYPE_ID;
9646 x_line_detail_tbl(I).ESTIM_ACCRUAL_RATE:=l_dets.ESTIM_ACCRUAL_RATE;
9647
9648 x_line_detail_tbl(I).BENEFIT_PRICE_LIST_LINE_ID:=l_dets.BENEFIT_PRICE_LIST_LINE_ID;
9649 x_line_detail_tbl(I).RECURRING_FLAG:= l_dets.RECURRING_FLAG;
9650 x_line_detail_tbl(I).RECURRING_VALUE:= l_dets.RECURRING_VALUE; --for block pricing bug 3657116
9651 x_line_detail_tbl(I).BENEFIT_LIMIT:= l_dets.BENEFIT_LIMIT;
9652 x_line_detail_tbl(I).CHARGE_TYPE_CODE:= l_dets.CHARGE_TYPE_CODE;
9653 x_line_detail_tbl(I).CHARGE_SUBTYPE_CODE:=l_dets.CHARGE_SUBTYPE_CODE;
9654 x_line_detail_tbl(I).BENEFIT_QTY:=l_dets.BENEFIT_QTY;
9655 x_line_detail_tbl(I).BENEFIT_UOM_CODE:=l_dets.BENEFIT_UOM_CODE;
9656 x_line_detail_tbl(I).PRORATION_TYPE_CODE:=l_dets.PRORATION_TYPE_CODE;
9657 x_line_detail_tbl(I).INCLUDE_ON_RETURNS_FLAG := l_dets.INCLUDE_ON_RETURNS_FLAG;
9658 x_line_detail_tbl(I).LIST_LINE_NO := l_dets.LIST_LINE_NO;
9659 x_line_detail_tbl(I).MODIFIER_LEVEL_CODE := l_dets.MODIFIER_LEVEL_CODE;
9660 x_line_detail_tbl(I).GROUP_VALUE := nvl(l_dets.GROUP_QUANTITY,l_dets.GROUP_AMOUNT); -- 2388011_new
9661 x_line_detail_tbl(I).COMMENTS := l_dets.COMMENTS;
9662 x_line_detail_tbl(I).UPDATED_FLAG := l_dets.UPDATED_FLAG;
9663 x_line_detail_tbl(I).PROCESS_CODE := l_dets.PROCESS_CODE;
9664 x_line_detail_tbl(I).LIMIT_CODE := l_dets.LIMIT_CODE;
9665 x_line_detail_tbl(I).LIMIT_TEXT := substr(l_dets.LIMIT_TEXT,1,240);
9666 x_line_detail_tbl(I).CALCULATION_CODE := l_dets.CALCULATION_CODE;
9667 x_line_detail_tbl(I).CHANGE_REASON_CODE := l_dets.CHANGE_REASON_CODE;
9668 x_line_detail_tbl(I).CHANGE_REASON_CODE := substr(l_dets.CHANGE_REASON_CODE,1,240);
9669 x_line_detail_tbl(I).BREAK_UOM_CODE := l_dets.BREAK_UOM_CODE; /* proration */
9670 x_line_detail_tbl(I).BREAK_UOM_CONTEXT := l_dets.BREAK_UOM_CONTEXT; /* proration */
9671 x_line_detail_tbl(I).BREAK_UOM_ATTRIBUTE := l_dets.BREAK_UOM_ATTRIBUTE; /* proration */
9672
9673 IF (l_dets.LINE_DETAIL_TYPE_CODE = G_COUPON_ISSUE) THEN
9674 SET_EXPIRATION_DATES (l_dets.number_expiration_periods,
9675 l_dets.EXPIRATION_PERIOD_UOM,
9676 l_dets.line_index,
9677 l_expiration_period_end_date,
9678 l_status_code,
9679 l_status_text);
9680 END IF;
9681
9682 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
9683 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9684 engine_debug(l_routine||':'||substr(l_status_text,1,240));
9685 END IF;
9686 END IF;
9687
9688 x_line_detail_tbl(I).EXPIRATION_DATE :=l_expiration_period_end_date;
9689 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9690 engine_debug('LINE_DETAIL_INDEX :='|| l_dets.LINE_DETAIL_INDEX);
9691 engine_debug('LINE_DETAIL_TYPE_CODE:='||l_dets.LINE_DETAIL_TYPE_CODE);
9692 engine_debug('LINE_INDEX:='||l_dets.LINE_INDEX);
9693 engine_debug('LIST_HEADER_ID:='||l_dets.LIST_HEADER_ID);
9694 engine_debug('LIST_LINE_ID:='||l_dets.LIST_LINE_ID);
9695 engine_debug('LIST_LINE_TYPE_CODE:='||l_dets.LIST_LINE_TYPE_CODE);
9696 engine_debug('SUBSTITUTION_TO:='||l_dets.SUBSTITUTION_VALUE_TO);
9697 engine_debug('LINE_QUANTITY :='||l_dets.LINE_QUANTITY);
9698 engine_debug('ADJUSTMENT_AMOUNT :='|| l_dets.ADJUSTMENT_AMOUNT);
9699 engine_debug('AUTOMATIC_FLAG :='|| l_dets.AUTOMATIC_FLAG);
9700 engine_debug('APPLIED_FLAG :='|| l_dets.APPLIED_FLAG);
9701 engine_debug('PRICING_GROUP_SEQUENCE :='|| l_dets.PRICING_GROUP_SEQUENCE);
9702 engine_debug('CREATED_FROM_LIST_TYPE_CODE:='||l_dets.CREATED_FROM_LIST_TYPE_CODE);
9703 engine_debug('PRICE_BREAK_TYPE_CODE :='|| l_dets.PRICE_BREAK_TYPE_CODE);
9704 engine_debug('OVERRIDE_FLAG :='|| l_dets.override_flag);
9705 engine_debug('PRINT_ON_INVOICE_FLAG :='||l_dets.print_on_invoice_flag);
9706 engine_debug('PRICING_PHASE_ID :='|| l_dets.PRICING_PHASE_ID);
9707 engine_debug('OPERAND_CALCULATION_CODE :='|| l_dets.OPERAND_CALCULATION_CODE);
9708 engine_debug('OPERAND_VALUE :='|| l_dets.OPERAND_VALUE);
9709 engine_debug('STATUS_CODE:='||l_dets.PRICING_STATUS_CODE);
9710 engine_debug('STATUS_TEXT:='||substr(l_dets.PRICING_STATUS_TEXT,1,240));
9711 engine_debug('SUBSTITUTION_ATTRIBUTE:='||l_dets.SUBSTITUTION_ATTRIBUTE);
9712 engine_debug('ACCRUAL_FLAG:='||l_dets.ACCRUAL_FLAG);
9713 engine_debug('LIST_LINE_NO:='||l_dets.LIST_LINE_NO);
9714 engine_debug('ESTIM_GL_VALUE:='||l_dets.ESTIM_GL_VALUE);
9715 engine_debug('ACCRUAL_CONVERSION_RATE:='||l_dets.ACCRUAL_CONVERSION_RATE);
9716 END IF;
9717 --Pass throuh components
9718 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9719 engine_debug('OVERRIDE_FLAG:='|| l_dets.OVERRIDE_FLAG);
9720 engine_debug('INVENTORY_ITEM_ID:='||l_dets.INVENTORY_ITEM_ID);
9721 engine_debug('ORGANIZATION_ID:='||l_dets.ORGANIZATION_ID);
9722 engine_debug('RELATED_ITEM_ID:='|| l_dets.RELATED_ITEM_ID);
9723 engine_debug('RELATIONSHIP_TYPE_ID:='||l_dets.RELATIONSHIP_TYPE_ID);
9724 engine_debug('ESTIM_ACCRUAL_RATE:='||l_dets.ESTIM_ACCRUAL_RATE);
9725 engine_debug('EXPIRATION_DATE:='||l_dets.EXPIRATION_DATE);
9726 engine_debug('BENEFIT_PRICE_LIST_LINE_ID:='||l_dets.BENEFIT_PRICE_LIST_LINE_ID);
9727 engine_debug('RECURRING_FLAG:='|| l_dets.RECURRING_FLAG);
9728 engine_debug('BENEFIT_LIMIT:='|| l_dets.BENEFIT_LIMIT);
9729 engine_debug('CHARGE_TYPE_CODE:='|| l_dets.CHARGE_TYPE_CODE);
9730 engine_debug('CHARGE_SUBTYPE_CODE:='||l_dets.CHARGE_SUBTYPE_CODE);
9731 engine_debug('BENEFIT_QTY:='||l_dets.BENEFIT_QTY);
9732 engine_debug('BENEFIT_UOM_CODE:='||l_dets.BENEFIT_UOM_CODE);
9733 engine_debug('PRORATION_TYPE_CODE:='||l_dets.PRORATION_TYPE_CODE);
9734 engine_debug('INCLUDE_ON_RETURNS_FLAG :='|| l_dets.INCLUDE_ON_RETURNS_FLAG);
9735 engine_debug('MODIFIER_LEVEL_CODE :='|| l_dets.MODIFIER_LEVEL_CODE);
9736 engine_debug('GROUP VALUE :='|| l_dets.GROUP_QUANTITY);
9737 engine_debug('LIMIT_CODE :='|| l_dets.LIMIT_CODE);
9738 engine_debug('LIMIT_TEXT :='|| substr(l_dets.LIMIT_TEXT,1,240));
9739 engine_debug('CHANGE_REASON_CODE :='|| l_dets.CHANGE_REASON_CODE);
9740 engine_debug('CHANGE_REASON_TEXT :='|| substr(l_dets.CHANGE_REASON_TEXT,1,240));
9741 engine_debug('BREAK_UOM_CODE :='|| l_dets.BREAK_UOM_CODE); /* proration */
9742 engine_debug('BREAK_UOM_CONTEXT :='|| l_dets.BREAK_UOM_CONTEXT); /* proration */
9743 engine_debug('BREAK_UOM_ATTRIBUTE :='|| l_dets.BREAK_UOM_ATTRIBUTE); /* proration */
9744
9745 END IF;
9746 --I:=I+1;
9747 END LOOP;
9748 I:=1;
9749
9750 --Populate Qualifier detail
9751 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9752 engine_debug('----Before populate x_qual_tbl-----');
9753 END IF;
9754 FOR l_qual IN l_qual_cur(G_DETAIL_LEVEL) LOOP
9755 x_line_detail_qual_tbl(I).LINE_DETAIL_INDEX := l_qual.LINE_DETAIL_INDEX;
9756 x_line_detail_qual_tbl(I).QUALIFIER_CONTEXT := l_qual.CONTEXT;
9757 x_line_detail_qual_tbl(I).QUALIFIER_ATTRIBUTE := l_qual.ATTRIBUTE;
9758 x_line_detail_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM := l_qual.SETUP_VALUE_FROM;
9759 x_line_detail_qual_tbl(I).QUALIFIER_ATTR_VALUE_TO := l_qual.SETUP_VALUE_TO;
9760 x_line_detail_qual_tbl(I).COMPARISON_OPERATOR_CODE := l_qual.COMPARISON_OPERATOR_TYPE_CODE;
9761 x_line_detail_qual_tbl(I).status_code := l_qual.PRICING_STATUS_CODE;
9762 x_line_detail_qual_tbl(I).VALIDATED_FLAG :=l_qual.VALIDATED_FLAG;
9763
9764 I:=I+1;
9765 END LOOP;
9766 I:=1;
9767
9768 --LINE ATTRIBUTE DETAIL NEEDED
9769 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9770 engine_debug('----Before populate attr_tbl-----');
9771 END IF;
9772 FOR l_prc IN l_pricing_attr_cur LOOP
9773 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9774 engine_debug('--------populating x_line_detail_attr----------');
9775 engine_debug('Line Detail Index: '||l_prc.LINE_DETAIL_INDEX);
9776 END IF;
9777 x_line_detail_attr_tbl(I).LINE_DETAIL_INDEX := l_prc.LINE_DETAIL_INDEX;
9778 x_line_detail_attr_tbl(I).PRICING_CONTEXT := l_prc.PRICING_CONTEXT;
9779 x_line_detail_attr_tbl(I).PRICING_ATTRIBUTE := l_prc.PRICING_ATTRIBUTE;
9780 x_line_detail_attr_tbl(I).PRICING_ATTR_VALUE_FROM :=l_prc.PRICING_ATTR_VALUE_FROM;
9781 x_line_detail_attr_tbl(I).PRICING_ATTR_VALUE_TO :=l_prc.PRICING_ATTR_VALUE_TO;
9782 x_line_detail_attr_tbl(I).VALIDATED_FLAG :=l_prc.VALIDATED_FLAG;
9783 --x_line_attr_tbl(I).PRICING_STATUS_CODE := l_prc.PRICING_STATUS_CODE;
9784 --x_line_attr_tbl(I).PRICING_STATUS_TEXT := l_prc.PRICING_STATUS_TEXT;
9785 I:=I+1;
9786 END LOOP;
9787
9788 I:=1;
9789
9790 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9791 engine_debug('----Before populate l_rltd_lines_tbl-----');
9792 END IF;
9793 FOR l_rltd IN l_rltd_lines_cur LOOP
9794 x_related_lines_tbl(I).LINE_INDEX := l_rltd.Line_index;
9795 x_related_lines_tbl(I).LINE_DETAIL_INDEX := l_rltd.LINE_DETAIL_INDEX;
9796 x_related_lines_tbl(I).RELATIONSHIP_TYPE_CODE :=l_rltd.RELATIONSHIP_TYPE_CODE;
9797 x_related_lines_tbl(I).RELATED_LINE_INDEX :=l_rltd.RELATED_LINE_INDEX;
9798 x_related_lines_tbl(I).RELATED_LINE_DETAIL_INDEX :=l_rltd.RELATED_LINE_DETAIL_INDEX;
9799 x_related_lines_tbl(I).STATUS_CODE :=l_rltd.PRICING_STATUS_CODE;
9800 x_related_lines_tbl(I).STATUS_TEXT :=l_rltd.PRICING_STATUS_TEXT;
9801 I:=I+1;
9802 END LOOP;
9803 ELSE
9804 IF l_debug = FND_API.G_TRUE THEN
9805 QP_PREQ_GRP.ENGINE_DEBUG('Populate_output: Java Engine is Installed ----------');
9806 END IF;
9807 --ADDED BY YANGLI FOR JAVA ENGINE PUB 3086881
9808
9809 FOR l_line IN l_int_lines_cur LOOP
9810 --requirement from Jay, will cause holes in pl/sql table.
9811 I := l_line.LINE_INDEX;
9812 x_line_tbl(I).LINE_INDEX := l_line.LINE_INDEX;
9813 x_line_tbl(I).LINE_ID := l_line.LINE_ID;
9814 x_line_tbl(I).HEADER_ID := l_line.PRICE_LIST_HEADER_ID;
9815 x_line_tbl(I).LINE_TYPE_CODE := l_line.LINE_TYPE_CODE;
9816 x_line_tbl(I).PRICED_QUANTITY := l_line.PRICED_QUANTITY;
9817 x_line_tbl(I).CURRENCY_CODE := l_line.CURRENCY_CODE;
9818 x_line_tbl(I).ROUNDING_FACTOR := l_line.ROUNDING_FACTOR;
9819 x_line_tbl(I).PRICED_UOM_CODE := l_line.PRICED_UOM_CODE;
9820 x_line_tbl(I).UNIT_PRICE := l_line.UNIT_PRICE; --shu_latest
9821 x_line_tbl(I).LINE_QUANTITY:=l_line.LINE_QUANTITY;
9822 x_line_tbl(I).LINE_UOM_CODE:=l_line.LINE_UOM_CODE;
9823 x_line_tbl(I).LINE_UNIT_PRICE := l_line.LINE_UNIT_PRICE; --shu_latest
9824 x_line_tbl(I).UOM_QUANTITY := l_line.UOM_QUANTITY; --shu_latest
9825 x_line_tbl(I).PERCENT_PRICE := l_line.PERCENT_PRICE;
9826 x_line_tbl(I).ADJUSTED_UNIT_PRICE := l_line.ADJUSTED_UNIT_PRICE;
9827 x_line_tbl(I).UPDATED_ADJUSTED_UNIT_PRICE := l_line.UPDATED_ADJUSTED_UNIT_PRICE;
9828 x_line_tbl(I).PARENT_PRICE := l_line.PARENT_PRICE;
9829 x_line_tbl(I).PARENT_QUANTITY := l_line.PARENT_QUANTITY;
9830 x_line_tbl(I).PARENT_UOM_CODE := l_line.PARENT_UOM_CODE;
9831 x_line_tbl(I).PROCESSED_CODE := l_line.PROCESSED_CODE;
9832 x_line_tbl(I).PRICE_FLAG := l_line.PRICE_FLAG;
9833 x_line_tbl(I).STATUS_CODE := l_line.PRICING_STATUS_CODE;
9834 x_line_tbl(I).STATUS_TEXT := substr(l_line.PRICING_STATUS_TEXT,1,2000); -- shulin, fix bug 1745788
9835 x_line_tbl(I).HOLD_CODE := l_line.HOLD_CODE;
9836 x_line_tbl(I).HOLD_TEXT := substr(l_line.HOLD_TEXT,1,240);
9837 x_line_tbl(I).PRICE_REQUEST_CODE := l_line.PRICE_REQUEST_CODE;
9838 x_line_tbl(I).PRICING_EFFECTIVE_DATE := l_line.PRICING_EFFECTIVE_DATE;
9839 x_line_tbl(I).EXTENDED_PRICE := l_line.EXTENDED_PRICE; -- block pricing
9840
9841 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9842 engine_debug('LINE_INDEX :='||l_line.LINE_INDEX);
9843 engine_debug('LINE_ID :='||l_line.LINE_ID);
9844 engine_debug('PRICE_LIST_HEADER_ID :='||l_line.PRICE_LIST_HEADER_ID); -- shu, print out this
9845 engine_debug('LINE_TYPE_CODE :='||l_line.LINE_TYPE_CODE);
9846 engine_debug('UOM_QUANTITY :='||l_line.UOM_QUANTITY);
9847 engine_debug('CURRENCY_CODE :='||l_line.CURRENCY_CODE);
9848 engine_debug('ROUNDING_FACTOR :='||l_line.ROUNDING_FACTOR);
9849 engine_debug('PRICED_QUANTITY :='||l_line.PRICED_QUANTITY);
9850 engine_debug('PRICED_UOM_CODE :='||l_line.PRICED_UOM_CODE);
9851 engine_debug('UNIT_PRICE :='||l_line.UNIT_PRICE);
9852 engine_debug('LINE_QUANTITY:='||l_line.LINE_QUANTITY);
9853 engine_debug('LINE_UOM_CODE:='||l_line.LINE_UOM_CODE);
9854 engine_debug('LINE_UNIT_PRICE:='||l_line.LINE_UNIT_PRICE); -- shu_latest
9855 engine_debug('PERCENT_PRICE :='||l_line.PERCENT_PRICE);
9856 engine_debug('ADJUSTED_UNIT_PRICE :='||l_line.ADJUSTED_UNIT_PRICE);
9857 engine_debug('PARENT_PRICE :='||l_line.PARENT_PRICE);
9858 engine_debug('PARENT_QUANTITY :='||l_line.PARENT_QUANTITY);
9859 engine_debug('PARENT_UOM_CODE :='||l_line.PARENT_UOM_CODE);
9860 engine_debug('processed_code :='||l_line.processed_code);
9861 engine_debug('Price Flag :='||l_line.price_flag);
9862 engine_debug('STATUS_CODE :='||l_line.PRICING_STATUS_CODE);
9863 engine_debug('STATUS_TEXT :='|| substr(l_line.PRICING_STATUS_TEXT,1,2000));
9864 engine_debug('HOLD_CODE := '||l_line.HOLD_CODE);
9865 engine_debug('HOLD_TEXT := '||substr(l_line.HOLD_TEXT,1,240));
9866 engine_debug('PRICE_REQUEST_CODE := '||l_line.PRICE_REQUEST_CODE);
9867 engine_debug('PRICING_DATE := '||l_line.PRICING_EFFECTIVE_DATE);
9868 engine_debug('EXTENDED_PRICE := '||l_line.EXTENDED_PRICE);
9869 END IF;
9870
9871 END LOOP;
9872 I:=1;
9873
9874
9875 --Populate Line detail
9876 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9877 engine_debug('----Line detail information return back to caller----');
9878 END IF;
9879 FOR l_dets IN l_int_ldets_cur LOOP
9880 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9881 engine_debug('----populating line detail output------');
9882 END IF;
9883
9884 --requirement by Jay, will cause holes in pl/sql tbl
9885 I := l_dets.line_detail_index;
9886 x_line_detail_tbl(I).LINE_DETAIL_INDEX := l_dets.LINE_DETAIL_INDEX;
9887 x_line_detail_tbl(I).LINE_DETAIL_TYPE_CODE:=l_dets.LINE_DETAIL_TYPE_CODE;
9888 x_line_detail_tbl(I).LINE_INDEX:=l_dets.LINE_INDEX;
9889 x_line_detail_tbl(I).LIST_HEADER_ID:=l_dets.LIST_HEADER_ID;
9890 x_line_detail_tbl(I).LIST_LINE_ID:=l_dets.LIST_LINE_ID;
9891 x_line_detail_tbl(I).LIST_LINE_TYPE_CODE:=l_dets.LIST_LINE_TYPE_CODE;
9892 x_line_detail_tbl(I).SUBSTITUTION_TO:=l_dets.SUBSTITUTION_VALUE_TO;
9893 x_line_detail_tbl(I).LINE_QUANTITY :=l_dets.LINE_QUANTITY;
9894 x_line_detail_tbl(I).ADJUSTMENT_AMOUNT := l_dets.ADJUSTMENT_AMOUNT;
9895 x_line_detail_tbl(I).AUTOMATIC_FLAG := l_dets.AUTOMATIC_FLAG;
9896 x_line_detail_tbl(I).APPLIED_FLAG := l_dets.APPLIED_FLAG;
9897 x_line_detail_tbl(I).PRICING_GROUP_SEQUENCE := l_dets.PRICING_GROUP_SEQUENCE;
9898 x_line_detail_tbl(I).CREATED_FROM_LIST_TYPE_CODE:=l_dets.CREATED_FROM_LIST_TYPE_CODE;
9899 x_line_detail_tbl(I).PRICE_BREAK_TYPE_CODE := l_dets.PRICE_BREAK_TYPE_CODE;
9900 x_line_detail_tbl(I).OVERRIDE_FLAG := l_dets.override_flag;
9901 x_line_detail_tbl(I).PRINT_ON_INVOICE_FLAG :=l_dets.print_on_invoice_flag;
9902 x_line_detail_tbl(I).PRICING_PHASE_ID := l_dets.PRICING_PHASE_ID;
9903 x_line_detail_tbl(I).APPLIED_FLAG := l_dets.APPLIED_FLAG;
9904 x_line_detail_tbl(I).OPERAND_CALCULATION_CODE := l_dets.OPERAND_CALCULATION_CODE;
9905 x_line_detail_tbl(I).OPERAND_VALUE := l_dets.OPERAND_VALUE;
9906 x_line_detail_tbl(I).STATUS_CODE:=l_dets.PRICING_STATUS_CODE;
9907 x_line_detail_tbl(I).STATUS_TEXT:=substr(l_dets.PRICING_STATUS_TEXT,1,240);
9908 x_line_detail_tbl(I).SUBSTITUTION_ATTRIBUTE:=l_dets.SUBSTITUTION_ATTRIBUTE;
9909 x_line_detail_tbl(I).ACCRUAL_FLAG:=l_dets.ACCRUAL_FLAG;
9910 x_line_detail_tbl(I).LIST_LINE_NO:=l_dets.LIST_LINE_NO;
9911 x_line_detail_tbl(I).ESTIM_GL_VALUE:=l_dets.ESTIM_GL_VALUE;
9912 x_line_detail_tbl(I).ACCRUAL_CONVERSION_RATE:=l_dets.ACCRUAL_CONVERSION_RATE;
9913 --Pass throuh components
9914 x_line_detail_tbl(I).OVERRIDE_FLAG:= l_dets.OVERRIDE_FLAG;
9915 x_line_detail_tbl(I).PRINT_ON_INVOICE_FLAG:=l_dets.PRINT_ON_INVOICE_FLAG;
9916 x_line_detail_tbl(I).INVENTORY_ITEM_ID:=l_dets.INVENTORY_ITEM_ID;
9917 x_line_detail_tbl(I).ORGANIZATION_ID:=l_dets.ORGANIZATION_ID;
9918 x_line_detail_tbl(I).RELATED_ITEM_ID:= l_dets.RELATED_ITEM_ID;
9919 x_line_detail_tbl(I).RELATIONSHIP_TYPE_ID:=l_dets.RELATIONSHIP_TYPE_ID;
9920 x_line_detail_tbl(I).ESTIM_ACCRUAL_RATE:=l_dets.ESTIM_ACCRUAL_RATE;
9921
9922 x_line_detail_tbl(I).BENEFIT_PRICE_LIST_LINE_ID:=l_dets.BENEFIT_PRICE_LIST_LINE_ID;
9923 x_line_detail_tbl(I).RECURRING_FLAG:= l_dets.RECURRING_FLAG;
9924 x_line_detail_tbl(I).BENEFIT_LIMIT:= l_dets.BENEFIT_LIMIT;
9925 x_line_detail_tbl(I).CHARGE_TYPE_CODE:= l_dets.CHARGE_TYPE_CODE;
9926 x_line_detail_tbl(I).CHARGE_SUBTYPE_CODE:=l_dets.CHARGE_SUBTYPE_CODE;
9927 x_line_detail_tbl(I).BENEFIT_QTY:=l_dets.BENEFIT_QTY;
9928 x_line_detail_tbl(I).BENEFIT_UOM_CODE:=l_dets.BENEFIT_UOM_CODE;
9929 x_line_detail_tbl(I).PRORATION_TYPE_CODE:=l_dets.PRORATION_TYPE_CODE;
9930 x_line_detail_tbl(I).INCLUDE_ON_RETURNS_FLAG := l_dets.INCLUDE_ON_RETURNS_FLAG;
9931 x_line_detail_tbl(I).LIST_LINE_NO := l_dets.LIST_LINE_NO;
9932 x_line_detail_tbl(I).MODIFIER_LEVEL_CODE := l_dets.MODIFIER_LEVEL_CODE;
9933 x_line_detail_tbl(I).GROUP_VALUE := nvl(l_dets.GROUP_QUANTITY,l_dets.GROUP_AMOUNT); -- 2388011_new
9934 x_line_detail_tbl(I).COMMENTS := l_dets.COMMENTS;
9935 x_line_detail_tbl(I).UPDATED_FLAG := l_dets.UPDATED_FLAG;
9936 x_line_detail_tbl(I).PROCESS_CODE := l_dets.PROCESS_CODE;
9937 x_line_detail_tbl(I).LIMIT_CODE := l_dets.LIMIT_CODE;
9938 x_line_detail_tbl(I).LIMIT_TEXT := substr(l_dets.LIMIT_TEXT,1,240);
9939 x_line_detail_tbl(I).CALCULATION_CODE := l_dets.CALCULATION_CODE;
9940 x_line_detail_tbl(I).CHANGE_REASON_CODE := l_dets.CHANGE_REASON_CODE;
9941 x_line_detail_tbl(I).CHANGE_REASON_CODE := substr(l_dets.CHANGE_REASON_CODE,1,240);
9942 x_line_detail_tbl(I).BREAK_UOM_CODE := l_dets.BREAK_UOM_CODE; /* proration */
9943 x_line_detail_tbl(I).BREAK_UOM_CONTEXT := l_dets.BREAK_UOM_CONTEXT; /* proration */
9944 x_line_detail_tbl(I).BREAK_UOM_ATTRIBUTE := l_dets.BREAK_UOM_ATTRIBUTE; /* proration */
9945
9946 IF (l_dets.LINE_DETAIL_TYPE_CODE = G_COUPON_ISSUE) THEN
9947 SET_EXPIRATION_DATES (l_dets.number_expiration_periods,
9948 l_dets.EXPIRATION_PERIOD_UOM,
9949 l_dets.line_index,
9950 l_expiration_period_end_date,
9951 l_status_code,
9952 l_status_text);
9953 END IF;
9954
9955 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
9956 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9957 engine_debug(l_routine||':'||substr(l_status_text,1,240));
9958 END IF;
9959 END IF;
9960
9961 x_line_detail_tbl(I).EXPIRATION_DATE :=l_expiration_period_end_date;
9962 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9963 engine_debug('LINE_DETAIL_INDEX :='|| l_dets.LINE_DETAIL_INDEX);
9964 engine_debug('LINE_DETAIL_TYPE_CODE:='||l_dets.LINE_DETAIL_TYPE_CODE);
9965 engine_debug('LINE_INDEX:='||l_dets.LINE_INDEX);
9966 engine_debug('LIST_HEADER_ID:='||l_dets.LIST_HEADER_ID);
9967 engine_debug('LIST_LINE_ID:='||l_dets.LIST_LINE_ID);
9968 engine_debug('LIST_LINE_TYPE_CODE:='||l_dets.LIST_LINE_TYPE_CODE);
9969 engine_debug('SUBSTITUTION_TO:='||l_dets.SUBSTITUTION_VALUE_TO);
9970 engine_debug('LINE_QUANTITY :='||l_dets.LINE_QUANTITY);
9971 engine_debug('ADJUSTMENT_AMOUNT :='|| l_dets.ADJUSTMENT_AMOUNT);
9972 engine_debug('AUTOMATIC_FLAG :='|| l_dets.AUTOMATIC_FLAG);
9973 engine_debug('APPLIED_FLAG :='|| l_dets.APPLIED_FLAG);
9974 engine_debug('PRICING_GROUP_SEQUENCE :='|| l_dets.PRICING_GROUP_SEQUENCE);
9975 engine_debug('CREATED_FROM_LIST_TYPE_CODE:='||l_dets.CREATED_FROM_LIST_TYPE_CODE);
9976 engine_debug('PRICE_BREAK_TYPE_CODE :='|| l_dets.PRICE_BREAK_TYPE_CODE);
9977 engine_debug('OVERRIDE_FLAG :='|| l_dets.override_flag);
9978 engine_debug('PRINT_ON_INVOICE_FLAG :='||l_dets.print_on_invoice_flag);
9979 engine_debug('PRICING_PHASE_ID :='|| l_dets.PRICING_PHASE_ID);
9980 engine_debug('OPERAND_CALCULATION_CODE :='|| l_dets.OPERAND_CALCULATION_CODE);
9981 engine_debug('OPERAND_VALUE :='|| l_dets.OPERAND_VALUE);
9982 engine_debug('STATUS_CODE:='||l_dets.PRICING_STATUS_CODE);
9983 engine_debug('STATUS_TEXT:='||substr(l_dets.PRICING_STATUS_TEXT,1,240));
9984 engine_debug('SUBSTITUTION_ATTRIBUTE:='||l_dets.SUBSTITUTION_ATTRIBUTE);
9985 engine_debug('ACCRUAL_FLAG:='||l_dets.ACCRUAL_FLAG);
9986 engine_debug('LIST_LINE_NO:='||l_dets.LIST_LINE_NO);
9987 engine_debug('ESTIM_GL_VALUE:='||l_dets.ESTIM_GL_VALUE);
9988 engine_debug('ACCRUAL_CONVERSION_RATE:='||l_dets.ACCRUAL_CONVERSION_RATE);
9989 END IF;
9990 --Pass throuh components
9991 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
9992 engine_debug('OVERRIDE_FLAG:='|| l_dets.OVERRIDE_FLAG);
9993 engine_debug('INVENTORY_ITEM_ID:='||l_dets.INVENTORY_ITEM_ID);
9994 engine_debug('ORGANIZATION_ID:='||l_dets.ORGANIZATION_ID);
9995 engine_debug('RELATED_ITEM_ID:='|| l_dets.RELATED_ITEM_ID);
9996 engine_debug('RELATIONSHIP_TYPE_ID:='||l_dets.RELATIONSHIP_TYPE_ID);
9997 engine_debug('ESTIM_ACCRUAL_RATE:='||l_dets.ESTIM_ACCRUAL_RATE);
9998 engine_debug('EXPIRATION_DATE:='||l_dets.EXPIRATION_DATE);
9999 engine_debug('BENEFIT_PRICE_LIST_LINE_ID:='||l_dets.BENEFIT_PRICE_LIST_LINE_ID);
10000 engine_debug('RECURRING_FLAG:='|| l_dets.RECURRING_FLAG);
10001 engine_debug('BENEFIT_LIMIT:='|| l_dets.BENEFIT_LIMIT);
10002 engine_debug('CHARGE_TYPE_CODE:='|| l_dets.CHARGE_TYPE_CODE);
10003 engine_debug('CHARGE_SUBTYPE_CODE:='||l_dets.CHARGE_SUBTYPE_CODE);
10004 engine_debug('BENEFIT_QTY:='||l_dets.BENEFIT_QTY);
10005 engine_debug('BENEFIT_UOM_CODE:='||l_dets.BENEFIT_UOM_CODE);
10006 engine_debug('PRORATION_TYPE_CODE:='||l_dets.PRORATION_TYPE_CODE);
10007 engine_debug('INCLUDE_ON_RETURNS_FLAG :='|| l_dets.INCLUDE_ON_RETURNS_FLAG);
10008 engine_debug('MODIFIER_LEVEL_CODE :='|| l_dets.MODIFIER_LEVEL_CODE);
10009 engine_debug('GROUP VALUE :='|| l_dets.GROUP_QUANTITY);
10010 engine_debug('LIMIT_CODE :='|| l_dets.LIMIT_CODE);
10011 engine_debug('LIMIT_TEXT :='|| substr(l_dets.LIMIT_TEXT,1,240));
10012 engine_debug('CHANGE_REASON_CODE :='|| l_dets.CHANGE_REASON_CODE);
10013 engine_debug('CHANGE_REASON_TEXT :='|| substr(l_dets.CHANGE_REASON_TEXT,1,240));
10014 engine_debug('BREAK_UOM_CODE :='|| l_dets.BREAK_UOM_CODE); /* proration */
10015 engine_debug('BREAK_UOM_CONTEXT :='|| l_dets.BREAK_UOM_CONTEXT); /* proration */
10016 engine_debug('BREAK_UOM_ATTRIBUTE :='|| l_dets.BREAK_UOM_ATTRIBUTE); /* proration */
10017
10018 END IF;
10019 --I:=I+1;
10020 END LOOP;
10021 I:=1;
10022
10023 --Populate Qualifier detail
10024 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10025 engine_debug('----Before populate x_qual_tbl-----');
10026 END IF;
10027 FOR l_qual IN l_int_qual_cur(G_DETAIL_LEVEL) LOOP
10028 x_line_detail_qual_tbl(I).LINE_DETAIL_INDEX := l_qual.LINE_DETAIL_INDEX;
10029 x_line_detail_qual_tbl(I).QUALIFIER_CONTEXT := l_qual.CONTEXT;
10030 x_line_detail_qual_tbl(I).QUALIFIER_ATTRIBUTE := l_qual.ATTRIBUTE;
10031 x_line_detail_qual_tbl(I).QUALIFIER_ATTR_VALUE_FROM := l_qual.SETUP_VALUE_FROM;
10032 x_line_detail_qual_tbl(I).QUALIFIER_ATTR_VALUE_TO := l_qual.SETUP_VALUE_TO;
10033 x_line_detail_qual_tbl(I).COMPARISON_OPERATOR_CODE := l_qual.COMPARISON_OPERATOR_TYPE_CODE;
10034 x_line_detail_qual_tbl(I).status_code := l_qual.PRICING_STATUS_CODE;
10035 x_line_detail_qual_tbl(I).VALIDATED_FLAG :=l_qual.VALIDATED_FLAG;
10036
10037 I:=I+1;
10038 END LOOP;
10039 I:=1;
10040
10041 --LINE ATTRIBUTE DETAIL NEEDED
10042 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10043 engine_debug('----Before populate attr_tbl-----');
10044 END IF;
10045 FOR l_prc IN l_int_pricing_attr_cur LOOP
10046 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10047 engine_debug('--------populating x_line_detail_attr----------');
10048 engine_debug('Line Detail Index: '||l_prc.LINE_DETAIL_INDEX);
10049 END IF;
10050 x_line_detail_attr_tbl(I).LINE_DETAIL_INDEX := l_prc.LINE_DETAIL_INDEX;
10051 x_line_detail_attr_tbl(I).PRICING_CONTEXT := l_prc.PRICING_CONTEXT;
10052 x_line_detail_attr_tbl(I).PRICING_ATTRIBUTE := l_prc.PRICING_ATTRIBUTE;
10053 x_line_detail_attr_tbl(I).PRICING_ATTR_VALUE_FROM :=l_prc.PRICING_ATTR_VALUE_FROM;
10054 x_line_detail_attr_tbl(I).PRICING_ATTR_VALUE_TO :=l_prc.PRICING_ATTR_VALUE_TO;
10055 x_line_detail_attr_tbl(I).VALIDATED_FLAG :=l_prc.VALIDATED_FLAG;
10056 --x_line_attr_tbl(I).PRICING_STATUS_CODE := l_prc.PRICING_STATUS_CODE;
10057 --x_line_attr_tbl(I).PRICING_STATUS_TEXT := l_prc.PRICING_STATUS_TEXT;
10058 I:=I+1;
10059 END LOOP;
10060
10061 I:=1;
10062
10063 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10064 engine_debug('----Before populate l_rltd_lines_tbl-----');
10065 END IF;
10066 FOR l_rltd IN l_int_rltd_lines_cur LOOP
10067 x_related_lines_tbl(I).LINE_INDEX := l_rltd.Line_index;
10068 x_related_lines_tbl(I).LINE_DETAIL_INDEX := l_rltd.LINE_DETAIL_INDEX;
10069 x_related_lines_tbl(I).RELATIONSHIP_TYPE_CODE :=l_rltd.RELATIONSHIP_TYPE_CODE;
10070 x_related_lines_tbl(I).RELATED_LINE_INDEX :=l_rltd.RELATED_LINE_INDEX;
10071 x_related_lines_tbl(I).RELATED_LINE_DETAIL_INDEX :=l_rltd.RELATED_LINE_DETAIL_INDEX;
10072 x_related_lines_tbl(I).STATUS_CODE :=l_rltd.PRICING_STATUS_CODE;
10073 x_related_lines_tbl(I).STATUS_TEXT :=l_rltd.PRICING_STATUS_TEXT;
10074 I:=I+1;
10075 END LOOP;
10076 END IF;
10077
10078 EXCEPTION
10079 WHEN E_ROUTINE_ERROR THEN
10080 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10081 engine_debug(l_routine||':'||substr(l_status_text,1,240));
10082 END IF;
10083
10084 END;
10085
10086 PROCEDURE Eliminate_Multiple_Hierarchies(p_pricing_phase_id NUMBER,
10087 x_status_code OUT NOCOPY VARCHAR2,
10088 x_status_text OUT NOCOPY VARCHAR2) AS
10089
10090 /*
10091 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_multiple_exclude_cur,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
10092 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_multiple_exclude_cur,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
10093 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_multiple_exclude_cur,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
10094 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_multiple_exclude_cur,qp_npreq_line_attrs_tmp_N5,LINE_INDEX,4
10095 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_multiple_exclude_cur,qp_npreq_line_attrs_tmp_N5,COMPARISON_OPERATOR_CODE,5
10096
10097 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_multiple_exclude_cur,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
10098
10099 */
10100
10101 --Pricing Phase Change
10102 CURSOR l_get_multiple_exclude_cur IS
10103 SELECT /*+ ORDERED USE_NL(b) index(a qp_preq_line_attrs_tmp_N5) l_get_multiple_exclude_cur */
10104 distinct a.line_index , a.list_header_id , a.list_line_id , a.grouping_number grouping_no,
10105 a.context , a.attribute , a.setup_value_from
10106 FROM qp_npreq_line_attrs_tmp a , qp_npreq_ldets_tmp b
10107 WHERE
10108 a.comparison_operator_type_code = 'NOT ='
10109 AND a.attribute_type IN (G_PRICING_TYPE,G_QUALIFIER_TYPE)
10110 AND a.pricing_status_code = G_STATUS_NEW
10111 AND a.pricing_phase_id = p_pricing_phase_id
10112 AND a.line_index > 0
10113 AND a.line_detail_index = b.line_detail_index
10114 AND b.pricing_status_code = G_STATUS_NEW
10115 order by a.line_index,a.list_header_id,a.list_line_id, a.grouping_number;
10116
10117 /*
10118 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_passed_hierarchy_cur,qp_npreq_line_attrs_tmp_N2,line_index,1
10119 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_passed_hierarchy_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
10120 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_passed_hierarchy_cur,qp_npreq_line_attrs_tmp_N2,context,3
10121 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_passed_hierarchy_cur,qp_npreq_line_attrs_tmp_N2,attribute,4
10122 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_passed_hierarchy_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
10123 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.l_get_passed_hierarchy_cur,qp_npreq_line_attrs_tmp_N2,value_from,6
10124 */
10125 CURSOR l_get_passed_hierarchy_cur(p_line_index NUMBER,
10126 p_context VARCHAR2,
10127 p_attribute VARCHAR2,
10128 p_value VARCHAR2) IS
10129 SELECT value_from
10130 FROM qp_npreq_line_attrs_tmp
10131 WHERE context = p_context
10132 AND attribute = p_attribute
10133 AND value_from = p_value
10134 AND line_index = p_line_index
10135 AND attribute_type IN (G_PRICING_TYPE,G_QUALIFIER_TYPE )
10136 AND pricing_status_code = G_STATUS_UNCHANGED;
10137
10138 l_del_list_line_tbl NUMBER_TYPE;
10139 l_del_list_header_tbl NUMBER_TYPE;
10140 l_del_line_index_tbl NUMBER_TYPE;
10141 l_del_ind PLS_INTEGER := 0;
10142 l_list_line_index NUMBER := -9999;
10143 l_list_line_id NUMBER := -9999;
10144 l_list_header_id NUMBER := -9999;
10145 l_list_attr_type VARCHAR2(30) := 'NULL';
10146 l_grouping_no NUMBER := -9999999999999;
10147 l_setup_context VARCHAR2(240);
10148 l_setup_attribute VARCHAR2(240);
10149 l_setup_value_from VARCHAR2(240);
10150 l_passed_value_from VARCHAR2(240);
10151 l_deleted_flag BOOLEAN := FALSE;
10152 l_status_code VARCHAR2(30);
10153 l_status_text VARCHAR2(240);
10154 l_routine CONSTANT VARCHAR2(240) := 'QP_PREQ_GRP.Eliminate_Multiple_Hierarchies';
10155
10156 E_ROUTINE_ERRORS EXCEPTION;
10157
10158 BEGIN
10159 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10160 engine_debug('In procedure Eliminate_Multiple_Hierarchies');
10161
10162 END IF;
10163 FOR i IN l_get_multiple_exclude_cur
10164 LOOP
10165
10166 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
10167 l_deleted_flag = FALSE) THEN
10168
10169 l_passed_value_from := NULL; -- Init
10170 l_deleted_flag := FALSE;
10171
10172 --l_setup_context := i.context;
10173 --l_setup_attribute := i.attribute;
10174 --l_setup_value_from := i.setup_value_from;
10175
10176 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10177 engine_debug('EMH Context:' || i.context || ' EMH Attribute:' || i.attribute || ' EMH Passed Value : '||i.setup_value_from);
10178 engine_debug('EMH Excluded Passed Value From Setup: ' || i.setup_value_from);
10179
10180 END IF;
10181 OPEN l_get_passed_hierarchy_cur(i.line_index,i.context,i.attribute,i.setup_value_from);
10182 FETCH l_get_passed_hierarchy_cur INTO l_passed_value_from;
10183 CLOSE l_get_passed_hierarchy_cur;
10184
10185 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10186 engine_debug('EMH Excluded Passed Value From Sourcing: ' || l_passed_value_from);
10187
10188 END IF;
10189 IF (l_passed_value_from IS NOT NULL) THEN
10190 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10191 engine_debug('EMH Deleted Flag is True');
10192 END IF;
10193 l_del_ind := l_del_ind + 1;
10194 l_del_list_line_tbl(l_del_ind) := i.list_line_id;
10195 l_del_list_header_tbl(l_del_ind) := i.list_header_id;
10196 l_del_line_index_tbl(l_del_ind) := i.line_index;
10197 l_deleted_flag := TRUE;
10198 END IF;
10199
10200 END IF;
10201
10202 l_list_line_index := i.line_index;
10203 l_list_line_id := i.list_line_id;
10204 l_list_header_id := i.list_header_id;
10205 l_grouping_no := i.grouping_no;
10206
10207 END LOOP;
10208
10209 -- Delete the multiple hierarchies
10210 IF (l_del_list_line_tbl.COUNT > 0) THEN
10211 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10212 engine_debug('Actually Deleting');
10213 END IF;
10214 FORALL j IN l_del_list_line_tbl.FIRST .. l_del_list_line_tbl.LAST
10215 /*
10216 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.upd1,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
10217 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.upd1,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
10218 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.upd1,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
10219 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.upd1,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
10220 INDX,QP_PREQ_GRP.eliminate_multiple_hierarchies.upd1,qp_npreq_line_attrs_tmp_N1,LIST_LINE_ID,5
10221 */
10222 UPDATE qp_npreq_line_attrs_tmp --upd1
10223 SET pricing_status_code = G_DELETED_EXCLUDER
10224 WHERE list_header_id = l_del_list_header_tbl(j)
10225 AND list_line_id = l_del_list_line_tbl(j)
10226 AND line_index = l_del_line_index_tbl(j)
10227 AND comparison_operator_type_code = 'NOT ='
10228 AND pricing_status_code = G_STATUS_NEW -- Expect an issue because of this join condition
10229 AND attribute_type IN (G_PRICING_TYPE,G_QUALIFIER_TYPE);
10230
10231 /* FORALL j IN l_del_list_line_tbl.FIRST .. l_del_list_line_tbl.LAST
10232 UPDATE qp_npreq_ldets_tmp
10233 SET pricing_status_code = G_DELETED_EXCLUDER
10234 WHERE created_from_list_header_id = l_del_list_header_tbl(j)
10235 AND created_from_list_line_id = l_del_list_line_tbl(j)
10236 AND line_index = l_del_line_index_tbl(j)
10237 AND pricing_phase_id = p_pricing_phase_id; */
10238 END IF;
10239
10240 -- shu fix bug 1915355
10241 -- To delete duplicate list lines selected by ask for and regular cursors
10242 IF (p_pricing_phase_id <> G_PRICE_LIST_PHASE_ID) THEN
10243 Delete_Duplicate_List_Lines(p_pricing_phase_id,l_status_code,l_status_text);
10244 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
10245 RAISE E_ROUTINE_ERRORS;
10246 END IF;
10247 END IF;
10248
10249 EXCEPTION
10250 WHEN E_ROUTINE_ERRORS THEN
10251 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10252 engine_debug(l_routine||': '||l_status_text);
10253 END IF;
10254 x_status_code := FND_API.G_RET_STS_ERROR;
10255 x_status_text := l_routine||': '||l_status_text;
10256 WHEN OTHERS THEN
10257 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10258 engine_debug(l_routine||' '||SQLERRM);
10259 END IF;
10260 x_status_code := FND_API.G_RET_STS_ERROR;
10261 x_status_text := 'Error in '||l_routine||SQLERRM;
10262
10263 END Eliminate_Multiple_Hierarchies;
10264
10265 /*+--------------------------------------------------------
10266 |PROCEDURE PROCESS_LINE_GROUP
10267 |This procedure sum OUT quantity/amt
10268 |across all lines that have same product context,attribute,value
10269 |, pricing context,attribute and have list_line which is
10270 |line group. The output on the sum will be populated
10271 |either on GROUP_QUANTITY or qualifier_amt column
10272 |of qp_npreq_lines_tmp.
10273 +--------------------------------------------------------
10274 */
10275
10276 PROCEDURE PROCESS_LINE_GROUP(p_pricing_phase_id NUMBER,
10277 x_status_code OUT NOCOPY VARCHAR2,
10278 x_status_text OUT NOCOPY VARCHAR2) AS
10279 /*
10280 -- Might need a new index with pricing_phase_id
10281 */
10282
10283 l_routine VARCHAR2(30) := 'Process_Line_Group';
10284
10285 CURSOR line_grp_cur IS
10286 select /*+ ORDERED USE_NL(c a ) index(a qp_pricing_attributes_n2) line_grp_cur */
10287 b.created_from_list_line_id list_line_id , c.context , c.attribute ,
10288 sum(qp_number.canonical_to_number(c.value_from)) group_value
10289 from
10290 qp_npreq_ldets_tmp b , qp_npreq_line_attrs_tmp c , qp_pricing_attributes a
10291 where
10292 b.modifier_level_code = G_LINE_GROUP
10293 and b.pricing_phase_id = p_pricing_phase_id
10294 and c.pricing_status_code = G_STATUS_UNCHANGED
10295 and c.context = G_PRIC_VOLUME_CONTEXT
10296 and c.attribute_type = G_PRICING_TYPE
10297 and b.line_index = c.line_index
10298 and b.pricing_status_code = G_STATUS_NEW
10299 and a.list_line_id = b.created_from_list_line_id
10300 and a.pricing_attribute_context = G_PRIC_VOLUME_CONTEXT
10301 and a.pricing_attribute = c.attribute
10302 group by b.created_from_list_line_id , c.context , c.attribute;
10303
10304 /*select c.list_line_id list_line_id , c.context , c.attribute ,
10305 sum(qp_number.canonical_to_number(c.value_from)) group_value
10306 from
10307 qp_npreq_line_attrs_tmp c
10308 where
10309 c.modifier_level_code = G_LINE_GROUP
10310 and c.pricing_phase_id = p_pricing_phase_id
10311 and c.pricing_status_code = G_STATUS_NEW
10312 and c.context = G_PRIC_VOLUME_CONTEXT
10313 and c.attribute_type = G_PRICING_TYPE
10314 and c.pricing_status_code = G_STATUS_NEW
10315 group by c.list_line_id , c.context , c.attribute ; */
10316
10317 --begin 2388011, grp_pbh_amt
10318 CURSOR l_get_list_price_cur(p_list_line_id NUMBER) IS
10319 SELECT a.LINE_INDEX ,a.UNIT_PRICE
10320 FROM qp_npreq_lines_tmp a,qp_npreq_ldets_tmp b
10321 WHERE a.LINE_INDEX = b.LINE_INDEX
10322 AND b.CREATED_FROM_LIST_LINE_ID = p_list_line_id;
10323 --end 2388011, grp_pbh_amt
10324
10325 l_GROUP_QUANTITY NUMBER;
10326 l_GROUP_AMOUNT NUMBER;
10327 l_dummy VARCHAR2(1);
10328
10329 -- begin shu, 2388011, grp_pbh_amt
10330 l_list_price NUMBER;
10331 l_group_amount_per_unit NUMBER;
10332 G_LINE_INDEX_TBL_G PLS_INTEGER_TYPE;
10333 G_UNIT_PRICE_TBL_G NUMBER_TYPE;
10334 G_GROUP_AMOUNT_PER_UNIT_TBL_G NUMBER_TYPE;
10335 nROWS CONSTANT NUMBER := 1000;
10336 -- end shu, 2388011, grp_pbh_amt
10337
10338
10339 BEGIN
10340
10341 --If no data has LINE_GROUP Modifier
10342 --don't bother to proceed
10343
10344 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10345 engine_debug('Starting process linegroup');
10346
10347 END IF;
10348 FOR J IN line_grp_cur LOOP
10349
10350 IF J.attribute = G_QUANTITY_ATTRIBUTE THEN
10351 l_group_quantity := J.group_value;
10352 l_group_amount := NULL;
10353 ELSE
10354 l_group_amount := J.group_value;
10355 l_group_quantity := NULL;
10356 END IF;
10357
10358 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10359 engine_debug('J.context : '||J.context);
10360 engine_debug('J.product_attribute : '||J.attribute);
10361 engine_debug('J.value_from : '||J.group_value);
10362 engine_debug('l_GROUP_QUANTITY: '||l_group_quantity);
10363 engine_debug('l_GROUP_AMOUNT: ' ||l_group_amount);
10364 engine_debug('List Line Id: ' ||j.list_line_id);
10365
10366 END IF;
10367 IF (j.attribute = G_QUANTITY_ATTRIBUTE) THEN
10368
10369 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10370 engine_debug('Updating Quantity Attribute');
10371
10372 END IF;
10373
10374 /*
10375 INDX,QP_PREQ_GRP.process_line_group.upd1,-No Index Used-,NA,NA
10376 */
10377 /*UPDATE qp_npreq_line_attrs_tmp --upd1
10378 SET GROUP_QUANTITY = l_group_quantity
10379 WHERE LIST_LINE_ID = j.list_line_id;*/
10380
10381 /*
10382 INDX,QP_PREQ_GRP.process_line_group.upd2,-No Index Used-,NA,NA
10383 */
10384 UPDATE qp_npreq_ldets_tmp --upd2
10385 SET LINE_QUANTITY = l_group_quantity, -- 2388011_latest, shu fix pbh_grp_amt
10386 GROUP_QUANTITY = l_group_quantity, -- 2388011_latest, shu fix pbh_grp_amt
10387 SELECTED_VOLUME_ATTR = G_QUANTITY -- 2388011_latest
10388 WHERE CREATED_FROM_LIST_LINE_ID = j.list_line_id;
10389
10390 ELSE
10391 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10392 engine_debug('Updating Amount Attribute');
10393 END IF;
10394
10395 -- begin shu, fix group of lines lumpsum based on ITEM_AMOUNT, 2388011
10396
10397 OPEN l_get_list_price_cur(j.list_line_id);
10398
10399 LOOP
10400 G_LINE_INDEX_TBL_G.delete;
10401 G_UNIT_PRICE_TBL_G.delete;
10402
10403 FETCH l_get_list_price_cur BULK COLLECT INTO
10404 G_LINE_INDEX_TBL_G
10405 , G_UNIT_PRICE_TBL_G LIMIT nROWS;
10406 EXIT WHEN G_LINE_INDEX_TBL_G.COUNT = 0;
10407
10408 IF (G_LINE_INDEX_TBL_G.COUNT > 0) THEN
10409 FOR I in G_LINE_INDEX_TBL_G.FIRST .. G_LINE_INDEX_TBL_G.LAST
10410 LOOP
10411 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10412 engine_debug('Line Index : ' ||g_line_index_tbl_g(I));
10413 engine_debug('Unit Price : ' ||g_unit_price_tbl_g(I));
10414 END IF; -- 4033618
10415 IF (G_UNIT_PRICE_TBL_G(I) IS NOT NULL and G_UNIT_PRICE_TBL_G(I) <> 0) THEN -- avoid division by zero
10416 G_GROUP_AMOUNT_PER_UNIT_TBL_G(I) := l_group_amount/G_UNIT_PRICE_TBL_G(I);
10417 ELSE
10418 IF (G_UNIT_PRICE_TBL_G(I) = 0 ) THEN
10419 G_GROUP_AMOUNT_PER_UNIT_TBL_G(I):= 0;
10420 ELSE -- unit price is NULL
10421 G_GROUP_AMOUNT_PER_UNIT_TBL_G(I) :=l_group_amount; -- ASK RAVI? why not 0
10422 END IF;
10423 END IF;
10424 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10425 engine_debug('Group Amount Per Unit: ' ||g_group_amount_per_unit_tbl_g(I));
10426 END IF; -- 4033618
10427 END LOOP;
10428 END IF;
10429
10430 /*
10431 INDX,QP_PREQ_GRP11.process_line_group.upd4,-No Index Used-,NA,NA
10432 */
10433 IF (G_LINE_INDEX_TBL_G.COUNT > 0) THEN
10434 FORALL I IN G_LINE_INDEX_TBL_G.FIRST .. G_LINE_INDEX_TBL_G.LAST
10435 UPDATE qp_npreq_ldets_tmp --upd4
10436 SET GROUP_AMOUNT = G_GROUP_AMOUNT_PER_UNIT_TBL_G(I),
10437 LINE_QUANTITY = l_group_amount, -- 2388011_latest
10438 SELECTED_VOLUME_ATTR = G_AMOUNT -- 2388011_latest
10439 WHERE CREATED_FROM_LIST_LINE_ID = j.list_line_id
10440 AND LINE_INDEX = G_LINE_INDEX_TBL_G(I);
10441 END IF;
10442
10443 END LOOP;
10444 CLOSE l_get_list_price_cur;
10445 END IF;
10446
10447 END LOOP;
10448
10449 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10450 engine_debug('End process line group');
10451
10452 END IF;
10453 EXCEPTION
10454 WHEN NO_DATA_FOUND THEN
10455 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10456 engine_debug('No line group data');
10457 engine_debug('End process line group');
10458 END IF;
10459 RETURN;
10460 WHEN OTHERS THEN
10461 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10462 engine_debug(l_routine||' '||SQLERRM);
10463 END IF;
10464 x_status_code := FND_API.G_RET_STS_ERROR;
10465 x_status_text := l_routine||': '||SQLERRM;
10466 END PROCESS_LINE_GROUP;
10467
10468 /*+----------------------------------------------------------
10469 |Is_Line_Group
10470 +---------------------------------------------------------
10471 */
10472 FUNCTION Is_Line_Group (p_line_detail_index IN PLS_INTEGER:=NULL,
10473 p_line_index IN NUMBER:=NULL) RETURN BOOLEAN
10474 AS
10475 l_dummy VARCHAR2(30);
10476 l_routine VARCHAR2(240):='QP_PREQ_GRP.Is_Line_Group';
10477 BEGIN
10478
10479 IF (p_line_detail_index IS NOT NULL) THEN
10480 /*
10481 INDX,QP_PREQ_GRP.is_line_group.is_line_group_sel1,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
10482 */
10483 SELECT 'X'
10484 INTO l_dummy
10485 FROM qp_npreq_ldets_tmp
10486 WHERE line_detail_index = p_line_detail_index
10487 AND modifier_level_code = G_LINE_GROUP;
10488 ELSE
10489 /*
10490 INDX,QP_PREQ_GRP.is_line_group.is_line_group_sel2,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
10491 */
10492 SELECT 'X'
10493 INTO l_dummy
10494 FROM qp_npreq_ldets_tmp
10495 WHERE line_index = p_line_index
10496 AND modifier_level_code = G_LINE_GROUP;
10497 END IF;
10498
10499 RETURN TRUE;
10500
10501 EXCEPTION
10502 WHEN NO_DATA_FOUND THEN
10503 RETURN FALSE;
10504 END Is_Line_Group;
10505
10506 /*+------------------------------------------------------
10507 |Is_Uom_Match
10508 |
10509 +-----------------------------------------------------
10510 */
10511
10512 Function Is_Uom_Match(p_line_index IN PLS_INTEGER,
10513 p_product_uom_code IN VARCHAR2
10514 ) RETURN BOOLEAN
10515 AS
10516
10517 l_dummy VARCHAR2(1);
10518
10519 BEGIN
10520 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10521 engine_debug('p_line_index : '||p_line_index);
10522 engine_debug('p_product_uom_code: '||nvl(p_product_uom_code,'Null'));
10523 END IF;
10524 /*
10525 INDX,QP_PREQ_GRP.is_uom_match.is_uom_match_sel1,qp_npreq_lines_tmp_N1,LINE_INDEX,1
10526 */
10527 SELECT 'X'
10528 INTO l_dummy
10529 FROM qp_npreq_lines_tmp qplines
10530 WHERE qplines.LINE_INDEX = p_line_index
10531 AND nvl(qplines.PRICED_UOM_CODE,qplines.LINE_UOM_CODE) =
10532 nvl(p_product_uom_code,nvl(qplines.PRICED_UOM_CODE,qplines.LINE_UOM_CODE));
10533
10534 RETURN TRUE;
10535
10536 EXCEPTION
10537 WHEN NO_DATA_FOUND THEN
10538 RETURN FALSE;
10539
10540 END;
10541
10542 /*+-----------------------------------------------------------
10543 |Covert_Uom
10544 |This procedure will try to convert ordered uom to
10545 |primary uom.
10546 +-----------------------------------------------------------
10547 */
10548
10549 PROCEDURE Convert_Uom(p_order_uom_code IN VARCHAR2,
10550 p_primary_uom_code IN VARCHAR2,
10551 p_value IN NUMBER,
10552 x_converted_value OUT NOCOPY NUMBER,
10553 x_status_code OUT NOCOPY VARCHAR2,
10554 x_status_text OUT NOCOPY VARCHAR2) AS
10555
10556 --l_primary_uom VARCHAR2(3):=NULL;
10557 --l_line_uom_code VARCHAR2(3):=NULL;
10558 E_INVALID_UOM EXCEPTION;
10559 l_item_id NUMBER := 0;
10560 l_uom_rate NUMBER;
10561 l_routine VARCHAR2(240):= 'QP_PREQ_GRP.Convert_Uom';
10562 BEGIN
10563
10564 x_status_code := FND_API.G_RET_STS_SUCCESS;
10565
10566 INV_CONVERT.INV_UM_CONVERSION(p_order_uom_code,
10567 p_primary_uom_code,
10568 l_item_id,
10569 l_uom_rate);
10570
10571 IF (l_uom_rate >= 0) THEN
10572 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10573 engine_debug ('conversion rate: '||l_uom_rate);
10574 END IF;
10575 x_converted_value := p_value * l_uom_rate;
10576 ELSE
10577 Raise E_INVALID_UOM;
10578 END IF;
10579
10580
10581 EXCEPTION
10582
10583 WHEN E_INVALID_UOM THEN
10584 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10585 engine_debug('Invalid UOM');
10586 END IF;
10587 x_status_code := FND_API.G_RET_STS_ERROR;
10588 x_status_text := 'Invalid UOM';
10589 WHEN OTHERS THEN
10590 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10591 engine_debug(l_routine||': '||SQLERRM);
10592 END IF;
10593 x_status_code := FND_API.G_RET_STS_ERROR;
10594 x_status_text := l_routine||': '||SQLERRM;
10595 END Convert_Uom;
10596
10597 /*+----------------------------------------------------------
10598 |Update_Request_Line_Status(For request lines that have price list passed)
10599 +----------------------------------------------------------
10600 */
10601 PROCEDURE Update_Request_Line_Status(p_control_rec CONTROL_RECORD_TYPE,
10602 p_status_code VARCHAR2,
10603 p_freeze_override_flag IN VARCHAR2, --[julin/4708044]
10604 x_status_code OUT NOCOPY VARCHAR2,
10605 x_status_text OUT NOCOPY VARCHAR2) AS
10606
10607 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.Update_Request_Line_Status';
10608 l_rounding_factor NUMBER:= NULL;
10609
10610 BEGIN
10611 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10612 engine_debug('In Update Request Line Status : ' || p_status_code);
10613 END IF;
10614
10615 /* --po integration start
10616 UPDATE qp_npreq_lines_tmp a
10617 SET pricing_status_code = G_STATUS_UPDATED
10618 Where list_price_override_flag in ('Y', 'O') --po integration
10619 AND line_type_code <> G_ORDER_LEVEL;
10620 --po integration end
10621 */
10622
10623
10624 IF (p_status_code = 'SUCCESS') THEN
10625 /*
10626 INDX,QP_PREQ_GRP.update_request_line_status.update_request_line_status_upd1,-No Index Used-,NA,NA
10627 */
10628 /*
10629 INDX,QP_PREQ_GRP.update_request_line_status.sel1,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
10630 INDX,QP_PREQ_GRP.update_request_line_status.sel1,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
10631 INDX,QP_PREQ_GRP.update_request_line_status.sel1,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
10632 */
10633
10634 UPDATE qp_npreq_lines_tmp a
10635 SET pricing_status_code = G_STATUS_UPDATED
10636 ,processed_code = NULL -- bug 3501150
10637 WHERE EXISTS (SELECT 'x'
10638 from qp_npreq_ldets_tmp b
10639 WHERE a.line_index = b.line_index
10640 AND b.pricing_status_code = G_STATUS_NEW
10641 AND b.pricing_phase_id = G_PRICE_LIST_PHASE_ID)
10642 AND line_type_code <> G_ORDER_LEVEL;
10643
10644 -- To make sure lines which did not get the price and do not have a record in qp_npreq_ldets_tmp get picked up
10645 UPDATE qp_npreq_lines_tmp a
10646 SET processed_code = G_STS_LHS_NOT_FOUND
10647 WHERE NOT EXISTS (SELECT 'x'
10648 FROM qp_npreq_ldets_tmp b
10649 WHERE a.line_index = b.line_index
10650 AND b.pricing_status_code = G_STATUS_NEW
10651 AND b.pricing_phase_id = G_PRICE_LIST_PHASE_ID)
10652 AND line_type_code <> G_ORDER_LEVEL
10653 AND list_price_override_flag = 'N' --po integration
10654 AND pricing_status_code NOT IN (G_STATUS_DUP_PRICE_LIST,G_STATUS_INVALID_UOM_CONV)
10655 AND (price_flag = G_YES OR --[julin/4708044]
10656 (price_flag = G_PHASE AND p_freeze_override_flag = G_YES));
10657
10658
10659 /* --IF (nvl(p_control_rec.rounding_flag,G_YES) = G_YES) THEN
10660 -- need rounding_factor when 'Y', 'Q', 'U'
10661 IF (nvl(p_control_rec.rounding_flag,G_YES) <> 'N') THEN -- shu new rounding
10662
10663 DECLARE
10664
10665 CURSOR tmp_data IS
10666 SELECT rounding_factor FROM qp_npreq_lines_tmp;
10667 BEGIN
10668
10669 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10670 engine_debug ('G_MCURR_PROFILE: '||G_MULTI_CURRENCY_PROFILE);
10671 engine_debug ('p_control_rec.use_multi_currency: '||p_control_rec.use_multi_currency);
10672 END IF;
10673 -- cannot use IF G_MCURR_INSTALLED_USED here, it is null
10674 IF G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
10675
10676 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10677 engine_debug ('get rounding_factor from qp_currency_details table...');
10678 END IF;
10679
10680 UPDATE qp_npreq_lines_tmp a
10681 SET ROUNDING_FACTOR = (SELECT qcdt.selling_rounding_factor
10682 FROM qp_currency_details qcdt, qp_list_headers_b qhdr
10683 WHERE qhdr.list_header_id = a.price_list_header_id
10684 AND qhdr.currency_header_id = qcdt.currency_header_id
10685 AND qcdt.to_currency_code = a.currency_code
10686 AND a.pricing_effective_date BETWEEN
10687 NVL(TRUNC(qcdt.start_date_active),a.pricing_effective_date)
10688 AND NVL(TRUNC(qcdt.end_date_active),a.pricing_effective_date)
10689 AND ROWNUM <2) -- there maybe more than one rows rtrns here
10690 WHERE ROUNDING_FACTOR IS NULL;
10691
10692 ELSE -- multi curr not installed not used, obtain rounding_factor from qp_list_headers_b
10693
10694 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10695 engine_debug('get rounding factor from qp_list_headers_b...');
10696 END IF;
10697 UPDATE qp_npreq_lines_tmp a
10698 SET ROUNDING_FACTOR = (SELECT qhdr.rounding_factor
10699 FROM qp_list_headers_b qhdr
10700 WHERE qhdr.list_header_id = a.price_list_header_id)
10701 WHERE ROUNDING_FACTOR IS NULL;
10702
10703 END IF; -- END IF G_MCURR_INSTALLED_USED = G_YES
10704
10705
10706 FOR i IN tmp_data LOOP
10707 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10708 engine_debug ('final rounding_factor ' ||i.rounding_factor);
10709 END IF;
10710 end LOOP;
10711
10712
10713 EXCEPTION
10714 WHEN no_data_found THEN
10715 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10716 engine_debug ('no_data_found occurred while obtaining rounding_factor');
10717 END IF;
10718 WHEN others THEN
10719 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10720 engine_debug ('error obtaining_rounding_factor: ' || SQLERRM);
10721 END IF;
10722 END; -- end declare
10723 END IF; -- end p_rounding_flag = 'Y' */
10724
10725 ELSE
10726
10727 /*
10728 INDX,QP_PREQ_GRP.update_request_line_status.sel3,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
10729 INDX,QP_PREQ_GRP.update_request_line_status.sel3,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
10730 INDX,QP_PREQ_GRP.update_request_line_status.sel3,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
10731 */
10732
10733 UPDATE qp_npreq_lines_tmp a
10734 SET processed_code = G_STS_LHS_NOT_FOUND
10735 WHERE NOT EXISTS (SELECT 'x'
10736 FROM qp_npreq_ldets_tmp b
10737 WHERE a.line_index = b.line_index
10738 AND b.pricing_status_code = G_STATUS_NEW
10739 AND b.pricing_phase_id = G_PRICE_LIST_PHASE_ID)
10740 AND line_type_code <> G_ORDER_LEVEL
10741 AND list_price_override_flag in ( 'N', 'O') --po integration
10742 AND (price_flag = G_YES OR --[julin/4708044]
10743 (price_flag = G_PHASE AND p_freeze_override_flag = G_YES));
10744
10745 END IF;
10746 EXCEPTION
10747 WHEN OTHERS THEN
10748 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10749 engine_debug(l_routine || ' ' || SQLERRM);
10750 END IF;
10751 x_status_code := FND_API.G_RET_STS_ERROR;
10752 x_status_text := l_routine||' '||SQLERRM;
10753
10754 END Update_Request_Line_Status;
10755
10756 /*+----------------------------------------------------------
10757 |Evaluate_Between
10758 +----------------------------------------------------------
10759 */
10760 -- Pricing Phase Change
10761 PROCEDURE Evaluate_Between (p_pricing_phase_id IN PLS_INTEGER,
10762 p_line_group_flag IN VARCHAR2 :=NULL,
10763 p_line_index IN NUMBER := NULL,
10764 x_status_code OUT NOCOPY VARCHAR2,
10765 x_status_text OUT NOCOPY VARCHAR2) AS
10766
10767
10768 /*
10769 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
10770 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
10771 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
10772 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_line_attrs_tmp_N5,LINE_INDEX,4
10773 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_line_attrs_tmp_N5,COMPARISON_OPERATOR_CODE,5
10774 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_line_attrs_tmp_N5,DATATYPE,6
10775
10776 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
10777
10778 */
10779
10780 CURSOR l_pric_between_cur(p_datatype VARCHAR2) IS
10781 SELECT /*+ ORDERED USE_NL(ldets) index(pricing qp_preq_line_attrs_tmp_N5) l_pric_between_cur */
10782 pricing.line_detail_index,
10783 pricing.line_index,
10784 pricing.value_from,
10785 -- line group not applicable for price lists.ignore any code around line group for price lists
10786 pricing.group_quantity,
10787 pricing.group_amount,
10788 pricing.setup_value_from,
10789 pricing.setup_value_to,
10790 pricing.product_uom_code,
10791 pricing.attribute,
10792 pricing.context,
10793 pricing.attribute_type
10794 FROM qp_npreq_line_attrs_tmp pricing,qp_npreq_ldets_tmp ldets
10795 WHERE pricing.comparison_operator_type_code = G_OPERATOR_BETWEEN
10796 AND pricing.datatype = p_datatype
10797 AND pricing.pricing_phase_id = G_PRICE_LIST_PHASE_ID
10798 AND pricing.attribute_type IN (G_PRICING_TYPE,G_QUALIFIER_TYPE)
10799 AND pricing.pricing_status_code IN (G_STATUS_UNCHANGED, G_STATUS_NEW)
10800 AND pricing.line_index > 0
10801 AND pricing.line_detail_index = ldets.line_detail_index
10802 AND ldets.pricing_status_code = G_STATUS_NEW
10803 FOR UPDATE of pricing.pricing_status_code;
10804
10805 /*
10806 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
10807 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_between_cur,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
10808 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
10809 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_between_cur,qp_npreq_line_attrs_tmp_N5,LINE_INDEX,4
10810 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_between_cur,qp_npreq_line_attrs_tmp_N5,COMPARISON_OPERATOR_CODE,5
10811 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_between_cur,qp_npreq_line_attrs_tmp_N5,DATATYPE,6
10812
10813 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_between_cur,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
10814
10815 */
10816
10817 CURSOR l_mod_between_cur(p_datatype VARCHAR2) IS
10818 SELECT /*+ ORDERED USE_NL(ldets) index(pricing qp_preq_line_attrs_tmp_N5) l_mod_between_cur */
10819 pricing.line_detail_index,
10820 pricing.line_index,
10821 pricing.value_from,
10822 ldets.group_quantity,
10823 ldets.line_quantity group_amount,
10824 pricing.setup_value_from,
10825 pricing.setup_value_to,
10826 pricing.product_uom_code,
10827 pricing.attribute,
10828 pricing.context,
10829 pricing.attribute_type
10830 FROM qp_npreq_line_attrs_tmp pricing,qp_npreq_ldets_tmp ldets
10831 WHERE pricing.comparison_operator_type_code = G_OPERATOR_BETWEEN
10832 AND pricing.datatype = p_datatype
10833 AND pricing.pricing_phase_id = p_pricing_phase_id
10834 AND pricing.attribute_type = G_PRICING_TYPE
10835 AND pricing.pricing_status_code IN (G_STATUS_UNCHANGED, G_STATUS_NEW)
10836 AND pricing.line_index > 0
10837 AND pricing.line_detail_index = ldets.line_detail_index
10838 AND ldets.pricing_status_code = G_STATUS_NEW
10839 FOR UPDATE of pricing.pricing_status_code;
10840
10841 /*
10842 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
10843 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
10844 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
10845 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_line_attrs_tmp_N5,LINE_INDEX,4
10846 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_line_attrs_tmp_N5,COMPARISON_OPERATOR_CODE,5
10847 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_line_attrs_tmp_N5,DATATYPE,6
10848
10849 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
10850
10851 */
10852
10853 CURSOR l_pric_character_between_cur IS
10854 SELECT /*+ ORDERED USE_NL(c) index(b qp_preq_line_attrs_tmp_N5) l_pric_character_between_cur */
10855 b.line_detail_index,
10856 b.line_index,
10857 b.value_from,
10858 b.setup_value_from,
10859 b.setup_value_to,
10860 b.product_uom_code,
10861 b.attribute,
10862 b.context,
10863 b.attribute_type
10864 FROM qp_npreq_line_attrs_tmp b,qp_npreq_ldets_tmp c
10865 WHERE comparison_operator_type_code = G_OPERATOR_BETWEEN
10866 AND b.pricing_phase_id = G_PRICE_LIST_PHASE_ID
10867 AND datatype in (G_DATE_X,G_DATE_Y,G_VARCHAR)
10868 AND attribute_type IN (G_PRICING_TYPE,G_QUALIFIER_TYPE)
10869 AND b.pricing_status_code IN (G_STATUS_UNCHANGED,G_STATUS_NEW)
10870 AND b.pricing_phase_id = p_pricing_phase_id
10871 AND b.line_index > 0
10872 AND b.line_detail_index = c.line_detail_index
10873 AND c.pricing_status_code = G_STATUS_NEW
10874 FOR update of b.pricing_status_code;
10875
10876 /*
10877 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_character_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
10878 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_character_between_cur,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
10879 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_character_between_cur,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
10880 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_character_between_cur,qp_npreq_line_attrs_tmp_N5,LINE_INDEX,4
10881 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_character_between_cur,qp_npreq_line_attrs_tmp_N5,COMPARISON_OPERATOR_CODE,5
10882 INDX,QP_PREQ_GRP.Evaluate_Between.l_mod_character_between_cur,qp_npreq_line_attrs_tmp_N5,DATATYPE,6
10883
10884 INDX,QP_PREQ_GRP.Evaluate_Between.l_pric_character_between_cur,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
10885
10886 */
10887
10888 CURSOR l_mod_character_between_cur IS
10889 SELECT /*+ ORDERED USE_NL(c) index(b qp_preq_line_attrs_tmp_N5) l_mod_character_between_cur */
10890 b.line_detail_index,
10891 b.line_index,
10892 b.value_from,
10893 b.setup_value_from,
10894 b.setup_value_to,
10895 b.product_uom_code,
10896 b.attribute,
10897 b.context,
10898 b.attribute_type
10899 FROM qp_npreq_line_attrs_tmp b,qp_npreq_ldets_tmp c
10900 WHERE comparison_operator_type_code = G_OPERATOR_BETWEEN
10901 AND b.pricing_phase_id = p_pricing_phase_id
10902 AND datatype in (G_DATE_X,G_DATE_Y,G_VARCHAR)
10903 AND attribute_type = G_PRICING_TYPE
10904 AND b.pricing_status_code IN (G_STATUS_UNCHANGED,G_STATUS_NEW)
10905 AND b.pricing_phase_id = p_pricing_phase_id
10906 AND b.line_index > 0
10907 AND b.line_detail_index = c.line_detail_index
10908 AND c.pricing_status_code = G_STATUS_NEW
10909 FOR update of b.pricing_status_code;
10910
10911 --[julin/5085310]
10912 CURSOR l_line_amount_cur(p_line_index NUMBER,
10913 p_line_detail_index NUMBER,
10914 p_context VARCHAR2,
10915 p_attribute VARCHAR2,
10916 p_attribute_type VARCHAR2)
10917 IS
10918 SELECT /*+ ORDERED USE_NL(a) l_line_amount_cur */
10919 fnd_number.canonical_to_number(c.value_from) group_value,
10920 a.priced_quantity
10921 FROM qp_npreq_line_attrs_tmp c, qp_npreq_lines_tmp a
10922 WHERE a.line_index = p_line_index
10923 AND a.LINE_INDEX = c.LINE_INDEX
10924 AND c.line_detail_index = p_line_detail_index
10925 AND c.context = p_context
10926 AND c.attribute_type = p_attribute_type
10927 AND c.attribute = p_attribute;
10928
10929 l_group_amount NUMBER; --shu
10930 l_list_price NUMBER; --shu
10931
10932 l_line_amount NUMBER;
10933 l_priced_quantity NUMBER;
10934
10935 l_value_from_date DATE;
10936 l_setup_value_from_date DATE;
10937 l_setup_value_to_date DATE;
10938 l_value_from_num NUMBER;
10939 l_setup_value_from_num NUMBER;
10940 l_setup_value_to_num NUMBER;
10941 l_dummy VARCHAR2(3);
10942 l_qualifier_qty NUMBER;
10943 l_qualifier_amt NUMBER;
10944 l_primary_uom VARCHAR2(3);
10945 l_item_id NUMBER;
10946 l_uom_rate NUMBER;
10947 l_line_uom_code VARCHAR2(3);
10948 l_status_code VARCHAR2(30);
10949 l_status_text VARCHAR2(240);
10950 l_deleted_between VARCHAR2(1);
10951 l_is_line_group_flag VARCHAR2(1);
10952 l_line_detail_tbl NUMBER_TYPE;
10953 l_count PLS_INTEGER := 0;
10954 l_selected_volume_attr VARCHAR2(1); -- 2388011_new
10955
10956 l_routine VARCHAR2(30) := 'Evaluate_Between';
10957 BEGIN
10958
10959 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10960 QP_PREQ_GRP.engine_debug('In Evaluate Between' );
10961
10962 END IF;
10963 --Evaluate Between operator
10964 IF (p_line_group_flag IS NULL) THEN
10965
10966 --Character and date between
10967 IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
10968 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10969 QP_PREQ_GRP.engine_debug('Before Opening Price List Character Date Between Cur');
10970 END IF;
10971 FOR I IN l_pric_character_between_cur LOOP
10972 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10973 QP_PREQ_GRP.engine_debug('In Price List Character Date Between Cur');
10974 END IF;
10975 IF (I.value_from NOT BETWEEN nvl(I.setup_value_from,I.value_from) and nvl(I.setup_value_to,I.value_from)) THEN
10976
10977 -- If it is a pricing attribute and it fails on between we can delete it right away
10978 IF (I.attribute_type = 'PRICING') THEN
10979 l_count := l_count + 1;
10980 l_line_detail_tbl(l_count) := I.line_detail_index;
10981 ELSE
10982 UPDATE qp_npreq_line_attrs_tmp
10983 SET PRICING_STATUS_CODE = G_DELETED_BETWEEN
10984 WHERE CURRENT OF l_pric_character_between_cur;
10985 END IF;
10986 END IF;
10987 END LOOP;
10988 ELSE
10989 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10990 QP_PREQ_GRP.engine_debug('Before Opening Modifiers Character Date Between Cur');
10991 END IF;
10992 FOR I IN l_mod_character_between_cur LOOP
10993 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
10994 QP_PREQ_GRP.engine_debug('In Modifiers Character Date Between Cur');
10995 END IF;
10996 IF (I.value_from NOT BETWEEN nvl(I.setup_value_from,I.value_from) and nvl(I.setup_value_to,I.value_from)) THEN
10997
10998 -- If it is a pricing attribute and it fails on between we can delete it right away
10999 IF (I.attribute_type = 'PRICING') THEN
11000 l_count := l_count + 1;
11001 l_line_detail_tbl(l_count) := I.line_detail_index;
11002 ELSE
11003 UPDATE qp_npreq_line_attrs_tmp
11004 SET PRICING_STATUS_CODE = G_DELETED_BETWEEN
11005 WHERE CURRENT OF l_mod_character_between_cur;
11006 END IF;
11007 END IF;
11008 END LOOP;
11009 END IF; -- IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID)
11010
11011 END IF; -- p_line_group_flag is null
11012
11013 --Handle between with numeric data type
11014
11015 IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
11016 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11017 QP_PREQ_GRP.engine_debug('Before Opening Price List Numeric Between Cur');
11018
11019 END IF;
11020 FOR I IN l_pric_between_cur(p_datatype => G_NUMERIC) LOOP
11021
11022 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11023 QP_PREQ_GRP.engine_debug('In Price List Numeric Between Cur');
11024
11025 END IF;
11026 l_deleted_between := 'F';
11027
11028 IF I.context = G_PRIC_VOLUME_CONTEXT THEN
11029 IF(Is_Line_Group(p_line_detail_index => I.line_detail_index) = TRUE) THEN
11030 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11031 QP_PREQ_GRP.engine_debug('Is Line Group #100');
11032
11033 END IF;
11034 l_is_line_group_flag := 'T';
11035
11036 IF (p_line_group_flag IS NOT NULL) THEN
11037 IF I.attribute = G_QUANTITY_ATTRIBUTE THEN
11038 l_value_from_num := I.group_quantity;
11039 l_selected_volume_attr := G_QUANTITY; -- 2388011_new
11040 ELSIF (I.attribute = G_LINE_AMT_ATTRIBUTE) THEN
11041 IF (p_pricing_phase_id <> G_PRICE_LIST_PHASE_ID) THEN
11042 l_value_from_num := I.group_amount;
11043 END IF;
11044 l_selected_volume_attr := G_AMOUNT; -- 2388011_new
11045 ELSE -- For Order Amount,Period1 Amount kind of attributes
11046 l_value_from_num := qp_number.canonical_to_number(I.value_from);
11047 END IF;
11048 ELSE -- Make it a success,because line group between is done again,so do not delete
11049 l_value_from_num := NULL;
11050 END IF;
11051
11052 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11053 engine_debug('Is line group');
11054 engine_debug('Group Quantity : ' || l_value_from_num);
11055 engine_debug('Line detail index: '||I.line_detail_index);
11056 END IF;
11057 ELSE -- is not a line group
11058 l_is_line_group_flag := 'F';
11059 l_value_from_num := qp_number.canonical_to_number(I.value_from);
11060 -- begin 2388011_new
11061 IF (I.attribute = G_QUANTITY_ATTRIBUTE) THEN
11062 l_selected_volume_attr := G_QUANTITY;
11063 ELSIF (I.attribute = G_LINE_AMT_ATTRIBUTE) THEN
11064 l_selected_volume_attr := G_AMOUNT;
11065 ELSE -- 2388011_latest
11066 l_selected_volume_attr := 'O'; -- 2388011_latest, for weight volume attribute
11067 END IF;
11068 -- end 2388011_new
11069 END IF;-- END is a line group
11070 ELSE --else Not a Volume Context
11071 l_is_line_group_flag := 'F';
11072 l_value_from_num := qp_number.canonical_to_number(I.value_from);
11073 END IF;
11074
11075
11076 IF (I.setup_value_from IS NULL) THEN
11077 l_setup_value_from_num := l_value_from_num;
11078 ELSE
11079 l_setup_value_from_num := qp_number.canonical_to_number(I.setup_value_from);
11080 END IF;
11081
11082 IF (I.setup_value_to IS NULL) THEN
11083 l_setup_value_to_num := l_value_from_num;
11084 ELSE
11085 l_setup_value_to_num := qp_number.canonical_to_number(I.setup_value_to);
11086 END IF;
11087
11088 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11089 engine_debug('1VALUE: '||l_value_from_num);
11090 engine_debug('2VALUE_FROM: '||l_setup_value_from_num);
11091 engine_debug('3VALUE_TO: '||l_setup_value_to_num);
11092
11093 END IF;
11094 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
11095
11096 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11097 engine_debug('4NOT BETWEEN');
11098
11099 END IF;
11100 -- If it is a pricing attribute and it fails on between we can delete it right away
11101 IF (I.attribute_type = 'PRICING') THEN
11102 l_count := l_count + 1;
11103 l_line_detail_tbl(l_count) := I.line_detail_index;
11104 ELSE
11105 UPDATE qp_npreq_line_attrs_tmp
11106 SET PRICING_STATUS_CODE = G_DELETED_BETWEEN
11107 WHERE CURRENT OF l_pric_between_cur;
11108 l_deleted_between := 'T';
11109 END IF;
11110 END IF;
11111
11112 IF (l_deleted_between = 'F') THEN
11113
11114 IF (I.group_quantity IS NOT NULL and I.group_quantity <> l_value_from_num and l_value_from_num IS NOT NULL
11115 and p_line_group_flag IS NOT NULL) THEN
11116 /*
11117 INDX,QP_PREQ_GRP.evaluate_between.evaluate_between_upd1,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11118 */
11119 UPDATE qp_npreq_ldets_tmp
11120 SET GROUP_QUANTITY = l_value_from_num
11121 WHERE LINE_INDEX = i.line_index
11122 AND LINE_DETAIL_INDEX = i.line_detail_index;
11123 END IF;
11124
11125 -- shu debug msg
11126 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11127 QP_PREQ_GRP.engine_debug('check condition...');
11128 QP_PREQ_GRP.engine_debug('i.group_amount: : '||i.group_amount);
11129 QP_PREQ_GRP.engine_debug('l_value_from_num: '||l_value_from_num);
11130 QP_PREQ_GRP.engine_debug('p_line_group_flag: '||p_line_group_flag);
11131 END IF;
11132
11133
11134 IF (I.group_amount IS NOT NULL and l_value_from_num IS NOT NULL -- shu
11135 and p_line_group_flag IS NOT NULL) THEN
11136 /*
11137 INDX,QP_PREQ_GRP.evaluate_between.evaluate_between_upd2,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11138 */
11139
11140
11141 -- begin shu, fix group of lines lumpsum based on ITEM_AMOUNT
11142
11143 SELECT UNIT_PRICE INTO l_list_price
11144 FROM qp_npreq_lines_tmp
11145 WHERE LINE_INDEX = i.line_index;
11146
11147 /* Handled l_list_price = 0 bug2385874 */
11148 IF (l_list_price IS NOT NULL and l_list_price <>0) THEN -- avoid division by zero
11149
11150 l_group_amount := I.group_amount /l_list_price;
11151 ELSE
11152 if l_list_price = 0 then
11153 l_group_amount := 0;
11154 else
11155 l_group_amount :=I.group_amount;
11156 end if;
11157 END IF;
11158
11159 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11160 QP_PREQ_GRP.engine_debug('line_index: '||i.line_index);
11161 QP_PREQ_GRP.engine_debug('list price: '||l_list_price);
11162 QP_PREQ_GRP.engine_debug('i.group_amount: '||i.group_amount);
11163 QP_PREQ_GRP.engine_debug('group_value: '||l_group_amount);
11164 END IF;
11165 -- end shu fix
11166
11167 UPDATE qp_npreq_ldets_tmp
11168 SET GROUP_AMOUNT = l_group_amount -- shu
11169 WHERE LINE_INDEX = i.line_index
11170 AND LINE_DETAIL_INDEX = i.line_detail_index;
11171
11172 END IF;
11173
11174 --Need the LINE_QUANTITY column to be updated for regular lines with volume attributes, for Calculation purposes
11175 IF (p_line_group_flag IS NULL and l_is_line_group_flag = 'F'
11176 and i.context = G_PRIC_VOLUME_CONTEXT) -- added for [5005328/4911264]
11177 THEN
11178 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11179 QP_PREQ_GRP.engine_debug('Line Index: ' || i.line_index || ' LD Index : ' || i.line_detail_index ||
11180 ' '||l_value_from_num);
11181 END IF;
11182 /*
11183 INDX,QP_PREQ_GRP.evaluate_between.evaluate_between_upd3,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11184 */
11185 UPDATE qp_npreq_ldets_tmp
11186 SET LINE_QUANTITY = l_value_from_num
11187 WHERE LINE_INDEX = i.line_index
11188 AND LINE_DETAIL_INDEX = i.line_detail_index;
11189 END IF;
11190
11191 END IF;
11192 END LOOP;
11193 ELSE
11194 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11195 QP_PREQ_GRP.engine_debug('Before Opening Modifiers Numeric Between Cur');
11196 END IF;
11197 FOR I IN l_mod_between_cur(p_datatype => G_NUMERIC) LOOP
11198
11199 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11200 QP_PREQ_GRP.engine_debug('In Modifiers Numeric Between Cur');
11201
11202 END IF;
11203 l_deleted_between := 'F';
11204
11205 IF I.context = G_PRIC_VOLUME_CONTEXT THEN
11206 IF(Is_Line_Group(p_line_detail_index => I.line_detail_index) = TRUE) THEN
11207 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11208 QP_PREQ_GRP.engine_debug('Is Line Group #100');
11209
11210 END IF;
11211 l_is_line_group_flag := 'T';
11212
11213 IF (p_line_group_flag IS NOT NULL) THEN
11214 IF I.attribute = G_QUANTITY_ATTRIBUTE THEN
11215 l_value_from_num := I.group_quantity;
11216 ELSIF (I.attribute = G_LINE_AMT_ATTRIBUTE) THEN
11217 IF (p_pricing_phase_id <> G_PRICE_LIST_PHASE_ID) THEN
11218 l_value_from_num := I.group_amount;
11219 END IF;
11220 ELSE -- For Order Amount,Period1 Amount kind of attributes
11221 l_value_from_num := qp_number.canonical_to_number(I.value_from);
11222 END IF;
11223 ELSE -- Make it a success,because line group between is done again,so do not delete
11224 l_value_from_num := NULL;
11225 END IF;
11226
11227 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11228 engine_debug('Is line group');
11229 engine_debug('Group Quantity : ' || l_value_from_num);
11230 engine_debug('Line detail index: '||I.line_detail_index);
11231 END IF;
11232 ELSE -- is not a line group
11233 l_is_line_group_flag := 'F';
11234 l_value_from_num := qp_number.canonical_to_number(I.value_from);
11235 END IF;
11236 ELSE --else Not a Volume Context
11237 l_is_line_group_flag := 'F';
11238 l_value_from_num := qp_number.canonical_to_number(I.value_from);
11239 END IF;
11240
11241
11242 IF (I.setup_value_from IS NULL) THEN
11243 l_setup_value_from_num := l_value_from_num;
11244 ELSE
11245 l_setup_value_from_num := qp_number.canonical_to_number(I.setup_value_from);
11246 END IF;
11247
11248 IF (I.setup_value_to IS NULL) THEN
11249 l_setup_value_to_num := l_value_from_num;
11250 ELSE
11251 l_setup_value_to_num := qp_number.canonical_to_number(I.setup_value_to);
11252 END IF;
11253
11254 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11255 engine_debug('1VALUE: '||l_value_from_num);
11256 engine_debug('2VALUE_FROM: '||l_setup_value_from_num);
11257 engine_debug('3VALUE_TO: '||l_setup_value_to_num);
11258
11259 END IF;
11260 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
11261
11262 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11263 engine_debug('4NOT BETWEEN');
11264
11265 END IF;
11266 -- If it is a pricing attribute and it fails on between we can delete it right away
11267 IF (I.attribute_type = 'PRICING') THEN
11268 l_count := l_count + 1;
11269 l_line_detail_tbl(l_count) := I.line_detail_index;
11270 ELSE
11271 UPDATE qp_npreq_line_attrs_tmp
11272 SET PRICING_STATUS_CODE = G_DELETED_BETWEEN
11273 WHERE CURRENT OF l_mod_between_cur;
11274 l_deleted_between := 'T';
11275 END IF;
11276 END IF;
11277
11278 IF (l_deleted_between = 'F') THEN
11279
11280 IF (I.group_quantity IS NOT NULL and I.group_quantity <> l_value_from_num and l_value_from_num IS NOT NULL
11281 and p_line_group_flag IS NOT NULL) THEN
11282 /*
11283 INDX,QP_PREQ_GRP.evaluate_between.evaluate_between_upd1,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11284 */
11285 UPDATE qp_npreq_ldets_tmp
11286 SET GROUP_QUANTITY = l_value_from_num, --2388011_new
11287 SELECTED_VOLUME_ATTR = l_selected_volume_attr -- 2388011_new
11288 WHERE LINE_INDEX = i.line_index
11289 AND LINE_DETAIL_INDEX = i.line_detail_index;
11290 END IF;
11291
11292 -- shu debug msg
11293 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11294 QP_PREQ_GRP.engine_debug('for modifiers...');
11295 QP_PREQ_GRP.engine_debug('check condition...');
11296 QP_PREQ_GRP.engine_debug('i.group_amount: : '||i.group_amount);
11297 QP_PREQ_GRP.engine_debug('l_value_from_num: '||l_value_from_num);
11298 QP_PREQ_GRP.engine_debug('p_line_group_flag: '||p_line_group_flag);
11299
11300 END IF;
11301 IF (I.group_amount IS NOT NULL and l_value_from_num IS NOT NULL
11302 and p_line_group_flag IS NOT NULL) THEN
11303 /*
11304 INDX,QP_PREQ_GRP.evaluate_between.evaluate_between_upd2,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11305 */
11306
11307
11308 -- [julin/5085310]
11309 IF (i.attribute = G_LINE_AMT_ATTRIBUTE) THEN
11310
11311 SELECT UNIT_PRICE INTO l_list_price
11312 FROM qp_npreq_lines_tmp
11313 WHERE LINE_INDEX = i.line_index;
11314
11315 /* Handled l_list_price = 0 bug2385874 */
11316 IF (l_list_price IS NOT NULL and l_list_price <>0) THEN -- avoid division by zero
11317
11318 l_group_amount := I.group_amount /l_list_price;
11319 ELSE
11320 if l_list_price = 0 then
11321 l_group_amount := 0;
11322 else
11323 l_group_amount :=I.group_amount;
11324 end if;
11325 END IF;
11326 ELSE
11327 OPEN l_line_amount_cur(i.line_index, i.line_detail_index, i.context, i.attribute, i.attribute_type);
11328 FETCH l_line_amount_cur into l_line_amount, l_priced_quantity;
11329 CLOSE l_line_amount_cur;
11330
11331 IF (l_line_amount IS NOT NULL and l_line_amount <>0) THEN -- avoid division by zero
11332 l_group_amount := (I.group_amount /l_line_amount) * l_priced_quantity;
11333 ELSE
11334 if l_line_amount = 0 then
11335 l_group_amount := 0;
11336 else
11337 l_group_amount :=I.group_amount;
11338 end if;
11339 END IF;
11340 END IF;
11341
11342 -- shu, for modifiers
11343 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11344 QP_PREQ_GRP.engine_debug('for modifiers...');
11345 QP_PREQ_GRP.engine_debug('line_index: '||i.line_index);
11346 QP_PREQ_GRP.engine_debug('list price: '||l_list_price);
11347 QP_PREQ_GRP.engine_debug('i.group_amount: '||i.group_amount);
11348 QP_PREQ_GRP.engine_debug('group_value: '||l_group_amount);
11349 END IF;
11350
11351 UPDATE qp_npreq_ldets_tmp
11352 SET GROUP_AMOUNT = l_group_amount, -- 2388011_new, fix group of lines lumpsum based on ITEM_AMOUNT
11353 SELECTED_VOLUME_ATTR = l_selected_volume_attr -- 2388011_new
11354 WHERE LINE_INDEX = i.line_index
11355 AND LINE_DETAIL_INDEX = i.line_detail_index;
11356 END IF;
11357
11358 --Need the LINE_QUANTITY column to be updated for regular lines with volume attributes, for Calculation purposes
11359 IF (p_line_group_flag IS NULL and l_is_line_group_flag = 'F'
11360 and i.context = G_PRIC_VOLUME_CONTEXT) -- added for [5005328/4911264]
11361 THEN
11362 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11363 QP_PREQ_GRP.engine_debug('Line Index: ' || i.line_index || ' LD Index : ' || i.line_detail_index ||
11364 ' '||l_value_from_num);
11365 END IF;
11366 /*
11367 INDX,QP_PREQ_GRP.evaluate_between.evaluate_between_upd3,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11368 */
11369 UPDATE qp_npreq_ldets_tmp
11370 SET LINE_QUANTITY = l_value_from_num, --2388011_new
11371 SELECTED_VOLUME_ATTR = l_selected_volume_attr --2388011_new
11372 WHERE LINE_INDEX = i.line_index
11373 AND LINE_DETAIL_INDEX = i.line_detail_index;
11374 END IF;
11375
11376 END IF;
11377
11378 END LOOP;
11379
11380 END IF; -- IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID)
11381
11382 -- If it is a pricing attribute and it fails on between we can delete it right away..Delete all line details where pricing
11383 -- attribute BETWEEN fails
11384 FORALL I IN 1 .. l_line_detail_tbl.COUNT
11385
11386 /*
11387 INDX,QP_PREQ_GRP.evaluate_between.upd4,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
11388 */
11389 UPDATE qp_npreq_ldets_tmp --upd4
11390 SET PRICING_STATUS_CODE = G_DELETED_BETWEEN
11391 WHERE LINE_DETAIL_INDEX = l_line_detail_tbl(i);
11392
11393 EXCEPTION
11394 WHEN OTHERS THEN
11395 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11396 engine_debug(l_routine||' '||SQLERRM);
11397 END IF;
11398 x_status_code := FND_API.G_RET_STS_ERROR;
11399 x_status_text := l_routine||': '||SQLERRM;
11400
11401 END Evaluate_Between;
11402
11403 /*+---------------------------------------------------------
11404 |PROCEDURE handle_break called by get_eligible_break_lines
11405 +----------------------------------------------------------
11406 */
11407
11408 PROCEDURE Handle_Break(p_list_header_id IN NUMBER,
11409 p_list_line_id IN NUMBER,
11410 p_pricing_phase_id IN PLS_INTEGER,
11411 p_line_detail_index IN PLS_INTEGER,
11412 p_line_index IN PLS_INTEGER,
11413 p_group_quantity IN NUMBER,
11414 p_group_amount IN NUMBER,
11415 p_list_type_code IN VARCHAR2, /* Vivek */
11416 x_is_break_satisfy OUT NOCOPY BOOLEAN,
11417 x_status_code OUT NOCOPY VARCHAR2,
11418 x_status_text OUT NOCOPY VARCHAR2) AS
11419
11420 /*
11421 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,QP_RLTD_MODIFIERS_N1,FROM_RLTD_MODIFIER_ID,1
11422
11423 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
11424 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
11425 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
11426 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
11427 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
11428
11429 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
11430
11431 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,QP_PRICING_ATTRIBUTES_N4,PRICING_ATTRIBUTE_CONTEXT,1
11432 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,QP_PRICING_ATTRIBUTES_N4,PRICING_ATTRIBUTE,2
11433
11434 INDX,QP_PREQ_GRP.handle_break.l_price_break_detail_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
11435 */
11436
11437 cursor l_price_break_detail_multi_cur(p_reduced_pbh_processing VARCHAR2) is
11438 SELECT /*+ ordered use_nl(qplines, qprm, qppa, qpll, qph, qcdt) */
11439 qpll.pricing_group_sequence,
11440 qpll.list_header_id,
11441 qppa.list_line_id,
11442 qppa.product_attribute_context, --setup values
11443 qppa.product_attribute,
11444 qppa.product_attr_value,
11445 qppa.pricing_attribute_context,
11446 qppa.pricing_attribute,
11447 qppa.pricing_attr_value_from,
11448 qppa.pricing_attr_value_to,
11449 qppa.product_uom_code,
11450 qplat_pricing.value_from,
11451 qplat_pricing.attribute,
11452 nvl(qplines.priced_uom_code,qplines.line_uom_code) line_uom_code,
11453 qplines.line_uom_code order_uom_code, -- shulin, for total_item_quantity uom conversion
11454 qplines.line_index,
11455 nvl(qplines.priced_quantity,qplines.line_quantity) line_quantity,
11456 qpll.list_line_type_code,
11457 qpll.modifier_level_code,
11458 qpll.benefit_qty,
11459 qpll.benefit_uom_code,
11460 qpll.list_line_no,
11461 qpll.accrual_flag,
11462 qpll.accrual_conversion_rate,
11463 qpll.estim_accrual_rate,
11464 qpll.recurring_value, -- block pricing
11465 qpll.arithmetic_operator,
11466 qpll.operand,
11467 qpll.list_price,
11468 qpll.pricing_phase_id,
11469 qpll.automatic_flag,
11470 qpll.price_break_type_code,
11471 qpll.incompatibility_GRP_CODE,
11472 qpll.override_flag,
11473 qpll.print_on_invoice_flag,
11474 qpll.price_by_formula_id,
11475 qpll.product_precedence,
11476 nvl(qplines.usage_pricing_type,G_REGULAR_USAGE_TYPE) usage_pricing_type,
11477 QCDT.ROUNDING_FACTOR, /* vivek */
11478 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
11479 QCDT.CURRENCY_HEADER_ID, /* vivek */
11480 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
11481 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
11482 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
11483 QPH.CURRENCY_CODE BASE_CURRENCY_CODE, /* vivek */
11484 qplines.contract_start_date, -- R12 partial period pricing
11485 qplines.contract_end_date -- R12 partial period pricing
11486 FROM
11487 qp_npreq_line_attrs_tmp qplat_pricing,
11488 qp_npreq_lines_tmp qplines,
11489 qp_rltd_modifiers qprm,
11490 qp_pricing_attributes qppa,
11491 qp_list_lines qpll
11492 ,qp_list_headers_b qph /* Vivek */
11493 ,qp_currency_details qcdt /* Vivek */
11494 WHERE qprm.from_rltd_modifier_id = p_list_line_id
11495 AND qprm.to_rltd_modifier_id = qppa.list_line_id
11496 AND qppa.list_line_id = qpll.list_line_id
11497 AND qplat_pricing.context = G_PRIC_VOLUME_CONTEXT
11498 AND qppa.pricing_attribute_context = G_PRIC_VOLUME_CONTEXT
11499 AND qplat_pricing.attribute = qppa.pricing_attribute
11500 AND qplat_pricing.attribute_type = G_PRICING_TYPE
11501 AND qplat_pricing.line_index = qplines.line_index
11502 AND qplat_pricing.pricing_status_code = G_STATUS_UNCHANGED
11503 AND qplat_pricing.line_index = p_line_index
11504 -- and qp_number.canonical_to_number(qplat_pricing.value_from) <> 0 -- 5158413
11505 -- commented above for bug#6896139 as fix for bug#5158413 did not consider for G_LINE_GROUP,lines with line qty as 0
11506 --(i.e qplat_pricing.value_from=0) even when the qualifier group count for G_LINE_GROUP was greater than zero
11507 and qpll.list_header_id = qph.list_header_id /* Vivek */
11508 and QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
11509 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
11510 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
11511 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
11512 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
11513 AND ( /* Vivek */
11514 (qcdt.curr_attribute_context is null /* Vivek */
11515 and not exists /* Vivek */
11516 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
11517 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
11518 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
11519 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
11520 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
11521 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
11522 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
11523 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
11524 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
11525 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
11526 and pa_tmp.line_index = qplines.line_index /* Vivek */
11527 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
11528 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
11529 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
11530 ) /* Vivek */
11531 ) /* Vivek */
11532 OR /* Vivek */
11533 (qcdt.curr_attribute_context is not null /* Vivek */
11534 and qcdt.precedence =
11535 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
11536 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
11537 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
11538 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
11539 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
11540 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
11541 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
11542 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
11543 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
11544 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
11545 and pa_tmp1.line_index = qplines.line_index /* Vivek */
11546 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
11547 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
11548 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
11549 ) /* Vivek */
11550 ) /* Vivek */
11551 ) /* Vivek */
11552 and (( (p_reduced_pbh_processing = G_YES) --[julin/3783009/4712794]
11553 and (nvl(qplines.usage_pricing_type,G_REGULAR_USAGE_TYPE) <> G_AUTHORING_TYPE)
11554 and ( (qpll.price_break_type_code = G_POINT_BREAK and qp_number.canonical_to_number(qplat_pricing.value_from)
11555 between qp_number.canonical_to_number(qppa.pricing_attr_value_from)
11556 and qp_number.canonical_to_number(qppa.pricing_attr_value_to)
11557 ) OR
11558 (qpll.price_break_type_code = G_RANGE_BREAK and qp_number.canonical_to_number(qppa.pricing_attr_value_from)
11559 <= qp_number.canonical_to_number(qplat_pricing.value_from)
11560 )
11561 )
11562 )
11563 or
11564 (p_reduced_pbh_processing = G_NO)
11565 )
11566 ORDER BY qp_number.canonical_to_number(qppa.pricing_attr_value_from); --bug#1819397
11567
11568 cursor l_price_break_detail_cur(p_reduced_pbh_processing VARCHAR2) is
11569 SELECT /*+ ordered use_nl(qplines, qprm, qppa, qpll) */
11570 qpll.pricing_group_sequence,
11571 qpll.list_header_id,
11572 qppa.list_line_id,
11573 qppa.product_attribute_context, --setup values
11574 qppa.product_attribute,
11575 qppa.product_attr_value,
11576 qppa.pricing_attribute_context,
11577 qppa.pricing_attribute,
11578 qppa.pricing_attr_value_from,
11579 qppa.pricing_attr_value_to,
11580 qppa.product_uom_code,
11581 qplat_pricing.value_from,
11582 qplat_pricing.attribute,
11583 nvl(qplines.priced_uom_code,qplines.line_uom_code) line_uom_code,
11584 qplines.line_uom_code order_uom_code, -- shulin, for total_item_quantity uom conversion
11585 qplines.line_index,
11586 nvl(qplines.priced_quantity,qplines.line_quantity) line_quantity,
11587 qpll.list_line_type_code,
11588 qpll.modifier_level_code,
11589 qpll.benefit_qty,
11590 qpll.benefit_uom_code,
11591 qpll.list_line_no,
11592 qpll.accrual_flag,
11593 qpll.accrual_conversion_rate,
11594 qpll.estim_accrual_rate,
11595 qpll.recurring_value, -- block pricing
11596 qpll.arithmetic_operator,
11597 qpll.operand,
11598 qpll.list_price,
11599 qpll.pricing_phase_id,
11600 qpll.automatic_flag,
11601 qpll.price_break_type_code,
11602 qpll.incompatibility_GRP_CODE,
11603 qpll.override_flag,
11604 qpll.print_on_invoice_flag,
11605 qpll.price_by_formula_id,
11606 qpll.product_precedence,
11607 nvl(qplines.usage_pricing_type,G_REGULAR_USAGE_TYPE) usage_pricing_type,
11608 NULL ROUNDING_FACTOR, /* vivek */
11609 NULL CURRENCY_DETAIL_ID, /* sunilpandey */
11610 NULL CURRENCY_HEADER_ID, /* vivek */
11611 NULL SELLING_ROUNDING_FACTOR, /* vivek */
11612 NULL ORDER_CURRENCY, /* vivek */
11613 NULL PRICING_EFFECTIVE_DATE, /* vivek */
11614 NULL BASE_CURRENCY_CODE, /* vivek */
11615 qplines.contract_start_date, -- R12 partial period pricing
11616 qplines.contract_end_date -- R12 partial period pricing
11617 FROM
11618 qp_npreq_line_attrs_tmp qplat_pricing,
11619 qp_npreq_lines_tmp qplines,
11620 qp_rltd_modifiers qprm,
11621 qp_pricing_attributes qppa,
11622 qp_list_lines qpll
11623 WHERE qprm.from_rltd_modifier_id = p_list_line_id
11624 AND qprm.to_rltd_modifier_id = qppa.list_line_id
11625 AND qppa.list_line_id = qpll.list_line_id
11626 AND qplat_pricing.context = G_PRIC_VOLUME_CONTEXT
11627 AND qppa.pricing_attribute_context = G_PRIC_VOLUME_CONTEXT
11628 AND qplat_pricing.attribute = qppa.pricing_attribute
11629 AND qplat_pricing.attribute_type = G_PRICING_TYPE
11630 AND qplat_pricing.line_index = qplines.line_index
11631 AND qplat_pricing.pricing_status_code = G_STATUS_UNCHANGED
11632 AND qplat_pricing.line_index = p_line_index
11633 -- and qp_number.canonical_to_number(qplat_pricing.value_from) <> 0 -- 5158413
11634 -- commented above for bug#6896139 as fix for bug#5158413 did not consider for G_LINE_GROUP,lines with line qty as 0
11635 --(i.e qplat_pricing.value_from=0) even when the qualifier group count for G_LINE_GROUP was greater than zero
11636 and (( (p_reduced_pbh_processing = G_YES) --[julin/3783009/4712794]
11637 and (nvl(qplines.usage_pricing_type,G_REGULAR_USAGE_TYPE) <> G_AUTHORING_TYPE)
11638 and ( (qpll.price_break_type_code = G_POINT_BREAK and qp_number.canonical_to_number(qplat_pricing.value_from)
11639 between qp_number.canonical_to_number(qppa.pricing_attr_value_from)
11640 and qp_number.canonical_to_number(qppa.pricing_attr_value_to)
11641 ) OR
11642 (qpll.price_break_type_code = G_RANGE_BREAK and qp_number.canonical_to_number(qppa.pricing_attr_value_from)
11643 <= qp_number.canonical_to_number(qplat_pricing.value_from)
11644 )
11645 )
11646 )
11647 or
11648 (p_reduced_pbh_processing = G_NO)
11649 )
11650 ORDER BY qp_number.canonical_to_number(qppa.pricing_attr_value_from); --bug#1819397
11651
11652 CURSOR l_pbh_cur IS
11653 SELECT net_amount_flag
11654 FROM qp_list_lines
11655 WHERE list_line_id = p_list_line_id;
11656
11657 J PLS_INTEGER:=1;
11658 N PLS_INTEGER:=1;
11659 --l_line_detail_index PLS_INTEGER;
11660 --l_line_detail_tbl LINE_DETAIL_TBL_TYPE;
11661 --l_line_attrs_tbl LINE_ATTR_TBL_TYPE;
11662 l_VALID_PBH_FLAG VARCHAR2(1):='N';
11663 l_VALUE_TO NUMBER:=0;
11664 l_VALUE_FROM NUMBER;
11665 l_order_uom_code VARCHAR2(3);
11666 l_primary_uom VARCHAR2(3);
11667 l_product_uom VARCHAR2(3);
11668 l_quantity NUMBER;
11669 l_item_id NUMBER;
11670 l_uom_rate NUMBER;
11671 l_status_code VARCHAR2(30);
11672 l_status_text VARCHAR2(240);
11673 E_INVALID_PRICE_BREAK_TYPE EXCEPTION;
11674 E_INVALID_UOM_CONVERSION EXCEPTION;
11675 e_proration_fac_oks_error exception; /* Proration */
11676 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.HANDLE_BREAK';
11677 rowid_tbl ROWID_TYPE;
11678 index_tbl PLS_INTEGER_TYPE;
11679 l_count PLS_INTEGER:=0;
11680 l_grp_quantity NUMBER:=0;
11681 l_selected_volume_attr VARCHAR2(1);
11682 l_setup_value_from NUMBER;
11683 l_continuous_flag BOOLEAN := FALSE; -- 4061138, maintained only if proration involved
11684
11685 -- julin [3805113]: local tables populated via cursor
11686 l_h_pricing_group_sequence_tbl NUMBER_TYPE;
11687 l_h_list_header_id_tbl NUMBER_TYPE;
11688 l_h_list_line_id_tbl NUMBER_TYPE;
11689 l_h_product_attr_context_tbl VARCHAR_TYPE;
11690 l_h_product_attribute_tbl VARCHAR_TYPE;
11691 l_h_product_attr_value_tbl VARCHAR_TYPE;
11692 l_h_pricing_attr_context_tbl VARCHAR_TYPE;
11693 l_h_pricing_attribute_tbl VARCHAR_TYPE;
11694 l_h_pricing_attr_val_from_tbl VARCHAR_TYPE;
11695 l_h_pricing_attr_val_to_tbl VARCHAR_TYPE;
11696 l_h_product_uom_code_tbl VARCHAR_30_TYPE;
11697 l_h_value_from_tbl VARCHAR_TYPE;
11698 l_h_attribute_tbl VARCHAR_TYPE;
11699 l_h_line_uom_code_tbl VARCHAR_30_TYPE;
11700 l_h_order_uom_code_tbl VARCHAR_30_TYPE; -- shu, for total_item_qty
11701 l_h_line_index_tbl NUMBER_TYPE;
11702 l_h_line_quantity_tbl NUMBER_TYPE;
11703 l_h_list_line_type_code_tbl VARCHAR_30_TYPE;
11704 l_h_modifier_level_code_tbl VARCHAR_30_TYPE;
11705 l_h_benefit_qty_tbl NUMBER_TYPE;
11706 l_h_benefit_uom_code_tbl VARCHAR_30_TYPE;
11707 l_h_list_line_no_tbl NUMBER_TYPE;
11708 l_h_accrual_flag_tbl VARCHAR_30_TYPE;
11709 l_h_accrual_conv_rate_tbl NUMBER_TYPE;
11710 l_h_estim_accrual_rate_tbl NUMBER_TYPE;
11711 l_h_recurring_value_tbl NUMBER_TYPE; -- block pricing
11712 l_h_arithmetic_operator_tbl VARCHAR_30_TYPE;
11713 l_h_operand_tbl NUMBER_TYPE;
11714 l_h_list_price_tbl NUMBER_TYPE;
11715 l_h_pricing_phase_id_tbl NUMBER_TYPE;
11716 l_h_automatic_flag_tbl VARCHAR_30_TYPE;
11717 l_h_price_break_type_code_tbl VARCHAR_30_TYPE;
11718 l_h_incompat_grp_code_tbl VARCHAR_30_TYPE;
11719 l_h_override_flag_tbl VARCHAR_30_TYPE;
11720 l_h_print_on_invoice_flag_tbl VARCHAR_30_TYPE;
11721 l_h_price_by_formula_id_tbl NUMBER_TYPE;
11722 l_h_product_precedence_tbl NUMBER_TYPE;
11723 l_h_usage_pricing_type_tbl VARCHAR_30_TYPE;
11724 l_h_rounding_factor_tbl NUMBER_TYPE; /* Vivek */
11725 l_h_currency_detail_id_tbl NUMBER_TYPE; /* Vivek */
11726 l_h_currency_header_id_tbl NUMBER_TYPE; /* Vivek */
11727 l_h_selling_round_factor_tbl NUMBER_TYPE; /* Vivek */
11728 l_h_order_currency_tbl VARCHAR_30_TYPE; /* Vivek */
11729 l_h_pricing_effective_date_tbl DATE_TYPE; /* Vivek */
11730 l_h_base_currency_code_tbl VARCHAR_30_TYPE; /* Vivek */
11731 l_h_contract_start_date_tbl DATE_TYPE; -- R12 partial period pricing
11732 l_h_contract_end_date_tbl DATE_TYPE; -- R12 partial period pricing
11733
11734 -- julin [3805113]: local tables not populated via cursor
11735 l_l_line_detail_index_tbl NUMBER_TYPE;
11736 l_l_selected_volume_attr_tbl FLAG_TYPE; -- only need VARCHAR(1)
11737 l_l_G_CHILD_DETAIL_TYPE_tbl VARCHAR_30_TYPE;
11738 l_l_p_line_index_tbl PLS_INTEGER_TYPE;
11739 l_l_G_STATUS_NEW_tbl VARCHAR_30_TYPE;
11740 l_l_G_NOT_PROCESSED_tbl VARCHAR_30_TYPE;
11741 l_l_group_quantity_tbl NUMBER_TYPE;
11742 l_l_group_amount_tbl NUMBER_TYPE;
11743 l_l_list_type_code_tbl VARCHAR_TYPE;
11744 l_l_G_DETAIL_LEVEL_tbl VARCHAR_30_TYPE;
11745 l_l_G_PRICING_TYPE_tbl VARCHAR_30_TYPE;
11746 l_l_G_BY_PBH_tbl VARCHAR_30_TYPE;
11747 l_l_G_OPERATOR_BETWEEN_tbl VARCHAR_30_TYPE;
11748 l_l_p_list_line_id_tbl NUMBER_TYPE;
11749 l_l_G_PBH_LINE_tbl VARCHAR_30_TYPE;
11750 l_l_G_PROCESSED_tbl VARCHAR_30_TYPE;
11751 l_l_quantity_tbl NUMBER_TYPE;
11752 l_l_p_line_detail_index_tbl NUMBER_TYPE;
11753
11754 --type refcur is ref cursor;
11755
11756 --l_price_break_detail_cur refcur;
11757 l_total_item_quantity NUMBER; -- shu
11758 l_max_decimal_digits PLS_INTEGER := nvl(FND_PROFILE.Value ('QP_INV_DECIMAL_PRECISION'),10); --shu
11759
11760 l_break_uom_code VARCHAR2(3); /* Proration */
11761 l_break_uom_context VARCHAR2(30); /* Proration */
11762 l_break_uom_attribute VARCHAR2(30); /* Proration */
11763 l_passed_break_uom VARCHAR2(3); /* Proration */
11764 l_proration_factor NUMBER; /* Proration */
11765 l_contract_start_date date; /* Proration */
11766 l_contract_end_date date; /* Proration */
11767 l_proration_processed VARCHAR2(1) := 'N'; /* Proration */
11768 l_value_temp NUMBER; /* Proration */
11769 l_first_time_flag VARCHAR2(1) := 'Y'; /* Proration */
11770 l_prev_setup_to_value number; /* ER 3637202 */
11771 l_prev_prorated_to_value number; /* ER 3637202 */
11772 l_gap number; /* ER 3637202 */
11773 l_reduced_pbh_processing varchar2(1); --[julin/3783009/4712794]
11774 l_net_amount_flag varchar2(1); --[julin/4671446]
11775
11776 BEGIN
11777
11778 --product uom code is different than order uom code
11779 --and attribute is quantity than we need to do uom conversion
11780 if G_BREAK_UOM_PRORATION is null then
11781 G_BREAK_UOM_PRORATION := nvl(fnd_profile.value('QP_BREAK_UOM_PRORATION'), G_NULL_PROFILE_VALUE);
11782 end if;
11783
11784 N := 1;
11785
11786 --[julin/3783009/4712794] ER - reduced pbh process should be done when following conditions are met
11787 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
11788 l_reduced_pbh_processing := G_YES;
11789 else
11790 l_reduced_pbh_processing := G_NO;
11791 end if;
11792
11793 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11794 engine_debug('G_BREAK_UOM_PRORATION ' || G_BREAK_UOM_PRORATION);
11795 engine_debug('p_list_type_code ' || p_list_type_code);
11796 engine_debug('G_REQUEST_TYPE_CODE ' || G_REQUEST_TYPE_CODE);
11797 engine_debug('l_reduced_pbh_processing ' || l_reduced_pbh_processing);
11798
11799 END IF;
11800
11801 --[julin/4671446]
11802 OPEN l_pbh_cur;
11803 FETCH l_pbh_cur into l_net_amount_flag;
11804 CLOSE l_pbh_cur;
11805
11806 -- julin [3805113]: bulk fetch
11807 IF (p_pricing_phase_id = 1 and G_MULTI_CURRENCY_PROFILE = G_YES
11808 and G_USE_MULTI_CURRENCY = G_YES) THEN
11809 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11810 engine_debug ('Multi-Currency Pricing Phase Price Break');
11811 END IF;
11812 OPEN l_price_break_detail_multi_cur(l_reduced_pbh_processing);
11813 FETCH l_price_break_detail_multi_cur BULK COLLECT INTO
11814 l_h_pricing_group_sequence_tbl,
11815 l_h_list_header_id_tbl,
11816 l_h_list_line_id_tbl,
11817 l_h_product_attr_context_tbl,
11818 l_h_product_attribute_tbl,
11819 l_h_product_attr_value_tbl,
11820 l_h_pricing_attr_context_tbl,
11821 l_h_pricing_attribute_tbl,
11822 l_h_pricing_attr_val_from_tbl,
11823 l_h_pricing_attr_val_to_tbl,
11824 l_h_product_uom_code_tbl,
11825 l_h_value_from_tbl,
11826 l_h_attribute_tbl,
11827 l_h_line_uom_code_tbl,
11828 l_h_order_uom_code_tbl, -- shulin_tbl, for total_item_quantity uom conversion
11829 l_h_line_index_tbl,
11830 l_h_line_quantity_tbl,
11831 l_h_list_line_type_code_tbl,
11832 l_h_modifier_level_code_tbl,
11833 l_h_benefit_qty_tbl,
11834 l_h_benefit_uom_code_tbl,
11835 l_h_list_line_no_tbl,
11836 l_h_accrual_flag_tbl,
11837 l_h_accrual_conv_rate_tbl,
11838 l_h_estim_accrual_rate_tbl,
11839 l_h_recurring_value_tbl, -- block pricing
11840 l_h_arithmetic_operator_tbl,
11841 l_h_operand_tbl,
11842 l_h_list_price_tbl,
11843 l_h_pricing_phase_id_tbl,
11844 l_h_automatic_flag_tbl,
11845 l_h_price_break_type_code_tbl,
11846 l_h_incompat_grp_code_tbl,
11847 l_h_override_flag_tbl,
11848 l_h_print_on_invoice_flag_tbl,
11849 l_h_price_by_formula_id_tbl,
11850 l_h_product_precedence_tbl,
11851 l_h_usage_pricing_type_tbl,
11852 l_h_rounding_factor_tbl, /* Vivek */
11853 l_h_currency_detail_id_tbl, /* Vivek */
11854 l_h_currency_header_id_tbl, /* Vivek */
11855 l_h_selling_round_factor_tbl, /* Vivek */
11856 l_h_order_currency_tbl, /* Vivek */
11857 l_h_pricing_effective_date_tbl, /* Vivek */
11858 l_h_base_currency_code_tbl, /* Vivek */
11859 l_h_contract_start_date_tbl, -- R12 partial period pricing
11860 l_h_contract_end_date_tbl; -- R12 partial period pricing
11861 CLOSE l_price_break_detail_multi_cur;
11862 ELSE
11863 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11864 engine_debug ('Discounts Based Price Break');
11865 END IF;
11866 OPEN l_price_break_detail_cur(l_reduced_pbh_processing);
11867 FETCH l_price_break_detail_cur BULK COLLECT INTO
11868 l_h_pricing_group_sequence_tbl,
11869 l_h_list_header_id_tbl,
11870 l_h_list_line_id_tbl,
11871 l_h_product_attr_context_tbl,
11872 l_h_product_attribute_tbl,
11873 l_h_product_attr_value_tbl,
11874 l_h_pricing_attr_context_tbl,
11875 l_h_pricing_attribute_tbl,
11876 l_h_pricing_attr_val_from_tbl,
11877 l_h_pricing_attr_val_to_tbl,
11878 l_h_product_uom_code_tbl,
11879 l_h_value_from_tbl,
11880 l_h_attribute_tbl,
11881 l_h_line_uom_code_tbl,
11882 l_h_order_uom_code_tbl, -- shulin_tbl, for total_item_quantity uom conversion
11883 l_h_line_index_tbl,
11884 l_h_line_quantity_tbl,
11885 l_h_list_line_type_code_tbl,
11886 l_h_modifier_level_code_tbl,
11887 l_h_benefit_qty_tbl,
11888 l_h_benefit_uom_code_tbl,
11889 l_h_list_line_no_tbl,
11890 l_h_accrual_flag_tbl,
11891 l_h_accrual_conv_rate_tbl,
11892 l_h_estim_accrual_rate_tbl,
11893 l_h_recurring_value_tbl, -- block pricing
11894 l_h_arithmetic_operator_tbl,
11895 l_h_operand_tbl,
11896 l_h_list_price_tbl,
11897 l_h_pricing_phase_id_tbl,
11898 l_h_automatic_flag_tbl,
11899 l_h_price_break_type_code_tbl,
11900 l_h_incompat_grp_code_tbl,
11901 l_h_override_flag_tbl,
11902 l_h_print_on_invoice_flag_tbl,
11903 l_h_price_by_formula_id_tbl,
11904 l_h_product_precedence_tbl,
11905 l_h_usage_pricing_type_tbl,
11906 l_h_rounding_factor_tbl, /* Vivek */
11907 l_h_currency_detail_id_tbl, /* Vivek */
11908 l_h_currency_header_id_tbl, /* Vivek */
11909 l_h_selling_round_factor_tbl, /* Vivek */
11910 l_h_order_currency_tbl, /* Vivek */
11911 l_h_pricing_effective_date_tbl, /* Vivek */
11912 l_h_base_currency_code_tbl, /* Vivek */
11913 l_h_contract_start_date_tbl, -- R12 partial period pricing
11914 l_h_contract_end_date_tbl; -- R12 partial period pricing
11915 CLOSE l_price_break_detail_cur;
11916 END IF;
11917
11918 IF (l_h_list_line_id_tbl.COUNT > 0) THEN
11919 FOR I in l_h_list_line_id_tbl.FIRST .. l_h_list_line_id_tbl.LAST
11920 LOOP
11921
11922 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11923 engine_debug('Modifier_level_code: '||l_h_modifier_level_code_tbl(i));
11924 engine_debug('Attribute: '||l_h_ATTRIBUTE_tbl(i));
11925
11926 END IF;
11927 IF l_h_value_from_tbl(i) <> 0 OR (l_h_value_from_tbl(i) = 0 AND--bug#6896139.If Condition to consider 0 value only for G_LINE_GROUP
11928 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
11929 IF l_h_modifier_level_code_tbl(i) = G_LINE_GROUP THEN
11930 IF l_h_attribute_tbl(i) = G_QUANTITY_ATTRIBUTE THEN
11931 l_quantity := p_group_quantity;
11932 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11933 engine_debug('l_quantity :'||l_quantity);
11934 END IF;
11935 l_selected_volume_attr := G_QUANTITY;
11936 ELSE
11937 l_quantity := p_group_amount;
11938 l_selected_volume_attr := G_AMOUNT;
11939 END IF;
11940
11941 IF (p_group_quantity <> l_quantity) THEN
11942
11943 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11944 engine_debug('UOM l_quantity : '||l_quantity);
11945 engine_debug('UOM p_group_quantity :'||p_group_quantity);
11946
11947 END IF;
11948 /*
11949 INDX,QP_PREQ_GRP.handle_break.upd1,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
11950 INDX,QP_PREQ_GRP.handle_break.upd1,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,2
11951 INDX,QP_PREQ_GRP.handle_break.upd1,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,3
11952 INDX,QP_PREQ_GRP.handle_break.upd1,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_HEADER_ID,4
11953 INDX,QP_PREQ_GRP.handle_break.upd1,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_LINE_ID,5
11954 */
11955
11956 UPDATE qp_npreq_ldets_tmp --upd1
11957 SET GROUP_QUANTITY = l_quantity, --2388011_new
11958 SELECTED_VOLUME_ATTR = l_selected_volume_attr -- 2388011_new, ASK RAVI, commented out??
11959 WHERE CREATED_FROM_LIST_HEADER_ID = p_list_header_id
11960 AND PRICING_PHASE_ID = p_pricing_phase_id
11961 AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
11962 AND CREATED_FROM_LIST_LINE_ID = p_list_line_id
11963 AND LINE_INDEX = p_line_index;
11964
11965 END IF;
11966
11967 ELSE --not a line group
11968
11969 IF l_h_ATTRIBUTE_tbl(i) = G_QUANTITY_ATTRIBUTE THEN
11970 IF l_h_product_uom_code_tbl(i) IS NULL THEN
11971 l_product_uom := l_h_line_uom_code_tbl(i);
11972 ELSE
11973 l_product_uom := l_h_product_uom_code_tbl(i);
11974 END IF;
11975 l_quantity := l_h_line_quantity_tbl(i);
11976 l_selected_volume_attr := G_QUANTITY;
11977
11978 -- begin, shu fix
11979 ELSIF l_h_ATTRIBUTE_tbl(i) = 'PRICING_ATTRIBUTE20' THEN -- shulin, for fte total_item_quantity uom conversion
11980 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11981 engine_debug ('TOTAL_ITEM_QUANTITY...');
11982 END IF;
11983 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
11984 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11985 engine_debug ('no uom conversion, pricing_uom_code is same as order_uom_code: '||l_h_line_uom_code_tbl(i));
11986 END IF;
11987 l_quantity := qp_number.canonical_to_number(l_h_value_from_tbl(i));
11988 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11989 engine_debug ('l_quantity: '||l_quantity);
11990 END IF;
11991 ELSE -- uom conversion
11992 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11993 engine_debug ('uom conversion...');
11994 engine_debug ('order_uom_code: '||l_h_order_uom_code_tbl(i));
11995 engine_debug ('primary_uom_code: '||l_h_product_uom_code_tbl(i));
11996 END IF;
11997 l_total_item_quantity := qp_number.canonical_to_number(l_h_value_from_tbl(i));
11998 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
11999 engine_debug ('l_quantity before uom convertion: '||l_total_item_quantity );
12000 END IF;
12001
12002 convert_uom ( l_h_order_uom_code_tbl(i),
12003 l_h_product_uom_code_tbl(i),
12004 l_total_item_quantity, --total_item_qty
12005 l_quantity, -- qty_after_uom_conversion
12006 l_status_code,
12007 l_status_text);
12008 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
12009 raise E_INVALID_UOM_CONVERSION;
12010 END IF;
12011
12012 -- shu, fix bug2368445
12013 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12014 engine_debug ('l_quantity before rounded by inv_decimal_precision: '||l_quantity);
12015 engine_debug ('inv_decimal_precision: '||l_max_decimal_digits);
12016 END IF;
12017 IF (l_quantity IS NOT NULL AND l_max_decimal_digits IS NOT NULL) THEN -- it will have sql err if null
12018 l_quantity := round (l_quantity, l_max_decimal_digits);
12019 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12020 engine_debug ('l_quantity after rounded by inv_decimal_precision: '||l_quantity);
12021 END IF;
12022 END IF;
12023 END IF;
12024 l_selected_volume_attr := 'O'; --2388011_latest
12025 -- end, shu fix
12026 ELSE
12027 l_quantity := qp_number.canonical_to_number(l_h_value_from_tbl(i));
12028 l_selected_volume_attr := G_AMOUNT;
12029 END IF;
12030
12031 -- This LINE_QUANTITY is column is needed for knowing the right value for
12032 -- PBH based on modifier level code 'LINE' for calculation purposes
12033
12034 /*
12035 INDX,QP_PREQ_GRP.handle_break.upd2,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
12036 INDX,QP_PREQ_GRP.handle_break.upd2,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,2
12037 INDX,QP_PREQ_GRP.handle_break.upd2,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,3
12038 INDX,QP_PREQ_GRP.handle_break.upd2,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_HEADER_ID,4
12039 INDX,QP_PREQ_GRP.handle_break.upd2,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_LINE_ID,5
12040 */
12041
12042 UPDATE qp_npreq_ldets_tmp --upd2
12043 SET LINE_QUANTITY = l_quantity, --2388011_new
12044 SELECTED_VOLUME_ATTR = l_selected_volume_attr -- 2388011_new
12045 WHERE CREATED_FROM_LIST_HEADER_ID = p_list_header_id
12046 AND PRICING_PHASE_ID = p_pricing_phase_id
12047 AND PRICING_STATUS_CODE = QP_PREQ_GRP.G_STATUS_NEW
12048 AND CREATED_FROM_LIST_LINE_ID = p_list_line_id
12049 AND LINE_INDEX = p_line_index;
12050
12051 END IF;
12052
12053
12054 l_setup_value_from := qp_number.canonical_to_number(l_h_pricing_attr_val_from_tbl(i));
12055
12056 --handle the case when value_to is null
12057 IF (l_h_pricing_attr_val_to_tbl(i) IS NULL) THEN
12058 IF l_quantity >= l_setup_value_from THEN
12059 l_value_to := l_quantity;
12060 ELSIF l_quantity < l_setup_value_from THEN
12061 l_value_to := l_setup_value_from;
12062 END IF;
12063 ELSE
12064 l_value_to := qp_number.canonical_to_number(l_h_pricing_attr_val_to_tbl(i));
12065 END IF;
12066
12067 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12068 engine_debug(l_routine||' Line quantity: '||l_quantity);
12069 engine_debug(l_routine||' value from: '||l_setup_value_from);
12070 engine_debug(l_routine||' value to : '||l_value_to);
12071 engine_debug(l_routine||' usage pricing type: '||l_h_usage_pricing_type_tbl(i));
12072
12073 END IF;
12074
12075 /* Proration Changes START */
12076 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12077 engine_debug(l_routine||' QP_CODE_CONTROL.CODE_RELEASE_LEVEL : '|| QP_CODE_CONTROL.CODE_RELEASE_LEVEL);
12078 engine_debug(l_routine||' profile QP_BREAK_UOM_PRORATION : '|| G_BREAK_UOM_PRORATION);
12079 engine_debug(l_routine||' G_REGULAR_USAGE_TYPE : '|| G_REGULAR_USAGE_TYPE);
12080 END IF;
12081
12082 -- feb 22 toi comment start
12083 -- proration makes sense for regular usage call and not for authoring call
12084 -- proration is not supported for the authoring call from Calling application
12085 -- feb 22 toi comment end
12086
12087 if QP_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510'
12088 and G_BREAK_UOM_PRORATION = 'Y'
12089 and l_h_usage_pricing_type_tbl(i) = G_REGULAR_USAGE_TYPE
12090 then
12091
12092 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12093 engine_debug(l_routine||' Proration allowed profile is set ');
12094 END IF;
12095
12096 -- feb 22 toi comment start
12097 -- Using l_first_time_flag ensures that the follwoing logic is executed once
12098 -- only since break related information is same across all the break lines
12099 -- feb 22 toi comment end
12100 -- get the proration set up data only once
12101
12102 if l_first_time_flag = 'Y' then
12103 select break_uom_code, break_uom_context, break_uom_attribute
12104 into l_break_uom_code, l_break_uom_context, l_break_uom_attribute
12105 from qp_npreq_ldets_tmp
12106 where line_detail_index = p_line_detail_index;
12107
12108 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12109 engine_debug(l_routine||' l_break_uom_code = ' || l_break_uom_code);
12110 engine_debug(l_routine||' l_break_uom_context = ' || l_break_uom_context);
12111 engine_debug(l_routine||' l_break_uom_attribute = ' || l_break_uom_attribute);
12112 END IF;
12113 end if; --l_first_time_flag = 'Y'
12114
12115 IF l_break_uom_code IS NOT null THEN
12116 -- feb 22 toi comment start
12117 -- if break uom was set up, then get the passed break uom
12118 -- if break_uom is not set up, then no proration and proceed with normal price break evaluation
12119 -- feb 22 toi comment end
12120 -- price book
12121 IF nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES THEN
12122 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12123 engine_debug('call from price book with proration ==> skip this break entirely');
12124 END IF;
12125 EXIT; -- exit big loop to stop processing remaining child lines
12126 END IF;
12127 begin
12128 if l_first_time_flag = 'Y' then
12129 -- get the passed break uom only once
12130 select value_from
12131 into l_passed_break_uom
12132 from qp_npreq_line_attrs_tmp
12133 where line_index = p_line_index
12134 and context = l_break_uom_context
12135 and attribute = l_break_uom_attribute
12136 and pricing_status_code = G_STATUS_UNCHANGED
12137 and attribute_type = G_PRICING_TYPE;
12138 end if; --l_first_time_flag = 'Y'
12139
12140 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12141 engine_debug(l_routine||' l_passed_break_uom = '|| l_passed_break_uom);
12142 END IF;
12143
12144 -- break uom has been passed, do the proration
12145 l_proration_processed := 'Y';
12146
12147 --if G_TIME_UOM_CONVERSION = 'ORACLE_CONTRACTS' then
12148 -- changed for R12 partial period pricing
12149 if (l_h_contract_start_date_tbl(i) is not null and
12150 l_h_contract_end_date_tbl(i) is not null)
12151 then
12152 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12153 engine_debug(l_routine||' OKS UOM conversion ');
12154 END IF;
12155
12156 -- get the conversion factor by calling oks api
12157 -- call the oks api only once
12158 if l_first_time_flag = 'Y' then
12159 select contract_start_date, contract_end_date
12160 into l_contract_start_date, l_contract_end_date
12161 from qp_npreq_lines_tmp
12162 where line_index = p_line_index;
12163
12164 -- OKS_QP_INT.get_conversion_factor was replaced by
12165 -- OKS_OMINT_PUB.get_quantity in R12 for partial period pricing
12166 l_proration_factor := OKS_OMINT_PUB.get_quantity(
12167 p_start_date => l_contract_start_date,
12168 p_end_date => l_contract_end_date,
12169 p_source_uom => l_break_uom_code,
12170 p_org_id => QP_PREQ_GRP.G_CURRENT_USER_OP_UNIT);
12171
12172 IF l_proration_factor = 0 THEN
12173 raise e_proration_fac_oks_error;
12174 END IF;
12175 end if;
12176
12177 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12178 engine_debug(l_routine||' l_proration_factor = '|| l_proration_factor);
12179 END IF;
12180
12181 if l_proration_factor is not null then
12182 /* ER 3637202
12183 bug fix 3715261 - after multiplying with proration factor, truncate the values
12184 For 1st break line prorate as below
12185 -----------------------------------
12186 trunc(From * Proration Factor) trunc(To * Proration Factor) ** changed behavior
12187
12188 For remaining break lines follow the below steps -
12189 --------------------------------------------------
12190 Gap = BreakLine (n) "From" - BreakLine (n-1) "To"
12191
12192 If Gap = 1
12193 Prorated BreakLine (n-1) To + 1 trunc(To * Proration Factor) ** changed behaviour
12194 Else
12195 trunc(BreakLine (n) From * Proration Factor) trunc(To * Proration Factor) ** changed behavior
12196 End If
12197
12198 -- feb 22 toi comment start
12199 Setup with fraction may cause issue as previous to value and current from value may become same and
12200 currently pricing engine does not support overlapping price break ranges.
12201 e.g Value from Value to
12202 2 5
12203 5.1 10
12204
12205 If this needs to be prorated by proration factor 2 the new price_break ranges will be
12206 Value from Value to
12207 1 2
12208 2 5
12209 Thus, first break's value_to becomes equal to the second break's value_from.
12210 This needs to be added to the Implementation Manual.
12211 -- feb 22 toi comment end
12212
12213 ER 4061138 (Continuous Price Breaks)
12214 For prorated break lines that are CONTINUOUS, the unrounded Value From is copied into
12215 the previous break's Value To. This deals with the problem inherent to mixed price
12216 breaks with proration.
12217 e.g. Value From Value To
12218 1 100 <-- non-continuous break
12219 100 200 <-- continuous
12220
12221 Apply a proration factor of 1/3
12222 New From New To
12223 0 33 <-- 33 is trunc(33 1/3), old proration rule
12224 33 1/3 66 2/3 <-- continuous = no trunc
12225
12226 Problem here is that the proration has introduced a gap between the first and
12227 second break lines, and result can be that total satisfied qty <> ordered qty.
12228 To fix this, we "borrow" the Value From to eliminate the unwanted gap.
12229 New From Newer To
12230 0 33 1/3 <-- magic!
12231 33 1/3 66 2/3
12232
12233 Refer to the enhancement document on Continuous Price Breaks for more details.
12234 */
12235 if l_first_time_flag = 'Y' then --means first price break
12236 l_setup_value_from := trunc(l_setup_value_from * l_proration_factor);
12237 l_prev_setup_to_value := l_value_to; -- store the un-prorated to value to determine setup gap
12238 l_value_to := trunc(l_value_to * l_proration_factor);
12239 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
12240 else -- second break onwards
12241 l_gap := l_setup_value_from - l_prev_setup_to_value;
12242 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12243 engine_debug(l_routine||' l_gap = '|| l_gap);
12244 END IF;
12245 if l_gap = 0 then
12246 -- 4061138, only for continuous breaks
12247 l_continuous_flag := TRUE;
12248 l_setup_value_from := l_setup_value_from * l_proration_factor;
12249 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12250 engine_debug(l_routine||' * continuous price break');
12251 END IF;
12252 elsif l_gap = 1 then
12253 -- non-continuous breaks with gap 1
12254 -- 4687551, gap becomes precision of previous prorated to value
12255 l_gap := abs(l_prev_prorated_to_value);
12256 l_gap := power(10, -(length(to_char(l_gap-trunc(l_gap))) - 1));
12257 l_setup_value_from := l_prev_prorated_to_value + l_gap;
12258 else
12259 l_setup_value_from := trunc(l_setup_value_from * l_proration_factor);
12260 end if; -- if l_gap = 0
12261 l_prev_setup_to_value := l_value_to;
12262 l_value_to := l_value_to * l_proration_factor;
12263 IF l_continuous_flag <> TRUE THEN
12264 l_value_to := trunc(l_value_to);
12265 END IF;
12266 l_prev_prorated_to_value := l_value_to;
12267 end if; -- if l_first_time_flag
12268 end if; -- if l_proration_factor is not null
12269 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12270 engine_debug(l_routine||' l_setup_value_from = '|| l_setup_value_from);
12271 engine_debug(l_routine||' l_value_to = '|| l_value_to);
12272 END IF;
12273
12274 else
12275 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12276 engine_debug(l_routine||' Standard UOM conversion ');
12277 END IF;
12278
12279 -- OKS profile is not set, do standard uom conversion
12280 if l_first_time_flag = 'Y' then --means first price break
12281 convert_uom(l_passed_break_uom,
12282 l_break_uom_code,
12283 l_setup_value_from, -- before conversion
12284 l_value_temp, -- after conversion
12285 l_status_code,
12286 l_status_text);
12287 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
12288 raise E_INVALID_UOM_CONVERSION;
12289 END IF;
12290
12291 -- 4061138 continuous break
12292 -- remain non-continuous when value_from = 0, for OKS proration requirement
12293 IF l_setup_value_from = 0 THEN
12294 l_continuous_flag := FALSE;
12295 END IF;
12296
12297 l_setup_value_from := trunc(l_value_temp);
12298
12299 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12300 engine_debug(l_routine||' l_setup_value_from = '|| l_setup_value_from);
12301 END IF;
12302
12303 l_prev_setup_to_value := l_value_to; -- store the un-prorated to value to determine setup gap
12304
12305 convert_uom(l_passed_break_uom,
12306 l_break_uom_code,
12307 l_value_to, -- before conversion
12308 l_value_temp, -- after conversion
12309 l_status_code,
12310 l_status_text);
12311 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
12312 raise E_INVALID_UOM_CONVERSION;
12313 END IF;
12314
12315 -- 4061138, rewritten for continuous break logic
12316 IF l_continuous_flag = TRUE THEN
12317 -- first continuous break: do not trunc Value To
12318 -- also, unset l_continuous flag even though this is continuous, because
12319 -- later on when updating ldets, we don't want the flag to trigger an update
12320 -- of the non-existent previous break's Value To
12321 l_value_to := l_value_temp;
12322 l_continuous_flag := FALSE;
12323 ELSE
12324 l_value_to := trunc(l_value_temp);
12325 END IF;
12326
12327 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
12328 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12329 engine_debug(l_routine||' l_value_to = '|| l_value_to);
12330 END IF;
12331 else -- second breaks onwards
12332 l_gap := l_setup_value_from - l_prev_setup_to_value;
12333 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12334 engine_debug(l_routine||' l_gap = '|| l_gap);
12335 END IF;
12336
12337 if l_gap = 1 then
12338 -- 4687551, gap becomes precision of previous prorated to value
12339 l_gap := abs(l_prev_prorated_to_value);
12340 l_gap := power(10, -(length(to_char(l_gap-trunc(l_gap))) - 1));
12341 l_setup_value_from := l_prev_prorated_to_value + l_gap;
12342 else
12343 convert_uom(l_passed_break_uom,
12344 l_break_uom_code,
12345 l_setup_value_from, -- before conversion
12346 l_value_temp, -- after conversion
12347 l_status_code,
12348 l_status_text);
12349 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
12350 raise E_INVALID_UOM_CONVERSION;
12351 END IF;
12352
12353 -- 4061138 continuous breaks
12354 IF l_gap = 0 THEN
12355 l_continuous_flag := TRUE;
12356 l_setup_value_from := l_value_temp;
12357 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12358 engine_debug(l_routine||' * continuous price break');
12359 END IF;
12360 ELSE
12361 l_setup_value_from := trunc(l_value_temp);
12362 END IF;
12363
12364 end if; -- if l_gap = 1
12365
12366 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12367 engine_debug(l_routine||' l_setup_value_from = '|| l_setup_value_from);
12368 END IF;
12369
12370 l_prev_setup_to_value := l_value_to;
12371
12372 convert_uom(l_passed_break_uom,
12373 l_break_uom_code,
12374 l_value_to, -- before conversion
12375 l_value_temp, -- after conversion
12376 l_status_code,
12377 l_status_text);
12378 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
12379 raise E_INVALID_UOM_CONVERSION;
12380 END IF;
12381
12382 l_value_to := l_value_temp;
12383 IF l_continuous_flag <> TRUE THEN -- 4061138
12384 l_value_to := trunc(l_value_to);
12385 END IF;
12386
12387 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
12388 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12389 engine_debug(l_routine||' l_value_to = '|| l_value_to);
12390 END IF;
12391 end if; -- if l_first_time_flag
12392
12393 end if; -- OKS profile
12394
12395 exception
12396 when no_data_found then
12397 -- if proration attribute is not passed, then no proration
12398 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12399 engine_debug(l_routine||' no proration attribute passed ');
12400 END IF;
12401 null;
12402
12403 when others then
12404 -- if proration attribute is not passed, then no proration
12405 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12406 engine_debug(l_routine||' others exception, trying to find whether proration attr passed');
12407 END IF;
12408 null;
12409 end;
12410
12411 end if; --l_break_uom_code is not null
12412 end if;
12413 /* Proration Changes END */
12414
12415 --pricing engine shd insert child lines for auth call even if no qty passed
12416 --if atleast one range is satisfied for RANGE break then only insert the chld lines
12417 -- for RANGE break bug# 2723612
12418 -- note for 4061138 continuous breaks: at this point, l_value_to has not
12419 -- been remapped with the next break's l_setup_value_from, so the between
12420 -- check may erroneously fail. Further down the code during remapping
12421 -- the check if performed again.
12422 IF ((l_quantity BETWEEN l_setup_value_from AND l_value_to) OR -- for POINT
12423 (l_h_price_break_type_code_tbl(i) = G_RANGE_BREAK AND l_quantity >= l_setup_value_from) OR -- for RANGE
12424 (l_h_usage_pricing_type_tbl(i) = G_AUTHORING_TYPE) OR -- for AUTHORING call
12425 (nvl(l_net_amount_flag, 'N') <> 'N')) --[julin/4671446] all net amount breaks pass here, to be qualified during calculation
12426 THEN
12427 l_VALID_PBH_FLAG := G_YES;
12428 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12429 engine_debug('In price break detail');
12430 END IF;
12431 END IF;
12432
12433 -- Invariably insert the line details as we need all the line details even for POINT BREAK
12434 --IF (l_VALID_PBH_FLAG = G_YES) THEN
12435 -- julin [3805113]: table of records replaced by record of tables for bulk operations
12436 /*
12437 l_line_detail_tbl(N).list_header_id := l_h_list_header_id_tbl(i);
12438 l_line_detail_tbl(N).list_line_id := l_h_list_line_id_tbl(i);
12439 l_line_detail_tbl(N).list_line_type_code := l_h_list_line_type_code_tbl(i);
12440 l_line_detail_tbl(N).operand_calculation_code := l_h_arithmetic_operator_tbl(i);
12441 l_line_detail_tbl(N).operand_value := l_h_operand_tbl(i);
12442 l_line_detail_tbl(N).list_price := l_h_list_price_tbl(i);
12443 l_line_detail_tbl(N).pricing_group_sequence := l_h_pricing_group_sequence_tbl(i);
12444 l_line_detail_tbl(N).price_break_type_code := l_h_price_break_type_code_tbl(i);
12445 l_line_detail_tbl(N).pricing_phase_id := l_h_pricing_phase_id_tbl(i);
12446 l_line_detail_tbl(N).modifier_level_code := l_h_modifier_level_code_tbl(i);
12447 l_line_detail_tbl(N).benefit_qty := l_h_benefit_qty_tbl(i);
12448 l_line_detail_tbl(N).benefit_uom_code := l_h_benefit_uom_code_tbl(i);
12449 l_line_detail_tbl(N).list_line_no := l_h_list_line_no_tbl(i);
12450 l_line_detail_tbl(N).accrual_flag := l_h_accrual_flag_tbl(i);
12451 l_line_detail_tbl(N).accrual_conversion_rate:= l_h_accrual_conv_rate_tbl(i);
12452 l_line_detail_tbl(N).estim_accrual_rate := l_h_estim_accrual_rate_tbl(i);
12453 l_line_detail_tbl(N).recurring_value := l_h_recurring_value_tbl(i); -- block pricing
12454 l_line_attrs_tbl(N).pricing_context := l_h_pricing_attr_context_tbl(i);
12455 l_line_attrs_tbl(N).pricing_attribute := l_h_pricing_attribute_tbl(i);
12456
12457 l_line_detail_tbl(N).automatic_flag := l_h_automatic_flag_tbl(i);
12458 l_line_detail_tbl(N).override_flag := l_h_override_flag_tbl(i);
12459 l_line_detail_tbl(N).print_on_invoice_flag := l_h_print_on_invoice_flag_tbl(i);
12460 l_line_detail_tbl(N).formula_id := l_h_price_by_formula_id_tbl(i);
12461 l_line_detail_tbl(N).rounding_factor := l_h_rounding_factor_tbl(i); /* Vivek /
12462 l_line_detail_tbl(N).currency_detail_id := l_h_currency_detail_id_tbl(i); /* Vivek /
12463 l_line_detail_tbl(N).currency_header_id := l_h_currency_header_id_tbl(i); /* Vivek /
12464 l_line_detail_tbl(N).selling_rounding_factor := l_h_selling_round_factor_tbl(i); /* Vivek /
12465 l_line_detail_tbl(N).order_currency := l_h_order_currency_tbl(i); /* Vivek /
12466 l_line_detail_tbl(N).pricing_effective_date := l_h_pricing_effective_date_tbl(i); /* Vivek /
12467 l_line_detail_tbl(N).base_currency_code := l_h_base_currency_code_tbl(i); /* Vivek /
12468 */
12469 /* Proration START */
12470 if l_proration_processed = 'Y' then
12471 l_h_pricing_attr_val_from_tbl(i) := qp_number.number_to_canonical(l_setup_value_from);
12472 l_h_pricing_attr_val_to_tbl(i) := qp_number.number_to_canonical(l_value_to);
12473 if l_continuous_flag = TRUE then
12474 -- 4061138
12475 l_h_pricing_attr_val_to_tbl(i-1) := l_h_pricing_attr_val_from_tbl(i);
12476 -- here, we do the aforementioned BETWEEN check again to catch the
12477 -- corner case where it failed because l_value_to was not remapped
12478 IF l_VALID_PBH_FLAG = G_NO and i>1 THEN
12479 -- only need to recheck the POINT break condition
12480 IF (l_quantity BETWEEN l_h_pricing_attr_val_from_tbl(i-1)
12481 AND l_h_pricing_attr_val_to_tbl(i-1))
12482 THEN
12483 l_VALID_PBH_FLAG := G_YES;
12484 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12485 engine_debug(l_routine||' * passed between check after continuous break remapping');
12486 END IF;
12487 END IF;
12488 END IF;
12489 end if;
12490 else
12491 l_h_pricing_attr_val_to_tbl(i) := nvl(l_h_pricing_attr_val_to_tbl(i),l_value_to);
12492 end if;
12493 --l_line_attrs_tbl(N).pricing_attr_value_from := l_h_pricing_attr_val_from_tbl(i);
12494 --l_line_attrs_tbl(N).pricing_attr_value_to := nvl(l_h_pricing_attr_val_to_tbl(i),l_value_to);
12495 /* Proration END */
12496
12497 N:=N+1;
12498 --END IF;
12499 l_first_time_flag := 'N';
12500
12501 l_l_line_detail_index_tbl(i) := GET_LINE_DETAIL_INDEX;
12502
12503 --VALIDATE price_break_type_code
12504 IF (l_h_price_break_type_code_tbl(i) IS NULL) OR
12505 (l_h_price_break_type_code_tbl(i) NOT IN(G_RANGE_BREAK,G_POINT_BREAK))
12506 THEN
12507 --Data error, ignore this goto the end of loop
12508 RAISE E_INVALID_PRICE_BREAK_TYPE;
12509 END IF;
12510
12511 l_l_selected_volume_attr_tbl(i) := l_selected_volume_attr;
12512 l_l_G_CHILD_DETAIL_TYPE_tbl(i) := G_CHILD_DETAIL_TYPE;
12513 l_l_p_line_index_tbl(i) := p_line_index;
12514 l_l_G_STATUS_NEW_tbl(i) := G_STATUS_NEW;
12515 l_l_G_NOT_PROCESSED_tbl(i) := G_NOT_PROCESSED;
12516 l_l_group_quantity_tbl(i) := p_group_quantity;
12517 l_l_group_amount_tbl(i) := p_group_amount;
12518 l_l_list_type_code_tbl(i) := p_list_type_code;
12519 l_l_G_DETAIL_LEVEL_tbl(i) := G_DETAIL_LEVEL;
12520 l_l_G_PRICING_TYPE_tbl(i) := G_PRICING_TYPE;
12521 l_l_G_BY_PBH_tbl(i) := G_BY_PBH;
12522 l_l_G_OPERATOR_BETWEEN_tbl(i) := G_OPERATOR_BETWEEN;
12523 l_l_p_list_line_id_tbl(i) := p_list_line_id;
12524 l_l_G_PBH_LINE_tbl(i) := G_PBH_LINE;
12525 l_l_G_PROCESSED_tbl(i) := G_PROCESSED;
12526 l_l_quantity_tbl(i) := l_quantity;
12527 l_l_p_line_detail_index_tbl(i) := p_line_detail_index;
12528
12529 -- julin [3805113]: storing to be used in call_calculation_engine()
12530 G_CHILD_VALUE_FROM_TBL(l_l_line_detail_index_tbl(i)) := l_h_pricing_attr_val_from_tbl(i);
12531 G_CHILD_VALUE_TO_TBL(l_l_line_detail_index_tbl(i)) := l_h_pricing_attr_val_to_tbl(i);
12532 G_PARENT_LINE_DETAIL_INDEX_TBL(l_l_line_detail_index_tbl(i)) := l_l_p_line_detail_index_tbl(i);
12533 -- 4061138
12534 if l_continuous_flag = TRUE then
12535 G_CHILD_VALUE_TO_TBL(l_l_line_detail_index_tbl(i-1)) := l_h_pricing_attr_val_from_tbl(i);
12536 end if;
12537
12538 l_continuous_flag := FALSE; -- reset every break
12539 END IF;--bug#6896139
12540 END LOOP;
12541 END IF; -- l_h_list_line_id_tbl.COUNT > 0
12542
12543 --after checking each break line, if any one of the break lines satified, insert all
12544 --the break lines to qp_npreq_ldets_tmp table and qp_npreq_rltd_lines_tmp table
12545 --and do not delete the parent line
12546 -- This flag tells that either it was a range break or atleast one of the break lines was satisfied in case of point break
12547 IF (l_VALID_PBH_FLAG = G_YES) THEN
12548 --FOR J IN 1..N-1 LOOP
12549
12550
12551 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12552 engine_debug('Inserting line_detail');
12553 END IF;
12554
12555 -- julin [3805113]: bulk insert into qp_npreq_ldets_tmp
12556 IF (l_l_p_line_index_tbl.COUNT > 0) THEN
12557 FORALL i in l_l_p_line_index_tbl.FIRST..l_l_p_line_index_tbl.LAST
12558 INSERT INTO qp_npreq_ldets_tmp
12559 (LINE_DETAIL_INDEX,
12560 LINE_DETAIL_TYPE_CODE,
12561 PRICE_BREAK_TYPE_CODE,
12562 LINE_INDEX,
12563 CREATED_FROM_LIST_HEADER_ID,
12564 CREATED_FROM_LIST_LINE_ID,
12565 CREATED_FROM_LIST_LINE_TYPE,
12566 CREATED_FROM_LIST_TYPE_CODE,
12567 PRICING_GROUP_SEQUENCE,
12568 PRICING_PHASE_ID,
12569 OPERAND_CALCULATION_CODE,
12570 OPERAND_VALUE,
12571 PRICE_FORMULA_ID,
12572 PRICING_STATUS_CODE,
12573 PROCESSED_FLAG,
12574 AUTOMATIC_FLAG,
12575 OVERRIDE_FLAG,
12576 PRINT_ON_INVOICE_FLAG,
12577 MODIFIER_LEVEL_CODE,
12578 BENEFIT_QTY,
12579 BENEFIT_UOM_CODE,
12580 LIST_LINE_NO,
12581 ACCRUAL_FLAG,
12582 ACCRUAL_CONVERSION_RATE,
12583 ESTIM_ACCRUAL_RATE,
12584 RECURRING_VALUE,
12585 SELECTED_VOLUME_ATTR,
12586 GROUP_QUANTITY,
12587 GROUP_AMOUNT,
12588 ROUNDING_FACTOR,
12589 CURRENCY_DETAIL_ID,
12590 CURRENCY_HEADER_ID,
12591 SELLING_ROUNDING_FACTOR,
12592 ORDER_CURRENCY,
12593 PRICING_EFFECTIVE_DATE,
12594 BASE_CURRENCY_CODE
12595 )
12596 VALUES (l_l_line_detail_index_tbl(i),
12597 l_l_G_CHILD_DETAIL_TYPE_tbl(i),
12598 l_h_price_break_type_code_tbl(i),
12599 l_l_p_line_index_tbl(i),
12600 l_h_list_header_id_tbl(i),
12601 l_h_list_line_id_tbl(i),
12602 l_h_list_line_type_code_tbl(i),
12603 l_l_list_type_code_tbl(i),
12604 l_h_pricing_group_sequence_tbl(i),
12605 l_h_pricing_phase_id_tbl(i),
12606 l_h_arithmetic_operator_tbl(i),
12607 l_h_operand_tbl(i),
12608 l_h_price_by_formula_id_tbl(i),
12609 l_l_G_STATUS_NEW_tbl(i),
12610 l_l_G_NOT_PROCESSED_tbl(i),
12611 l_h_automatic_flag_tbl(i),
12612 l_h_override_flag_tbl(i),
12613 l_h_print_on_invoice_flag_tbl(i),
12614 l_h_modifier_level_code_tbl(i),
12615 l_h_BENEFIT_QTY_tbl(i),
12616 l_h_BENEFIT_UOM_CODE_tbl(i),
12617 l_h_LIST_LINE_NO_tbl(i),
12618 l_h_ACCRUAL_FLAG_tbl(i),
12619 l_h_accrual_conv_rate_tbl(i),
12620 l_h_ESTIM_ACCRUAL_RATE_tbl(i),
12621 l_h_RECURRING_VALUE_tbl(i), -- block pricing
12622 l_l_selected_volume_attr_tbl(i),
12623 l_l_group_quantity_tbl(i),
12624 l_l_group_amount_tbl(i),
12625 l_h_ROUNDING_FACTOR_tbl(i),
12626 l_h_CURRENCY_DETAIL_ID_tbl(i),
12627 l_h_CURRENCY_HEADER_ID_tbl(i),
12628 l_h_selling_round_factor_tbl(i),
12629 l_h_ORDER_CURRENCY_tbl(i),
12630 l_h_PRICING_EFFECTIVE_DATE_tbl(i),
12631 l_h_BASE_CURRENCY_CODE_tbl(i)
12632 );
12633 END IF;
12634
12635 --set the parents PBH type. PBH can be either discount break or price list break
12636 --also set the processed_flag to indicate that this parent have been processed.
12637
12638 /*
12639 INDX,QP_PREQ_GRP.handle_break.upd3,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
12640 */
12641 UPDATE qp_npreq_ldets_tmp --upd3
12642 SET processed_flag = G_PROCESSED -- indicates that this PBH is processed
12643 WHERE line_detail_index = p_line_detail_index;
12644
12645 IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
12646 engine_debug('#L1');
12647 END IF;
12648
12649 -- julin [3805113]: bulk insert into qp_npreq_line_attrs_tmp
12650 IF (l_l_p_line_index_tbl.COUNT > 0) THEN
12651 FORALL J IN l_l_p_line_index_tbl.first..l_l_p_line_index_tbl.last
12652 INSERT INTO qp_npreq_line_attrs_tmp
12653 (LINE_INDEX,
12654 LINE_DETAIL_INDEX,
12655 ATTRIBUTE_LEVEL,
12656 ATTRIBUTE_TYPE,
12657 CONTEXT,
12658 ATTRIBUTE,
12659 VALUE_FROM,
12660 VALUE_TO,
12661 SETUP_VALUE_FROM,
12662 SETUP_VALUE_TO,
12663 PROCESSED_CODE,
12664 COMPARISON_OPERATOR_TYPE_CODE,
12665 PRICING_STATUS_CODE
12666 )
12667 VALUES (l_l_p_line_index_tbl(J),
12668 l_l_line_detail_index_tbl(J),
12669 l_l_G_DETAIL_LEVEL_tbl(J),
12670 l_l_G_PRICING_TYPE_tbl(J),
12671 l_h_pricing_attr_context_tbl(J),
12672 l_h_pricing_attribute_tbl(J),
12673 l_h_pricing_attr_val_from_tbl(J),
12674 l_h_pricing_attr_val_to_tbl(J),
12675 l_h_pricing_attr_val_from_tbl(J),
12676 l_h_pricing_attr_val_to_tbl(J),
12677 l_l_G_BY_PBH_tbl(J),
12678 l_l_G_OPERATOR_BETWEEN_tbl(J),
12679 l_l_G_STATUS_NEW_tbl(J)
12680 );
12681 END IF;
12682
12683 IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
12684 engine_debug('#L2');
12685 END IF;
12686
12687 -- julin [3805113]: bulk insert into qp_npreq_rltd_lines_tmp
12688 IF (l_l_p_line_index_tbl.COUNT > 0) THEN
12689 FORALL J IN l_l_p_line_index_tbl.first..l_l_p_line_index_tbl.last
12690 INSERT INTO qp_npreq_rltd_lines_tmp
12691 (LINE_INDEX,
12692 LINE_DETAIL_INDEX,
12693 RELATIONSHIP_TYPE_CODE,
12694 RELATED_LINE_INDEX,
12695 RELATED_LINE_DETAIL_INDEX,
12696 PRICING_STATUS_CODE,
12697 PRICING_STATUS_TEXT,
12698 LIST_LINE_ID,
12699 RELATED_LIST_LINE_ID,
12700 RELATED_LIST_LINE_TYPE,
12701 OPERAND_CALCULATION_CODE,
12702 OPERAND,
12703 PRICING_GROUP_SEQUENCE,
12704 RELATIONSHIP_TYPE_DETAIL,
12705 SETUP_VALUE_FROM,
12706 SETUP_VALUE_TO,
12707 QUALIFIER_VALUE
12708 )
12709 VALUES (l_l_p_line_index_tbl(J),
12710 l_l_p_line_detail_index_tbl(J),
12711 l_l_G_PBH_LINE_tbl(J),
12712 l_l_p_line_index_tbl(J),
12713 l_l_line_detail_index_tbl(J),
12714 l_l_G_STATUS_NEW_tbl(J),
12715 l_l_G_PROCESSED_tbl(J),
12716 l_l_p_list_line_id_tbl(J),
12717 l_h_list_line_id_tbl(J),
12718 l_h_list_line_type_code_tbl(J),
12719 l_h_arithmetic_operator_tbl(J),
12720 l_h_operand_tbl(J),
12721 l_h_pricing_group_sequence_tbl(J),
12722 l_h_price_break_type_code_tbl(J),
12723 qp_number.canonical_to_number(l_h_pricing_attr_val_from_tbl(J)),
12724 qp_number.canonical_to_number(l_h_pricing_attr_val_to_tbl(J)),
12725 l_l_quantity_tbl(J));
12726 END IF;
12727
12728 IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
12729 engine_debug('#L3');
12730 END IF;
12731 --END LOOP; --END J LOOP
12732
12733 IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
12734 engine_debug('#L4');
12735 END IF;
12736 ELSE
12737 --None of the child price break statifies, hence parent is disqualified
12738 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12739 engine_debug(l_routine||' CHILD LINES ARE NOT SATISFIED');
12740
12741 END IF;
12742 x_is_break_satisfy := FALSE;
12743
12744 END IF;
12745
12746 IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
12747 engine_debug('#L5');
12748 END IF;
12749
12750 l_VALID_PBH_FLAG := 'N';
12751 l_total_item_quantity := NULL; -- shu, reset
12752 l_quantity := NULL; --shu, reset
12753
12754 EXCEPTION
12755 WHEN E_INVALID_PRICE_BREAK_TYPE THEN
12756 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12757 engine_debug('PRICE BREAK TYPE CODE IS NULL OR INVALID');
12758 END IF;
12759 SET_STATUS_CODE(G_STATUS_OTHER_ERRORS,
12760 '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),
12761 P_LINE_INDEX,
12762 NULL,
12763 'LINES',
12764 l_status_code,
12765 l_status_text);
12766 WHEN E_INVALID_UOM_CONVERSION THEN-- shulin
12767 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12768 engine_debug('INVALID UOM CONVERSION FOR TOTAL_ITEM_QUANTITY');
12769 END IF;
12770 SET_STATUS_CODE(G_STATUS_OTHER_ERRORS,
12771 'INVALID UOM CONVERSION FOR TOTAL_ITEM_QUANTITY : '||l_status_text,
12772 P_LINE_INDEX,
12773 NULL,
12774 'LINES',
12775 l_status_code,
12776 l_status_text);
12777 -- Proration Start
12778 WHEN e_proration_fac_oks_error then
12779 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12780 engine_debug('Error while calling oks api to get proration factor');
12781 END IF;
12782 SET_STATUS_CODE(G_STATUS_OTHER_ERRORS,
12783 'Error while calling oks api to get proration factor',
12784 P_LINE_INDEX,
12785 NULL,
12786 'LINES',
12787 l_status_code,
12788 l_status_text);
12789
12790 -- Proration End
12791
12792 WHEN OTHERS THEN
12793 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12794 engine_debug('#Exception L6');
12795 engine_debug(l_routine || ' ' || SQLERRM);
12796 END IF;
12797 x_status_code := FND_API.G_RET_STS_ERROR;
12798 x_status_text := l_routine||': '||SQLERRM;
12799
12800 END Handle_Break; --end procedure
12801
12802 /*+------------------------------------------------------------
12803 |delete children pbh lines if the parent fails
12804 +-----------------------------------------------------------
12805 */
12806
12807 PROCEDURE Delete_Invalid_PBH_Children(p_line_index IN PLS_INTEGER,
12808 p_pricing_phase_id NUMBER,
12809 x_status_code OUT NOCOPY VARCHAR2,
12810 x_status_text OUT NOCOPY VARCHAR2) AS
12811 /*
12812 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
12813 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,PRICING_PHASE_ID,2
12814 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,ASK_FOR_FLAG,3
12815 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,CREATED_FROM_LIST_LINE_TYPE,4
12816 */
12817 CURSOR l_check_deleted_pbh_cur(p_line_index IN PLS_INTEGER) IS
12818 SELECT line_detail_index
12819 FROM qp_npreq_ldets_tmp
12820 WHERE created_from_list_line_type = G_PRICE_BREAK_TYPE
12821 AND line_index = p_line_index
12822 AND pricing_phase_id = p_pricing_phase_id
12823 AND pricing_status_code <> G_STATUS_NEW
12824 AND nvl(updated_flag,'N') = 'N'; -- to not delete passed adj by the calling app since updated_flag='Y'
12825
12826 l_routine VARCHAR2(240):='QP_PREQ_GRP.Delete_invalid_PBH_Children';
12827 BEGIN
12828 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12829 engine_debug('in Delete_Invalid_PBH_Children');
12830 END IF;
12831 FOR I IN l_check_deleted_pbh_cur(p_line_index) LOOP
12832 /*
12833 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.delete_invalid_pbh_children_upd1,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
12834 */
12835 /*
12836 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.delete_invalid_pbh_children_sel1,-No Index Used-,NA,NA
12837 */
12838 UPDATE qp_npreq_ldets_tmp a
12839 SET PRICING_STATUS_CODE = G_DELETED_PARENT_FAILS
12840 WHERE line_detail_index IN
12841 (SELECT related_line_detail_index
12842 FROM qp_npreq_rltd_lines_tmp
12843 WHERE line_detail_index = I.line_detail_index);
12844 /*
12845 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.upd2,-No Index Used-,NA,NA
12846 */
12847 UPDATE qp_npreq_rltd_lines_tmp --upd2
12848 SET PRICING_STATUS_CODE = G_DELETED_PARENT_FAILS
12849 WHERE line_detail_index = I.line_detail_index;
12850
12851 END LOOP;
12852
12853 EXCEPTION
12854 WHEN OTHERS THEN
12855 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12856 engine_debug(l_routine||' '||SQLERRM);
12857 END IF;
12858 x_status_code := FND_API.G_RET_STS_ERROR;
12859 x_status_text := l_routine||': '||SQLERRM;
12860 END Delete_Invalid_PBH_Children;
12861
12862 /*+------------------------------------------------------------
12863 |GET_ELIGIBLE_PRICE_BREAK
12864 +--------------------------------------------------------------
12865 */
12866
12867 PROCEDURE GET_ELIGIBLE_PRICE_BREAK(p_pricing_phase_id NUMBER,
12868 p_line_index NUMBER := NULL,
12869 x_status_code OUT NOCOPY VARCHAR2,
12870 x_status_text OUT NOCOPY VARCHAR2)
12871 AS
12872 --Index Certificate
12873 /*
12874 Can use N2 instead of N4
12875 INDX,QP_PREQ_GRP.get_eligible_price_break.l_price_break_parent_cur,qp_npreq_ldets_tmp_N2,PRICING_PHASE_ID,1
12876 INDX,QP_PREQ_GRP.get_eligible_price_break.l_price_break_parent_cur,qp_npreq_ldets_tmp_N2,PRICING_STATUS_CODE,2
12877 INDX,QP_PREQ_GRP.get_eligible_price_break.l_price_break_parent_cur,qp_npreq_ldets_tmp_N2,LINE_INDEX,3
12878 INDX,QP_PREQ_GRP.get_eligible_price_break.l_price_break_parent_cur,qp_npreq_ldets_tmp_N2,CREATED_FROM_LIST_LINE_TYPE,4
12879 */
12880 -- Do price break processing only for unprocessed lines(line_index) in a phase bug 2386934
12881 -- without the not exists clause price break processing was hapenning 2 times if there is an
12882 -- order line where in price list is not passed and there is an order line where price list was passed and
12883 -- price break processing was done for the passed price list line. Price break processing is hapenning again
12884 -- when big search is done for the line where price list not passed.
12885 -- process only the price break lines that are not processed -- Bug #2717117
12886 CURSOR l_price_break_parent_cur IS
12887 SELECT created_from_list_header_id list_header_id , created_from_list_line_id list_line_id,
12888 group_quantity ,group_amount, line_detail_index, line_index, line_quantity -- 2388011, pbh_grp_lines
12889 , created_from_list_type_code
12890 FROM qp_npreq_ldets_tmp a
12891 WHERE created_from_list_line_type = G_PRICE_BREAK_TYPE
12892 AND pricing_status_code = G_STATUS_NEW
12893 AND pricing_phase_id = p_pricing_phase_id
12894 AND nvl(processed_flag,G_NOT_PROCESSED) = G_NOT_PROCESSED;
12895 --AND line_index > 0
12896 --AND not exists (select 'X'
12897 -- from qp_npreq_rltd_lines_tmp b
12898 -- where a.line_index = b.line_index
12899 -- and a.created_from_list_line_id = b.list_line_id
12900 -- and b.relationship_type_code = G_PBH_LINE
12901 -- and nvl(b.pricing_status_text,G_NOT_PROCESSED) <> G_PROCESSED);
12902
12903 --AND line_index = nvl(p_line_index,line_index);
12904
12905 l_routine VARCHAR2(240):='Routine: QP_PREQ_GRP.GET_ELIGIBLE_PRICE_BREAK';
12906 l_is_break_satisfy Boolean:=TRUE;
12907 G_LIST_HEADER_ID_TBL_G NUMBER_TYPE;
12908 G_LIST_LINE_ID_TBL_G NUMBER_TYPE;
12909 G_GROUP_QUANTITY_TBL_G NUMBER_TYPE;
12910 G_GROUP_AMOUNT_TBL_G NUMBER_TYPE;
12911 G_LINE_DETAIL_INDEX_TBL_G NUMBER_TYPE;
12912 G_LINE_INDEX_TBL_G NUMBER_TYPE;
12913 G_LINE_QUANTITY_TBL_G NUMBER_TYPE;
12914 G_LIST_TYPE_CODE_TBL_G VARCHAR_TYPE;
12915 g_failed_ld_tbl_g NUMBER_TYPE;
12916 v_count PLS_INTEGER := 1;
12917 l_status_code VARCHAR2(30);
12918 l_status_text VARCHAR2(240);
12919
12920 nROWS CONSTANT NUMBER := 1000;
12921 E_ROUTINE_ERRORS EXCEPTION;
12922
12923 BEGIN
12924
12925 OPEN l_price_break_parent_cur;
12926
12927 LOOP
12928
12929 G_LIST_HEADER_ID_TBL_G.delete;
12930 G_LIST_LINE_ID_TBL_G.delete;
12931 G_GROUP_QUANTITY_TBL_G.delete;
12932 G_GROUP_AMOUNT_TBL_G.delete;
12933 G_LINE_DETAIL_INDEX_TBL_G.delete;
12934 G_LINE_INDEX_TBL_G.delete;
12935 G_LINE_QUANTITY_TBL_G.delete;
12936 G_LIST_TYPE_CODE_TBL_G.delete;
12937
12938 FETCH l_price_break_parent_cur BULK COLLECT INTO
12939 G_LIST_HEADER_ID_TBL_G
12940 , G_LIST_LINE_ID_TBL_G
12941 , G_GROUP_QUANTITY_TBL_G
12942 , G_GROUP_AMOUNT_TBL_G
12943 , G_LINE_DETAIL_INDEX_TBL_G
12944 , G_LINE_INDEX_TBL_G
12945 , G_LINE_QUANTITY_TBL_G
12946 , G_LIST_TYPE_CODE_TBL_G LIMIT nROWS;
12947 EXIT WHEN G_LINE_INDEX_TBL_G.COUNT = 0;
12948
12949 IF (G_LINE_INDEX_TBL_G.COUNT > 0) THEN
12950 FOR I in G_LINE_INDEX_TBL_G.FIRST .. G_LINE_INDEX_TBL_G.LAST
12951 LOOP
12952
12953 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
12954 engine_debug('Checking break for: '||g_list_line_id_tbl_g(i) || ' Line Index : ' || g_line_index_tbl_g(i));
12955 END IF;
12956
12957 l_is_break_satisfy := TRUE;
12958
12959 HANDLE_BREAK(p_list_header_id => g_list_header_id_tbl_g(i),
12960 p_list_line_id => g_list_line_id_tbl_g(i),
12961 p_pricing_phase_id => p_pricing_phase_id,
12962 p_line_detail_index => g_line_detail_index_tbl_g(i),
12963 p_line_index => g_line_index_tbl_g(i),
12964 p_group_quantity => g_group_quantity_tbl_g(i),
12965 --p_group_amount => I.group_amount,
12966 p_group_amount => g_line_quantity_tbl_g(i), -- 2388011
12967 p_list_type_code => g_list_type_code_tbl_g(i),
12968 x_is_break_satisfy => l_is_break_satisfy,
12969 x_status_code => l_status_code,
12970 x_status_text => l_status_text);
12971 IF l_status_code=FND_API.G_RET_STS_ERROR THEN
12972 RAISE E_ROUTINE_ERRORS;
12973 END IF;
12974
12975 IF(l_is_break_satisfy = FALSE) THEN
12976 v_count := v_count + 1;
12977 g_failed_ld_tbl_g(v_count) := g_line_detail_index_tbl_g(i);
12978 END IF;
12979
12980 END LOOP;
12981 END IF;
12982 --END LOOP;
12983 END LOOP;
12984 CLOSE l_price_break_parent_cur;
12985
12986 IF (g_failed_ld_tbl_g.count > 0) THEN
12987 FORALL i in g_failed_ld_tbl_g.first .. g_failed_ld_tbl_g.last
12988 UPDATE qp_npreq_ldets_tmp
12989 SET PRICING_STATUS_CODE = G_DELETED_PBH
12990 WHERE LINE_DETAIL_INDEX = g_failed_ld_tbl_g(i);
12991 END IF;
12992
12993 -- if price break price lists are deleted at this point , then mark the status on the line for
12994 -- secondary or big search. Do this only for pricing phase
12995 IF (g_failed_ld_tbl_g.count > 0 and p_pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
12996 -- To make sure lines which did not get the price and do not have a record in qp_npreq_ldets_tmp get picked up
12997 UPDATE qp_npreq_lines_tmp a
12998 SET processed_code = G_STS_LHS_NOT_FOUND
12999 WHERE NOT EXISTS (SELECT 'x'
13000 FROM qp_npreq_ldets_tmp b
13001 WHERE a.line_index = b.line_index
13002 AND b.pricing_status_code = G_STATUS_NEW
13003 AND b.pricing_phase_id = G_PRICE_LIST_PHASE_ID)
13004 AND line_type_code <> G_ORDER_LEVEL;
13005
13006 END IF;
13007
13008 EXCEPTION
13009 WHEN E_ROUTINE_ERRORS THEN
13010 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13011 engine_debug(l_routine || ': ' ||l_status_text);
13012 END IF;
13013 x_status_code := FND_API.G_RET_STS_ERROR;
13014 x_status_text := l_routine || ': ' ||l_status_text;
13015 WHEN OTHERS THEN
13016 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13017 engine_debug(l_routine || ' ' || SQLERRM);
13018 END IF;
13019 x_status_code := FND_API.G_RET_STS_ERROR;
13020 x_status_text := l_routine||' '||SQLERRM;
13021
13022 END Get_Eligible_Price_Break;
13023
13024 /*+--------------------------------------------------------
13025 | PROCEDURE PERFORM_GROUPING
13026 +--------------------------------------------------------
13027 */
13028 PROCEDURE PERFORM_GROUPING(p_pricing_phase_id NUMBER,
13029 p_line_index NUMBER := NULL,
13030 x_status_code OUT NOCOPY VARCHAR2,
13031 x_status_text OUT NOCOPY VARCHAR2) AS
13032
13033 -- Header Level Quals Passed
13034 -- We need to include the records deleted in NOT= and Between Processing here , otherwise the cursor
13035 -- would not fetch any records and grouping would be successful .
13036 -- Even when deleted in NOT= and Between processing they need to go thru grouping and get deleted
13037
13038 /*
13039 INDX,QP_PREQ_GRP.Perform_Grouping.header_level_qual_attrs_cur,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
13040 INDX,QP_PREQ_GRP.Perform_Grouping.header_level_qual_attrs_cur,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
13041 INDX,QP_PREQ_GRP.Perform_Grouping.header_level_qual_attrs_cur,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
13042
13043 INDX,QP_PREQ_GRP.Perform_Grouping.header_level_qual_attrs_cur,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
13044
13045 */
13046
13047 --Pricing Phase Change
13048 CURSOR header_level_qual_attrs_cur IS
13049 SELECT /*+ ORDERED USE_NL(b) index(a qp_preq_line_attrs_tmp_N5) header_level_qual_attrs_cur */
13050 a.LIST_HEADER_ID,
13051 a.LIST_LINE_ID,
13052 a.LINE_INDEX,
13053 a.GROUPING_NUMBER,
13054 a.LINE_DETAIL_INDEX,
13055 COUNT(distinct CONTEXT || ATTRIBUTE || SETUP_VALUE_FROM ) NO_OF_QUALIFIERS_IN_GRP --#bug1761272
13056 FROM qp_npreq_line_attrs_tmp a,qp_npreq_ldets_tmp b
13057 WHERE a.PRICING_PHASE_ID = p_pricing_phase_id
13058 AND a.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
13059 AND a.QUALIFIER_TYPE = G_HEADER_QUALIFIER
13060 AND a.LINE_DETAIL_INDEX = b.LINE_DETAIL_INDEX
13061 AND b.PRICING_STATUS_CODE = G_STATUS_NEW
13062 AND a.PRICING_STATUS_CODE IN (G_STATUS_NEW,G_DELETED_EXCLUDER,G_DELETED_BETWEEN)
13063 GROUP BY a.LIST_HEADER_ID, a.LINE_INDEX,a.LINE_DETAIL_INDEX,a.LIST_LINE_ID,a.GROUPING_NUMBER
13064 ORDER BY a.LIST_HEADER_ID, a.LINE_INDEX,a.LINE_DETAIL_INDEX,a.LIST_LINE_ID,a.GROUPING_NUMBER ;
13065
13066 -- Index Certificate
13067 --Pricing Phase Change
13068 /*
13069 INDX,QP_PREQ_GRP.Perform_Grouping.line_level_qual_attrs_cur2,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
13070 INDX,QP_PREQ_GRP.Perform_Grouping.line_level_qual_attrs_cur2,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
13071 INDX,QP_PREQ_GRP.Perform_Grouping.line_level_qual_attrs_cur2,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
13072
13073 INDX,QP_PREQ_GRP.Perform_Grouping.line_level_qual_attrs_cur2,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
13074
13075 */
13076
13077 CURSOR line_level_qual_attrs_cur2 IS
13078 SELECT /*+ ORDERED USE_NL(b) index(a qp_preq_line_attrs_tmp_N5) line_level_qual_attrs_cur2 */
13079 a.LIST_HEADER_ID,
13080 a.LIST_LINE_ID,
13081 a.LINE_INDEX,
13082 a.GROUPING_NUMBER,
13083 a.LINE_DETAIL_INDEX,
13084 COUNT(distinct CONTEXT || ATTRIBUTE || SETUP_VALUE_FROM ) NO_OF_QUALIFIERS_IN_GRP --#bug1761272
13085 FROM qp_npreq_line_attrs_tmp a,qp_npreq_ldets_tmp b
13086 WHERE a.PRICING_PHASE_ID = p_pricing_phase_id
13087 AND a.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
13088 AND a.QUALIFIER_TYPE = G_LINE_QUALIFIER
13089 AND a.PRICING_STATUS_CODE IN (G_STATUS_NEW,G_DELETED_EXCLUDER,G_DELETED_BETWEEN)
13090 AND a.LINE_DETAIL_INDEX = b.LINE_DETAIL_INDEX
13091 AND b.PRICING_STATUS_CODE = G_STATUS_NEW
13092 GROUP BY a.LIST_HEADER_ID, a.LINE_INDEX,a.LINE_DETAIL_INDEX,a.LIST_LINE_ID,a.GROUPING_NUMBER
13093 ORDER BY a.LIST_HEADER_ID, a.LINE_INDEX,a.LINE_DETAIL_INDEX,a.LIST_LINE_ID,a.GROUPING_NUMBER ;
13094
13095 -- Get the count of records where Price list is a qualifier(for secondary price lists only)
13096 /*
13097 INDX,QP_PREQ_GRP.perform_grouping.hdr_lvl_setup_pl_quals_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13098 INDX,QP_PREQ_GRP.perform_grouping.hdr_lvl_setup_pl_quals_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13099
13100 INDX,QP_PREQ_GRP.perform_grouping.hdr_lvl_setup_pl_quals_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
13101 */
13102 CURSOR hdr_lvl_setup_pl_quals_cur(p_list_header_id NUMBER) IS
13103 SELECT COUNT(*) NO_OF_QUALIFIERS_IN_GRP
13104 FROM QP_QUALIFIERS a , QP_LIST_HEADERS_B b
13105 WHERE a.LIST_HEADER_ID = p_list_header_id
13106 AND a.list_line_id = -1
13107 AND a.QUALIFIER_CONTEXT = 'MODLIST'
13108 AND a.QUALIFIER_ATTRIBUTE = 'QUALIFIER_ATTRIBUTE4'
13109 AND a.LIST_HEADER_ID = b.LIST_HEADER_ID
13110 AND b.LIST_TYPE_CODE IN ('AGR', 'PRL') ;
13111
13112 -- Get the count of records where Price list is a qualifier(for secondary price lists only)
13113 /*
13114 INDX,QP_PREQ_GRP.perform_grouping.line_level_setup_pl_quals_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13115 INDX,QP_PREQ_GRP.perform_grouping.line_level_setup_pl_quals_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13116
13117 INDX,QP_PREQ_GRP.perform_grouping.line_level_setup_pl_quals_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
13118 */
13119
13120 CURSOR line_level_setup_pl_quals_cur(p_list_header_id NUMBER,
13121 p_list_line_id NUMBER) IS
13122 SELECT COUNT(*) NO_OF_QUALIFIERS_IN_GRP
13123 FROM QP_QUALIFIERS a , QP_LIST_HEADERS_B b
13124 WHERE a.LIST_HEADER_ID = p_list_header_id
13125 AND a.list_line_id = p_list_line_id
13126 AND a.QUALIFIER_CONTEXT = 'MODLIST'
13127 AND a.QUALIFIER_ATTRIBUTE = 'QUALIFIER_ATTRIBUTE4'
13128 AND a.LIST_HEADER_ID = b.LIST_HEADER_ID
13129 AND b.LIST_TYPE_CODE IN ('AGR', 'PRL') ;
13130
13131
13132 /*
13133 INDX,QP_PREQ_GRP.perform_grouping.header_level_setup_quals_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13134 INDX,QP_PREQ_GRP.perform_grouping.header_level_setup_quals_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13135 INDX,QP_PREQ_GRP.perform_grouping.header_level_setup_quals_cur,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
13136 */
13137 CURSOR header_level_setup_quals_cur(p_list_header_id NUMBER,
13138 p_grouping_number NUMBER) IS
13139 SELECT COUNT(*) NO_OF_QUALIFIERS_IN_GRP
13140 FROM QP_QUALIFIERS a
13141 WHERE a.LIST_HEADER_ID = p_list_header_id
13142 AND a.list_line_id = -1
13143 AND a.qualifier_grouping_no = p_grouping_number ;
13144 --AND COMPARISON_OPERATOR_CODE <> 'NOT =';
13145
13146 --Null grouping number under same list_header_id is also an 'AND' condition
13147 --for all groups that share the same list_header_id.
13148 --That is, it need to present for a modifier/price list to get selected. Hence
13149 --it need to be condisered when counting number of qualifier in group
13150
13151 /*
13152 INDX,QP_PREQ_GRP.perform_grouping.header_setup_null_group_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13153 */
13154 CURSOR header_setup_null_group_cur(p_list_header_id NUMBER) IS
13155 SELECT count(*)
13156 FROM qp_qualifiers
13157 WHERE list_header_id = p_list_header_id
13158 AND qualifier_grouping_no = -1
13159 AND list_line_id = -1;
13160 --AND comparison_operator_code <> 'NOT =';
13161
13162 --count including null and not null group
13163 /*
13164 INDX,QP_PREQ_GRP.perform_grouping.header_setup_null_group_cur2,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13165 INDX,QP_PREQ_GRP.perform_grouping.header_setup_null_group_cur2,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13166 INDX,QP_PREQ_GRP.perform_grouping.header_setup_null_group_cur2,QP_QUALIFIERS_N1,COMPARISON_OPERATOR_CODE,4
13167 */
13168 CURSOR header_setup_null_group_cur2(p_list_header_id NUMBER) IS
13169 SELECT count(*)
13170 FROM qp_qualifiers
13171 WHERE list_header_id = p_list_header_id
13172 AND list_line_id = -1
13173 AND comparison_operator_code <> 'NOT =';
13174
13175
13176 /*
13177 INDX,QP_PREQ_GRP.perform_grouping.line_setup_null_group_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13178 INDX,QP_PREQ_GRP.perform_grouping.line_setup_null_group_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13179 INDX,QP_PREQ_GRP.perform_grouping.line_setup_null_group_cur,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
13180 */
13181 CURSOR line_setup_null_group_cur(p_list_header_id NUMBER,
13182 p_list_line_id NUMBER) IS
13183 SELECT count(*)
13184 FROM qp_qualifiers
13185 WHERE list_header_id = p_list_header_id
13186 AND list_line_id = p_list_line_id
13187 AND qualifier_grouping_no = -1;
13188 --AND comparison_operator_code <> 'NOT =';
13189
13190 --count including null and not null group for line level qualifier
13191 /*
13192 INDX,QP_PREQ_GRP.perform_grouping.line_setup_null_group_cur2,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13193 INDX,QP_PREQ_GRP.perform_grouping.line_setup_null_group_cur2,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13194 */
13195 CURSOR line_setup_null_group_cur2(p_list_header_id NUMBER,p_list_line_id NUMBER) IS
13196 SELECT count(*)
13197 FROM qp_qualifiers
13198 WHERE list_header_id = p_list_header_id
13199 AND list_line_id = p_list_line_id;
13200 --AND comparison_operator_code <> 'NOT =';
13201
13202 /*
13203 -- Can use N2 instead of N6 , but a better index is needed for this query
13204 */
13205 CURSOR line_level_qual_attrs_cur(p_list_header_id NUMBER,
13206 p_list_line_id NUMBER) IS
13207 SELECT LIST_HEADER_ID,
13208 LIST_LINE_ID ,
13209 LINE_INDEX,
13210 GROUPING_NUMBER,
13211 LINE_DETAIL_INDEX,
13212 COUNT(distinct CONTEXT || ATTRIBUTE || SETUP_VALUE_FROM ) NO_OF_QUALIFIERS_IN_GRP --#bug1761272
13213 FROM qp_npreq_line_attrs_tmp
13214 WHERE ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
13215 AND QUALIFIER_TYPE = G_LINE_QUALIFIER
13216 AND PRICING_STATUS_CODE IN (G_STATUS_NEW,G_DELETED_EXCLUDER,G_DELETED_BETWEEN)
13217 AND LIST_HEADER_ID = p_list_header_id
13218 AND LIST_LINE_ID = p_list_line_id
13219 --AND LINE_INDEX = nvl(p_line_index,LINE_INDEX)
13220 GROUP BY LIST_HEADER_ID,LIST_LINE_ID,LINE_INDEX,LINE_DETAIL_INDEX,GROUPING_NUMBER
13221 ORDER BY LIST_HEADER_ID,LIST_LINE_ID,LINE_INDEX,LINE_DETAIL_INDEX,GROUPING_NUMBER ;
13222
13223 /*
13224 INDX,QP_PREQ_GRP.perform_grouping.line_level_setup_quals_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13225 INDX,QP_PREQ_GRP.perform_grouping.line_level_setup_quals_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13226 INDX,QP_PREQ_GRP.perform_grouping.line_level_setup_quals_cur,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
13227 */
13228 CURSOR line_level_setup_quals_cur(p_list_header_id NUMBER,
13229 p_list_line_id NUMBER,
13230 p_grouping_no NUMBER) IS
13231 SELECT COUNT(*) NO_OF_QUALIFIERS_IN_GRP
13232 FROM QP_QUALIFIERS a
13233 WHERE a.LIST_HEADER_ID = p_list_header_id
13234 AND a.list_line_id = p_list_line_id
13235 AND a.qualifier_grouping_no = p_grouping_no;
13236 --AND COMPARISON_OPERATOR_CODE <> 'NOT =';
13237
13238 --check if there is header_level_qual passed in at all
13239 /*
13240 INDX,QP_PREQ_GRP.perform_grouping.header_level_quals_exist_cur,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
13241 INDX,QP_PREQ_GRP.perform_grouping.header_level_quals_exist_cur,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
13242 INDX,QP_PREQ_GRP.perform_grouping.header_level_quals_exist_cur,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
13243 INDX,QP_PREQ_GRP.perform_grouping.header_level_quals_exist_cur,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
13244 -- Change
13245 */
13246 CURSOR header_level_quals_exist_cur(p_list_header_id NUMBER,p_line_index PLS_INTEGER) IS
13247 SELECT 'X'
13248 FROM qp_npreq_line_attrs_tmp
13249 WHERE list_header_id = p_list_header_id
13250 AND line_index = p_line_index
13251 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
13252 AND QUALIFIER_TYPE = G_HEADER_QUALIFIER
13253 AND PRICING_STATUS_CODE = G_STATUS_NEW;
13254
13255 /*
13256 INDX,QP_PREQ_GRP.perform_grouping.line_lvl_setup_exist_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13257 INDX,QP_PREQ_GRP.perform_grouping.line_lvl_setup_exist_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13258 */
13259 CURSOR line_lvl_setup_exist_cur(p_list_header_id NUMBER,
13260 p_list_line_id NUMBER) IS
13261 SELECT 'X'
13262 FROM qp_qualifiers
13263 WHERE list_header_id = p_list_header_id
13264 AND list_line_id = p_list_line_id;
13265
13266 /*
13267 INDX,QP_PREQ_GRP.perform_grouping.hdr_lvl_setup_quals_exist_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13268 INDX,QP_PREQ_GRP.perform_grouping.hdr_lvl_setup_quals_exist_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13269 */
13270 CURSOR hdr_lvl_setup_quals_exist_cur(p_list_header_id NUMBER) IS
13271 SELECT 'X'
13272 FROM qp_qualifiers
13273 WHERE LIST_HEADER_ID = p_list_header_id
13274 AND list_line_id = -1;
13275
13276 -- volume attributes that are sourced in engine , we do not want to look at these attrs when doing product grouping
13277 -- Quantity Attribute and Line Amount Attribute
13278 -- Need not actually look at Pricing attribute , because there is always a product associated with it
13279 -- When looking at pricing attributes , we need to get distinct pricing attributes as , a same pricing attribute for the
13280 -- same list line id and line index can be there in the temp table more than once. Combination of Context and Attribute's
13281 -- distinctness is what is looked for
13282
13283 /*
13284 INDX,QP_PREQ_GRP.perform_grouping.product_level_attrs_cur,QP_RLTD_MODIFIERS_N2,TO_RLTD_MODIFIER_ID,1
13285 */
13286
13287 /*
13288 INDX,QP_PREQ_GRP.Perform_Grouping.product_level_attrs_cur,qp_npreq_line_attrs_tmp_N5,PRICING_PHASE_ID,1
13289 INDX,QP_PREQ_GRP.Perform_Grouping.product_level_attrs_cur,qp_npreq_line_attrs_tmp_N5,ATTRIBUTE_TYPE,2
13290 INDX,QP_PREQ_GRP.Perform_Grouping.product_level_attrs_cur,qp_npreq_line_attrs_tmp_N5,PRICING_STATUS_CODE,3
13291
13292 INDX,QP_PREQ_GRP.Perform_Grouping.product_level_attrs_cur,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
13293
13294 */
13295 --Pricing Phase Change
13296 CURSOR product_level_attrs_cur IS
13297 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
13298 a.LIST_HEADER_ID , a.LIST_LINE_ID , a.LINE_INDEX,
13299 SUM(distinct(decode(a.attribute_type,G_PRODUCT_TYPE,1,0))) +
13300 COUNT(distinct(decode(a.attribute_type,G_PRICING_TYPE, a.context || ' ' || a.attribute || ' ' || setup_value_from ,NULL)))
13301 NO_OF_PATTS_IN_GRP -- Bug No: 7129919
13302 FROM qp_npreq_line_attrs_tmp a , qp_npreq_ldets_tmp b
13303 WHERE a.PRICING_PHASE_ID = p_pricing_phase_id
13304 AND a.CONTEXT <> G_PRIC_VOLUME_CONTEXT
13305 AND a.ATTRIBUTE_TYPE in ( G_PRICING_TYPE,G_PRODUCT_TYPE)
13306 AND a.PRICING_STATUS_CODE = G_STATUS_NEW
13307 AND a.LINE_DETAIL_INDEX = b.LINE_DETAIL_INDEX
13308 AND b.PRICING_STATUS_CODE = G_STATUS_NEW
13309 AND NOT EXISTS (SELECT 'X'
13310 FROM QP_RLTD_MODIFIERS b
13311 WHERE a.LIST_LINE_ID = b.TO_RLTD_MODIFIER_ID
13312 and b.rltd_modifier_grp_type <> 'COUPON') -- 5439022
13313 GROUP BY a.LIST_HEADER_ID , a.LIST_LINE_ID,a.LINE_INDEX;
13314
13315 /*
13316 INDX,QP_PREQ_GRP.perform_grouping.product_level_setup_attrs_cur,QP_PRICING_ATTRIBUTES_N2,LIST_LINE_ID,1
13317 INDX,QP_PREQ_GRP.perform_grouping.product_level_setup_attrs_cur,QP_PRICING_ATTRIBUTES_N2,EXCLUDER_FLAG,2
13318 */
13319 CURSOR product_level_setup_attrs_cur(p_list_line_id NUMBER) IS
13320 SELECT COUNT(*) NO_OF_PATTS_IN_GRP
13321 FROM QP_PRICING_ATTRIBUTES a
13322 WHERE a.LIST_LINE_ID = p_list_line_id
13323 AND a.EXCLUDER_FLAG <> G_YES;
13324 --AND a.PRICING_ATTRIBUTE_CONTEXT IS NOT NULL
13325 --GROUP BY LIST_LINE_ID,ATTRIBUTE_GROUPING_NO;
13326
13327 /*
13328 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_exists,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13329 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_exists,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13330 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_exists,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
13331 */
13332 CURSOR is_not_null_grp_exists (p_list_header_id NUMBER ,p_list_line_id NUMBER) IS
13333 SELECT 'X'
13334 FROM qp_qualifiers
13335 WHERE list_header_id = p_list_header_id
13336 AND list_line_id = p_list_line_id
13337 AND qualifier_grouping_no <> -1;
13338
13339 /*
13340 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
13341 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
13342 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
13343 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
13344 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed,qp_npreq_line_attrs_tmp_N1,LIST_LINE_ID,5
13345 -- This query is tuned for performance , expect some issues here with functionality
13346 */
13347 CURSOR is_not_null_grp_passed (p_line_index PLS_INTEGER ,p_list_line_id NUMBER,p_list_header_id NUMBER) IS
13348 SELECT 'X'
13349 FROM qp_npreq_line_attrs_tmp
13350 WHERE line_index = p_line_index
13351 AND list_line_id = p_list_line_id
13352 AND list_header_id = p_list_header_id
13353 AND attribute_type = G_QUALIFIER_TYPE
13354 AND qualifier_type = G_LINE_QUALIFIER
13355 AND pricing_status_code = G_STATUS_NEW -- Expect a bug with this join condition
13356 AND grouping_number <> -1;
13357
13358 /*
13359 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_exists2,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
13360 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_exists2,QP_QUALIFIERS_N1,LIST_LINE_ID,2
13361 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_exists2,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
13362 */
13363 CURSOR is_not_null_grp_exists2 (p_list_header_id NUMBER) IS
13364 SELECT 'X'
13365 FROM qp_qualifiers
13366 WHERE list_header_id = p_list_header_id
13367 AND list_line_id = -1
13368 AND qualifier_grouping_no <> -1;
13369
13370 /*
13371 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed2,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
13372 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
13373 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
13374 INDX,QP_PREQ_GRP.perform_grouping.is_not_null_grp_passed2,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
13375 -- Change
13376 */
13377 CURSOR is_not_null_grp_passed2 (p_line_index PLS_INTEGER ,p_list_header_id NUMBER) IS
13378 SELECT 'X'
13379 FROM qp_npreq_line_attrs_tmp
13380 WHERE line_index = p_line_index
13381 AND list_header_id = p_list_header_id
13382 AND attribute_type = G_QUALIFIER_TYPE
13383 AND qualifier_type = G_HEADER_QUALIFIER
13384 AND pricing_status_code = G_STATUS_NEW -- Expect a bug with this join condition
13385 AND grouping_number <> -1;
13386
13387 -- This cursor would get the count of records that got deleted as part of NOT= and Between for
13388 -- header level qualifiers. This count is deleted from the actual passed in qualifier count
13389 -- Then the resulting count of qualifiers is compared with the count in the setup
13390
13391 /*
13392 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_hdr_quals,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
13393 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_hdr_quals,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
13394 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_hdr_quals,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
13395 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_hdr_quals,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
13396 */
13397 CURSOR get_excluded_hdr_quals(p_line_index PLS_INTEGER,
13398 p_list_header_id PLS_INTEGER ,
13399 p_grouping_no PLS_INTEGER) IS
13400 SELECT COUNT(*)
13401 FROM qp_npreq_line_attrs_tmp
13402 WHERE LINE_INDEX = p_line_index
13403 AND LIST_HEADER_ID = p_list_header_id
13404 AND nvl(GROUPING_NUMBER,0) = nvl(p_grouping_no,0)
13405 AND PRICING_STATUS_CODE IN (G_DELETED_EXCLUDER , G_DELETED_BETWEEN)
13406 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
13407 AND QUALIFIER_TYPE = G_HEADER_QUALIFIER;
13408
13409 -- This cursor would get the count of records that got deleted as part of NOT= and Between for
13410 -- line level qualifiers
13411
13412 /*
13413 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_line_quals,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
13414 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_line_quals,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
13415 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_line_quals,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
13416 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_line_quals,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
13417 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_line_quals,qp_npreq_line_attrs_tmp_N1,LIST_LINE_ID,5
13418 */
13419 CURSOR get_excluded_line_quals(p_line_index PLS_INTEGER,
13420 p_list_header_id PLS_INTEGER ,
13421 p_list_line_id PLS_INTEGER,
13422 p_grouping_no PLS_INTEGER) IS
13423 SELECT COUNT(*)
13424 FROM qp_npreq_line_attrs_tmp
13425 WHERE LINE_INDEX = p_line_index
13426 AND LIST_HEADER_ID = p_list_header_id
13427 AND LIST_LINE_ID = p_list_line_id
13428 AND nvl(GROUPING_NUMBER,0) = nvl(p_grouping_no,0)
13429 AND PRICING_STATUS_CODE IN (G_DELETED_EXCLUDER , G_DELETED_BETWEEN)
13430 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
13431 AND QUALIFIER_TYPE = G_LINE_QUALIFIER;
13432
13433 -- This cursor would get the count of records that got deleted as part of Between for product (Volume based
13434 -- discounts like ITEM_QUANTITY and ITEM_AMOUNT)
13435
13436 /*
13437 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_prods_between,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
13438 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_prods_between,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
13439 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_prods_between,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
13440 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_prods_between,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
13441 INDX,QP_PREQ_GRP.perform_grouping.get_excluded_prods_between,qp_npreq_line_attrs_tmp_N1,LIST_LINE_ID,5
13442 */
13443 --[julin/4744915/5139512] modified sql
13444 CURSOR get_excluded_prods_between(p_line_index PLS_INTEGER,
13445 p_list_header_id PLS_INTEGER,
13446 p_list_line_id PLS_INTEGER) IS
13447 SELECT 1
13448 FROM DUAL
13449 WHERE EXISTS
13450 (SELECT 'x'
13451 FROM QP_PREQ_LINE_ATTRS_TMP
13452 WHERE LINE_INDEX = p_line_index
13453 AND LIST_HEADER_ID = p_list_header_id
13454 AND LIST_LINE_ID = p_list_line_id
13455 AND PRICING_STATUS_CODE = G_DELETED_BETWEEN
13456 AND ATTRIBUTE_TYPE = G_PRICING_TYPE);
13457
13458 /*
13459 SELECT COUNT(*)
13460 FROM qp_npreq_line_attrs_tmp
13461 WHERE LINE_INDEX = p_line_index
13462 AND LIST_HEADER_ID = p_list_header_id
13463 AND LIST_LINE_ID = p_list_line_id
13464 AND PRICING_STATUS_CODE = G_DELETED_BETWEEN
13465 AND ATTRIBUTE_TYPE = G_PRICING_TYPE;
13466 */
13467
13468 v_list_header_id NUMBER;
13469 v_list_hdr_id NUMBER;
13470 v_list_line_id NUMBER;
13471 v_line_index NUMBER;
13472 v_grouping_number NUMBER;
13473 v_line_detail_index NUMBER;
13474 v_no_of_qualifiers_in_grp NUMBER;
13475 v_setup_list_header_id NUMBER;
13476 v_passed_line_level_quals_flag VARCHAR2(30):= 'FALSE';
13477 v_price_list_count NUMBER;
13478 l_dummy VARCHAR2(1);
13479 l_setup_null_grp_cnt PLS_INTEGER:=0;
13480 l_null_grp_cnt PLS_INTEGER:=0;
13481 l_diff_list_header_id NUMBER;
13482 l_diff_line_index PLS_INTEGER;
13483 l_diff_line_detail_index PLS_INTEGER;
13484 l_setup_grp_count PLS_INTEGER;
13485 l_excluded_count PLS_INTEGER;
13486 l_null_excl_count PLS_INTEGER;
13487 l_null_excl_count1 PLS_INTEGER;
13488 l_null_excl_count2 PLS_INTEGER;
13489 l_excl_prod_count PLS_INTEGER;
13490 l_excl_prod_count1 PLS_INTEGER;
13491
13492 l_setup_null_grp_cnt2 PLS_INTEGER:=0;
13493 l_null_grp_cnt2 PLS_INTEGER:=0;
13494 l_diff_list_header_id2 NUMBER;
13495 l_diff_list_line_id2 NUMBER;
13496 l_diff_line_index2 PLS_INTEGER;
13497 l_diff_line_detail_index2 PLS_INTEGER;
13498 l_setup_grp_count2 PLS_INTEGER;
13499 l_has_setup_line_lvl BOOLEAN:= FALSE;
13500 l_has_passed_in_line_lvl BOOLEAN:= FALSE;
13501 l_deleted_flag BOOLEAN:= FALSE;
13502 l_passed_in_cnt PLS_INTEGER;
13503 l_passed_in_cnt2 PLS_INTEGER;
13504 l_passed_in_cnt3 PLS_INTEGER;
13505 l_del_tbl PLS_INTEGER_TYPE;
13506 l_success_tbl PLS_INTEGER_TYPE;
13507 l_ind BINARY_INTEGER:=0;
13508 l_success_ind BINARY_INTEGER:=0;
13509 l_success_ind_flag VARCHAR2(1);
13510 l_index BINARY_INTEGER:=0;
13511 l_status_text VARCHAR2(240);
13512 nROWS CONSTANT NUMBER := 1000;
13513 E_ROUTINE_ERRORS EXCEPTION;
13514
13515 BEGIN
13516
13517 qp_debug_util.tstart('PERFORM_GROUPING','Perform Grouping');
13518 x_status_code := FND_API.G_RET_STS_SUCCESS;
13519
13520 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13521 engine_debug('Grouping begin');
13522 engine_debug('Pricing phase id: ' || p_pricing_phase_id);
13523
13524 END IF;
13525 -- Header Level Qualifiers Grouping
13526 --grouping for the records with header level qualifies
13527 -- +/- line level qualifiers.
13528
13529 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13530 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13531 engine_debug('In grouping');
13532 END IF;
13533 FOR i IN header_level_qual_attrs_cur LOOP
13534 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13535 engine_debug('-----------------------');
13536 engine_debug('list_header_id:'||i.list_header_id);
13537 engine_debug('list_line_id:'||i.list_line_id);
13538 engine_debug('line_index:'||i.line_index);
13539 engine_debug('grouping no:'||i.grouping_number);
13540 engine_debug('line detail index:'||i.line_detail_index);
13541 engine_debug('Qualifiers in Grp:'||i.NO_OF_QUALIFIERS_IN_GRP);
13542 END IF;
13543 END LOOP;
13544 END IF;
13545
13546 l_status_text := '#1';
13547
13548 IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
13549
13550 FOR i IN header_level_qual_attrs_cur LOOP
13551 v_line_index := i.LINE_INDEX;
13552 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13553 engine_debug('Header Level Qualifier Attributes Passed');
13554
13555 END IF;
13556 --this group is an AND condition for all qualifiers under the same header
13557 IF i.GROUPING_NUMBER = -1 THEN
13558 l_null_excl_count := 0;
13559 l_null_grp_cnt := i.NO_OF_QUALIFIERS_IN_GRP;
13560 l_passed_in_cnt := i.NO_OF_QUALIFIERS_IN_GRP;
13561 l_diff_list_header_id := i.list_header_id;
13562 l_diff_line_index := i.line_index;
13563 l_diff_line_detail_index := i.line_detail_index;
13564 ELSIF (i.list_header_id = l_diff_list_header_id)
13565 AND (i.line_index = l_diff_line_index)
13566 AND (i.line_detail_index = l_diff_line_detail_index) THEN
13567 l_passed_in_cnt := l_null_grp_cnt + i.NO_OF_QUALIFIERS_IN_GRP;
13568 NULL;
13569 --If no change then
13570 --do nothing, l_null_grp_cnt from prveious loop is still good
13571 ELSE --list header has changed, reset the count and previous list_header_id etc
13572 l_null_grp_cnt := 0;
13573 l_null_excl_count := 0;
13574 l_diff_list_header_id := -1975;
13575 l_diff_line_index := -1975;
13576 l_diff_line_detail_index := -1975;
13577 l_passed_in_cnt := i.NO_OF_QUALIFIERS_IN_GRP;
13578 END IF;
13579
13580 --Now working on setup grp count
13581 IF i.grouping_number = -1 THEN
13582 OPEN header_setup_null_group_cur(i.LIST_HEADER_ID);
13583 FETCH header_setup_null_group_cur INTO l_setup_null_grp_cnt;
13584 CLOSE header_setup_null_group_cur;
13585 l_setup_grp_count:=l_setup_null_grp_cnt;
13586 ELSE
13587 OPEN header_level_setup_quals_cur(i.LIST_HEADER_ID,i.grouping_number);
13588 FETCH header_level_setup_quals_cur INTO l_setup_grp_count;
13589 CLOSE header_level_setup_quals_cur;
13590
13591 OPEN header_setup_null_group_cur(i.LIST_HEADER_ID);
13592 FETCH header_setup_null_group_cur INTO l_setup_null_grp_cnt;
13593 CLOSE header_setup_null_group_cur;
13594
13595 l_setup_grp_count:= l_setup_grp_count + l_setup_null_grp_cnt;
13596
13597 END IF;
13598
13599 -- Delete the no of quals where pl is a qualifier(for price lists only)
13600 OPEN hdr_lvl_setup_pl_quals_cur(i.list_header_id);
13601 FETCH hdr_lvl_setup_pl_quals_cur INTO v_price_list_count;
13602 CLOSE hdr_lvl_setup_pl_quals_cur;
13603
13604 l_setup_grp_count:= l_setup_grp_count - v_price_list_count ;
13605
13606 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13607 engine_debug('Checking header lvl qualifier count');
13608 engine_debug('Header Level Qualifiers in setup: '||l_setup_grp_count);
13609
13610 END IF;
13611 -- Init
13612 l_excluded_count :=0;
13613 --l_null_excl_count := 0;
13614
13615 -- Determine actual passed in count
13616 OPEN get_excluded_hdr_quals(i.line_index,i.list_header_id,i.grouping_number);
13617 FETCH get_excluded_hdr_quals into l_excluded_count;
13618 CLOSE get_excluded_hdr_quals;
13619
13620 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13621 engine_debug('Excluded quals : '||l_excluded_count || ' Grouping Number:' || i.grouping_number);
13622
13623 END IF;
13624 -- l_null_excl_count is applicable when NOT= , or BETWEEN is there on the NULL grouping number
13625 -- and that gets D_EXCL or D_BETWEEN.
13626 -- Then the actual passed in count will be other grp count(ex:grp no 1 ) + null_grp_count -
13627 -- l_null_excl_count
13628 -- l_excluded_count is for getting the excluded records for that particular grp no
13629
13630 IF (i.grouping_number = -1) THEN
13631 l_null_excl_count := l_excluded_count;
13632 l_passed_in_cnt := l_passed_in_cnt - nvl(l_excluded_count,0);
13633 ELSE
13634 l_passed_in_cnt := l_passed_in_cnt - nvl(l_excluded_count,0) - nvl(l_null_excl_count,0);
13635 END IF;
13636
13637 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13638 engine_debug('Null Excluded quals : '||l_null_excl_count);
13639 engine_debug('Header Level Qualifiers passsed in: '||l_passed_in_cnt);
13640
13641 END IF;
13642 IF (l_passed_in_cnt >= l_setup_grp_count) THEN
13643 --l_success_ind := l_success_ind+1;
13644 --l_success_tbl(l_success_ind):= i.LINE_DETAIL_INDEX;
13645
13646 l_deleted_flag := FALSE;
13647 l_success_ind_flag := G_NO;
13648 IF i.grouping_number = -1 THEN
13649 --check if this is a pure null grp
13650 OPEN is_not_null_grp_exists2(i.list_header_id);
13651 FETCH is_not_null_grp_exists2 into l_dummy;
13652 IF is_not_null_grp_exists2%FOUND THEN
13653 --is not a pure null grp, then check if any other grp passed in
13654 OPEN is_not_null_grp_passed2(i.line_index,i.list_header_id);
13655 FETCH is_not_null_grp_passed2 into l_dummy;
13656 IF is_not_null_grp_passed2%NOTFOUND THEN
13657 -- other required grp is not passed
13658 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13659 engine_debug('Update #7');
13660 END IF;
13661 l_deleted_flag := TRUE;
13662 l_ind := l_ind+1;
13663 l_del_tbl(l_ind):= i.LINE_DETAIL_INDEX;
13664 END IF;
13665 CLOSE is_not_null_grp_passed2;
13666 ELSE
13667 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13668 engine_debug ('Successful on Header Level Quals Success Flag');
13669 END IF;
13670 l_success_ind_flag := G_YES; -- Mark it as success , for line level quals evaluation
13671 --l_success_ind := l_success_ind+1;
13672 --l_success_tbl(l_success_ind):= i.LINE_DETAIL_INDEX;
13673 END IF; --is a pure null grp
13674 CLOSE is_not_null_grp_exists2;
13675 ELSE
13676 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13677 engine_debug ('Successful on Header Level Quals Success Flag Not null Group');
13678 END IF;
13679 l_success_ind_flag := G_YES;
13680 --l_success_ind := l_success_ind+1;
13681 --l_success_tbl(l_success_ind):= i.LINE_DETAIL_INDEX;
13682 END IF;
13683
13684 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13685 engine_debug('Line Level Quals LH Id :' || i.list_header_id);
13686 engine_debug('Line Level Quals LL Id :' || i.list_line_id);
13687
13688 END IF;
13689 OPEN line_lvl_setup_exist_cur(i.LIST_HEADER_ID,i.list_line_id);
13690 FETCH line_lvl_setup_exist_cur INTO l_dummy;
13691 l_has_setup_line_lvl := FALSE;
13692 l_has_passed_in_line_lvl := FALSE;
13693
13694 IF line_lvl_setup_exist_cur%FOUND AND l_deleted_flag = FALSE THEN --has line level qualifiers
13695 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13696 engine_debug('Has Line Level Qualifiers');
13697 END IF;
13698 l_has_setup_line_lvl := TRUE;
13699 FOR k IN line_level_qual_attrs_cur(i.LIST_HEADER_ID,i.list_line_id) LOOP
13700 l_has_passed_in_line_lvl := TRUE;
13701 IF k.GROUPING_NUMBER = -1 THEN
13702 l_null_grp_cnt2 := k.NO_OF_QUALIFIERS_IN_GRP;
13703 l_null_excl_count1 := 0;
13704 l_passed_in_cnt2 := k.NO_OF_QUALIFIERS_IN_GRP;
13705 l_diff_list_header_id2 := k.list_header_id;
13706 l_diff_list_line_id2 := k.list_line_id;
13707 l_diff_line_index2 := k.line_index;
13708 l_diff_line_detail_index2 := k.line_detail_index;
13709 ELSIF (k.list_header_id = l_diff_list_header_id2)
13710 AND (k.list_line_id = l_diff_list_line_id2)
13711 AND (k.line_index = l_diff_line_index2)
13712 AND (k.line_detail_index = l_diff_line_detail_index2) THEN
13713 NULL;
13714 l_passed_in_cnt2 := k.NO_OF_QUALIFIERS_IN_GRP + l_null_grp_cnt2;
13715 ELSE
13716 l_passed_in_cnt2 := k.NO_OF_QUALIFIERS_IN_GRP;
13717 l_null_grp_cnt2:= 0;
13718 l_null_excl_count1 := 0;
13719 l_diff_list_header_id2 := -1975;
13720 l_diff_list_line_id2 := -1975;
13721 l_diff_line_index2 := -1975;
13722 l_diff_line_detail_index2 := -1975;
13723 END IF;
13724
13725 IF k.grouping_number = -1 THEN
13726 OPEN line_setup_null_group_cur(K.list_header_id,K.list_line_id);
13727 FETCH line_setup_null_group_cur INTO l_setup_grp_count2;
13728 CLOSE line_setup_null_group_cur;
13729 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13730 engine_debug('Setup grp null cnt: '||l_setup_grp_count2);
13731 END IF;
13732 ELSE
13733 OPEN line_setup_null_group_cur(K.list_header_id,K.list_line_id);
13734 FETCH line_setup_null_group_cur INTO l_setup_null_grp_cnt2;
13735 CLOSE line_setup_null_group_cur;
13736
13737 OPEN line_level_setup_quals_cur(K.list_header_id,K.list_line_id,K.grouping_number);
13738 FETCH line_level_setup_quals_cur INTO l_setup_grp_count2;
13739 CLOSE line_level_setup_quals_cur;
13740
13741 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13742 engine_debug('setup grp cnt: '||l_setup_grp_count2);
13743 END IF;
13744 l_setup_grp_count2 := l_setup_grp_count2 + l_setup_null_grp_cnt2;
13745 END IF;
13746
13747 -- Delete the no of quals where pl is a qualifier(for price lists only)
13748 OPEN line_level_setup_pl_quals_cur(K.list_header_id,K.list_line_id);
13749 FETCH line_level_setup_pl_quals_cur INTO v_price_list_count;
13750 CLOSE line_level_setup_pl_quals_cur;
13751
13752 l_setup_grp_count2 := l_setup_grp_count2 - v_price_list_count;
13753
13754 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13755 engine_debug('Null Line Level Quals count in Setup: '||l_setup_null_grp_cnt2);
13756 engine_debug('Passed in null line level quals count: '|| l_null_grp_cnt2);
13757
13758 END IF;
13759 -- Init
13760 l_excluded_count :=0;
13761 --l_null_excl_count1 := 0;
13762
13763 -- Determine actual passed in count
13764 OPEN get_excluded_line_quals(k.line_index,k.list_header_id,k.list_line_id,k.grouping_number);
13765 FETCH get_excluded_line_quals into l_excluded_count;
13766 CLOSE get_excluded_line_quals;
13767
13768 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13769 engine_debug('Excluded Line quals : '||l_excluded_count);
13770
13771 END IF;
13772 IF (i.grouping_number = -1) THEN
13773 l_null_excl_count1 := l_excluded_count;
13774 l_passed_in_cnt2 := l_passed_in_cnt2 - nvl(l_excluded_count,0);
13775 ELSE
13776 l_passed_in_cnt2 := l_passed_in_cnt2 - nvl(l_excluded_count,0) - nvl(l_null_excl_count1,0);
13777 END IF;
13778
13779 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13780 engine_debug('Passed in line lvl count: '||l_passed_in_cnt2);
13781 engine_debug('Line Level Quals count in Setup: '||l_setup_grp_count2);
13782
13783 END IF;
13784 IF(l_passed_in_cnt2 >= l_setup_grp_count2) THEN
13785 IF k.grouping_number = -1 THEN
13786 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13787 engine_debug('Line Level Quals #123');
13788 END IF;
13789 --check if this is a pure null grp, if no, and other
13790 OPEN is_not_null_grp_exists(k.list_header_id,k.list_line_id);
13791 FETCH is_not_null_grp_exists into l_dummy;
13792 IF is_not_null_grp_exists%FOUND THEN
13793 --is not a pure null grp, then check if any other grp passed in
13794 OPEN is_not_null_grp_passed(k.line_index,k.list_line_id,k.list_header_id);
13795 FETCH is_not_null_grp_passed into l_dummy;
13796 IF is_not_null_grp_passed%NOTFOUND THEN
13797 --no other required grp passed
13798 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13799 engine_debug('Update #7');
13800 END IF;
13801 l_ind := l_ind+1;
13802 l_del_tbl(l_ind):= k.LINE_DETAIL_INDEX;
13803 END IF;
13804 CLOSE is_not_null_grp_passed;
13805 ELSE
13806 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13807 engine_debug('Pure Null Line Level Quals #124');
13808 END IF;
13809 l_success_ind := l_success_ind+1;
13810 l_success_tbl(l_success_ind):= i.line_detail_index;
13811 END IF; --is a pure null grp
13812 CLOSE is_not_null_grp_exists;
13813 ELSE -- not a null group approve the line
13814 l_success_ind := l_success_ind+1;
13815 l_success_tbl(l_success_ind):= k.LINE_DETAIL_INDEX;
13816 END IF;
13817 ELSE -- Count did not match
13818 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13819 engine_debug ('Not successful on the Line Level Qualifiers Count Mismatch: ' || k.LIST_LINE_ID);
13820 engine_debug('The whole List Line is getting deleted');
13821 engine_debug('Update #1');
13822 END IF;
13823 l_ind := l_ind+1;
13824 l_del_tbl(l_ind):= k.LINE_DETAIL_INDEX;
13825 END IF;
13826 END LOOP; --end K loop
13827 --we need to delete lists that has line lvl qualifier but not passed in.
13828 IF (l_has_passed_in_line_lvl = FALSE) THEN
13829 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13830 engine_debug ('Fails in line lvl bcause exists in Setup but Not Passed');
13831 engine_debug('List header id that has line level qualifier:'|| i.list_header_id);
13832 engine_debug('The whole List Line is getting deleted#1');
13833 engine_debug('Update #2');
13834 END IF;
13835 l_ind := l_ind+1;
13836 l_del_tbl(l_ind):= i.LINE_DETAIL_INDEX;
13837 END IF;
13838 ELSE
13839 -- No line level qualifiers exist , but header level quals satisfied
13840 IF(l_success_ind_flag = G_YES) THEN
13841 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13842 engine_debug('Header Level Quals satisfied and no line level quals exist');
13843 END IF;
13844 l_success_ind := l_success_ind+1;
13845 l_success_tbl(l_success_ind):= i.line_detail_index;
13846 END IF;
13847 END IF; -- end if for line_lvl_setup_exist_cur%FOUND
13848 CLOSE line_lvl_setup_exist_cur;
13849 ELSE --else for if (i.NO_OF_QUALIFIER_IN_GRP + l_null_grp_cnt >= l_setup_grp_count)
13850 --grouping count did not match for header level qualifier
13851 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13852 engine_debug('Header lvl qualifier doesn''t match');
13853 engine_debug('Update #3');
13854 END IF;
13855 l_ind := l_ind+1;
13856 l_del_tbl(l_ind):= i.LINE_DETAIL_INDEX;
13857 END IF; --end if for if (i.NO_OF_QUALIFIER_IN_GRP + l_null_grp_cnt >= l_setup_grp_count)
13858 END LOOP; --end i loop
13859 l_status_text := '#2';
13860
13861 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13862 engine_debug('Deleted Line Details in Table');
13863 END IF;
13864 FOR i in 1..l_del_tbl.count
13865 LOOP
13866 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13867 engine_debug('Line Detail Index: ' || l_del_tbl(i));
13868 END IF;
13869 END LOOP;
13870
13871 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13872 engine_debug('Successful Line Details in Table');
13873 END IF;
13874 FOR i in 1..l_success_tbl.count
13875 LOOP
13876 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13877 engine_debug('Line Detail Index: ' || l_success_tbl(i));
13878 END IF;
13879 END LOOP;
13880
13881 IF l_del_tbl.FIRST IS NOT NULL THEN
13882 FORALL i in l_del_tbl.FIRST..l_del_tbl.LAST
13883 /*
13884 INDX,QP_PREQ_GRP.perform_grouping.upd1,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
13885 */
13886 UPDATE qp_npreq_ldets_tmp --upd1
13887 SET PRICING_STATUS_CODE = G_DELETED_GRP,
13888 PRICING_STATUS_TEXT = 'Deleted in header+/-line grouping'
13889 WHERE line_detail_index = l_del_tbl(i);
13890
13891 /* FORALL i in l_del_tbl.FIRST..l_del_tbl.LAST
13892 UPDATE qp_npreq_line_attrs_tmp
13893 SET PRICING_STATUS_CODE = G_DELETED_GRP,
13894 PRICING_STATUS_TEXT = 'Deleted in header +/- line grouping'
13895 WHERE line_detail_index = l_del_tbl(i)
13896 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE; */
13897
13898 END IF;
13899
13900 IF l_success_tbl.FIRST IS NOT NULL THEN
13901 FORALL i in l_success_tbl.FIRST..l_success_tbl.LAST
13902 /*
13903 INDX,QP_PREQ_GRP.perform_grouping.upd2,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
13904 */
13905 UPDATE qp_npreq_ldets_tmp --upd2
13906 SET PRICING_STATUS_CODE = G_STATUS_NEW
13907 WHERE line_detail_index = l_success_tbl(i);
13908
13909 /* FORALL i in l_success_tbl.FIRST..l_success_tbl.LAST
13910 UPDATE qp_npreq_line_attrs_tmp
13911 SET PRICING_STATUS_CODE = G_STATUS_NEW
13912 WHERE line_detail_index = l_success_tbl(i)
13913 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE; */
13914
13915 END IF;
13916
13917 l_del_tbl.delete;
13918 l_success_tbl.delete;
13919 l_ind:=0;
13920 l_success_ind:=0;
13921 l_status_text :='#3';
13922
13923 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13924 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13925 engine_debug('In Pure Line Level grouping');
13926 END IF;
13927 FOR k IN line_level_qual_attrs_cur2 LOOP
13928 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
13929 engine_debug('-----------------------');
13930 engine_debug('list_header_id:'||k.list_header_id);
13931 engine_debug('list_line_id:'||k.list_line_id);
13932 engine_debug('line_index:'||k.line_index);
13933 engine_debug('grouping no:'||k.grouping_number);
13934 engine_debug('line detail index:'||k.line_detail_index);
13935 engine_debug('Qualifiers in Grp:'||k.NO_OF_QUALIFIERS_IN_GRP);
13936 END IF;
13937 END LOOP;
13938 END IF;
13939
13940 --grouping for the records with ONLY line level qualifies
13941 FOR k in line_level_qual_attrs_cur2 LOOP
13942 IF k.GROUPING_NUMBER = -1 THEN
13943 l_null_grp_cnt2 := k.NO_OF_QUALIFIERS_IN_GRP;
13944 l_null_excl_count2 := 0;
13945 l_passed_in_cnt3 := k.NO_OF_QUALIFIERS_IN_GRP;
13946 l_diff_list_header_id2 := k.list_header_id;
13947 l_diff_list_line_id2 := k.list_line_id;
13948 l_diff_line_index2 := k.line_index;
13949 l_diff_line_detail_index2 := k.line_detail_index;
13950 ELSIF (k.list_header_id = l_diff_list_header_id2)
13951 AND (k.list_line_id = l_diff_list_line_id2)
13952 AND (k.line_index = l_diff_line_index2)
13953 AND (k.line_detail_index = l_diff_line_detail_index2) THEN
13954 NULL;
13955 --if l_null_grp_cnt2 set by previous loop then add that
13956 l_passed_in_cnt3 := k.NO_OF_QUALIFIERS_IN_GRP + l_null_grp_cnt2;
13957 ELSE
13958 l_null_grp_cnt2:= 0;
13959 l_null_excl_count2 := 0;
13960 l_diff_list_header_id2 := -1976;
13961 l_diff_list_line_id2 := -1976;
13962 l_diff_line_index2 := -1976;
13963 l_diff_line_detail_index2 := -1976;
13964 l_passed_in_cnt3 := k.NO_OF_QUALIFIERS_IN_GRP;
13965 END IF;
13966
13967 --now working on setup grouping
13968 IF k.grouping_number = -1 THEN
13969 OPEN line_setup_null_group_cur(K.list_header_id,K.list_line_id);
13970 FETCH line_setup_null_group_cur INTO l_setup_grp_count2;
13971 CLOSE line_setup_null_group_cur;
13972 ELSE
13973 OPEN line_setup_null_group_cur(K.list_header_id,K.list_line_id);
13974 FETCH line_setup_null_group_cur INTO l_setup_null_grp_cnt2;
13975 CLOSE line_setup_null_group_cur;
13976
13977 OPEN line_level_setup_quals_cur(K.list_header_id,K.list_line_id,K.grouping_number);
13978 FETCH line_level_setup_quals_cur INTO l_setup_grp_count2;
13979 CLOSE line_level_setup_quals_cur;
13980
13981 l_setup_grp_count2 := l_setup_grp_count2 + l_setup_null_grp_cnt2;
13982 END IF;
13983
13984 -- Delete the no of quals where pl is a qualifier(for price lists only)
13985 OPEN line_level_setup_pl_quals_cur(K.list_header_id,K.list_line_id);
13986 FETCH line_level_setup_pl_quals_cur INTO v_price_list_count;
13987 CLOSE line_level_setup_pl_quals_cur;
13988
13989 l_setup_grp_count2 := l_setup_grp_count2 - v_price_list_count;
13990
13991 -- Init
13992 l_excluded_count :=0;
13993 --l_null_excl_count2 := 0;
13994
13995 -- Determine actual passed in count
13996 OPEN get_excluded_line_quals(k.line_index,k.list_header_id,k.list_line_id,k.grouping_number);
13997 FETCH get_excluded_line_quals into l_excluded_count;
13998 CLOSE get_excluded_line_quals;
13999
14000 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14001 engine_debug('Excluded Pure Line Level quals : '||l_excluded_count);
14002
14003 END IF;
14004 -- l_null_excl_count is applicable when NOT= is there on the NULL grouping number and that gets D_EXCL
14005 -- Then the actual passed in count will be other grp count(ex:grp no 1 ) +
14006 -- null_grp_count - l_null_excl_count
14007
14008 IF (k.grouping_number = -1 ) THEN
14009 l_null_excl_count2 := l_excluded_count;
14010 l_passed_in_cnt3 := l_passed_in_cnt3 - nvl(l_excluded_count,0);
14011 ELSE
14012 l_passed_in_cnt3 := l_passed_in_cnt3 - nvl(l_excluded_count,0) - nvl(l_null_excl_count2,0);
14013 END IF;
14014
14015 IF(l_passed_in_cnt3 >= l_setup_grp_count2) THEN
14016
14017 --check if this is a pure null grp, if no, and other
14018 --not null grps are not passed then delete them.
14019 --if yes, then approve this line (do nothing).
14020
14021 IF k.grouping_number = -1 THEN
14022 OPEN is_not_null_grp_exists(k.list_header_id,k.list_line_id);
14023 FETCH is_not_null_grp_exists into l_dummy;
14024 IF is_not_null_grp_exists%FOUND THEN
14025 --is not a pure null grp, then check if any other grp passed in
14026 OPEN is_not_null_grp_passed(k.line_index,k.list_line_id,k.list_header_id);
14027 FETCH is_not_null_grp_passed into l_dummy;
14028 IF is_not_null_grp_passed%NOTFOUND THEN
14029 --no other required grp passed
14030 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14031 engine_debug('Update #6');
14032 END IF;
14033 l_ind := l_ind+1;
14034 l_del_tbl(l_ind):= k.LINE_DETAIL_INDEX;
14035 END IF;
14036 CLOSE is_not_null_grp_passed;
14037 ELSE
14038 l_success_ind := l_success_ind+1;
14039 l_success_tbl(l_success_ind):= k.LINE_DETAIL_INDEX;
14040 END IF;
14041 CLOSE is_not_null_grp_exists;
14042 ELSE
14043 OPEN hdr_lvl_setup_quals_exist_cur(k.list_header_id);
14044 FETCH hdr_lvl_setup_quals_exist_cur into l_dummy;
14045 IF hdr_lvl_setup_quals_exist_cur%FOUND THEN
14046 OPEN header_level_quals_exist_cur(K.list_header_id,K.line_index);
14047 FETCH header_level_quals_exist_cur INTO l_dummy;
14048 --If in setup it has header level qualifier, it must fullfill the header grouping first
14049 --if this is the case, the pricing_status_code should have been updated by
14050 --previous header_level +/- line level check operation. It didn't get updated
14051 --that means no header level qualifier has passed in, hence we need to eliminate this
14052 --list line
14053 IF header_level_quals_exist_cur%NOTFOUND THEN
14054 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14055 engine_debug('--------------------------------------');
14056 engine_debug('Deleting list line id:'||K.list_line_id);
14057 engine_debug('Update #4');
14058 END IF;
14059 l_ind := l_ind+1;
14060 l_del_tbl(l_ind):= k.LINE_DETAIL_INDEX;
14061 ELSE
14062 l_success_ind := l_success_ind+1;
14063 l_success_tbl(l_success_ind):= k.LINE_DETAIL_INDEX;
14064 END IF;
14065 CLOSE header_level_quals_exist_cur;
14066 ELSE
14067 l_success_ind := l_success_ind+1;
14068 l_success_tbl(l_success_ind):= k.LINE_DETAIL_INDEX;
14069 END IF;
14070 CLOSE hdr_lvl_setup_quals_exist_cur;
14071 END IF;
14072
14073 ELSE -- Count did not match
14074 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14075 engine_debug ('Not successful on the Line Level Qualifiers Count Mismatch: ' || k.LIST_LINE_ID);
14076 engine_debug('The whole List Line is getting deleted');
14077 engine_debug('Update #5');
14078
14079 END IF;
14080 l_ind := l_ind+1;
14081 l_del_tbl(l_ind):= k.LINE_DETAIL_INDEX;
14082
14083 END IF;
14084 END LOOP; --end K loop
14085 l_status_text := '#4';
14086
14087 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14088 engine_debug('Deleted Line Details in Pure Line Grouping Table');
14089 END IF;
14090 FOR i in 1..l_del_tbl.count
14091 LOOP
14092 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14093 engine_debug('Line Detail Index: ' || l_del_tbl(i));
14094 END IF;
14095 END LOOP;
14096
14097 IF l_del_tbl.FIRST IS NOT NULL THEN
14098 FORALL i in l_del_tbl.FIRST..l_del_tbl.LAST
14099 /*
14100 INDX,QP_PREQ_GRP.perform_grouping.upd3,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
14101 */
14102 UPDATE qp_npreq_ldets_tmp --upd3
14103 SET PRICING_STATUS_CODE = G_DELETED_GRP,
14104 PRICING_STATUS_TEXT = 'Deleted in pure line grouping'
14105 WHERE line_detail_index = l_del_tbl(i);
14106
14107 /* FORALL i in l_del_tbl.FIRST..l_del_tbl.LAST
14108 UPDATE qp_npreq_line_attrs_tmp
14109 SET PRICING_STATUS_CODE = G_DELETED_GRP,
14110 PRICING_STATUS_TEXT = 'Deleted in pure line grouping'
14111 WHERE line_detail_index = l_del_tbl(i)
14112 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE; */
14113
14114 END IF;
14115
14116 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14117 engine_debug('Successful Line Details in Pure Line Grouping Table');
14118 END IF;
14119 FOR i in 1..l_success_tbl.count
14120 LOOP
14121 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14122 engine_debug('Line Detail Index: ' || l_success_tbl(i));
14123 END IF;
14124 END LOOP;
14125
14126 IF l_success_tbl.FIRST IS NOT NULL THEN
14127 FORALL i in l_success_tbl.FIRST..l_success_tbl.LAST
14128 /*
14129 INDX,QP_PREQ_GRP.perform_grouping.upd4,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
14130 */
14131 UPDATE qp_npreq_ldets_tmp --upd4
14132 SET PRICING_STATUS_CODE = G_STATUS_NEW
14133 WHERE line_detail_index = l_success_tbl(i);
14134
14135 /* FORALL i in l_success_tbl.FIRST..l_success_tbl.LAST
14136 UPDATE qp_npreq_line_attrs_tmp
14137 SET PRICING_STATUS_CODE = G_STATUS_NEW
14138 WHERE line_detail_index = l_success_tbl(i)
14139 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE; */
14140
14141 END IF;
14142
14143 l_del_tbl.delete;
14144 l_success_tbl.delete;
14145 l_ind:=0;
14146 l_success_ind:=0;
14147
14148 END IF;
14149
14150 l_status_text := '#5';
14151 -- product grouping
14152
14153 OPEN product_level_attrs_cur;
14154
14155 LOOP
14156 G_LIST_HEADER_ID_TBL_G.delete;
14157 G_LIST_LINE_ID_TBL_G.delete;
14158 G_LINE_INDEX_TBL_G.delete;
14159 G_NO_OF_PATTS_IN_GRP_TBL_G.delete;
14160
14161 FETCH product_level_attrs_cur BULK COLLECT INTO
14162 G_LIST_HEADER_ID_TBL_G
14163 , G_LIST_LINE_ID_TBL_G
14164 , G_LINE_INDEX_TBL_G
14165 , G_NO_OF_PATTS_IN_GRP_TBL_G LIMIT nROWS;
14166 EXIT WHEN G_LINE_INDEX_TBL_G.COUNT = 0;
14167
14168 IF (G_LINE_INDEX_TBL_G.COUNT > 0) THEN
14169 FOR I in G_LINE_INDEX_TBL_G.FIRST .. G_LINE_INDEX_TBL_G.LAST
14170 LOOP
14171 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14172 engine_debug('Went into product grouping');
14173
14174 END IF;
14175 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));
14176 FETCH get_excluded_prods_between INTO l_excl_prod_count;
14177 CLOSE get_excluded_prods_between;
14178
14179 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14180 engine_debug('Product list line id:'||G_LIST_LINE_ID_TBL_G(I));
14181 engine_debug('Product Between Exclude Count:'||l_excl_prod_count);
14182
14183 END IF;
14184 -- If this line already got deleted as part of between , then delete this line
14185 IF (l_excl_prod_count > 0 ) THEN
14186 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14187 engine_debug('Getting Deleted in Product Grouping');
14188
14189 END IF;
14190 /*
14191 INDX,QP_PREQ_GRP.perform_grouping.upd5,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
14192 INDX,QP_PREQ_GRP.perform_grouping.upd5,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,2
14193 INDX,QP_PREQ_GRP.perform_grouping.upd5,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,3
14194 INDX,QP_PREQ_GRP.perform_grouping.upd5,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_HEADER_ID,4
14195 INDX,QP_PREQ_GRP.perform_grouping.upd5,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_LINE_ID,5
14196 */
14197 UPDATE qp_npreq_ldets_tmp --upd5
14198 SET PRICING_STATUS_CODE = G_DELETED_GRP
14199 WHERE PRICING_PHASE_ID = p_pricing_phase_id
14200 AND PRICING_STATUS_CODE = G_STATUS_NEW
14201 AND CREATED_FROM_LIST_HEADER_ID = G_LIST_HEADER_ID_TBL_G(I)
14202 AND CREATED_FROM_LIST_LINE_ID = G_LIST_LINE_ID_TBL_G(I)
14203 AND LINE_INDEX = G_LINE_INDEX_TBL_G(I);
14204
14205 /* UPDATE qp_npreq_ldets_tmp
14206 SET PRICING_STATUS_CODE = G_DELETED_GRP
14207 WHERE CREATED_FROM_LIST_LINE_ID = G_LIST_LINE_ID_TBL_G(I)
14208 AND LINE_INDEX = G_LINE_INDEX_TBL_G(I); */
14209
14210 /* UPDATE qp_npreq_line_attrs_tmp
14211 SET PRICING_STATUS_CODE = G_DELETED_GRP
14212 WHERE LIST_LINE_ID = G_LIST_LINE_ID_TBL_G(I)
14213 AND LINE_INDEX = G_LINE_INDEX_TBL_G(I); */
14214
14215 ELSE
14216 FOR j IN product_level_setup_attrs_cur(G_LIST_LINE_ID_TBL_G(I))
14217 LOOP
14218
14219 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14220 engine_debug('product level attrs no '||g_no_of_patts_in_grp_tbl_g(I));
14221 engine_debug('product level set up attrs no '||j.no_of_patts_in_grp);
14222
14223 END IF;
14224 IF (G_NO_OF_PATTS_IN_GRP_TBL_G(I) = j.NO_OF_PATTS_IN_GRP) THEN
14225 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14226 engine_debug ('Successful on the product grouping: ' || G_LIST_LINE_ID_TBL_G(I));
14227 END IF;
14228 ELSE
14229 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14230 engine_debug('Getting Deleted in Product Grouping');
14231 END IF;
14232 /*
14233 INDX,QP_PREQ_GRP.perform_grouping.upd6,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
14234 INDX,QP_PREQ_GRP.perform_grouping.upd6,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,2
14235 INDX,QP_PREQ_GRP.perform_grouping.upd6,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,3
14236 INDX,QP_PREQ_GRP.perform_grouping.upd6,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_HEADER_ID,4
14237 INDX,QP_PREQ_GRP.perform_grouping.upd6,qp_npreq_ldets_tmp_N1,CREATED_FROM_LIST_LINE_ID,5
14238 */
14239 UPDATE qp_npreq_ldets_tmp --upd6
14240 SET PRICING_STATUS_CODE = G_DELETED_GRP
14241 WHERE PRICING_PHASE_ID = p_pricing_phase_id
14242 AND PRICING_STATUS_CODE = G_STATUS_NEW
14243 AND CREATED_FROM_LIST_HEADER_ID = G_LIST_HEADER_ID_TBL_G(I)
14244 AND CREATED_FROM_LIST_LINE_ID = G_LIST_LINE_ID_TBL_G(I)
14245 AND LINE_INDEX = G_LINE_INDEX_TBL_G(I);
14246
14247 /* UPDATE qp_npreq_ldets_tmp
14248 SET PRICING_STATUS_CODE = G_DELETED_GRP
14249 WHERE CREATED_FROM_LIST_LINE_ID = G_LIST_LINE_ID_TBL_G(I)
14250 AND LINE_INDEX = G_LINE_INDEX_TBL_G(I); */
14251
14252 /* UPDATE qp_npreq_line_attrs_tmp
14253 SET PRICING_STATUS_CODE = G_DELETED_GRP
14254 WHERE LIST_LINE_ID = G_LIST_LINE_ID_TBL_G(I)
14255 AND LINE_INDEX = G_LINE_INDEX_TBL_G(I); */
14256
14257 END IF;
14258 END LOOP;
14259 END IF;
14260 END LOOP;
14261 END IF;
14262
14263 END LOOP;
14264 CLOSE product_level_attrs_cur;
14265
14266 -- Update all the records with pricing_status_code= 'T' to 'N'
14267 /* UPDATE qp_npreq_line_attrs_tmp
14268 SET PRICING_STATUS_CODE = G_STATUS_NEW
14269 WHERE PRICING_STATUS_CODE = G_STATUS_NEW
14270 AND LINE_INDEX = nvl(p_line_index,LINE_INDEX);
14271
14272 --Update all the line details records with pricing_status_code = 'T' to 'N'
14273 UPDATE qp_npreq_ldets_tmp a
14274 SET PRICING_STATUS_CODE = G_STATUS_NEW
14275 WHERE PRICING_PHASE_ID = p_pricing_phase_id
14276 AND PRICING_STATUS_CODE = G_STATUS_NEW
14277 AND LINE_INDEX = nvl(p_line_index,LINE_INDEX); */
14278 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14279 engine_debug('grouping ends');
14280 END IF;
14281 qp_debug_util.tstop('PERFORM_GROUPING');
14282 EXCEPTION
14283 WHEN OTHERS THEN
14284 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14285 engine_debug(SQLERRM);
14286 END IF;
14287 x_status_code:= FND_API.G_RET_STS_ERROR;
14288 x_status_text:= 'In perform grouping '||SQLERRM||' '||l_status_text;
14289 END PERFORM_GROUPING;
14290
14291 /*+--------------------------------------------------------
14292 | PROCEDURE Update_Price_List_Information
14293 +--------------------------------------------------------
14294 */
14295
14296 PROCEDURE Update_Price_List_Information(
14297 p_freeze_override_flag IN VARCHAR2,
14298 x_status_code OUT NOCOPY VARCHAR2,
14299 x_status_text OUT NOCOPY VARCHAR2) AS
14300
14301 l_routine VARCHAR2(240):='QP_PREQ_GRP.Update_Price_List_Information';
14302
14303 BEGIN
14304
14305 --Update The Request Lines That Have
14306 --No List Header Passed , so that big search can look at it
14307 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14308 engine_debug ('In Procedure Update_Price_List_Information...');
14309 END IF;
14310 /*
14311 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel1,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
14312 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel1,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
14313 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel1,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
14314 */
14315 IF (G_PRICE_PHASE_FLAG = TRUE ) THEN -- Ravi
14316 UPDATE /*+ dynamic_sampling(1) */ qp_npreq_lines_tmp a
14317 SET processed_code = G_NO_LIST_PASSED,
14318 validated_flag = G_NO
14319 WHERE not exists (SELECT 'x'
14320 FROM qp_npreq_line_attrs_tmp b
14321 WHERE a.line_index = b.line_index
14322 AND b.context in (G_LIST_HEADER_CONTEXT,G_LIST_LINE_CONTEXT)
14323 AND b.attribute_type = G_QUALIFIER_TYPE
14324 AND b.pricing_status_code = G_STATUS_UNCHANGED)
14325 AND nvl(PROCESSED_CODE,'X') <> G_BY_ENGINE
14326 AND (price_flag = G_YES OR --[julin/4708044]
14327 (price_flag = G_PHASE AND p_freeze_override_flag = G_YES));
14328 END IF;
14329
14330 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14331 engine_debug ('after update1...');
14332 END IF;
14333
14334 /*
14335 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_upd3,qp_npreq_lines_tmp_N3,VALIDATED_FLAG,1
14336 */
14337 /*
14338 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel2,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
14339 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel2,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
14340 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel2,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
14341 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel2,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
14342 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel2,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
14343 */
14344
14345 IF (G_PRICE_PHASE_FLAG = TRUE ) THEN -- Ravi
14346
14347 --[julin/pricebook] added hint
14348 --[julin/5223502] price_list_header_id directly passed in via lines_tmp has precedence over sourced value
14349 UPDATE /*+ dynamic_sampling(1) */ qp_npreq_lines_tmp a
14350 SET (price_list_header_id,validated_flag) =
14351 (SELECT /*+ index(b QP_PREQ_LINE_ATTRS_TMP_N2) */ distinct
14352 CASE WHEN (a.PRICE_LIST_HEADER_ID < 0) THEN qp_number.canonical_to_number(value_from)
14353 ELSE a.PRICE_LIST_HEADER_ID
14354 END price_list_header_id,
14355 validated_flag
14356 FROM qp_npreq_line_attrs_tmp b
14357 WHERE a.line_index = b.line_index
14358 AND context = G_LIST_HEADER_CONTEXT
14359 AND attribute = G_PRICELIST_ATTRIBUTE
14360 AND attribute_type = G_QUALIFIER_TYPE
14361 AND pricing_status_code = G_STATUS_UNCHANGED); -- bug 3668963 - commented following 2 lines
14362 --AND a.PRICE_LIST_HEADER_ID < 0 )
14363 --WHERE a.PRICE_LIST_HEADER_ID < 0;
14364 END IF;
14365
14366 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14367 engine_debug ('after update2');
14368 END IF;
14369
14370 -- To clear the unit_price if the call is from public API
14371 IF (G_PUBLIC_API_CALL_FLAG = G_YES) THEN
14372 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14373 engine_debug('Call from Public API , Update_Price_List_Information');
14374 END IF;
14375 IF (G_PRICE_PHASE_FLAG = TRUE AND G_MANUAL_ADJUSTMENTS_CALL_FLAG = G_NO) THEN
14376 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14377 engine_debug('Trying to Update Unit Price To Null');
14378 END IF;
14379 UPDATE qp_npreq_lines_tmp a
14380 SET unit_price = NULL
14381 WHERE (price_flag = G_YES
14382 OR
14383 (price_flag = G_PHASE
14384 AND p_freeze_override_flag = G_YES))
14385 AND line_type_code <> G_ORDER_LEVEL
14386 AND list_price_override_flag = 'N';
14387 END IF;
14388 END IF;
14389
14390 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14391 engine_debug ('after update3');
14392 END IF;
14393
14394 /*
14395 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_upd4,qp_npreq_lines_tmp_N3,VALIDATED_FLAG,1
14396 */
14397 /*
14398 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel3,QP_QUALIFIERS_N7,QUALIFIER_CONTEXT,1
14399 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel3,QP_QUALIFIERS_N7,QUALIFIER_ATTRIBUTE,2
14400 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel3,QP_QUALIFIERS_N7,LIST_HEADER_ID,3
14401 */
14402 IF (G_PRICE_PHASE_FLAG = TRUE) THEN -- Ravi,
14403 UPDATE qp_npreq_lines_tmp a
14404 SET qualifiers_exist_flag = G_YES
14405 WHERE price_list_header_id IS NOT NULL
14406 AND validated_flag = G_NO
14407 AND EXISTS (SELECT 'x'
14408 FROM QP_QUALIFIERS
14409 WHERE LIST_HEADER_ID = a.PRICE_LIST_HEADER_ID
14410 AND QUALIFIER_CONTEXT <> 'MODLIST'
14411 AND QUALIFIER_ATTRIBUTE <> 'QUALIFIER_ATTRIBUTE4'
14412 AND ROWNUM = 1);
14413 /*
14414 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel4,QP_PRICING_ATTRIBUTES_N6,LIST_HEADER_ID,1
14415 INDX,QP_PREQ_GRP.update_price_list_information.update_price_list_information_sel4,QP_PRICING_ATTRIBUTES_N6,QUALIFICATION_IND,2
14416 */
14417
14418 UPDATE qp_npreq_lines_tmp a
14419 SET pricing_attrs_exist_flag = G_YES
14420 WHERE price_list_header_id IS NOT NULL
14421 AND EXISTS
14422 (SELECT 'x'
14423 FROM QP_PRICING_ATTRIBUTES
14424 WHERE LIST_HEADER_ID = a.PRICE_LIST_HEADER_ID
14425 AND QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_PRIC_IND)
14426 AND ROWNUM = 1) ;
14427 END IF;
14428 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14429 engine_debug ('after update4');
14430 END IF;
14431
14432 EXCEPTION
14433
14434 WHEN OTHERS THEN
14435 x_status_code:= FND_API.G_RET_STS_ERROR;
14436 x_status_text:= 'QP_PREQ_GRP.Update_Price_List_Information: '||SQLERRM;
14437 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14438 engine_debug(l_routine||' '||SQLERRM);
14439 END IF;
14440
14441 END Update_Price_List_Information;
14442
14443 /*+--------------------------------------------------------
14444 | PROCEDURE Update_Sec_Price_List_Info
14445 +--------------------------------------------------------
14446 */
14447 PROCEDURE Update_Sec_Price_List_Info( x_status_code OUT NOCOPY VARCHAR2,
14448 x_status_text OUT NOCOPY VARCHAR2) AS
14449
14450 l_routine VARCHAR2(240):='QP_PREQ_GRP.Update_Sec_Price_List_Info';
14451 BEGIN
14452
14453 /*
14454 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_upd1,-No Index Used-,NA,NA
14455 */
14456 /*
14457 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel1,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
14458
14459 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
14460 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
14461 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel1,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
14462 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
14463 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel1,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
14464 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel1,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
14465 */
14466 UPDATE qp_npreq_lines_tmp c
14467 SET primary_qualifiers_match_flag = 'Y'
14468 WHERE EXISTS(
14469 SELECT 'x'
14470 FROM QP_QUALIFIERS a,
14471 qp_npreq_line_attrs_tmp b
14472 WHERE b.CONTEXT = a.QUALIFIER_CONTEXT
14473 AND b.ATTRIBUTE = a.QUALIFIER_ATTRIBUTE
14474 AND b.VALUE_FROM = a.QUALIFIER_ATTR_VALUE
14475 AND b.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
14476 AND a.COMPARISON_OPERATOR_CODE = '='
14477 AND b.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
14478 AND trunc(c.pricing_effective_date) BETWEEN trunc(NVL(a.START_DATE_ACTIVE, c.pricing_effective_date))
14479 AND trunc(NVL(a.END_DATE_ACTIVE,c.pricing_effective_date))
14480 AND a.LIST_HEADER_ID = c.PRICE_LIST_HEADER_ID
14481 AND a.ACTIVE_FLAG = G_YES
14482 AND b.LINE_INDEX = c.LINE_INDEX
14483 AND c.VALIDATED_FLAG = G_NO)
14484 AND c.VALIDATED_FLAG = G_NO;
14485
14486 /*
14487 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_upd2,-No Index Used-,NA,NA
14488 */
14489 /*
14490 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel2,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
14491 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel2,QP_QUALIFIERS_N1,COMPARISON_OPERATOR_CODE,4
14492
14493 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
14494 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel2,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
14495 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel2,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
14496 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel2,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
14497 INDX,QP_PREQ_GRP.update_sec_price_list_info.update_sec_price_list_info_sel2,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
14498 */
14499 UPDATE qp_npreq_lines_tmp c
14500 SET primary_qualifiers_match_flag = 'Y'
14501 WHERE EXISTS(
14502 SELECT 'x'
14503 FROM qp_npreq_line_attrs_tmp b ,QP_QUALIFIERS a
14504 WHERE b.CONTEXT = a.QUALIFIER_CONTEXT
14505 AND b.ATTRIBUTE = a.QUALIFIER_ATTRIBUTE
14506 AND a.COMPARISON_OPERATOR_CODE = 'BETWEEN'
14507 AND b.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
14508 AND b.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
14509 AND trunc(c.pricing_effective_date) BETWEEN NVL(a.START_DATE_ACTIVE, trunc(c.pricing_effective_date))
14510 AND NVL(a.END_DATE_ACTIVE,trunc(c.pricing_effective_date))
14511 AND a.LIST_HEADER_ID = c.PRICE_LIST_HEADER_ID
14512 AND a.ACTIVE_FLAG = G_YES
14513 AND b.LINE_INDEX = c.LINE_INDEX
14514 AND c.VALIDATED_FLAG = G_NO)
14515 AND c.VALIDATED_FLAG = G_NO ;
14516
14517 UPDATE qp_npreq_lines_tmp c
14518 SET primary_qualifiers_match_flag = 'Y'
14519 WHERE EXISTS(
14520 SELECT 'x'
14521 FROM qp_npreq_line_attrs_tmp b ,QP_QUALIFIERS a
14522 WHERE b.CONTEXT = a.QUALIFIER_CONTEXT
14523 AND b.ATTRIBUTE = a.QUALIFIER_ATTRIBUTE
14524 AND b.VALUE_FROM <> a.QUALIFIER_ATTR_VALUE
14525 AND a.COMPARISON_OPERATOR_CODE = 'NOT ='
14526 AND b.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
14527 AND b.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
14528 AND trunc(c.pricing_effective_date) BETWEEN NVL(a.START_DATE_ACTIVE, trunc(c.pricing_effective_date))
14529 AND NVL(a.END_DATE_ACTIVE,trunc(c.pricing_effective_date))
14530 AND a.LIST_HEADER_ID = c.PRICE_LIST_HEADER_ID
14531 AND a.ACTIVE_FLAG = G_YES
14532 AND b.LINE_INDEX = c.LINE_INDEX
14533 AND c.VALIDATED_FLAG = G_NO)
14534 AND c.VALIDATED_FLAG = G_NO ;
14535
14536 EXCEPTION
14537 WHEN OTHERS THEN
14538 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
14539 engine_debug(l_routine||' '||SQLERRM);
14540 END IF;
14541 x_status_code := FND_API.G_RET_STS_ERROR;
14542 x_status_text := 'Error in '||l_routine||SQLERRM;
14543 END Update_Sec_Price_List_Info;
14544
14545 /*+--------------------------------------------------------
14546 | PROCEDURE Perform_Secondary_Search
14547 +--------------------------------------------------------
14548 */
14549
14550 PROCEDURE Perform_Secondary_Search(P_FREEZE_OVERRIDE_FLAG VARCHAR2,
14551 p_control_rec CONTROL_RECORD_TYPE,
14552 x_status_code OUT NOCOPY VARCHAR2,
14553 x_status_text OUT NOCOPY VARCHAR2)
14554 AS
14555
14556 /*
14557 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_QUALIFIERS_N4,QUALIFIER_CONTEXT,1
14558 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_QUALIFIERS_N4,QUALIFIER_ATTRIBUTE,2
14559 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_QUALIFIERS_N4,QUALIFIER_ATTR_VALUE,3
14560
14561 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
14562 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
14563 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
14564 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
14565 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
14566 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
14567
14568 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
14569 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
14570 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
14571 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
14572 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
14573 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,EXCLUDER_FLAG,6
14574 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,LIST_HEADER_ID,7
14575 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICING_ATTRIBUTES_N5,LIST_LINE_ID,8
14576
14577 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
14578
14579 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
14580
14581 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
14582
14583 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_LIST_HEADERS_B_PK,LINE_TYPE_CODE,2
14584
14585 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
14586 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,QP_PRICE_REQ_SOURCES_PK,SOURCE_SYSTEM_CODE,2
14587
14588 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
14589 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
14590 INDX,QP_PREQ_GRP.perform_secondary_search.l_sec_list_cur,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
14591 */
14592 CURSOR L_SEC_LIST_CUR IS
14593 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 */
14594 QPLAT_PROD.LINE_INDEX,
14595 QPL.LIST_LINE_ID,
14596 QPL.ARITHMETIC_OPERATOR,
14597 QPL.OPERAND,
14598 QPL.PRICING_GROUP_SEQUENCE,
14599 QPL.LIST_LINE_TYPE_CODE,
14600 QPL.PRICING_PHASE_ID,
14601 QPL.AUTOMATIC_FLAG,
14602 QPL.INCOMPATIBILITY_GRP_CODE,
14603 QPL.PRICE_BY_FORMULA_ID,
14604 QPL.PRODUCT_PRECEDENCE,
14605 QPL.PRIMARY_UOM_FLAG,
14606 QPL.MODIFIER_LEVEL_CODE,
14607 QPL.LIST_LINE_NO,
14608 QPA.PRODUCT_UOM_CODE,
14609 QPA.EXCLUDER_FLAG,
14610 QPH.LIST_TYPE_CODE,
14611 QPH.ROUNDING_FACTOR,
14612 QPLAT_PROD.LINE_DETAIL_INDEX,
14613 QPH.LIST_HEADER_ID LIST_HEADER_ID,
14614 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
14615 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
14616 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
14617 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
14618 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
14619 QPLAT_PROD.APPLIED_FLAG,
14620 NULL PRODUCT_OPERATOR_TYPE,
14621 NULL PRICING_ATTRIBUTE_CONTEXT,
14622 NULL PRICING_ATTRIBUTE,
14623 NULL PRICING_ATTR_VALUE_FROM,
14624 NULL PRICING_SETUP_VALUE_FROM,
14625 NULL PRICING_SETUP_VALUE_TO,
14626 NULL PRICING_ATTRIBUTE_LEVEL,
14627 NULL PRICING_ATTRIBUTE_TYPE,
14628 NULL PRICING_OPERATOR_TYPE,
14629 NULL PRICING_ATTRIBUTE_DATATYPE,
14630 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
14631 NULL QUALIFIER_ATTRIBUTE,
14632 NULL QUALIFIER_ATTR_VALUE_FROM,
14633 NULL QUALIFIER_PRICING_ATTR_FLAG,
14634 to_number(NULL) QUALIFIER_GROUPING_NO,
14635 NULL QUALIFIER_DATATYPE,
14636 NULL SETUP_VALUE_FROM,
14637 NULL SETUP_VALUE_TO,
14638 NULL QUALIFIER_OPERATOR_TYPE,
14639 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE
14640 ,QPL.BREAK_UOM_CODE /* Proration */
14641 ,QPL.BREAK_UOM_CONTEXT /* Proration */
14642 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
14643 ,NULL QUALIFIER_TYPE -- 3863226
14644 ,QPLAT_PROD.DERIVED_QUALIFIER_FLAG -- Added for TCA
14645 FROM
14646 qp_npreq_lines_tmp QPLINES,
14647 QP_QUALIFIERS QPQ,
14648 qp_npreq_line_attrs_tmp QPLAT_PROD,
14649 QP_PRICING_ATTRIBUTES QPA,
14650 QP_LIST_LINES QPL,
14651 QP_LIST_HEADERS_B QPH,
14652 --QP_PRICE_REQ_SOURCES QPRS
14653 QP_PRICE_REQ_SOURCES_V QPRS /*yangli*/
14654 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
14655 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
14656 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
14657 AND QPQ.COMPARISON_OPERATOR_CODE = '='
14658 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
14659 AND QPQ.LIST_HEADER_ID = QPA.LIST_HEADER_ID
14660 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
14661 AND QPA.QUALIFICATION_IND IN ( QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_IND)
14662 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
14663 AND (QPLINES.PRICE_FLAG = G_YES
14664 OR
14665 (QPLINES.PRICE_FLAG = G_PHASE
14666 AND
14667 P_FREEZE_OVERRIDE_FLAG = G_YES))
14668 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
14669 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
14670 AND (QPLINES.VALIDATED_FLAG = G_YES
14671 OR
14672 ((QPLINES.VALIDATED_FLAG = G_NO AND
14673 QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES)
14674 OR
14675 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO) AND
14676 (G_QUALIFY_SECONDARY = G_NO
14677 OR
14678 QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_IND
14679 ))
14680 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
14681 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
14682 AND QPA.EXCLUDER_FLAG = G_NO
14683 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
14684 AND QPL.LIST_HEADER_ID = QPH.LIST_HEADER_ID
14685 --added for moac -- commented references to security profile
14686 --security will be built into qp_list_headers_b
14687 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
14688 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
14689 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
14690 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
14691 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14692 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14693 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
14694 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14695 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14696 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
14697 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
14698 -- OR
14699 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
14700 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
14701 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
14702 AND QPH.ACTIVE_FLAG = G_YES
14703 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
14704 AND QPQ.ACTIVE_FLAG = G_YES
14705 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
14706 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
14707 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
14708 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
14709 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
14710 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
14711 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
14712 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
14713 UNION ALL
14714 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 */
14715 QPLAT_PROD.LINE_INDEX,
14716 QPL.LIST_LINE_ID,
14717 QPL.ARITHMETIC_OPERATOR,
14718 QPL.OPERAND,
14719 QPL.PRICING_GROUP_SEQUENCE,
14720 QPL.LIST_LINE_TYPE_CODE,
14721 QPL.PRICING_PHASE_ID,
14722 QPL.AUTOMATIC_FLAG,
14723 QPL.INCOMPATIBILITY_GRP_CODE,
14724 QPL.PRICE_BY_FORMULA_ID,
14725 QPL.PRODUCT_PRECEDENCE,
14726 QPL.PRIMARY_UOM_FLAG,
14727 QPL.MODIFIER_LEVEL_CODE,
14728 QPL.LIST_LINE_NO,
14729 QPA.PRODUCT_UOM_CODE,
14730 QPA.EXCLUDER_FLAG,
14731 QPH.LIST_TYPE_CODE,
14732 QPH.ROUNDING_FACTOR,
14733 QPLAT_PROD.LINE_DETAIL_INDEX,
14734 QPH.LIST_HEADER_ID LIST_HEADER_ID,
14735 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
14736 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
14737 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
14738 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
14739 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
14740 QPLAT_PROD.APPLIED_FLAG,
14741 NULL PRODUCT_OPERATOR_TYPE,
14742 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
14743 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
14744 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
14745 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
14746 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
14747 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
14748 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
14749 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
14750 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
14751 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
14752 NULL QUALIFIER_ATTRIBUTE,
14753 NULL QUALIFIER_ATTR_VALUE_FROM,
14754 NULL QUALIFIER_PRICING_ATTR_FLAG,
14755 to_number(NULL) QUALIFIER_GROUPING_NO,
14756 NULL QUALIFIER_DATATYPE,
14757 NULL SETUP_VALUE_FROM,
14758 NULL SETUP_VALUE_TO,
14759 NULL QUALIFIER_OPERATOR_TYPE,
14760 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE
14761 ,QPL.BREAK_UOM_CODE /* Proration */
14762 ,QPL.BREAK_UOM_CONTEXT /* Proration */
14763 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
14764 ,NULL QUALIFIER_TYPE -- 3863226
14765 ,QPLAT_PRIC.DERIVED_QUALIFIER_FLAG -- Added for TCA
14766 FROM
14767 qp_npreq_lines_tmp qplines,
14768 QP_QUALIFIERS qpq,
14769 qp_npreq_line_attrs_tmp qplat_prod,
14770 QP_PRICING_ATTRIBUTES qpa,
14771 qp_npreq_line_attrs_tmp qplat_pric,
14772 QP_LIST_LINES qpl,
14773 QP_LIST_HEADERS_B qph,
14774 --QP_PRICE_REQ_SOURCES qprs
14775 QP_PRICE_REQ_SOURCES_V qprs /* yangli */
14776 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
14777 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
14778 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
14779 AND QPQ.COMPARISON_OPERATOR_CODE = '='
14780 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
14781 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
14782 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_PRIC_IND)
14783 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
14784 AND (QPLINES.PRICE_FLAG = G_YES
14785 OR
14786 (QPLINES.PRICE_FLAG = G_PHASE
14787 AND
14788 P_FREEZE_OVERRIDE_FLAG = G_YES))
14789 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
14790 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
14791 AND ((QPLINES.VALIDATED_FLAG = G_YES
14792 OR
14793 (QPLINES.VALIDATED_FLAG = G_NO AND
14794 QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES)
14795 OR
14796 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO) AND
14797 (G_QUALIFY_SECONDARY = G_NO
14798 OR
14799 QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
14800 ))
14801 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
14802 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
14803 AND QPA.EXCLUDER_FLAG = G_NO
14804 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
14805 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
14806 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
14807 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
14808 OR
14809 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
14810 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
14811 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
14812 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
14813 AND QPA.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
14814 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
14815 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
14816 --added for moac -- commented references to security profile
14817 --security will be built into qp_list_headers_b
14818 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
14819 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
14820 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
14821 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
14822 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14823 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14824 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
14825 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14826 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14827 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
14828 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
14829 -- OR
14830 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
14831 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
14832 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
14833 AND QPH.ACTIVE_FLAG = G_YES
14834 AND QPQ.ACTIVE_FLAG = G_YES
14835 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
14836 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
14837 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
14838 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
14839 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
14840 UNION ALL
14841 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 */
14842 QPLAT_PROD.LINE_INDEX,
14843 QPL.LIST_LINE_ID,
14844 QPL.ARITHMETIC_OPERATOR,
14845 QPL.OPERAND,
14846 QPL.PRICING_GROUP_SEQUENCE,
14847 QPL.LIST_LINE_TYPE_CODE,
14848 QPL.PRICING_PHASE_ID,
14849 QPL.AUTOMATIC_FLAG,
14850 QPL.INCOMPATIBILITY_GRP_CODE,
14851 QPL.PRICE_BY_FORMULA_ID,
14852 QPL.PRODUCT_PRECEDENCE,
14853 QPL.PRIMARY_UOM_FLAG,
14854 QPL.MODIFIER_LEVEL_CODE,
14855 QPL.LIST_LINE_NO,
14856 QPA.PRODUCT_UOM_CODE,
14857 QPA.EXCLUDER_FLAG,
14858 QPH.LIST_TYPE_CODE,
14859 QPH.ROUNDING_FACTOR,
14860 QPLAT_PROD.LINE_DETAIL_INDEX,
14861 QPH.LIST_HEADER_ID LIST_HEADER_ID,
14862 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
14863 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
14864 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
14865 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
14866 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
14867 QPLAT_PROD.APPLIED_FLAG,
14868 NULL PRODUCT_OPERATOR_TYPE,
14869 NULL PRICING_ATTRIBUTE_CONTEXT,
14870 NULL PRICING_ATTRIBUTE,
14871 NULL PRICING_ATTR_VALUE_FROM,
14872 NULL PRICING_SETUP_VALUE_FROM,
14873 NULL PRICING_SETUP_VALUE_TO,
14874 NULL PRICING_ATTRIBUTE_LEVEL,
14875 NULL PRICING_ATTRIBUTE_TYPE,
14876 NULL PRICING_OPERATOR_TYPE,
14877 NULL PRICING_ATTRIBUTE_DATATYPE,
14878 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
14879 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
14880 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
14881 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
14882 QPSQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
14883 QPSQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
14884 QPSQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
14885 QPSQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
14886 QPSQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
14887 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE
14888 ,QPL.BREAK_UOM_CODE /* Proration */
14889 ,QPL.BREAK_UOM_CONTEXT /* Proration */
14890 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
14891 ,DECODE(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE -- 3863226
14892 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
14893 FROM
14894 qp_npreq_lines_tmp QPLINES,
14895 QP_QUALIFIERS QPQ,
14896 QP_QUALIFIERS QPSQ,
14897 qp_npreq_line_attrs_tmp QPLAT_PROD,
14898 qp_npreq_line_attrs_tmp QPLAT_Q,
14899 QP_PRICING_ATTRIBUTES QPA,
14900 QP_LIST_LINES QPL,
14901 QP_LIST_HEADERS_B QPH,
14902 --QP_PRICE_REQ_SOURCES QPRS
14903 QP_PRICE_REQ_SOURCES_V QPRS /*yangli*/
14904 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
14905 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
14906 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
14907 AND QPQ.COMPARISON_OPERATOR_CODE = '='
14908 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
14909 AND QPQ.LIST_HEADER_ID = QPA.LIST_HEADER_ID
14910 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
14911 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
14912 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
14913 AND (QPLINES.PRICE_FLAG = G_YES
14914 OR
14915 (QPLINES.PRICE_FLAG = G_PHASE
14916 AND
14917 P_FREEZE_OVERRIDE_FLAG = G_YES))
14918 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
14919 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
14920 AND QPLINES.VALIDATED_FLAG = G_NO
14921 AND (QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES
14922 OR
14923 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
14924 )
14925 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
14926 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
14927 AND QPA.EXCLUDER_FLAG = G_NO
14928 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
14929 AND QPL.LIST_HEADER_ID = QPH.LIST_HEADER_ID
14930 --added for moac -- commented references to security profile
14931 --security will be built into qp_list_headers_b
14932 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
14933 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
14934 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
14935 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
14936 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14937 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14938 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
14939 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14940 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
14941 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
14942 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
14943 -- OR
14944 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
14945 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
14946 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
14947 AND QPH.ACTIVE_FLAG = G_YES
14948 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
14949 AND QPQ.ACTIVE_FLAG = G_YES
14950 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
14951 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
14952 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
14953 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
14954 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
14955 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
14956 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
14957 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
14958 -- 3594459, context and attribute OR'd together
14959 AND (QPSQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
14960 OR QPSQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
14961 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
14962 AND QPLAT_Q.CONTEXT = QPSQ.QUALIFIER_CONTEXT
14963 AND QPLAT_Q.ATTRIBUTE = QPSQ.QUALIFIER_ATTRIBUTE
14964 AND QPSQ.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
14965 AND QPSQ.ACTIVE_FLAG = G_YES
14966 AND ((QPLAT_Q.VALUE_FROM = QPSQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
14967 AND QPSQ.COMPARISON_OPERATOR_CODE = '=')
14968 OR (QPLAT_Q.VALUE_FROM <> QPSQ.QUALIFIER_ATTR_VALUE
14969 AND QPSQ.COMPARISON_OPERATOR_CODE = 'NOT =')
14970 OR
14971 QPSQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
14972 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
14973 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
14974 NVL(QPSQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
14975 AND NVL(QPSQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
14976 AND QPLAT_PROD.LINE_INDEX = QPLAT_Q.LINE_INDEX
14977 AND QPLAT_Q. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
14978 AND G_QUALIFY_SECONDARY = G_YES
14979 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
14980 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPSQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
14981 UNION ALL
14982 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 */
14983 QPLAT_PROD.LINE_INDEX,
14984 QPL.LIST_LINE_ID,
14985 QPL.ARITHMETIC_OPERATOR,
14986 QPL.OPERAND,
14987 QPL.PRICING_GROUP_SEQUENCE,
14988 QPL.LIST_LINE_TYPE_CODE,
14989 QPL.PRICING_PHASE_ID,
14990 QPL.AUTOMATIC_FLAG,
14991 QPL.INCOMPATIBILITY_GRP_CODE,
14992 QPL.PRICE_BY_FORMULA_ID,
14993 QPL.PRODUCT_PRECEDENCE,
14994 QPL.PRIMARY_UOM_FLAG,
14995 QPL.MODIFIER_LEVEL_CODE,
14996 QPL.LIST_LINE_NO,
14997 QPA.PRODUCT_UOM_CODE,
14998 QPA.EXCLUDER_FLAG,
14999 QPH.LIST_TYPE_CODE,
15000 QPH.ROUNDING_FACTOR,
15001 QPLAT_PROD.LINE_DETAIL_INDEX,
15002 QPH.LIST_HEADER_ID LIST_HEADER_ID,
15003 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
15004 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
15005 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
15006 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
15007 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
15008 QPLAT_PROD.APPLIED_FLAG,
15009 NULL PRODUCT_OPERATOR_TYPE,
15010 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
15011 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
15012 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
15013 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
15014 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
15015 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
15016 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
15017 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
15018 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
15019 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
15020 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
15021 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
15022 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
15023 QPSQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
15024 QPSQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
15025 QPSQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
15026 QPSQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
15027 QPSQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
15028 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE
15029 ,QPL.BREAK_UOM_CODE /* Proration */
15030 ,QPL.BREAK_UOM_CONTEXT /* Proration */
15031 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
15032 ,DECODE(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE -- 3863226
15033 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
15034 FROM
15035 qp_npreq_lines_tmp qplines,
15036 QP_QUALIFIERS qpq,
15037 QP_QUALIFIERS qpsq,
15038 qp_npreq_line_attrs_tmp qplat_prod,
15039 QP_PRICING_ATTRIBUTES qpa,
15040 qp_npreq_line_attrs_tmp qplat_pric,
15041 qp_npreq_line_attrs_tmp qplat_q,
15042 QP_LIST_LINES qpl,
15043 QP_LIST_HEADERS_B qph,
15044 --QP_PRICE_REQ_SOURCES qprs
15045 QP_PRICE_REQ_SOURCES_V qprs /* yangli */
15046 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
15047 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
15048 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
15049 AND QPQ.COMPARISON_OPERATOR_CODE = '='
15050 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
15051 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15052 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
15053 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
15054 AND (QPLINES.PRICE_FLAG = G_YES
15055 OR
15056 (QPLINES.PRICE_FLAG = G_PHASE
15057 AND
15058 P_FREEZE_OVERRIDE_FLAG = G_YES))
15059 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
15060 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
15061 AND QPLINES.VALIDATED_FLAG = G_NO
15062 AND (QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES
15063 OR
15064 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
15065 )
15066 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
15067 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
15068 AND QPA.EXCLUDER_FLAG = G_NO
15069 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15070 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
15071 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
15072 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
15073 OR
15074 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
15075 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
15076 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15077 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
15078 AND QPA.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
15079 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
15080 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
15081 --added for moac -- commented references to security profile
15082 --security will be built into qp_list_headers_b
15083 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
15084 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
15085 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
15086 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15087 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15088 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15089 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15090 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15091 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15092 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
15093 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
15094 -- OR
15095 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
15096 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
15097 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
15098 AND QPH.ACTIVE_FLAG = G_YES
15099 AND QPQ.ACTIVE_FLAG = G_YES
15100 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
15101 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
15102 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
15103 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15104 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
15105 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
15106 -- 3594459, context and attribute OR'd together
15107 AND (QPSQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
15108 OR QPSQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
15109 AND QPLAT_Q.CONTEXT = QPSQ.QUALIFIER_CONTEXT
15110 AND QPLAT_Q.ATTRIBUTE = QPSQ.QUALIFIER_ATTRIBUTE
15111 AND QPSQ.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
15112 AND QPSQ.ACTIVE_FLAG = G_YES
15113 AND ((QPLAT_Q.VALUE_FROM = QPSQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
15114 AND QPSQ.COMPARISON_OPERATOR_CODE = '=')
15115 OR (QPLAT_Q.VALUE_FROM <> QPSQ.QUALIFIER_ATTR_VALUE
15116 AND QPSQ.COMPARISON_OPERATOR_CODE = 'NOT =')
15117 OR
15118 QPSQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
15119 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
15120 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15121 NVL(QPSQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
15122 AND NVL(QPSQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
15123 AND QPLAT_PROD.LINE_INDEX = QPLAT_Q.LINE_INDEX
15124 AND QPLAT_Q. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15125 AND G_QUALIFY_SECONDARY = G_YES
15126 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
15127 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPSQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
15128 ORDER BY 1,2;
15129
15130 -- vivek
15131 --[julin/4865213] using qp_list_headers_b_n7 instead of qp_list_headers_b_n2
15132 CURSOR L_SEC_LIST_CUR_CURRENCY IS
15133 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 */
15134 QPLAT_PROD.LINE_INDEX,
15135 QPL.LIST_LINE_ID,
15136 QPL.ARITHMETIC_OPERATOR,
15137 QPL.OPERAND,
15138 QPL.PRICING_GROUP_SEQUENCE,
15139 QPL.LIST_LINE_TYPE_CODE,
15140 QPL.PRICING_PHASE_ID,
15141 QPL.AUTOMATIC_FLAG,
15142 QPL.INCOMPATIBILITY_GRP_CODE,
15143 QPL.PRICE_BY_FORMULA_ID,
15144 QPL.PRODUCT_PRECEDENCE,
15145 QPL.PRIMARY_UOM_FLAG,
15146 QPL.MODIFIER_LEVEL_CODE,
15147 QPL.LIST_LINE_NO,
15148 QPA.PRODUCT_UOM_CODE,
15149 QPA.EXCLUDER_FLAG,
15150 QPH.LIST_TYPE_CODE,
15151 /* vivek QPH.ROUNDING_FACTOR, */
15152 QCDT.ROUNDING_FACTOR, /* vivek */
15153 QPLAT_PROD.LINE_DETAIL_INDEX,
15154 QPH.LIST_HEADER_ID LIST_HEADER_ID,
15155 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
15156 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
15157 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
15158 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
15159 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
15160 QPLAT_PROD.APPLIED_FLAG,
15161 NULL PRODUCT_OPERATOR_TYPE,
15162 NULL PRICING_ATTRIBUTE_CONTEXT,
15163 NULL PRICING_ATTRIBUTE,
15164 NULL PRICING_ATTR_VALUE_FROM,
15165 NULL PRICING_SETUP_VALUE_FROM,
15166 NULL PRICING_SETUP_VALUE_TO,
15167 NULL PRICING_ATTRIBUTE_LEVEL,
15168 NULL PRICING_ATTRIBUTE_TYPE,
15169 NULL PRICING_OPERATOR_TYPE,
15170 NULL PRICING_ATTRIBUTE_DATATYPE,
15171 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
15172 NULL QUALIFIER_ATTRIBUTE,
15173 NULL QUALIFIER_ATTR_VALUE_FROM,
15174 NULL QUALIFIER_PRICING_ATTR_FLAG,
15175 to_number(NULL) QUALIFIER_GROUPING_NO,
15176 NULL QUALIFIER_DATATYPE,
15177 NULL SETUP_VALUE_FROM,
15178 NULL SETUP_VALUE_TO,
15179 NULL QUALIFIER_OPERATOR_TYPE,
15180 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
15181 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
15182 QCDT.CURRENCY_HEADER_ID, /* vivek */
15183 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
15184 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
15185 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
15186 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
15187 ,QPL.BREAK_UOM_CODE /* Proration */
15188 ,QPL.BREAK_UOM_CONTEXT /* Proration */
15189 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
15190 ,NULL QUALIFIER_TYPE -- 3863226
15191 ,QPLAT_PROD.DERIVED_QUALIFIER_FLAG -- Added for TCA
15192 FROM
15193 qp_npreq_lines_tmp QPLINES,
15194 QP_QUALIFIERS QPQ,
15195 qp_npreq_line_attrs_tmp QPLAT_PROD,
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 QP_CURRENCY_DETAILS QCDT /* Vivek */
15202 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
15203 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
15204 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
15205 AND QPQ.COMPARISON_OPERATOR_CODE = '='
15206 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
15207 AND QPQ.LIST_HEADER_ID = QPA.LIST_HEADER_ID
15208 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15209 AND QPA.QUALIFICATION_IND IN ( QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_IND)
15210 AND QPA.EXCLUDER_FLAG = G_NO
15211 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
15212 AND (QPLINES.PRICE_FLAG = G_YES
15213 OR
15214 (QPLINES.PRICE_FLAG = G_PHASE
15215 AND
15216 P_FREEZE_OVERRIDE_FLAG = G_YES))
15217 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
15218 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
15219 AND ((QPLINES.VALIDATED_FLAG = G_YES
15220 OR
15221 (QPLINES.VALIDATED_FLAG = G_NO AND
15222 QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES)
15223 OR
15224 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO) AND
15225 (G_QUALIFY_SECONDARY = G_NO
15226 OR
15227 QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_IND
15228 ))
15229 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
15230 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
15231 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
15232 AND QPL.LIST_HEADER_ID = QPH.LIST_HEADER_ID
15233 --added for moac -- commented references to security profile
15234 --security will be built into qp_list_headers_b
15235 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
15236 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
15237 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
15238 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15239 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15240 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15241 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15242 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15243 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15244 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
15245 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
15246 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
15247 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15248 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15249 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15250 AND ( /* Vivek */
15251 (qcdt.curr_attribute_context is null /* Vivek */
15252 and not exists /* Vivek */
15253 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
15254 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
15255 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
15256 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
15257 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
15258 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
15259 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
15260 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
15261 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
15262 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
15263 and pa_tmp.line_index = qplines.line_index /* Vivek */
15264 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15265 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15266 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15267 ) /* Vivek */
15268 ) /* Vivek */
15269 OR /* Vivek */
15270 (qcdt.curr_attribute_context is not null /* Vivek */
15271 and qcdt.currency_detail_id = /* Vivek */
15272 (select qcdt3.currency_detail_id
15273 from qp_currency_details qcdt3 /* Vivek */
15274 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
15275 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
15276 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15277 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15278 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15279 and qcdt3.precedence =
15280 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
15281 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
15282 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
15283 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
15284 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
15285 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
15286 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
15287 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
15288 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
15289 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
15290 and pa_tmp1.line_index = qplines.line_index /* Vivek */
15291 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15292 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15293 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15294 )) /* Vivek */
15295 ) /* Vivek */
15296 ) /* Vivek */
15297 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
15298 -- OR
15299 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
15300 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
15301 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
15302 AND QPH.ACTIVE_FLAG = G_YES
15303 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
15304 AND QPQ.ACTIVE_FLAG = G_YES
15305 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15306 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
15307 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
15308 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
15309 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15310 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15311 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
15312 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
15313 UNION ALL
15314 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 */
15315 QPLAT_PROD.LINE_INDEX,
15316 QPL.LIST_LINE_ID,
15317 QPL.ARITHMETIC_OPERATOR,
15318 QPL.OPERAND,
15319 QPL.PRICING_GROUP_SEQUENCE,
15320 QPL.LIST_LINE_TYPE_CODE,
15321 QPL.PRICING_PHASE_ID,
15322 QPL.AUTOMATIC_FLAG,
15323 QPL.INCOMPATIBILITY_GRP_CODE,
15324 QPL.PRICE_BY_FORMULA_ID,
15325 QPL.PRODUCT_PRECEDENCE,
15326 QPL.PRIMARY_UOM_FLAG,
15327 QPL.MODIFIER_LEVEL_CODE,
15328 QPL.LIST_LINE_NO,
15329 QPA.PRODUCT_UOM_CODE,
15330 QPA.EXCLUDER_FLAG,
15331 QPH.LIST_TYPE_CODE,
15332 /* vivek QPH.ROUNDING_FACTOR, */
15333 QCDT.ROUNDING_FACTOR, /* vivek */
15334 QPLAT_PROD.LINE_DETAIL_INDEX,
15335 QPH.LIST_HEADER_ID LIST_HEADER_ID,
15336 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
15337 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
15338 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
15339 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
15340 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
15341 QPLAT_PROD.APPLIED_FLAG,
15342 NULL PRODUCT_OPERATOR_TYPE,
15343 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
15344 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
15345 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
15346 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
15347 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
15348 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
15349 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
15350 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
15351 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
15352 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
15353 NULL QUALIFIER_ATTRIBUTE,
15354 NULL QUALIFIER_ATTR_VALUE_FROM,
15355 NULL QUALIFIER_PRICING_ATTR_FLAG,
15356 to_number(NULL) QUALIFIER_GROUPING_NO,
15357 NULL QUALIFIER_DATATYPE,
15358 NULL SETUP_VALUE_FROM,
15359 NULL SETUP_VALUE_TO,
15360 NULL QUALIFIER_OPERATOR_TYPE,
15361 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
15362 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
15363 QCDT.CURRENCY_HEADER_ID, /* vivek */
15364 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
15365 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
15366 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
15367 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
15368 ,QPL.BREAK_UOM_CODE /* Proration */
15369 ,QPL.BREAK_UOM_CONTEXT /* Proration */
15370 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
15371 ,NULL QUALIFIER_TYPE -- 3863226
15372 ,QPLAT_PRIC.DERIVED_QUALIFIER_FLAG -- Added for TCA
15373 FROM
15374 qp_npreq_lines_tmp qplines,
15375 QP_QUALIFIERS qpq,
15376 qp_npreq_line_attrs_tmp qplat_prod,
15377 QP_PRICING_ATTRIBUTES qpa,
15378 qp_npreq_line_attrs_tmp qplat_pric,
15379 QP_LIST_LINES qpl,
15380 QP_LIST_HEADERS_B qph,
15381 --QP_PRICE_REQ_SOURCES qprs,
15382 QP_PRICE_REQ_SOURCES_V qprs, /* yangli */
15383 QP_CURRENCY_DETAILS QCDT /* Vivek */
15384 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
15385 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
15386 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
15387 AND QPQ.COMPARISON_OPERATOR_CODE = '='
15388 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
15389 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15390 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_PRIC_IND)
15391 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
15392 AND (QPLINES.PRICE_FLAG = G_YES
15393 OR
15394 (QPLINES.PRICE_FLAG = G_PHASE
15395 AND
15396 P_FREEZE_OVERRIDE_FLAG = G_YES))
15397 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
15398 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
15399 AND ((QPLINES.VALIDATED_FLAG = G_YES
15400 OR
15401 (QPLINES.VALIDATED_FLAG = G_NO AND
15402 QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES)
15403 OR
15404 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO) AND
15405 (G_QUALIFY_SECONDARY = G_NO
15406 OR
15407 QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
15408 ))
15409 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
15410 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
15411 AND QPA.EXCLUDER_FLAG = G_NO
15412 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15413 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
15414 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
15415 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
15416 OR
15417 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
15418 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
15419 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15420 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
15421 AND QPA.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
15422 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
15423 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
15424 --added for moac -- commented references to security profile
15425 --security will be built into qp_list_headers_b
15426 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
15427 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
15428 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
15429 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15430 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15431 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15432 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15433 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15434 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15435 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
15436 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
15437 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
15438 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15439 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15440 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15441 AND ( /* Vivek */
15442 (qcdt.curr_attribute_context is null /* Vivek */
15443 and not exists /* Vivek */
15444 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
15445 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
15446 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
15447 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
15448 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
15449 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
15450 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
15451 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
15452 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
15453 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
15454 and pa_tmp.line_index = qplines.line_index /* Vivek */
15455 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15456 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15457 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15458 ) /* Vivek */
15459 ) /* Vivek */
15460 OR /* Vivek */
15461 (qcdt.curr_attribute_context is not null /* Vivek */
15462 and qcdt.currency_detail_id = /* Vivek */
15463 (select qcdt3.currency_detail_id
15464 from qp_currency_details qcdt3 /* Vivek */
15465 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
15466 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
15467 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15468 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15469 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15470 and qcdt3.precedence =
15471 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
15472 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
15473 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
15474 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
15475 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
15476 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
15477 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
15478 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
15479 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
15480 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
15481 and pa_tmp1.line_index = qplines.line_index /* Vivek */
15482 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15483 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15484 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15485 )) /* Vivek */
15486 ) /* Vivek */
15487 ) /* Vivek */
15488 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
15489 -- OR
15490 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
15491 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
15492 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
15493 AND QPH.ACTIVE_FLAG = G_YES
15494 AND QPQ.ACTIVE_FLAG = G_YES
15495 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
15496 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
15497 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15498 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
15499 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
15500 UNION ALL
15501 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 */
15502 QPLAT_PROD.LINE_INDEX,
15503 QPL.LIST_LINE_ID,
15504 QPL.ARITHMETIC_OPERATOR,
15505 QPL.OPERAND,
15506 QPL.PRICING_GROUP_SEQUENCE,
15507 QPL.LIST_LINE_TYPE_CODE,
15508 QPL.PRICING_PHASE_ID,
15509 QPL.AUTOMATIC_FLAG,
15510 QPL.INCOMPATIBILITY_GRP_CODE,
15511 QPL.PRICE_BY_FORMULA_ID,
15512 QPL.PRODUCT_PRECEDENCE,
15513 QPL.PRIMARY_UOM_FLAG,
15514 QPL.MODIFIER_LEVEL_CODE,
15515 QPL.LIST_LINE_NO,
15516 QPA.PRODUCT_UOM_CODE,
15517 QPA.EXCLUDER_FLAG,
15518 QPH.LIST_TYPE_CODE,
15519 /* vivek QPH.ROUNDING_FACTOR, */
15520 QCDT.ROUNDING_FACTOR, /* vivek */
15521 QPLAT_PROD.LINE_DETAIL_INDEX,
15522 QPH.LIST_HEADER_ID LIST_HEADER_ID,
15523 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
15524 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
15525 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
15526 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
15527 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
15528 QPLAT_PROD.APPLIED_FLAG,
15529 NULL PRODUCT_OPERATOR_TYPE,
15530 NULL PRICING_ATTRIBUTE_CONTEXT,
15531 NULL PRICING_ATTRIBUTE,
15532 NULL PRICING_ATTR_VALUE_FROM,
15533 NULL PRICING_SETUP_VALUE_FROM,
15534 NULL PRICING_SETUP_VALUE_TO,
15535 NULL PRICING_ATTRIBUTE_LEVEL,
15536 NULL PRICING_ATTRIBUTE_TYPE,
15537 NULL PRICING_OPERATOR_TYPE,
15538 NULL PRICING_ATTRIBUTE_DATATYPE,
15539 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
15540 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
15541 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
15542 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
15543 QPSQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
15544 QPSQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
15545 QPSQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
15546 QPSQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
15547 QPSQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
15548 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
15549 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
15550 QCDT.CURRENCY_HEADER_ID, /* vivek */
15551 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
15552 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
15553 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
15554 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
15555 ,QPL.BREAK_UOM_CODE /* Proration */
15556 ,QPL.BREAK_UOM_CONTEXT /* Proration */
15557 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
15558 ,DECODE(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE --3863226
15559 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
15560 FROM
15561 qp_npreq_lines_tmp QPLINES,
15562 QP_QUALIFIERS QPQ,
15563 QP_QUALIFIERS QPSQ,
15564 qp_npreq_line_attrs_tmp QPLAT_PROD,
15565 qp_npreq_line_attrs_tmp QPLAT_Q,
15566 QP_PRICING_ATTRIBUTES QPA,
15567 QP_LIST_LINES QPL,
15568 QP_LIST_HEADERS_B QPH,
15569 --QP_PRICE_REQ_SOURCES QPRS,
15570 QP_PRICE_REQ_SOURCES_V QPRS, /* yangli */
15571 QP_CURRENCY_DETAILS QCDT /* Vivek */
15572 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
15573 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
15574 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
15575 AND QPQ.COMPARISON_OPERATOR_CODE = '='
15576 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
15577 AND QPQ.LIST_HEADER_ID = QPA.LIST_HEADER_ID
15578 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15579 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
15580 AND QPA.EXCLUDER_FLAG = G_NO
15581 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
15582 AND (QPLINES.PRICE_FLAG = G_YES
15583 OR
15584 (QPLINES.PRICE_FLAG = G_PHASE
15585 AND
15586 P_FREEZE_OVERRIDE_FLAG = G_YES))
15587 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
15588 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
15589 AND QPLINES.VALIDATED_FLAG = G_NO
15590 AND (QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES
15591 OR
15592 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
15593 )
15594 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
15595 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
15596 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
15597 AND QPL.LIST_HEADER_ID = QPH.LIST_HEADER_ID
15598 --added for moac -- commented references to security profile
15599 --security will be built into qp_list_headers_b
15600 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
15601 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
15602 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
15603 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15604 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15605 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15606 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15607 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15608 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15609 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
15610 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
15611 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
15612 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15613 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15614 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15615 AND ( /* Vivek */
15616 (qcdt.curr_attribute_context is null /* Vivek */
15617 and not exists /* Vivek */
15618 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
15619 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
15620 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
15621 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
15622 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
15623 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
15624 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
15625 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
15626 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
15627 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
15628 and pa_tmp.line_index = qplines.line_index /* Vivek */
15629 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15630 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15631 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15632 ) /* Vivek */
15633 ) /* Vivek */
15634 OR /* Vivek */
15635 (qcdt.curr_attribute_context is not null /* Vivek */
15636 and qcdt.currency_detail_id = /* Vivek */
15637 (select qcdt3.currency_detail_id
15638 from qp_currency_details qcdt3 /* Vivek */
15639 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
15640 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
15641 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15642 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15643 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15644 and qcdt3.precedence =
15645 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
15646 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
15647 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
15648 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
15649 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
15650 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
15651 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
15652 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
15653 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
15654 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
15655 and pa_tmp1.line_index = qplines.line_index /* Vivek */
15656 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15657 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15658 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15659 )) /* Vivek */
15660 ) /* Vivek */
15661 ) /* Vivek */
15662 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
15663 -- OR
15664 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
15665 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
15666 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
15667 AND QPH.ACTIVE_FLAG = G_YES
15668 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
15669 AND QPQ.ACTIVE_FLAG = G_YES
15670 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15671 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
15672 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
15673 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
15674 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15675 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15676 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
15677 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
15678 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
15679 -- 3594459, context and attribute OR'd together
15680 AND (QPSQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
15681 OR QPSQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
15682 AND QPLAT_Q.CONTEXT = QPSQ.QUALIFIER_CONTEXT
15683 AND QPLAT_Q.ATTRIBUTE = QPSQ.QUALIFIER_ATTRIBUTE
15684 AND QPSQ.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
15685 AND QPSQ.ACTIVE_FLAG = G_YES
15686 AND ((QPLAT_Q.VALUE_FROM = QPSQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
15687 AND QPSQ.COMPARISON_OPERATOR_CODE = '=')
15688 OR (QPLAT_Q.VALUE_FROM <> QPSQ.QUALIFIER_ATTR_VALUE
15689 AND QPSQ.COMPARISON_OPERATOR_CODE = 'NOT =')
15690 OR
15691 QPSQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
15692 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
15693 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15694 NVL(QPSQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
15695 AND NVL(QPSQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
15696 AND QPLAT_PROD.LINE_INDEX = QPLAT_Q.LINE_INDEX
15697 AND QPLAT_Q.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15698 AND G_QUALIFY_SECONDARY = G_YES
15699 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
15700 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPSQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
15701 UNION ALL
15702 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 */
15703 QPLAT_PROD.LINE_INDEX,
15704 QPL.LIST_LINE_ID,
15705 QPL.ARITHMETIC_OPERATOR,
15706 QPL.OPERAND,
15707 QPL.PRICING_GROUP_SEQUENCE,
15708 QPL.LIST_LINE_TYPE_CODE,
15709 QPL.PRICING_PHASE_ID,
15710 QPL.AUTOMATIC_FLAG,
15711 QPL.INCOMPATIBILITY_GRP_CODE,
15712 QPL.PRICE_BY_FORMULA_ID,
15713 QPL.PRODUCT_PRECEDENCE,
15714 QPL.PRIMARY_UOM_FLAG,
15715 QPL.MODIFIER_LEVEL_CODE,
15716 QPL.LIST_LINE_NO,
15717 QPA.PRODUCT_UOM_CODE,
15718 QPA.EXCLUDER_FLAG,
15719 QPH.LIST_TYPE_CODE,
15720 /* vivek QPH.ROUNDING_FACTOR, */
15721 QCDT.ROUNDING_FACTOR, /* vivek */
15722 QPLAT_PROD.LINE_DETAIL_INDEX,
15723 QPH.LIST_HEADER_ID LIST_HEADER_ID,
15724 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
15725 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
15726 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
15727 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
15728 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
15729 QPLAT_PROD.APPLIED_FLAG,
15730 NULL PRODUCT_OPERATOR_TYPE,
15731 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
15732 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
15733 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
15734 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
15735 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
15736 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
15737 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
15738 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
15739 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
15740 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
15741 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
15742 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
15743 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
15744 QPSQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
15745 QPSQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
15746 QPSQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
15747 QPSQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
15748 QPSQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
15749 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
15750 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
15751 QCDT.CURRENCY_HEADER_ID, /* vivek */
15752 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
15753 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
15754 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
15755 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
15756 ,QPL.BREAK_UOM_CODE /* Proration */
15757 ,QPL.BREAK_UOM_CONTEXT /* Proration */
15758 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
15759 ,DECODE(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE --3863226
15760 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
15761 FROM
15762 qp_npreq_lines_tmp qplines,
15763 QP_QUALIFIERS qpq,
15764 QP_QUALIFIERS qpsq,
15765 qp_npreq_line_attrs_tmp qplat_prod,
15766 QP_PRICING_ATTRIBUTES qpa,
15767 qp_npreq_line_attrs_tmp qplat_pric,
15768 qp_npreq_line_attrs_tmp qplat_q,
15769 QP_LIST_LINES qpl,
15770 QP_LIST_HEADERS_B qph,
15771 --QP_PRICE_REQ_SOURCES qprs,
15772 QP_PRICE_REQ_SOURCES_V qprs, /* yangli */
15773 QP_CURRENCY_DETAILS QCDT /* Vivek */
15774 WHERE QPQ.QUALIFIER_CONTEXT = G_LIST_HEADER_CONTEXT
15775 AND QPQ.QUALIFIER_ATTRIBUTE = G_PRICELIST_ATTRIBUTE
15776 AND QPQ.QUALIFIER_ATTR_VALUE = to_char(QPLINES.PRICE_LIST_HEADER_ID)
15777 AND QPQ.COMPARISON_OPERATOR_CODE = '='
15778 AND QPQ.LIST_TYPE_CODE = 'PRL' --3965947
15779 AND QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
15780 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
15781 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
15782 AND (QPLINES.PRICE_FLAG = G_YES
15783 OR
15784 (QPLINES.PRICE_FLAG = G_PHASE
15785 AND
15786 P_FREEZE_OVERRIDE_FLAG = G_YES))
15787 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
15788 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
15789 AND QPLINES.VALIDATED_FLAG = G_NO
15790 AND (QPLINES.PRIMARY_QUALIFIERS_MATCH_FLAG = G_YES
15791 OR
15792 QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
15793 )
15794 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
15795 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
15796 AND QPA.EXCLUDER_FLAG = G_NO
15797 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15798 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
15799 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
15800 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
15801 OR
15802 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
15803 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
15804 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15805 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
15806 AND QPA.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
15807 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
15808 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
15809 --added for moac -- commented references to security profile
15810 --security will be built into qp_list_headers_b
15811 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
15812 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
15813 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
15814 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15815 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15816 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15817 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15818 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15819 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
15820 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
15821 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
15822 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
15823 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15824 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15825 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15826 AND ( /* Vivek */
15827 (qcdt.curr_attribute_context is null /* Vivek */
15828 and not exists /* Vivek */
15829 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
15830 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
15831 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
15832 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
15833 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
15834 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
15835 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
15836 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
15837 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
15838 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
15839 and pa_tmp.line_index = qplines.line_index /* Vivek */
15840 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15841 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15842 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15843 ) /* Vivek */
15844 ) /* Vivek */
15845 OR /* Vivek */
15846 (qcdt.curr_attribute_context is not null /* Vivek */
15847 and qcdt.currency_detail_id = /* Vivek */
15848 (select qcdt3.currency_detail_id
15849 from qp_currency_details qcdt3 /* Vivek */
15850 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
15851 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
15852 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15853 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15854 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15855 and qcdt3.precedence =
15856 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
15857 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
15858 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
15859 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
15860 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
15861 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
15862 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
15863 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
15864 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
15865 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
15866 and pa_tmp1.line_index = qplines.line_index /* Vivek */
15867 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
15868 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15869 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
15870 )) /* Vivek */
15871 ) /* Vivek */
15872 ) /* Vivek */
15873 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
15874 -- OR
15875 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
15876 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
15877 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
15878 AND QPH.ACTIVE_FLAG = G_YES
15879 AND QPQ.ACTIVE_FLAG = G_YES
15880 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
15881 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
15882 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15883 AND QPLINES.PROCESSED_CODE = G_STS_LHS_NOT_FOUND
15884 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
15885 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
15886 -- 3594459, context and attribute OR'd together
15887 AND (QPSQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
15888 OR QPSQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
15889 AND QPLAT_Q.CONTEXT = QPSQ.QUALIFIER_CONTEXT
15890 AND QPLAT_Q.ATTRIBUTE = QPSQ.QUALIFIER_ATTRIBUTE
15891 AND QPSQ.LIST_HEADER_ID = QPQ.LIST_HEADER_ID
15892 AND QPSQ.ACTIVE_FLAG = G_YES
15893 AND ((QPLAT_Q.VALUE_FROM = QPSQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
15894 AND QPSQ.COMPARISON_OPERATOR_CODE = '=')
15895 OR (QPLAT_Q.VALUE_FROM <> QPSQ.QUALIFIER_ATTR_VALUE
15896 AND QPSQ.COMPARISON_OPERATOR_CODE = 'NOT =')
15897 OR
15898 QPSQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
15899 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
15900 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
15901 NVL(QPSQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
15902 AND NVL(QPSQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
15903 AND QPLAT_PROD.LINE_INDEX = QPLAT_Q.LINE_INDEX
15904 AND QPLAT_Q.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
15905 AND G_QUALIFY_SECONDARY = G_YES
15906 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
15907 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPSQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
15908 ORDER BY 1,2;
15909
15910 /*
15911 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
15912 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,PRICING_PHASE_ID,2
15913 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,ASK_FOR_FLAG,3
15914 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,CREATED_FROM_LIST_LINE_TYPE,4
15915 */
15916 CURSOR l_chk_deleted_pbh_cur(p_line_index IN PLS_INTEGER,
15917 p_pricing_phase_id NUMBER) IS
15918 SELECT 'X'
15919 FROM qp_npreq_ldets_tmp
15920 WHERE created_from_list_line_type = G_PRICE_BREAK_TYPE
15921 AND line_index = p_line_index
15922 AND pricing_phase_id = p_pricing_phase_id
15923 AND pricing_status_code <> G_STATUS_NEW;
15924
15925 l_h_line_index_tbl NUMBER_TYPE;
15926 l_h_list_line_id_tbl NUMBER_TYPE;
15927 l_h_arithmetic_operator_tbl VARCHAR_30_TYPE;
15928 l_h_operand_tbl NUMBER_TYPE;
15929 l_h_pric_group_sequence_tbl NUMBER_TYPE;
15930 l_h_list_line_type_code_tbl VARCHAR_30_TYPE;
15931 l_h_pric_phase_id_tbl NUMBER_TYPE;
15932 l_h_automatic_flag_tbl FLAG_TYPE;
15933 l_h_incompat_grp_code_tbl VARCHAR_30_TYPE;
15934 l_h_price_by_formula_id_tbl NUMBER_TYPE;
15935 l_h_prod_precedence_tbl NUMBER_TYPE;
15936 l_h_primary_uom_flag_tbl FLAG_TYPE;
15937 l_h_modifier_level_code_tbl VARCHAR_30_TYPE;
15938 l_h_list_line_no_tbl VARCHAR_30_TYPE;
15939 l_h_prod_uom_code_tbl VARCHAR_30_TYPE;
15940 l_h_excluder_flag_tbl FLAG_TYPE;
15941 l_h_list_type_code_tbl VARCHAR_30_TYPE;
15942 l_h_rounding_factor_tbl NUMBER_TYPE;
15943 l_h_line_detail_index_tbl NUMBER_TYPE;
15944 l_h_list_header_id_tbl NUMBER_TYPE;
15945 l_h_prod_attr_context_tbl VARCHAR_30_TYPE;
15946 l_h_prod_attr_tbl VARCHAR_30_TYPE;
15947 l_h_prod_attr_val_from_tbl VARCHAR_TYPE;
15948 l_h_prod_attr_level_tbl VARCHAR_30_TYPE;
15949 l_h_prod_attr_type_tbl VARCHAR_30_TYPE;
15950 l_h_applied_flag_tbl FLAG_TYPE;
15951 l_h_prod_operator_type_tbl VARCHAR_30_TYPE;
15952 l_h_pric_attr_context_tbl VARCHAR_30_TYPE;
15953 l_h_pric_attr_tbl VARCHAR_30_TYPE;
15954 l_h_pric_attr_value_from_tbl VARCHAR_TYPE;
15955 l_h_pric_setup_value_from_tbl VARCHAR_TYPE;
15956 l_h_pric_setup_value_to_tbl VARCHAR_TYPE;
15957 l_h_pric_attr_level_tbl VARCHAR_30_TYPE;
15958 l_h_pric_attr_type_tbl VARCHAR_30_TYPE;
15959 l_h_pric_operator_type_tbl VARCHAR_30_TYPE;
15960 l_h_pric_attr_datatype_tbl VARCHAR_30_TYPE;
15961 l_h_qual_attr_context_tbl VARCHAR_30_TYPE;
15962 l_h_qual_attr_tbl VARCHAR_30_TYPE;
15963 l_h_qual_attr_value_from_tbl VARCHAR_TYPE;
15964 l_h_qual_pric_attr_flag_tbl FLAG_TYPE;
15965 l_h_qual_grouping_no_tbl NUMBER_TYPE;
15966 l_h_qual_datatype_tbl VARCHAR_30_TYPE;
15967 l_h_setup_value_from_tbl VARCHAR_TYPE;
15968 l_h_setup_value_to_tbl VARCHAR_TYPE;
15969 l_h_qual_operator_type_tbl VARCHAR_30_TYPE;
15970 l_h_qual_precedence_tbl NUMBER_TYPE;
15971 l_h_break_uom_code_tbl VARCHAR_30_TYPE; /* proration */
15972 l_h_break_uom_context_tbl VARCHAR_30_TYPE; /* proration */
15973 l_h_break_uom_attr_tbl VARCHAR_30_TYPE; /* proration */
15974 l_h_qual_type_tbl VARCHAR_30_TYPE; -- 3863226
15975 l_h_derived_qualifier_flag_tbl FLAG_TYPE; -- Added for TCA
15976
15977 l_h_currency_detail_id_tbl NUMBER_TYPE;
15978 l_h_currency_header_id_tbl NUMBER_TYPE;
15979 l_h_sell_rounding_factor_tbl NUMBER_TYPE;
15980 l_h_order_currency_tbl VARCHAR_30_TYPE;
15981 l_h_pric_effective_date_tbl DATE_TYPE;
15982 l_h_base_currency_code_tbl VARCHAR_30_TYPE;
15983
15984 l_loop_count NUMBER := 0;
15985 l_list_price NUMBER;
15986 l_percent_price NUMBER;
15987 l_list_line_type_code VARCHAR2(30);
15988 v_list_header_id NUMBER;
15989 l_line_detail_index NUMBER;
15990 l_status_code VARCHAR2(30);
15991 l_status_text VARCHAR2(240);
15992 l_list_line_id NUMBER;
15993 l_dummy VARCHAR2(1);
15994 l_routine VARCHAR2(240):='QP_PREQ_GRP.SECONDARY_LIST_HEADER_SEARCH';
15995 M PLS_INTEGER:=1;
15996 D PLS_INTEGER:=1;
15997 ls_line_index NUMBER := -9999;
15998 ls_list_line_id NUMBER := -9999;
15999
16000 l_use_multi_currency VARCHAR2(1);
16001
16002 E_ROUTINE_ERRORS EXCEPTION;
16003 BEGIN
16004 qp_debug_util.tstart('PERFORM_SECONDARY_SEARCH','Performing Secondary Price List Search');
16005 -- G_QUALIFY_SECONDARY := NVL(FND_PROFILE.VALUE('QP_QUALIFY_SECONDARY_PRICE_LISTS'),'N');--profile option
16006 -- Update the price list id , validated flag , and primary_qualifiers_match flag for sec search
16007 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN --4033618
16008 engine_debug ('QP_QUALIFY_SECONDARY_PRICE_LISTS:' || G_QUALIFY_SECONDARY);
16009 END IF;
16010
16011
16012 Update_Sec_Price_List_Info(l_status_code,l_status_text);
16013 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
16014 RAISE E_ROUTINE_ERRORS;
16015 END IF;
16016
16017 -- julin [3805113]: prepare global tables for INSERT_LDETS2
16018 G_LINE_DETAIL_INDEX_TBL.delete;
16019 G_LINE_DETAIL_TYPE_CODE_TBL.delete;
16020 G_LINE_INDEX_TBL.delete;
16021 G_LIST_HEADER_ID_TBL.delete;
16022 G_LIST_LINE_ID_TBL.delete;
16023 G_LIST_LINE_TYPE_TBL.delete;
16024 G_CREATED_FROM_SQL_TBL.delete;
16025 G_PRICING_GROUP_SEQUENCE_TBL.delete;
16026 G_OPERAND_CALCULATION_CODE_TBL.delete;
16027 G_OPERAND_VALUE_TBL.delete;
16028 G_PRICING_PHASE_ID_TBL.delete;
16029 G_LIST_TYPE_CODE_TBL.delete;
16030 G_PRICING_STATUS_CODE_TBL.delete;
16031 G_PROCESSED_FLAG_TBL.delete;
16032 G_AUTOMATIC_FLAG_TBL.delete;
16033 G_MODIFIER_LEVEL_CODE_TBL.delete;
16034 G_LIST_LINE_NO_TBL.delete;
16035 G_INCOMP_GRP_CODE_TBL.delete;
16036 G_PRICE_FORMULA_ID_TBL.delete;
16037 G_PRODUCT_PRECEDENCE_TBL.delete;
16038 G_PRIMARY_UOM_FLAG_TBL.delete;
16039 G_ROUNDING_FACTOR_TBL.delete;
16040 G_SECONDARY_PRICELIST_IND_TBL.delete;
16041 G_CURRENCY_DETAIL_ID_TBL.delete;
16042 G_CURRENCY_HEADER_ID_TBL.delete;
16043 G_SELLING_ROUNDING_TBL.delete;
16044 G_ORDER_CURRENCY_TBL.delete;
16045 G_PRICING_EFFECTIVE_DATE_TBL.delete;
16046 G_BASE_CURRENCY_CODE_TBL.delete;
16047 G_BREAK_UOM_TBL.delete;
16048 G_BREAK_CONTEXT_TBL.delete;
16049 G_BREAK_ATTRIBUTE_TBL.delete;
16050
16051 -- julin [3805113]: prepare global tables for INSERT_PRICE_LIST_ATTRS
16052 G_LINE_INDEX_TBL_A.delete;
16053 G_LINE_DETAIL_INDEX_TBL_A.delete;
16054 G_ATTRIBUTE_LEVEL_tbl.delete;
16055 G_ATTRIBUTE_TYPE_tbl.delete;
16056 G_LIST_HEADER_ID_TBL_A.delete;
16057 G_LIST_LINE_ID_TBL_A.delete;
16058 G_CONTEXT_tbl.delete;
16059 G_ATTRIBUTE_tbl.delete;
16060 G_VALUE_FROM_tbl.delete;
16061 G_SETUP_VALUE_FROM_tbl.delete;
16062 G_SETUP_VALUE_TO_tbl.delete;
16063 G_GROUPING_NUMBER_tbl.delete;
16064 G_COMPARISON_OPERATOR_TYPE_tbl.delete;
16065 G_VALIDATED_FLAG_tbl.delete;
16066 G_APPLIED_FLAG_tbl.delete;
16067 G_PRICING_STATUS_CODE_TBL_Q.delete;
16068 G_PRICING_STATUS_TEXT_tbl.delete;
16069 G_QUALIFIER_PRECEDENCE_TBL.delete;
16070 G_DATATYPE_tbl.delete;
16071 G_PRICING_ATTR_FLAG_tbl.delete;
16072 G_QUALIFIER_TYPE_TBL.delete;
16073 G_PRODUCT_UOM_CODE_TBL.delete;
16074 G_EXCLUDER_FLAG_TBL.delete;
16075 G_PRICING_PHASE_ID_TBL_A.delete;
16076 G_INCOMP_GRP_CODE_TBL_A.delete;
16077 G_LINE_DETAIL_TYPE_CODE_TBL_A.delete;
16078 G_MODIFIER_LEVEL_CODE_TBL_A.delete;
16079 G_PRIMARY_UOM_FLAG_TBL_A.delete;
16080
16081 -- julin [3805113]: bulk fetch
16082 IF G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
16083 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16084 engine_debug('cursor l_sec_list_cur_currency-multi-currency TRUE');
16085 END IF;
16086 l_use_multi_currency := 'Y';
16087 OPEN l_sec_list_cur_currency;
16088 ELSE
16089 l_use_multi_currency := 'N';
16090 OPEN l_sec_list_cur;
16091 END IF;
16092
16093 LOOP
16094 IF l_use_multi_currency = 'Y' THEN
16095 FETCH l_sec_list_cur_currency BULK COLLECT INTO
16096 l_h_line_index_tbl,
16097 l_h_list_line_id_tbl,
16098 l_h_arithmetic_operator_tbl,
16099 l_h_operand_tbl,
16100 l_h_pric_group_sequence_tbl,
16101 l_h_list_line_type_code_tbl,
16102 l_h_pric_phase_id_tbl,
16103 l_h_automatic_flag_tbl,
16104 l_h_incompat_grp_code_tbl,
16105 l_h_price_by_formula_id_tbl,
16106 l_h_prod_precedence_tbl,
16107 l_h_primary_uom_flag_tbl,
16108 l_h_modifier_level_code_tbl,
16109 l_h_list_line_no_tbl,
16110 l_h_prod_uom_code_tbl,
16111 l_h_excluder_flag_tbl,
16112 l_h_list_type_code_tbl,
16113 l_h_rounding_factor_tbl,
16114 l_h_line_detail_index_tbl,
16115 l_h_list_header_id_tbl,
16116 l_h_prod_attr_context_tbl,
16117 l_h_prod_attr_tbl,
16118 l_h_prod_attr_val_from_tbl,
16119 l_h_prod_attr_level_tbl,
16120 l_h_prod_attr_type_tbl,
16121 l_h_applied_flag_tbl,
16122 l_h_prod_operator_type_tbl,
16123 l_h_pric_attr_context_tbl,
16124 l_h_pric_attr_tbl,
16125 l_h_pric_attr_value_from_tbl,
16126 l_h_pric_setup_value_from_tbl,
16127 l_h_pric_setup_value_to_tbl,
16128 l_h_pric_attr_level_tbl,
16129 l_h_pric_attr_type_tbl,
16130 l_h_pric_operator_type_tbl,
16131 l_h_pric_attr_datatype_tbl,
16132 l_h_qual_attr_context_tbl,
16133 l_h_qual_attr_tbl,
16134 l_h_qual_attr_value_from_tbl,
16135 l_h_qual_pric_attr_flag_tbl,
16136 l_h_qual_grouping_no_tbl,
16137 l_h_qual_datatype_tbl,
16138 l_h_setup_value_from_tbl,
16139 l_h_setup_value_to_tbl,
16140 l_h_qual_operator_type_tbl,
16141 l_h_qual_precedence_tbl,
16142 l_h_currency_detail_id_tbl,
16143 l_h_currency_header_id_tbl,
16144 l_h_sell_rounding_factor_tbl,
16145 l_h_order_currency_tbl,
16146 l_h_pric_effective_date_tbl,
16147 l_h_base_currency_code_tbl,
16148 l_h_break_uom_code_tbl,
16149 l_h_break_uom_context_tbl,
16150 l_h_break_uom_attr_tbl,
16151 l_h_qual_type_tbl,
16152 l_h_derived_qualifier_flag_tbl -- Added for TCA
16153 LIMIT G_BATCH_SIZE_1;
16154 EXIT WHEN l_h_line_index_tbl.COUNT = 0;
16155
16156 FOR I in l_h_line_index_tbl.first .. l_h_line_index_tbl.last
16157 LOOP
16158 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16159 engine_debug('item found in secondary list');
16160 END IF;
16161 IF (ls_line_index <> l_h_line_index_tbl(I) OR ls_list_line_id <> l_h_list_line_id_tbl(I)) THEN
16162 l_line_detail_index := GET_LINE_DETAIL_INDEX;
16163 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16164 engine_debug('Inserting Secondary Price List Detail');
16165 END IF;
16166 G_LINE_DETAIL_INDEX_TBL(D) := l_line_detail_index;
16167 G_LINE_DETAIL_TYPE_CODE_TBL(D) := 'NULL';
16168 G_LINE_INDEX_TBL(D) := l_h_LINE_INDEX_tbl(I);
16169 G_LIST_HEADER_ID_TBL(D) := l_h_LIST_HEADER_ID_tbl(I);
16170 G_LIST_LINE_ID_TBL(D) := l_h_LIST_LINE_ID_tbl(I);
16171 G_LIST_LINE_TYPE_TBL(D) := l_h_LIST_LINE_TYPE_CODE_tbl(I);
16172 G_CREATED_FROM_SQL_TBL(D) := 'LHS_SECONDARY_PRICE_LIST' ; -- nth sec price list
16173 G_PRICING_GROUP_SEQUENCE_TBL(D) := l_h_pric_GROUP_SEQUENCE_tbl(I);
16174 G_OPERAND_CALCULATION_CODE_TBL(D) := l_h_ARITHMETIC_OPERATOR_tbl(I);
16175 G_OPERAND_VALUE_TBL(D) := l_h_OPERAND_tbl(I);
16176 G_PRICING_PHASE_ID_TBL(D) := l_h_pric_PHASE_ID_tbl(I);
16177 G_LIST_TYPE_CODE_TBL(D) := l_h_LIST_TYPE_CODE_tbl(I);
16178 G_PRICING_STATUS_CODE_TBL(D) := G_STATUS_NEW;
16179 G_PROCESSED_FLAG_TBL(D) := G_NOT_PROCESSED;
16180 G_AUTOMATIC_FLAG_TBL(D) := l_h_AUTOMATIC_FLAG_tbl(I);
16181 G_MODIFIER_LEVEL_CODE_TBL(D) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16182 G_LIST_LINE_NO_TBL(D) := l_h_LIST_LINE_NO_tbl(I);
16183 G_INCOMP_GRP_CODE_TBL(D) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16184 G_PRICE_FORMULA_ID_TBL(D) := l_h_PRICE_BY_FORMULA_ID_tbl(I);
16185 G_PRODUCT_PRECEDENCE_TBL(D) := l_h_prod_PRECEDENCE_tbl(I);
16186 G_PRIMARY_UOM_FLAG_TBL(D) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16187 G_ROUNDING_FACTOR_TBL(D) := l_h_ROUNDING_FACTOR_tbl(I);
16188 G_SECONDARY_PRICELIST_IND_TBL(D) := G_YES;
16189 G_CURRENCY_DETAIL_ID_TBL(D) := l_h_CURRENCY_DETAIL_ID_tbl(I); /*vivek */
16190 G_CURRENCY_HEADER_ID_TBL(D) := l_h_CURRENCY_HEADER_ID_tbl(I); /*vivek */
16191 G_SELLING_ROUNDING_TBL(D) := l_h_SELL_ROUNDING_FACTOR_tbl(I); /*vivek */
16192 G_ORDER_CURRENCY_TBL(D) := l_h_ORDER_CURRENCY_tbl(I); /*vivek */
16193 G_PRICING_EFFECTIVE_DATE_TBL(D) := l_h_pric_EFFECTIVE_DATE_tbl(I);/*vivek */
16194 G_BASE_CURRENCY_CODE_TBL(D) := l_h_BASE_CURRENCY_CODE_tbl(I);/*vivek */
16195 G_BREAK_UOM_TBL(D) := l_h_BREAK_UOM_CODE_tbl(I); /* Proration */
16196 G_BREAK_CONTEXT_TBL(D) := l_h_BREAK_UOM_CONTEXT_tbl(I); /* Proration */
16197 G_BREAK_ATTRIBUTE_TBL(D) := l_h_BREAK_UOM_ATTR_tbl(I); /* Proration */
16198 D := D + 1;
16199
16200 ls_line_index := l_h_line_index_tbl(I);
16201 ls_list_line_id := l_h_list_line_id_tbl(I);
16202 END IF;
16203
16204 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16205 engine_debug('----BEFORE INSERTING SECONDARY PRODUCT ATTRS -------');
16206 engine_debug('Qualifier Precedence : ' || l_h_qual_precedence_tbl(I));
16207 END IF;
16208
16209 --INSERT PRODUCT ATTRIBUTES
16210 G_LINE_INDEX_TBL_A(M) := l_h_LINE_INDEX_tbl(I);
16211 G_LINE_DETAIL_INDEX_TBL_A(M) := L_LINE_DETAIL_INDEX;
16212 G_ATTRIBUTE_LEVEL_tbl(M) := l_h_prod_ATTR_LEVEL_tbl(I);
16213 G_ATTRIBUTE_TYPE_tbl(M) := l_h_prod_ATTR_TYPE_tbl(I);
16214 G_LIST_HEADER_ID_TBL_A(M) := l_h_LIST_HEADER_ID_tbl(I);
16215 G_LIST_LINE_ID_TBL_A(M) := l_h_LIST_LINE_ID_tbl(I);
16216 G_CONTEXT_tbl(M) := l_h_prod_ATTR_CONTEXT_tbl(I);
16217 G_ATTRIBUTE_tbl(M) := l_h_prod_ATTR_tbl(I);
16218 G_VALUE_FROM_tbl(M) := l_h_prod_attr_val_from_tbl(I);
16219 G_SETUP_VALUE_FROM_tbl(M) := NULL;
16220 G_SETUP_VALUE_TO_tbl(M) := NULL;
16221 G_GROUPING_NUMBER_tbl(M) := NULL;
16222 G_COMPARISON_OPERATOR_TYPE_tbl(M) := l_h_prod_OPERATOR_TYPE_tbl(I);
16223 G_VALIDATED_FLAG_tbl(M) := NULL;
16224 G_APPLIED_FLAG_tbl(M) := l_h_APPLIED_FLAG_tbl(I);
16225 G_PRICING_STATUS_CODE_TBL_Q(M) := G_STATUS_NEW;
16226 G_PRICING_STATUS_TEXT_tbl(M) := 'INSERTED IN SECONDARY LIST HEADER SEARCH';
16227 G_QUALIFIER_PRECEDENCE_TBL(M) := l_h_qual_PRECEDENCE_tbl(I);
16228 G_DATATYPE_tbl(M) := NULL;
16229 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
16230 G_QUALIFIER_TYPE_TBL(M) := NULL;
16231 G_PRODUCT_UOM_CODE_TBL(M) := l_h_prod_UOM_CODE_tbl(I);
16232 G_EXCLUDER_FLAG_TBL(M) := l_h_EXCLUDER_FLAG_tbl(I);
16233 G_PRICING_PHASE_ID_TBL_A(M) := l_h_pric_PHASE_ID_tbl(I);
16234 G_INCOMP_GRP_CODE_TBL_A(M) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16235 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
16236 G_MODIFIER_LEVEL_CODE_TBL_A(M) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16237 G_PRIMARY_UOM_FLAG_TBL_A(M) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16238 M:= M+1;
16239
16240 --INSERT PRICING ATTRIBUTES
16241 IF (l_h_pric_ATTR_CONTEXT_tbl(I) IS NOT NULL) THEN
16242 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16243 engine_debug('----BEFORE INSERTING SECONDARY PRICING ATTRS -------');
16244 END IF;
16245 G_LINE_INDEX_TBL_A(M) := l_h_LINE_INDEX_tbl(I);
16246 G_LINE_DETAIL_INDEX_TBL_A(M) := L_LINE_DETAIL_INDEX;
16247 G_ATTRIBUTE_LEVEL_tbl(M) := l_h_pric_ATTR_LEVEL_tbl(I);
16248 G_ATTRIBUTE_TYPE_tbl(M) := l_h_pric_ATTR_TYPE_tbl(I);
16249 G_LIST_HEADER_ID_TBL_A(M) := l_h_LIST_HEADER_ID_tbl(I);
16250 G_LIST_LINE_ID_TBL_A(M) := l_h_LIST_LINE_ID_tbl(I);
16251 G_CONTEXT_tbl(M) := l_h_pric_ATTR_CONTEXT_tbl(I);
16252 G_ATTRIBUTE_tbl(M) := l_h_pric_ATTR_tbl(I);
16253 G_VALUE_FROM_tbl(M) := l_h_pric_ATTR_VALUE_FROM_tbl(I);
16254 G_SETUP_VALUE_FROM_tbl(M) := l_h_pric_SETUP_VALUE_FROM_tbl(I);
16255 G_SETUP_VALUE_TO_tbl(M) := l_h_pric_SETUP_VALUE_TO_tbl(I);
16256 G_GROUPING_NUMBER_tbl(M) := NULL;
16257 G_COMPARISON_OPERATOR_TYPE_tbl(M):= l_h_pric_OPERATOR_TYPE_tbl(I);
16258 G_VALIDATED_FLAG_tbl(M) := NULL;
16259 G_APPLIED_FLAG_tbl(M) := l_h_APPLIED_FLAG_tbl(I);
16260 G_PRICING_STATUS_CODE_TBL_Q(M) := G_STATUS_NEW;
16261 G_PRICING_STATUS_TEXT_tbl(M) := 'INSERTED IN SECONDARY LIST HEADER SEARCH';
16262 G_QUALIFIER_PRECEDENCE_tbl(M) := NULL;
16263 G_DATATYPE_tbl(M) := l_h_pric_ATTR_DATATYPE_tbl(I);
16264 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
16265 G_QUALIFIER_TYPE_TBL(M) := NULL;
16266 G_PRODUCT_UOM_CODE_TBL(M) := l_h_prod_UOM_CODE_tbl(I);
16267 G_EXCLUDER_FLAG_TBL(M) := l_h_EXCLUDER_FLAG_tbl(I);
16268 G_PRICING_PHASE_ID_TBL_A(M) := l_h_pric_PHASE_ID_tbl(I);
16269 G_INCOMP_GRP_CODE_TBL_A(M) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16270 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
16271 G_MODIFIER_LEVEL_CODE_TBL_A(M) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16272 G_PRIMARY_UOM_FLAG_TBL_A(M) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16273 M:= M+1;
16274 END IF;
16275
16276 --INSERT QUALIFIER ATTRIBUTES
16277 IF (l_h_qual_ATTR_CONTEXT_tbl(I) IS NOT NULL) AND (G_QUALIFY_SECONDARY = G_YES) THEN
16278 G_LINE_INDEX_TBL_A(M) := l_h_LINE_INDEX_tbl(I);
16279 G_LINE_DETAIL_INDEX_TBL_A(M) := L_LINE_DETAIL_INDEX;
16280 G_ATTRIBUTE_LEVEL_tbl(M) := NVL(l_h_prod_ATTR_LEVEL_tbl(I),'X');
16281 G_ATTRIBUTE_TYPE_tbl(M) := G_QUALIFIER_TYPE;
16282 G_CONTEXT_tbl(M) := l_h_qual_ATTR_CONTEXT_tbl(I);
16283 G_ATTRIBUTE_tbl(M) := l_h_qual_ATTR_tbl(I);
16284 G_VALUE_FROM_tbl(M) := l_h_qual_ATTR_VALUE_FROM_tbl(I);
16285 G_COMPARISON_OPERATOR_TYPE_tbl(M):= l_h_pric_OPERATOR_TYPE_tbl(I);
16286 G_APPLIED_FLAG_tbl(M) := l_h_APPLIED_FLAG_tbl(I);
16287 G_PRICING_STATUS_CODE_TBL_Q(M) := G_STATUS_NEW;
16288 G_LIST_HEADER_ID_tbl_A(M) := l_h_LIST_HEADER_ID_tbl(I);
16289 G_LIST_LINE_ID_tbl_A(M) := l_h_LIST_LINE_ID_tbl(I);
16290 G_SETUP_VALUE_FROM_tbl(M) := l_h_SETUP_VALUE_FROM_tbl(I);
16291 G_SETUP_VALUE_TO_tbl(M) := l_h_SETUP_VALUE_TO_tbl(I);
16292 G_GROUPING_NUMBER_tbl(M) := l_h_qual_GROUPING_NO_tbl(I);
16293 G_PRICING_STATUS_TEXT_tbl(M) := 'INSERTED IN L_SEC_LIST_CUR_CURRENCY';
16294 G_QUALIFIER_PRECEDENCE_tbl(M) := l_h_qual_PRECEDENCE_tbl(I);
16295 G_DATATYPE_tbl(M) := l_h_qual_DATATYPE_tbl(I);
16296 G_EXCLUDER_FLAG_TBL(M) := l_h_EXCLUDER_FLAG_tbl(I);
16297 G_PRODUCT_UOM_CODE_TBL(M) := l_h_prod_UOM_CODE_tbl(I);
16298 G_QUALIFIER_TYPE_TBL(M) := l_h_qual_TYPE_tbl(I);
16299 G_VALIDATED_FLAG_tbl(M) := G_NO;
16300 G_PRICING_ATTR_FLAG_tbl(M) := G_NO;
16301 G_NO_QUALIFIERS_IN_GRP_tbl(M) := NULL;
16302 G_VALUE_TO_tbl(M) := NULL;
16303 G_PRICING_PHASE_ID_TBL_A(M) := l_h_pric_PHASE_ID_tbl(I);
16304 G_INCOMP_GRP_CODE_TBL_A(M) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16305 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
16306 G_MODIFIER_LEVEL_CODE_TBL_A(M) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16307 G_PRIMARY_UOM_FLAG_TBL_A(M) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16308 M:= M+1;
16309 END IF;
16310
16311 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16312 engine_debug('AFTER END IF SECONDARY PRICE_LIST');
16313 END IF;
16314 l_loop_count := l_loop_count +1;
16315 END LOOP; -- K
16316
16317 else -- vivek, multi currency not installed, not used
16318
16319 -- julin [3805113]: bulk fetch
16320 FETCH l_sec_list_cur BULK COLLECT INTO
16321 l_h_line_index_tbl,
16322 l_h_list_line_id_tbl,
16323 l_h_arithmetic_operator_tbl,
16324 l_h_operand_tbl,
16325 l_h_pric_group_sequence_tbl,
16326 l_h_list_line_type_code_tbl,
16327 l_h_pric_phase_id_tbl,
16328 l_h_automatic_flag_tbl,
16329 l_h_incompat_grp_code_tbl,
16330 l_h_price_by_formula_id_tbl,
16331 l_h_prod_precedence_tbl,
16332 l_h_primary_uom_flag_tbl,
16333 l_h_modifier_level_code_tbl,
16334 l_h_list_line_no_tbl,
16335 l_h_prod_uom_code_tbl,
16336 l_h_excluder_flag_tbl,
16337 l_h_list_type_code_tbl,
16338 l_h_rounding_factor_tbl,
16339 l_h_line_detail_index_tbl,
16340 l_h_list_header_id_tbl,
16341 l_h_prod_attr_context_tbl,
16342 l_h_prod_attr_tbl,
16343 l_h_prod_attr_val_from_tbl,
16344 l_h_prod_attr_level_tbl,
16345 l_h_prod_attr_type_tbl,
16346 l_h_applied_flag_tbl,
16347 l_h_prod_operator_type_tbl,
16348 l_h_pric_attr_context_tbl,
16349 l_h_pric_attr_tbl,
16350 l_h_pric_attr_value_from_tbl,
16351 l_h_pric_setup_value_from_tbl,
16352 l_h_pric_setup_value_to_tbl,
16353 l_h_pric_attr_level_tbl,
16354 l_h_pric_attr_type_tbl,
16355 l_h_pric_operator_type_tbl,
16356 l_h_pric_attr_datatype_tbl,
16357 l_h_qual_attr_context_tbl,
16358 l_h_qual_attr_tbl,
16359 l_h_qual_attr_value_from_tbl,
16360 l_h_qual_pric_attr_flag_tbl,
16361 l_h_qual_grouping_no_tbl,
16362 l_h_qual_datatype_tbl,
16363 l_h_setup_value_from_tbl,
16364 l_h_setup_value_to_tbl,
16365 l_h_qual_operator_type_tbl,
16366 l_h_qual_precedence_tbl,
16367 l_h_break_uom_code_tbl,
16368 l_h_break_uom_context_tbl,
16369 l_h_break_uom_attr_tbl,
16370 l_h_qual_type_tbl,
16371 l_h_derived_qualifier_flag_tbl -- Added for TCA
16372 LIMIT G_BATCH_SIZE_1;
16373 EXIT WHEN l_h_line_index_tbl.COUNT = 0;
16374
16375 FOR I in l_h_line_index_tbl.first .. l_h_line_index_tbl.last
16376 LOOP
16377 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16378 engine_debug('item found in secondary list');
16379 END IF;
16380
16381 IF (ls_line_index <> l_h_line_index_tbl(I) OR ls_list_line_id <> l_h_list_line_id_tbl(I)) THEN
16382 l_line_detail_index := GET_LINE_DETAIL_INDEX;
16383 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16384 engine_debug('Inserting Secondary Price List Detail');
16385 END IF;
16386 G_LINE_DETAIL_INDEX_TBL(D) := l_line_detail_index;
16387 G_LINE_DETAIL_TYPE_CODE_TBL(D) := 'NULL';
16388 G_LINE_INDEX_TBL(D) := l_h_LINE_INDEX_tbl(I);
16389 G_LIST_HEADER_ID_TBL(D) := l_h_LIST_HEADER_ID_tbl(I);
16390 G_LIST_LINE_ID_TBL(D) := l_h_LIST_LINE_ID_tbl(I);
16391 G_LIST_LINE_TYPE_TBL(D) := l_h_LIST_LINE_TYPE_CODE_tbl(I);
16392 G_CREATED_FROM_SQL_TBL(D) := 'LHS_SECONDARY_PRICE_LIST' ; -- nth sec price list
16393 G_PRICING_GROUP_SEQUENCE_TBL(D) := l_h_pric_GROUP_SEQUENCE_tbl(I);
16394 G_OPERAND_CALCULATION_CODE_TBL(D) := l_h_ARITHMETIC_OPERATOR_tbl(I);
16395 G_OPERAND_VALUE_TBL(D) := l_h_OPERAND_tbl(I);
16396 G_PRICING_PHASE_ID_TBL(D) := l_h_pric_PHASE_ID_tbl(I);
16397 G_LIST_TYPE_CODE_TBL(D) := l_h_LIST_TYPE_CODE_tbl(I);
16398 G_PRICING_STATUS_CODE_TBL(D) := G_STATUS_NEW;
16399 G_PROCESSED_FLAG_TBL(D) := G_NOT_PROCESSED;
16400 G_AUTOMATIC_FLAG_TBL(D) := l_h_AUTOMATIC_FLAG_tbl(I);
16401 G_MODIFIER_LEVEL_CODE_TBL(D) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16402 G_LIST_LINE_NO_TBL(D) := l_h_LIST_LINE_NO_tbl(I);
16403 G_INCOMP_GRP_CODE_TBL(D) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16404 G_PRICE_FORMULA_ID_TBL(D) := l_h_PRICE_BY_FORMULA_ID_tbl(I);
16405 G_PRODUCT_PRECEDENCE_TBL(D) := l_h_prod_PRECEDENCE_tbl(I);
16406 G_PRIMARY_UOM_FLAG_TBL(D) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16407 G_ROUNDING_FACTOR_TBL(D) := l_h_ROUNDING_FACTOR_tbl(I);
16408 G_SECONDARY_PRICELIST_IND_TBL(D) := G_YES;
16409 G_CURRENCY_DETAIL_ID_TBL(D) := null;
16410 G_CURRENCY_HEADER_ID_TBL(D) := null;
16411 G_SELLING_ROUNDING_TBL(D) := null;
16412 G_ORDER_CURRENCY_TBL(D) := null;
16413 G_PRICING_EFFECTIVE_DATE_TBL(D) := null;
16414 G_BASE_CURRENCY_CODE_TBL(D) := null;
16415 G_BREAK_UOM_TBL(D) := l_h_BREAK_UOM_CODE_tbl(I); /* Proration */
16416 G_BREAK_CONTEXT_TBL(D) := l_h_BREAK_UOM_CONTEXT_tbl(I); /* Proration */
16417 G_BREAK_ATTRIBUTE_TBL(D) := l_h_BREAK_UOM_ATTR_tbl(I); /* Proration */
16418 D := D + 1;
16419
16420 ls_line_index := l_h_line_index_tbl(I);
16421 ls_list_line_id := l_h_list_line_id_tbl(I);
16422 END IF;
16423
16424
16425 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16426 engine_debug('----BEFORE INSERTING SECONDARY PRODUCT ATTRS -------');
16427 engine_debug('Qualifier Precedence : ' || l_h_qual_precedence_tbl(I));
16428 END IF;
16429
16430 --INSERT PRODUCT ATTRIBUTES
16431 G_LINE_INDEX_TBL_A(M) := l_h_LINE_INDEX_tbl(I);
16432 G_LINE_DETAIL_INDEX_TBL_A(M) := L_LINE_DETAIL_INDEX;
16433 G_ATTRIBUTE_LEVEL_tbl(M) := l_h_prod_ATTR_LEVEL_tbl(I);
16434 G_ATTRIBUTE_TYPE_tbl(M) := l_h_prod_ATTR_TYPE_tbl(I);
16435 G_LIST_HEADER_ID_TBL_A(M) := l_h_LIST_HEADER_ID_tbl(I);
16436 G_LIST_LINE_ID_TBL_A(M) := l_h_LIST_LINE_ID_tbl(I);
16437 G_CONTEXT_tbl(M) := l_h_prod_ATTR_CONTEXT_tbl(I);
16438 G_ATTRIBUTE_tbl(M) := l_h_prod_ATTR_tbl(I);
16439 G_VALUE_FROM_tbl(M) := l_h_prod_attr_val_from_tbl(I);
16440 G_SETUP_VALUE_FROM_tbl(M) := NULL;
16441 G_SETUP_VALUE_TO_tbl(M) := NULL;
16442 G_GROUPING_NUMBER_tbl(M) := NULL;
16443 G_COMPARISON_OPERATOR_TYPE_tbl(M) := l_h_prod_OPERATOR_TYPE_tbl(I);
16444 G_VALIDATED_FLAG_tbl(M) := NULL;
16445 G_APPLIED_FLAG_tbl(M) := l_h_APPLIED_FLAG_tbl(I);
16446 G_PRICING_STATUS_CODE_TBL_Q(M) := G_STATUS_NEW;
16447 G_PRICING_STATUS_TEXT_tbl(M) := 'INSERTED IN SECONDARY LIST HEADER SEARCH';
16448 G_QUALIFIER_PRECEDENCE_TBL(M) := l_h_qual_PRECEDENCE_tbl(I);
16449 G_DATATYPE_tbl(M) := NULL;
16450 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
16451 G_QUALIFIER_TYPE_TBL(M) := NULL;
16452 G_PRODUCT_UOM_CODE_TBL(M) := l_h_prod_UOM_CODE_tbl(I);
16453 G_EXCLUDER_FLAG_TBL(M) := l_h_EXCLUDER_FLAG_tbl(I);
16454 G_PRICING_PHASE_ID_TBL_A(M) := l_h_pric_PHASE_ID_tbl(I);
16455 G_INCOMP_GRP_CODE_TBL_A(M) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16456 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
16457 G_MODIFIER_LEVEL_CODE_TBL_A(M) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16458 G_PRIMARY_UOM_FLAG_TBL_A(M) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16459 M:= M+1;
16460
16461 --INSERT PRICING ATTRIBUTES
16462 IF (l_h_pric_ATTR_CONTEXT_tbl(I) IS NOT NULL) THEN
16463 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16464 engine_debug('----BEFORE INSERTING SECONDARY PRICING ATTRS -------');
16465 END IF;
16466 G_LINE_INDEX_TBL_A(M) := l_h_LINE_INDEX_tbl(I);
16467 G_LINE_DETAIL_INDEX_TBL_A(M) := L_LINE_DETAIL_INDEX;
16468 G_ATTRIBUTE_LEVEL_tbl(M) := l_h_pric_ATTR_LEVEL_tbl(I);
16469 G_ATTRIBUTE_TYPE_tbl(M) := l_h_pric_ATTR_TYPE_tbl(I);
16470 G_LIST_HEADER_ID_TBL_A(M) := l_h_LIST_HEADER_ID_tbl(I);
16471 G_LIST_LINE_ID_TBL_A(M) := l_h_LIST_LINE_ID_tbl(I);
16472 G_CONTEXT_tbl(M) := l_h_pric_ATTR_CONTEXT_tbl(I);
16473 G_ATTRIBUTE_tbl(M) := l_h_pric_ATTR_tbl(I);
16474 G_VALUE_FROM_tbl(M) := l_h_pric_ATTR_VALUE_FROM_tbl(I);
16475 G_SETUP_VALUE_FROM_tbl(M) := l_h_pric_SETUP_VALUE_FROM_tbl(I);
16476 G_SETUP_VALUE_TO_tbl(M) := l_h_pric_SETUP_VALUE_TO_tbl(I);
16477 G_COMPARISON_OPERATOR_TYPE_tbl(M) := l_h_pric_OPERATOR_TYPE_tbl(I);
16478 G_VALIDATED_FLAG_tbl(M) := NULL;
16479 G_APPLIED_FLAG_tbl(M) := l_h_APPLIED_FLAG_tbl(I);
16480 G_PRICING_STATUS_CODE_TBL_Q(M) := G_STATUS_NEW;
16481 G_PRICING_STATUS_TEXT_tbl(M) := 'INSERTED IN SECONDARY LIST HEADER SEARCH';
16482 G_QUALIFIER_PRECEDENCE_tbl(M) := NULL;
16483 G_DATATYPE_tbl(M) := l_h_pric_ATTR_DATATYPE_tbl(I);
16484 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
16485 G_QUALIFIER_TYPE_TBL(M) := NULL;
16486 G_PRODUCT_UOM_CODE_TBL(M) := l_h_prod_UOM_CODE_tbl(I);
16487 G_EXCLUDER_FLAG_TBL(M) := l_h_EXCLUDER_FLAG_tbl(I);
16488 G_GROUPING_NUMBER_tbl(M) := NULL;
16489 G_PRICING_PHASE_ID_TBL_A(M) := l_h_pric_PHASE_ID_tbl(I);
16490 G_INCOMP_GRP_CODE_TBL_A(M) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16491 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
16492 G_MODIFIER_LEVEL_CODE_TBL_A(M) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16493 G_PRIMARY_UOM_FLAG_TBL_A(M) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16494 M:= M+1;
16495 END IF;
16496
16497 --INSERT QUALIFIER ATTRIBUTES
16498 IF (l_h_qual_ATTR_CONTEXT_tbl(I) IS NOT NULL) AND (G_QUALIFY_SECONDARY = G_YES) THEN
16499 G_LINE_INDEX_TBL_A(M) := l_h_LINE_INDEX_tbl(I);
16500 G_LINE_DETAIL_INDEX_TBL_A(M) := L_LINE_DETAIL_INDEX;
16501 G_ATTRIBUTE_LEVEL_tbl(M) := NVL(l_h_prod_ATTR_LEVEL_tbl(I),'X');
16502 G_ATTRIBUTE_TYPE_tbl(M) := G_QUALIFIER_TYPE;
16503 G_CONTEXT_tbl(M) := l_h_qual_ATTR_CONTEXT_tbl(I);
16504 G_ATTRIBUTE_tbl(M) := l_h_qual_ATTR_tbl(I);
16505 G_VALUE_FROM_tbl(M) := l_h_qual_ATTR_VALUE_FROM_tbl(I);
16506 G_COMPARISON_OPERATOR_TYPE_tbl(M):= l_h_pric_OPERATOR_TYPE_tbl(I);
16507 G_APPLIED_FLAG_tbl(M) := l_h_APPLIED_FLAG_tbl(I);
16508 G_PRICING_STATUS_CODE_TBL_Q(M) := G_STATUS_NEW;
16509 G_LIST_HEADER_ID_tbl_A(M) := l_h_LIST_HEADER_ID_tbl(I);
16510 G_LIST_LINE_ID_tbl_A(M) := l_h_LIST_LINE_ID_tbl(I);
16511 G_SETUP_VALUE_FROM_tbl(M) := l_h_SETUP_VALUE_FROM_tbl(I);
16512 G_SETUP_VALUE_TO_tbl(M) := l_h_SETUP_VALUE_TO_tbl(I);
16513 G_GROUPING_NUMBER_tbl(M) := l_h_qual_GROUPING_NO_tbl(I);
16514 G_PRICING_STATUS_TEXT_tbl(M) := 'INSERTED IN L_SEC_LIST_CUR';
16515 G_QUALIFIER_PRECEDENCE_tbl(M) := l_h_qual_PRECEDENCE_tbl(I);
16516 G_DATATYPE_tbl(M) := l_h_qual_DATATYPE_tbl(I);
16517 G_EXCLUDER_FLAG_TBL(M) := l_h_EXCLUDER_FLAG_tbl(I);
16518 G_PRODUCT_UOM_CODE_TBL(M) := l_h_prod_UOM_CODE_tbl(I);
16519 G_QUALIFIER_TYPE_TBL(M) := l_h_qual_TYPE_tbl(I);
16520 G_VALIDATED_FLAG_tbl(M) := G_NO;
16521 G_PRICING_ATTR_FLAG_tbl(M) := G_NO;
16522 G_NO_QUALIFIERS_IN_GRP_tbl(M) := NULL;
16523 G_VALUE_TO_tbl(M) := NULL;
16524 G_PRICING_PHASE_ID_TBL_A(M) := l_h_pric_PHASE_ID_tbl(I);
16525 G_INCOMP_GRP_CODE_TBL_A(M) := l_h_INCOMPAT_GRP_CODE_tbl(I);
16526 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
16527 G_MODIFIER_LEVEL_CODE_TBL_A(M) := l_h_MODIFIER_LEVEL_CODE_tbl(I);
16528 G_PRIMARY_UOM_FLAG_TBL_A(M) := l_h_PRIMARY_UOM_FLAG_tbl(I);
16529 M:= M+1;
16530 END IF;
16531
16532 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16533 engine_debug('AFTER END IF SECONDARY PRICE_LIST');
16534 END IF;
16535 l_loop_count := l_loop_count +1;
16536 END LOOP; -- K
16537
16538 end if; -- vivek, multi currency installed
16539
16540 -- julin [3805113]: bulk insert into qp_npreq_ldets_tmp
16541 IF (D>1) THEN
16542 FORALL i in G_line_index_tbl.FIRST..G_line_index_tbl.LAST
16543 INSERT INTO qp_npreq_ldets_tmp
16544 (LINE_DETAIL_INDEX,
16545 LINE_DETAIL_TYPE_CODE,
16546 LINE_INDEX,
16547 CREATED_FROM_LIST_HEADER_ID,
16548 CREATED_FROM_LIST_LINE_ID,
16549 CREATED_FROM_LIST_LINE_TYPE,
16550 CREATED_FROM_SQL,
16551 PRICING_GROUP_SEQUENCE,
16552 OPERAND_CALCULATION_CODE,
16553 OPERAND_VALUE,
16554 PRICING_PHASE_ID,
16555 CREATED_FROM_LIST_TYPE_CODE,
16556 PRICING_STATUS_CODE,
16557 PROCESSED_FLAG,
16558 AUTOMATIC_FLAG,
16559 MODIFIER_LEVEL_CODE,
16560 LIST_LINE_NO,
16561 INCOMPATABILITY_GRP_CODE,
16562 PRICE_FORMULA_ID,
16563 PRODUCT_PRECEDENCE,
16564 PRIMARY_UOM_FLAG,
16565 ROUNDING_FACTOR,
16566 SECONDARY_PRICELIST_IND,
16567 CURRENCY_DETAIL_ID,
16568 CURRENCY_HEADER_ID,
16569 SELLING_ROUNDING_FACTOR,
16570 ORDER_CURRENCY,
16571 PRICING_EFFECTIVE_DATE,
16572 BASE_CURRENCY_CODE,
16573 BREAK_UOM_CODE,
16574 BREAK_UOM_CONTEXT,
16575 BREAK_UOM_ATTRIBUTE
16576 )
16577 VALUES ( G_line_detail_index_tbl(i),
16578 G_LINE_DETAIL_TYPE_CODE_TBL(I),
16579 G_LINE_INDEX_tbl(i),
16580 G_LIST_HEADER_ID_tbl(i),
16581 G_LIST_LINE_ID_tbl(i),
16582 G_LIST_LINE_TYPE_tbl(i),
16583 G_CREATED_FROM_SQL_TBL(I), -- nth sec price list
16584 G_PRICING_GROUP_SEQUENCE_tbl(i),
16585 G_OPERAND_CALCULATION_CODE_tbl(i),
16586 G_OPERAND_VALUE_tbl(i),
16587 G_PRICING_PHASE_ID_tbl(i),
16588 G_LIST_TYPE_CODE_tbl(i),
16589 G_PRICING_STATUS_CODE_TBL(I),
16590 G_NOT_PROCESSED,
16591 G_AUTOMATIC_FLAG_tbl(i),
16592 G_MODIFIER_LEVEL_CODE_tbl(i),
16593 G_LIST_LINE_NO_tbl(i),
16594 G_INCOMP_GRP_CODE_tbl(i),
16595 G_PRICE_FORMULA_ID_tbl(i),
16596 G_PRODUCT_PRECEDENCE_tbl(i),
16597 G_PRIMARY_UOM_FLAG_tbl(i),
16598 G_ROUNDING_FACTOR_tbl(i),
16599 G_SECONDARY_PRICELIST_IND_TBL(I),
16600 G_CURRENCY_DETAIL_ID_tbl(i),
16601 G_CURRENCY_HEADER_ID_tbl(i),
16602 G_SELLING_ROUNDING_tbl(i),
16603 G_ORDER_CURRENCY_tbl(i),
16604 G_PRICING_EFFECTIVE_DATE_tbl(i),
16605 G_BASE_CURRENCY_CODE_tbl(i),
16606 G_BREAK_UOM_tbl(i), /* Proration */
16607 G_BREAK_CONTEXT_tbl(i), /* Proration */
16608 G_BREAK_ATTRIBUTE_tbl(i) /* Proration */
16609 );
16610 END IF;
16611
16612 IF (M>1) THEN
16613 INSERT_PRICE_LIST_ATTRS
16614 ( p_LINE_INDEX_tbl =>G_LINE_INDEX_TBL_A,
16615 p_LINE_DETAIL_INDEX_tbl =>G_LINE_DETAIL_INDEX_TBL_A,
16616 p_ATTRIBUTE_LEVEL_tbl =>G_ATTRIBUTE_LEVEL_tbl,
16617 p_ATTRIBUTE_TYPE_tbl =>G_ATTRIBUTE_TYPE_tbl,
16618 p_LIST_HEADER_ID_tbl =>G_LIST_HEADER_ID_tbl_A,
16619 p_LIST_LINE_ID_tbl =>G_LIST_LINE_ID_tbl_A,
16620 p_CONTEXT_tbl =>G_CONTEXT_tbl,
16621 p_ATTRIBUTE_tbl =>G_ATTRIBUTE_tbl,
16622 p_VALUE_FROM_tbl =>G_VALUE_FROM_tbl,
16623 p_SETUP_VALUE_FROM_tbl =>G_SETUP_VALUE_FROM_tbl,
16624 p_SETUP_VALUE_TO_tbl =>G_SETUP_VALUE_TO_tbl,
16625 p_GROUPING_NUMBER_tbl =>G_GROUPING_NUMBER_tbl,
16626 p_COMPARISON_OPERATOR_TYPE_tbl =>G_COMPARISON_OPERATOR_TYPE_tbl,
16627 p_VALIDATED_FLAG_tbl =>G_VALIDATED_FLAG_tbl,
16628 p_APPLIED_FLAG_tbl =>G_APPLIED_FLAG_tbl,
16629 p_PRICING_STATUS_CODE_tbl =>G_PRICING_STATUS_CODE_TBL_Q,
16630 p_PRICING_STATUS_TEXT_tbl =>G_PRICING_STATUS_TEXT_tbl,
16631 p_QUALIFIER_PRECEDENCE_tbl =>G_QUALIFIER_PRECEDENCE_tbl,
16632 p_DATATYPE_tbl =>G_DATATYPE_tbl,
16633 p_PRICING_ATTR_FLAG_tbl =>G_PRICING_ATTR_FLAG_tbl,
16634 p_QUALIFIER_TYPE_tbl =>G_QUALIFIER_TYPE_TBL,
16635 p_PRODUCT_UOM_CODE_TBL =>G_PRODUCT_UOM_CODE_TBL,
16636 p_EXCLUDER_FLAG_TBL =>G_EXCLUDER_FLAG_TBL,
16637 p_PRICING_PHASE_ID_TBL =>G_PRICING_PHASE_ID_TBL_A,
16638 p_INCOMPATABILITY_GRP_CODE_TBL =>G_INCOMP_GRP_CODE_TBL_A,
16639 p_LINE_DETAIL_TYPE_CODE_TBL =>G_LINE_DETAIL_TYPE_CODE_TBL_A,
16640 p_MODIFIER_LEVEL_CODE_TBL =>G_MODIFIER_LEVEL_CODE_TBL_A,
16641 p_PRIMARY_UOM_FLAG_TBL =>G_PRIMARY_UOM_FLAG_TBL_A,
16642 x_status_code =>l_status_code,
16643 x_status_text =>l_status_text);
16644 END IF;
16645
16646 END LOOP;
16647 IF l_use_multi_currency = 'Y' THEN
16648 CLOSE l_sec_list_cur_currency;
16649 ELSE
16650 CLOSE l_sec_list_cur;
16651 END IF;
16652
16653 IF (l_loop_count <> 0) THEN
16654
16655 --Evaluating between operator for both qualifiers and pricing attributes
16656 Evaluate_Between(G_PRICE_LIST_PHASE_ID,NULL,NULL,l_status_code,l_status_text);
16657
16658 IF(l_status_code = FND_API.G_RET_STS_ERROR) THEN
16659 RAISE E_ROUTINE_ERRORS;
16660 END IF;
16661
16662 -- Check for multiple item categories and customer classes
16663 Eliminate_Multiple_Hierarchies(G_PRICE_LIST_PHASE_ID,l_status_code,l_status_text);
16664
16665 IF(l_status_code = FND_API.G_RET_STS_ERROR) THEN
16666 RAISE E_ROUTINE_ERRORS;
16667 END IF;
16668
16669 --Handle_Excluder(G_PRICE_LIST_PHASE_ID,NULL,l_status_code,l_status_text);
16670
16671 Perform_Grouping(G_PRICE_LIST_PHASE_ID, NULL, l_status_code, l_status_text);
16672
16673 IF(l_status_code = FND_API.G_RET_STS_ERROR) THEN
16674 RAISE E_ROUTINE_ERRORS;
16675 END IF;
16676
16677 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16678 engine_debug('Secondary Price List Grouping Return Status : ' || l_status_code);
16679
16680
16681 END IF;
16682 QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty
16683 (p_line_index => NULL,
16684 p_order_uom_code => NULL,
16685 p_order_qty => NULL,
16686 p_pricing_phase_id => G_PRICE_LIST_PHASE_ID, -- pricing_phase_id,
16687 p_call_big_search => FALSE,
16688 x_list_line_id => l_list_line_id,
16689 x_return_status => l_status_code,
16690 x_return_status_txt => l_status_text);
16691
16692 IF(l_status_code = FND_API.G_RET_STS_ERROR) THEN
16693 RAISE E_ROUTINE_ERRORS;
16694 END IF;
16695
16696 -- 3773652
16697 -- re-run Evaluate_Between after UOM conversion to check PLL really qualifies
16698 begin
16699 select 'x' into l_dummy
16700 from qp_npreq_lines_tmp
16701 where LINE_UOM_CODE <> nvl(PRICED_UOM_CODE, LINE_UOM_CODE)
16702 and (PRICE_FLAG = G_YES
16703 or
16704 PRICE_FLAG = G_PHASE and p_freeze_override_flag = G_YES)
16705 and rownum = 1;
16706
16707 Evaluate_Between(G_PRICE_LIST_PHASE_ID,NULL,NULL,l_status_code,l_status_text);
16708 exception
16709 when no_data_found then
16710 null;
16711 end;
16712
16713 -- Update the request line status for lines which got valid price list
16714 Update_Request_Line_Status(p_control_rec,'SUCCESS',p_freeze_override_flag,l_status_code,l_status_text); --[julin/4708044]
16715
16716 IF(l_status_code = FND_API.G_RET_STS_ERROR) THEN
16717 RAISE E_ROUTINE_ERRORS;
16718 END IF;
16719
16720 --bug# 2091386 not reflecting the right price on change on UOM on the order line . Since
16721 --QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty determines the pricing_qty
16722 --which is needed later in Get_Eligible_Price_Break we need to call Get_Eligible_Price_Break
16723 --after QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty.
16724 --By doing this we will get the right price in the PRICE event on change of UOM on the order line
16725 --for price based on price break
16726 Get_Eligible_Price_Break(G_PRICE_LIST_PHASE_ID,NULL,l_status_code,l_status_text);
16727
16728 IF(l_status_code = FND_API.G_RET_STS_ERROR) THEN
16729 RAISE E_ROUTINE_ERRORS;
16730 END IF;
16731
16732
16733 --delete children lines of PBH if the parent PBH line get eliminated in
16734 --QP_Resolve_Incompatability_PVT
16735
16736 /* OPEN l_chk_deleted_pbh_cur(l_line_index,G_PRICE_LIST_PHASE_ID);
16737 FETCH l_chk_deleted_pbh_cur INTO l_dummy;
16738 IF l_chk_deleted_pbh_cur%FOUND THEN
16739 Delete_Invalid_PBH_Children(l_line_index,G_PRICE_LIST_PHASE_ID);
16740 END IF;
16741 CLOSE l_chk_deleted_pbh_cur; */
16742 ELSE
16743 -- Update the request line status for lines which got valid price list
16744 Update_Request_Line_Status(p_control_rec,'FAILURE',p_freeze_override_flag,l_status_code,l_status_text); --[juiln/4708044]
16745 IF(l_status_code = FND_API.G_RET_STS_ERROR) THEN
16746 RAISE E_ROUTINE_ERRORS;
16747 END IF;
16748 END IF; --l_loop_count <> 0
16749
16750 qp_debug_util.tstop('PERFORM_SECONDARY_SEARCH');
16751
16752 EXCEPTION
16753 WHEN E_ROUTINE_ERRORS THEN
16754 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16755 engine_debug(l_routine||': '||l_status_text);
16756 END IF;
16757 x_status_code := FND_API.G_RET_STS_ERROR;
16758 x_status_text := l_routine||': '||l_status_text;
16759 WHEN OTHERS THEN
16760 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
16761 engine_debug(SQLERRM);
16762 END IF;
16763 x_status_code := FND_API.G_RET_STS_ERROR;
16764 x_status_text := l_routine||' '||SQLERRM;
16765
16766 END Perform_Secondary_Search;
16767
16768 /*+-----------------------------------------------------------
16769 | PROCEDURE LIST_HEADER_SEARCH
16770 | SEARCH lines for the phase that has search_flag='N'
16771 | The list headers were passed in as qualifiers. Only for the lines that have
16772 | MODLIST and list_lines as their context only will be included
16773 | These lines were not selected by the big union
16774 | select statement at all. Instead, they were populated by populate_temp_table
16775 | This routine has not hadled the case where a price break
16776 | list is passed in as qualifier...
16777 +-------------------------------------------------------------
16778 */
16779
16780 PROCEDURE LIST_HEADER_SEARCH (
16781 p_pricing_phase_id IN NUMBER,
16782 p_is_price_list IN BOOLEAN,
16783 p_freeze_override_flag IN VARCHAR2,
16784 p_control_rec IN CONTROL_RECORD_TYPE,
16785 p_list_mode IN VARCHAR2, --Modifier or Price list Mode
16786 x_further_search OUT NOCOPY VARCHAR2,
16787 x_status_code OUT NOCOPY VARCHAR2,
16788 x_status_text OUT NOCOPY VARCHAR2)
16789 AS
16790 /*
16791 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,qp_npreq_lines_tmp_N3,VALIDATED_FLAG,1
16792 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,qp_npreq_lines_tmp_N3,QUALIFIERS_EXIST_FLAG,2
16793 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,qp_npreq_lines_tmp_N3,PRICING_ATTRS_EXIST_FLAG,3
16794
16795 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
16796 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
16797 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
16798
16799 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
16800 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
16801 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
16802 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
16803 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
16804 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,EXCLUDER_FLAG,6
16805 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,LIST_HEADER_ID,7
16806 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICING_ATTRIBUTES_N5,LIST_LINE_ID,8
16807
16808 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
16809
16810 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
16811
16812 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
16813 INDX,QP_PREQ_GRP.list_header_search.l_list_cur,QP_PRICE_REQ_SOURCES_PK,SOURCE_SYSTEM_CODE,2
16814 */
16815 CURSOR L_LIST_CUR IS
16816 SELECT /*+ ORDERED USE_NL(QPLAT_PROD QPA QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) dynamic_sampling(1) l_list_cur */
16817 QPLAT_PROD.LINE_INDEX,
16818 QPL.LIST_LINE_ID,
16819 QPL.ARITHMETIC_OPERATOR,
16820 QPL.OPERAND,
16821 QPL.PRICING_GROUP_SEQUENCE,
16822 QPL.LIST_LINE_TYPE_CODE,
16823 QPL.PRICING_PHASE_ID,
16824 QPL.AUTOMATIC_FLAG,
16825 QPL.INCOMPATIBILITY_GRP_CODE,
16826 QPL.PRICE_BY_FORMULA_ID,
16827 QPL.PRODUCT_PRECEDENCE,
16828 QPL.PRIMARY_UOM_FLAG,
16829 QPL.MODIFIER_LEVEL_CODE,
16830 QPL.LIST_LINE_NO,
16831 QPA.PRODUCT_UOM_CODE,
16832 QPA.EXCLUDER_FLAG,
16833 QPH.LIST_TYPE_CODE,
16834 QPH.ROUNDING_FACTOR,
16835 QPH.LIST_HEADER_ID LIST_HEADER_ID,
16836 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
16837 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
16838 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
16839 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
16840 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
16841 QPLAT_PROD.APPLIED_FLAG,
16842 NULL PRICING_ATTRIBUTE_CONTEXT,
16843 NULL PRICING_ATTRIBUTE,
16844 NULL PRICING_ATTR_VALUE_FROM,
16845 NULL PRICING_SETUP_VALUE_FROM,
16846 NULL PRICING_SETUP_VALUE_TO,
16847 NULL PRICING_ATTRIBUTE_LEVEL,
16848 NULL PRICING_ATTRIBUTE_TYPE,
16849 NULL PRICING_OPERATOR_TYPE,
16850 NULL PRICING_ATTRIBUTE_DATATYPE
16851 ,QPL.BREAK_UOM_CODE /* Proration */
16852 ,QPL.BREAK_UOM_CONTEXT /* Proration */
16853 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
16854 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
16855 FROM
16856 qp_npreq_lines_tmp QPLINES,
16857 qp_npreq_line_attrs_tmp qplat_prod,
16858 QP_PRICING_ATTRIBUTES QPA,
16859 QP_LIST_LINES QPL,
16860 QP_LIST_HEADERS_B QPH,
16861 --QP_PRICE_REQ_SOURCES qprs
16862 QP_PRICE_REQ_SOURCES_V qprs /* yangli */
16863 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
16864 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND, QP_PREQ_GRP.G_YES_PROD_IND)
16865 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
16866 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
16867 AND (QPLINES.PRICE_FLAG = G_YES
16868 OR
16869 (QPLINES.PRICE_FLAG = G_PHASE
16870 AND
16871 P_FREEZE_OVERRIDE_FLAG = G_YES))
16872 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
16873 AND QPLINES.VALIDATED_FLAG = G_YES
16874 AND QPLINES.QUALIFIERS_EXIST_FLAG IN (G_YES,G_NO)
16875 --AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_NO
16876 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
16877 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
16878 AND QPA.EXCLUDER_FLAG = G_NO
16879 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
16880 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
16881 --added for moac -- commented references to security profile
16882 --security will be built into qp_list_headers_b
16883 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR --begin security
16884 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
16885 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
16886 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
16887 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
16888 AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND, QP_PREQ_GRP.G_YES_PROD_IND)
16889 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
16890 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
16891 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
16892 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
16893 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
16894 TRUNC(SYSDATE) )) AND
16895 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
16896 TRUNC(SYSDATE) ))
16897 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
16898 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
16899 TRUNC(SYSDATE) )) AND
16900 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
16901 TRUNC(SYSDATE) ))
16902 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
16903 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
16904 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
16905 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
16906 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
16907 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
16908 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
16909 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
16910 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
16911 -- OR
16912 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
16913 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
16914 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
16915 AND QPH.ACTIVE_FLAG = G_YES
16916 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
16917 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
16918 AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
16919 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
16920 UNION ALL
16921 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 */
16922 QPLAT_PROD.LINE_INDEX,
16923 QPL.LIST_LINE_ID,
16924 QPL.ARITHMETIC_OPERATOR,
16925 QPL.OPERAND,
16926 QPL.PRICING_GROUP_SEQUENCE,
16927 QPL.LIST_LINE_TYPE_CODE,
16928 QPL.PRICING_PHASE_ID,
16929 QPL.AUTOMATIC_FLAG,
16930 QPL.INCOMPATIBILITY_GRP_CODE,
16931 QPL.PRICE_BY_FORMULA_ID,
16932 QPL.PRODUCT_PRECEDENCE,
16933 QPL.PRIMARY_UOM_FLAG,
16934 QPL.MODIFIER_LEVEL_CODE,
16935 QPL.LIST_LINE_NO,
16936 QPA.PRODUCT_UOM_CODE,
16937 QPA.EXCLUDER_FLAG,
16938 QPH.LIST_TYPE_CODE,
16939 QPH.ROUNDING_FACTOR,
16940 QPH.LIST_HEADER_ID LIST_HEADER_ID,
16941 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
16942 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
16943 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
16944 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
16945 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
16946 QPLAT_PROD.APPLIED_FLAG,
16947 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
16948 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
16949 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
16950 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
16951 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
16952 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
16953 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
16954 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
16955 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE
16956 ,QPL.BREAK_UOM_CODE /* Proration */
16957 ,QPL.BREAK_UOM_CONTEXT /* Proration */
16958 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
16959 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
16960 FROM
16961 qp_npreq_lines_tmp qplines,
16962 qp_npreq_line_attrs_tmp qplat_prod,
16963 QP_PRICING_ATTRIBUTES qpa,
16964 qp_npreq_line_attrs_tmp qplat_pric,
16965 QP_LIST_LINES qpl,
16966 QP_LIST_HEADERS_B qph,
16967 --QP_PRICE_REQ_SOURCES qprs
16968 QP_PRICE_REQ_SOURCES_V qprs /* yangli */
16969 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
16970 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_PRIC_IND)
16971 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
16972 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
16973 AND (QPLINES.PRICE_FLAG = G_YES
16974 OR
16975 (QPLINES.PRICE_FLAG = G_PHASE
16976 AND
16977 P_FREEZE_OVERRIDE_FLAG = G_YES))
16978 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
16979 AND QPLINES.VALIDATED_FLAG = G_YES
16980 AND QPLINES.QUALIFIERS_EXIST_FLAG IN (G_YES,G_NO)
16981 AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_YES
16982 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
16983 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
16984 AND QPA.EXCLUDER_FLAG = G_NO
16985 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
16986 AND QPA.PRICING_ATTRIBUTE_CONTEXT IS NOT NULL
16987 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
16988 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
16989 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
16990 OR
16991 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
16992 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
16993 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
16994 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
16995 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
16996 --added for moac -- commented references to security profile
16997 --security will be built into qp_list_headers_b
16998 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
16999 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
17000 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
17001 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17002 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
17003 AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_PRIC_IND)
17004 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17005 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17006 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17007 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
17008 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
17009 TRUNC(SYSDATE) )) AND
17010 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
17011 TRUNC(SYSDATE) ))
17012 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
17013 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
17014 TRUNC(SYSDATE) )) AND
17015 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
17016 TRUNC(SYSDATE) ))
17017 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
17018 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
17019 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
17020 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
17021 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17022 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17023 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17024 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
17025 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
17026 -- OR
17027 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
17028 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
17029 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
17030 AND QPH.ACTIVE_FLAG = G_YES
17031 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
17032 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
17033 AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17034 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
17035 ORDER BY 1,2; --ORDER BY LINE_INDEX AND LIST LINE ID
17036
17037 -- vivek
17038 CURSOR L_LIST_CUR_CURRENCY IS
17039 SELECT /*+ ORDERED USE_NL(QPLAT_PROD QPA QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) l_list_cur */
17040 QPLAT_PROD.LINE_INDEX,
17041 QPL.LIST_LINE_ID,
17042 QPL.ARITHMETIC_OPERATOR,
17043 QPL.OPERAND,
17044 QPL.PRICING_GROUP_SEQUENCE,
17045 QPL.LIST_LINE_TYPE_CODE,
17046 QPL.PRICING_PHASE_ID,
17047 QPL.AUTOMATIC_FLAG,
17048 QPL.INCOMPATIBILITY_GRP_CODE,
17049 QPL.PRICE_BY_FORMULA_ID,
17050 QPL.PRODUCT_PRECEDENCE,
17051 QPL.PRIMARY_UOM_FLAG,
17052 QPL.MODIFIER_LEVEL_CODE,
17053 QPL.LIST_LINE_NO,
17054 QPA.PRODUCT_UOM_CODE,
17055 QPA.EXCLUDER_FLAG,
17056 QPH.LIST_TYPE_CODE,
17057 /* vivek QPH.ROUNDING_FACTOR, */
17058 QCDT.ROUNDING_FACTOR, /* vivek */
17059 QPH.LIST_HEADER_ID LIST_HEADER_ID,
17060 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
17061 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
17062 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
17063 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
17064 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
17065 QPLAT_PROD.APPLIED_FLAG,
17066 NULL PRICING_ATTRIBUTE_CONTEXT,
17067 NULL PRICING_ATTRIBUTE,
17068 NULL PRICING_ATTR_VALUE_FROM,
17069 NULL PRICING_SETUP_VALUE_FROM,
17070 NULL PRICING_SETUP_VALUE_TO,
17071 NULL PRICING_ATTRIBUTE_LEVEL,
17072 NULL PRICING_ATTRIBUTE_TYPE,
17073 NULL PRICING_OPERATOR_TYPE,
17074 NULL PRICING_ATTRIBUTE_DATATYPE,
17075 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
17076 QCDT.CURRENCY_HEADER_ID, /* vivek */
17077 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
17078 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
17079 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
17080 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
17081 ,QPL.BREAK_UOM_CODE /* Proration */
17082 ,QPL.BREAK_UOM_CONTEXT /* Proration */
17083 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
17084 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
17085 FROM
17086 qp_npreq_lines_tmp QPLINES,
17087 qp_npreq_line_attrs_tmp qplat_prod,
17088 QP_PRICING_ATTRIBUTES QPA,
17089 QP_LIST_LINES QPL,
17090 QP_LIST_HEADERS_B QPH,
17091 --QP_PRICE_REQ_SOURCES qprs,
17092 QP_PRICE_REQ_SOURCES_V qprs, /* yangli */
17093 QP_CURRENCY_DETAILS QCDT /* Vivek */
17094 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17095 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND, QP_PREQ_GRP.G_YES_PROD_IND)
17096 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
17097 AND (QPLINES.PRICE_FLAG = G_YES
17098 OR
17099 (QPLINES.PRICE_FLAG = G_PHASE
17100 AND
17101 P_FREEZE_OVERRIDE_FLAG = G_YES))
17102 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
17103 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
17104 AND QPLINES.VALIDATED_FLAG = G_YES
17105 AND QPLINES.QUALIFIERS_EXIST_FLAG IN (G_YES,G_NO)
17106 --AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_NO
17107 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
17108 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
17109 AND QPA.EXCLUDER_FLAG = G_NO
17110 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17111 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
17112 --added for moac -- commented references to security profile
17113 --security will be built into qp_list_headers_b
17114 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
17115 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
17116 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
17117 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17118 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
17119 AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND, QP_PREQ_GRP.G_YES_PROD_IND)
17120 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17121 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17122 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17123 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
17124 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
17125 TRUNC(SYSDATE) )) AND
17126 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
17127 TRUNC(SYSDATE) ))
17128 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
17129 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
17130 TRUNC(SYSDATE) )) AND
17131 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
17132 TRUNC(SYSDATE) ))
17133 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
17134 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
17135 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
17136 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
17137 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17138 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17139 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17140 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
17141 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
17142 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
17143 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
17144 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17145 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17146 AND ( /* Vivek */
17147 (qcdt.curr_attribute_context is null /* Vivek */
17148 and not exists /* Vivek */
17149 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
17150 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
17151 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
17152 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
17153 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
17154 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
17155 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
17156 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
17157 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
17158 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
17159 and pa_tmp.line_index = qplines.line_index /* Vivek */
17160 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
17161 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17162 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17163 ) /* Vivek */
17164 ) /* Vivek */
17165 OR /* Vivek */
17166 (qcdt.curr_attribute_context is not null /* Vivek */
17167 and qcdt.precedence =
17168 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
17169 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
17170 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
17171 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
17172 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
17173 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
17174 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
17175 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
17176 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
17177 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
17178 and pa_tmp1.line_index = qplines.line_index /* Vivek */
17179 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
17180 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17181 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17182 ) /* Vivek */
17183 ) /* Vivek */
17184 ) /* Vivek */
17185 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
17186 -- OR
17187 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
17188 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
17189 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
17190 AND QPH.ACTIVE_FLAG = G_YES
17191 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
17192 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
17193 AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17194 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
17195 UNION ALL
17196 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 */
17197 QPLAT_PROD.LINE_INDEX,
17198 QPL.LIST_LINE_ID,
17199 QPL.ARITHMETIC_OPERATOR,
17200 QPL.OPERAND,
17201 QPL.PRICING_GROUP_SEQUENCE,
17202 QPL.LIST_LINE_TYPE_CODE,
17203 QPL.PRICING_PHASE_ID,
17204 QPL.AUTOMATIC_FLAG,
17205 QPL.INCOMPATIBILITY_GRP_CODE,
17206 QPL.PRICE_BY_FORMULA_ID,
17207 QPL.PRODUCT_PRECEDENCE,
17208 QPL.PRIMARY_UOM_FLAG,
17209 QPL.MODIFIER_LEVEL_CODE,
17210 QPL.LIST_LINE_NO,
17211 QPA.PRODUCT_UOM_CODE,
17212 QPA.EXCLUDER_FLAG,
17213 QPH.LIST_TYPE_CODE,
17214 /* vivek QPH.ROUNDING_FACTOR, */
17215 QCDT.ROUNDING_FACTOR, /* vivek */
17216 QPH.LIST_HEADER_ID LIST_HEADER_ID,
17217 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
17218 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
17219 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
17220 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
17221 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
17222 QPLAT_PROD.APPLIED_FLAG,
17223 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
17224 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
17225 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
17226 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
17227 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
17228 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
17229 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
17230 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
17231 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
17232 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
17233 QCDT.CURRENCY_HEADER_ID, /* vivek */
17234 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
17235 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
17236 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
17237 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
17238 ,QPL.BREAK_UOM_CODE /* Proration */
17239 ,QPL.BREAK_UOM_CONTEXT /* Proration */
17240 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
17241 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
17242 FROM
17243 qp_npreq_lines_tmp qplines,
17244 qp_npreq_line_attrs_tmp qplat_prod,
17245 QP_PRICING_ATTRIBUTES qpa,
17246 qp_npreq_line_attrs_tmp qplat_pric,
17247 QP_LIST_LINES qpl,
17248 QP_LIST_HEADERS_B qph,
17249 --QP_PRICE_REQ_SOURCES qprs,
17250 QP_PRICE_REQ_SOURCES_V qprs, /* yangli */
17251 QP_CURRENCY_DETAILS QCDT /* Vivek */
17252 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17253 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_PRIC_IND)
17254 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
17255 AND (QPLINES.PRICE_FLAG = G_YES
17256 OR
17257 (QPLINES.PRICE_FLAG = G_PHASE
17258 AND
17259 P_FREEZE_OVERRIDE_FLAG = G_YES))
17260 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
17261 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
17262 AND QPLINES.VALIDATED_FLAG = G_YES
17263 AND QPLINES.QUALIFIERS_EXIST_FLAG IN (G_YES,G_NO)
17264 AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_YES
17265 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
17266 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
17267 AND QPA.EXCLUDER_FLAG = G_NO
17268 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17269 AND QPA.PRICING_ATTRIBUTE_CONTEXT IS NOT NULL
17270 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
17271 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
17272 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
17273 OR
17274 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
17275 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
17276 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17277 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
17278 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
17279 --added for moac -- commented references to security profile
17280 --security will be built into qp_list_headers_b
17281 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
17282 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
17283 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
17284 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17285 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
17286 AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_PRIC_IND)
17287 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17288 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17289 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17290 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
17291 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
17292 TRUNC(SYSDATE) )) AND
17293 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
17294 TRUNC(SYSDATE) ))
17295 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
17296 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
17297 TRUNC(SYSDATE) )) AND
17298 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
17299 TRUNC(SYSDATE) ))
17300 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
17301 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
17302 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
17303 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
17304 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17305 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17306 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17307 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
17308 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
17309 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
17310 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
17311 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17312 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17313 AND ( /* Vivek */
17314 (qcdt.curr_attribute_context is null /* Vivek */
17315 and not exists /* Vivek */
17316 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
17317 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
17318 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
17319 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
17320 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
17321 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
17322 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
17323 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
17324 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
17325 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
17326 and pa_tmp.line_index = qplines.line_index /* Vivek */
17327 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
17328 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17329 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17330 ) /* Vivek */
17331 ) /* Vivek */
17332 OR /* Vivek */
17333 (qcdt.curr_attribute_context is not null /* Vivek */
17334 and qcdt.precedence =
17335 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
17336 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
17337 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
17338 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
17339 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
17340 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
17341 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
17342 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
17343 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
17344 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
17345 and pa_tmp1.line_index = qplines.line_index /* Vivek */
17346 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
17347 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17348 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17349 ) /* Vivek */
17350 ) /* Vivek */
17351 ) /* Vivek */
17352 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
17353 -- OR
17354 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
17355 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
17356 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
17357 AND QPH.ACTIVE_FLAG = G_YES
17358 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
17359 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
17360 AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17361 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
17362 ORDER BY 1,2; --ORDER BY LINE_INDEX AND LIST LINE ID
17363
17364
17365 /*
17366 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_lines_tmp_N3,VALIDATED_FLAG,1
17367 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_lines_tmp_N3,QUALIFIERS_EXIST_FLAG,2
17368 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_lines_tmp_N3,PRICING_ATTRS_EXIST_FLAG,3
17369
17370 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
17371 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_QUALIFIERS_N1,COMPARISON_OPERATOR_CODE,4
17372 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_QUALIFIERS_N1,ACTIVE_FLAG,6
17373
17374 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
17375 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
17376 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
17377 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
17378 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
17379 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
17380
17381 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N6,LIST_HEADER_ID,1
17382 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N6,QUALIFICATION_IND,2
17383 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N6,PRICING_PHASE_ID,3
17384 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N6,LIST_LINE_ID,4
17385
17386 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
17387 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
17388 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
17389
17390 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
17391
17392 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
17393
17394 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
17395 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICE_REQ_SOURCES_PK,SOURCE_SYSTEM_CODE,2
17396
17397 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
17398 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
17399 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
17400 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
17401 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
17402 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,EXCLUDER_FLAG,6
17403 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,LIST_HEADER_ID,7
17404 INDX,QP_PREQ_GRP.list_header_search.l_list_qual_cur,QP_PRICING_ATTRIBUTES_N5,LIST_LINE_ID,8
17405 */
17406 CURSOR L_LIST_QUAL_CUR IS
17407 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 */
17408 QPLAT_PROD.LINE_INDEX,
17409 QPL.LIST_LINE_ID,
17410 QPL.ARITHMETIC_OPERATOR,
17411 QPL.OPERAND,
17412 QPL.PRICING_GROUP_SEQUENCE,
17413 QPL.LIST_LINE_TYPE_CODE,
17414 QPL.PRICING_PHASE_ID,
17415 QPL.AUTOMATIC_FLAG,
17416 QPL.INCOMPATIBILITY_GRP_CODE,
17417 QPL.PRICE_BY_FORMULA_ID,
17418 QPL.PRODUCT_PRECEDENCE,
17419 QPL.PRIMARY_UOM_FLAG,
17420 QPL.MODIFIER_LEVEL_CODE,
17421 QPL.LIST_LINE_NO,
17422 QPA.PRODUCT_UOM_CODE,
17423 QPA.EXCLUDER_FLAG,
17424 QPH.LIST_TYPE_CODE,
17425 QPH.ROUNDING_FACTOR,
17426 QPH.LIST_HEADER_ID LIST_HEADER_ID,
17427 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
17428 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
17429 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
17430 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
17431 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
17432 QPLAT_PROD.APPLIED_FLAG,
17433 NULL PRICING_ATTRIBUTE_CONTEXT,
17434 NULL PRICING_ATTRIBUTE,
17435 NULL PRICING_ATTR_VALUE_FROM,
17436 NULL PRICING_SETUP_VALUE_FROM,
17437 NULL PRICING_SETUP_VALUE_TO,
17438 NULL PRICING_ATTRIBUTE_LEVEL,
17439 NULL PRICING_ATTRIBUTE_TYPE,
17440 NULL PRICING_OPERATOR_TYPE,
17441 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
17442 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
17443 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
17444 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
17445 QPQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
17446 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
17447 QPQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
17448 QPQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
17449 QPQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
17450 QPQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
17451 NULL PRICING_ATTRIBUTE_DATATYPE,
17452 decode(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE
17453 ,QPL.BREAK_UOM_CODE /* Proration */
17454 ,QPL.BREAK_UOM_CONTEXT /* Proration */
17455 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
17456 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
17457 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
17458 FROM
17459 qp_npreq_lines_tmp QPLINES,
17460 QP_QUALIFIERS QPQ,
17461 qp_npreq_line_attrs_tmp QPLAT_Q,
17462 qp_npreq_line_attrs_tmp QPLAT_PROD,
17463 QP_PRICING_ATTRIBUTES QPA,
17464 QP_LIST_LINES QPL,
17465 QP_LIST_HEADERS_B QPH,
17466 --QP_PRICE_REQ_SOURCES QPRS
17467 QP_PRICE_REQ_SOURCES_V QPRS /* yangli */
17468 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17469 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
17470 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
17471 AND (QPLINES.PRICE_FLAG = G_YES
17472 OR
17473 (QPLINES.PRICE_FLAG = G_PHASE
17474 AND
17475 P_FREEZE_OVERRIDE_FLAG = G_YES))
17476 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
17477 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
17478 AND QPLINES.VALIDATED_FLAG = G_NO
17479 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_YES
17480 --AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_NO
17481 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
17482 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
17483 AND QPA.EXCLUDER_FLAG = G_NO
17484 AND QPL.LIST_HEADER_ID = QPH.LIST_HEADER_ID
17485 --added for moac -- commented references to security profile
17486 --security will be built into qp_list_headers_b
17487 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
17488 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
17489 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
17490 --AND QPL.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
17491 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
17492 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17493 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17494 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17495 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17496 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17497 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17498 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17499 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
17500 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
17501 -- OR
17502 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
17503 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
17504 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
17505 AND QPH.ACTIVE_FLAG = G_YES
17506 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
17507 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
17508 -- 3594459, context and attribute OR'd together
17509 AND (QPQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
17510 OR QPQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
17511 AND QPLAT_Q.CONTEXT = QPQ.QUALIFIER_CONTEXT
17512 AND QPLAT_Q.ATTRIBUTE = QPQ.QUALIFIER_ATTRIBUTE
17513 AND QPQ.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17514 AND QPQ.ACTIVE_FLAG = G_YES
17515 AND ((QPLAT_Q.VALUE_FROM = QPQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
17516 AND QPQ.COMPARISON_OPERATOR_CODE = '=')
17517 OR (QPLAT_Q.VALUE_FROM <> QPQ.QUALIFIER_ATTR_VALUE
17518 AND QPQ.COMPARISON_OPERATOR_CODE = 'NOT =')
17519 OR
17520 QPQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
17521 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
17522 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17523 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
17524 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
17525 AND QPLAT_PROD.LINE_INDEX = QPLAT_Q.LINE_INDEX
17526 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17527 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17528 AND QPLAT_Q. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17529 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
17530 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
17531 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
17532 UNION ALL
17533 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)
17534 INDEX(QPA QP_PRICING_ATTRIBUTES_N5) INDEX(QPLAT_PRIC qp_preq_line_attrs_tmp_N2) dynamic_sampling(1) l_list_qual_cur */
17535 QPLAT_PROD.LINE_INDEX,
17536 QPL.LIST_LINE_ID,
17537 QPL.ARITHMETIC_OPERATOR,
17538 QPL.OPERAND,
17539 QPL.PRICING_GROUP_SEQUENCE,
17540 QPL.LIST_LINE_TYPE_CODE,
17541 QPL.PRICING_PHASE_ID,
17542 QPL.AUTOMATIC_FLAG,
17543 QPL.INCOMPATIBILITY_GRP_CODE,
17544 QPL.PRICE_BY_FORMULA_ID,
17545 QPL.PRODUCT_PRECEDENCE,
17546 QPL.PRIMARY_UOM_FLAG,
17547 QPL.MODIFIER_LEVEL_CODE,
17548 QPL.LIST_LINE_NO,
17549 QPA.PRODUCT_UOM_CODE,
17550 QPA.EXCLUDER_FLAG,
17551 QPH.LIST_TYPE_CODE,
17552 QPH.ROUNDING_FACTOR,
17553 QPH.LIST_HEADER_ID LIST_HEADER_ID,
17554 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
17555 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
17556 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
17557 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
17558 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
17559 QPLAT_PROD.APPLIED_FLAG,
17560 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
17561 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
17562 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
17563 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
17564 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
17565 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
17566 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
17567 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
17568 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
17569 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
17570 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
17571 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
17572 QPQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
17573 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
17574 QPQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
17575 QPQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
17576 QPQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
17577 QPQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
17578 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
17579 decode(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE
17580 ,QPL.BREAK_UOM_CODE /* Proration */
17581 ,QPL.BREAK_UOM_CONTEXT /* Proration */
17582 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
17583 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
17584 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
17585 FROM
17586 qp_npreq_lines_tmp QPLINES,
17587 QP_QUALIFIERS QPQ,
17588 qp_npreq_line_attrs_tmp QPLAT_Q,
17589 qp_npreq_line_attrs_tmp QPLAT_PROD,
17590 QP_PRICING_ATTRIBUTES QPA,
17591 qp_npreq_line_attrs_tmp QPLAT_PRIC,
17592 QP_LIST_LINES QPL,
17593 QP_LIST_HEADERS_B QPH,
17594 --QP_PRICE_REQ_SOURCES QPRS
17595 QP_PRICE_REQ_SOURCES_V QPRS /* yangli */
17596 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17597 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
17598 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
17599 AND (QPLINES.PRICE_FLAG = G_YES
17600 OR
17601 (QPLINES.PRICE_FLAG = G_PHASE
17602 AND
17603 P_FREEZE_OVERRIDE_FLAG = G_YES))
17604 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
17605 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
17606 AND QPLINES.VALIDATED_FLAG = G_NO
17607 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_YES
17608 AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_YES
17609 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
17610 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
17611 AND QPA.EXCLUDER_FLAG = G_NO
17612 --AND QPA.PRICING_ATTRIBUTE_CONTEXT IS NOT NULL
17613 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
17614 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
17615 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
17616 OR
17617 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
17618 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
17619 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17620 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
17621 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
17622 --added for moac -- commented references to security profile
17623 --security will be built into qp_list_headers_b
17624 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
17625 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
17626 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
17627 --AND QPL.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
17628 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
17629 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17630 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17631 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17632 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17633 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17634 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17635 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17636 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
17637 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
17638 -- OR
17639 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
17640 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
17641 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
17642 AND QPH.ACTIVE_FLAG = G_YES
17643 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
17644 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
17645 -- 3594459, context and attribute OR'd together
17646 AND (QPQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
17647 OR QPQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
17648 AND QPLAT_Q.CONTEXT = QPQ.QUALIFIER_CONTEXT
17649 AND QPLAT_Q.ATTRIBUTE = QPQ.QUALIFIER_ATTRIBUTE
17650 AND QPQ.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17651 AND QPQ.ACTIVE_FLAG = G_YES
17652 AND ((QPLAT_Q.VALUE_FROM = QPQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
17653 AND QPQ.COMPARISON_OPERATOR_CODE = '=')
17654 OR (QPLAT_Q.VALUE_FROM <> QPQ.QUALIFIER_ATTR_VALUE
17655 AND QPQ.COMPARISON_OPERATOR_CODE = 'NOT =')
17656 OR
17657 QPQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
17658 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
17659 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17660 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
17661 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
17662 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
17663 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17664 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17665 AND QPLAT_Q.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17666 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
17667 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
17668 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
17669 UNION ALL
17670 SELECT /*+ ORDERED USE_NL(QPLINES QPLAT_PROD QPA QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) dynamic_sampling(1) l_list_cur */
17671 QPLAT_PROD.LINE_INDEX,
17672 QPL.LIST_LINE_ID,
17673 QPL.ARITHMETIC_OPERATOR,
17674 QPL.OPERAND,
17675 QPL.PRICING_GROUP_SEQUENCE,
17676 QPL.LIST_LINE_TYPE_CODE,
17677 QPL.PRICING_PHASE_ID,
17678 QPL.AUTOMATIC_FLAG,
17679 QPL.INCOMPATIBILITY_GRP_CODE,
17680 QPL.PRICE_BY_FORMULA_ID,
17681 QPL.PRODUCT_PRECEDENCE,
17682 QPL.PRIMARY_UOM_FLAG,
17683 QPL.MODIFIER_LEVEL_CODE,
17684 QPL.LIST_LINE_NO,
17685 QPA.PRODUCT_UOM_CODE,
17686 QPA.EXCLUDER_FLAG,
17687 QPH.LIST_TYPE_CODE,
17688 QPH.ROUNDING_FACTOR,
17689 QPH.LIST_HEADER_ID LIST_HEADER_ID,
17690 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
17691 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
17692 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
17693 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
17694 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
17695 QPLAT_PROD.APPLIED_FLAG,
17696 NULL PRICING_ATTRIBUTE_CONTEXT,
17697 NULL PRICING_ATTRIBUTE,
17698 NULL PRICING_ATTR_VALUE_FROM,
17699 NULL PRICING_SETUP_VALUE_FROM,
17700 NULL PRICING_SETUP_VALUE_TO,
17701 NULL PRICING_ATTRIBUTE_LEVEL,
17702 NULL PRICING_ATTRIBUTE_TYPE,
17703 NULL PRICING_OPERATOR_TYPE,
17704 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
17705 NULL QUALIFIER_ATTRIBUTE,
17706 NULL QUALIFIER_ATTR_VALUE_FROM,
17707 NULL QUALIFIER_PRICING_ATTR_FLAG,
17708 -9999 QUALIFIER_GROUPING_NO,
17709 5000 QUALIFIER_PRECEDENCE,
17710 NULL QUALIFIER_DATATYPE,
17711 NULL SETUP_VALUE_FROM,
17712 NULL SETUP_VALUE_TO,
17713 NULL QUALIFIER_OPERATOR_TYPE,
17714 NULL PRICING_ATTRIBUTE_DATATYPE,
17715 NULL QUALIFIER_TYPE
17716 ,QPL.BREAK_UOM_CODE /* Proration */
17717 ,QPL.BREAK_UOM_CONTEXT /* Proration */
17718 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
17719 ,qplat_prod.DERIVED_QUALIFIER_FLAG -- Added for TCA
17720 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
17721 FROM
17722 qp_npreq_lines_tmp QPLINES,
17723 qp_npreq_line_attrs_tmp qplat_prod,
17724 QP_PRICING_ATTRIBUTES QPA,
17725 QP_LIST_LINES QPL,
17726 QP_LIST_HEADERS_B QPH,
17727 --QP_PRICE_REQ_SOURCES qprs
17728 QP_PRICE_REQ_SOURCES_V qprs /* yangli */
17729 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17730 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_IND
17731 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
17732 AND (QPLINES.PRICE_FLAG = G_YES
17733 OR
17734 (QPLINES.PRICE_FLAG = G_PHASE
17735 AND
17736 P_FREEZE_OVERRIDE_FLAG = G_YES))
17737 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
17738 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
17739 AND QPLINES.VALIDATED_FLAG = G_NO
17740 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
17741 --AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_NO
17742 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
17743 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
17744 AND QPA.EXCLUDER_FLAG = G_NO
17745 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17746 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
17747 --added for moac -- commented references to security profile
17748 --security will be built into qp_list_headers_b
17749 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
17750 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
17751 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
17752 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
17753 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17754 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17755 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17756 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17757 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17758 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17759 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17760 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
17761 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
17762 -- OR
17763 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
17764 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
17765 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
17766 AND QPH.ACTIVE_FLAG = G_YES
17767 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
17768 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
17769 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17770 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
17771 UNION ALL
17772 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 */
17773 QPLAT_PROD.LINE_INDEX,
17774 QPL.LIST_LINE_ID,
17775 QPL.ARITHMETIC_OPERATOR,
17776 QPL.OPERAND,
17777 QPL.PRICING_GROUP_SEQUENCE,
17778 QPL.LIST_LINE_TYPE_CODE,
17779 QPL.PRICING_PHASE_ID,
17780 QPL.AUTOMATIC_FLAG,
17781 QPL.INCOMPATIBILITY_GRP_CODE,
17782 QPL.PRICE_BY_FORMULA_ID,
17783 QPL.PRODUCT_PRECEDENCE,
17784 QPL.PRIMARY_UOM_FLAG,
17785 QPL.MODIFIER_LEVEL_CODE,
17786 QPL.LIST_LINE_NO,
17787 QPA.PRODUCT_UOM_CODE,
17788 QPA.EXCLUDER_FLAG,
17789 QPH.LIST_TYPE_CODE,
17790 QPH.ROUNDING_FACTOR,
17791 QPH.LIST_HEADER_ID LIST_HEADER_ID,
17792 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
17793 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
17794 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
17795 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
17796 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
17797 QPLAT_PROD.APPLIED_FLAG,
17798 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
17799 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
17800 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
17801 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
17802 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
17803 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
17804 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
17805 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
17806 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
17807 NULL QUALIFIER_ATTRIBUTE,
17808 NULL QUALIFIER_ATTR_VALUE_FROM,
17809 NULL QUALIFIER_PRICING_ATTR_FLAG,
17810 -9999 QUALIFIER_GROUPING_NO,
17811 5000 QUALIFIER_PRECEDENCE,
17812 NULL QUALIFIER_DATATYPE,
17813 NULL SETUP_VALUE_FROM,
17814 NULL SETUP_VALUE_TO,
17815 NULL QUALIFIER_OPERATOR_TYPE,
17816 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
17817 NULL QUALIFIER_TYPE
17818 ,QPL.BREAK_UOM_CODE /* Proration */
17819 ,QPL.BREAK_UOM_CONTEXT /* Proration */
17820 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
17821 ,qplat_pric.DERIVED_QUALIFIER_FLAG -- Added for TCA
17822 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
17823 FROM
17824 qp_npreq_lines_tmp qplines,
17825 qp_npreq_line_attrs_tmp qplat_prod,
17826 QP_PRICING_ATTRIBUTES qpa,
17827 qp_npreq_line_attrs_tmp qplat_pric,
17828 QP_LIST_LINES qpl,
17829 QP_LIST_HEADERS_B qph,
17830 --QP_PRICE_REQ_SOURCES qprs
17831 QP_PRICE_REQ_SOURCES_V qprs /* yangli */
17832 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17833 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
17834 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
17835 AND (QPLINES.PRICE_FLAG = G_YES
17836 OR
17837 (QPLINES.PRICE_FLAG = G_PHASE
17838 AND
17839 P_FREEZE_OVERRIDE_FLAG = G_YES))
17840 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
17841 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
17842 AND QPLINES.VALIDATED_FLAG = G_NO
17843 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
17844 AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_YES
17845 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
17846 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
17847 AND QPA.EXCLUDER_FLAG = G_NO
17848 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17849 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
17850 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
17851 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
17852 OR
17853 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
17854 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
17855 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
17856 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
17857 AND QPH.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17858 --added for moac -- commented references to security profile
17859 --security will be built into qp_list_headers_b
17860 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
17861 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
17862 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
17863 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
17864 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17865 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17866 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17867 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17868 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17869 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17870 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17871 AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE
17872 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
17873 -- OR
17874 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
17875 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
17876 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
17877 AND QPH.ACTIVE_FLAG = G_YES
17878 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
17879 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
17880 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17881 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
17882 ORDER BY 1,2;
17883
17884 -- vivek
17885 CURSOR L_LIST_QUAL_CUR_CURRENCY IS
17886 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 */
17887 QPLAT_PROD.LINE_INDEX,
17888 QPL.LIST_LINE_ID,
17889 QPL.ARITHMETIC_OPERATOR,
17890 QPL.OPERAND,
17891 QPL.PRICING_GROUP_SEQUENCE,
17892 QPL.LIST_LINE_TYPE_CODE,
17893 QPL.PRICING_PHASE_ID,
17894 QPL.AUTOMATIC_FLAG,
17895 QPL.INCOMPATIBILITY_GRP_CODE,
17896 QPL.PRICE_BY_FORMULA_ID,
17897 QPL.PRODUCT_PRECEDENCE,
17898 QPL.PRIMARY_UOM_FLAG,
17899 QPL.MODIFIER_LEVEL_CODE,
17900 QPL.LIST_LINE_NO,
17901 QPA.PRODUCT_UOM_CODE,
17902 QPA.EXCLUDER_FLAG,
17903 QPH.LIST_TYPE_CODE,
17904 /* vivek QPH.ROUNDING_FACTOR, */
17905 QCDT.ROUNDING_FACTOR, /* vivek */
17906 QPH.LIST_HEADER_ID LIST_HEADER_ID,
17907 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
17908 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
17909 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
17910 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
17911 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
17912 QPLAT_PROD.APPLIED_FLAG,
17913 NULL PRICING_ATTRIBUTE_CONTEXT,
17914 NULL PRICING_ATTRIBUTE,
17915 NULL PRICING_ATTR_VALUE_FROM,
17916 NULL PRICING_SETUP_VALUE_FROM,
17917 NULL PRICING_SETUP_VALUE_TO,
17918 NULL PRICING_ATTRIBUTE_LEVEL,
17919 NULL PRICING_ATTRIBUTE_TYPE,
17920 NULL PRICING_OPERATOR_TYPE,
17921 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
17922 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
17923 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
17924 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
17925 QPQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
17926 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
17927 QPQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
17928 QPQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
17929 QPQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
17930 QPQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
17931 NULL PRICING_ATTRIBUTE_DATATYPE,
17932 decode(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE,
17933 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
17934 QCDT.CURRENCY_HEADER_ID, /* vivek */
17935 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
17936 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
17937 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
17938 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
17939 ,QPL.BREAK_UOM_CODE /* Proration */
17940 ,QPL.BREAK_UOM_CONTEXT /* Proration */
17941 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
17942 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
17943 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
17944 FROM
17945 qp_npreq_lines_tmp QPLINES,
17946 QP_QUALIFIERS QPQ,
17947 qp_npreq_line_attrs_tmp QPLAT_Q,
17948 qp_npreq_line_attrs_tmp QPLAT_PROD,
17949 QP_PRICING_ATTRIBUTES QPA,
17950 QP_LIST_LINES QPL,
17951 QP_LIST_HEADERS_B QPH,
17952 --QP_PRICE_REQ_SOURCES QPRS,
17953 QP_PRICE_REQ_SOURCES_V QPRS, /* yangli */
17954 QP_CURRENCY_DETAILS QCDT /* Vivek */
17955 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
17956 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
17957 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
17958 AND (QPLINES.PRICE_FLAG = G_YES
17959 OR
17960 (QPLINES.PRICE_FLAG = G_PHASE
17961 AND
17962 P_FREEZE_OVERRIDE_FLAG = G_YES))
17963 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
17964 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
17965 AND QPLINES.VALIDATED_FLAG = G_NO
17966 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_YES
17967 --AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_NO
17968 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
17969 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
17970 AND QPA.EXCLUDER_FLAG = G_NO
17971 AND QPL.LIST_HEADER_ID = QPH.LIST_HEADER_ID
17972 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
17973 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
17974 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17975 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17976 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17977 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
17978 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17979 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
17980 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
17981 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
17982 --added for moac -- commented references to security profile
17983 --security will be built into qp_list_headers_b
17984 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
17985 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
17986 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
17987 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
17988 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
17989 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17990 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
17991 AND ( /* Vivek */
17992 (qcdt.curr_attribute_context is null /* Vivek */
17993 and not exists /* Vivek */
17994 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
17995 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
17996 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
17997 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
17998 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
17999 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
18000 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
18001 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
18002 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
18003 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18004 and pa_tmp.line_index = qplines.line_index /* Vivek */
18005 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18006 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18007 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18008 ) /* Vivek */
18009 ) /* Vivek */
18010 OR /* Vivek */
18011 (qcdt.curr_attribute_context is not null /* Vivek */
18012 and qcdt.currency_detail_id = /* Vivek */
18013 (select qcdt3.currency_detail_id
18014 from qp_currency_details qcdt3 /* Vivek */
18015 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
18016 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
18017 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18018 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18019 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18020 and qcdt3.precedence =
18021 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
18022 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
18023 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
18024 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
18025 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
18026 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
18027 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
18028 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
18029 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
18030 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18031 and pa_tmp1.line_index = qplines.line_index /* Vivek */
18032 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18033 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18034 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18035 )) /* Vivek */
18036 ) /* Vivek */
18037 ) /* Vivek */
18038 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
18039 -- OR
18040 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
18041 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
18042 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
18043 AND QPH.ACTIVE_FLAG = G_YES
18044 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
18045 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
18046 -- 3594459, context and attribute OR'd together
18047 AND (QPQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
18048 OR QPQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
18049 AND QPLAT_Q.CONTEXT = QPQ.QUALIFIER_CONTEXT
18050 AND QPLAT_Q.ATTRIBUTE = QPQ.QUALIFIER_ATTRIBUTE
18051 AND QPQ.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18052 AND QPQ.ACTIVE_FLAG = G_YES
18053 AND ((QPLAT_Q.VALUE_FROM = QPQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
18054 AND QPQ.COMPARISON_OPERATOR_CODE = '=')
18055 OR (QPLAT_Q.VALUE_FROM <> QPQ.QUALIFIER_ATTR_VALUE
18056 AND QPQ.COMPARISON_OPERATOR_CODE = 'NOT =')
18057 OR
18058 QPQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
18059 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
18060 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18061 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
18062 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
18063 AND QPLAT_PROD.LINE_INDEX = QPLAT_Q.LINE_INDEX
18064 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18065 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18066 AND QPLAT_Q. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18067 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
18068 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
18069 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
18070 UNION ALL
18071 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 */
18072 QPLAT_PROD.LINE_INDEX,
18073 QPL.LIST_LINE_ID,
18074 QPL.ARITHMETIC_OPERATOR,
18075 QPL.OPERAND,
18076 QPL.PRICING_GROUP_SEQUENCE,
18077 QPL.LIST_LINE_TYPE_CODE,
18078 QPL.PRICING_PHASE_ID,
18079 QPL.AUTOMATIC_FLAG,
18080 QPL.INCOMPATIBILITY_GRP_CODE,
18081 QPL.PRICE_BY_FORMULA_ID,
18082 QPL.PRODUCT_PRECEDENCE,
18083 QPL.PRIMARY_UOM_FLAG,
18084 QPL.MODIFIER_LEVEL_CODE,
18085 QPL.LIST_LINE_NO,
18086 QPA.PRODUCT_UOM_CODE,
18087 QPA.EXCLUDER_FLAG,
18088 QPH.LIST_TYPE_CODE,
18089 /* vivek QPH.ROUNDING_FACTOR, */
18090 QCDT.ROUNDING_FACTOR, /* vivek */
18091 QPH.LIST_HEADER_ID LIST_HEADER_ID,
18092 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
18093 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
18094 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
18095 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
18096 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
18097 QPLAT_PROD.APPLIED_FLAG,
18098 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
18099 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
18100 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
18101 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
18102 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
18103 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
18104 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
18105 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
18106 QPLAT_Q.CONTEXT QUALIFIER_ATTRIBUTE_CONTEXT,
18107 QPLAT_Q.ATTRIBUTE QUALIFIER_ATTRIBUTE,
18108 QPLAT_Q.VALUE_FROM QUALIFIER_ATTR_VALUE_FROM,
18109 QPLAT_Q.PRICING_ATTR_FLAG QUALIFIER_PRICING_ATTR_FLAG,
18110 QPQ.QUALIFIER_GROUPING_NO QUALIFIER_GROUPING_NO,
18111 QPQ.QUALIFIER_PRECEDENCE QUALIFIER_PRECEDENCE,
18112 QPQ.QUALIFIER_DATATYPE QUALIFIER_DATATYPE,
18113 QPQ.QUALIFIER_ATTR_VALUE SETUP_VALUE_FROM,
18114 QPQ.QUALIFIER_ATTR_VALUE_TO SETUP_VALUE_TO,
18115 QPQ.COMPARISON_OPERATOR_CODE QUALIFIER_OPERATOR_TYPE,
18116 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
18117 decode(QPQ.list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE,
18118 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
18119 QCDT.CURRENCY_HEADER_ID, /* vivek */
18120 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
18121 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
18122 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
18123 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
18124 ,QPL.BREAK_UOM_CODE /* Proration */
18125 ,QPL.BREAK_UOM_CONTEXT /* Proration */
18126 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
18127 ,QPLAT_Q.DERIVED_QUALIFIER_FLAG -- Added for TCA
18128 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
18129 FROM
18130 qp_npreq_lines_tmp QPLINES,
18131 QP_QUALIFIERS QPQ,
18132 qp_npreq_line_attrs_tmp QPLAT_Q,
18133 qp_npreq_line_attrs_tmp QPLAT_PROD,
18134 QP_PRICING_ATTRIBUTES QPA,
18135 qp_npreq_line_attrs_tmp QPLAT_PRIC,
18136 QP_LIST_LINES QPL,
18137 QP_LIST_HEADERS_B QPH,
18138 --QP_PRICE_REQ_SOURCES QPRS,
18139 QP_PRICE_REQ_SOURCES_V QPRS, /* yangli */
18140 QP_CURRENCY_DETAILS QCDT /* Vivek */
18141 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18142 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
18143 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
18144 AND (QPLINES.PRICE_FLAG = G_YES
18145 OR
18146 (QPLINES.PRICE_FLAG = G_PHASE
18147 AND
18148 P_FREEZE_OVERRIDE_FLAG = G_YES))
18149 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
18150 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
18151 AND QPLINES.VALIDATED_FLAG = G_NO
18152 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_YES
18153 AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_YES
18154 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
18155 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
18156 AND QPA.EXCLUDER_FLAG = G_NO
18157 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
18158 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
18159 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
18160 OR
18161 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
18162 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
18163 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18164 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
18165 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
18166 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
18167 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18168 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18169 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18170 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18171 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18172 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18173 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18174 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
18175 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
18176 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
18177 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18178 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18179 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18180 AND ( /* Vivek */
18181 (qcdt.curr_attribute_context is null /* Vivek */
18182 and not exists /* Vivek */
18183 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
18184 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
18185 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
18186 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
18187 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
18188 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
18189 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
18190 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
18191 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
18192 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18193 and pa_tmp.line_index = qplines.line_index /* Vivek */
18194 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18195 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18196 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18197 ) /* Vivek */
18198 ) /* Vivek */
18199 OR /* Vivek */
18200 (qcdt.curr_attribute_context is not null /* Vivek */
18201 and qcdt.currency_detail_id = /* Vivek */
18202 (select qcdt3.currency_detail_id
18203 from qp_currency_details qcdt3 /* Vivek */
18204 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
18205 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
18206 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18207 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18208 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18209 and qcdt3.precedence =
18210 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
18211 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
18212 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
18213 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
18214 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
18215 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
18216 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
18217 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
18218 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
18219 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18220 and pa_tmp1.line_index = qplines.line_index /* Vivek */
18221 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18222 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18223 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18224 )) /* Vivek */
18225 ) /* Vivek */
18226 ) /* Vivek */
18227 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
18228 -- OR
18229 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
18230 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
18231 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
18232 AND QPH.ACTIVE_FLAG = G_YES
18233 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
18234 AND QPLAT_Q.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
18235 -- 3594459, context and attribute OR'd together
18236 AND (QPQ.QUALIFIER_CONTEXT <> G_LIST_HEADER_CONTEXT
18237 OR QPQ.QUALIFIER_ATTRIBUTE <> G_PRICELIST_ATTRIBUTE)
18238 AND QPLAT_Q.CONTEXT = QPQ.QUALIFIER_CONTEXT
18239 AND QPLAT_Q.ATTRIBUTE = QPQ.QUALIFIER_ATTRIBUTE
18240 AND QPQ.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18241 --added for moac -- commented references to security profile
18242 --security will be built into qp_list_headers_b
18243 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
18244 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
18245 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
18246 AND QPQ.ACTIVE_FLAG = G_YES
18247 AND ((QPLAT_Q.VALUE_FROM = QPQ.QUALIFIER_ATTR_VALUE --bug#1761272 Multiple NOT =
18248 AND QPQ.COMPARISON_OPERATOR_CODE = '=')
18249 OR (QPLAT_Q.VALUE_FROM <> QPQ.QUALIFIER_ATTR_VALUE
18250 AND QPQ.COMPARISON_OPERATOR_CODE = 'NOT =')
18251 OR
18252 QPQ.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
18253 AND QPLAT_Q.LINE_INDEX = QPLINES.LINE_INDEX
18254 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18255 NVL(QPQ.START_DATE_ACTIVE, QPLINES.PRICING_EFFECTIVE_DATE)
18256 AND NVL(QPQ.END_DATE_ACTIVE,QPLINES.PRICING_EFFECTIVE_DATE)
18257 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
18258 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18259 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18260 AND QPLAT_Q. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18261 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
18262 AND ((nvl(QPLAT_Q.DERIVED_QUALIFIER_FLAG,'N')='N')
18263 OR (QPLAT_Q.DERIVED_QUALIFIER_FLAG = 'Y' AND QPQ.QUALIFY_HIER_DESCENDENTS_FLAG = 'Y')) -- Added for TCA
18264 UNION ALL
18265 SELECT /*+ ORDERED USE_NL(QPLINES QPLAT_PROD QPA QPL QPH) index(QPA QP_PRICING_ATTRIBUTES_N5) l_list_cur */
18266 QPLAT_PROD.LINE_INDEX,
18267 QPL.LIST_LINE_ID,
18268 QPL.ARITHMETIC_OPERATOR,
18269 QPL.OPERAND,
18270 QPL.PRICING_GROUP_SEQUENCE,
18271 QPL.LIST_LINE_TYPE_CODE,
18272 QPL.PRICING_PHASE_ID,
18273 QPL.AUTOMATIC_FLAG,
18274 QPL.INCOMPATIBILITY_GRP_CODE,
18275 QPL.PRICE_BY_FORMULA_ID,
18276 QPL.PRODUCT_PRECEDENCE,
18277 QPL.PRIMARY_UOM_FLAG,
18278 QPL.MODIFIER_LEVEL_CODE,
18279 QPL.LIST_LINE_NO,
18280 QPA.PRODUCT_UOM_CODE,
18281 QPA.EXCLUDER_FLAG,
18282 QPH.LIST_TYPE_CODE,
18283 /* vivek QPH.ROUNDING_FACTOR, */
18284 QCDT.ROUNDING_FACTOR, /* vivek */
18285 QPH.LIST_HEADER_ID LIST_HEADER_ID,
18286 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
18287 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
18288 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
18289 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
18290 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
18291 QPLAT_PROD.APPLIED_FLAG,
18292 NULL PRICING_ATTRIBUTE_CONTEXT,
18293 NULL PRICING_ATTRIBUTE,
18294 NULL PRICING_ATTR_VALUE_FROM,
18295 NULL PRICING_SETUP_VALUE_FROM,
18296 NULL PRICING_SETUP_VALUE_TO,
18297 NULL PRICING_ATTRIBUTE_LEVEL,
18298 NULL PRICING_ATTRIBUTE_TYPE,
18299 NULL PRICING_OPERATOR_TYPE,
18300 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
18301 NULL QUALIFIER_ATTRIBUTE,
18302 NULL QUALIFIER_ATTR_VALUE_FROM,
18303 NULL QUALIFIER_PRICING_ATTR_FLAG,
18304 -9999 QUALIFIER_GROUPING_NO,
18305 5000 QUALIFIER_PRECEDENCE,
18306 NULL QUALIFIER_DATATYPE,
18307 NULL SETUP_VALUE_FROM,
18308 NULL SETUP_VALUE_TO,
18309 NULL QUALIFIER_OPERATOR_TYPE,
18310 NULL PRICING_ATTRIBUTE_DATATYPE,
18311 NULL QUALIFIER_TYPE,
18312 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
18313 QCDT.CURRENCY_HEADER_ID, /* vivek */
18314 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
18315 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
18316 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
18317 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
18318 ,QPL.BREAK_UOM_CODE /* Proration */
18319 ,QPL.BREAK_UOM_CONTEXT /* Proration */
18320 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
18321 ,qplat_prod.DERIVED_QUALIFIER_FLAG -- Added for TCA
18322 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
18323 FROM
18324 qp_npreq_lines_tmp QPLINES,
18325 qp_npreq_line_attrs_tmp qplat_prod,
18326 QP_PRICING_ATTRIBUTES QPA,
18327 QP_LIST_LINES QPL,
18328 QP_LIST_HEADERS_B QPH,
18329 --QP_PRICE_REQ_SOURCES qprs,
18330 QP_PRICE_REQ_SOURCES_V qprs, /* yangli */
18331 QP_CURRENCY_DETAILS QCDT /* Vivek */
18332 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18333 --AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND, QP_PREQ_GRP.G_YES_PROD_IND)
18334 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_IND
18335 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
18336 AND (QPLINES.PRICE_FLAG = G_YES
18337 OR
18338 (QPLINES.PRICE_FLAG = G_PHASE
18339 AND
18340 P_FREEZE_OVERRIDE_FLAG = G_YES))
18341 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
18342 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
18343 AND QPLINES.VALIDATED_FLAG = G_NO
18344 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
18345 --AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_NO
18346 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
18347 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
18348 AND QPA.EXCLUDER_FLAG = G_NO
18349 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18350 AND QPH.LIST_HEADER_ID = QPL.LIST_HEADER_ID
18351 --added for moac -- commented references to security profile
18352 --security will be built into qp_list_headers_b
18353 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
18354 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
18355 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
18356 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
18357 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18358 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18359 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18360 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18361 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18362 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18363 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18364 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
18365 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
18366 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
18367 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18368 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18369 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18370 AND ( /* Vivek */
18371 (qcdt.curr_attribute_context is null /* Vivek */
18372 and not exists /* Vivek */
18373 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
18374 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
18375 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
18376 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
18377 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
18378 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
18379 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
18380 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
18381 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
18382 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18383 and pa_tmp.line_index = qplines.line_index /* Vivek */
18384 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18385 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18386 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18387 ) /* Vivek */
18388 ) /* Vivek */
18389 OR /* Vivek */
18390 (qcdt.curr_attribute_context is not null /* Vivek */
18391 and qcdt.currency_detail_id = /* Vivek */
18392 (select qcdt3.currency_detail_id
18393 from qp_currency_details qcdt3 /* Vivek */
18394 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
18395 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
18396 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18397 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18398 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18399 and qcdt3.precedence =
18400 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
18401 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
18402 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
18403 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
18404 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
18405 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
18406 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
18407 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
18408 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
18409 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18410 and pa_tmp1.line_index = qplines.line_index /* Vivek */
18411 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18412 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18413 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18414 )) /* Vivek */
18415 ) /* Vivek */
18416 ) /* Vivek */
18417 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
18418 -- OR
18419 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
18420 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
18421 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
18422 AND QPH.ACTIVE_FLAG = G_YES
18423 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
18424 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
18425 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18426 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
18427 UNION ALL
18428 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 */
18429 QPLAT_PROD.LINE_INDEX,
18430 QPL.LIST_LINE_ID,
18431 QPL.ARITHMETIC_OPERATOR,
18432 QPL.OPERAND,
18433 QPL.PRICING_GROUP_SEQUENCE,
18434 QPL.LIST_LINE_TYPE_CODE,
18435 QPL.PRICING_PHASE_ID,
18436 QPL.AUTOMATIC_FLAG,
18437 QPL.INCOMPATIBILITY_GRP_CODE,
18438 QPL.PRICE_BY_FORMULA_ID,
18439 QPL.PRODUCT_PRECEDENCE,
18440 QPL.PRIMARY_UOM_FLAG,
18441 QPL.MODIFIER_LEVEL_CODE,
18442 QPL.LIST_LINE_NO,
18443 QPA.PRODUCT_UOM_CODE,
18444 QPA.EXCLUDER_FLAG,
18445 QPH.LIST_TYPE_CODE,
18446 /* vivek QPH.ROUNDING_FACTOR, */
18447 QCDT.ROUNDING_FACTOR, /* vivek */
18448 QPH.LIST_HEADER_ID LIST_HEADER_ID,
18449 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
18450 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
18451 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
18452 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
18453 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
18454 QPLAT_PROD.APPLIED_FLAG,
18455 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
18456 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
18457 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
18458 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
18459 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
18460 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
18461 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
18462 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
18463 NULL QUALIFIER_ATTRIBUTE_CONTEXT,
18464 NULL QUALIFIER_ATTRIBUTE,
18465 NULL QUALIFIER_ATTR_VALUE_FROM,
18466 NULL QUALIFIER_PRICING_ATTR_FLAG,
18467 -9999 QUALIFIER_GROUPING_NO,
18468 5000 QUALIFIER_PRECEDENCE,
18469 NULL QUALIFIER_DATATYPE,
18470 NULL SETUP_VALUE_FROM,
18471 NULL SETUP_VALUE_TO,
18472 NULL QUALIFIER_OPERATOR_TYPE,
18473 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE,
18474 NULL QUALIFIER_TYPE,
18475 QCDT.CURRENCY_DETAIL_ID, /* sunilpandey */
18476 QCDT.CURRENCY_HEADER_ID, /* vivek */
18477 QCDT.SELLING_ROUNDING_FACTOR, /* vivek */
18478 QPLINES.CURRENCY_CODE ORDER_CURRENCY, /* vivek */
18479 QPLINES.PRICING_EFFECTIVE_DATE, /* vivek */
18480 QPH.CURRENCY_CODE BASE_CURRENCY_CODE /* vivek */
18481 ,QPL.BREAK_UOM_CODE /* Proration */
18482 ,QPL.BREAK_UOM_CONTEXT /* Proration */
18483 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
18484 ,qplat_pric.DERIVED_QUALIFIER_FLAG -- Added for TCA
18485 ,QPL.PRICE_BREAK_TYPE_CODE --[julin] for price book
18486 FROM
18487 qp_npreq_lines_tmp qplines,
18488 qp_npreq_line_attrs_tmp qplat_prod,
18489 QP_PRICING_ATTRIBUTES qpa,
18490 qp_npreq_line_attrs_tmp qplat_pric,
18491 QP_LIST_LINES qpl,
18492 QP_LIST_HEADERS_B qph,
18493 --QP_PRICE_REQ_SOURCES qprs,
18494 QP_PRICE_REQ_SOURCES_V qprs, /* yangli */
18495 QP_CURRENCY_DETAILS QCDT /* Vivek */
18496 WHERE QPA.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18497 AND QPA.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
18498 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
18499 AND (QPLINES.PRICE_FLAG = G_YES
18500 OR
18501 (QPLINES.PRICE_FLAG = G_PHASE
18502 AND
18503 P_FREEZE_OVERRIDE_FLAG = G_YES))
18504 AND QPLINES.LIST_PRICE_OVERRIDE_FLAG IN ('N', 'O') --po integration
18505 AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL
18506 AND QPLINES.VALIDATED_FLAG = G_NO
18507 AND QPLINES.QUALIFIERS_EXIST_FLAG = G_NO
18508 AND QPLINES.PRICING_ATTRS_EXIST_FLAG = G_YES
18509 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
18510 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
18511 AND QPA.EXCLUDER_FLAG = G_NO
18512 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18513 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
18514 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
18515 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
18516 OR
18517 QPA.COMPARISON_OPERATOR_CODE IN ('NOT =', G_OPERATOR_BETWEEN))
18518 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
18519 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18520 AND QPLAT_PRIC.LINE_INDEX = QPLAT_PROD.LINE_INDEX
18521 AND QPH.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18522 --added for moac -- commented references to security profile
18523 --security will be built into qp_list_headers_b
18524 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
18525 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
18526 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
18527 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
18528 AND QPA.LIST_HEADER_ID = QPLINES.PRICE_LIST_HEADER_ID
18529 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18530 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18531 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18532 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18533 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18534 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18535 /* Vivek AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE */
18536 AND QPH.CURRENCY_HEADER_ID = QCDT.CURRENCY_HEADER_ID /* Vivek */
18537 AND QPLINES.CURRENCY_CODE = QCDT.TO_CURRENCY_CODE /* Vivek */
18538 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18539 NVL(TRUNC(QCDT.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18540 AND NVL(TRUNC(QCDT.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18541 AND ( /* Vivek */
18542 (qcdt.curr_attribute_context is null /* Vivek */
18543 and not exists /* Vivek */
18544 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
18545 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1 /* Vivek */
18546 where qcdt1.curr_attribute_context IS NOT NULL /* Vivek */
18547 and qcdt1.curr_attribute_context = pa_tmp.context /* Vivek */
18548 and qcdt1.curr_attribute = pa_tmp.attribute /* Vivek */
18549 and qcdt1.curr_attribute_value = pa_tmp.value_from /* Vivek */
18550 and qcdt1.curr_attribute_type = pa_tmp.ATTRIBUTE_TYPE /* Vivek */
18551 and qcdt1.to_currency_code = qcdt.to_currency_code /* Vivek */
18552 and qcdt1.currency_header_id = qcdt.currency_header_id /* Vivek */
18553 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18554 and pa_tmp.line_index = qplines.line_index /* Vivek */
18555 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18556 NVL(TRUNC(QCDT1.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18557 AND NVL(TRUNC(QCDT1.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18558 ) /* Vivek */
18559 ) /* Vivek */
18560 OR /* Vivek */
18561 (qcdt.curr_attribute_context is not null /* Vivek */
18562 and qcdt.currency_detail_id = /* Vivek */
18563 (select qcdt3.currency_detail_id
18564 from qp_currency_details qcdt3 /* Vivek */
18565 where qcdt3.to_currency_code = qcdt.to_currency_code /* Vivek */
18566 and qcdt3.currency_header_id = qcdt.currency_header_id /* Vivek */
18567 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18568 NVL(TRUNC(QCDT3.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18569 AND NVL(TRUNC(QCDT3.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18570 and qcdt3.precedence =
18571 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
18572 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2 /* Vivek */
18573 where qcdt2.curr_attribute_context IS NOT NULL /* Vivek */
18574 and qcdt2.curr_attribute_context = pa_tmp1.context /* Vivek */
18575 and qcdt2.curr_attribute = pa_tmp1.attribute /* Vivek */
18576 and qcdt2.curr_attribute_value = pa_tmp1.value_from /* Vivek */
18577 and qcdt2.curr_attribute_type = pa_tmp1.ATTRIBUTE_TYPE /* Vivek */
18578 and qcdt2.to_currency_code = qcdt.to_currency_code /* Vivek */
18579 and qcdt2.currency_header_id = qcdt.currency_header_id /* Vivek */
18580 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED /* Vivek */
18581 and pa_tmp1.line_index = qplines.line_index /* Vivek */
18582 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN /* Vivek */
18583 NVL(TRUNC(QCDT2.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18584 AND NVL(TRUNC(QCDT2.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)/* Vivek */
18585 )) /* Vivek */
18586 ) /* Vivek */
18587 ) /* Vivek */
18588 --AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
18589 -- OR
18590 -- QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
18591 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
18592 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
18593 AND QPH.ACTIVE_FLAG = G_YES
18594 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
18595 AND QPLAT_PROD.LINE_INDEX = QPLINES.LINE_INDEX
18596 --AND QPL.PRICING_PHASE_ID = G_PRICE_LIST_PHASE_ID
18597 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
18598 ORDER BY 1,2;
18599
18600 /*
18601 INDX,QP_PREQ_GRP.list_header_search.l_validated_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
18602 INDX,QP_PREQ_GRP.list_header_search.l_validated_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
18603 INDX,QP_PREQ_GRP.list_header_search.l_validated_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
18604 INDX,QP_PREQ_GRP.list_header_search.l_validated_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
18605
18606 INDX,QP_PREQ_GRP.list_header_search.l_validated_cur,qp_npreq_lines_tmp_U1,LINE_INDEX,1
18607 INDX,QP_PREQ_GRP.list_header_search.l_validated_cur,qp_npreq_lines_tmp_U1,LINE_TYPE_CODE,2
18608 */
18609
18610 CURSOR l_validated_cur IS
18611 SELECT /*+ dynamic_sampling(1) */ LINE_INDEX,
18612 LINE_DETAIL_INDEX,
18613 ATTRIBUTE_LEVEL,
18614 ATTRIBUTE_TYPE,
18615 CONTEXT,
18616 ATTRIBUTE,
18617 VALUE_FROM,
18618 VALUE_TO,
18619 PRODUCT_UOM_CODE,
18620 COMPARISON_OPERATOR_TYPE_CODE COMPARISON_OPERATOR_TYPE
18621 FROM qp_npreq_line_attrs_tmp a
18622 WHERE PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18623 AND VALIDATED_FLAG = G_VALIDATED
18624 AND CONTEXT = G_LIST_HEADER_CONTEXT
18625 AND ATTRIBUTE IN (G_PROMOTION_ATTRIBUTE,G_QUAL_ATTRIBUTE2)
18626 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
18627 AND EXISTS
18628 (Select /*+ dynamic_sampling(1) */ 'X'
18629 FROM qp_npreq_lines_tmp b
18630 WHERE b.line_index = a.line_index
18631 AND (b.price_flag = G_YES
18632 OR
18633 (b.price_flag = G_PHASE
18634 AND
18635 p_freeze_override_flag = G_YES)
18636 )
18637 AND b.line_type_code <> G_ORDER_LEVEL
18638 );
18639
18640 --THE DIFFERENT BETWEEN THIS SEARCH AND PRICE LIST SEARCH
18641 --IS THIS SEARCH CHECKS FOR LINE LEVEL QUALIFIER ALSO
18642 /*
18643 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
18644
18645 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
18646 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
18647 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
18648
18649 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
18650 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,qp_npreq_lines_tmp_N1,LINE_TYPE_CODE,2
18651
18652 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
18653 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
18654 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
18655 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
18656 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
18657 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N5,LIST_HEADER_ID,7
18658 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N5,LIST_LINE_ID,8
18659
18660 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
18661 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICE_REQ_SOURCES_PK,SOURCE_SYSTEM_CODE,2
18662
18663 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
18664
18665 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N4,PRICING_ATTRIBUTE_CONTEXT,1
18666 INDX,QP_PREQ_GRP.list_header_search.l_other_list_cur,QP_PRICING_ATTRIBUTES_N4,PRICING_ATTRIBUTE,2
18667 */
18668
18669 CURSOR L_OTHER_LIST_CUR (L_LINE_INDEX PLS_INTEGER,
18670 L_LIST_HEADER_ID NUMBER,
18671 P_FREEZE_OVERRIDE_FLAG VARCHAR2)IS
18672 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 */
18673 QPLINES.LINE_INDEX,
18674 QPL.LIST_LINE_ID,
18675 QPL.ARITHMETIC_OPERATOR,
18676 QPL.OPERAND,
18677 QPL.PRICING_GROUP_SEQUENCE,
18678 QPL.LIST_LINE_TYPE_CODE,
18679 QPL.LIST_PRICE,
18680 QPL.LIST_PRICE_UOM_CODE,
18681 QPL.PERCENT_PRICE,
18682 QPL.PRICING_PHASE_ID,
18683 QPL.AUTOMATIC_FLAG,
18684 QPL.OVERRIDE_FLAG,
18685 QPL.PRINT_ON_INVOICE_FLAG,
18686 QPL.MODIFIER_LEVEL_CODE,
18687 QPL.BENEFIT_QTY,
18688 QPL.BENEFIT_UOM_CODE,
18689 QPL.LIST_LINE_NO,
18690 QPL.ACCRUAL_FLAG,
18691 QPL.ACCRUAL_CONVERSION_RATE,
18692 QPL.ESTIM_ACCRUAL_RATE,
18693 QPL.RECURRING_FLAG,
18694 QPL.INCOMPATIBILITY_GRP_CODE,
18695 QPL.PRICE_BY_FORMULA_ID,
18696 QPL.PRODUCT_PRECEDENCE,
18697 QPL.PRIMARY_UOM_FLAG,
18698 QPA.PRODUCT_UOM_CODE,
18699 QPA.EXCLUDER_FLAG,
18700 QPH.ASK_FOR_FLAG,
18701 QPH.LIST_TYPE_CODE,
18702 QPH.ROUNDING_FACTOR,
18703 QPLAT_PROD.LINE_DETAIL_INDEX,
18704 L_LIST_HEADER_ID LIST_HEADER_ID,
18705 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
18706 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
18707 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
18708 QPLAT_PROD.VALUE_TO PRODUCT_ATTR_VALUE_TO,
18709 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
18710 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
18711 QPL.AUTOMATIC_FLAG APPLIED_FLAG, -- shu fix bug 1915355
18712 QPLAT_PROD.COMPARISON_OPERATOR_TYPE_CODE PRODUCT_OPERATOR_TYPE,
18713 NULL PRICING_ATTRIBUTE_CONTEXT,
18714 NULL PRICING_ATTRIBUTE,
18715 NULL PRICING_ATTR_VALUE_FROM,
18716 NULL PRICING_SETUP_VALUE_FROM,
18717 NULL PRICING_SETUP_VALUE_TO,
18718 NULL PRICING_ATTRIBUTE_LEVEL,
18719 NULL PRICING_ATTRIBUTE_TYPE,
18720 NULL PRICING_OPERATOR_TYPE,
18721 NULL PRICING_ATTRIBUTE_DATATYPE
18722 FROM
18723 qp_npreq_lines_tmp QPLINES,
18724 qp_npreq_line_attrs_tmp QPLAT_PROD,
18725 QP_PRICING_ATTRIBUTES QPA,
18726 QP_LIST_HEADERS_B QPH,
18727 QP_LIST_LINES QPL,
18728 QP_PRICE_REQ_SOURCES_V QPRS
18729 WHERE QPA.PRICING_PHASE_ID = P_PRICING_PHASE_ID
18730 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_IND, QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND,
18731 QP_PREQ_GRP.G_YES_PROD_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_HDR_LINE_QUAL_IND)
18732 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
18733 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
18734 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
18735 AND QPLINES.PRICED_UOM_CODE = NVL(QPA.PRODUCT_UOM_CODE,QPLINES.PRICED_UOM_CODE)
18736 AND (QPLINES.PRICE_FLAG = G_YES
18737 OR
18738 (QPLINES.PRICE_FLAG = G_PHASE
18739 AND
18740 P_FREEZE_OVERRIDE_FLAG = G_YES))
18741 AND QPH.LIST_HEADER_ID = L_LIST_HEADER_ID
18742 --added for moac -- commented references to security profile
18743 --security will be built into qp_list_headers_b
18744 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
18745 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
18746 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
18747 AND QPH.ASK_FOR_FLAG = G_YES
18748 AND QPA.LIST_HEADER_ID = L_LIST_HEADER_ID
18749 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
18750 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
18751 --AND QPL.PRICING_PHASE_ID = p_pricing_phase_id
18752 --AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_IND, QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND,
18753 -- QP_PREQ_GRP.G_YES_PROD_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_HDR_LINE_QUAL_IND)
18754 AND QPLAT_PROD.LINE_INDEX = L_LINE_INDEX
18755 AND QPLINES.LINE_INDEX = L_LINE_INDEX
18756 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18757 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18758 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18759 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
18760 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
18761 TRUNC(SYSDATE) )) AND
18762 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
18763 TRUNC(SYSDATE) ))
18764 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
18765 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
18766 TRUNC(SYSDATE) )) AND
18767 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
18768 TRUNC(SYSDATE) ))
18769 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
18770 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
18771 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
18772 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
18773 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18774 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18775 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18776 AND ((QPH.CURRENCY_CODE IS NOT NULL AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE)
18777 OR
18778 QPH.CURRENCY_CODE IS NULL) -- optional currency
18779 AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
18780 OR
18781 QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
18782 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
18783 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
18784 AND QPH.ACTIVE_FLAG = G_YES
18785 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18786 UNION ALL
18787 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 */
18788 QPLINES.LINE_INDEX,
18789 QPL.LIST_LINE_ID,
18790 QPL.ARITHMETIC_OPERATOR,
18791 QPL.OPERAND,
18792 QPL.PRICING_GROUP_SEQUENCE,
18793 QPL.LIST_LINE_TYPE_CODE,
18794 QPL.LIST_PRICE,
18795 QPL.LIST_PRICE_UOM_CODE,
18796 QPL.PERCENT_PRICE,
18797 QPL.PRICING_PHASE_ID,
18798 QPL.AUTOMATIC_FLAG,
18799 QPL.OVERRIDE_FLAG,
18800 QPL.PRINT_ON_INVOICE_FLAG,
18801 QPL.MODIFIER_LEVEL_CODE,
18802 QPL.BENEFIT_QTY,
18803 QPL.BENEFIT_UOM_CODE,
18804 QPL.LIST_LINE_NO,
18805 QPL.ACCRUAL_FLAG,
18806 QPL.ACCRUAL_CONVERSION_RATE,
18807 QPL.ESTIM_ACCRUAL_RATE,
18808 QPL.RECURRING_FLAG,
18809 QPL.INCOMPATIBILITY_GRP_CODE,
18810 QPL.PRICE_BY_FORMULA_ID,
18811 QPL.PRODUCT_PRECEDENCE,
18812 QPL.PRIMARY_UOM_FLAG,
18813 QPA.PRODUCT_UOM_CODE,
18814 QPA.EXCLUDER_FLAG,
18815 QPH.ASK_FOR_FLAG,
18816 QPH.LIST_TYPE_CODE,
18817 QPH.ROUNDING_FACTOR,
18818 QPLAT_PROD.LINE_DETAIL_INDEX,
18819 L_LIST_HEADER_ID LIST_HEADER_ID,
18820 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
18821 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
18822 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
18823 QPLAT_PROD.VALUE_TO PRODUCT_ATTR_VALUE_TO,
18824 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
18825 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
18826 QPL.AUTOMATIC_FLAG APPLIED_FLAG, -- shu fix bug 1915355
18827 QPLAT_PROD.COMPARISON_OPERATOR_TYPE_CODE PRODUCT_OPERATOR_TYPE,
18828 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
18829 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
18830 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
18831 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
18832 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
18833 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
18834 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
18835 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
18836 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE
18837 FROM
18838 qp_npreq_lines_tmp QPLINES,
18839 qp_npreq_line_attrs_tmp QPLAT_PROD,
18840 QP_PRICING_ATTRIBUTES QPA,
18841 qp_npreq_line_attrs_tmp QPLAT_PRIC,
18842 QP_LIST_HEADERS_B QPH,
18843 QP_LIST_LINES QPL,
18844 QP_PRICE_REQ_SOURCES QPRS
18845 WHERE QPA.PRICING_PHASE_ID = p_pricing_phase_id
18846 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_IND, QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,
18847 QP_PREQ_GRP.G_YES_PROD_PRIC_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PRIC_HDR_LINE_QUAL_IND)
18848 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
18849 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
18850 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
18851 AND QPLINES.PRICED_UOM_CODE = NVL(QPA.PRODUCT_UOM_CODE,QPLINES.PRICED_UOM_CODE)
18852 AND (QPLINES.PRICE_FLAG = G_YES
18853 OR
18854 (QPLINES.PRICE_FLAG = G_PHASE
18855 AND
18856 P_FREEZE_OVERRIDE_FLAG = G_YES))
18857 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
18858 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
18859 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
18860 OR
18861 QPA.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
18862 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
18863 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18864 AND QPLAT_PROD.LINE_INDEX = QPLAT_PRIC.LINE_INDEX
18865 AND QPH.LIST_HEADER_ID = L_LIST_HEADER_ID
18866 AND QPH.ASK_FOR_FLAG = G_YES
18867 AND QPA.LIST_HEADER_ID = L_LIST_HEADER_ID
18868 --added for moac -- commented references to security profile
18869 --security will be built into qp_list_headers_b
18870 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
18871 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
18872 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
18873 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
18874 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
18875 --AND QPL.PRICING_PHASE_ID = p_pricing_phase_id
18876 --AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_IND, QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,
18877 -- QP_PREQ_GRP.G_YES_PROD_PRIC_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PRIC_HDR_LINE_QUAL_IND)
18878 AND QPLAT_PROD.LINE_INDEX = L_LINE_INDEX
18879 AND QPLINES.LINE_INDEX = L_LINE_INDEX
18880 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18881 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18882 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18883 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
18884 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
18885 TRUNC(SYSDATE) )) AND
18886 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
18887 TRUNC(SYSDATE) ))
18888 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
18889 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
18890 TRUNC(SYSDATE) )) AND
18891 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
18892 TRUNC(SYSDATE) ))
18893 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
18894 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
18895 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
18896 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
18897 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
18898 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18899 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
18900 AND ((QPH.CURRENCY_CODE IS NOT NULL AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE)
18901 OR
18902 QPH.CURRENCY_CODE IS NULL) -- optional currency
18903 AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
18904 OR
18905 QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
18906 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
18907 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
18908 AND QPH.ACTIVE_FLAG = G_YES
18909 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
18910 ORDER BY 1,2;
18911
18912
18913 CURSOR L_OTHER_LIST_LINE_CUR (L_LINE_INDEX PLS_INTEGER,
18914 L_LIST_LINE_ID NUMBER,
18915 P_FREEZE_OVERRIDE_FLAG VARCHAR2)IS
18916 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 */
18917 QPLINES.LINE_INDEX,
18918 QPL.LIST_LINE_ID,
18919 QPL.ARITHMETIC_OPERATOR,
18920 QPL.OPERAND,
18921 QPL.PRICING_GROUP_SEQUENCE,
18922 QPL.LIST_LINE_TYPE_CODE,
18923 QPL.LIST_PRICE,
18924 QPL.LIST_PRICE_UOM_CODE,
18925 QPL.PERCENT_PRICE,
18926 QPL.PRICING_PHASE_ID,
18927 QPL.AUTOMATIC_FLAG,
18928 QPL.OVERRIDE_FLAG,
18929 QPL.PRINT_ON_INVOICE_FLAG,
18930 QPL.MODIFIER_LEVEL_CODE,
18931 QPL.BENEFIT_QTY,
18932 QPL.BENEFIT_UOM_CODE,
18933 QPL.LIST_LINE_NO,
18934 QPL.ACCRUAL_FLAG,
18935 QPL.ACCRUAL_CONVERSION_RATE,
18936 QPL.ESTIM_ACCRUAL_RATE,
18937 QPL.RECURRING_FLAG,
18938 QPL.INCOMPATIBILITY_GRP_CODE,
18939 QPL.PRICE_BY_FORMULA_ID,
18940 QPL.PRODUCT_PRECEDENCE,
18941 QPL.PRIMARY_UOM_FLAG,
18942 QPA.PRODUCT_UOM_CODE,
18943 QPA.EXCLUDER_FLAG,
18944 QPH.ASK_FOR_FLAG,
18945 QPH.LIST_TYPE_CODE,
18946 QPH.ROUNDING_FACTOR,
18947 QPLAT_PROD.LINE_DETAIL_INDEX,
18948 QPL.LIST_HEADER_ID LIST_HEADER_ID,
18949 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
18950 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
18951 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
18952 QPLAT_PROD.VALUE_TO PRODUCT_ATTR_VALUE_TO,
18953 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
18954 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
18955 QPL.AUTOMATIC_FLAG APPLIED_FLAG, -- fix bug 1915355
18956 QPLAT_PROD.COMPARISON_OPERATOR_TYPE_CODE PRODUCT_OPERATOR_TYPE,
18957 NULL PRICING_ATTRIBUTE_CONTEXT,
18958 NULL PRICING_ATTRIBUTE,
18959 NULL PRICING_ATTR_VALUE_FROM,
18960 NULL PRICING_SETUP_VALUE_FROM,
18961 NULL PRICING_SETUP_VALUE_TO,
18962 NULL PRICING_ATTRIBUTE_LEVEL,
18963 NULL PRICING_ATTRIBUTE_TYPE,
18964 NULL PRICING_OPERATOR_TYPE,
18965 NULL PRICING_ATTRIBUTE_DATATYPE
18966 FROM
18967 qp_npreq_lines_tmp QPLINES,
18968 qp_npreq_line_attrs_tmp QPLAT_PROD,
18969 QP_PRICING_ATTRIBUTES QPA,
18970 QP_LIST_HEADERS_B QPH,
18971 QP_LIST_LINES QPL,
18972 QP_PRICE_REQ_SOURCES QPRS
18973 WHERE QPA.PRICING_PHASE_ID = P_PRICING_PHASE_ID
18974 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_IND, QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND,
18975 QP_PREQ_GRP.G_YES_PROD_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_HDR_LINE_QUAL_IND)
18976 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
18977 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
18978 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
18979 AND QPLINES.PRICED_UOM_CODE = NVL(QPA.PRODUCT_UOM_CODE,QPLINES.PRICED_UOM_CODE)
18980 AND (QPLINES.PRICE_FLAG = G_YES
18981 OR
18982 (QPLINES.PRICE_FLAG = G_PHASE
18983 AND
18984 P_FREEZE_OVERRIDE_FLAG = G_YES))
18985 AND QPH.LIST_HEADER_ID = QPA.LIST_HEADER_ID
18986 --added for moac -- commented references to security profile
18987 --security will be built into qp_list_headers_b
18988 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
18989 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
18990 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
18991 AND QPH.ASK_FOR_FLAG = G_YES
18992 AND QPA.LIST_LINE_ID = L_LIST_LINE_ID
18993 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
18994 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
18995 --AND QPL.PRICING_PHASE_ID = p_pricing_phase_id
18996 --AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_IND, QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND,
18997 -- QP_PREQ_GRP.G_YES_PROD_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PROD_HDR_LINE_QUAL_IND)
18998 AND QPLAT_PROD.LINE_INDEX = L_LINE_INDEX
18999 AND QPLINES.LINE_INDEX = L_LINE_INDEX
19000 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
19001 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19002 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19003 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
19004 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
19005 TRUNC(SYSDATE) )) AND
19006 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
19007 TRUNC(SYSDATE) ))
19008 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
19009 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
19010 TRUNC(SYSDATE) )) AND
19011 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
19012 TRUNC(SYSDATE) ))
19013 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
19014 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
19015 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
19016 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
19017 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
19018 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19019 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19020 AND ((QPH.CURRENCY_CODE IS NOT NULL AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE)
19021 OR
19022 QPH.CURRENCY_CODE IS NULL) -- optional currency
19023 AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
19024 OR
19025 QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
19026 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
19027 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
19028 AND QPH.ACTIVE_FLAG = G_YES
19029 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
19030 UNION ALL
19031 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 */
19032 QPLINES.LINE_INDEX,
19033 QPL.LIST_LINE_ID,
19034 QPL.ARITHMETIC_OPERATOR,
19035 QPL.OPERAND,
19036 QPL.PRICING_GROUP_SEQUENCE,
19037 QPL.LIST_LINE_TYPE_CODE,
19038 QPL.LIST_PRICE,
19039 QPL.LIST_PRICE_UOM_CODE,
19040 QPL.PERCENT_PRICE,
19041 QPL.PRICING_PHASE_ID,
19042 QPL.AUTOMATIC_FLAG,
19043 QPL.OVERRIDE_FLAG,
19044 QPL.PRINT_ON_INVOICE_FLAG,
19045 QPL.MODIFIER_LEVEL_CODE,
19046 QPL.BENEFIT_QTY,
19047 QPL.BENEFIT_UOM_CODE,
19048 QPL.LIST_LINE_NO,
19049 QPL.ACCRUAL_FLAG,
19050 QPL.ACCRUAL_CONVERSION_RATE,
19051 QPL.ESTIM_ACCRUAL_RATE,
19052 QPL.RECURRING_FLAG,
19053 QPL.INCOMPATIBILITY_GRP_CODE,
19054 QPL.PRICE_BY_FORMULA_ID,
19055 QPL.PRODUCT_PRECEDENCE,
19056 QPL.PRIMARY_UOM_FLAG,
19057 QPA.PRODUCT_UOM_CODE,
19058 QPA.EXCLUDER_FLAG,
19059 QPH.ASK_FOR_FLAG,
19060 QPH.LIST_TYPE_CODE,
19061 QPH.ROUNDING_FACTOR,
19062 QPLAT_PROD.LINE_DETAIL_INDEX,
19063 QPL.LIST_HEADER_ID LIST_HEADER_ID,
19064 QPLAT_PROD.CONTEXT PRODUCT_ATTRIBUTE_CONTEXT,
19065 QPLAT_PROD.ATTRIBUTE PRODUCT_ATTRIBUTE,
19066 QPLAT_PROD.VALUE_FROM PRODUCT_ATTR_VALUE_FROM,
19067 QPLAT_PROD.VALUE_TO PRODUCT_ATTR_VALUE_TO,
19068 QPLAT_PROD.ATTRIBUTE_LEVEL PRODUCT_ATTRIBUTE_LEVEL,
19069 QPLAT_PROD.ATTRIBUTE_TYPE PRODUCT_ATTRIBUTE_TYPE,
19070 QPL.AUTOMATIC_FLAG APPLIED_FLAG, -- shu fix bug 1915355
19071 QPLAT_PROD.COMPARISON_OPERATOR_TYPE_CODE PRODUCT_OPERATOR_TYPE,
19072 QPLAT_PRIC.CONTEXT PRICING_ATTRIBUTE_CONTEXT,
19073 QPLAT_PRIC.ATTRIBUTE PRICING_ATTRIBUTE,
19074 QPLAT_PRIC.VALUE_FROM PRICING_ATTR_VALUE_FROM,
19075 QPA.PRICING_ATTR_VALUE_FROM PRICING_SETUP_VALUE_FROM,
19076 QPA.PRICING_ATTR_VALUE_TO PRICING_SETUP_VALUE_TO,
19077 QPLAT_PRIC.ATTRIBUTE_LEVEL PRICING_ATTRIBUTE_LEVEL,
19078 QPLAT_PRIC.ATTRIBUTE_TYPE PRICING_ATTRIBUTE_TYPE,
19079 QPA.COMPARISON_OPERATOR_CODE PRICING_OPERATOR_TYPE,
19080 QPA.PRICING_ATTRIBUTE_DATATYPE PRICING_ATTRIBUTE_DATATYPE
19081 FROM
19082 qp_npreq_lines_tmp QPLINES,
19083 qp_npreq_line_attrs_tmp QPLAT_PROD,
19084 QP_PRICING_ATTRIBUTES QPA,
19085 qp_npreq_line_attrs_tmp QPLAT_PRIC,
19086 QP_LIST_HEADERS_B QPH,
19087 QP_LIST_LINES QPL,
19088 QP_PRICE_REQ_SOURCES QPRS
19089 WHERE QPA.PRICING_PHASE_ID = p_pricing_phase_id
19090 AND QPA.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_IND, QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,
19091 QP_PREQ_GRP.G_YES_PROD_PRIC_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PRIC_HDR_LINE_QUAL_IND)
19092 AND QPLAT_PROD.CONTEXT = QPA.PRODUCT_ATTRIBUTE_CONTEXT
19093 AND QPLAT_PROD.ATTRIBUTE = QPA.PRODUCT_ATTRIBUTE
19094 AND QPLAT_PROD.VALUE_FROM = QPA.PRODUCT_ATTR_VALUE
19095 AND QPLINES.PRICED_UOM_CODE = NVL(QPA.PRODUCT_UOM_CODE,QPLINES.PRICED_UOM_CODE)
19096 AND (QPLINES.PRICE_FLAG = G_YES
19097 OR
19098 (QPLINES.PRICE_FLAG = G_PHASE
19099 AND
19100 P_FREEZE_OVERRIDE_FLAG = G_YES))
19101 AND QPLAT_PRIC.CONTEXT = QPA.PRICING_ATTRIBUTE_CONTEXT
19102 AND QPLAT_PRIC.ATTRIBUTE = QPA.PRICING_ATTRIBUTE
19103 AND (QPLAT_PRIC.VALUE_FROM = QPA.PRICING_ATTR_VALUE_FROM
19104 OR
19105 QPA.COMPARISON_OPERATOR_CODE = G_OPERATOR_BETWEEN)
19106 AND QPLAT_PRIC.ATTRIBUTE_TYPE = G_PRICING_TYPE
19107 AND QPLAT_PRIC. PRICING_STATUS_CODE = G_STATUS_UNCHANGED
19108 AND QPLAT_PROD.LINE_INDEX = QPLAT_PRIC.LINE_INDEX
19109 AND QPH.LIST_HEADER_ID = QPA.LIST_HEADER_ID
19110 --added for moac -- commented references to security profile
19111 --security will be built into qp_list_headers_b
19112 -- AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
19113 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
19114 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
19115 AND QPH.ASK_FOR_FLAG = G_YES
19116 AND QPA.LIST_LINE_ID = L_LIST_LINE_ID
19117 AND QPA.LIST_LINE_ID = QPL.LIST_LINE_ID
19118 AND QPLAT_PROD.ATTRIBUTE_TYPE = G_PRODUCT_TYPE
19119 --AND QPL.PRICING_PHASE_ID = p_pricing_phase_id
19120 --AND QPL.QUALIFICATION_IND IN (QP_PREQ_GRP.G_YES_PROD_PRIC_IND, QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND,
19121 -- QP_PREQ_GRP.G_YES_PROD_PRIC_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_PRIC_HDR_LINE_QUAL_IND)
19122 AND QPLAT_PROD.LINE_INDEX = L_LINE_INDEX
19123 AND QPLINES.LINE_INDEX = L_LINE_INDEX
19124 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
19125 NVL(TRUNC(QPH.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19126 AND NVL(TRUNC(QPH.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19127 AND NVL(QPLINES.START_DATE_ACTIVE_FIRST,TRUNC(SYSDATE)) BETWEEN
19128 NVL(QPH.START_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
19129 TRUNC(SYSDATE) )) AND
19130 NVL(QPH.END_DATE_ACTIVE_FIRST, NVL(QPLINES.START_DATE_ACTIVE_FIRST,
19131 TRUNC(SYSDATE) ))
19132 AND NVL(QPLINES.START_DATE_ACTIVE_SECOND,TRUNC(SYSDATE)) BETWEEN
19133 NVL(QPH.START_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
19134 TRUNC(SYSDATE) )) AND
19135 NVL(QPH.END_DATE_ACTIVE_SECOND, NVL(QPLINES.START_DATE_ACTIVE_SECOND,
19136 TRUNC(SYSDATE) ))
19137 AND NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X') =
19138 NVL(QPH.ACTIVE_DATE_FIRST_TYPE,NVL(QPLINES.ACTIVE_DATE_FIRST_TYPE,'X'))
19139 AND NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X') =
19140 NVL(QPH.ACTIVE_DATE_SECOND_TYPE,NVL(QPLINES.ACTIVE_DATE_SECOND_TYPE,'X'))
19141 AND QPLINES.PRICING_EFFECTIVE_DATE BETWEEN
19142 NVL(TRUNC(QPL.START_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19143 AND NVL(TRUNC(QPL.END_DATE_ACTIVE),QPLINES.PRICING_EFFECTIVE_DATE)
19144 AND ((QPH.CURRENCY_CODE IS NOT NULL AND QPH.CURRENCY_CODE = QPLINES.CURRENCY_CODE)
19145 OR
19146 QPH.CURRENCY_CODE IS NULL) -- optional currency
19147 AND (QPL.MODIFIER_LEVEL_CODE = QPLINES.LINE_TYPE_CODE
19148 OR
19149 QPL.MODIFIER_LEVEL_CODE = G_LINE_GROUP AND QPLINES.LINE_TYPE_CODE <> G_ORDER_LEVEL)
19150 AND QPH.SOURCE_SYSTEM_CODE = QPRS.SOURCE_SYSTEM_CODE
19151 AND QPLINES.REQUEST_TYPE_CODE = QPRS.REQUEST_TYPE_CODE
19152 AND QPH.ACTIVE_FLAG = G_YES
19153 AND QPLAT_PROD.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
19154 ORDER BY 1,2;
19155
19156 /*
19157 INDX,QP_PREQ_GRP.list_header_search.l_check_no_list_passed,- No Index Used-,NA,NA
19158 */
19159 CURSOR L_CHECK_NO_LIST_PASSED IS
19160 SELECT 'X'
19161 FROM qp_npreq_lines_tmp A
19162 WHERE PROCESSED_CODE IN (G_NO_LIST_PASSED,G_STS_LHS_NOT_FOUND)
19163 AND LINE_TYPE_CODE <> G_ORDER_LEVEL
19164 AND (instr(PROCESS_STATUS,'FREEGOOD')=0); -- bug 2693700
19165
19166 /*
19167 INDX,QP_PREQ_GRP.list_header_search.l_check_secondary_search,- No Index Used-,NA,NA
19168 */
19169 CURSOR l_check_secondary_search IS
19170 SELECT 'X'
19171 FROM qp_npreq_lines_tmp
19172 WHERE PROCESSED_CODE = G_STS_LHS_NOT_FOUND
19173 AND LINE_TYPE_CODE <> G_ORDER_LEVEL
19174 AND (instr(PROCESS_STATUS,'FREEGOOD')=0); -- bug 2693700
19175
19176 /*
19177 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
19178 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,PRICING_PHASE_ID,2
19179 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,ASK_FOR_FLAG,3
19180 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,CREATED_FROM_LIST_LINE_TYPE,4
19181 */
19182 CURSOR l_chk_deleted_pbh_cur(p_line_index IN PLS_INTEGER,
19183 p_pricing_phase_id NUMBER) IS
19184 SELECT 'X'
19185 FROM qp_npreq_ldets_tmp
19186 WHERE created_from_list_line_type = G_PRICE_BREAK_TYPE
19187 AND line_index = p_line_index
19188 AND pricing_phase_id = p_pricing_phase_id
19189 AND pricing_status_code <> G_STATUS_NEW;
19190
19191 L_LINE_DETAIL_INDEX PLS_INTEGER;
19192 L_OPERAND_CALCULATION_CODE VARCHAR2(30);
19193 L_OPERAND_VALUE VARCHAR2(30);
19194 L_PRICING_GROUP_SEQUENCE PLS_INTEGER;
19195 L_STATUS_CODE VARCHAR2(30);
19196 L_STATUS_TEXT VARCHAR2(240);
19197 L_LIST_HEADER_ID NUMBER;
19198 L_LIST_LINE_ID NUMBER;
19199 l_incomp_list_line_id NUMBER;
19200 l_incomp_return_status VARCHAR2(30);
19201 l_price_list_line_id NUMBER;
19202 l_sec_price_list_line_id NUMBER;
19203 l_sec_incomp_list_line_id NUMBER;
19204 l_sec_incomp_return_status VARCHAR2(30);
19205 L_LIST_LINE_TYPE_CODE VARCHAR2(30);
19206 L_LIST_PRICE NUMBER;
19207 L_LIST_PRICE_UOM_CODE VARCHAR2(30);
19208 L_PERCENT_PRICE NUMBER;
19209 L_RESULT_FLAG VARCHAR(1):='N';
19210 L_LOOP_COUNT PLS_INTEGER := 0;
19211 x_loop_count PLS_INTEGER := 0;
19212 L_ROUTINE VARCHAR2(240):='ROUTINE:QP_PREQ_GRP.LIST_HEADER_SEARCH';
19213 L_SECONDARY_LIST VARCHAR2(30);
19214 E_NO_LIST_FOUND EXCEPTION;
19215 E_SEARCH_FLAG_ERROR EXCEPTION;
19216 L_DUMMY VARCHAR2(1);
19217 L_ERROR_LINE_INDEX PLS_INTEGER;
19218 L_HAVE_NOT_VALIDATED VARCHAR2(30):= G_NO;
19219 L_EX_LINE_INDEX PLS_INTEGER:=-1;
19220 L_EX_PRECEDENCE PLS_INTEGER:=99999999;
19221 L_EX_LIST_LINE_ID PLS_INTEGER:=-1;
19222 L_BAD_LIST_LINE_ID NUMBER:=-1;
19223 L_FURTHER_SEARCH_SWITCH VARCHAR2(3):='OFF';
19224 PERFORM_SEC_PL_SEARCH BOOLEAN := FALSE;
19225 QUALIFIER_EXISTS_FLAG BOOLEAN := FALSE;
19226 v_list_header_id NUMBER;
19227 v_sec_list_header_id NUMBER;
19228 v_sec_list_line_id NUMBER;
19229 l_pricing_effective_date DATE;
19230 q BINARY_INTEGER:=NULL;
19231 l_line_quantity NUMBER;
19232 l_line_uom_code VARCHAR2(30);
19233 x_list_line_id NUMBER;
19234 l_return_status VARCHAR2(240);
19235 x_return_status VARCHAR2(240);
19236 x_return_status_txt VARCHAR2(240);
19237 l_error_status_code VARCHAR2(30);
19238 l_error_status_txt VARCHAR2(240);
19239 K PLS_INTEGER:=1;
19240 M PLS_INTEGER:=1;
19241 nROWS CONSTANT NUMBER := 5000;
19242
19243 lq_line_index NUMBER := -9999;
19244 lq_list_line_id NUMBER := -9999;
19245
19246 E_ROUTINE_ERRORS EXCEPTION;
19247
19248
19249 BEGIN
19250
19251 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19252 engine_debug('IN '|| L_ROUTINE);
19253
19254 END IF;
19255
19256 x_status_code := FND_API.G_RET_STS_SUCCESS;
19257
19258 IF (p_pricing_phase_id <> G_PRICE_LIST_PHASE_ID) THEN -- Only for modifiers ask for list headers/lines
19259
19260 IF (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES) THEN -- price book
19261 -- Validated List Headers / List Lines
19262 FOR J IN L_VALIDATED_CUR LOOP
19263
19264 IF (J.ATTRIBUTE = G_PROMOTION_ATTRIBUTE) THEN
19265
19266 lq_line_index := -9999;
19267 lq_list_line_id := -9999;
19268
19269 L_LIST_HEADER_ID := TO_NUMBER(J.VALUE_FROM);
19270 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19271 ENGINE_DEBUG('Asked For List Header ID:'||L_LIST_HEADER_ID || 'Line : ' || J.LINE_INDEX);
19272 END IF;
19273
19274 qp_debug_util.tstart('L_OTHER_LIST_CUR','Cursor Loop L_OTHER_LIST_CUR');
19275
19276
19277 FOR K IN L_OTHER_LIST_CUR (J.LINE_INDEX,
19278 L_LIST_HEADER_ID,
19279 P_FREEZE_OVERRIDE_FLAG)
19280 LOOP
19281 IF (lq_line_index <> j.line_index OR lq_list_line_id <> k.list_line_id) THEN
19282
19283 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19284 engine_debug('List line id selected from asked for prom l_other_list_cur : '||K.list_line_id );
19285 END IF;
19286 L_LINE_DETAIL_INDEX := GET_LINE_DETAIL_INDEX;
19287
19288 INSERT_LDETS(P_LINE_DETAIL_INDEX => L_LINE_DETAIL_INDEX,
19289 P_LINE_DETAIL_TYPE_CODE => 'NULL',
19290 P_LINE_INDEX => J.LINE_INDEX,
19291 P_CREATED_FROM_LIST_HEADER_ID => L_LIST_HEADER_ID,
19292 P_CREATED_FROM_LIST_LINE_ID => K.LIST_LINE_ID,
19293 P_CREATED_FROM_LIST_TYPE_CODE => K.LIST_TYPE_CODE,
19294 P_CREATED_FROM_SQL => 'LHS_MODIFIER ',
19295 P_PRICING_PHASE_ID => K.PRICING_PHASE_ID,
19296 P_CREATED_FROM_LIST_LINE_TYPE => K.LIST_LINE_TYPE_CODE,
19297 P_PRICING_GROUP_SEQUENCE => K.PRICING_GROUP_SEQUENCE,
19298 P_OPERAND_CALCULATION_CODE => K.ARITHMETIC_OPERATOR,
19299 P_OPERAND_VALUE => K.OPERAND,
19300 P_PRICING_STATUS_CODE => G_STATUS_NEW,
19301 P_PROCESSED_FLAG => G_NOT_PROCESSED,
19302 P_AUTOMATIC_FLAG => K.AUTOMATIC_FLAG,
19303 P_APPLIED_FLAG => K.APPLIED_FLAG, -- fix bug 1915355
19304 P_OVERRIDE_FLAG => K.OVERRIDE_FLAG,
19305 P_PRINT_ON_INVOICE_FLAG => K.PRINT_ON_INVOICE_FLAG,
19306 P_MODIFIER_LEVEL_CODE => K.MODIFIER_LEVEL_CODE,
19307 P_BENEFIT_QTY => K.BENEFIT_QTY,
19308 P_BENEFIT_UOM_CODE => K.BENEFIT_UOM_CODE,
19309 P_LIST_LINE_NO => K.LIST_LINE_NO,
19310 P_ACCRUAL_FLAG => K.ACCRUAL_FLAG,
19311 P_ACCRUAL_CONVERSION_RATE => K.ACCRUAL_CONVERSION_RATE,
19312 P_ESTIM_ACCRUAL_RATE => K.ESTIM_ACCRUAL_RATE,
19313 P_RECURRING_FLAG => K.RECURRING_FLAG,
19314 P_INCOMPATABLILITY_GRP_CODE => K.INCOMPATIBILITY_GRP_CODE,
19315 P_PRICE_FORMULA_ID => K.PRICE_BY_FORMULA_ID,
19316 P_PRODUCT_PRECEDENCE => K.PRODUCT_PRECEDENCE,
19317 P_PRIMARY_UOM_FLAG => K.PRIMARY_UOM_FLAG,
19318 P_ASK_FOR_FLAG => K.ASK_FOR_FLAG,
19319 P_ROUNDING_FACTOR => K.ROUNDING_FACTOR,
19320 X_STATUS_CODE => L_STATUS_CODE,
19321 X_STATUS_TEXT => L_STATUS_TEXT);
19322
19323 lq_line_index := j.line_index;
19324 lq_list_line_id := k.list_line_id;
19325
19326 END IF;
19327
19328 --INSERT PRODUCT ATTRIBUTES
19329 G_LINE_INDEX_tbl(M) := K.LINE_INDEX;
19330 G_LINE_DETAIL_INDEX_tbl(M) := L_LINE_DETAIL_INDEX;
19331 G_ATTRIBUTE_LEVEL_tbl(M) := K.PRODUCT_ATTRIBUTE_LEVEL;
19332 G_ATTRIBUTE_TYPE_tbl(M) := K.PRODUCT_ATTRIBUTE_TYPE;
19333 G_LIST_HEADER_ID_TBL(M) := K.LIST_HEADER_ID;
19334 G_LIST_LINE_ID_TBL(M) := K.LIST_LINE_ID;
19335 G_CONTEXT_tbl(M) := K.PRODUCT_ATTRIBUTE_CONTEXT;
19336 G_ATTRIBUTE_tbl(M) := K.PRODUCT_ATTRIBUTE;
19337 G_VALUE_FROM_tbl(M) := K.PRODUCT_ATTR_VALUE_FROM;
19338 G_COMPARISON_OPERATOR_TYPE_tbl(M):= K.PRODUCT_OPERATOR_TYPE;
19339 G_APPLIED_FLAG_tbl(M) := K.APPLIED_FLAG;
19340 G_PRICING_STATUS_CODE_tbl(M) := G_STATUS_NEW;
19341 G_PRICING_STATUS_TEXT_tbl(M) :='INSERTED IN VALIDATED ASKED FOR PROMOTION SEARCH';
19342 G_EXCLUDER_FLAG_TBL(M) :=K.EXCLUDER_FLAG;
19343 G_PRODUCT_UOM_CODE_TBL(M) :=K.PRODUCT_UOM_CODE;
19344 G_VALIDATED_FLAG_tbl(M) := NULL;
19345 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
19346 G_SETUP_VALUE_FROM_tbl(M) := NULL;
19347 G_SETUP_VALUE_TO_tbl(M) := NULL;
19348 G_GROUPING_NUMBER_tbl(M) := NULL;
19349 G_QUALIFIER_PRECEDENCE_tbl(M) := NULL;
19350 G_DATATYPE_tbl(M) := NULL;
19351 G_QUALIFIER_TYPE_TBL(M) := NULL;
19352 G_PRICING_PHASE_ID_TBL_A(M) := K.PRICING_PHASE_ID;
19353 G_INCOMP_GRP_CODE_TBL_A(M) := K.INCOMPATIBILITY_GRP_CODE;
19354 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
19355 G_MODIFIER_LEVEL_CODE_TBL_A(M) := K.MODIFIER_LEVEL_CODE;
19356 G_PRIMARY_UOM_FLAG_TBL_A(M) := K.PRIMARY_UOM_FLAG;
19357 M:= M+1;
19358
19359
19360 IF (K.PRICING_ATTRIBUTE_CONTEXT IS NOT NULL) THEN
19361 --INSERT PRICING ATTRIBUTES
19362 G_LINE_INDEX_tbl(M) := K.LINE_INDEX;
19363 G_LINE_DETAIL_INDEX_tbl(M) := L_LINE_DETAIL_INDEX;
19364 G_ATTRIBUTE_LEVEL_tbl(M) := K.PRICING_ATTRIBUTE_LEVEL;
19365 G_ATTRIBUTE_TYPE_tbl(M) := K.PRICING_ATTRIBUTE_TYPE;
19366 G_LIST_HEADER_ID_TBL(M) := K.LIST_HEADER_ID;
19367 G_LIST_LINE_ID_TBL(M) := K.LIST_LINE_ID;
19368 G_CONTEXT_tbl(M) := K.PRICING_ATTRIBUTE_CONTEXT;
19369 G_ATTRIBUTE_tbl(M) := K.PRICING_ATTRIBUTE;
19370 G_VALUE_FROM_tbl(M) := K.PRICING_ATTR_VALUE_FROM;
19371 G_SETUP_VALUE_FROM_tbl(M) := K.PRICING_SETUP_VALUE_FROM;
19372 G_SETUP_VALUE_TO_tbl(M) := K.PRICING_SETUP_VALUE_TO;
19373 G_COMPARISON_OPERATOR_TYPE_tbl(M):= K.PRICING_OPERATOR_TYPE;
19374 G_APPLIED_FLAG_tbl(M) := K.APPLIED_FLAG;
19375 G_PRICING_STATUS_CODE_tbl(M) := G_STATUS_NEW;
19376 G_PRICING_STATUS_TEXT_tbl(M) :='INSERTED IN VALIDATED ASKED FOR PROMOTION SEARCH';
19377 G_EXCLUDER_FLAG_TBL(M) :=K.EXCLUDER_FLAG;
19378 G_PRODUCT_UOM_CODE_TBL(M) :=K.PRODUCT_UOM_CODE;
19379 G_VALIDATED_FLAG_tbl(M) := NULL;
19380 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
19381 G_GROUPING_NUMBER_tbl(M) := NULL;
19382 G_QUALIFIER_PRECEDENCE_tbl(M) := NULL;
19383 G_DATATYPE_tbl(M) := K.PRICING_ATTRIBUTE_DATATYPE;
19384 G_QUALIFIER_TYPE_TBL(M) := NULL;
19385 G_PRICING_PHASE_ID_TBL_A(M) := K.PRICING_PHASE_ID;
19386 G_INCOMP_GRP_CODE_TBL_A(M) := K.INCOMPATIBILITY_GRP_CODE;
19387 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
19388 G_MODIFIER_LEVEL_CODE_TBL_A(M) := K.MODIFIER_LEVEL_CODE;
19389 G_PRIMARY_UOM_FLAG_TBL_A(M) := K.PRIMARY_UOM_FLAG;
19390 M:= M+1;
19391 END IF;
19392 l_loop_count := l_loop_count +1;
19393 END LOOP;
19394
19395 qp_debug_util.tstop('L_OTHER_LIST_CUR');
19396
19397 ELSE -- Asked for list line
19398
19399 lq_line_index := -9999;
19400 lq_list_line_id := -9999;
19401
19402 L_LIST_LINE_ID := to_number(J.VALUE_FROM);
19403 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19404 ENGINE_DEBUG('Asked For List Line ID:'||L_LIST_LINE_ID || 'Line : ' || J.LINE_INDEX);
19405 ENGINE_DEBUG('Pricing Phase Id:'||p_pricing_phase_id );
19406
19407 END IF;
19408
19409 qp_debug_util.tstart('L_OTHER_LIST_LINE_CUR','Cursor Loop L_OTHER_LIST_LINE_CUR');
19410
19411 FOR K IN L_OTHER_LIST_LINE_CUR (J.LINE_INDEX,
19412 L_LIST_LINE_ID,
19413 P_FREEZE_OVERRIDE_FLAG)
19414 LOOP
19415 IF (lq_line_index <> j.line_index OR lq_list_line_id <> k.list_line_id) THEN
19416 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19417 engine_debug('List line id selected from asked for prom l_other_list_cur : '||K.list_line_id );
19418 END IF;
19419 L_LINE_DETAIL_INDEX := GET_LINE_DETAIL_INDEX;
19420
19421 INSERT_LDETS(P_LINE_DETAIL_INDEX => L_LINE_DETAIL_INDEX,
19422 P_LINE_DETAIL_TYPE_CODE => 'NULL',
19423 P_LINE_INDEX => J.LINE_INDEX,
19424 P_CREATED_FROM_LIST_HEADER_ID => K.LIST_HEADER_ID,
19425 P_CREATED_FROM_LIST_LINE_ID => K.LIST_LINE_ID,
19426 P_CREATED_FROM_LIST_TYPE_CODE => K.LIST_TYPE_CODE,
19427 P_CREATED_FROM_SQL => 'LHS_MODIFIER ',
19428 P_PRICING_PHASE_ID => K.PRICING_PHASE_ID,
19429 P_CREATED_FROM_LIST_LINE_TYPE => K.LIST_LINE_TYPE_CODE,
19430 P_PRICING_GROUP_SEQUENCE => K.PRICING_GROUP_SEQUENCE,
19431 P_OPERAND_CALCULATION_CODE => K.ARITHMETIC_OPERATOR,
19432 P_OPERAND_VALUE => K.OPERAND,
19433 P_PRICING_STATUS_CODE => G_STATUS_NEW,
19434 P_PROCESSED_FLAG => G_NOT_PROCESSED,
19435 P_AUTOMATIC_FLAG => K.AUTOMATIC_FLAG,
19436 P_APPLIED_FLAG => K.APPLIED_FLAG,
19437 P_OVERRIDE_FLAG => K.OVERRIDE_FLAG,
19438 P_PRINT_ON_INVOICE_FLAG => K.PRINT_ON_INVOICE_FLAG,
19439 P_MODIFIER_LEVEL_CODE => K.MODIFIER_LEVEL_CODE,
19440 P_BENEFIT_QTY => K.BENEFIT_QTY,
19441 P_BENEFIT_UOM_CODE => K.BENEFIT_UOM_CODE,
19442 P_LIST_LINE_NO => K.LIST_LINE_NO,
19443 P_ACCRUAL_FLAG => K.ACCRUAL_FLAG,
19444 P_ACCRUAL_CONVERSION_RATE => K.ACCRUAL_CONVERSION_RATE,
19445 P_ESTIM_ACCRUAL_RATE => K.ESTIM_ACCRUAL_RATE,
19446 P_RECURRING_FLAG => K.RECURRING_FLAG,
19447 P_INCOMPATABLILITY_GRP_CODE => K.INCOMPATIBILITY_GRP_CODE,
19448 P_PRICE_FORMULA_ID => K.PRICE_BY_FORMULA_ID,
19449 P_PRODUCT_PRECEDENCE => K.PRODUCT_PRECEDENCE,
19450 P_PRIMARY_UOM_FLAG => K.PRIMARY_UOM_FLAG,
19451 P_ASK_FOR_FLAG => K.ASK_FOR_FLAG,
19452 P_ROUNDING_FACTOR => K.ROUNDING_FACTOR,
19453 X_STATUS_CODE => L_STATUS_CODE,
19454 X_STATUS_TEXT => L_STATUS_TEXT);
19455
19456 lq_line_index := j.line_index;
19457 lq_list_line_id := k.list_line_id;
19458
19459 END IF;
19460
19461 --INSERT PRODUCT ATTRIBUTES
19462 G_LINE_INDEX_tbl(M) := K.LINE_INDEX;
19463 G_LINE_DETAIL_INDEX_tbl(M) := L_LINE_DETAIL_INDEX;
19464 G_ATTRIBUTE_LEVEL_tbl(M) := K.PRODUCT_ATTRIBUTE_LEVEL;
19465 G_ATTRIBUTE_TYPE_tbl(M) := K.PRODUCT_ATTRIBUTE_TYPE;
19466 G_LIST_HEADER_ID_TBL(M) := K.LIST_HEADER_ID;
19467 G_LIST_LINE_ID_TBL(M) := K.LIST_LINE_ID;
19468 G_CONTEXT_tbl(M) := K.PRODUCT_ATTRIBUTE_CONTEXT;
19469 G_ATTRIBUTE_tbl(M) := K.PRODUCT_ATTRIBUTE;
19470 G_VALUE_FROM_tbl(M) := K.PRODUCT_ATTR_VALUE_FROM;
19471 G_VALUE_TO_tbl(M) := K.PRODUCT_ATTR_VALUE_TO;
19472 G_COMPARISON_OPERATOR_TYPE_tbl(M):= K.PRODUCT_OPERATOR_TYPE;
19473 G_APPLIED_FLAG_tbl(M) := K.APPLIED_FLAG;
19474 G_PRICING_STATUS_CODE_tbl(M) := G_STATUS_NEW;
19475 G_PRICING_STATUS_TEXT_tbl(M) :='INSERTED IN VALIDATED ASKED FOR PROMOTION SEARCH';
19476 G_EXCLUDER_FLAG_TBL(M) :=K.EXCLUDER_FLAG;
19477 G_PRODUCT_UOM_CODE_TBL(M) :=K.PRODUCT_UOM_CODE;
19478 G_VALIDATED_FLAG_tbl(M) := NULL;
19479 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
19480 G_SETUP_VALUE_FROM_tbl(M) := NULL;
19481 G_SETUP_VALUE_TO_tbl(M) := NULL;
19482 G_GROUPING_NUMBER_tbl(M) := NULL;
19483 G_NO_QUALIFIERS_IN_GRP_tbl(M) := NULL;
19484 G_QUALIFIER_PRECEDENCE_tbl(M) := NULL;
19485 G_DATATYPE_tbl(M) := NULL;
19486 G_QUALIFIER_TYPE_TBL(M) := NULL;
19487 G_PRICING_PHASE_ID_TBL_A(M) := K.PRICING_PHASE_ID;
19488 G_INCOMP_GRP_CODE_TBL_A(M) := K.INCOMPATIBILITY_GRP_CODE;
19489 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
19490 G_MODIFIER_LEVEL_CODE_TBL_A(M) := K.MODIFIER_LEVEL_CODE;
19491 G_PRIMARY_UOM_FLAG_TBL_A(M) := K.PRIMARY_UOM_FLAG;
19492 M:= M+1;
19493
19494
19495 IF (K.PRICING_ATTRIBUTE_CONTEXT IS NOT NULL) THEN
19496 --INSERT PRICING ATTRIBUTES
19497 G_LINE_INDEX_tbl(M) := K.LINE_INDEX;
19498 G_LINE_DETAIL_INDEX_tbl(M) := L_LINE_DETAIL_INDEX;
19499 G_ATTRIBUTE_LEVEL_tbl(M) := K.PRICING_ATTRIBUTE_LEVEL;
19500 G_ATTRIBUTE_TYPE_tbl(M) := K.PRICING_ATTRIBUTE_TYPE;
19501 G_LIST_HEADER_ID_TBL(M) := K.LIST_HEADER_ID;
19502 G_LIST_LINE_ID_TBL(M) := K.LIST_LINE_ID;
19503 G_CONTEXT_tbl(M) := K.PRICING_ATTRIBUTE_CONTEXT;
19504 G_ATTRIBUTE_tbl(M) := K.PRICING_ATTRIBUTE;
19505 G_VALUE_FROM_tbl(M) := K.PRICING_ATTR_VALUE_FROM;
19506 G_SETUP_VALUE_FROM_tbl(M) := K.PRICING_SETUP_VALUE_FROM;
19507 G_SETUP_VALUE_TO_tbl(M) := K.PRICING_SETUP_VALUE_TO;
19508 G_COMPARISON_OPERATOR_TYPE_tbl(M):= K.PRICING_OPERATOR_TYPE;
19509 G_APPLIED_FLAG_tbl(M) := K.APPLIED_FLAG;
19510 G_PRICING_STATUS_CODE_tbl(M) := G_STATUS_NEW;
19511 G_PRICING_STATUS_TEXT_tbl(M) :='INSERTED IN VALIDATED ASKED FOR PROMOTION SEARCH';
19512 G_EXCLUDER_FLAG_TBL(M) :=K.EXCLUDER_FLAG;
19513 G_PRODUCT_UOM_CODE_TBL(M) :=K.PRODUCT_UOM_CODE;
19514 G_VALIDATED_FLAG_tbl(M) := NULL;
19515 G_PRICING_ATTR_FLAG_tbl(M) := NULL;
19516 G_GROUPING_NUMBER_tbl(M) := NULL;
19517 G_NO_QUALIFIERS_IN_GRP_tbl(M) := NULL;
19518 G_QUALIFIER_PRECEDENCE_tbl(M) := NULL;
19519 G_DATATYPE_tbl(M) := K.PRICING_ATTRIBUTE_DATATYPE;
19520 G_QUALIFIER_TYPE_TBL(M) := NULL;
19521 G_VALUE_TO_tbl(M) := NULL;
19522 G_PRICING_PHASE_ID_TBL_A(M) := K.PRICING_PHASE_ID;
19523 G_INCOMP_GRP_CODE_TBL_A(M) := K.INCOMPATIBILITY_GRP_CODE;
19524 G_LINE_DETAIL_TYPE_CODE_TBL_A(M) := 'NULL';
19525 G_MODIFIER_LEVEL_CODE_TBL_A(M) := K.MODIFIER_LEVEL_CODE;
19526 G_PRIMARY_UOM_FLAG_TBL_A(M) := K.PRIMARY_UOM_FLAG;
19527 M:= M+1;
19528 END IF;
19529 l_loop_count := l_loop_count +1;
19530 END LOOP;
19531
19532 qp_debug_util.tstop('L_OTHER_LIST_LINE_CUR');
19533
19534
19535 END IF; -- IF j.attribute = G_PROMOTION_ATTRIBUTE
19536
19537 IF (M>1) THEN
19538 INSERT_LINE_ATTRS2
19539 (p_LINE_INDEX_tbl =>G_LINE_INDEX_tbl,
19540 p_LINE_DETAIL_INDEX_tbl =>G_LINE_DETAIL_INDEX_tbl,
19541 p_ATTRIBUTE_LEVEL_tbl =>G_ATTRIBUTE_LEVEL_tbl,
19542 p_ATTRIBUTE_TYPE_tbl =>G_ATTRIBUTE_TYPE_tbl,
19543 p_LIST_HEADER_ID_tbl =>G_LIST_HEADER_ID_tbl,
19544 p_LIST_LINE_ID_tbl =>G_LIST_LINE_ID_tbl,
19545 p_CONTEXT_tbl =>G_CONTEXT_tbl,
19546 p_ATTRIBUTE_tbl =>G_ATTRIBUTE_tbl,
19547 p_VALUE_FROM_tbl =>G_VALUE_FROM_tbl,
19548 p_SETUP_VALUE_FROM_tbl =>G_SETUP_VALUE_FROM_tbl,
19549 p_VALUE_TO_tbl =>G_VALUE_TO_tbl,
19550 p_SETUP_VALUE_TO_tbl =>G_SETUP_VALUE_TO_tbl,
19551 p_GROUPING_NUMBER_tbl => G_GROUPING_NUMBER_tbl,
19552 p_NO_QUALIFIERS_IN_GRP_tbl =>G_NO_QUALIFIERS_IN_GRP_tbl,
19553 p_COMPARISON_OPERATOR_TYPE_tbl =>G_COMPARISON_OPERATOR_TYPE_tbl,
19554 p_VALIDATED_FLAG_tbl =>G_VALIDATED_FLAG_tbl,
19555 p_APPLIED_FLAG_tbl =>G_APPLIED_FLAG_tbl,
19556 p_PRICING_STATUS_CODE_tbl =>G_PRICING_STATUS_CODE_tbl,
19557 p_PRICING_STATUS_TEXT_tbl =>G_PRICING_STATUS_TEXT_tbl,
19558 p_QUALIFIER_PRECEDENCE_tbl =>G_QUALIFIER_PRECEDENCE_tbl,
19559 p_DATATYPE_tbl =>G_DATATYPE_tbl,
19560 p_PRICING_ATTR_FLAG_tbl =>G_PRICING_ATTR_FLAG_tbl,
19561 p_QUALIFIER_TYPE_tbl =>G_QUALIFIER_TYPE_TBL,
19562 p_product_uom_code_tbl =>G_PRODUCT_UOM_CODE_TBL,
19563 p_excluder_flag_tbl =>G_EXCLUDER_FLAG_TBL,
19564 p_PRICING_PHASE_ID_TBL =>G_PRICING_PHASE_ID_TBL_A,
19565 p_INCOMPATABILITY_GRP_CODE_TBL =>G_INCOMP_GRP_CODE_TBL_A,
19566 p_LINE_DETAIL_TYPE_CODE_TBL =>G_LINE_DETAIL_TYPE_CODE_TBL_A,
19567 p_MODIFIER_LEVEL_CODE_TBL =>G_MODIFIER_LEVEL_CODE_TBL_A,
19568 p_PRIMARY_UOM_FLAG_TBL =>G_PRIMARY_UOM_FLAG_TBL_A,
19569 x_status_code =>l_status_code,
19570 x_status_text =>l_status_text);
19571 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
19572 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
19573 END IF;
19574
19575 END IF;
19576 M:=1;
19577
19578 END LOOP;
19579 -- End Validated List Headers / List Lines
19580 END IF; -- if not price book
19581
19582 ELSE -- is a price list phase
19583 lq_line_index := -9999;
19584 lq_list_line_id := -9999;
19585
19586 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
19587 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19588 engine_debug('cursor open l_list_cur_currency-multi-currency TRUE');
19589
19590 END IF;
19591 OPEN l_list_cur_currency;
19592 qp_debug_util.tstart('L_LIST_CUR_CURRENCY','Cursor Loop l_list_cur_currency');
19593 else -- vivek, multi currency not installed, not used
19594 OPEN l_list_cur;
19595 qp_debug_util.tstart('L_LIST_CUR','Cursor Loop l_list_cur');
19596 end if; -- vivek, multi currency installed
19597
19598 LOOP
19599 G_LINE_INDEX_TBL_P.delete;
19600 G_LIST_LINE_ID_TBL_P.delete;
19601 G_LIST_HEADER_ID_TBL_P.delete;
19602 G_OPER_CALCULATION_CODE_TBL_P.delete;
19603 G_OPERAND_VALUE_TBL_P.delete;
19604 G_PRICING_GROUP_SEQUENCE_TBL_P.delete;
19605 G_LIST_LINE_TYPE_TBL_P.delete;
19606 G_PRICING_PHASE_ID_TBL_P.delete;
19607 G_AUTOMATIC_FLAG_TBL_P.delete;
19608 G_INCOMP_GRP_CODE_TBL_P.delete;
19609 G_PRICE_FORMULA_ID_TBL_P.delete;
19610 G_PRODUCT_PRECEDENCE_TBL_P.delete;
19611 G_PRIMARY_UOM_FLAG_TBL_P.delete;
19612 G_MODIFIER_LEVEL_CODE_TBL_P.delete;
19613 G_LIST_LINE_NO_TBL_P.delete;
19614 G_PRODUCT_UOM_CODE_TBL_P.delete;
19615 G_EXCLUDER_FLAG_TBL_P.delete;
19616 G_LIST_TYPE_CODE_TBL_P.delete;
19617 G_ROUNDING_FACTOR_TBL_P.delete;
19618 G_CONTEXT_TBL_P.delete;
19619 G_ATTRIBUTE_TBL_P.delete;
19620 G_VALUE_FROM_TBL_P.delete;
19621 G_ATTRIBUTE_LEVEL_TBL_P.delete;
19622 G_ATTRIBUTE_TYPE_TBL_P.delete;
19623 G_APPLIED_FLAG_TBL_P.delete;
19624 G_CONTEXT_TBL_PR.delete;
19625 G_ATTRIBUTE_TBL_PR.delete;
19626 G_VALUE_FROM_TBL_PR.delete;
19627 G_SETUP_VALUE_FROM_TBL_PR.delete;
19628 G_SETUP_VALUE_TO_TBL_PR.delete;
19629 G_ATTRIBUTE_LEVEL_TBL_PR.delete;
19630 G_ATTRIBUTE_TYPE_TBL_PR.delete;
19631 G_OPERATOR_TYPE_TBL_PR.delete;
19632 G_DATATYPE_TBL_PR.delete;
19633 G_BREAK_UOM_TBL_P.delete; /* Proration */
19634 G_BREAK_CONTEXT_TBL_P.delete; /* Proration */
19635 G_BREAK_ATTRIBUTE_TBL_P.delete; /* Proration */
19636 G_DERIVED_QUALIFIER_FLAG_TBL_Q.delete; -- Added for TCA
19637 G_PRICE_BREAK_TYPE_CODE_TBL_P.delete;
19638
19639 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
19640 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19641 engine_debug('cursor l_list_cur_currency-multi-currency TRUE - delete tables');
19642 END IF;
19643 G_CURRENCY_DETAIL_ID_TBL_P.delete; /* sunilpandey */
19644 G_CURRENCY_HEADER_ID_TBL_P.delete; /* vivek */
19645 G_SELLING_ROUNDING_TBL_P.delete; /* vivek */
19646 G_ORDER_CURRENCY_TBL_P.delete; /* vivek */
19647 G_PRICING_EFFECTIVE_DATE_TBL_P.delete; /* vivek */
19648 G_BASE_CURRENCY_CODE_TBL_P.delete; /* vivek */
19649 end if; /* vivek */
19650
19651 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
19652 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19653 engine_debug('cursor l_list_cur_currency-multi-currency TRUE - bulk fetch');
19654
19655 END IF;
19656 FETCH l_list_cur_currency BULK COLLECT INTO
19657 G_LINE_INDEX_TBL_P
19658 , G_LIST_LINE_ID_TBL_P
19659 , G_OPER_CALCULATION_CODE_TBL_P
19660 , G_OPERAND_VALUE_TBL_P
19661 , G_PRICING_GROUP_SEQUENCE_TBL_P
19662 , G_LIST_LINE_TYPE_TBL_P
19663 , G_PRICING_PHASE_ID_TBL_P
19664 , G_AUTOMATIC_FLAG_TBL_P
19665 , G_INCOMP_GRP_CODE_TBL_P
19666 , G_PRICE_FORMULA_ID_TBL_P
19667 , G_PRODUCT_PRECEDENCE_TBL_P
19668 , G_PRIMARY_UOM_FLAG_TBL_P
19669 , G_MODIFIER_LEVEL_CODE_TBL_P
19670 , G_LIST_LINE_NO_TBL_P
19671 , G_PRODUCT_UOM_CODE_TBL_P
19672 , G_EXCLUDER_FLAG_TBL_P
19673 , G_LIST_TYPE_CODE_TBL_P
19674 , G_ROUNDING_FACTOR_TBL_P
19675 , G_LIST_HEADER_ID_TBL_P
19676 , G_CONTEXT_TBL_P
19677 , G_ATTRIBUTE_TBL_P
19678 , G_VALUE_FROM_TBL_P
19679 , G_ATTRIBUTE_LEVEL_TBL_P
19680 , G_ATTRIBUTE_TYPE_TBL_P
19681 , G_APPLIED_FLAG_TBL_P
19682 , G_CONTEXT_TBL_PR
19683 , G_ATTRIBUTE_TBL_PR
19684 , G_VALUE_FROM_TBL_PR
19685 , G_SETUP_VALUE_FROM_TBL_PR
19686 , G_SETUP_VALUE_TO_TBL_PR
19687 , G_ATTRIBUTE_LEVEL_TBL_PR
19688 , G_ATTRIBUTE_TYPE_TBL_PR
19689 , G_OPERATOR_TYPE_TBL_PR
19690 , G_DATATYPE_TBL_PR
19691 , G_CURRENCY_DETAIL_ID_TBL_P /* sunilpandey */
19692 , G_CURRENCY_HEADER_ID_TBL_P /* vivek */
19693 , G_SELLING_ROUNDING_TBL_P /* vivek */
19694 , G_ORDER_CURRENCY_TBL_P /* vivek */
19695 , G_PRICING_EFFECTIVE_DATE_TBL_P /* vivek */
19696 , G_BASE_CURRENCY_CODE_TBL_P
19697 , G_BREAK_UOM_TBL_P /* Proration */
19698 , G_BREAK_CONTEXT_TBL_P /* Proration */
19699 , G_BREAK_ATTRIBUTE_TBL_P /* Proration */
19700 , G_PRICE_BREAK_TYPE_CODE_TBL_P --[julin] for price book
19701 LIMIT nROWS;/* vivek */
19702 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
19703 else -- vivek, multi currency not installed, not used
19704 FETCH l_list_cur BULK COLLECT INTO
19705 G_LINE_INDEX_TBL_P
19706 , G_LIST_LINE_ID_TBL_P
19707 , G_OPER_CALCULATION_CODE_TBL_P
19708 , G_OPERAND_VALUE_TBL_P
19709 , G_PRICING_GROUP_SEQUENCE_TBL_P
19710 , G_LIST_LINE_TYPE_TBL_P
19711 , G_PRICING_PHASE_ID_TBL_P
19712 , G_AUTOMATIC_FLAG_TBL_P
19713 , G_INCOMP_GRP_CODE_TBL_P
19714 , G_PRICE_FORMULA_ID_TBL_P
19715 , G_PRODUCT_PRECEDENCE_TBL_P
19716 , G_PRIMARY_UOM_FLAG_TBL_P
19717 , G_MODIFIER_LEVEL_CODE_TBL_P
19718 , G_LIST_LINE_NO_TBL_P
19719 , G_PRODUCT_UOM_CODE_TBL_P
19720 , G_EXCLUDER_FLAG_TBL_P
19721 , G_LIST_TYPE_CODE_TBL_P
19722 , G_ROUNDING_FACTOR_TBL_P
19723 , G_LIST_HEADER_ID_TBL_P
19724 , G_CONTEXT_TBL_P
19725 , G_ATTRIBUTE_TBL_P
19726 , G_VALUE_FROM_TBL_P
19727 , G_ATTRIBUTE_LEVEL_TBL_P
19728 , G_ATTRIBUTE_TYPE_TBL_P
19729 , G_APPLIED_FLAG_TBL_P
19730 , G_CONTEXT_TBL_PR
19731 , G_ATTRIBUTE_TBL_PR
19732 , G_VALUE_FROM_TBL_PR
19733 , G_SETUP_VALUE_FROM_TBL_PR
19734 , G_SETUP_VALUE_TO_TBL_PR
19735 , G_ATTRIBUTE_LEVEL_TBL_PR
19736 , G_ATTRIBUTE_TYPE_TBL_PR
19737 , G_OPERATOR_TYPE_TBL_PR
19738 , G_DATATYPE_TBL_PR
19739 , G_BREAK_UOM_TBL_P /* Proration */
19740 , G_BREAK_CONTEXT_TBL_P /* Proration */
19741 , G_BREAK_ATTRIBUTE_TBL_P /* Proration */
19742 , G_PRICE_BREAK_TYPE_CODE_TBL_P --[julin] for price book
19743 LIMIT nROWS;
19744 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
19745 end if; -- vivek, multi currency installed
19746
19747 IF (G_LINE_INDEX_TBL_P.COUNT > 0 ) THEN
19748
19749 FOR I in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST LOOP
19750
19751 IF (lq_line_index <> g_line_index_tbl_p(I) OR lq_list_line_id <> g_list_line_id_tbl_p(I)) THEN
19752
19753 L_LINE_DETAIL_INDEX := GET_LINE_DETAIL_INDEX;
19754
19755 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(I);
19756 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
19757 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(I);
19758 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(I);
19759 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
19760 G_PRICING_STATUS_TEXT_LD_TBL(M) :='INSERTED IN L_LIST_CUR';
19761 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
19762 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
19763 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
19764 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(I); --[julin] for price book
19765 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(I);
19766 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(I);
19767 G_CREATED_FROM_SQL_TBL(M) :='INSERTED IN L_LIST_CUR';
19768 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(I);
19769 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(I);
19770 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(I);
19771 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(I);
19772 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(I);
19773 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(I);
19774 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(I);
19775 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
19776 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
19777 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
19778 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(I);
19779 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(I);
19780 G_BREAK_UOM_TBL(M) :=G_BREAK_UOM_TBL_P(I); /* Proration */
19781 G_BREAK_CONTEXT_TBL(M) :=G_BREAK_CONTEXT_TBL_P(I); /* Proration */
19782 G_BREAK_ATTRIBUTE_TBL(M) :=G_BREAK_ATTRIBUTE_TBL_P(I); /* Proration */
19783 if G_MULTI_CURRENCY_PROFILE = 'Y' and
19784 G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
19785 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19786 engine_debug('cursor l_list_cur_currency-multi-currency TRUE - populate tables');
19787 END IF;
19788 G_CURRENCY_DETAIL_ID_TBL(M) := G_CURRENCY_DETAIL_ID_TBL_P(I); /* sunilpandey */
19789 G_CURRENCY_HEADER_ID_TBL(M) := G_CURRENCY_HEADER_ID_TBL_P(I); /* vivek */
19790 G_SELLING_ROUNDING_TBL(M) := G_SELLING_ROUNDING_TBL_P(I); /* vivek */
19791 G_ORDER_CURRENCY_TBL(M) := G_ORDER_CURRENCY_TBL_P(I); /* vivek */
19792 G_PRICING_EFFECTIVE_DATE_TBL(M) := G_PRICING_EFFECTIVE_DATE_TBL_P(I); /* vivek */
19793 G_BASE_CURRENCY_CODE_TBL(M) := G_BASE_CURRENCY_CODE_TBL_P(I); /* vivek */
19794 end if; /* vivek */
19795 M := M + 1;
19796 lq_line_index := g_line_index_tbl_p(I);
19797 lq_list_line_id := g_list_line_id_tbl_p(I);
19798 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19799 engine_debug('Rounding Factor: ' || g_rounding_factor_tbl_p(i));
19800 END IF;
19801 END IF;
19802
19803 --INSERT PRODUCT ATTRIBUTES
19804 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
19805 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_P(I);
19806 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_P(I);
19807 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_P(I);
19808 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_P(I);
19809 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_P(I);
19810 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
19811 G_VALIDATED_FLAG_tbl(K) :=G_NO;
19812 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
19813 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
19814 G_PRICING_ATTR_FLAG_tbl(K) :=G_NO;
19815 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
19816 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
19817 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
19818 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
19819 G_SETUP_VALUE_TO_tbl(K) :=NULL;
19820 G_GROUPING_NUMBER_tbl(K) :=NULL;
19821 G_PRICING_STATUS_TEXT_tbl(K) :='INSERTED IN L_LIST_CUR';
19822 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
19823 G_DATATYPE_tbl(K) :=NULL;
19824 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
19825 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
19826 G_QUALIFIER_TYPE_TBL(K) :=NULL;
19827 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
19828 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
19829 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
19830 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
19831 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
19832 K:= K+1;
19833
19834 --INSERT PRICING ATTRIBUTES
19835 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
19836 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
19837 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_PR(I);
19838 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_PR(I);
19839 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_PR(I);
19840 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_PR(I);
19841 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_PR(I);
19842 G_COMPARISON_OPERATOR_TYPE_tbl(K):=G_OPERATOR_TYPE_TBL_PR(I);
19843 G_VALIDATED_FLAG_tbl(K) :=G_NO;
19844 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
19845 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
19846 G_PRICING_ATTR_FLAG_tbl(K) :=NULL;
19847 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
19848 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
19849 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
19850 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
19851 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
19852 G_GROUPING_NUMBER_tbl(K) :=NULL;
19853 G_PRICING_STATUS_TEXT_tbl(K) :='INSERTED IN L_LIST_CUR';
19854 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
19855 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
19856 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
19857 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
19858 G_QUALIFIER_TYPE_TBL(K) :=NULL;
19859 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
19860 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
19861 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
19862 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
19863 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
19864 K:= K+1;
19865 END IF;
19866
19867 l_loop_count := l_loop_count +1;
19868 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19869 engine_debug('Primary List Validated Search Count : ' || l_loop_count);
19870 END IF;
19871 END LOOP;
19872 END IF ;
19873
19874 END LOOP;
19875
19876 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
19877 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19878 engine_debug('cursor close l_list_cur_currency-multi-currency TRUE');
19879 END IF;
19880 CLOSE l_list_cur_currency;
19881
19882 qp_debug_util.tstop('L_LIST_CUR_CURRENCY');
19883 else -- vivek, multi currency not installed, not used
19884 CLOSE l_list_cur;
19885 qp_debug_util.tstop('L_LIST_CUR');
19886 end if; -- vivek, multi currency installed
19887
19888 END IF; -- p_pricing_phase_id <> G_PRICE_LIST_PHASE_ID
19889
19890 IF M > 1 THEN
19891 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
19892 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
19893 engine_debug('cursor l_list_cur_currency-multi-currency TRUE - insert_ldets2');
19894 END IF;
19895 INSERT_LDETS_PRICE_LIST_MULT( p_LINE_DETAIL_index => G_LINE_DETAIL_INDEX_LD_TBL,
19896 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
19897 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
19898 p_LINE_INDEX => G_LINE_INDEX_LD_TBL,
19899 p_CREATED_FROM_LIST_HEADER_ID =>G_LIST_HEADER_ID_LD_TBL,
19900 p_CREATED_FROM_LIST_LINE_ID =>G_LIST_LINE_ID_LD_TBL,
19901 p_CREATED_FROM_LIST_LINE_TYPE =>G_LIST_LINE_TYPE_TBL,
19902 p_CREATED_FROM_LIST_TYPE_CODE =>G_LIST_TYPE_CODE_TBL,
19903 p_CREATED_FROM_SQL =>G_CREATED_FROM_SQL_TBL,
19904 p_PRICING_GROUP_SEQUENCE =>G_PRICING_GROUP_SEQUENCE_TBL,
19905 P_PRICING_PHASE_ID =>G_PRICING_PHASE_ID_TBL,
19906 p_OPERAND_CALCULATION_CODE =>G_OPERAND_CALCULATION_CODE_TBL,
19907 p_OPERAND_VALUE =>G_OPERAND_VALUE_TBL,
19908 p_PRICE_FORMULA_ID =>G_PRICE_FORMULA_ID_TBL,
19909 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_LD_TBL,
19910 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_LD_TBL,
19911 p_PRODUCT_PRECEDENCE =>G_PRODUCT_PRECEDENCE_TBL ,
19912 p_INCOMPATABLILITY_GRP_CODE =>G_INCOMP_GRP_CODE_TBL,
19913 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_LD_TBL,
19914 p_APPLIED_FLAG =>G_APPLIED_FLAG_LD_TBL,
19915 p_AUTOMATIC_FLAG =>G_AUTOMATIC_FLAG_TBL,
19916 p_PRIMARY_UOM_FLAG =>G_PRIMARY_UOM_FLAG_TBL,
19917 p_MODIFIER_LEVEL_CODE =>G_MODIFIER_LEVEL_CODE_TBL,
19918 p_LIST_LINE_NO =>G_LIST_LINE_NO_TBL,
19919 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
19920 P_CURRENCY_DETAIL_ID =>G_CURRENCY_DETAIL_ID_TBL, /* sunilpandey */
19921 P_CURRENCY_HEADER_ID =>G_CURRENCY_HEADER_ID_TBL, /* vivek */
19922 P_SELLING_ROUNDING_FACTOR =>G_SELLING_ROUNDING_TBL, /* vivek */
19923 P_ORDER_CURRENCY =>G_ORDER_CURRENCY_TBL, /* vivek */
19924 P_PRICING_EFFECTIVE_DATE =>G_PRICING_EFFECTIVE_DATE_TBL, /* vivek */
19925 P_BASE_CURRENCY_CODE =>G_BASE_CURRENCY_CODE_TBL, /* vivek */
19926 P_BREAK_UOM_CODE =>G_BREAK_UOM_TBL, /* Proration */
19927 P_BREAK_UOM_CONTEXT =>G_BREAK_CONTEXT_TBL, /* Proration */
19928 P_BREAK_UOM_ATTRIBUTE =>G_BREAK_ATTRIBUTE_TBL, /* Proration */
19929 x_status_code =>l_status_code,
19930 x_status_text =>l_status_text
19931 );
19932 else -- vivek, multi currency not installed, not used
19933 INSERT_LDETS_PRICE_LIST_PVT(
19934 p_LINE_DETAIL_index => G_LINE_DETAIL_INDEX_LD_TBL,
19935 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
19936 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
19937 p_LINE_INDEX => G_LINE_INDEX_LD_TBL,
19938 p_CREATED_FROM_LIST_HEADER_ID =>G_LIST_HEADER_ID_LD_TBL,
19939 p_CREATED_FROM_LIST_LINE_ID =>G_LIST_LINE_ID_LD_TBL,
19940 p_CREATED_FROM_LIST_LINE_TYPE =>G_LIST_LINE_TYPE_TBL,
19941 p_CREATED_FROM_LIST_TYPE_CODE =>G_LIST_TYPE_CODE_TBL,
19942 p_CREATED_FROM_SQL =>G_CREATED_FROM_SQL_TBL,
19943 p_PRICING_GROUP_SEQUENCE =>G_PRICING_GROUP_SEQUENCE_TBL,
19944 P_PRICING_PHASE_ID =>G_PRICING_PHASE_ID_TBL,
19945 p_OPERAND_CALCULATION_CODE =>G_OPERAND_CALCULATION_CODE_TBL,
19946 p_OPERAND_VALUE =>G_OPERAND_VALUE_TBL,
19947 p_PRICE_FORMULA_ID =>G_PRICE_FORMULA_ID_TBL,
19948 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_LD_TBL,
19949 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_LD_TBL,
19950 p_PRODUCT_PRECEDENCE =>G_PRODUCT_PRECEDENCE_TBL ,
19951 p_INCOMPATABLILITY_GRP_CODE =>G_INCOMP_GRP_CODE_TBL,
19952 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_LD_TBL,
19953 p_APPLIED_FLAG =>G_APPLIED_FLAG_LD_TBL,
19954 p_AUTOMATIC_FLAG =>G_AUTOMATIC_FLAG_TBL,
19955 p_PRIMARY_UOM_FLAG =>G_PRIMARY_UOM_FLAG_TBL,
19956 p_MODIFIER_LEVEL_CODE =>G_MODIFIER_LEVEL_CODE_TBL,
19957 p_LIST_LINE_NO =>G_LIST_LINE_NO_TBL,
19958 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
19959 P_BREAK_UOM_CODE =>G_BREAK_UOM_TBL, /* Proration */
19960 P_BREAK_UOM_CONTEXT =>G_BREAK_CONTEXT_TBL, /* Proration */
19961 P_BREAK_UOM_ATTRIBUTE =>G_BREAK_ATTRIBUTE_TBL, /* Proration */
19962 x_status_code =>l_status_code,
19963 x_status_text =>l_status_text
19964 );
19965 end if; -- vivek, multi currency installed
19966 END IF;
19967 M := 1;
19968
19969
19970
19971 IF (K>1) THEN
19972 INSERT_PRICE_LIST_ATTRS
19973 ( p_LINE_INDEX_tbl =>G_LINE_INDEX_tbl,
19974 p_LINE_DETAIL_INDEX_tbl =>G_LINE_DETAIL_INDEX_tbl,
19975 p_ATTRIBUTE_LEVEL_tbl =>G_ATTRIBUTE_LEVEL_tbl,
19976 p_ATTRIBUTE_TYPE_tbl =>G_ATTRIBUTE_TYPE_tbl,
19977 p_LIST_HEADER_ID_tbl =>G_LIST_HEADER_ID_tbl,
19978 p_LIST_LINE_ID_tbl =>G_LIST_LINE_ID_tbl,
19979 p_CONTEXT_tbl =>G_CONTEXT_tbl,
19980 p_ATTRIBUTE_tbl =>G_ATTRIBUTE_tbl,
19981 p_VALUE_FROM_tbl =>G_VALUE_FROM_tbl,
19982 p_SETUP_VALUE_FROM_tbl =>G_SETUP_VALUE_FROM_tbl,
19983 p_SETUP_VALUE_TO_tbl =>G_SETUP_VALUE_TO_tbl,
19984 p_GROUPING_NUMBER_tbl => G_GROUPING_NUMBER_tbl,
19985 p_COMPARISON_OPERATOR_TYPE_tbl =>G_COMPARISON_OPERATOR_TYPE_tbl,
19986 p_VALIDATED_FLAG_tbl =>G_VALIDATED_FLAG_tbl,
19987 p_APPLIED_FLAG_tbl =>G_APPLIED_FLAG_tbl,
19988 p_PRICING_STATUS_CODE_tbl =>G_PRICING_STATUS_CODE_tbl,
19989 p_PRICING_STATUS_TEXT_tbl =>G_PRICING_STATUS_TEXT_tbl,
19990 p_QUALIFIER_PRECEDENCE_tbl =>G_QUALIFIER_PRECEDENCE_tbl,
19991 p_DATATYPE_tbl =>G_DATATYPE_tbl,
19992 p_PRICING_ATTR_FLAG_tbl =>G_PRICING_ATTR_FLAG_tbl,
19993 p_QUALIFIER_TYPE_tbl =>G_QUALIFIER_TYPE_TBL,
19994 p_PRODUCT_UOM_CODE_TBL =>G_PRODUCT_UOM_CODE_TBL,
19995 p_EXCLUDER_FLAG_TBL =>G_EXCLUDER_FLAG_TBL,
19996 p_PRICING_PHASE_ID_TBL =>G_PRICING_PHASE_ID_TBL_A,
19997 p_INCOMPATABILITY_GRP_CODE_TBL =>G_INCOMP_GRP_CODE_TBL_A,
19998 p_LINE_DETAIL_TYPE_CODE_TBL =>G_LINE_DETAIL_TYPE_CODE_TBL_A,
19999 p_MODIFIER_LEVEL_CODE_TBL =>G_MODIFIER_LEVEL_CODE_TBL_A,
20000 p_PRIMARY_UOM_FLAG_TBL =>G_PRIMARY_UOM_FLAG_TBL_A,
20001 x_status_code =>l_status_code,
20002 x_status_text =>l_status_text);
20003 END IF;
20004 K:=1;
20005
20006
20007 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20008 engine_debug('#100');
20009
20010 END IF;
20011 IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
20012
20013 lq_line_index := -9999;
20014 lq_list_line_id := -9999;
20015
20016 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20017 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20018 engine_debug('cursor open l_list_qual_cur_currency-multi-currency TRUE');
20019 END IF;
20020 OPEN l_list_qual_cur_currency;
20021 qp_debug_util.tstart('L_LIST_QUAL_CUR_CURRENCY','Cursor Loop l_list_qual_cur_currency');
20022 else -- vivek, multi currency not installed, not used
20023 OPEN l_list_qual_cur;
20024 qp_debug_util.tstart('L_LIST_QUAL_CUR','Cursor Loop l_list_qual_cur');
20025 end if; -- vivek, multi currency installed
20026
20027 LOOP
20028 G_LINE_INDEX_TBL_P.delete;
20029 G_LIST_LINE_ID_TBL_P.delete;
20030 G_OPER_CALCULATION_CODE_TBL_P.delete;
20031 G_OPERAND_VALUE_TBL_P.delete;
20032 G_PRICING_GROUP_SEQUENCE_TBL_P.delete;
20033 G_LIST_LINE_TYPE_TBL_P.delete;
20034 G_PRICING_PHASE_ID_TBL_P.delete;
20035 G_AUTOMATIC_FLAG_TBL_P.delete;
20036 G_OVERRIDE_FLAG_TBL_P.delete;
20037 G_PRINT_ON_INVOICE_FLAG_TBL_P.delete;
20038 G_INCOMP_GRP_CODE_TBL_P.delete;
20039 G_PRICE_FORMULA_ID_TBL_P.delete;
20040 G_PRODUCT_PRECEDENCE_TBL_P.delete;
20041 G_PRIMARY_UOM_FLAG_TBL_P.delete;
20042 G_MODIFIER_LEVEL_CODE_TBL_P.delete;
20043 G_LIST_LINE_NO_TBL_P.delete;
20044 G_PRODUCT_UOM_CODE_TBL_P.delete;
20045 G_EXCLUDER_FLAG_TBL_P.delete;
20046 G_LIST_TYPE_CODE_TBL_P.delete;
20047 G_ROUNDING_FACTOR_TBL_P.delete;
20048 G_LIST_HEADER_ID_TBL_P.delete;
20049 G_CONTEXT_TBL_P.delete;
20050 G_ATTRIBUTE_TBL_P.delete;
20051 G_VALUE_FROM_TBL_P.delete;
20052 G_ATTRIBUTE_LEVEL_TBL_P.delete;
20053 G_ATTRIBUTE_TYPE_TBL_P.delete;
20054 G_APPLIED_FLAG_TBL_P.delete;
20055 G_CONTEXT_TBL_PR.delete;
20056 G_ATTRIBUTE_TBL_PR.delete;
20057 G_VALUE_FROM_TBL_PR.delete;
20058 G_SETUP_VALUE_FROM_TBL_PR.delete;
20059 G_SETUP_VALUE_TO_TBL_PR.delete;
20060 G_ATTRIBUTE_LEVEL_TBL_PR.delete;
20061 G_ATTRIBUTE_TYPE_TBL_PR.delete;
20062 G_OPERATOR_TYPE_TBL_PR.delete;
20063 G_CONTEXT_TBL_Q.delete;
20064 G_ATTRIBUTE_TBL_Q.delete;
20065 G_VALUE_FROM_TBL_Q.delete;
20066 G_PRICING_ATTR_FLAG_TBL_Q.delete;
20067 G_GROUPING_NO_TBL_Q.delete;
20068 G_QUALIFIER_PRECEDENCE_TBL_Q.delete;
20069 G_DATATYPE_TBL_Q.delete;
20070 G_SETUP_VALUE_FROM_TBL_Q.delete;
20071 G_SETUP_VALUE_TO_TBL_Q.delete;
20072 G_OPERATOR_TYPE_TBL_Q .delete;
20073 G_DATATYPE_TBL_PR.delete;
20074 G_QUALIFIER_TYPE_TBL_Q.delete;
20075 G_BREAK_UOM_TBL_P.delete; /* Proration */
20076 G_BREAK_CONTEXT_TBL_P.delete; /* Proration */
20077 G_BREAK_ATTRIBUTE_TBL_P.delete; /* Proration */
20078 G_PRICE_BREAK_TYPE_CODE_TBL_P.delete; --[julin] for price book
20079
20080 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20081 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20082 engine_debug('cursor l_list_qual_cur_currency-multi-currency TRUE - delete tables');
20083 END IF;
20084 G_CURRENCY_DETAIL_ID_TBL_P.delete; /* sunilpandey */
20085 G_CURRENCY_HEADER_ID_TBL_P.delete; /* vivek */
20086 G_SELLING_ROUNDING_TBL_P.delete; /* vivek */
20087 G_ORDER_CURRENCY_TBL_P.delete; /* vivek */
20088 G_PRICING_EFFECTIVE_DATE_TBL_P.delete; /* vivek */
20089 G_BASE_CURRENCY_CODE_TBL_P.delete; /* vivek */
20090 end if; /* vivek */
20091
20092 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20093 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20094 engine_debug('cursor l_list_qual_cur_currency-multi-currency TRUE - bulk collect');
20095
20096 END IF;
20097 FETCH l_list_qual_cur_currency BULK COLLECT INTO
20098 G_LINE_INDEX_TBL_P
20099 , G_LIST_LINE_ID_TBL_P
20100 , G_OPER_CALCULATION_CODE_TBL_P
20101 , G_OPERAND_VALUE_TBL_P
20102 , G_PRICING_GROUP_SEQUENCE_TBL_P
20103 , G_LIST_LINE_TYPE_TBL_P
20104 , G_PRICING_PHASE_ID_TBL_P
20105 , G_AUTOMATIC_FLAG_TBL_P
20106 , G_INCOMP_GRP_CODE_TBL_P
20107 , G_PRICE_FORMULA_ID_TBL_P
20108 , G_PRODUCT_PRECEDENCE_TBL_P
20109 , G_PRIMARY_UOM_FLAG_TBL_P
20110 , G_MODIFIER_LEVEL_CODE_TBL_P
20111 , G_LIST_LINE_NO_TBL_P
20112 , G_PRODUCT_UOM_CODE_TBL_P
20113 , G_EXCLUDER_FLAG_TBL_P
20114 , G_LIST_TYPE_CODE_TBL_P
20115 , G_ROUNDING_FACTOR_TBL_P
20116 , G_LIST_HEADER_ID_TBL_P
20117 , G_CONTEXT_TBL_P
20118 , G_ATTRIBUTE_TBL_P
20119 , G_VALUE_FROM_TBL_P
20120 , G_ATTRIBUTE_LEVEL_TBL_P
20121 , G_ATTRIBUTE_TYPE_TBL_P
20122 , G_APPLIED_FLAG_TBL_P
20123 , G_CONTEXT_TBL_PR
20124 , G_ATTRIBUTE_TBL_PR
20125 , G_VALUE_FROM_TBL_PR
20126 , G_SETUP_VALUE_FROM_TBL_PR
20127 , G_SETUP_VALUE_TO_TBL_PR
20128 , G_ATTRIBUTE_LEVEL_TBL_PR
20129 , G_ATTRIBUTE_TYPE_TBL_PR
20130 , G_OPERATOR_TYPE_TBL_PR
20131 , G_CONTEXT_TBL_Q
20132 , G_ATTRIBUTE_TBL_Q
20133 , G_VALUE_FROM_TBL_Q
20134 , G_PRICING_ATTR_FLAG_TBL_Q
20135 , G_GROUPING_NO_TBL_Q
20136 , G_QUALIFIER_PRECEDENCE_TBL_Q
20137 , G_DATATYPE_TBL_Q
20138 , G_SETUP_VALUE_FROM_TBL_Q
20139 , G_SETUP_VALUE_TO_TBL_Q
20140 , G_OPERATOR_TYPE_TBL_Q
20141 , G_DATATYPE_TBL_PR
20142 , G_QUALIFIER_TYPE_TBL_Q
20143 , G_CURRENCY_DETAIL_ID_TBL_P /* sunilpandey */
20144 , G_CURRENCY_HEADER_ID_TBL_P /* vivek */
20145 , G_SELLING_ROUNDING_TBL_P /* vivek */
20146 , G_ORDER_CURRENCY_TBL_P /* vivek */
20147 , G_PRICING_EFFECTIVE_DATE_TBL_P /* vivek */
20148 , G_BASE_CURRENCY_CODE_TBL_P
20149 , G_BREAK_UOM_TBL_P /* Proration */
20150 , G_BREAK_CONTEXT_TBL_P /* Proration */
20151 , G_BREAK_ATTRIBUTE_TBL_P /* Proration */
20152 , G_DERIVED_QUALIFIER_FLAG_TBL_Q --- Added for TCA
20153 , G_PRICE_BREAK_TYPE_CODE_TBL_P --[julin] for price book
20154 LIMIT nROWS;/* vivek */
20155 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
20156 else -- vivek, multi currency not installed, not used
20157 FETCH l_list_qual_cur BULK COLLECT INTO
20158 G_LINE_INDEX_TBL_P
20159 , G_LIST_LINE_ID_TBL_P
20160 , G_OPER_CALCULATION_CODE_TBL_P
20161 , G_OPERAND_VALUE_TBL_P
20162 , G_PRICING_GROUP_SEQUENCE_TBL_P
20163 , G_LIST_LINE_TYPE_TBL_P
20164 , G_PRICING_PHASE_ID_TBL_P
20165 , G_AUTOMATIC_FLAG_TBL_P
20166 , G_INCOMP_GRP_CODE_TBL_P
20167 , G_PRICE_FORMULA_ID_TBL_P
20168 , G_PRODUCT_PRECEDENCE_TBL_P
20169 , G_PRIMARY_UOM_FLAG_TBL_P
20170 , G_MODIFIER_LEVEL_CODE_TBL_P
20171 , G_LIST_LINE_NO_TBL_P
20172 , G_PRODUCT_UOM_CODE_TBL_P
20173 , G_EXCLUDER_FLAG_TBL_P
20174 , G_LIST_TYPE_CODE_TBL_P
20175 , G_ROUNDING_FACTOR_TBL_P
20176 , G_LIST_HEADER_ID_TBL_P
20177 , G_CONTEXT_TBL_P
20178 , G_ATTRIBUTE_TBL_P
20179 , G_VALUE_FROM_TBL_P
20180 , G_ATTRIBUTE_LEVEL_TBL_P
20181 , G_ATTRIBUTE_TYPE_TBL_P
20182 , G_APPLIED_FLAG_TBL_P
20183 , G_CONTEXT_TBL_PR
20184 , G_ATTRIBUTE_TBL_PR
20185 , G_VALUE_FROM_TBL_PR
20186 , G_SETUP_VALUE_FROM_TBL_PR
20187 , G_SETUP_VALUE_TO_TBL_PR
20188 , G_ATTRIBUTE_LEVEL_TBL_PR
20189 , G_ATTRIBUTE_TYPE_TBL_PR
20190 , G_OPERATOR_TYPE_TBL_PR
20191 , G_CONTEXT_TBL_Q
20192 , G_ATTRIBUTE_TBL_Q
20193 , G_VALUE_FROM_TBL_Q
20194 , G_PRICING_ATTR_FLAG_TBL_Q
20195 , G_GROUPING_NO_TBL_Q
20196 , G_QUALIFIER_PRECEDENCE_TBL_Q
20197 , G_DATATYPE_TBL_Q
20198 , G_SETUP_VALUE_FROM_TBL_Q
20199 , G_SETUP_VALUE_TO_TBL_Q
20200 , G_OPERATOR_TYPE_TBL_Q
20201 , G_DATATYPE_TBL_PR
20202 , G_QUALIFIER_TYPE_TBL_Q
20203 , G_BREAK_UOM_TBL_P /* Proration */
20204 , G_BREAK_CONTEXT_TBL_P /* Proration */
20205 , G_BREAK_ATTRIBUTE_TBL_P /* Proration */
20206 , G_DERIVED_QUALIFIER_FLAG_TBL_Q
20207 , G_PRICE_BREAK_TYPE_CODE_TBL_P --[julin] for price book
20208 LIMIT nROWS;
20209 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
20210 end if; -- vivek, multi currency installed
20211
20212 IF (G_LINE_INDEX_TBL_P.COUNT > 0 ) THEN
20213
20214 FOR I in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST LOOP
20215
20216 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20217 engine_debug('#101');
20218
20219 engine_debug('List Line Id : ' || g_list_line_id_tbl_p(I));
20220 engine_debug('Line Index : ' || g_line_index_tbl_P(I));
20221
20222 END IF;
20223 IF (lq_line_index <> g_line_index_tbl_p(I) OR lq_list_line_id <> g_list_line_id_tbl_p(I)) THEN
20224
20225 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20226 engine_debug('Inserting List Line #102');
20227
20228 END IF;
20229 L_LINE_DETAIL_INDEX := GET_LINE_DETAIL_INDEX;
20230 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20231 engine_debug('Line Detail Index : ' || l_line_detail_index);
20232
20233 END IF;
20234 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(I);
20235 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
20236 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(I);
20237 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(I);
20238 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
20239 G_PRICING_STATUS_TEXT_LD_TBL(M) :='INSERTED IN L_LIST_QUAL_CUR';
20240 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
20241 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
20242 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
20243 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(I); --[julin] for price book
20244 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(I);
20245 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(I);
20246 G_CREATED_FROM_SQL_TBL(M) :='INSERTED_IN_L_LIST_QUAL_CUR';
20247 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(I);
20248 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(I);
20249 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(I);
20250 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(I);
20251 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(I);
20252 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(I);
20253 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(I);
20254 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
20255 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
20256 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
20257 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(I);
20258 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(I);
20259 G_BREAK_UOM_TBL(M) :=G_BREAK_UOM_TBL_P(I); /* Proration */
20260 G_BREAK_CONTEXT_TBL(M) :=G_BREAK_CONTEXT_TBL_P(I); /* Proration */
20261 G_BREAK_ATTRIBUTE_TBL(M) :=G_BREAK_ATTRIBUTE_TBL_P(I); /* Proration */
20262 if G_MULTI_CURRENCY_PROFILE = 'Y' and
20263 G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20264 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20265 engine_debug('cursor l_list_qual_cur_currency-multi-currency TRUE - populate tables');
20266 END IF;
20267 G_CURRENCY_DETAIL_ID_TBL(M) := G_CURRENCY_DETAIL_ID_TBL_P(I); /* sunilpandey */
20268 G_CURRENCY_HEADER_ID_TBL(M) := G_CURRENCY_HEADER_ID_TBL_P(I); /* vivek */
20269 G_SELLING_ROUNDING_TBL(M) := G_SELLING_ROUNDING_TBL_P(I); /* vivek */
20270 G_ORDER_CURRENCY_TBL(M) := G_ORDER_CURRENCY_TBL_P(I); /* vivek */
20271 G_PRICING_EFFECTIVE_DATE_TBL(M) := G_PRICING_EFFECTIVE_DATE_TBL_P(I); /* vivek */
20272 G_BASE_CURRENCY_CODE_TBL(M) := G_BASE_CURRENCY_CODE_TBL_P(I); /* vivek */
20273 end if; /* vivek */
20274 M := M+1;
20275 lq_line_index := g_line_index_tbl_p(I);
20276 lq_list_line_id := g_list_line_id_tbl_p(I);
20277 END IF;
20278
20279 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20280 engine_debug('#103');
20281 END IF;
20282 IF (G_CONTEXT_TBL_Q(I) IS NOT NULL) THEN
20283 --Qualifiers attributes
20284 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(I);
20285 G_LINE_DETAIL_INDEX_tbl(K) := L_LINE_DETAIL_INDEX;
20286 G_ATTRIBUTE_LEVEL_tbl(K) := nvl(G_ATTRIBUTE_LEVEL_TBL_P(I),'X');
20287 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
20288 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_Q(I);
20289 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_Q(I);
20290 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_Q(I);
20291 G_COMPARISON_OPERATOR_TYPE_tbl(K):= G_OPERATOR_TYPE_TBL_Q(I);
20292 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(I);
20293 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
20294 G_LIST_HEADER_ID_tbl(K) := G_LIST_HEADER_ID_TBL_P(I);
20295 G_LIST_LINE_ID_tbl(K) := G_LIST_LINE_ID_TBL_P(I);
20296 G_SETUP_VALUE_FROM_tbl(K) := G_SETUP_VALUE_FROM_TBL_Q(I);
20297 G_SETUP_VALUE_TO_tbl(K) := G_SETUP_VALUE_TO_TBL_Q(I);
20298 G_GROUPING_NUMBER_tbl(K) := G_GROUPING_NO_TBL_Q(I);
20299 G_PRICING_STATUS_TEXT_tbl(K) := 'INSERTED IN L_LIST_QUAL_CUR';
20300 G_QUALIFIER_PRECEDENCE_tbl(K) := G_QUALIFIER_PRECEDENCE_TBL_Q(I);
20301 G_DATATYPE_tbl(K) := G_DATATYPE_TBL_Q(I);
20302 G_EXCLUDER_FLAG_TBL(K) := G_EXCLUDER_FLAG_TBL_P(I);
20303 G_PRODUCT_UOM_CODE_TBL(K) := G_PRODUCT_UOM_CODE_TBL_P(I);
20304 G_QUALIFIER_TYPE_TBL(K) := G_QUALIFIER_TYPE_TBL_Q(I);
20305 G_VALIDATED_FLAG_tbl(K) := G_NO;
20306 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
20307 G_PRICING_PHASE_ID_TBL_A(K) := G_PRICING_PHASE_ID_TBL_P(I);
20308 G_INCOMP_GRP_CODE_TBL_A(K) := G_INCOMP_GRP_CODE_TBL_P(I);
20309 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := 'NULL';
20310 G_MODIFIER_LEVEL_CODE_TBL_A(K) := G_MODIFIER_LEVEL_CODE_TBL_P(I);
20311 G_PRIMARY_UOM_FLAG_TBL_A(K) := G_PRIMARY_UOM_FLAG_TBL_P(I);
20312 K:= K+1;
20313 END IF;
20314
20315 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20316 engine_debug('#1031');
20317
20318 END IF;
20319 --INSERT PRODUCT ATTRIBUTES
20320 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
20321 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_P(I);
20322 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_P(I);
20323 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_P(I);
20324 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_P(I);
20325 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_P(I);
20326 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
20327 G_VALIDATED_FLAG_tbl(K) :=G_NO;
20328 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
20329 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
20330 G_PRICING_ATTR_FLAG_tbl(K) :=G_NO;
20331 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
20332 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
20333 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
20334 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
20335 G_SETUP_VALUE_TO_tbl(K) :=NULL;
20336 G_GROUPING_NUMBER_tbl(K) :=NULL;
20337 G_PRICING_STATUS_TEXT_tbl(K) :='INSERTED IN L_LIST_QUAL_CUR';
20338 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
20339 G_DATATYPE_tbl(K) :=NULL;
20340 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
20341 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
20342 G_QUALIFIER_TYPE_TBL(K) :=NULL;
20343 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
20344 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
20345 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
20346 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
20347 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
20348 K:= K+1;
20349
20350 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20351 engine_debug('#105');
20352 END IF;
20353
20354 --INSERT PRICING ATTRIBUTES
20355 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
20356 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
20357 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_PR(I);
20358 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_PR(I);
20359 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_PR(I);
20360 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_PR(I);
20361 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_PR(I);
20362 G_COMPARISON_OPERATOR_TYPE_tbl(K):=G_OPERATOR_TYPE_TBL_PR(I);
20363 G_VALIDATED_FLAG_tbl(K) :=G_NO;
20364 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
20365 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
20366 G_PRICING_ATTR_FLAG_tbl(K) :=NULL;
20367 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
20368 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
20369 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
20370 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
20371 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
20372 G_GROUPING_NUMBER_tbl(K) :=NULL;
20373 G_PRICING_STATUS_TEXT_tbl(K) :='INSERTED IN L_LIST_QUAL_CUR';
20374 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
20375 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
20376 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
20377 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
20378 G_QUALIFIER_TYPE_TBL(K) :=NULL;
20379 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
20380 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
20381 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
20382 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
20383 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
20384 K:= K+1;
20385 END IF;
20386
20387 l_loop_count := l_loop_count +1;
20388 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20389 engine_debug('Primary List Non Validated Search Count : ' || l_loop_count);
20390 END IF;
20391 END LOOP;
20392 END IF;
20393
20394 END LOOP;
20395
20396 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20397 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20398 engine_debug('cursor close l_list_qual_cur_currency-multi-currency TRUE');
20399 END IF;
20400 CLOSE l_list_qual_cur_currency;
20401 qp_debug_util.tstop('L_LIST_QUAL_CUR_CURRENCY');
20402 else -- vivek, multi currency not installed, not used
20403 CLOSE l_list_qual_cur;
20404
20405 qp_debug_util.tstop('L_LIST_QUAL_CUR');
20406
20407 end if; -- vivek, multi currency installed
20408
20409 END IF; -- p_pricing_phase_id = G_PRICE_LIST_PHASE_ID
20410
20411 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20412 engine_debug('#106');
20413
20414 END IF;
20415 IF M > 1 THEN
20416 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
20417 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20418 engine_debug('cursor l_list_qual_cur_currency-multi-currency TRUE - insert_ldets2');
20419
20420 END IF;
20421 INSERT_LDETS_PRICE_LIST_MULT( p_LINE_DETAIL_index => G_LINE_DETAIL_INDEX_LD_TBL,
20422 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
20423 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
20424 p_LINE_INDEX => G_LINE_INDEX_LD_TBL,
20425 p_CREATED_FROM_LIST_HEADER_ID =>G_LIST_HEADER_ID_LD_TBL,
20426 p_CREATED_FROM_LIST_LINE_ID =>G_LIST_LINE_ID_LD_TBL,
20427 p_CREATED_FROM_LIST_LINE_TYPE =>G_LIST_LINE_TYPE_TBL,
20428 p_CREATED_FROM_LIST_TYPE_CODE =>G_LIST_TYPE_CODE_TBL,
20429 p_CREATED_FROM_SQL =>G_CREATED_FROM_SQL_TBL,
20430 p_PRICING_GROUP_SEQUENCE =>G_PRICING_GROUP_SEQUENCE_TBL,
20431 P_PRICING_PHASE_ID =>G_PRICING_PHASE_ID_TBL,
20432 p_OPERAND_CALCULATION_CODE =>G_OPERAND_CALCULATION_CODE_TBL,
20433 p_OPERAND_VALUE =>G_OPERAND_VALUE_TBL,
20434 p_PRICE_FORMULA_ID =>G_PRICE_FORMULA_ID_TBL,
20435 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_LD_TBL,
20436 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_LD_TBL,
20437 p_PRODUCT_PRECEDENCE =>G_PRODUCT_PRECEDENCE_TBL ,
20438 p_INCOMPATABLILITY_GRP_CODE =>G_INCOMP_GRP_CODE_TBL,
20439 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_LD_TBL,
20440 p_APPLIED_FLAG =>G_APPLIED_FLAG_LD_TBL,
20441 p_AUTOMATIC_FLAG =>G_AUTOMATIC_FLAG_TBL,
20442 p_PRIMARY_UOM_FLAG =>G_PRIMARY_UOM_FLAG_TBL,
20443 p_MODIFIER_LEVEL_CODE =>G_MODIFIER_LEVEL_CODE_TBL,
20444 p_LIST_LINE_NO =>G_LIST_LINE_NO_TBL,
20445 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
20446 P_CURRENCY_DETAIL_ID =>G_CURRENCY_DETAIL_ID_TBL, /* sunilpandey */
20447 P_CURRENCY_HEADER_ID =>G_CURRENCY_HEADER_ID_TBL, /* vivek */
20448 P_SELLING_ROUNDING_FACTOR =>G_SELLING_ROUNDING_TBL, /* vivek */
20449 P_ORDER_CURRENCY =>G_ORDER_CURRENCY_TBL, /* vivek */
20450 P_PRICING_EFFECTIVE_DATE =>G_PRICING_EFFECTIVE_DATE_TBL, /* vivek */
20451 P_BASE_CURRENCY_CODE =>G_BASE_CURRENCY_CODE_TBL, /* vivek */
20452 P_BREAK_UOM_CODE =>G_BREAK_UOM_TBL, /* Proration */
20453 P_BREAK_UOM_CONTEXT =>G_BREAK_CONTEXT_TBL, /* Proration */
20454 P_BREAK_UOM_ATTRIBUTE =>G_BREAK_ATTRIBUTE_TBL, /* Proration */
20455 x_status_code =>l_status_code,
20456 x_status_text =>l_status_text
20457 );
20458 else -- vivek, multi currency not installed, not used
20459 INSERT_LDETS_PRICE_LIST_PVT( p_LINE_DETAIL_index => G_LINE_DETAIL_INDEX_LD_TBL,
20460 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
20461 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
20462 p_LINE_INDEX => G_LINE_INDEX_LD_TBL,
20463 p_CREATED_FROM_LIST_HEADER_ID =>G_LIST_HEADER_ID_LD_TBL,
20464 p_CREATED_FROM_LIST_LINE_ID =>G_LIST_LINE_ID_LD_TBL,
20465 p_CREATED_FROM_LIST_LINE_TYPE =>G_LIST_LINE_TYPE_TBL,
20466 p_CREATED_FROM_LIST_TYPE_CODE =>G_LIST_TYPE_CODE_TBL,
20467 p_CREATED_FROM_SQL =>G_CREATED_FROM_SQL_TBL,
20468 p_PRICING_GROUP_SEQUENCE =>G_PRICING_GROUP_SEQUENCE_TBL,
20469 P_PRICING_PHASE_ID =>G_PRICING_PHASE_ID_TBL,
20470 p_OPERAND_CALCULATION_CODE =>G_OPERAND_CALCULATION_CODE_TBL,
20471 p_OPERAND_VALUE =>G_OPERAND_VALUE_TBL,
20472 p_PRICE_FORMULA_ID =>G_PRICE_FORMULA_ID_TBL,
20473 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_LD_TBL,
20474 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_LD_TBL,
20475 p_PRODUCT_PRECEDENCE =>G_PRODUCT_PRECEDENCE_TBL ,
20476 p_INCOMPATABLILITY_GRP_CODE =>G_INCOMP_GRP_CODE_TBL,
20477 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_LD_TBL,
20478 p_APPLIED_FLAG =>G_APPLIED_FLAG_LD_TBL,
20479 p_AUTOMATIC_FLAG =>G_AUTOMATIC_FLAG_TBL,
20480 p_PRIMARY_UOM_FLAG =>G_PRIMARY_UOM_FLAG_TBL,
20481 p_MODIFIER_LEVEL_CODE =>G_MODIFIER_LEVEL_CODE_TBL,
20482 p_LIST_LINE_NO =>G_LIST_LINE_NO_TBL,
20483 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
20484 P_BREAK_UOM_CODE =>G_BREAK_UOM_TBL, /* Proration */
20485 P_BREAK_UOM_CONTEXT =>G_BREAK_CONTEXT_TBL, /* Proration */
20486 P_BREAK_UOM_ATTRIBUTE =>G_BREAK_ATTRIBUTE_TBL, /* Proration */
20487 x_status_code =>l_status_code,
20488 x_status_text =>l_status_text
20489 );
20490 end if; -- vivek, multi currency installed
20491 END IF;
20492 M :=1;
20493
20494
20495 IF (K>1) THEN
20496 INSERT_PRICE_LIST_ATTRS
20497 ( p_LINE_INDEX_tbl =>G_LINE_INDEX_tbl,
20498 p_LINE_DETAIL_INDEX_tbl =>G_LINE_DETAIL_INDEX_tbl,
20499 p_ATTRIBUTE_LEVEL_tbl =>G_ATTRIBUTE_LEVEL_tbl,
20500 p_ATTRIBUTE_TYPE_tbl =>G_ATTRIBUTE_TYPE_tbl,
20501 p_LIST_HEADER_ID_tbl =>G_LIST_HEADER_ID_tbl,
20502 p_LIST_LINE_ID_tbl =>G_LIST_LINE_ID_tbl,
20503 p_CONTEXT_tbl =>G_CONTEXT_tbl,
20504 p_ATTRIBUTE_tbl =>G_ATTRIBUTE_tbl,
20505 p_VALUE_FROM_tbl =>G_VALUE_FROM_tbl,
20506 p_SETUP_VALUE_FROM_tbl =>G_SETUP_VALUE_FROM_tbl,
20507 p_SETUP_VALUE_TO_tbl =>G_SETUP_VALUE_TO_tbl,
20508 p_GROUPING_NUMBER_tbl => G_GROUPING_NUMBER_tbl,
20509 p_COMPARISON_OPERATOR_TYPE_tbl =>G_COMPARISON_OPERATOR_TYPE_tbl,
20510 p_VALIDATED_FLAG_tbl =>G_VALIDATED_FLAG_tbl,
20511 p_APPLIED_FLAG_tbl =>G_APPLIED_FLAG_tbl,
20512 p_PRICING_STATUS_CODE_tbl =>G_PRICING_STATUS_CODE_tbl,
20513 p_PRICING_STATUS_TEXT_tbl =>G_PRICING_STATUS_TEXT_tbl,
20514 p_QUALIFIER_PRECEDENCE_tbl =>G_QUALIFIER_PRECEDENCE_tbl,
20515 p_DATATYPE_tbl =>G_DATATYPE_tbl,
20516 p_PRICING_ATTR_FLAG_tbl =>G_PRICING_ATTR_FLAG_tbl,
20517 p_QUALIFIER_TYPE_tbl =>G_QUALIFIER_TYPE_TBL,
20518 p_product_uom_code_tbl =>G_PRODUCT_UOM_CODE_TBL,
20519 p_excluder_flag_tbl =>G_EXCLUDER_FLAG_TBL,
20520 p_PRICING_PHASE_ID_TBL =>G_PRICING_PHASE_ID_TBL_A,
20521 p_INCOMPATABILITY_GRP_CODE_TBL =>G_INCOMP_GRP_CODE_TBL_A,
20522 p_LINE_DETAIL_TYPE_CODE_TBL =>G_LINE_DETAIL_TYPE_CODE_TBL_A,
20523 p_MODIFIER_LEVEL_CODE_TBL =>G_MODIFIER_LEVEL_CODE_TBL_A,
20524 p_PRIMARY_UOM_FLAG_TBL =>G_PRIMARY_UOM_FLAG_TBL_A,
20525 x_status_code =>l_status_code,
20526 x_status_text =>l_status_text);
20527 END IF;
20528 K:=1;
20529
20530
20531 -- Determine Pricing UOM and Qty
20532 IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
20533 IF (l_loop_count <> 0 ) THEN
20534
20535 Evaluate_Between(p_pricing_phase_id,NULL,NULL,l_return_status , l_status_text);
20536
20537 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20538 RAISE E_ROUTINE_ERRORS;
20539 END IF;
20540
20541 -- Check for multiple item categories and customer classes
20542 Eliminate_Multiple_Hierarchies(p_pricing_phase_id,l_return_status,l_status_text);
20543
20544 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20545 RAISE E_ROUTINE_ERRORS;
20546 END IF;
20547
20548 --Handle_Excluder(p_pricing_phase_id,NULL,l_return_status,l_status_text);
20549
20550 Perform_Grouping(p_pricing_phase_id, NULL, l_return_status, l_status_text);
20551 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20552 RAISE E_ROUTINE_ERRORS;
20553 END IF;
20554
20555 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20556 engine_debug('Non Validated Price List Grouping Return Status : ' || l_return_status);
20557
20558
20559 engine_debug('Calling Incomp Routine in Non Validated Price List');
20560
20561 END IF;
20562 QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty
20563 (p_line_index => NULL,
20564 p_order_uom_code => NULL,
20565 p_order_qty => NULL,
20566 p_pricing_phase_id => G_PRICE_LIST_PHASE_ID,
20567 p_call_big_search => FALSE,
20568 x_list_line_id => l_list_line_id,
20569 x_return_status => l_return_status,
20570 x_return_status_txt => l_status_text);
20571
20572 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20573 RAISE E_ROUTINE_ERRORS;
20574 END IF;
20575
20576 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20577 engine_debug('Incomp Return Status Non Validated QP_PREQ_GRP: ' || l_return_status);
20578
20579 END IF;
20580
20581 -- 3773652
20582 -- re-run Evaluate_Between after UOM conversion to check PLL really qualifies
20583 begin
20584 select 'x' into l_dummy
20585 from qp_npreq_lines_tmp
20586 where LINE_UOM_CODE <> nvl(PRICED_UOM_CODE, LINE_UOM_CODE)
20587 and (PRICE_FLAG = G_YES
20588 or
20589 PRICE_FLAG = G_PHASE and p_freeze_override_flag = G_YES)
20590 and rownum = 1;
20591
20592 Evaluate_Between(p_pricing_phase_id,NULL,NULL,l_return_status,l_status_text);
20593 exception
20594 when no_data_found then
20595 null;
20596 end;
20597
20598 -- Update the request line status for lines which got valid price list
20599 Update_Request_Line_Status(p_control_rec,'SUCCESS',p_freeze_override_flag,l_return_status,l_status_text); --[julin/4708044]
20600
20601 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20602 RAISE E_ROUTINE_ERRORS;
20603 END IF;
20604
20605 --bug# 2091386 not reflecting the right price on change on UOM on the order line . Since
20606 --QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty determines the pricing_qty
20607 --which is needed later in Get_Eligible_Price_Break we need to call Get_Eligible_Price_Break
20608 --after QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty.
20609 --By doing this we will get the right price in the PRICE event on change of UOM on the order line
20610 --for price based on price break
20611 Get_Eligible_Price_Break(p_pricing_phase_id,NULL,l_return_status,l_status_text);
20612 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20613 RAISE E_ROUTINE_ERRORS;
20614 END IF;
20615
20616
20617 OPEN l_check_secondary_search;
20618 FETCH l_check_secondary_search INTO l_dummy;
20619
20620 IF l_check_secondary_search%FOUND THEN
20621 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20622 engine_debug('Trying to Perform Secondary Search ');
20623 END IF;
20624 Perform_Secondary_Search(p_freeze_override_flag,p_control_rec,l_return_status,l_status_text);
20625 END IF;
20626 CLOSE l_check_secondary_search;
20627
20628 --delete children lines of PBH if the parent PBH line get eliminated in QP_Resolve_Incompatability_PVT
20629
20630 /*OPEN l_chk_deleted_pbh_cur(J.line_index,G_PRICE_LIST_PHASE_ID);
20631 FETCH l_chk_deleted_pbh_cur INTO l_dummy;
20632 IF l_chk_deleted_pbh_cur%FOUND THEN
20633 Delete_Invalid_PBH_Children(J.line_index,G_PRICE_LIST_PHASE_ID);
20634 END IF;
20635 CLOSE l_chk_deleted_pbh_cur;*/
20636 ELSE
20637 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20638 engine_debug('LOOOOOOOOOOOP Count : ' || l_loop_count);
20639 END IF;
20640 -- Update the request line status for lines which got valid price list
20641 Update_Request_Line_Status(p_control_rec,'FAILURE',p_freeze_override_flag,l_return_status,l_status_text); --[julin/4708044]
20642 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20643 RAISE E_ROUTINE_ERRORS;
20644 END IF;
20645
20646 OPEN l_check_secondary_search;
20647 FETCH l_check_secondary_search INTO l_dummy;
20648
20649 IF l_check_secondary_search%FOUND THEN
20650 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20651 engine_debug('Trying to Perform Secondary Search ');
20652 END IF;
20653 Perform_Secondary_Search(p_freeze_override_flag,p_control_rec,l_return_status,l_status_text);
20654 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
20655 RAISE E_ROUTINE_ERRORS;
20656 END IF;
20657 END IF;
20658 CLOSE l_check_secondary_search;
20659 END IF; --l_loop_count <> 0
20660 END IF;
20661
20662 --If there are request lines that don't have price list passed
20663 --or not validated, the return further_search_flag=Yes to caller
20664
20665 IF (p_pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
20666 OPEN l_check_no_list_passed;
20667 FETCH l_check_no_list_passed INTO l_dummy;
20668
20669 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20670 engine_debug('DUMMMMMMMMMMMMMMY: ' || l_dummy);
20671
20672 END IF;
20673 IF l_check_no_list_passed%FOUND THEN
20674 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20675 engine_debug('DUMMMMMMMMMMMMMMY1000: ' || l_dummy);
20676 END IF;
20677 x_further_search := G_YES;
20678 ELSE
20679 x_further_search := G_NO;
20680 END IF;
20681
20682 CLOSE l_check_no_list_passed;
20683 END IF; --p_pricing_phase_id = G_PRICE_LIST_PHASE_ID
20684
20685 --Reset_all_tbls;
20686 Reset_All_Tbls(l_return_status ,l_status_text );
20687 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
20688 RAISE E_ROUTINE_ERRORS;
20689 END IF;
20690
20691 EXCEPTION
20692 WHEN E_ROUTINE_ERRORS THEN
20693 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20694 engine_debug(l_routine||': '||l_status_text);
20695 END IF;
20696 x_status_code := FND_API.G_RET_STS_ERROR;
20697 x_status_text := l_routine||': '||l_status_text;
20698 WHEN E_NO_LIST_FOUND THEN
20699 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20700 engine_debug('No list found for a given item even after secondary fetch');
20701 END IF;
20702 WHEN TOO_MANY_ROWS THEN
20703 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20704 engine_debug('In LIST_HEADER_SEARCH procedure');
20705 engine_debug('Conflict in price list detected');
20706 engine_debug(SQLERRM);
20707 END IF;
20708 null;
20709 WHEN NO_DATA_FOUND THEN
20710 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20711 engine_debug('In LIST_HEADER_SEARCH procedure');
20712 engine_debug('Item is not in the price list');
20713 END IF;
20714 null;
20715 WHEN OTHERS THEN
20716 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20717 engine_debug(l_routine||' '||SQLERRM);
20718 END IF;
20719 x_status_code := FND_API.G_RET_STS_ERROR;
20720 x_status_text := l_routine||' '||SQLERRM;
20721 END LIST_HEADER_SEARCH;
20722
20723
20724
20725 /*+--------------------------------------------------------
20726 | PROCEDURE QUALIFIER_GROUPING
20727 +--------------------------------------------------------
20728 */
20729 PROCEDURE Perform_Qualifier_Grouping(p_line_index_based_flag VARCHAR2,
20730 p_pricing_phase_id NUMBER,
20731 x_status_code OUT NOCOPY VARCHAR2,
20732 x_status_text OUT NOCOPY VARCHAR2) AS
20733
20734 /*
20735 INDX,QP_PREQ_GRP.perform_qualifier_grouping.header_level_qual_attrs_cur,QP_PREQ_QUAL_TMP_N1,LIST_LINE_ID,1
20736 INDX,QP_PREQ_GRP.perform_qualifier_grouping.header_level_qual_attrs_cur,QP_PREQ_QUAL_TMP_N1,PRICING_STATUS_CODE,2
20737 */
20738 CURSOR header_level_qual_attrs_cur IS
20739 SELECT a.LIST_HEADER_ID,
20740 a.QUALIFIER_GROUPING_NO,
20741 a.QUALIFIER_GROUP_CNT,
20742 a.UNIQUE_KEY,
20743 -- COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP [julin/3527596,4274099]
20744 COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP,
20745 1 --7038849
20746 FROM QP_PREQ_QUAL_TMP a
20747 WHERE a.LIST_LINE_ID = -1
20748 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
20749 AND a.PRICING_PHASE_ID = p_pricing_phase_id
20750 AND a.QUALIFIER_GROUPING_NO = -1 --7038849
20751 GROUP BY a.LIST_HEADER_ID, a.QUALIFIER_GROUPING_NO,a.QUALIFIER_GROUP_CNT,a.UNIQUE_KEY
20752 UNION ALL -- 7038849
20753 SELECT a.LIST_HEADER_ID,
20754 a.QUALIFIER_GROUPING_NO,
20755 a.QUALIFIER_GROUP_CNT,
20756 a.UNIQUE_KEY,
20757 -- COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP [julin/3527596,4274099]
20758 COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP,
20759 2 --7038849
20760 FROM QP_PREQ_QUAL_TMP a
20761 WHERE a.LIST_LINE_ID = -1
20762 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
20763 AND a.PRICING_PHASE_ID = p_pricing_phase_id
20764 AND a.QUALIFIER_GROUPING_NO <> -1 --7038849
20765 GROUP BY a.LIST_HEADER_ID, a.QUALIFIER_GROUPING_NO,a.QUALIFIER_GROUP_CNT,a.UNIQUE_KEY
20766 ORDER BY 1,6; --7038849
20767
20768 /*
20769 INDX,QP_PREQ_GRP.perform_qualifier_grouping.hdr_lvl_qual_attrs_req_line,QP_PREQ_QUAL_TMP_N1,LIST_LINE_ID,1
20770 INDX,QP_PREQ_GRP.perform_qualifier_grouping.hdr_lvl_qual_attrs_req_line,QP_PREQ_QUAL_TMP_N1,PRICING_STATUS_CODE,2
20771 INDX,QP_PREQ_GRP.perform_qualifier_grouping.hdr_lvl_qual_attrs_req_line,QP_PREQ_QUAL_TMP_N1,LINE_INDEX,3
20772 */
20773 CURSOR hdr_lvl_qual_attrs_req_line IS
20774 SELECT a.LINE_INDEX,
20775 a.LIST_HEADER_ID,
20776 a.QUALIFIER_GROUPING_NO,
20777 a.QUALIFIER_GROUP_CNT,
20778 a.UNIQUE_KEY,
20779 -- COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP [julin/3527596,4274099]
20780 COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP,
20781 1 -- 7038849
20782 FROM QP_PREQ_QUAL_TMP a
20783 WHERE a.LIST_LINE_ID = -1
20784 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
20785 AND a.PRICING_PHASE_ID = p_pricing_phase_id
20786 --AND a.LINE_INDEX > 0
20787 AND a.QUALIFIER_GROUPING_NO = -1 --7038849
20788 GROUP BY a.LINE_INDEX , a.LIST_HEADER_ID, a.QUALIFIER_GROUPING_NO,a.QUALIFIER_GROUP_CNT,a.UNIQUE_KEY
20789 UNION ALL --7038849
20790 SELECT a.LINE_INDEX,
20791 a.LIST_HEADER_ID,
20792 a.QUALIFIER_GROUPING_NO,
20793 a.QUALIFIER_GROUP_CNT,
20794 a.UNIQUE_KEY,
20795 -- COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP [julin/3527596,4274099]
20796 COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP,
20797 2 -- 7038849
20798 FROM QP_PREQ_QUAL_TMP a
20799 WHERE a.LIST_LINE_ID = -1
20800 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
20801 AND a.PRICING_PHASE_ID = p_pricing_phase_id
20802 --AND a.LINE_INDEX > 0
20803 AND a.QUALIFIER_GROUPING_NO <> -1 --7038849
20804 GROUP BY a.LINE_INDEX , a.LIST_HEADER_ID, a.QUALIFIER_GROUPING_NO,a.QUALIFIER_GROUP_CNT,a.UNIQUE_KEY
20805 ORDER BY 1,2,7; --7038849
20806
20807 /*
20808 INDX,QP_PREQ_GRP.perform_qualifier_grouping.line_level_qual_attrs_cur,QP_PREQ_QUAL_TMP_N5,PRICING_STATUS_CODE,1
20809 INDX,QP_PREQ_GRP.perform_qualifier_grouping.line_level_qual_attrs_cur,QP_PREQ_QUAL_TMP_N5,LIST_LINE_ID,4
20810 */
20811 CURSOR line_level_qual_attrs_cur IS
20812 SELECT a.LIST_HEADER_ID,
20813 a.LIST_LINE_ID,
20814 a.QUALIFIER_GROUPING_NO,
20815 a.QUALIFIER_GROUP_CNT,
20816 a.HEADER_QUALS_EXIST_FLAG,
20817 a.UNIQUE_KEY,
20818 -- COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP [julin/3527596,4274099]
20819 COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP,
20820 1 --7038849
20821 FROM QP_PREQ_QUAL_TMP a
20822 WHERE a.LIST_LINE_ID > 0
20823 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
20824 AND a.PRICING_PHASE_ID = p_pricing_phase_id
20825 AND a.QUALIFIER_GROUPING_NO = -1 --7038849
20826 GROUP BY a.LIST_HEADER_ID , a.LIST_LINE_ID,a.QUALIFIER_GROUPING_NO,a.QUALIFIER_GROUP_CNT,a.HEADER_QUALS_EXIST_FLAG,
20827 a.UNIQUE_KEY
20828 UNION ALL -- 7038849
20829 SELECT a.LIST_HEADER_ID,
20830 a.LIST_LINE_ID,
20831 a.QUALIFIER_GROUPING_NO,
20832 a.QUALIFIER_GROUP_CNT,
20833 a.HEADER_QUALS_EXIST_FLAG,
20834 a.UNIQUE_KEY,
20835 -- COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP [julin/3527596,4274099]
20836 COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP,
20837 2 --7038849
20838 FROM QP_PREQ_QUAL_TMP a
20839 WHERE a.LIST_LINE_ID > 0
20840 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
20841 AND a.PRICING_PHASE_ID = p_pricing_phase_id
20842 AND a.QUALIFIER_GROUPING_NO <> -1 --7038849
20843 GROUP BY a.LIST_HEADER_ID , a.LIST_LINE_ID,a.QUALIFIER_GROUPING_NO,a.QUALIFIER_GROUP_CNT,a.HEADER_QUALS_EXIST_FLAG,
20844 a.UNIQUE_KEY
20845 ORDER BY 1,2,8; --7038849
20846
20847 /*
20848 INDX,QP_PREQ_GRP.perform_qualifier_grouping.line_lvl_qual_attrs_req_line,QP_PREQ_QUAL_TMP_N1,LIST_LINE_ID,1
20849 INDX,QP_PREQ_GRP.perform_qualifier_grouping.line_lvl_qual_attrs_req_line,QP_PREQ_QUAL_TMP_N1,PRICING_STATUS_CODE,2
20850 INDX,QP_PREQ_GRP.perform_qualifier_grouping.line_lvl_qual_attrs_req_line,QP_PREQ_QUAL_TMP_N1,LINE_INDEX,3
20851 */
20852 CURSOR line_lvl_qual_attrs_req_line IS
20853 SELECT /*+ INDEX (a QP_PREQ_QUAL_TMP_N1) */ a.LINE_INDEX,
20854 a.LIST_HEADER_ID,
20855 a.LIST_LINE_ID,
20856 a.QUALIFIER_GROUPING_NO,
20857 a.QUALIFIER_GROUP_CNT,
20858 a.HEADER_QUALS_EXIST_FLAG,
20859 a.UNIQUE_KEY,
20860 -- COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP [julin/3527596,4274099]
20861 COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP,
20862 1
20863 FROM QP_PREQ_QUAL_TMP a
20864 WHERE LIST_LINE_ID > 0
20865 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
20866 --AND a.LINE_INDEX > 0
20867 AND a.PRICING_PHASE_ID = p_pricing_phase_id
20868 AND a.QUALIFIER_GROUPING_NO = -1 --7038849
20869 GROUP BY a.LINE_INDEX, a.LIST_HEADER_ID , a.LIST_LINE_ID,a.QUALIFIER_GROUPING_NO,
20870 a.QUALIFIER_GROUP_CNT,a.HEADER_QUALS_EXIST_FLAG,a.UNIQUE_KEY
20871 UNION ALL --7038849
20872 SELECT /*+ INDEX (a QP_PREQ_QUAL_TMP_N1) */ a.LINE_INDEX,
20873 a.LIST_HEADER_ID,
20874 a.LIST_LINE_ID,
20875 a.QUALIFIER_GROUPING_NO,
20876 a.QUALIFIER_GROUP_CNT,
20877 a.HEADER_QUALS_EXIST_FLAG,
20878 a.UNIQUE_KEY,
20879 -- COUNT(distinct qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP [julin/3527596,4274099]
20880 COUNT(qualifier_attribute_context || qualifier_attribute || setup_value_from ) NO_OF_QUALIFIERS_IN_GRP,
20881 2
20882 FROM QP_PREQ_QUAL_TMP a
20883 WHERE LIST_LINE_ID > 0
20884 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
20885 --AND a.LINE_INDEX > 0
20886 AND a.PRICING_PHASE_ID = p_pricing_phase_id
20887 AND a.QUALIFIER_GROUPING_NO <> -1 --7038849
20888 GROUP BY a.LINE_INDEX, a.LIST_HEADER_ID , a.LIST_LINE_ID,a.QUALIFIER_GROUPING_NO,
20889 a.QUALIFIER_GROUP_CNT,a.HEADER_QUALS_EXIST_FLAG,a.UNIQUE_KEY
20890 ORDER BY 1,2,3,9; --7038849
20891
20892 /*
20893 INDX,QP_PREQ_GRP.perform_qualifier_grouping.check_hdr_quals_cur,QP_PREQ_QUAL_TMP_N1,LIST_LINE_ID,1
20894 INDX,QP_PREQ_GRP.perform_qualifier_grouping.check_hdr_quals_cur,QP_PREQ_QUAL_TMP_N1,PRICING_STATUS_CODE,2
20895 */
20896 CURSOR check_hdr_quals_cur(p_list_header_id NUMBER) IS
20897 SELECT LIST_HEADER_ID
20898 FROM QP_PREQ_QUAL_TMP
20899 WHERE LIST_HEADER_ID = p_list_header_id
20900 AND LIST_LINE_ID = -1
20901 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
20902 AND PRICING_PHASE_ID = p_pricing_phase_id
20903 AND ROWNUM = 1;
20904
20905 /*
20906 INDX,QP_PREQ_GRP.perform_qualifier_grouping.check_hdr_quals_cur_req_line,QP_PREQ_QUAL_TMP_N1,LIST_LINE_ID,1
20907 INDX,QP_PREQ_GRP.perform_qualifier_grouping.check_hdr_quals_cur_req_line,QP_PREQ_QUAL_TMP_N1,PRICING_STATUS_CODE,2
20908 INDX,QP_PREQ_GRP.perform_qualifier_grouping.check_hdr_quals_cur_req_line,QP_PREQ_QUAL_TMP_N1,LINE_INDEX,3
20909 */
20910 CURSOR check_hdr_quals_cur_req_line(p_list_header_id NUMBER,
20911 p_line_index NUMBER) IS
20912 SELECT LIST_HEADER_ID
20913 FROM QP_PREQ_QUAL_TMP
20914 WHERE LIST_HEADER_ID = p_list_header_id
20915 AND LINE_INDEX = p_line_index
20916 AND LIST_LINE_ID = -1
20917 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
20918 AND PRICING_PHASE_ID = p_pricing_phase_id
20919 AND ROWNUM = 1;
20920
20921
20922 /*
20923 INDX,QP_PREQ_GRP.perform_qualifier_grouping.chk_other_hdr_quals_exist_cur,QP_QUALIFIERS_N1,LIST_HEADER_ID,1
20924 INDX,QP_PREQ_GRP.perform_qualifier_grouping.chk_other_hdr_quals_exist_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
20925 INDX,QP_PREQ_GRP.perform_qualifier_grouping.chk_other_hdr_quals_exist_cur,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
20926 */
20927 CURSOR chk_other_hdr_quals_exist_cur(p_list_header_id NUMBER) IS
20928 SELECT LIST_HEADER_ID
20929 FROM QP_QUALIFIERS
20930 WHERE LIST_HEADER_ID = p_list_header_id
20931 AND LIST_LINE_ID = -1
20932 AND QUALIFIER_GROUPING_NO <> -1;
20933
20934 /*
20935 INDX,QP_PREQ_GRP.perform_qualifier_grouping.chk_other_line_quals_exist_cur,QP_QUALIFIERS_N1,LIST_LINE_ID,2
20936 INDX,QP_PREQ_GRP.perform_qualifier_grouping.chk_other_line_quals_exist_cur,QP_QUALIFIERS_N1,QUALIFIER_GROUPING_NO,3
20937 */
20938 CURSOR chk_other_line_quals_exist_cur(p_list_line_id NUMBER) IS
20939 SELECT LIST_LINE_ID
20940 FROM QP_QUALIFIERS
20941 WHERE LIST_LINE_ID = p_list_line_id
20942 AND QUALIFIER_GROUPING_NO <> -1;
20943
20944
20945 l_hdr_del_tbl VARCHAR_TYPE;
20946 l_hdr_success_tbl NUMBER_TYPE;
20947 l_line_del_tbl VARCHAR_TYPE;
20948 l_line_success_tbl NUMBER_TYPE;
20949 l_hdr_del_ind BINARY_INTEGER:=0;
20950 l_hdr_success_ind BINARY_INTEGER:=0;
20951 l_line_del_ind BINARY_INTEGER:=0;
20952 l_line_success_ind BINARY_INTEGER:=0;
20953 v_list_header_id NUMBER;
20954 v_header_null_grp_count NUMBER := 0;
20955 v_line_null_grp_count NUMBER := 0;
20956 l_line_level_quals_satisfied BOOLEAN := FALSE;
20957 l_other_list_header_id NUMBER;
20958 l_other_list_line_id NUMBER;
20959 l_list_header_id NUMBER := -9999;
20960 l_list_line_id NUMBER := -9999;
20961 l_line_index NUMBER := -9999;
20962 l_other_grp_exists_flag BOOLEAN := FALSE;
20963 l_other_grp_satisfied_flag BOOLEAN := FALSE;
20964 l_null_unique_key VARCHAR2(2000);
20965
20966 BEGIN
20967
20968 x_status_code := FND_API.G_RET_STS_SUCCESS;
20969
20970 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20971 engine_debug('Qualifier Grouping begin');
20972
20973 END IF;
20974 IF (p_line_index_based_flag = G_NO) THEN
20975
20976 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20977 engine_debug('#QG1 Phase');
20978
20979 END IF;
20980 FOR i IN header_level_qual_attrs_cur LOOP
20981
20982 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
20983 engine_debug('Header Qualifier Grouping No: ' || i.QUALIFIER_GROUPING_NO);
20984 engine_debug('Passed Hdr Quals : '||i.no_of_qualifiers_in_grp||'Hdr id : '||i.list_header_id);
20985 engine_debug('Header Null Group Count : ' || v_header_null_grp_count);
20986
20987 END IF;
20988 IF (i.LIST_HEADER_ID <> l_list_header_id ) THEN
20989
20990 v_header_null_grp_count := 0;
20991 -- This code is to delete the -1 group if none of the other groups are satisfied on change of list header
20992 IF (l_other_grp_exists_flag = TRUE) THEN
20993 IF (l_other_grp_satisfied_flag = FALSE) THEN
20994 IF (l_null_unique_key IS NOT NULL) THEN
20995 l_hdr_del_ind := l_hdr_del_ind + 1;
20996 l_hdr_del_tbl(l_hdr_del_ind) := l_null_unique_key;
20997 END IF;
20998 END IF;
20999 END IF;
21000 l_other_grp_exists_flag := FALSE;
21001 l_other_grp_satisfied_flag := FALSE;
21002 END IF;
21003
21004 IF (i.QUALIFIER_GROUPING_NO = -1) THEN
21005 l_null_unique_key := i.unique_key;
21006 IF (i.NO_OF_QUALIFIERS_IN_GRP < i.QUALIFIER_GROUP_CNT) THEN -- 4043768/4261138
21007 l_other_list_header_id:=NULL;
21008 OPEN chk_other_hdr_quals_exist_cur(i.list_header_id);
21009 FETCH chk_other_hdr_quals_exist_cur INTO l_other_list_header_id;
21010 CLOSE chk_other_hdr_quals_exist_cur;
21011
21012 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21013 engine_debug('Other Groups Exist in this Hdr id : '||l_other_list_header_id);
21014
21015 END IF;
21016 -- If there are no other groups , then it is a failure on pure null group,else it is not
21017 IF (l_other_list_header_id IS NULL) THEN
21018 l_other_grp_exists_flag := FALSE;
21019 l_null_unique_key := NULL;
21020 l_hdr_del_ind := l_hdr_del_ind + 1;
21021 l_hdr_del_tbl(l_hdr_del_ind) := i.unique_key;
21022 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21023 engine_debug('Deleted Hdr id : '||i.list_header_id||' Unique Key : ' || i.unique_key);
21024 END IF;
21025 ELSE
21026 --l_null_unique_key := i.unique_key;
21027 l_other_grp_exists_flag := TRUE;
21028 END IF;
21029 /* Added for 3259922 */
21030 ELSE
21031 l_other_list_header_id:=NULL;
21032 OPEN chk_other_hdr_quals_exist_cur(i.list_header_id);
21033 FETCH chk_other_hdr_quals_exist_cur INTO l_other_list_header_id;
21034 CLOSE chk_other_hdr_quals_exist_cur;
21035
21036 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21037 engine_debug('Other Groups Exist in this Hdr id : '||l_other_list_header_id);
21038 END IF;
21039
21040 IF (l_other_list_header_id IS NOT NULL) THEN
21041 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21042 engine_debug('Other groups exist');
21043 END IF; -- 4033618
21044 l_other_grp_exists_flag := TRUE;
21045 END IF; -- end 3259922
21046 END IF;
21047
21048 v_header_null_grp_count := i.NO_OF_QUALIFIERS_IN_GRP;
21049
21050 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21051 engine_debug('Header Null Group Count : ' || v_header_null_grp_count);
21052
21053 END IF;
21054 ELSE
21055
21056 -- 4043768/4261138, changed <> to < condition
21057 IF (i.NO_OF_QUALIFIERS_IN_GRP + v_header_null_grp_count < i.QUALIFIER_GROUP_CNT) THEN
21058 --l_other_grp_satisfied_flag := FALSE; do not make it false if it is already TRUE because some grp is satisfied
21059 l_hdr_del_ind := l_hdr_del_ind + 1;
21060 l_hdr_del_tbl(l_hdr_del_ind) := i.unique_key;
21061 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21062 engine_debug('Deleted Hdr id : '||i.list_header_id|| ' Unique Key : ' || i.unique_key);
21063 END IF;
21064 ELSE
21065 l_other_grp_satisfied_flag := TRUE;
21066 END IF;
21067
21068 END IF;
21069
21070 l_list_header_id := i.LIST_HEADER_ID;
21071
21072 END LOOP;
21073
21074 -- This code is to delete the -1 group if none of the other groups are satisfied for the last list header
21075 IF (l_other_grp_exists_flag = TRUE) THEN
21076 IF (l_other_grp_satisfied_flag = FALSE) THEN
21077 IF (l_null_unique_key IS NOT NULL) THEN
21078 l_hdr_del_ind := l_hdr_del_ind + 1;
21079 l_hdr_del_tbl(l_hdr_del_ind) := l_null_unique_key;
21080 END IF;
21081 END IF;
21082 END IF;
21083
21084 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21085 engine_debug('#QG2');
21086
21087 END IF;
21088 IF (l_hdr_del_tbl.count > 0) THEN
21089 FOR m in 1 .. l_hdr_del_tbl.count LOOP
21090 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21091 engine_debug('Deleted Headers : ' || l_hdr_del_tbl(m));
21092 END IF;
21093 END LOOP;
21094 END IF;
21095
21096 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21097 engine_debug('#QG3');
21098
21099 END IF;
21100 IF (l_hdr_del_tbl.count > 0) THEN
21101 FORALL i in l_hdr_del_tbl.FIRST..l_hdr_del_tbl.LAST
21102 /*
21103 INDX,QP_PREQ_GRP.perform_qualifier_grouping.upd1,QP_PREQ_QUAL_TMP_N3,PRICING_STATUS_CODE,1
21104 INDX,QP_PREQ_GRP.perform_qualifier_grouping.upd1,QP_PREQ_QUAL_TMP_N3,UNIQUE_KEY,2
21105 */
21106 UPDATE QP_PREQ_QUAL_TMP --upd1
21107 SET PRICING_STATUS_CODE = G_DELETED_GRP
21108 WHERE UNIQUE_KEY = l_hdr_del_tbl(i)
21109 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
21110 AND PRICING_PHASE_ID = p_pricing_phase_id;
21111 END IF;
21112
21113 l_hdr_del_tbl.delete;
21114 l_hdr_del_ind:=0;
21115
21116 l_other_grp_exists_flag := FALSE;
21117 l_other_grp_satisfied_flag := FALSE;
21118
21119 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21120 engine_debug('#QG4');
21121
21122 END IF;
21123 FOR j IN line_level_qual_attrs_cur LOOP
21124
21125 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21126 engine_debug('Line Qualifier Grouping No: ' || j.QUALIFIER_GROUPING_NO || ' List Header Id : ' || j.list_header_id);
21127 engine_debug('Passed Line Quals : ' || j.no_of_qualifiers_in_grp || 'List Line id : ' || j.list_line_id);
21128 engine_debug('Line Null Group Count : ' || v_line_null_grp_count);
21129
21130 END IF;
21131 IF (j.LIST_HEADER_ID <> l_list_header_id or j.LIST_LINE_ID <> l_list_line_id) THEN
21132
21133 v_line_null_grp_count := 0;
21134
21135 -- This code is to delete the -1 group if none of the other groups are satisfied on change of list header or list line
21136 IF (l_other_grp_exists_flag = TRUE) THEN
21137 IF (l_other_grp_satisfied_flag = FALSE) THEN
21138 IF (l_null_unique_key IS NOT NULL) THEN
21139 l_line_del_ind := l_line_del_ind + 1;
21140 l_line_del_tbl(l_line_del_ind) := l_null_unique_key;
21141 END IF;
21142 END IF;
21143 END IF;
21144 l_other_grp_exists_flag := FALSE;
21145 l_other_grp_satisfied_flag := FALSE;
21146 END IF;
21147
21148 IF (j.QUALIFIER_GROUPING_NO = -1) THEN
21149 l_null_unique_key := j.unique_key;
21150 IF (j.NO_OF_QUALIFIERS_IN_GRP < j.QUALIFIER_GROUP_CNT) THEN -- 4043768/4261138
21151
21152 OPEN chk_other_line_quals_exist_cur(j.list_line_id);
21153 FETCH chk_other_line_quals_exist_cur INTO l_other_list_line_id;
21154 CLOSE chk_other_line_quals_exist_cur;
21155
21156 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21157 engine_debug('Other Groups Exist in this Line id : '||l_other_list_line_id);
21158
21159 END IF;
21160 -- If there are no other groups , then it is a failure on pure null group,else it is not
21161 IF (l_other_list_line_id IS NULL) THEN
21162 l_other_grp_exists_flag := FALSE;
21163 l_null_unique_key := NULL;
21164 l_line_del_ind := l_line_del_ind + 1;
21165 l_line_del_tbl(l_line_del_ind) := j.unique_key;
21166 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21167 engine_debug('Deleted Line id : '||j.list_line_id|| ' Unique Key : ' || j.unique_key);
21168 END IF;
21169 ELSE
21170 l_other_grp_exists_flag := TRUE;
21171 END IF;
21172 ELSE
21173 l_line_level_quals_satisfied := TRUE;
21174 --l_null_unique_key := j.unique_key;
21175 END IF;
21176
21177 v_line_null_grp_count := j.NO_OF_QUALIFIERS_IN_GRP;
21178 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21179 engine_debug('Line Null Group Count : ' || v_line_null_grp_count);
21180
21181 END IF;
21182 ELSE
21183
21184 -- 4043768/4261138, changed <> to < condition
21185 IF (j.NO_OF_QUALIFIERS_IN_GRP + v_line_null_grp_count < j.QUALIFIER_GROUP_CNT) THEN
21186 --l_other_grp_satisfied_flag := FALSE;
21187 l_line_del_ind := l_line_del_ind + 1;
21188 l_line_del_tbl(l_line_del_ind) := j.unique_key;
21189 --l_line_del_tbl(l_line_del_ind) := j.list_line_id;
21190 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21191 engine_debug('Deleted Line id : '||j.list_line_id|| ' Unique Key : ' || j.unique_key);
21192 END IF;
21193 ELSE
21194 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21195 engine_debug('Line Quals for : ' || j.list_header_id || ' ' || j.list_line_id );
21196 END IF;
21197 l_line_level_quals_satisfied := TRUE;
21198 l_other_grp_satisfied_flag := TRUE;
21199 END IF;
21200
21201 END IF;
21202
21203 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21204 engine_debug('#QG5');
21205
21206 END IF;
21207 -- Check if header level quals are satisfied.If there is a hdr lvl qualifier in setup and it is not selected
21208 IF (l_line_level_quals_satisfied = TRUE) THEN
21209
21210 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21211 engine_debug('Line Level Quals Satisfied , but checking whether header level qual satisfied');
21212
21213 END IF;
21214 IF (j.HEADER_QUALS_EXIST_FLAG = G_YES) THEN
21215 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21216 engine_debug('Header level quals exist' );
21217 END IF;
21218 v_list_header_id := NULL;
21219
21220 OPEN check_hdr_quals_cur(j.LIST_HEADER_ID);
21221 FETCH check_hdr_quals_cur INTO v_list_header_id;
21222 CLOSE check_hdr_quals_cur;
21223
21224 IF (v_list_header_id IS NULL) THEN
21225 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21226 engine_debug('Line Level Quals Not Satisfied , as Header Id is : ' || nvl(v_list_header_id,-99999));
21227 END IF;
21228 l_line_del_ind := l_line_del_ind + 1;
21229 l_line_del_tbl(l_line_del_ind) := j.unique_key;
21230 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21231 engine_debug('Deleted Line id : '||j.list_line_id|| ' Unique Key : ' || j.unique_key);
21232 END IF;
21233 ELSE
21234 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21235 engine_debug('Line Level Quals Satisfied , Header Id : ' || nvl(v_list_header_id,-99999));
21236 END IF;
21237 END IF;
21238 ELSE
21239 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21240 engine_debug('Header level quals do not exist' );
21241 END IF;
21242 END IF;
21243
21244 END IF;
21245
21246 l_line_level_quals_satisfied := FALSE;
21247 l_list_header_id := j.LIST_HEADER_ID;
21248 l_list_line_id := j.LIST_LINE_ID;
21249
21250 END LOOP;
21251
21252 -- This code is to delete the -1 group if none of the other groups are satisfied on last list header or list line
21253 IF (l_other_grp_exists_flag = TRUE) THEN
21254 IF (l_other_grp_satisfied_flag = FALSE) THEN
21255 IF (l_null_unique_key IS NOT NULL) THEN
21256 l_line_del_ind := l_line_del_ind + 1;
21257 l_line_del_tbl(l_line_del_ind) := l_null_unique_key;
21258 END IF;
21259 END IF;
21260 END IF;
21261
21262 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21263 engine_debug('#QG6');
21264
21265 END IF;
21266 IF (l_line_del_tbl.count > 0 ) THEN
21267 FOR m in 1 .. l_line_del_tbl.count LOOP
21268 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21269 engine_debug('Deleted Lines : ' || l_line_del_tbl(m));
21270 END IF;
21271 END LOOP;
21272 END IF;
21273
21274 IF (l_line_del_tbl.count > 0 ) THEN
21275 FORALL i in l_line_del_tbl.FIRST..l_line_del_tbl.LAST
21276 /*
21277 INDX,QP_PREQ_GRP.perform_qualifier_grouping.perform_qualifier_grouping_upd2,QP_PREQ_QUAL_TMP_N3,PRICING_STATUS_CODE,1
21278 INDX,QP_PREQ_GRP.perform_qualifier_grouping.perform_qualifier_grouping_upd2,QP_PREQ_QUAL_TMP_N3,UNIQUE_KEY,2
21279 */
21280 UPDATE QP_PREQ_QUAL_TMP --upd2
21281 SET PRICING_STATUS_CODE = G_DELETED_GRP
21282 WHERE UNIQUE_KEY = l_line_del_tbl(i)
21283 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
21284 AND PRICING_PHASE_ID = p_pricing_phase_id;
21285 END IF;
21286
21287 l_line_del_tbl.delete;
21288 l_line_del_ind:=0;
21289
21290 ELSIF (p_line_index_based_flag = G_YES) THEN
21291
21292 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21293 engine_debug('#QG1');
21294
21295 END IF;
21296 FOR i IN hdr_lvl_qual_attrs_req_line LOOP
21297
21298 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21299 engine_debug('Header Qualifier Grouping No: ' || i.QUALIFIER_GROUPING_NO);
21300 engine_debug('Passed Hdr Quals : '||i.no_of_qualifiers_in_grp||'Hdr id : '||i.list_header_id||' Line Indx: '||i.line_index);
21301 engine_debug('Header Null Group Count : ' || v_header_null_grp_count);
21302
21303 END IF;
21304
21305 --[julin/4227338,4261116] IF (i.LIST_HEADER_ID <> l_list_header_id or i.LINE_INDEX <> l_line_index) THEN
21306 IF (i.LIST_HEADER_ID <> l_list_header_id or nvl(i.LINE_INDEX, -88888) <> nvl(l_line_index,-88888)) THEN
21307
21308 v_header_null_grp_count := 0;
21309
21310 -- This code is to delete the -1 group if none of the other groups are satisfied on change of list header or line index
21311 IF (l_other_grp_exists_flag = TRUE) THEN
21312 IF (l_other_grp_satisfied_flag = FALSE) THEN
21313 IF (l_null_unique_key IS NOT NULL) THEN
21314 l_hdr_del_ind := l_hdr_del_ind + 1;
21315 l_hdr_del_tbl(l_hdr_del_ind) := l_null_unique_key;
21316 END IF;
21317 END IF;
21318 END IF;
21319 l_other_grp_exists_flag := FALSE;
21320 l_other_grp_satisfied_flag := FALSE;
21321 END IF;
21322
21323 IF (i.QUALIFIER_GROUPING_NO = -1) THEN
21324 l_null_unique_key := i.unique_key; --added for bug number 3273669
21325 IF (i.NO_OF_QUALIFIERS_IN_GRP < i.QUALIFIER_GROUP_CNT) THEN -- 4043768/4261138
21326 l_other_list_header_id:=NULL;
21327 OPEN chk_other_hdr_quals_exist_cur(i.list_header_id);
21328 FETCH chk_other_hdr_quals_exist_cur INTO l_other_list_header_id;
21329 CLOSE chk_other_hdr_quals_exist_cur;
21330
21331 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21332 engine_debug('Other Groups Exist in this Hdr id : '||l_other_list_header_id);
21333
21334 END IF;
21335 -- If there are no other groups , then it is a failure on pure null group,else it is not
21336 IF (l_other_list_header_id IS NULL) THEN
21337 l_other_grp_exists_flag := FALSE;
21338 l_null_unique_key := NULL;
21339 l_hdr_del_ind := l_hdr_del_ind + 1;
21340 l_hdr_del_tbl(l_hdr_del_ind) := i.unique_key;
21341 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21342 engine_debug('Deleted Hdr id : '||i.list_header_id||' Line Indx: '||i.line_index || ' Unique Key : ' || i.unique_key);
21343 END IF;
21344 ELSE
21345 l_null_unique_key := i.unique_key;
21346 l_other_grp_exists_flag := TRUE;
21347 END IF;
21348 /* Added for 3273669 */
21349 ELSE
21350 l_other_list_header_id:=NULL;
21351 OPEN chk_other_hdr_quals_exist_cur(i.list_header_id);
21352 FETCH chk_other_hdr_quals_exist_cur INTO l_other_list_header_id;
21353 CLOSE chk_other_hdr_quals_exist_cur;
21354
21355 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21356 engine_debug('Other Groups Exist in this Hdr id : '||l_other_list_header_id);
21357 END IF;
21358
21359 IF (l_other_list_header_id IS NOT NULL) THEN
21360 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21361 engine_debug('Other groups exist');
21362 END IF; -- 4033618
21363 l_other_grp_exists_flag := TRUE;
21364 END IF; -- end 3273669
21365
21366 END IF;
21367
21368 v_header_null_grp_count := i.NO_OF_QUALIFIERS_IN_GRP;
21369
21370 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21371 engine_debug('Header Null Group Count : ' || v_header_null_grp_count);
21372
21373 END IF;
21374 ELSE
21375 -- 4043768/4261138, changed <> to < condition
21376 IF (i.NO_OF_QUALIFIERS_IN_GRP + v_header_null_grp_count < i.QUALIFIER_GROUP_CNT) THEN
21377 --l_other_grp_satisfied_flag := FALSE;
21378 l_hdr_del_ind := l_hdr_del_ind + 1;
21379 l_hdr_del_tbl(l_hdr_del_ind) := i.unique_key;
21380 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21381 engine_debug('Deleted Hdr id : '||i.list_header_id||' Line Indx: '||i.line_index || ' Unique Key : ' || i.unique_key);
21382 END IF;
21383 ELSE
21384 l_other_grp_satisfied_flag := TRUE;
21385 END IF;
21386
21387 END IF;
21388
21389 l_list_header_id := i.LIST_HEADER_ID;
21390 l_line_index := i.LINE_INDEX;
21391
21392 END LOOP;
21393
21394 -- This code is to delete the -1 group if none of the other groups are satisfied on last list header or line index
21395 IF (l_other_grp_exists_flag = TRUE) THEN
21396 IF (l_other_grp_satisfied_flag = FALSE) THEN
21397 IF (l_null_unique_key IS NOT NULL) THEN
21398 l_hdr_del_ind := l_hdr_del_ind + 1;
21399 l_hdr_del_tbl(l_hdr_del_ind) := l_null_unique_key;
21400 END IF;
21401 END IF;
21402 END IF;
21403
21404 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21405 engine_debug('#QG2');
21406
21407 END IF;
21408 IF (l_hdr_del_tbl.count > 0) THEN
21409 FOR m in 1 .. l_hdr_del_tbl.count LOOP
21410 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21411 engine_debug('Deleted Headers : ' || l_hdr_del_tbl(m));
21412 END IF;
21413 END LOOP;
21414 END IF;
21415
21416 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21417 engine_debug('#QG3');
21418
21419 END IF;
21420 IF (l_hdr_del_tbl.count > 0) THEN
21421 FORALL i in l_hdr_del_tbl.FIRST..l_hdr_del_tbl.LAST
21422 /*
21423 INDX,QP_PREQ_GRP.perform_qualifier_grouping.perform_qualifier_grouping_upd3,QP_PREQ_QUAL_TMP_N3,PRICING_STATUS_CODE,1
21424 INDX,QP_PREQ_GRP.perform_qualifier_grouping.perform_qualifier_grouping_upd3,QP_PREQ_QUAL_TMP_N3,UNIQUE_KEY,2
21425 */
21426 UPDATE QP_PREQ_QUAL_TMP --upd3
21427 SET PRICING_STATUS_CODE = G_DELETED_GRP
21428 WHERE UNIQUE_KEY = l_hdr_del_tbl(i)
21429 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
21430 AND PRICING_PHASE_ID = p_pricing_phase_id;
21431 END IF;
21432
21433 l_hdr_del_tbl.delete;
21434 l_hdr_del_ind:=0;
21435
21436 l_other_grp_exists_flag := FALSE;
21437 l_other_grp_satisfied_flag := FALSE;
21438
21439 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21440 engine_debug('#QG4');
21441
21442 END IF;
21443 FOR j IN line_lvl_qual_attrs_req_line LOOP
21444
21445 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21446 engine_debug('Line Qualifier Grouping No: ' || j.QUALIFIER_GROUPING_NO || ' List Header Id : ' || j.list_header_id);
21447 engine_debug('Passed Line Quals : ' || j.no_of_qualifiers_in_grp || 'List Line id : ' || j.list_line_id);
21448 engine_debug('Line Null Group Count : ' || v_line_null_grp_count);
21449
21450 END IF;
21451 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
21452
21453 v_line_null_grp_count := 0;
21454
21455 -- 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
21456 IF (l_other_grp_exists_flag = TRUE) THEN
21457 IF (l_other_grp_satisfied_flag = FALSE) THEN
21458 IF (l_null_unique_key IS NOT NULL) THEN
21459 l_line_del_ind := l_line_del_ind + 1;
21460 l_line_del_tbl(l_line_del_ind) := l_null_unique_key;
21461 END IF;
21462 END IF;
21463 END IF;
21464 l_other_grp_exists_flag := FALSE;
21465 l_other_grp_satisfied_flag := FALSE;
21466 END IF;
21467
21468 IF (j.QUALIFIER_GROUPING_NO = -1) THEN
21469 l_null_unique_key := j.unique_key; -- 6913520
21470 IF (j.NO_OF_QUALIFIERS_IN_GRP < j.QUALIFIER_GROUP_CNT) THEN -- 4043768/4261138
21471 l_other_list_line_id:=null; -- 6913520
21472
21473 OPEN chk_other_line_quals_exist_cur(j.list_line_id);
21474 FETCH chk_other_line_quals_exist_cur INTO l_other_list_line_id;
21475 CLOSE chk_other_line_quals_exist_cur;
21476
21477 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21478 engine_debug('Other Groups Exist in this Line id : '||l_other_list_line_id);
21479
21480 END IF;
21481 -- If there are no other groups , then it is a failure on pure null group,else it is not
21482 IF (l_other_list_line_id IS NULL) THEN
21483 l_other_grp_exists_flag := FALSE;
21484 l_null_unique_key := NULL;
21485 l_line_del_ind := l_line_del_ind + 1;
21486 l_line_del_tbl(l_line_del_ind) := j.unique_key;
21487 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21488 engine_debug('Deleted Line id : '||j.list_line_id||' Line Indx: '||j.line_index || ' Unique Key : ' || j.unique_key);
21489 END IF;
21490 ELSE
21491 l_other_grp_exists_flag := TRUE;
21492 END IF;
21493 ELSE
21494 l_line_level_quals_satisfied := TRUE;
21495 l_null_unique_key := j.unique_key;
21496 END IF;
21497
21498 v_line_null_grp_count := j.NO_OF_QUALIFIERS_IN_GRP;
21499 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21500 engine_debug('Line Null Group Count : ' || v_line_null_grp_count);
21501
21502 END IF;
21503 ELSE
21504 -- 4043768/4261138, changed <> to < condition
21505 IF (j.NO_OF_QUALIFIERS_IN_GRP + v_line_null_grp_count < j.QUALIFIER_GROUP_CNT) THEN
21506 --l_other_grp_satisfied_flag := FALSE;
21507 l_line_del_ind := l_line_del_ind + 1;
21508 l_line_del_tbl(l_line_del_ind) := j.unique_key;
21509 --l_line_del_tbl(l_line_del_ind) := j.list_line_id;
21510 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21511 engine_debug('Deleted Line id : '||j.list_line_id||' Line Indx: '||j.line_index || ' Unique Key : ' || j.unique_key);
21512 END IF;
21513 ELSE
21514 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21515 engine_debug('Line Quals for : ' || j.list_header_id || ' ' || j.list_line_id );
21516 END IF;
21517 l_line_level_quals_satisfied := TRUE;
21518 l_other_grp_satisfied_flag := TRUE;
21519 END IF;
21520
21521 END IF;
21522
21523 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21524 engine_debug('#QG5');
21525
21526 END IF;
21527 -- Check if header level quals are satisfied.If there is a hdr lvl qualifier in setup and it is not selected
21528 IF (l_line_level_quals_satisfied = TRUE) THEN
21529
21530 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21531 engine_debug('Line Level Quals Satisfied , but checking whether header level qual satisfied');
21532
21533 END IF;
21534 IF (j.HEADER_QUALS_EXIST_FLAG = G_YES) THEN
21535 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21536 engine_debug('Header level quals exist' );
21537 END IF;
21538 v_list_header_id := NULL;
21539
21540 OPEN check_hdr_quals_cur_req_line(j.LIST_HEADER_ID,j.LINE_INDEX);
21541 FETCH check_hdr_quals_cur_req_line INTO v_list_header_id;
21542 CLOSE check_hdr_quals_cur_req_line;
21543
21544 IF (v_list_header_id IS NULL) THEN
21545 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21546 engine_debug('Line Level Quals Not Satisfied , as Header Id is : ' || nvl(v_list_header_id,-99999));
21547 END IF;
21548 l_line_del_ind := l_line_del_ind + 1;
21549 l_line_del_tbl(l_line_del_ind) := j.unique_key;
21550 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21551 engine_debug('Deleted Line id : '||j.list_line_id||' Line Indx: '||j.line_index || ' Unique Key : ' || j.unique_key);
21552 END IF;
21553 ELSE
21554 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21555 engine_debug('Line Level Quals Satisfied , Header Id : ' || nvl(v_list_header_id,-99999));
21556 END IF;
21557 END IF;
21558
21559 ELSE
21560 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21561 engine_debug('Header level quals do not exist' );
21562 END IF;
21563 END IF;
21564
21565 END IF;
21566
21567 l_line_level_quals_satisfied := FALSE;
21568 l_list_header_id := j.LIST_HEADER_ID;
21569 l_line_index := j.LINE_INDEX;
21570 l_list_line_id := j.LIST_LINE_ID;
21571
21572 END LOOP;
21573
21574 -- 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
21575
21576 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21577 engine_debug ('#1000');
21578 END IF;
21579 IF (l_other_grp_exists_flag = TRUE) THEN
21580 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21581 engine_debug ('#1001');
21582 END IF;
21583 IF (l_other_grp_satisfied_flag = FALSE) THEN
21584 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21585 engine_debug ('#1002');
21586 END IF;
21587 IF (l_null_unique_key IS NOT NULL) THEN
21588 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21589 engine_debug ('#1003');
21590 engine_debug ('Null Unique Key : ' || l_null_unique_key);
21591 END IF;
21592 l_line_del_ind := l_line_del_ind + 1;
21593 l_line_del_tbl(l_line_del_ind) := l_null_unique_key;
21594 END IF;
21595 END IF;
21596 END IF;
21597
21598
21599 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21600 engine_debug('#QG6');
21601
21602 END IF;
21603 IF (l_line_del_tbl.count > 0 ) THEN
21604 FOR m in 1 .. l_line_del_tbl.count LOOP
21605 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21606 engine_debug('Deleted Lines : ' || l_line_del_tbl(m));
21607 END IF;
21608 END LOOP;
21609 END IF;
21610
21611 IF (l_line_del_tbl.count > 0 ) THEN
21612 FORALL i in l_line_del_tbl.FIRST..l_line_del_tbl.LAST
21613 /*
21614 INDX,QP_PREQ_GRP.perform_qualifier_grouping.perform_qualifier_grouping_upd4,QP_PREQ_QUAL_TMP_N3,PRICING_STATUS_CODE,1
21615 INDX,QP_PREQ_GRP.perform_qualifier_grouping.perform_qualifier_grouping_upd4,QP_PREQ_QUAL_TMP_N3,UNIQUE_KEY,2
21616 */
21617 UPDATE QP_PREQ_QUAL_TMP --upd4
21618 SET PRICING_STATUS_CODE = G_DELETED_GRP
21619 WHERE UNIQUE_KEY = l_line_del_tbl(i)
21620 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
21621 AND PRICING_PHASE_ID = p_pricing_phase_id;
21622 END IF;
21623
21624 l_line_del_tbl.delete;
21625 l_line_del_ind:=0;
21626
21627 END IF;
21628
21629 EXCEPTION
21630 WHEN OTHERS THEN
21631 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
21632 engine_debug(SQLERRM);
21633 END IF;
21634 x_status_code:= FND_API.G_RET_STS_ERROR;
21635 x_status_text:= 'In perform qualifier grouping '||SQLERRM;
21636 END Perform_Qualifier_Grouping;
21637
21638 /*+----------------------------------------------------------
21639 |PROCEDURE SELECT_MODIFIERS
21640 +----------------------------------------------------------
21641 */
21642 PROCEDURE SELECT_MODIFIERS(p_pricing_phase_id IN NUMBER,
21643 p_freeze_override_flag IN VARCHAR2,
21644 x_status_code OUT NOCOPY VARCHAR2,
21645 x_status_text OUT NOCOPY VARCHAR2)
21646 AS
21647 /*
21648 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,QP_PREQ_QUAL_TMP_N5,PRICING_STATUS_CODE,1
21649 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,QP_PREQ_QUAL_TMP_N5,SEARCH_IND,2
21650
21651 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,QP_PRICING_ATTRIBUTES_N7,LIST_HEADER_ID,1
21652 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,QP_PRICING_ATTRIBUTES_N7,QUALIFICATION_IND,2
21653 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,QP_PRICING_ATTRIBUTES_N7,PRICING_PHASE_ID,3
21654 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,QP_PRICING_ATTRIBUTES_N7,LIST_LINE_ID,4
21655
21656 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
21657 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
21658 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
21659 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
21660 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
21661 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
21662
21663 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,QP_LIST_LINES_PK,LIST_LINE_ID,1
21664
21665 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
21666 */
21667
21668 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
21669 -- Product and Qualifier Only. No pricing
21670 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 */
21671 qpl.list_header_id,
21672 qpl.list_line_id,
21673 qpl.list_line_type_code,
21674 qplatpr.line_index,
21675 qplatpr.validated_flag,
21676 qplatpr.applied_flag,
21677 qplatpr.attribute_level PRODUCT_ATTRIBUTE_LEVEL,
21678 qplatpr.attribute_type PRODUCT_ATTRIBUTE_TYPE,
21679 qplatpr.context PRODUCT_ATTRIBUTE_CONTEXT,
21680 qplatpr.attribute PRODUCT_ATTRIBUTE,
21681 qplatpr.value_from PRODUCT_ATTR_VALUE,
21682 qpprod.product_attr_value PRODUCT_SETUP_VALUE,
21683 qplatpr.pricing_attr_flag PRODUCT_PRICING_ATTR_FLAG,
21684 qpprod.product_uom_code PRODUCT_UOM_CODE,
21685 qpprod.excluder_flag,
21686 qpl.automatic_flag,
21687 qpl.modifier_level_code,
21688 qpl.primary_uom_flag,
21689 qpl.arithmetic_operator operand_calculation_code,
21690 qpl.operand operand_value,
21691 qpl.net_amount_flag, --IT net_amount 2720717
21692 qpl.pricing_group_sequence,
21693 qpl.pricing_phase_id,
21694 qpl.price_break_type_code,
21695 qpl.incompatibility_grp_code,
21696 qpl.price_by_formula_id,
21697 qpl.product_precedence,
21698 qpl.override_flag,
21699 qpl.benefit_qty,
21700 qpl.benefit_uom_code,
21701 qpl.list_line_no,
21702 qpl.accrual_flag,
21703 qpl.accrual_conversion_rate,
21704 qpl.estim_accrual_rate,
21705 qpq.ask_for_flag,
21706 qpq.created_from_list_type,
21707 qpq.header_limit_exists,
21708 qpl.limit_exists_flag line_limit_exists,
21709 decode(p_list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE, --HQ is header level qualifier
21710 qpl.charge_type_code,
21711 qpl.charge_subtype_code,
21712 qpl.accum_context, -- accum range break
21713 qpl.accum_attribute, -- accum range break
21714 qpl.accum_attr_run_src_flag -- accum range break
21715 from
21716 (select /*+ index (qpqq QP_PREQ_QUAL_TMP_N5) */
21717 distinct line_index, list_header_id, list_line_id, ask_for_flag,created_from_list_type,header_limit_exists
21718 from qp_preq_qual_tmp qpqq
21719 where pricing_status_code = G_STATUS_UNCHANGED
21720 and pricing_phase_id = p_pricing_phase_id
21721 and search_ind = 1
21722 and list_line_id > 0 ) qpq,
21723 qp_pricing_attributes qpprod,
21724 qp_npreq_line_attrs_tmp qplatpr,
21725 qp_list_lines qpl,
21726 qp_npreq_lines_tmp qplines
21727 where
21728 qpprod.list_header_id = qpq.list_header_id
21729 and qpprod.list_line_id = qpq.list_line_id
21730 and qpl.list_line_id = qpprod.list_line_id
21731 and (qpl.modifier_level_code = qplines.line_type_code
21732 OR
21733 (qpl.modifier_level_code = G_LINE_GROUP and
21734 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
21735 and qplines.pricing_effective_date BETWEEN
21736 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date)
21737 and nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
21738 and qplines.priced_uom_code = nvl(qpprod.product_uom_code,qplines.priced_uom_code)
21739 and qpprod.pricing_phase_id = p_pricing_phase_id
21740 and qpprod.QUALIFICATION_IND in (QP_PREQ_GRP.G_YES_PROD_LINE_QUAL_IND,
21741 QP_PREQ_GRP.G_YES_PROD_HDR_LINE_QUAL_IND)
21742 and qpprod.product_attribute_context = qplatpr.context
21743 and qpprod.product_attribute = qplatpr.attribute
21744 and qpprod.product_attr_value = qplatpr.value_from
21745 and qpprod.excluder_flag = G_NO
21746 and qplines.line_index = qplatpr.line_index
21747 and qplatpr.line_index = qpq.line_index
21748 --and qpq.pricing_status_code = G_STATUS_UNCHANGED
21749 --and qpq.search_ind = 1
21750 and qplatpr.attribute_type='PRODUCT'
21751 and qplatpr.pricing_status_code=G_STATUS_UNCHANGED
21752 -- price book
21753 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
21754 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
21755 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
21756 or
21757 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
21758 union all
21759 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 */
21760 qpl.list_header_id,
21761 qpl.list_line_id,
21762 qpl.list_line_type_code,
21763 qplatpr.line_index,
21764 qplatpr.validated_flag,
21765 qplatpr.applied_flag,
21766 qplatpr.attribute_level PRODUCT_ATTRIBUTE_LEVEL,
21767 qplatpr.attribute_type PRODUCT_ATTRIBUTE_TYPE,
21768 qplatpr.context PRODUCT_ATTRIBUTE_CONTEXT,
21769 qplatpr.attribute PRODUCT_ATTRIBUTE,
21770 qplatpr.value_from PRODUCT_ATTR_VALUE,
21771 qpprod.product_attr_value PRODUCT_SETUP_VALUE,
21772 qplatpr.pricing_attr_flag PRODUCT_PRICING_ATTR_FLAG,
21773 qpprod.product_uom_code PRODUCT_UOM_CODE,
21774 qpprod.excluder_flag,
21775 qpl.automatic_flag,
21776 qpl.modifier_level_code,
21777 qpl.primary_uom_flag,
21778 qpl.arithmetic_operator operand_calculation_code,
21779 qpl.operand operand_value,
21780 qpl.net_amount_flag, --IT net_amount 2720717
21781 qpl.pricing_group_sequence,
21782 qpl.pricing_phase_id,
21783 qpl.price_break_type_code,
21784 qpl.incompatibility_grp_code,
21785 qpl.price_by_formula_id,
21786 qpl.product_precedence,
21787 qpl.override_flag,
21788 qpl.benefit_qty,
21789 qpl.benefit_uom_code,
21790 qpl.list_line_no,
21791 qpl.accrual_flag,
21792 qpl.accrual_conversion_rate,
21793 qpl.estim_accrual_rate,
21794 qpq.ask_for_flag,
21795 qpq.created_from_list_type,
21796 qpq.header_limit_exists,
21797 qpl.limit_exists_flag line_limit_exists,
21798 decode(p_list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE, --HQ is header level qualifier
21799 qpl.charge_type_code,
21800 qpl.charge_subtype_code,
21801 qpl.accum_context, -- accum range break
21802 qpl.accum_attribute, -- accum range break
21803 qpl.accum_attr_run_src_flag -- accum range break
21804 from
21805 (select /*+ index (qpqq QP_PREQ_QUAL_TMP_N5) */
21806 distinct line_index, list_header_id, list_line_id, ask_for_flag,created_from_list_type,header_limit_exists
21807 from qp_preq_qual_tmp qpqq
21808 where pricing_status_code = G_STATUS_UNCHANGED
21809 and pricing_phase_id = p_pricing_phase_id
21810 and search_ind = 1
21811 and list_line_id < 0 ) qpq,
21812 qp_npreq_line_attrs_tmp qplatpr,
21813 qp_pricing_attributes qpprod,
21814 qp_list_lines qpl,
21815 qp_npreq_lines_tmp qplines
21816 where
21817 qpprod.list_header_id = qpq.list_header_id
21818 and qpl.list_line_id = qpprod.list_line_id
21819 and (qpl.modifier_level_code = qplines.line_type_code
21820 OR
21821 (qpl.modifier_level_code = G_LINE_GROUP and
21822 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
21823 and qplines.pricing_effective_date BETWEEN
21824 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date)
21825 and nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
21826 and qplines.priced_uom_code = nvl(qpprod.product_uom_code,qplines.priced_uom_code)
21827 and qpprod.pricing_phase_id = p_pricing_phase_id
21828 and qpprod.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
21829 and qpprod.product_attribute_context = qplatpr.context
21830 and qpprod.product_attribute = qplatpr.attribute
21831 and qpprod.product_attr_value = qplatpr.value_from
21832 and qpprod.excluder_flag = G_NO
21833 and qplines.line_index = qplatpr.line_index
21834 and qplatpr.line_index = qpq.line_index
21835 and qplatpr.attribute_type='PRODUCT'
21836 and qplatpr.pricing_status_code=G_STATUS_UNCHANGED
21837 --and qpq.pricing_status_code=G_STATUS_UNCHANGED
21838 --and qpq.search_ind = 1
21839 -- price book
21840 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
21841 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
21842 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
21843 or
21844 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
21845 order by 4,2;
21846
21847 /*
21848 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
21849 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
21850 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
21851 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
21852 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
21853 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,EXCLUDER_FLAG,6
21854 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,LIST_HEADER_ID,7
21855 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PRICING_ATTRIBUTES_N5,LIST_LINE_ID,8
21856
21857 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PREQ_QUAL_TMP_N5,PRICING_STATUS_CODE,1
21858 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PREQ_QUAL_TMP_N5,SEARCH_IND,2
21859 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PREQ_QUAL_TMP_N5,LIST_HEADER_ID,3
21860 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PREQ_QUAL_TMP_N5,LIST_LINE_ID,4
21861 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_PREQ_QUAL_TMP_N5,LINE_INDEX,5
21862
21863 -- Used for qplatpr and qplatpc
21864 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
21865 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
21866 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
21867 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
21868 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
21869 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
21870
21871 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,QP_LIST_LINES_PK,LIST_LINE_ID,1
21872
21873 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_lines_tmp_U1,LINE_INDEX,1
21874 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_lines_tmp_U1,LINE_TYPE_CODE,2
21875
21876 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_PREQ_QUAL_TMP_N5,PRICING_STATUS_CODE,1
21877 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_PREQ_QUAL_TMP_N5,SEARCH_IND,2
21878 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_PREQ_QUAL_TMP_N5,LINE_INDEX,5
21879
21880 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_PRICING_ATTRIBUTES_N7,LIST_HEADER_ID,1
21881 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_PRICING_ATTRIBUTES_N7,QUALIFICATION_IND,2
21882 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_PRICING_ATTRIBUTES_N7,PRICING_PHASE_ID,3
21883 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_PRICING_ATTRIBUTES_N7,LIST_LINE_ID,4
21884
21885 -- Used for qplatpr and qplatpc
21886 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
21887 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
21888 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
21889 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
21890 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
21891 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel1,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
21892
21893 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,QP_LIST_LINES_PK,LIST_LINE_ID,1
21894
21895 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,qp_npreq_lines_tmp_U1,LINE_INDEX,1
21896 INDX,QP_PREQ_GRP.select_modifiers.l_prod_qual_pric_cur_sel2,qp_npreq_lines_tmp_U1,LINE_TYPE_CODE,2
21897 */
21898 CURSOR l_prod_qual_pric_cur(p_pricing_phase_id NUMBER, p_list_header_id NUMBER, p_list_line_id NUMBER,
21899 p_line_index NUMBER) IS
21900 --Product+Qualifiers+Pricing
21901 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 */
21902 qpl.list_header_id,
21903 qpl.list_line_id,
21904 qpl.list_line_type_code,
21905 qplatpr.line_index,
21906 qplatpr.validated_flag,
21907 qplatpr.applied_flag,
21908 --for product attrs
21909 qplatpr.attribute_level PRODUCT_ATTRIBUTE_LEVEL,
21910 qplatpr.attribute_type PRODUCT_ATTRIBUTE_TYPE,
21911 qplatpr.context PRODUCT_ATTRIBUTE_CONTEXT,
21912 qplatpr.attribute PRODUCT_ATTRIBUTE,
21913 qplatpr.value_from PRODUCT_ATTR_VALUE,
21914 qpprod.product_attr_value PRODUCT_SETUP_VALUE,
21915 qplatpr.pricing_attr_flag PRODUCT_PRICING_ATTR_FLAG,
21916 qpprod.product_uom_code PRODUCT_UOM_CODE,
21917 qpprod.excluder_flag,
21918 --for pricing attrs
21919 qplatpc.attribute_level PRICING_ATTRIBUTE_LEVEL,
21920 qplatpc.attribute_type PRICING_ATTRIBUTE_TYPE,
21921 qplatpc.context PRICING_ATTRIBUTE_CONTEXT,
21922 qplatpc.attribute PRICING_ATTRIBUTE,
21923 qplatpc.value_from PRICING_ATTR_VALUE,
21924 qpprod.pricing_attr_value_from PRICING_SETUP_VALUE_FROM,
21925 qpprod.pricing_attr_value_to PRICING_SETUP_VALUE_TO,
21926 qpprod.comparison_operator_code PRICING_COMPARISON_OPERATOR,
21927 qpprod.pricing_attribute_datatype PRICING_DATATYPE,
21928 qpl.automatic_flag,
21929 qpl.modifier_level_code,
21930 qpl.primary_uom_flag,
21931 qpl.arithmetic_operator operand_calculation_code,
21932 qpl.operand operand_value,
21933 qpl.net_amount_flag, --IT net_amount 2720717
21934 qpl.pricing_group_sequence,
21935 qpl.pricing_phase_id,
21936 qpl.price_break_type_code,
21937 qpl.incompatibility_grp_code,
21938 qpl.price_by_formula_id,
21939 qpl.product_precedence,
21940 qpl.override_flag,
21941 qpl.benefit_qty,
21942 qpl.benefit_uom_code,
21943 qpl.list_line_no,
21944 qpl.accrual_flag,
21945 qpl.accrual_conversion_rate,
21946 qpl.estim_accrual_rate,
21947 qpq.ask_for_flag,
21948 qpq.created_from_list_type,
21949 qpq.header_limit_exists,
21950 qpl.limit_exists_flag line_limit_exists,
21951 decode(p_list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE,
21952 qpl.charge_type_code,
21953 qpl.charge_subtype_code,
21954 qpl.accum_context, -- accum range break
21955 qpl.accum_attribute, -- accum range break
21956 qpl.accum_attr_run_src_flag -- accum range break
21957 from
21958 (select /*+ index (qpqq QP_PREQ_QUAL_TMP_N5) */
21959 distinct line_index, list_header_id, list_line_id, ask_for_flag,created_from_list_type,header_limit_exists
21960 from qp_preq_qual_tmp qpqq
21961 where pricing_status_code = G_STATUS_UNCHANGED
21962 and pricing_phase_id = p_pricing_phase_id
21963 and search_ind = 1
21964 and list_line_id > 0 ) qpq,
21965 QP_PRICING_ATTRIBUTES qpprod ,
21966 qp_npreq_line_attrs_tmp qplatpr,
21967 qp_npreq_line_attrs_tmp qplatpc,
21968 qp_list_lines qpl ,
21969 qp_npreq_lines_tmp qplines
21970 where
21971 qpprod.list_header_id = qpq.list_header_id
21972 and qpprod.list_line_id = qpq.list_line_id
21973 and qpl.list_line_id = qpprod.list_line_id
21974 and (qpl.modifier_level_code = qplines.line_type_code
21975 OR
21976 (qpl.modifier_level_code = G_LINE_GROUP and
21977 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
21978 and qplines.pricing_effective_date BETWEEN
21979 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date)
21980 AND nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
21981 and qplines.priced_uom_code = nvl(qpprod.product_uom_code,qplines.priced_uom_code)
21982 and qpl.QUALIFICATION_IND in (QP_PREQ_GRP.G_YES_PROD_PRIC_LINE_QUAL_IND,
21983 QP_PREQ_GRP.G_YES_PRIC_HDR_LINE_QUAL_IND)
21984 and qpl.list_line_type_code <> 'PLL'
21985 and qpprod.pricing_phase_id = p_pricing_phase_id
21986 and qpprod.QUALIFICATION_IND in (QP_PREQ_GRP.G_YES_PROD_PRIC_LINE_QUAL_IND,
21987 QP_PREQ_GRP.G_YES_PRIC_HDR_LINE_QUAL_IND)
21988 and qpprod.product_attribute_context = qplatpr.context
21989 and qpprod.product_attribute = qplatpr.attribute
21990 and qpprod.product_attr_value = qplatpr.value_from
21991 and qpprod.excluder_flag = G_NO
21992 and qpprod.pricing_attribute_context = qplatpc.context
21993 and qpprod.pricing_attribute = qplatpc.attribute
21994 and (qpprod.pricing_attr_value_from = qplatpc.value_from
21995 or qpprod.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN))
21996 --or qpl.price_break_type_code = G_RECURRING_BREAK)
21997 and qpl.pricing_phase_id = p_pricing_phase_id
21998 and qplines.line_index = qpq.line_index
21999 and qplatpr.line_index = qpq.line_index
22000 and qplatpc.line_index = qplatpr.line_index
22001 and qplatpr.attribute_type='PRODUCT'
22002 and qplatpr.pricing_status_code=G_STATUS_UNCHANGED
22003 and qplatpc.attribute_type = 'PRICING'
22004 and qplatpc.pricing_status_code = G_STATUS_UNCHANGED
22005 --and qpq.pricing_status_code = G_STATUS_UNCHANGED
22006 --and qpq.search_ind = 1
22007 -- price book
22008 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
22009 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
22010 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
22011 or
22012 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
22013 union all
22014 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 */
22015 qpl.list_header_id,
22016 qpl.list_line_id,
22017 qpl.list_line_type_code,
22018 qplatpr.line_index,
22019 qplatpr.validated_flag,
22020 qplatpr.applied_flag,
22021 --for product attrs
22022 qplatpr.attribute_level PRODUCT_ATTRIBUTE_LEVEL,
22023 qplatpr.attribute_type PRODUCT_ATTRIBUTE_TYPE,
22024 qplatpr.context PRODUCT_ATTRIBUTE_CONTEXT,
22025 qplatpr.attribute PRODUCT_ATTRIBUTE,
22026 qplatpr.value_from PRODUCT_ATTR_VALUE,
22027 qpprod.product_attr_value PRODUCT_SETUP_VALUE,
22028 qplatpr.pricing_attr_flag PRODUCT_PRICING_ATTR_FLAG,
22029 qpprod.product_uom_code PRODUCT_UOM_CODE,
22030 qpprod.excluder_flag,
22031 --for pricing attrs
22032 qplatpc.attribute_level PRICING_ATTRIBUTE_LEVEL,
22033 qplatpc.attribute_type PRICING_ATTRIBUTE_TYPE,
22034 qplatpc.context PRICING_ATTRIBUTE_CONTEXT,
22035 qplatpc.attribute PRICING_ATTRIBUTE,
22036 qplatpc.value_from PRICING_ATTR_VALUE,
22037 qpprod.pricing_attr_value_from PRICING_SETUP_VALUE_FROM,
22038 qpprod.pricing_attr_value_to PRICING_SETUP_VALUE_TO,
22039 qpprod.comparison_operator_code PRICING_COMPARISON_OPERATOR,
22040 qpprod.pricing_attribute_datatype PRICING_DATATYPE,
22041 qpl.automatic_flag,
22042 qpl.modifier_level_code,
22043 qpl.primary_uom_flag,
22044 qpl.arithmetic_operator operand_calculation_code,
22045 qpl.operand operand_value,
22046 qpl.net_amount_flag, --IT net_amount 2720717
22047 qpl.pricing_group_sequence,
22048 qpl.pricing_phase_id,
22049 qpl.price_break_type_code,
22050 qpl.incompatibility_grp_code,
22051 qpl.price_by_formula_id,
22052 qpl.product_precedence,
22053 qpl.override_flag,
22054 qpl.benefit_qty,
22055 qpl.benefit_uom_code,
22056 qpl.list_line_no,
22057 qpl.accrual_flag,
22058 qpl.accrual_conversion_rate,
22059 qpl.estim_accrual_rate,
22060 qpq.ask_for_flag,
22061 qpq.created_from_list_type,
22062 qpq.header_limit_exists,
22063 qpl.limit_exists_flag line_limit_exists,
22064 decode(p_list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE,
22065 qpl.charge_type_code,
22066 qpl.charge_subtype_code,
22067 qpl.accum_context, -- accum range break
22068 qpl.accum_attribute, -- accum range break
22069 qpl.accum_attr_run_src_flag -- accum range break
22070 from
22071 (select /*+ index (qpqq QP_PREQ_QUAL_TMP_N5) */
22072 distinct line_index, list_header_id, list_line_id, ask_for_flag,created_from_list_type,header_limit_exists
22073 from qp_preq_qual_tmp qpqq
22074 where pricing_status_code = G_STATUS_UNCHANGED
22075 and pricing_phase_id = p_pricing_phase_id
22076 and search_ind = 1
22077 and list_line_id < 0 ) qpq,
22078 qp_npreq_line_attrs_tmp qplatpr,
22079 QP_PRICING_ATTRIBUTES qpprod ,
22080 qp_npreq_line_attrs_tmp qplatpc,
22081 qp_list_lines qpl ,
22082 qp_npreq_lines_tmp qplines
22083 where
22084 qpprod.list_header_id = qpq.list_header_id
22085 and qpl.list_line_id = qpprod.list_line_id
22086 and (qpl.modifier_level_code = qplines.line_type_code
22087 OR
22088 (qpl.modifier_level_code = G_LINE_GROUP and
22089 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
22090 and qplines.pricing_effective_date BETWEEN
22091 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date)
22092 AND nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
22093 and qplines.priced_uom_code = nvl(qpprod.product_uom_code,qplines.priced_uom_code)
22094 and qpl.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
22095 and qpl.list_line_type_code <> 'PLL'
22096 and qpprod.pricing_phase_id = p_pricing_phase_id
22097 and qpprod.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
22098 and qpprod.product_attribute_context = qplatpr.context
22099 and qpprod.product_attribute = qplatpr.attribute
22100 and qpprod.product_attr_value = qplatpr.value_from
22101 and qpprod.excluder_flag = G_NO
22102 and qpprod.pricing_attribute_context = qplatpc.context
22103 and qpprod.pricing_attribute = qplatpc.attribute
22104 and (qpprod.pricing_attr_value_from = qplatpc.value_from
22105 or qpprod.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN))
22106 and qpl.pricing_phase_id = p_pricing_phase_id
22107 and qplines.line_index = qpq.line_index
22108 and qplatpr.line_index = qpq.line_index
22109 and qplatpc.line_index = qplatpr.line_index
22110 and qplatpr.attribute_type='PRODUCT'
22111 and qplatpr.pricing_status_code=G_STATUS_UNCHANGED
22112 and qplatpc.attribute_type = 'PRICING'
22113 and qplatpc.pricing_status_code = G_STATUS_UNCHANGED
22114 --and qpq.pricing_status_code = G_STATUS_UNCHANGED
22115 --and qpq.search_ind = 1
22116 -- price book
22117 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
22118 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
22119 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
22120 or
22121 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
22122 order by 4,2;
22123
22124 /*
22125 INDX,QP_PREQ_GRP.select_modifiers.l_inner_qual_cur,QP_PREQ_QUAL_TMP_N5,PRICING_STATUS_CODE,1
22126 INDX,QP_PREQ_GRP.select_modifiers.l_inner_qual_cur,QP_PREQ_QUAL_TMP_N5,SEARCH_IND,2
22127 INDX,QP_PREQ_GRP.select_modifiers.l_inner_qual_cur,QP_PREQ_QUAL_TMP_N5,list_header_id,3
22128 INDX,QP_PREQ_GRP.select_modifiers.l_inner_qual_cur,QP_PREQ_QUAL_TMP_N5,list_line_id,4
22129
22130 INDX,QP_PREQ_GRP.select_modifiers.l_inner_qual_cur,QP_LIST_LINES_N5,PRICING_PHASE_ID,1
22131 INDX,QP_PREQ_GRP.select_modifiers.l_inner_qual_cur,QP_LIST_LINES_N5,QUALIFICATION_IND,2
22132 */
22133 CURSOR l_INNER_QUAL_CUR(p_pricing_phase_id NUMBER,
22134 p_list_header_id NUMBER,
22135 p_list_line_id NUMBER,
22136 p_line_index NUMBER,
22137 p_pricing_effective_date DATE,
22138 p_start_date_active_first DATE,
22139 p_start_date_active_second DATE,
22140 p_line_type_code VARCHAR2) IS
22141 -- Qualifier Only
22142 -- 5092968, qp_list_lines_n6 replaced with qp_list_lines_pk
22143 select /*+ ORDERED INDEX(qpl,QP_LIST_LINES_PK) l_inner_qual_cur */
22144 qpl.list_header_id,
22145 qpl.list_line_id,
22146 qpl.list_line_type_code,
22147 qpq.line_index,
22148 qpl.automatic_flag,
22149 qpl.modifier_level_code,
22150 qpl.primary_uom_flag,
22151 qpl.arithmetic_operator operand_calculation_code,
22152 qpl.operand operand_value,
22153 qpl.net_amount_flag, --IT net_amount 2720717
22154 qpl.pricing_group_sequence,
22155 qpl.pricing_phase_id,
22156 qpl.price_break_type_code,
22157 qpl.incompatibility_grp_code,
22158 qpl.price_by_formula_id,
22159 qpl.product_precedence,
22160 qpl.override_flag,
22161 qpl.benefit_qty,
22162 qpl.benefit_uom_code,
22163 qpl.list_line_no,
22164 qpl.accrual_flag,
22165 qpl.accrual_conversion_rate,
22166 qpl.estim_accrual_rate,
22167 qpq.ask_for_flag,
22168 qpq.created_from_list_type,
22169 qpq.header_limit_exists,
22170 qpl.limit_exists_flag line_limit_exists,
22171 decode(p_list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE,
22172 qpl.charge_type_code,
22173 qpl.charge_subtype_code,
22174 qpl.accum_context, -- accum range break
22175 qpl.accum_attribute, -- accum range break
22176 qpl.accum_attr_run_src_flag -- accum range break
22177 from
22178 (select /*+ index (qpqq QP_PREQ_QUAL_TMP_N5) */
22179 distinct line_index, line_type_code,pricing_effective_date,list_header_id, list_line_id,
22180 ask_for_flag, created_from_list_type,header_limit_exists
22181 from qp_preq_qual_tmp qpqq
22182 where pricing_status_code = G_STATUS_UNCHANGED
22183 and pricing_phase_id = p_pricing_phase_id
22184 and search_ind = 1
22185 and list_line_id > 0 ) qpq,
22186 qp_list_lines qpl
22187 where
22188 qpl.list_header_id = qpq.list_header_id
22189 and qpl.list_line_id = qpq.list_line_id
22190 and (qpl.modifier_level_code = qpq.line_type_code
22191 OR
22192 (qpl.modifier_level_code = G_LINE_GROUP and
22193 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
22194 and qpq.pricing_effective_date BETWEEN
22195 nvl(TRUNC(qpl.start_date_active), qpq.pricing_effective_date)
22196 AND nvl(TRUNC(qpl.end_date_active),qpq.pricing_effective_date)
22197 and qpl.QUALIFICATION_IND in (QP_PREQ_GRP.G_YES_LINE_QUAL_IND,QP_PREQ_GRP.G_YES_HDR_LINE_QUAL_IND)
22198 and qpl.list_line_type_code <>'PLL'
22199 and qpl.pricing_phase_id = p_pricing_phase_id
22200 --and qpq.pricing_status_code = G_STATUS_UNCHANGED
22201 --and qpq.search_ind = 1
22202 -- price book
22203 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
22204 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
22205 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
22206 or
22207 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
22208 union all
22209 select /*+ ORDERED INDEX(qpl,QP_LIST_LINES_N5) l_inner_qual_cur */
22210 qpl.list_header_id,
22211 qpl.list_line_id,
22212 qpl.list_line_type_code,
22213 qpq.line_index,
22214 qpl.automatic_flag,
22215 qpl.modifier_level_code,
22216 qpl.primary_uom_flag,
22217 qpl.arithmetic_operator operand_calculation_code,
22218 qpl.operand operand_value,
22219 qpl.net_amount_flag, --IT net_amount 2720717
22220 qpl.pricing_group_sequence,
22221 qpl.pricing_phase_id,
22222 qpl.price_break_type_code,
22223 qpl.incompatibility_grp_code,
22224 qpl.price_by_formula_id,
22225 qpl.product_precedence,
22226 qpl.override_flag,
22227 qpl.benefit_qty,
22228 qpl.benefit_uom_code,
22229 qpl.list_line_no,
22230 qpl.accrual_flag,
22231 qpl.accrual_conversion_rate,
22232 qpl.estim_accrual_rate,
22233 qpq.ask_for_flag,
22234 qpq.created_from_list_type,
22235 qpq.header_limit_exists,
22236 qpl.limit_exists_flag line_limit_exists,
22237 decode(p_list_line_id, -1, 'HQ', 'LQ') QUALIFIER_TYPE,
22238 qpl.charge_type_code,
22239 qpl.charge_subtype_code,
22240 qpl.accum_context, -- accum range break
22241 qpl.accum_attribute, -- accum range break
22242 qpl.accum_attr_run_src_flag -- accum range break
22243 from
22244 (select /*+ index (qpqq QP_PREQ_QUAL_TMP_N5) */
22245 distinct line_index, line_type_code,pricing_effective_date,list_header_id, list_line_id,
22246 ask_for_flag, created_from_list_type,header_limit_exists
22247 from qp_preq_qual_tmp qpqq
22248 where pricing_status_code = G_STATUS_UNCHANGED
22249 and pricing_phase_id = p_pricing_phase_id
22250 and search_ind = 1
22251 and list_line_id < 0 ) qpq,
22252 qp_list_lines qpl
22253 where
22254 qpl.list_header_id = qpq.list_header_id
22255 and (qpl.modifier_level_code = qpq.line_type_code
22256 OR
22257 (qpl.modifier_level_code = G_LINE_GROUP and
22258 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
22259 and qpq.pricing_effective_date BETWEEN
22260 nvl(TRUNC(qpl.start_date_active), qpq.pricing_effective_date)
22261 AND nvl(TRUNC(qpl.end_date_active),qpq.pricing_effective_date)
22262 and qpl.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_HDR_QUAL_IND
22263 and qpl.list_line_type_code <>'PLL'
22264 and qpl.pricing_phase_id = p_pricing_phase_id
22265 --and qpq.pricing_status_code = G_STATUS_UNCHANGED
22266 --and qpq.search_ind = 1
22267 -- price book
22268 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
22269 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
22270 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
22271 or
22272 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
22273 order by 4,2;
22274
22275
22276 /*
22277 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
22278 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
22279 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
22280 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
22281 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
22282 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
22283
22284 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
22285 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
22286 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
22287 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
22288 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
22289 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICING_ATTRIBUTES_N5,EXCLUDER_FLAG,6
22290
22291 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
22292
22293 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
22294 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,qp_npreq_lines_tmp_N1,LINE_TYPE_CODE,2
22295
22296 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
22297 INDX,QP_PREQ_GRP.select_modifiers.l_prod_cur,QP_PRICE_REQ_SOURCES_PK,SOURCE_SYSTEM_CODE,2
22298 */
22299 CURSOR l_PROD_CUR (p_pricing_phase_id NUMBER) IS
22300 -- Only Product attributes
22301 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
22302 /* 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 */
22303 qpl.list_header_id,
22304 qpl.list_line_id,
22305 qpl.list_line_type_code,
22306 qplatpr.line_index,
22307 qplatpr.validated_flag,
22308 qplatpr.applied_flag,
22309 --for product
22310 qplatpr.attribute_level PRODUCT_ATTRIBUTE_LEVEL,
22311 qplatpr.attribute_type PRODUCT_ATTRIBUTE_TYPE,
22312 qplatpr.context PRODUCT_ATTRIBUTE_CONTEXT,
22313 qplatpr.attribute PRODUCT_ATTRIBUTE,
22314 qplatpr.value_from PRODUCT_ATTR_VALUE,
22315 qpprod.product_attr_value PRODUCT_SETUP_VALUE,
22316 qplatpr.pricing_attr_flag PRODUCT_PRICING_ATTR_FLAG,
22317 qpprod.product_uom_code PRODUCT_UOM_CODE,
22318 qpprod.excluder_flag,
22319 NULL QUALIFIER_GROUPING_NO,
22320 NULL QUALIFIER_PRECEDENCE,
22321 qpl.automatic_flag,
22322 qpl.modifier_level_code,
22323 qpl.primary_uom_flag,
22324 qpl.arithmetic_operator OPERAND_CALCULATION_CODE,
22325 qpl.operand OPERAND_VALUE,
22326 qpl.net_amount_flag, --IT net_amount 2720717
22327 qpl.pricing_group_sequence,
22328 qph.ask_for_flag,
22329 qph.list_type_code CREATED_FROM_LIST_TYPE,
22330 qpl.pricing_phase_id,
22331 qpl.price_break_type_code,
22332 qpl.incompatibility_grp_code,
22333 qpl.price_by_formula_id,
22334 qpl.product_precedence,
22335 qpl.override_flag,
22336 qpl.benefit_qty,
22337 qpl.benefit_uom_code,
22338 qpl.list_line_no,
22339 qpl.accrual_flag,
22340 qpl.accrual_conversion_rate,
22341 qpl.estim_accrual_rate,
22342 qph.limit_exists_flag header_limit_exists,
22343 qpl.limit_exists_flag line_limit_exists,
22344 'NQ' QUALIFIER_TYPE, --NQ IS NO QUALIFIER
22345 qpl.charge_type_code,
22346 qpl.charge_subtype_code,
22347 qpl.accum_context, -- accum range break
22348 qpl.accum_attribute, -- accum range break
22349 qpl.accum_attr_run_src_flag -- accum range break
22350 FROM
22351 qp_npreq_lines_tmp QPLINES,
22352 qp_npreq_line_attrs_tmp qplatpr,
22353 QP_PRICING_ATTRIBUTES QPPROD ,
22354 QP_LIST_HEADERS_B QPH ,
22355 QP_LIST_LINES QPL ,
22356 --QP_PRICE_REQ_SOURCES QPRS
22357 QP_PRICE_REQ_SOURCES_V QPRS /* yangli */
22358 WHERE
22359 (qplines.price_flag = G_YES
22360 OR
22361 (qplines.price_flag = G_PHASE
22362 AND
22363 p_freeze_override_flag = G_YES))
22364 AND QPH.LIST_HEADER_ID = QPPROD.LIST_HEADER_ID
22365 --added for moac -- commented references to security profile
22366 --security will be built into qp_list_headers_b
22367 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
22368 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
22369 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
22370 and ((qph.currency_code is not null and qph.currency_code = qplines.currency_code)
22371 or
22372 qph.currency_code is null) -- optional currency
22373 --AND qph.currency_code IN (qplines.currency_code , G_ANY_CURRENCY_CODE) --shu, allow currency_code being ANY for modifiers
22374 and (qplines.unit_price is not null
22375 or
22376 qplines.usage_pricing_type = G_AUTHORING_TYPE
22377 or
22378 qplines.line_type_code = G_ORDER_LEVEL)
22379 and (qpl.modifier_level_code = qplines.line_type_code
22380 OR
22381 (qpl.modifier_level_code = G_LINE_GROUP and
22382 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
22383 and qph.active_flag = G_YES
22384 AND ((qph.ASK_FOR_FLAG = G_YES and exists (SELECT /*+ index(la QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/pricebook]
22385 FROM qp_npreq_line_attrs_tmp la
22386 WHERE attribute_type = 'QUALIFIER'
22387 AND pricing_status_code = G_STATUS_UNCHANGED
22388 AND validated_flag = G_NO
22389 AND list_header_id = qph.list_header_id
22390 AND line_index = qplines.line_index))
22391 OR qph.ask_for_flag = G_NO)
22392 AND QPL.LIST_LINE_ID = QPPROD.LIST_LINE_ID
22393 and nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) BETWEEN
22394 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) AND
22395 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
22396 and nvl(qplines.start_date_active_first,TRUNC(SYSDATE)) BETWEEN
22397 nvl(qph.start_date_active_first,nvl(qplines.start_date_active_first,TRUNC(SYSDATE)))
22398 AND
22399 nvl(qph.end_date_active_first,nvl(qplines.start_date_active_first,TRUNC(SYSDATE)))
22400 and nvl(qplines.start_date_active_second,TRUNC(SYSDATE)) BETWEEN
22401 nvl(qph.start_date_active_second, nvl(qplines.start_date_active_second,TRUNC(SYSDATE)))
22402 AND
22403 nvl(qph.end_date_active_second, nvl(qplines.start_date_active_second,TRUNC(SYSDATE)))
22404 and nvl(qplines.active_date_first_type,'X') =
22405 nvl(qph.active_date_first_type,nvl(qplines.active_date_first_type,'X'))
22406 and nvl(qplines.active_date_second_type,'X') =
22407 nvl(qph.active_date_second_type,nvl(qplines.active_date_second_type,'X'))
22408 and nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) BETWEEN --bug7307625
22409 nvl(qpl.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) AND
22410 nvl(qpl.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
22411 /*and qplines.pricing_effective_date BETWEEN
22412 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date)
22413 AND nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)*/
22414 and qplines.priced_uom_code = nvl(qpprod.product_uom_code,qplines.priced_uom_code)
22415 and qpprod.pricing_phase_id = p_pricing_phase_id
22416 and qpprod.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_IND
22417 and qpprod.product_attribute_context = qplatpr.context
22418 and qpprod.product_attribute = qplatpr.attribute
22419 and qpprod.product_attr_value = qplatpr.value_from
22420 and qpprod.excluder_flag = G_NO
22421 and qph.source_system_code = qprs.source_system_code
22422 and qplines.request_type_code = qprs.request_type_code
22423 AND QPLATPR.LINE_INDEX = QPLINES.LINE_INDEX
22424 and qplatpr.attribute_type='PRODUCT'
22425 and qplatpr.pricing_status_code=G_STATUS_UNCHANGED
22426 -- price book
22427 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
22428 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
22429 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
22430 or
22431 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
22432 order by 4,2;
22433
22434 /*
22435 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
22436 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
22437 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
22438 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
22439 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
22440 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
22441
22442 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
22443 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
22444 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
22445 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
22446 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
22447 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICING_ATTRIBUTES_N5,EXCLUDER_FLAG,6
22448
22449 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
22450 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
22451 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
22452
22453 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_LIST_HEADERS_B_PK,LIST_HEADER_ID,1
22454
22455 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
22456 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,qp_npreq_lines_tmp_N1,LINE_TYPE_CODE,2
22457
22458 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
22459 INDX,QP_PREQ_GRP.select_modifiers.l_prod_pric_cur,QP_PRICE_REQ_SOURCES_PK,SOURCE_SYSTEM_CODE,2
22460 */
22461
22462 CURSOR l_PROD_PRIC_CUR (p_pricing_phase_id NUMBER) IS
22463 --PRODUCT and PRICING attributes
22464 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 */
22465 qpl.list_header_id,
22466 qpl.list_line_id,
22467 qpl.list_line_type_code,
22468 qplatpr.line_index,
22469 qplatpr.validated_flag,
22470 qplatpr.applied_flag,
22471 --FOR PRODUCT
22472 qplatpr.attribute_level PRODUCT_ATTRIBUTE_LEVEL,
22473 qplatpr.attribute_type PRODUCT_ATTRIBUTE_TYPE,
22474 qplatpr.context PRODUCT_ATTRIBUTE_CONTEXT,
22475 qplatpr.attribute PRODUCT_ATTRIBUTE,
22476 qplatpr.value_from PRODUCT_ATTR_VALUE,
22477 qpprod.product_attr_value PRODUCT_SETUP_VALUE,
22478 qplatpr.pricing_attr_flag PRODUCT_PRICING_ATTR_FLAG,
22479 qpprod.product_uom_code PRODUCT_UOM_CODE,
22480 qpprod.excluder_flag,
22481 --FOR PRICING
22482 qplatpc.attribute_level PRICING_ATTRIBUTE_LEVEL,
22483 qplatpc.attribute_type PRICING_ATTRIBUTE_TYPE,
22484 qplatpc.context PRICING_ATTRIBUTE_CONTEXT,
22485 qplatpc.attribute PRICING_ATTRIBUTE,
22486 qplatpc.value_from PRICING_ATTR_VALUE,
22487 qpprod.pricing_attr_value_from PRICING_SETUP_VALUE_FROM,
22488 qpprod.pricing_attr_value_to PRICING_SETUP_VALUE_TO,
22489 qpprod.comparison_operator_code PRICING_COMPARISON_OPERATOR,
22490 qpprod.pricing_attribute_datatype PRICING_DATATYPE,
22491 NULL qualifier_grouping_no,
22492 NULL qualifier_precedence,
22493 qpl.automatic_flag,
22494 qpl.modifier_level_code,
22495 qpl.primary_uom_flag,
22496 qpl.arithmetic_operator OPERAND_CALCULATION_CODE,
22497 qpl.operand OPERAND_VALUE,
22498 qpl.net_amount_flag, --IT net_amount 2720717
22499 qpl.pricing_group_sequence,
22500 qph.ask_for_flag,
22501 qph.list_type_code CREATED_FROM_LIST_TYPE,
22502 qpl.pricing_phase_id,
22503 qpl.price_break_type_code,
22504 qpl.incompatibility_grp_code,
22505 qpl.price_by_formula_id,
22506 qpl.product_precedence,
22507 qpl.override_flag,
22508 qpl.benefit_qty,
22509 qpl.benefit_uom_code,
22510 qpl.list_line_no,
22511 qpl.accrual_flag,
22512 qpl.accrual_conversion_rate,
22513 qpl.estim_accrual_rate,
22514 qph.limit_exists_flag header_limit_exists,
22515 qpl.limit_exists_flag line_limit_exists,
22516 'NQ' QUALIFIER_TYPE,
22517 qpl.charge_type_code,
22518 qpl.charge_subtype_code,
22519 qpl.accum_context, -- accum range break
22520 qpl.accum_attribute, -- accum range break
22521 qpl.accum_attr_run_src_flag -- accum range break
22522 FROM
22523 qp_npreq_lines_tmp QPLINES,
22524 qp_npreq_line_attrs_tmp qplatpr,
22525 QP_PRICING_ATTRIBUTES QPPROD ,
22526 qp_npreq_line_attrs_tmp qplatpc,
22527 QP_LIST_HEADERS_B QPH ,
22528 QP_LIST_LINES QPL ,
22529 --QP_PRICE_REQ_SOURCES qprs
22530 QP_PRICE_REQ_SOURCES_V qprs /* yangli */
22531 WHERE
22532 (qplines.price_flag = G_YES
22533 OR
22534 (qplines.price_flag = G_PHASE
22535 AND
22536 p_freeze_override_flag = G_YES))
22537 and ((qph.currency_code is not null and qph.currency_code = qplines.currency_code)
22538 OR
22539 qph.currency_code is null) -- optional currency
22540 --AND qph.currency_code IN (qplines.currency_code , G_ANY_CURRENCY_CODE) --shu, allow currency_code being ANY for modifiers
22541 and (qplines.unit_price is not null
22542 or
22543 qplines.usage_pricing_type = G_AUTHORING_TYPE
22544 or
22545 qplines.line_type_code = G_ORDER_LEVEL)
22546 and (qpl.modifier_level_code = qplines.line_type_code
22547 OR
22548 (qpl.modifier_level_code = G_LINE_GROUP and
22549 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
22550 and qph.active_flag = G_YES
22551 AND ((qph.ASK_FOR_FLAG = G_YES and exists (SELECT /*+ index(la QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/pricebook]
22552 FROM qp_npreq_line_attrs_tmp la
22553 WHERE attribute_type = 'QUALIFIER'
22554 AND pricing_status_code = G_STATUS_UNCHANGED
22555 AND validated_flag = G_NO
22556 AND list_header_id = qph.list_header_id
22557 AND line_index = qplines.line_index))
22558 OR qph.ask_for_flag = G_NO)
22559 AND QPH.LIST_HEADER_ID = QPPROD.LIST_HEADER_ID
22560 --added for moac -- commented references to security profile
22561 --security will be built into qp_list_headers_b
22562 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
22563 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
22564 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
22565 AND QPL.LIST_LINE_ID = QPPROD.LIST_LINE_ID
22566 AND QPPROD.PRICING_PHASE_ID = P_PRICING_PHASE_ID
22567 and nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) BETWEEN
22568 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) AND
22569 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
22570 and nvl(qplines.start_date_active_first,TRUNC(SYSDATE)) BETWEEN
22571 nvl(qph.start_date_active_first,nvl(qplines.start_date_active_first,TRUNC(SYSDATE)))
22572 AND
22573 nvl(qph.end_date_active_first,nvl(qplines.start_date_active_first,TRUNC(SYSDATE)))
22574 and nvl(qplines.start_date_active_second,TRUNC(SYSDATE)) BETWEEN
22575 nvl(qph.start_date_active_second, nvl(qplines.start_date_active_second,TRUNC(SYSDATE)))
22576 AND
22577 nvl(qph.end_date_active_second, nvl(qplines.start_date_active_second,TRUNC(SYSDATE)))
22578 and nvl(qplines.active_date_first_type,'X') =
22579 nvl(qph.active_date_first_type,nvl(qplines.active_date_first_type,'X'))
22580 and nvl(qplines.active_date_second_type,'X') =
22581 nvl(qph.active_date_second_type,nvl(qplines.active_date_second_type,'X'))
22582 and qplines.pricing_effective_date BETWEEN
22583 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date)
22584 AND nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
22585 and qplines.priced_uom_code = nvl(qpprod.product_uom_code,qplines.priced_uom_code)
22586 and qpprod.pricing_phase_id = p_pricing_phase_id
22587 and qpprod.QUALIFICATION_IND = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
22588 and qpprod.product_attribute_context = qplatpr.context
22589 and qpprod.product_attribute = qplatpr.attribute
22590 and qpprod.product_attr_value = qplatpr.value_from
22591 and qpprod.pricing_attribute_context = qplatpc.context
22592 and qpprod.pricing_attribute = qplatpc.attribute
22593 and (qpprod.pricing_attr_value_from = qplatpc.value_from
22594 or qpprod.comparison_operator_code IN ('NOT =',G_OPERATOR_BETWEEN))
22595 --or qpl.price_break_type_code = G_RECURRING_BREAK)
22596 and qpprod.excluder_flag = G_NO
22597 and qplatpc.line_index = qplatpr.line_index
22598 and qplatpr.line_index = qplines.line_index
22599 and qph.source_system_code = qprs.source_system_code
22600 and qplines.request_type_code = qprs.request_type_code
22601 and qplatpc.pricing_attr_flag = G_YES
22602 and qplatpr.attribute_type='PRODUCT'
22603 and qplatpr.pricing_status_code=G_STATUS_UNCHANGED
22604 and qplatpc.attribute_type = 'PRICING'
22605 and qplatpc.pricing_status_code = G_STATUS_UNCHANGED
22606 -- price book
22607 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
22608 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
22609 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
22610 or
22611 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
22612 order by 4,2;
22613
22614 /*
22615 INDX,QP_PREQ_GRP.select_modifiers.l_cur,QP_LIST_LINES_N5,PRICING_PHASE_ID,1
22616 INDX,QP_PREQ_GRP.select_modifiers.l_cur,QP_LIST_LINES_N5,QUALIFICATION_IND,2
22617
22618 INDX,QP_PREQ_GRP.select_modifiers.l_cur,QP_LIST_HEADERS_B_N2,LIST_HEADER_ID,1
22619 INDX,QP_PREQ_GRP.select_modifiers.l_cur,QP_LIST_HEADERS_B_N2,ACTIVE_FLAG,2
22620 INDX,QP_PREQ_GRP.select_modifiers.l_cur,QP_LIST_HEADERS_B_N2,CURRENCY_CODE,3
22621
22622 INDX,QP_PREQ_GRP.select_modifiers.l_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
22623 INDX,QP_PREQ_GRP.select_modifiers.l_cur,QP_PRICE_REQ_SOURCES_PK,SOURCE_SYSTEM_CODE,2
22624 */
22625 cursor l_CUR (p_pricing_phase_id NUMBER) IS
22626 -- NO PRODUCTS AND NO QUALIFIERS
22627 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 */
22628 qpl.list_header_id,
22629 qpl.list_line_id,
22630 qpl.list_line_type_code,
22631 qplines.line_index,
22632 qpl.automatic_flag,
22633 qpl.modifier_level_code,
22634 qpl.primary_uom_flag,
22635 qpl.arithmetic_operator operand_calculation_code,
22636 qpl.operand operand_value,
22637 qpl.net_amount_flag, --IT net_amount 2720717
22638 qpl.pricing_group_sequence,
22639 qph.ask_for_flag,
22640 qph.list_type_code created_from_list_type,
22641 qpl.pricing_phase_id,
22642 qpl.price_break_type_code,
22643 qpl.incompatibility_grp_code,
22644 qpl.price_by_formula_id,
22645 qpl.product_precedence,
22646 qpl.override_flag,
22647 qpl.benefit_qty,
22648 qpl.benefit_uom_code,
22649 qpl.list_line_no,
22650 qpl.accrual_flag,
22651 qpl.accrual_conversion_rate,
22652 qpl.estim_accrual_rate,
22653 qph.limit_exists_flag header_limit_exists,
22654 qpl.limit_exists_flag line_limit_exists,
22655 qpl.charge_type_code,
22656 qpl.charge_subtype_code,
22657 qpl.accum_context, -- accum range break
22658 qpl.accum_attribute, -- accum range break
22659 qpl.accum_attr_run_src_flag -- accum range break
22660 from
22661 qp_npreq_lines_tmp qplines,
22662 qp_list_lines qpl,
22663 qp_list_headers_b qph,
22664 --qp_price_req_sources qprs
22665 qp_price_req_sources_v qprs /* yangli */
22666 where qph.list_header_id = qpl.list_header_id
22667 --added for moac -- commented references to security profile
22668 --security will be built into qp_list_headers_b
22669 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
22670 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
22671 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
22672 and qph.active_flag=G_YES
22673 AND ((qph.ASK_FOR_FLAG = G_YES and exists (SELECT /*+ index(la QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/pricebook]
22674 FROM qp_npreq_line_attrs_tmp la
22675 WHERE attribute_type = 'QUALIFIER'
22676 AND pricing_status_code = G_STATUS_UNCHANGED
22677 AND validated_flag = G_NO
22678 AND list_header_id = qph.list_header_id
22679 AND line_index = qplines.line_index))
22680 OR qph.ask_for_flag = G_NO)
22681 and qpl.pricing_phase_id=p_pricing_phase_id
22682 and qpl.QUALIFICATION_IND = QP_PREQ_GRP.G_BLIND_DISCOUNT_IND
22683 and (qplines.price_flag = G_YES
22684 OR
22685 (qplines.price_flag = G_PHASE
22686 AND
22687 p_freeze_override_flag = G_YES))
22688 and ((qph.currency_code is not null and qph.currency_code = qplines.currency_code)
22689 OR
22690 qph.currency_code is null) -- optional currency
22691 -- AND qph.currency_code IN (qplines.currency_code , G_ANY_CURRENCY_CODE) --shu, allow currency_code being ANY for modifiers
22692 and (qplines.unit_price is not null
22693 or
22694 qplines.usage_pricing_type = G_AUTHORING_TYPE
22695 or
22696 qplines.line_type_code = G_ORDER_LEVEL)
22697 and (qpl.modifier_level_code = qplines.line_type_code
22698 OR
22699 (qpl.modifier_level_code = G_LINE_GROUP and
22700 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)) -- price book
22701 and nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) BETWEEN
22702 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) AND
22703 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
22704 and nvl(qplines.start_date_active_first,TRUNC(SYSDATE)) BETWEEN
22705 nvl(qph.start_date_active_first,nvl(qplines.start_date_active_first,TRUNC(SYSDATE)))
22706 AND
22707 nvl(qph.end_date_active_first,nvl(qplines.start_date_active_first,TRUNC(SYSDATE)))
22708 and nvl(qplines.start_date_active_second,TRUNC(SYSDATE)) BETWEEN
22709 nvl(qph.start_date_active_second, nvl(qplines.start_date_active_second,TRUNC(SYSDATE)))
22710 AND
22711 nvl(qph.end_date_active_second, nvl(qplines.start_date_active_second,TRUNC(SYSDATE)))
22712 and nvl(qplines.active_date_first_type,'X') =
22713 nvl(qph.active_date_first_type,nvl(qplines.active_date_first_type,'X'))
22714 and nvl(qplines.active_date_second_type,'X') =
22715 nvl(qph.active_date_second_type,nvl(qplines.active_date_second_type,'X'))
22716 and qplines.pricing_effective_date BETWEEN
22717 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date)
22718 AND nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
22719 and qph.source_system_code = qprs.source_system_code
22720 and qplines.request_type_code = qprs.request_type_code
22721 -- price book
22722 and (nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES and
22723 qpl.list_line_type_code not in (G_PROMO_GOODS_DISCOUNT,G_OTHER_ITEM_DISCOUNT,
22724 G_COUPON_ISSUE,G_TERMS_SUBSTITUTION,G_ITEM_UPGRADE)
22725 or
22726 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES)
22727 order by 4,2;
22728
22729 /*
22730 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,QP_PRICING_ATTRIBUTES_N5,PRICING_PHASE_ID,1
22731 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,QP_PRICING_ATTRIBUTES_N5,QUALIFICATION_IND,2
22732 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE_CONTEXT,3
22733 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTRIBUTE,4
22734 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,QP_PRICING_ATTRIBUTES_N5,PRODUCT_ATTR_VALUE,5
22735 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,QP_PRICING_ATTRIBUTES_N5,EXCLUDER_FLAG,6
22736
22737 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
22738 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
22739
22740 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,qp_npreq_line_attrs_tmp_N1,LINE_INDEX,1
22741 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,qp_npreq_line_attrs_tmp_N1,ATTRIBUTE_TYPE,2
22742 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,qp_npreq_line_attrs_tmp_N1,PRICING_STATUS_CODE,3
22743 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,qp_npreq_line_attrs_tmp_N1,LIST_HEADER_ID,4
22744 INDX,QP_PREQ_GRP.select_modifiers.l_get_excluded_prods_cur,qp_npreq_line_attrs_tmp_N1,LIST_LINE_ID,5
22745
22746
22747
22748 -- Pricing Phase Change
22749 CURSOR l_get_excluded_prods_cur(p_pricing_phase_id NUMBER) IS
22750 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 /
22751 b.list_header_id,
22752 b.list_line_id,
22753 c.line_index,
22754 c.validated_flag,
22755 c.applied_flag,
22756 c.attribute_level,
22757 G_PRICING_TYPE attribute_type,
22758 c.context,
22759 c.attribute,
22760 c.value_from,
22761 b.product_attr_value setup_value_from,
22762 G_NO pricing_attr_flag,
22763 b.product_uom_code,
22764 b.excluder_flag,
22765 -1 qualifier_precedence,
22766 a.line_detail_index
22767 FROM
22768 qp_npreq_line_attrs_tmp c,
22769 qp_pricing_attributes b,
22770 qp_npreq_line_attrs_tmp a
22771 WHERE b.pricing_phase_id = p_pricing_phase_id
22772 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)
22773 AND b.product_attribute_context = c.context
22774 AND b.product_attribute = c.attribute
22775 AND b.product_attr_value = c.value_from
22776 AND b.excluder_flag = G_YES
22777 AND c.attribute_type = G_PRODUCT_TYPE
22778 AND c.pricing_status_code = G_STATUS_UNCHANGED
22779 AND a.list_header_id = b.list_header_id
22780 AND a.list_line_id = b.list_line_id
22781 AND a.line_index = c.line_index
22782 AND a.attribute_type = G_PRODUCT_TYPE
22783 AND a.pricing_status_code = G_STATUS_NEW;
22784
22785 */
22786
22787
22788 /*
22789 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_details,QP_PREQ_QUAL_TMP_N5,PRICING_STATUS_CODE,1
22790 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_details,QP_PREQ_QUAL_TMP_N5,LINE_INDEX,5
22791 */
22792 CURSOR l_get_line_index_details IS
22793 SELECT distinct
22794 c.LIST_HEADER_ID,
22795 c.LIST_LINE_ID,
22796 c.CREATED_FROM_LIST_TYPE,
22797 c.ASK_FOR_FLAG,
22798 c.LINE_INDEX,
22799 c.PRICING_EFFECTIVE_DATE,
22800 c.START_DATE_ACTIVE_FIRST,
22801 c.START_DATE_ACTIVE_SECOND,
22802 c.LINE_TYPE_CODE
22803 FROM QP_PREQ_QUAL_TMP c
22804 WHERE c.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
22805 AND c.LINE_INDEX > 0
22806 ORDER BY c.LINE_INDEX;
22807
22808 /*
22809 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_for_quals,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
22810 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_for_quals,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
22811 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_for_quals,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
22812 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_for_quals,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
22813 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_for_quals,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
22814 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_for_quals,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
22815
22816 INDX,QP_PREQ_GRP.select_modifiers.l_get_line_index_for_quals,QP_PREQ_QUAL_TMP_N3,PRICING_STATUS_CODE,1
22817
22818 -- Full table scan on qp_npreq_lines_tmp
22819 */
22820
22821 --hw
22822
22823 CURSOR l_get_line_index_for_quals IS
22824 SELECT /*+ ORDERED USE_NL(c a) index(a qp_preq_line_attrs_tmp_n2) l_get_line_index_for_quals */distinct
22825 c.LIST_HEADER_ID,
22826 c.LIST_LINE_ID,
22827 c.QUALIFIER_ATTRIBUTE_CONTEXT,
22828 c.QUALIFIER_ATTRIBUTE,
22829 c.QUALIFIER_ATTRIBUTE_VALUE,
22830 c.CREATED_FROM_LIST_TYPE,
22831 c.ASK_FOR_FLAG,
22832 c.QUALIFIER_GROUPING_NO,
22833 c.QUALIFIER_GROUP_CNT,
22834 c.OTHERS_GROUP_CNT,
22835 c.HEADER_QUALS_EXIST_FLAG,
22836 c.SEARCH_IND,
22837 c.VALIDATED_FLAG,
22838 c.APPLIED_FLAG,
22839 c.QUALIFIER_ATTRIBUTE_LEVEL,
22840 c.QUALIFIER_ATTRIBUTE_TYPE,
22841 c.QUALIFIER_PRECEDENCE,
22842 c.QUALIFIER_DATATYPE,
22843 c.QUALIFIER_TYPE,
22844 c.SETUP_VALUE_FROM,
22845 c.SETUP_VALUE_TO,
22846 c.QUALIFIER_PRICING_ATTR_FLAG,
22847 c.QUALIFIER_OPERATOR_TYPE ,
22848 c.START_DATE_ACTIVE,
22849 c.END_DATE_ACTIVE,
22850 b.LINE_INDEX,
22851 b.PRICING_EFFECTIVE_DATE,
22852 b.START_DATE_ACTIVE_FIRST,
22853 b.START_DATE_ACTIVE_SECOND,
22854 b.LINE_TYPE_CODE,
22855 c.PRICING_STATUS_CODE,
22856 p_pricing_phase_id PRICING_PHASE_ID,
22857 b.LINE_INDEX || '-' || c.LIST_HEADER_ID || '-' || c.LIST_LINE_ID || '-' || c.QUALIFIER_GROUPING_NO UNIQUE_KEY,
22858 NULL START_DATE_ACTIVE_H,
22859 NULL END_DATE_ACTIVE_H,
22860 NULL START_DATE_ACTIVE_SECOND_S,
22861 NULL END_DATE_ACTIVE_SECOND_S,
22862 NULL ACTIVE_DATE_FIRST_TYPE,
22863 NULL ACTIVE_DATE_SECOND_TYPE,
22864 c.HEADER_LIMIT_EXISTS,
22865 a.DERIVED_QUALIFIER_FLAG -- Added for TCA
22866 FROM qp_npreq_lines_tmp b,
22867 QP_PREQ_QUAL_TMP c ,
22868 qp_npreq_line_attrs_tmp a
22869 WHERE a.CONTEXT = c.QUALIFIER_ATTRIBUTE_CONTEXT
22870 AND a.ATTRIBUTE = c.QUALIFIER_ATTRIBUTE
22871 AND a.VALUE_FROM = c.QUALIFIER_ATTRIBUTE_VALUE
22872 AND a.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
22873 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
22874 AND c.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
22875 AND c.PRICING_PHASE_ID = p_pricing_phase_id
22876 AND a.LINE_INDEX = b.LINE_INDEX
22877 AND ((c.ASK_FOR_FLAG = G_YES and exists (SELECT /*+ index(la QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/pricebook]
22878 FROM qp_npreq_line_attrs_tmp la
22879 WHERE attribute_type = 'QUALIFIER'
22880 AND pricing_status_code = G_STATUS_UNCHANGED
22881 AND validated_flag = G_NO
22882 AND list_header_id = c.list_header_id
22883 AND line_index = b.line_index))
22884 OR c.ASK_FOR_FLAG = G_NO)
22885 AND (b.UNIT_PRICE is not null
22886 or
22887 b.usage_pricing_type = G_AUTHORING_TYPE
22888 or
22889 b.LINE_TYPE_CODE = G_ORDER_LEVEL)
22890 AND (b.PRICE_FLAG = G_YES
22891 OR
22892 (b.PRICE_FLAG = G_PHASE
22893 AND
22894 p_freeze_override_flag = G_YES))
22895 AND TRUNC(nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)) BETWEEN --pricing date
22896 TRUNC(nvl(c.START_DATE_ACTIVE,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --qualifier start date
22897 TRUNC(nvl(c.END_DATE_ACTIVE,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --qualifier end date
22898 TRUNC(nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)) BETWEEN --pricing date
22899 TRUNC(nvl(c.START_DATE_ACTIVE_H,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --list header start date
22900 TRUNC(nvl(c.END_DATE_ACTIVE_H,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --list header end date
22901 TRUNC(nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))
22902 BETWEEN
22903 TRUNC(nvl(c.START_DATE_ACTIVE_FIRST,nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND -- Order Date
22904 TRUNC(nvl(c.END_DATE_ACTIVE_FIRST,nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND
22905 TRUNC(nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))
22906 BETWEEN
22907 TRUNC(nvl(c.START_DATE_ACTIVE_SECOND,nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND --Ship Date
22908 TRUNC(nvl(c.END_DATE_ACTIVE_SECOND,nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))))
22909 AND nvl(b.ACTIVE_DATE_FIRST_TYPE,'X') = nvl(c.ACTIVE_DATE_FIRST_TYPE,nvl(b.ACTIVE_DATE_FIRST_TYPE,'X')) -- ORD
22910 AND nvl(b.ACTIVE_DATE_SECOND_TYPE,'X') = nvl(c.ACTIVE_DATE_SECOND_TYPE,nvl(b.ACTIVE_DATE_SECOND_TYPE,'X')) -- SHIP
22911 ORDER BY 1,2,3 ;
22912
22913 /*join cursor for l_get_line_index_for_quals and perform_qualifier_grouping
22914 CURSOR l_get_line_index_for_quals_n IS
22915 SELECT /* ORDERED USE_NL(c a) index(a qp_npreq_line_attrs_tmp_n2) l_get_line_index_for_quals /
22916 distinct
22917 c.LIST_HEADER_ID,
22918 c.LIST_LINE_ID,
22919 c.QUALIFIER_ATTRIBUTE_CONTEXT,
22920 c.QUALIFIER_ATTRIBUTE,
22921 c.QUALIFIER_ATTRIBUTE_VALUE,
22922 c.CREATED_FROM_LIST_TYPE,
22923 c.ASK_FOR_FLAG,
22924 c.QUALIFIER_GROUPING_NO,
22925 c.QUALIFIER_GROUP_CNT,
22926 c.OTHERS_GROUP_CNT,
22927 c.HEADER_QUALS_EXIST_FLAG,
22928 c.SEARCH_IND,
22929 c.VALIDATED_FLAG,
22930 c.APPLIED_FLAG,
22931 c.QUALIFIER_ATTRIBUTE_LEVEL,
22932 c.QUALIFIER_ATTRIBUTE_TYPE,
22933 c.QUALIFIER_PRECEDENCE,
22934 c.QUALIFIER_DATATYPE,
22935 c.QUALIFIER_TYPE,
22936 c.SETUP_VALUE_FROM,
22937 c.SETUP_VALUE_TO,
22938 c.QUALIFIER_PRICING_ATTR_FLAG,
22939 c.QUALIFIER_OPERATOR_TYPE ,
22940 c.START_DATE_ACTIVE,
22941 c.END_DATE_ACTIVE,
22942 b.LINE_INDEX,
22943 b.PRICING_EFFECTIVE_DATE,
22944 b.START_DATE_ACTIVE_FIRST,
22945 b.START_DATE_ACTIVE_SECOND,
22946 b.LINE_TYPE_CODE,
22947 c.PRICING_STATUS_CODE,
22948 p_pricing_phase_id PRICING_PHASE_ID,
22949 b.LINE_INDEX || '-' || c.LIST_HEADER_ID || '-' || c.LIST_LINE_ID || '-' || c.QUALIFIER_GROUPING_NO UNIQUE_KEY,
22950 NULL START_DATE_ACTIVE_H,
22951 NULL END_DATE_ACTIVE_H,
22952 NULL START_DATE_ACTIVE_SECOND_S,
22953 NULL END_DATE_ACTIVE_SECOND_S,
22954 NULL ACTIVE_DATE_FIRST_TYPE,
22955 NULL ACTIVE_DATE_SECOND_TYPE,
22956 c.HEADER_LIMIT_EXISTS
22957 FROM qp_npreq_lines_tmp b,
22958 QP_PREQ_QUAL_TMP c ,
22959 qp_npreq_line_attrs_tmp a
22960 WHERE a.CONTEXT = c.QUALIFIER_ATTRIBUTE_CONTEXT
22961 AND a.ATTRIBUTE = c.QUALIFIER_ATTRIBUTE
22962 AND a.VALUE_FROM = c.QUALIFIER_ATTRIBUTE_VALUE
22963 AND a.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
22964 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
22965 AND c.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
22966 AND c.PRICING_PHASE_ID = p_pricing_phase_id
22967 and c.qualifier_grouping_no <> -1
22968 and c.other_group_cnt + c.null_group_cnt = c.qualifier_group_cnt
22969 AND a.LINE_INDEX = b.LINE_INDEX
22970 AND ((c.ASK_FOR_FLAG = G_YES and
22971 (c.LIST_HEADER_ID,b.LINE_INDEX) IN (SELECT list_header_id,line_index
22972 FROM qp_npreq_line_attrs_tmp
22973 WHERE attribute_type = 'QUALIFIER'
22974 AND pricing_status_code = G_STATUS_UNCHANGED
22975 AND validated_flag = G_NO
22976 AND list_header_id IS NOT NULL))
22977 OR c.ASK_FOR_FLAG = G_NO)
22978 AND (b.UNIT_PRICE is not null
22979 or
22980 b.usage_pricing_type = G_AUTHORING_TYPE
22981 or
22982 b.LINE_TYPE_CODE = G_ORDER_LEVEL)
22983 AND (b.PRICE_FLAG = G_YES
22984 OR
22985 (b.PRICE_FLAG = G_PHASE
22986 AND
22987 p_freeze_override_flag = G_YES))
22988 AND TRUNC(nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)) BETWEEN --pricing date
22989 TRUNC(nvl(c.START_DATE_ACTIVE,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --qualifier start date
22990 TRUNC(nvl(c.END_DATE_ACTIVE,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --qualifier end date
22991 TRUNC(nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)) BETWEEN --pricing date
22992 TRUNC(nvl(c.START_DATE_ACTIVE_H,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --list header start date
22993 TRUNC(nvl(c.END_DATE_ACTIVE_H,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --list header end date
22994 TRUNC(nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))
22995 BETWEEN
22996 TRUNC(nvl(c.START_DATE_ACTIVE_FIRST,nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND -- Order Date
22997 TRUNC(nvl(c.END_DATE_ACTIVE_FIRST,nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND
22998 TRUNC(nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))
22999 BETWEEN
23000 TRUNC(nvl(c.START_DATE_ACTIVE_SECOND,nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND --Ship Date
23001 TRUNC(nvl(c.END_DATE_ACTIVE_SECOND,nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))))
23002 AND nvl(b.ACTIVE_DATE_FIRST_TYPE,'X') = nvl(c.ACTIVE_DATE_FIRST_TYPE,nvl(b.ACTIVE_DATE_FIRST_TYPE,'X')) -- ORD
23003 AND nvl(b.ACTIVE_DATE_SECOND_TYPE,'X') = nvl(c.ACTIVE_DATE_SECOND_TYPE,nvl(b.ACTIVE_DATE_SECOND_TYPE,'X')) -- SHIP
23004 union all
23005 SELECT /* ORDERED USE_NL(c a) index(a qp_npreq_line_attrs_tmp_n2) l_get_line_index_for_quals /
23006 distinct
23007 c.LIST_HEADER_ID,
23008 c.LIST_LINE_ID,
23009 c.QUALIFIER_ATTRIBUTE_CONTEXT,
23010 c.QUALIFIER_ATTRIBUTE,
23011 c.QUALIFIER_ATTRIBUTE_VALUE,
23012 c.CREATED_FROM_LIST_TYPE,
23013 c.ASK_FOR_FLAG,
23014 c.QUALIFIER_GROUPING_NO,
23015 c.QUALIFIER_GROUP_CNT,
23016 c.OTHERS_GROUP_CNT,
23017 c.HEADER_QUALS_EXIST_FLAG,
23018 c.SEARCH_IND,
23019 c.VALIDATED_FLAG,
23020 c.APPLIED_FLAG,
23021 c.QUALIFIER_ATTRIBUTE_LEVEL,
23022 c.QUALIFIER_ATTRIBUTE_TYPE,
23023 c.QUALIFIER_PRECEDENCE,
23024 c.QUALIFIER_DATATYPE,
23025 c.QUALIFIER_TYPE,
23026 c.SETUP_VALUE_FROM,
23027 c.SETUP_VALUE_TO,
23028 c.QUALIFIER_PRICING_ATTR_FLAG,
23029 c.QUALIFIER_OPERATOR_TYPE ,
23030 c.START_DATE_ACTIVE,
23031 c.END_DATE_ACTIVE,
23032 b.LINE_INDEX,
23033 b.PRICING_EFFECTIVE_DATE,
23034 b.START_DATE_ACTIVE_FIRST,
23035 b.START_DATE_ACTIVE_SECOND,
23036 b.LINE_TYPE_CODE,
23037 c.PRICING_STATUS_CODE,
23038 p_pricing_phase_id PRICING_PHASE_ID,
23039 b.LINE_INDEX || '-' || c.LIST_HEADER_ID || '-' || c.LIST_LINE_ID || '-' || c.QUALIFIER_GROUPING_NO UNIQUE_KEY,
23040 NULL START_DATE_ACTIVE_H,
23041 NULL END_DATE_ACTIVE_H,
23042 NULL START_DATE_ACTIVE_SECOND_S,
23043 NULL END_DATE_ACTIVE_SECOND_S,
23044 NULL ACTIVE_DATE_FIRST_TYPE,
23045 NULL ACTIVE_DATE_SECOND_TYPE,
23046 c.HEADER_LIMIT_EXISTS
23047 FROM qp_npreq_lines_tmp b,
23048 QP_PREQ_QUAL_TMP c ,
23049 qp_npreq_line_attrs_tmp a
23050 WHERE a.CONTEXT = c.QUALIFIER_ATTRIBUTE_CONTEXT
23051 AND a.ATTRIBUTE = c.QUALIFIER_ATTRIBUTE
23052 AND a.VALUE_FROM = c.QUALIFIER_ATTRIBUTE_VALUE
23053 AND a.ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
23054 AND a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
23055 AND c.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
23056 AND c.PRICING_PHASE_ID = p_pricing_phase_id
23057 and c.qualifier_grouping_no = -1
23058 and c.null_group_cnt = c.qualifier_group_cnt
23059 and nvl(c.others_group_cnt,0) = 0 -- to indicate that there are no other groups(coming from qp_qualifiers table)
23060 AND a.LINE_INDEX = b.LINE_INDEX
23061 AND ((c.ASK_FOR_FLAG = G_YES and
23062 (c.LIST_HEADER_ID,b.LINE_INDEX) IN (SELECT list_header_id,line_index
23063 FROM qp_npreq_line_attrs_tmp
23064 WHERE attribute_type = 'QUALIFIER'
23065 AND pricing_status_code = G_STATUS_UNCHANGED
23066 AND validated_flag = G_NO
23067 AND list_header_id IS NOT NULL))
23068 OR c.ASK_FOR_FLAG = G_NO)
23069 AND (b.UNIT_PRICE is not null
23070 or
23071 b.usage_pricing_type = G_AUTHORING_TYPE
23072 or
23073 b.LINE_TYPE_CODE = G_ORDER_LEVEL)
23074 AND (b.PRICE_FLAG = G_YES
23075 OR
23076 (b.PRICE_FLAG = G_PHASE
23077 AND
23078 p_freeze_override_flag = G_YES))
23079 AND TRUNC(nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)) BETWEEN --pricing date
23080 TRUNC(nvl(c.START_DATE_ACTIVE,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --qualifier start date
23081 TRUNC(nvl(c.END_DATE_ACTIVE,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --qualifier end date
23082 TRUNC(nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)) BETWEEN --pricing date
23083 TRUNC(nvl(c.START_DATE_ACTIVE_H,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --list header start date
23084 TRUNC(nvl(c.END_DATE_ACTIVE_H,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))) AND --list header end date
23085 TRUNC(nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))
23086 BETWEEN
23087 TRUNC(nvl(c.START_DATE_ACTIVE_FIRST,nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND -- Order Date
23088 TRUNC(nvl(c.END_DATE_ACTIVE_FIRST,nvl(b.START_DATE_ACTIVE_FIRST,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND
23089 TRUNC(nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))
23090 BETWEEN
23091 TRUNC(nvl(c.START_DATE_ACTIVE_SECOND,nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE)))) AND --Ship Date
23092 TRUNC(nvl(c.END_DATE_ACTIVE_SECOND,nvl(b.START_DATE_ACTIVE_SECOND,nvl(b.PRICING_EFFECTIVE_DATE,SYSDATE))))
23093 AND nvl(b.ACTIVE_DATE_FIRST_TYPE,'X') = nvl(c.ACTIVE_DATE_FIRST_TYPE,nvl(b.ACTIVE_DATE_FIRST_TYPE,'X')) -- ORD
23094 AND nvl(b.ACTIVE_DATE_SECOND_TYPE,'X') = nvl(c.ACTIVE_DATE_SECOND_TYPE,nvl(b.ACTIVE_DATE_SECOND_TYPE,'X')); -- SHIP
23095 */
23096
23097 /*
23098 INDX,QP_PREQ_GRP.select_modifiers.l_get_satisfied_quals,QP_PREQ_QUAL_TMP_N2,LINE_INDEX,1
23099 INDX,QP_PREQ_GRP.select_modifiers.l_get_satisfied_quals,QP_PREQ_QUAL_TMP_N2,PRICING_PHASE_ID,2
23100 INDX,QP_PREQ_GRP.select_modifiers.l_get_satisfied_quals,QP_PREQ_QUAL_TMP_N2,PRICING_STATUS_CODE,3
23101 INDX,QP_PREQ_GRP.select_modifiers.l_get_satisfied_quals,QP_PREQ_QUAL_TMP_N2,LIST_HEADER_ID,4
23102 INDX,QP_PREQ_GRP.select_modifiers.l_get_satisfied_quals,QP_PREQ_QUAL_TMP_N2,LIST_LINE_ID,5
23103 */
23104 CURSOR l_get_satisfied_quals(p_list_header_id NUMBER , p_list_line_id NUMBER, p_line_index NUMBER) IS
23105 SELECT /*+ INDEX(c QP_PREQ_QUAL_TMP_N1) l_get_satisfied_quals */
23106 c.LIST_HEADER_ID,
23107 c.LIST_LINE_ID,
23108 c.QUALIFIER_GROUP_CNT,
23109 c.HEADER_QUALS_EXIST_FLAG,
23110 c.SEARCH_IND,
23111 c.VALIDATED_FLAG,
23112 c.APPLIED_FLAG,
23113 c.QUALIFIER_ATTRIBUTE_LEVEL,
23114 c.QUALIFIER_ATTRIBUTE_TYPE,
23115 c.QUALIFIER_ATTRIBUTE_CONTEXT,
23116 c.QUALIFIER_ATTRIBUTE,
23117 c.QUALIFIER_ATTRIBUTE_VALUE,
23118 c.QUALIFIER_GROUPING_NO ,
23119 c.QUALIFIER_PRECEDENCE,
23120 c.QUALIFIER_DATATYPE,
23121 c.SETUP_VALUE_FROM,
23122 c.SETUP_VALUE_TO,
23123 c.QUALIFIER_PRICING_ATTR_FLAG,
23124 c.QUALIFIER_OPERATOR_TYPE ,
23125 c.CREATED_FROM_LIST_TYPE,
23126 decode(c.LIST_LINE_ID,-1,'HQ','LQ') QUALIFIER_TYPE
23127 FROM QP_PREQ_QUAL_TMP c
23128 WHERE c.LIST_HEADER_ID = p_list_header_id
23129 AND c.LIST_LINE_ID IN (p_list_line_id,-1)
23130 AND c.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
23131 AND c.LINE_INDEX = p_line_index
23132 AND c.PRICING_PHASE_ID = p_pricing_phase_id
23133 UNION
23134 -- To get the -1 group qualifiers for non -1 groups only
23135 -- non -1 groups = OTHERS_GROUP_CNT <> 0
23136 SELECT /*+ INDEX(c QP_PREQ_QUAL_TMP_N1) l_get_satisfied_quals */
23137 c.LIST_HEADER_ID,
23138 c.LIST_LINE_ID,
23139 c.QUALIFIER_GROUP_CNT,
23140 c.HEADER_QUALS_EXIST_FLAG,
23141 c.SEARCH_IND,
23142 c.VALIDATED_FLAG,
23143 c.APPLIED_FLAG,
23144 c.QUALIFIER_ATTRIBUTE_LEVEL,
23145 c.QUALIFIER_ATTRIBUTE_TYPE,
23146 c.QUALIFIER_ATTRIBUTE_CONTEXT,
23147 c.QUALIFIER_ATTRIBUTE,
23148 c.QUALIFIER_ATTRIBUTE_VALUE,
23149 c.QUALIFIER_GROUPING_NO ,
23150 c.QUALIFIER_PRECEDENCE,
23151 c.QUALIFIER_DATATYPE,
23152 c.SETUP_VALUE_FROM,
23153 c.SETUP_VALUE_TO,
23154 c.QUALIFIER_PRICING_ATTR_FLAG,
23155 c.QUALIFIER_OPERATOR_TYPE ,
23156 c.CREATED_FROM_LIST_TYPE,
23157 decode(c.LIST_LINE_ID,-1,'HQ','LQ') QUALIFIER_TYPE
23158 FROM QP_PREQ_QUAL_TMP c
23159 WHERE c.LIST_HEADER_ID = p_list_header_id
23160 AND c.LIST_LINE_ID IN (p_list_line_id,-1)
23161 AND c.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
23162 AND c.PRICING_PHASE_ID = p_pricing_phase_id
23163 AND c.NULL_GROUP_CNT <> 0
23164 AND c.OTHERS_GROUP_CNT <> 0 -- meaning there are other groups for which this cursor selects the -1 group qualifiers in perf path
23165 AND c.QUALIFIER_GROUPING_NO = -1;
23166
23167 -- 3520634 start
23168 -- get rows with search ind 2
23169 CURSOR get_list_headers_with_ind2 IS
23170 SELECT/*+ ORDERED */ 'x'
23171 FROM qp_qualifiers b
23172 WHERE b.search_ind = 2
23173 and b.list_header_id in (select distinct a.list_header_id from qp_preq_qual_tmp a
23174 where a.PRICING_STATUS_CODE = G_STATUS_UNCHANGED
23175 and a.search_ind = 1
23176 and a.pricing_phase_id = p_pricing_phase_id)
23177 AND rownum = 1;
23178 -- 3520634 end
23179
23180 J PLS_INTEGER:=1;
23181 N PLS_INTEGER:=1;
23182 M PLS_INTEGER:=1;
23183 K PLS_INTEGER:=1;
23184
23185 l_status VARCHAR2(30);
23186 l_status_code VARCHAR2(30);
23187 l_status_text VARCHAR2(240);
23188 l_list_line_id NUMBER := 0 ;
23189 l_line_index PLS_INTEGER := 0 ;
23190 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.SELECT_MODIFIERS';
23191 l_blind_discount VARCHAR2(30);
23192
23193 l_line_detail_index PLS_INTEGER;
23194 l_prod_qual_count PLS_INTEGER := 0;
23195 l_prod_cur_count PLS_INTEGER := 0;
23196 v_qualifiers_satisfied BOOLEAN;
23197
23198 l_list_header_id NUMBER := -9999;
23199 l_lst_line_id NUMBER := -9999;
23200 l_line_indx NUMBER := -9999;
23201 l_line_detail_indx NUMBER := -9999;
23202 l_qualifier_type VARCHAR2(20);
23203 l_satisfied_qualifier_type VARCHAR2(20);
23204 l_satisfied_list_header_id NUMBER := -9999;
23205 l_satisfied_lst_line_id NUMBER := -9999;
23206 l_satisfied_line_indx NUMBER := -9999;
23207 l_satisfied_line_detail_indx NUMBER := -9999;
23208 l_satisfied_incomp_code VARCHAR2(30);
23209 l_satisfied_modifier_lvl_code VARCHAR2(30);
23210 l_satisfied_primary_uom_flag VARCHAR2(30);
23211 l_exe_count NUMBER := 0;
23212 lq_line_index NUMBER := -9999;
23213 lq_list_line_id NUMBER := -9999;
23214 l_dummy VARCHAR2(1); -- 3520634
23215
23216 l_satis_quals_opt VARCHAR2(1);
23217 --l_perf_pvt_enabled VARCHAR2(1) := nvl(QP_PERF_PVT.enabled,G_NO);
23218
23219 E_ROUTINE_ERRORS EXCEPTION;
23220
23221 nROWS CONSTANT NUMBER := 1000;
23222
23223 BEGIN
23224
23225 x_status_code := FND_API.G_RET_STS_SUCCESS;
23226 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23227 engine_debug('Before Big Select');
23228
23229 END IF;
23230 --hw
23231 l_satis_quals_opt := nvl(fnd_profile.value('QP_SATIS_QUALS_OPT'), 'Y');
23232 --[julin/pricebook]
23233 IF nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES THEN
23234 l_satis_quals_opt := 'N';
23235 END IF;
23236
23237 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23238 engine_debug('QP_SATIS_QUALS_OPT: ' || l_satis_quals_opt);
23239
23240 END IF;
23241 --l_prod_qual_count := 0;
23242 l_prod_cur_count := 0;
23243
23244 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23245 engine_debug('Caching Header Qualifiers for phase : ' || p_pricing_phase_id);
23246 END IF;
23247 qp_debug_util.tstart('CACHE_HEADER_QUALIFIERS','Caching the header qualifiers');
23248 Cache_Header_Qualifiers(p_pricing_phase_id,l_status_code,l_status_text);
23249 qp_debug_util.tstop('CACHE_HEADER_QUALIFIERS');
23250 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
23251 RAISE E_ROUTINE_ERRORS;
23252 END IF;
23253
23254 --Added call for 3520634
23255 qp_debug_util.tstart('DELETE_HDRS_WITH_NO_PRODATTR','Deleting the headers with no product attribute');
23256 Delete_Hdrs_With_No_ProdAttr(p_pricing_phase_id,l_status_code,l_status_text);
23257 qp_debug_util.tstop('DELETE_HDRS_WITH_NO_PRODATTR');
23258 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
23259 RAISE E_ROUTINE_ERRORS;
23260 END IF;
23261
23262
23263 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23264 engine_debug('Caching Line Qualifiers for satisfied headers and pure line quals for phase : ' || p_pricing_phase_id);
23265 END IF;
23266 qp_debug_util.tstart('CACHE_LINE_QUALIFIERS','Caching the Line qualifiers');
23267 Cache_Line_Qualifiers(p_pricing_phase_id,l_status_code,l_status_text);
23268 qp_debug_util.tstop('CACHE_LINE_QUALIFIERS');
23269 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
23270 RAISE E_ROUTINE_ERRORS;
23271 END IF;
23272
23273 IF (G_QUALIFIER_TEMP <> 'E' OR G_LINE_QUALIFIER_TEMP <> 'E') THEN
23274 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23275 engine_debug('Caching Qualifiers for phase : ' || p_pricing_phase_id || ' Successful');
23276 END IF;
23277 -- For each primary search list header , list line and qualifier grouping no
23278 /*
23279 INDX,QP_PREQ_GRP.select_modifiers.select_modifiers_sel1,QP_PREQ_QUAL_TMP_N5,PRICING_STATUS_CODE,1
23280 */
23281 /* FOR c1 in (select list_header_id , list_line_id , qualifier_grouping_no
23282 from qp_preq_qual_tmp
23283 where pricing_status_code = G_STATUS_UNCHANGED
23284 and pricing_phase_id = p_pricing_phase_id
23285 order by list_header_id,list_line_id,qualifier_grouping_no) LOOP
23286 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23287 engine_debug('Executing Mini Caching Qualifiers for phase : ' || p_pricing_phase_id ||
23288 'List Header id : ' || c1.list_header_id || ' List Line Id : ' || c1.list_line_id ||
23289 'Grouping No: ' || c1.qualifier_grouping_no);
23290 END IF;
23291 Mini_Cache_Qualifiers(c1.list_header_id , c1.list_line_id , c1.qualifier_grouping_no,
23292 p_pricing_phase_id,l_status_code,l_status_text);
23293 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
23294 RAISE E_ROUTINE_ERRORS;
23295 END IF;
23296 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23297 engine_debug('Executing Mini Caching Qualifiers for phase : ' || p_pricing_phase_id || ' Successful');
23298 END IF;
23299 END LOOP; */
23300
23301 -- Added for 3520634. Mini_Cache_Qualifiers is meant to search qualifiers with search_ind=2.
23302 --Call to Mini_Cache_Qualifiers can be saved if there is no header level qualifier with
23303 -- search_ind=2 for list_headers_ids selected by engine so far.
23304
23305 OPEN get_list_headers_with_ind2;
23306 FETCH get_list_headers_with_ind2 INTO l_dummy;
23307 CLOSE get_list_headers_with_ind2;
23308
23309 IF (l_dummy = 'x') THEN --Added if clause for 3520634
23310 qp_debug_util.tstart('MINI_CACHE_QUALIFIERS','Caching the qualifiers with search_ind=2');
23311 Mini_Cache_Qualifiers(-999 , -999 , -999, p_pricing_phase_id,l_status_code,l_status_text);
23312 qp_debug_util.tstop('MINI_CACHE_QUALIFIERS');
23313 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
23314 RAISE E_ROUTINE_ERRORS;
23315 END IF;
23316 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23317 engine_debug('Executing Mini Caching Qualifiers for phase : ' || p_pricing_phase_id || ' Successful');
23318
23319 END IF;
23320 END IF;
23321 -- Qualifier Grouping
23322 qp_debug_util.tstart('MINI_CACHE_QUALIFIERS', 'Performing the Qualifier Grouping');
23323 Perform_Qualifier_Grouping(G_NO,p_pricing_phase_id,l_status_code,l_status_text);
23324 qp_debug_util.tstop('MINI_CACHE_QUALIFIERS');
23325
23326 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
23327 RAISE E_ROUTINE_ERRORS;
23328 END IF;
23329
23330 --hw
23331 --if QP_PERF_PVT.enabled = 'Y' then
23332 --if l_perf_pvt_enabled = 'Y' then
23333 /*
23334
23335 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23336 engine_debug('hw: l_get_line_index_for_quals_n path');
23337
23338 END IF;
23339 -- update null group count
23340 --update qp_preq_qual_tmp qpqt1
23341 --set qpqt1.null_group_cnt = (select count(*)
23342 from qp_preq_qual_tmp qpqt2
23343 where qpqt2.list_header_id = qpqt1.list_header_id
23344 and qpqt2.list_line_id = qpqt1.list_line_id
23345 and qpqt2.qualifier_grouping_no = -1
23346 and qpqt2.pricing_status_code <> G_DELETED_GRP
23347 and qpqt2.pricing_phase_id = p_pricing_phase_id
23348 and qpqt2.pricing_status_code = G_STATUS_UNCHANGED)
23349 where qpqt1.pricing_phase_id = p_pricing_phase_id
23350 and qpqt1.pricing_status_code = G_STATUS_UNCHANGED;
23351
23352 --and qpqt1.qualifier_grouping_no = -1; -- should update all groups and not just -1 groups
23353 -- as it is used as null_group_count + other_group_cnt = qualifier_group_cnt
23354
23355 -- update other group count
23356 --update qp_preq_qual_tmp qpqt1
23357 --set qpqt1.other_group_cnt = (select count(*)
23358 from qp_preq_qual_tmp qpqt2
23359 where qpqt2.list_header_id = qpqt1.list_header_id
23360 and qpqt2.list_line_id = qpqt1.list_line_id
23361 and qpqt2.qualifier_grouping_no <> -1
23362 and qpqt2.pricing_status_code <> G_DELETED_GRP
23363 and qpqt2.pricing_phase_id = p_pricing_phase_id
23364 and qpqt1.qualifier_grouping_no = qpqt2.qualifier_grouping_no
23365 and qpqt2.pricing_status_code = G_STATUS_UNCHANGED)
23366 where qpqt1.pricing_phase_id = p_pricing_phase_id
23367 and qpqt1.pricing_status_code = G_STATUS_UNCHANGED
23368 and qpqt1.qualifier_grouping_no <> -1;
23369
23370 IF (G_DEBUG_ENGINE = FND_API.G_TRUE) THEN
23371 for i in (select list_header_id,list_line_id,qualifier_grouping_no,null_group_cnt,other_group_cnt,search_ind,
23372 qualifier_group_cnt,others_group_cnt,qualifier_attribute_context,qualifier_attribute,qualifier_attribute_value
23373 from qp_preq_qual_tmp
23374 where pricing_phase_id = p_pricing_phase_id
23375 and pricing_status_code = 'X'
23376 order by 1,2,3)
23377 loop
23378 QP_PREQ_GRP.engine_debug('List Header Id: ' || i.list_header_id);
23379 QP_PREQ_GRP.engine_debug('List Line Id: ' || i.list_line_id);
23380 QP_PREQ_GRP.engine_debug('Grouping No: ' || i.qualifier_grouping_no);
23381 QP_PREQ_GRP.engine_debug('Null Group Cnt: ' || i.null_group_cnt);
23382 QP_PREQ_GRP.engine_debug('Other Group Cnt: ' || i.other_group_cnt);
23383 QP_PREQ_GRP.engine_debug('Satisfied Group Cnt: ' || i.qualifier_group_cnt);
23384 QP_PREQ_GRP.engine_debug('Search Ind: ' || i.search_ind);
23385 QP_PREQ_GRP.engine_debug('Others group cnt: ' || i.others_group_cnt);
23386 QP_PREQ_GRP.engine_debug('Qualifier Context: ' || i.qualifier_attribute_context);
23387 QP_PREQ_GRP.engine_debug('Qualifier Attribute: ' || i.qualifier_attribute);
23388 QP_PREQ_GRP.engine_debug('Qualifier Value: ' || i.qualifier_attribute_value);
23389 end loop;
23390 END IF;
23391
23392 OPEN l_get_line_index_for_quals_n;
23393
23394 LOOP
23395 G_LIST_HEADER_ID_TBL_Q.delete;
23396 G_LIST_LINE_ID_TBL_Q.delete;
23397 G_CONTEXT_TBL_Q.delete;
23398 G_ATTRIBUTE_TBL_Q.delete;
23399 G_VALUE_FROM_TBL_Q.delete;
23400 G_LIST_TYPE_CODE_TBL_Q.delete;
23401 G_ASK_FOR_FLAG_TBL_Q.delete;
23402 G_GROUPING_NO_TBL_Q.delete;
23403 G_QUALIFIER_GROUP_CNT_TBL_Q.delete;
23404 G_OTHERS_GROUP_CNT_TBL_Q.delete;
23405 G_HEADER_QUALS_EXIST_FLG_TBL_Q.delete;
23406 G_SEARCH_IND_TBL_Q.delete;
23407 G_VALIDATED_FLAG_TBL_Q.delete;
23408 G_APPLIED_FLAG_TBL_Q.delete;
23409 G_ATTRIBUTE_LEVEL_TBL_Q.delete;
23410 G_ATTRIBUTE_TYPE_TBL_Q.delete;
23411 G_QUALIFIER_PRECEDENCE_TBL_Q.delete;
23412 G_DATATYPE_TBL_Q.delete;
23413 G_QUALIFIER_TYPE_TBL_Q.delete;
23414 G_SETUP_VALUE_FROM_TBL_Q.delete;
23415 G_SETUP_VALUE_TO_TBL_Q.delete;
23416 G_PRICING_ATTR_FLAG_TBL_Q.delete;
23417 G_OPERATOR_TYPE_TBL_Q.delete;
23418 G_LINE_INDEX_TBL_Q.delete;
23419 G_PRICING_EFFECTIVE_DATE_TBL_Q.delete;
23420 G_START_DATE_ACTIVE_FIR_TBL_Q.delete;
23421 G_END_DATE_ACTIVE_FIR_TBL_Q.delete;
23422 G_LINE_TYPE_CODE_TBL_Q.delete;
23423 G_PRICING_STATUS_CODE_TBL_Q.delete;
23424 G_PRICING_PHASE_ID_TBL_Q.delete;
23425 G_UNIQUE_KEY_TBL_Q.delete;
23426 G_START_DATE_ACTIVE_TBL_H_Q.delete;
23427 G_END_DATE_ACTIVE_TBL_H_Q.delete;
23428 G_START_DATE_ACTIVE_SEC_TBL_Q.delete;
23429 G_END_DATE_ACTIVE_SEC_TBL_Q.delete;
23430 G_ACTIVE_DATE_FIR_TYPE_TBL_Q.delete;
23431 G_ACTIVE_DATE_SEC_TYPE_TBL_Q.delete;
23432 G_HEADER_LIMIT_EXISTS_TBL_Q.delete;
23433
23434 FETCH l_get_line_index_for_quals_n
23435 BULK COLLECT INTO
23436 G_LIST_HEADER_ID_TBL_Q
23437 , G_LIST_LINE_ID_TBL_Q
23438 , G_CONTEXT_TBL_Q
23439 , G_ATTRIBUTE_TBL_Q
23440 , G_VALUE_FROM_TBL_Q
23441 , G_LIST_TYPE_CODE_TBL_Q
23442 , G_ASK_FOR_FLAG_TBL_Q
23443 , G_GROUPING_NO_TBL_Q
23444 , G_QUALIFIER_GROUP_CNT_TBL_Q
23445 , G_OTHERS_GROUP_CNT_TBL_Q
23446 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
23447 , G_SEARCH_IND_TBL_Q
23448 , G_VALIDATED_FLAG_TBL_Q
23449 , G_APPLIED_FLAG_TBL_Q
23450 , G_ATTRIBUTE_LEVEL_TBL_Q
23451 , G_ATTRIBUTE_TYPE_TBL_Q
23452 , G_QUALIFIER_PRECEDENCE_TBL_Q
23453 , G_DATATYPE_TBL_Q
23454 , G_QUALIFIER_TYPE_TBL_Q
23455 , G_SETUP_VALUE_FROM_TBL_Q
23456 , G_SETUP_VALUE_TO_TBL_Q
23457 , G_PRICING_ATTR_FLAG_TBL_Q
23458 , G_OPERATOR_TYPE_TBL_Q
23459 , G_START_DATE_ACTIVE_TBL_Q
23460 , G_END_DATE_ACTIVE_TBL_Q
23461 , G_LINE_INDEX_TBL_Q
23462 , G_PRICING_EFFECTIVE_DATE_TBL_Q
23463 , G_START_DATE_ACTIVE_FIR_TBL_Q
23464 , G_END_DATE_ACTIVE_FIR_TBL_Q
23465 , G_LINE_TYPE_CODE_TBL_Q
23466 , G_PRICING_STATUS_CODE_TBL_Q
23467 , G_PRICING_PHASE_ID_TBL_Q
23468 , G_UNIQUE_KEY_TBL_Q
23469 , G_START_DATE_ACTIVE_TBL_H_Q
23470 , G_END_DATE_ACTIVE_TBL_H_Q
23471 , G_START_DATE_ACTIVE_SEC_TBL_Q
23472 , G_END_DATE_ACTIVE_SEC_TBL_Q
23473 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
23474 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
23475 , G_HEADER_LIMIT_EXISTS_TBL_Q LIMIT nROWS;
23476 EXIT WHEN G_LIST_HEADER_ID_TBL_Q.COUNT = 0;
23477
23478 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23479 engine_debug('Inserting no rows into qp_preq_qual_tmp for each line index');
23480 END IF;
23481 IF (G_LIST_HEADER_ID_TBL_Q.COUNT > 0) THEN
23482
23483 --G_QUALIFIER_TEMP := G_QUALIFIER_TEMP_UPDATED;
23484 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23485 engine_debug('Inserting rows into qp_preq_qual_tmp for each line index: ' || G_LIST_HEADER_ID_TBL_Q.COUNT);
23486
23487 END IF;
23488 INSERT_QUAL(
23489 G_LIST_HEADER_ID_TBL_Q
23490 , G_LIST_LINE_ID_TBL_Q
23491 , G_VALIDATED_FLAG_TBL_Q
23492 , G_APPLIED_FLAG_TBL_Q
23493 , G_ATTRIBUTE_LEVEL_TBL_Q
23494 , G_ATTRIBUTE_TYPE_TBL_Q
23495 , G_CONTEXT_TBL_Q
23496 , G_ATTRIBUTE_TBL_Q
23497 , G_VALUE_FROM_TBL_Q
23498 , G_GROUPING_NO_TBL_Q
23499 , G_QUALIFIER_PRECEDENCE_TBL_Q
23500 , G_DATATYPE_TBL_Q
23501 , G_SETUP_VALUE_FROM_TBL_Q
23502 , G_SETUP_VALUE_TO_TBL_Q
23503 , G_PRICING_ATTR_FLAG_TBL_Q
23504 , G_OPERATOR_TYPE_TBL_Q
23505 , G_LIST_TYPE_CODE_TBL_Q
23506 , G_ASK_FOR_FLAG_TBL_Q
23507 , G_QUALIFIER_TYPE_TBL_Q
23508 , G_QUALIFIER_GROUP_CNT_TBL_Q
23509 , G_OTHERS_GROUP_CNT_TBL_Q
23510 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
23511 , G_SEARCH_IND_TBL_Q
23512 , G_PRICING_STATUS_CODE_TBL_Q
23513 , G_START_DATE_ACTIVE_TBL_Q
23514 , G_END_DATE_ACTIVE_TBL_Q
23515 , G_LINE_INDEX_TBL_Q
23516 , G_PRICING_EFFECTIVE_DATE_TBL_Q
23517 , G_START_DATE_ACTIVE_FIR_TBL_Q
23518 , G_END_DATE_ACTIVE_FIR_TBL_Q
23519 , G_LINE_TYPE_CODE_TBL_Q
23520 , G_PRICING_PHASE_ID_TBL_Q
23521 , G_UNIQUE_KEY_TBL_Q
23522 , G_START_DATE_ACTIVE_TBL_H_Q
23523 , G_END_DATE_ACTIVE_TBL_H_Q
23524 , G_START_DATE_ACTIVE_SEC_TBL_Q
23525 , G_END_DATE_ACTIVE_SEC_TBL_Q
23526 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
23527 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
23528 , G_HEADER_LIMIT_EXISTS_TBL_Q
23529 , l_status_code
23530 , l_status_text);
23531 END IF;
23532 END LOOP;
23533 CLOSE l_get_line_index_for_quals_n;
23534
23535 */
23536
23537 /* else */
23538
23539 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23540 engine_debug('hw: l_get_line_index_for_quals path');
23541 END IF;
23542
23543 OPEN l_get_line_index_for_quals;
23544
23545 LOOP
23546 G_LIST_HEADER_ID_TBL_Q.delete;
23547 G_LIST_LINE_ID_TBL_Q.delete;
23548 G_CONTEXT_TBL_Q.delete;
23549 G_ATTRIBUTE_TBL_Q.delete;
23550 G_VALUE_FROM_TBL_Q.delete;
23551 G_LIST_TYPE_CODE_TBL_Q.delete;
23552 G_ASK_FOR_FLAG_TBL_Q.delete;
23553 G_GROUPING_NO_TBL_Q.delete;
23554 G_QUALIFIER_GROUP_CNT_TBL_Q.delete;
23555 G_OTHERS_GROUP_CNT_TBL_Q.delete;
23556 G_HEADER_QUALS_EXIST_FLG_TBL_Q.delete;
23557 G_SEARCH_IND_TBL_Q.delete;
23558 G_VALIDATED_FLAG_TBL_Q.delete;
23559 G_APPLIED_FLAG_TBL_Q.delete;
23560 G_ATTRIBUTE_LEVEL_TBL_Q.delete;
23561 G_ATTRIBUTE_TYPE_TBL_Q.delete;
23562 G_QUALIFIER_PRECEDENCE_TBL_Q.delete;
23563 G_DATATYPE_TBL_Q.delete;
23564 G_QUALIFIER_TYPE_TBL_Q.delete;
23565 G_SETUP_VALUE_FROM_TBL_Q.delete;
23566 G_SETUP_VALUE_TO_TBL_Q.delete;
23567 G_PRICING_ATTR_FLAG_TBL_Q.delete;
23568 G_OPERATOR_TYPE_TBL_Q.delete;
23569 G_LINE_INDEX_TBL_Q.delete;
23570 G_PRICING_EFFECTIVE_DATE_TBL_Q.delete;
23571 G_START_DATE_ACTIVE_FIR_TBL_Q.delete;
23572 G_END_DATE_ACTIVE_FIR_TBL_Q.delete;
23573 G_LINE_TYPE_CODE_TBL_Q.delete;
23574 G_PRICING_STATUS_CODE_TBL_Q.delete;
23575 G_PRICING_PHASE_ID_TBL_Q.delete;
23576 G_UNIQUE_KEY_TBL_Q.delete;
23577 G_START_DATE_ACTIVE_TBL_H_Q.delete;
23578 G_END_DATE_ACTIVE_TBL_H_Q.delete;
23579 G_START_DATE_ACTIVE_SEC_TBL_Q.delete;
23580 G_END_DATE_ACTIVE_SEC_TBL_Q.delete;
23581 G_ACTIVE_DATE_FIR_TYPE_TBL_Q.delete;
23582 G_ACTIVE_DATE_SEC_TYPE_TBL_Q.delete;
23583 G_HEADER_LIMIT_EXISTS_TBL_Q.delete;
23584 G_DERIVED_QUALIFIER_FLAG_TBL_Q.delete; -- Added for TCA
23585
23586 FETCH l_get_line_index_for_quals
23587 BULK COLLECT INTO
23588 G_LIST_HEADER_ID_TBL_Q
23589 , G_LIST_LINE_ID_TBL_Q
23590 , G_CONTEXT_TBL_Q
23591 , G_ATTRIBUTE_TBL_Q
23592 , G_VALUE_FROM_TBL_Q
23593 , G_LIST_TYPE_CODE_TBL_Q
23594 , G_ASK_FOR_FLAG_TBL_Q
23595 , G_GROUPING_NO_TBL_Q
23596 , G_QUALIFIER_GROUP_CNT_TBL_Q
23597 , G_OTHERS_GROUP_CNT_TBL_Q
23598 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
23599 , G_SEARCH_IND_TBL_Q
23600 , G_VALIDATED_FLAG_TBL_Q
23601 , G_APPLIED_FLAG_TBL_Q
23602 , G_ATTRIBUTE_LEVEL_TBL_Q
23603 , G_ATTRIBUTE_TYPE_TBL_Q
23604 , G_QUALIFIER_PRECEDENCE_TBL_Q
23605 , G_DATATYPE_TBL_Q
23606 , G_QUALIFIER_TYPE_TBL_Q
23607 , G_SETUP_VALUE_FROM_TBL_Q
23608 , G_SETUP_VALUE_TO_TBL_Q
23609 , G_PRICING_ATTR_FLAG_TBL_Q
23610 , G_OPERATOR_TYPE_TBL_Q
23611 , G_START_DATE_ACTIVE_TBL_Q
23612 , G_END_DATE_ACTIVE_TBL_Q
23613 , G_LINE_INDEX_TBL_Q
23614 , G_PRICING_EFFECTIVE_DATE_TBL_Q
23615 , G_START_DATE_ACTIVE_FIR_TBL_Q
23616 , G_END_DATE_ACTIVE_FIR_TBL_Q
23617 , G_LINE_TYPE_CODE_TBL_Q
23618 , G_PRICING_STATUS_CODE_TBL_Q
23619 , G_PRICING_PHASE_ID_TBL_Q
23620 , G_UNIQUE_KEY_TBL_Q
23621 , G_START_DATE_ACTIVE_TBL_H_Q
23622 , G_END_DATE_ACTIVE_TBL_H_Q
23623 , G_START_DATE_ACTIVE_SEC_TBL_Q
23624 , G_END_DATE_ACTIVE_SEC_TBL_Q
23625 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
23626 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
23627 , G_HEADER_LIMIT_EXISTS_TBL_Q
23628 , G_DERIVED_QUALIFIER_FLAG_TBL_Q LIMIT nROWS; -- Added for TCA
23629 EXIT WHEN G_LIST_HEADER_ID_TBL_Q.COUNT = 0;
23630
23631 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23632 engine_debug('Inserting no rows into qp_preq_qual_tmp for each line index');
23633 END IF;
23634 IF (G_LIST_HEADER_ID_TBL_Q.COUNT > 0) THEN
23635
23636 --G_QUALIFIER_TEMP := G_QUALIFIER_TEMP_UPDATED;
23637 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23638 engine_debug('Inserting rows into qp_preq_qual_tmp for each line index: ' || G_LIST_HEADER_ID_TBL_Q.COUNT);
23639 END IF;
23640 INSERT_QUAL(
23641 G_LIST_HEADER_ID_TBL_Q
23642 , G_LIST_LINE_ID_TBL_Q
23643 , G_VALIDATED_FLAG_TBL_Q
23644 , G_APPLIED_FLAG_TBL_Q
23645 , G_ATTRIBUTE_LEVEL_TBL_Q
23646 , G_ATTRIBUTE_TYPE_TBL_Q
23647 , G_CONTEXT_TBL_Q
23648 , G_ATTRIBUTE_TBL_Q
23649 , G_VALUE_FROM_TBL_Q
23650 , G_GROUPING_NO_TBL_Q
23651 , G_QUALIFIER_PRECEDENCE_TBL_Q
23652 , G_DATATYPE_TBL_Q
23653 , G_SETUP_VALUE_FROM_TBL_Q
23654 , G_SETUP_VALUE_TO_TBL_Q
23655 , G_PRICING_ATTR_FLAG_TBL_Q
23656 , G_OPERATOR_TYPE_TBL_Q
23657 , G_LIST_TYPE_CODE_TBL_Q
23658 , G_ASK_FOR_FLAG_TBL_Q
23659 , G_QUALIFIER_TYPE_TBL_Q
23660 , G_QUALIFIER_GROUP_CNT_TBL_Q
23661 , G_OTHERS_GROUP_CNT_TBL_Q
23662 , G_HEADER_QUALS_EXIST_FLG_TBL_Q
23663 , G_SEARCH_IND_TBL_Q
23664 , G_PRICING_STATUS_CODE_TBL_Q
23665 , G_START_DATE_ACTIVE_TBL_Q
23666 , G_END_DATE_ACTIVE_TBL_Q
23667 , G_LINE_INDEX_TBL_Q
23668 , G_PRICING_EFFECTIVE_DATE_TBL_Q
23669 , G_START_DATE_ACTIVE_FIR_TBL_Q
23670 , G_END_DATE_ACTIVE_FIR_TBL_Q
23671 , G_LINE_TYPE_CODE_TBL_Q
23672 , G_PRICING_PHASE_ID_TBL_Q
23673 , G_UNIQUE_KEY_TBL_Q
23674 , G_START_DATE_ACTIVE_TBL_H_Q
23675 , G_END_DATE_ACTIVE_TBL_H_Q
23676 , G_START_DATE_ACTIVE_SEC_TBL_Q
23677 , G_END_DATE_ACTIVE_SEC_TBL_Q
23678 , G_ACTIVE_DATE_FIR_TYPE_TBL_Q
23679 , G_ACTIVE_DATE_SEC_TYPE_TBL_Q
23680 , G_HEADER_LIMIT_EXISTS_TBL_Q
23681 , G_DERIVED_QUALIFIER_FLAG_TBL_Q
23682 , l_status_code
23683 , l_status_text);
23684 END IF;
23685 END LOOP;
23686 CLOSE l_get_line_index_for_quals;
23687
23688 -- Qualifier Grouping For Each Line Index
23689 Perform_Qualifier_Grouping(G_YES,p_pricing_phase_id,l_status_code,l_status_text);
23690
23691 /* end if; */
23692
23693 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
23694 RAISE E_ROUTINE_ERRORS;
23695 END IF;
23696
23697 END IF; --IF (G_QUALIFIER_TEMP <> 'E' OR G_LINE_QUALIFIER_TEMP <> 'E') THEN
23698
23699 OPEN l_prod_qual_cur (p_pricing_phase_id, -99,-99,-99);
23700 qp_debug_util.tstart('L_PROD_QUAL_CUR','Cursor Loop l_prod_qual_cur');
23701
23702 LOOP
23703 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23704 engine_debug('In l_prod_qual_cur loop fetch');
23705 END IF;
23706 G_LIST_HEADER_ID_TBL_P.delete;
23707 G_LIST_LINE_ID_TBL_P.delete;
23708 G_LIST_LINE_TYPE_TBL_P.delete;
23709 G_LINE_INDEX_TBL_P.delete;
23710 G_VALIDATED_FLAG_TBL_P.delete;
23711 G_APPLIED_FLAG_TBL_P.delete;
23712 G_ATTRIBUTE_LEVEL_TBL_P.delete;
23713 G_ATTRIBUTE_TYPE_TBL_P.delete;
23714 G_CONTEXT_TBL_P.delete;
23715 G_ATTRIBUTE_TBL_P.delete;
23716 G_VALUE_FROM_TBL_P.delete;
23717 G_SETUP_VALUE_FROM_TBL_P.delete;
23718 G_PRICING_ATTR_FLAG_TBL_P.delete;
23719 G_PRODUCT_UOM_CODE_TBL_P.delete;
23720 G_EXCLUDER_FLAG_TBL_P.delete;
23721 G_AUTOMATIC_FLAG_TBL_P.delete;
23722 G_MODIFIER_LEVEL_CODE_TBL_P.delete;
23723 G_NET_AMOUNT_FLAG_TBL_P.delete; --IT net_amount 2720717
23724 G_PRIMARY_UOM_FLAG_TBL_P.delete;
23725 G_OPER_CALCULATION_CODE_TBL_P.delete;
23726 G_OPERAND_VALUE_TBL_P.delete;
23727 G_PRICING_GROUP_SEQUENCE_TBL_P.delete;
23728 G_PRICING_PHASE_ID_TBL_P.delete;
23729 G_PRICE_BREAK_TYPE_CODE_TBL_P.delete;
23730 G_INCOMP_GRP_CODE_TBL_P.delete;
23731 G_PRICE_FORMULA_ID_TBL_P.delete;
23732 G_PRODUCT_PRECEDENCE_TBL_P.delete;
23733 G_OVERRIDE_FLAG_TBL_P.delete;
23734 G_BENEFIT_QTY_TBL_P.delete;
23735 G_BENEFIT_UOM_CODE_TBL_P.delete;
23736 G_LIST_LINE_NO_TBL_P.delete;
23737 G_ACCRUAL_FLAG_TBL_P.delete;
23738 G_ACCR_CONVERSION_RATE_TBL_P.delete;
23739 G_ESTIM_ACCRUAL_RATE_TBL_P.delete;
23740 G_ASK_FOR_FLAG_TBL_P.delete;
23741 G_LIST_TYPE_CODE_TBL_P.delete;
23742 G_HEADER_LIMIT_EXISTS_TBL_P.delete;
23743 G_LINE_LIMIT_EXISTS_TBL_P.delete;
23744 G_QUALIFIER_TYPE_TBL_P.delete;
23745 G_CHARGE_TYPE_CODE_TBL_P.delete;
23746 G_CHARGE_SUBTYPE_CODE_TBL_P.delete;
23747 G_ACCUM_CONTEXT_TBL_P.delete; -- for accum range break
23748 G_ACCUM_ATTRIBUTE_TBL_P.delete; -- for accum range break
23749 G_ACCUM_FLAG_TBL_P.delete; -- for accum range break
23750
23751 FETCH l_prod_qual_cur BULK COLLECT INTO
23752 G_LIST_HEADER_ID_TBL_P,
23753 G_LIST_LINE_ID_TBL_P,
23754 G_LIST_LINE_TYPE_TBL_P,
23755 G_LINE_INDEX_TBL_P,
23756 G_VALIDATED_FLAG_TBL_P,
23757 G_APPLIED_FLAG_TBL_P,
23758 G_ATTRIBUTE_LEVEL_TBL_P,
23759 G_ATTRIBUTE_TYPE_TBL_P,
23760 G_CONTEXT_TBL_P,
23761 G_ATTRIBUTE_TBL_P,
23762 G_VALUE_FROM_TBL_P,
23763 G_SETUP_VALUE_FROM_TBL_P,
23764 G_PRICING_ATTR_FLAG_TBL_P,
23765 G_PRODUCT_UOM_CODE_TBL_P,
23766 G_EXCLUDER_FLAG_TBL_P,
23767 G_AUTOMATIC_FLAG_TBL_P,
23768 G_MODIFIER_LEVEL_CODE_TBL_P,
23769 G_PRIMARY_UOM_FLAG_TBL_P,
23770 G_OPER_CALCULATION_CODE_TBL_P,
23771 G_OPERAND_VALUE_TBL_P,
23772 G_NET_AMOUNT_FLAG_TBL_P, --IT net_amount 2720717
23773 G_PRICING_GROUP_SEQUENCE_TBL_P,
23774 G_PRICING_PHASE_ID_TBL_P,
23775 G_PRICE_BREAK_TYPE_CODE_TBL_P,
23776 G_INCOMP_GRP_CODE_TBL_P,
23777 G_PRICE_FORMULA_ID_TBL_P,
23778 G_PRODUCT_PRECEDENCE_TBL_P,
23779 G_OVERRIDE_FLAG_TBL_P,
23780 G_BENEFIT_QTY_TBL_P,
23781 G_BENEFIT_UOM_CODE_TBL_P,
23782 G_LIST_LINE_NO_TBL_P,
23783 G_ACCRUAL_FLAG_TBL_P,
23784 G_ACCR_CONVERSION_RATE_TBL_P,
23785 G_ESTIM_ACCRUAL_RATE_TBL_P,
23786 G_ASK_FOR_FLAG_TBL_P,
23787 G_LIST_TYPE_CODE_TBL_P,
23788 G_HEADER_LIMIT_EXISTS_TBL_P,
23789 G_LINE_LIMIT_EXISTS_TBL_P,
23790 G_QUALIFIER_TYPE_TBL_P ,
23791 G_CHARGE_TYPE_CODE_TBL_P ,
23792 G_CHARGE_SUBTYPE_CODE_TBL_P,
23793 G_ACCUM_CONTEXT_TBL_P, -- accum range break
23794 G_ACCUM_ATTRIBUTE_TBL_P, -- accum range break
23795 G_ACCUM_FLAG_TBL_P LIMIT nROWS;
23796
23797 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
23798
23799
23800 IF (G_LINE_INDEX_TBL_P.COUNT > 0) THEN
23801 FOR I in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST LOOP
23802
23803 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23804 engine_debug(' Prod Qual List line id selected from big select: '||G_LIST_LINE_ID_TBL_P(I));
23805
23806 END IF;
23807 IF (lq_line_index <> G_LINE_INDEX_TBL_P(I) OR lq_list_line_id <> G_LIST_LINE_ID_TBL_P(I)) THEN
23808 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
23809
23810 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(I);
23811 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
23812 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(I);
23813 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(I);
23814 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
23815 G_PRICING_STATUS_TEXT_LD_TBL(M) :='PRODUCT_QUALIFIER_ONLY';
23816 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
23817 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
23818 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
23819 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(I);
23820 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(I);
23821 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(I);
23822 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_QUALIFIER_ONLY';
23823 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(I);
23824 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(I);
23825 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(I);
23826 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(I);
23827 G_NET_AMOUNT_FLAG_TBL(M) :=G_NET_AMOUNT_FLAG_TBL_P(I); --IT net_amount 2720717
23828 G_ASK_FOR_FLAG_TBL(M) :=G_ASK_FOR_FLAG_TBL_P(I);
23829 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(I);
23830 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(I);
23831 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(I);
23832 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
23833 G_OVERRIDE_FLAG_TBL(M) :=G_OVERRIDE_FLAG_TBL_P(I);
23834 G_BENEFIT_QTY_TBL(M) :=G_BENEFIT_QTY_TBL_P(I);
23835 G_BENEFIT_UOM_CODE_TBL(M) :=G_BENEFIT_UOM_CODE_TBL_P(I);
23836 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
23837 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
23838 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(I);
23839 G_ACCRUAL_FLAG_TBL(M) :=G_ACCRUAL_FLAG_TBL_P(I);
23840 G_ACCRUAL_CONVERSION_RATE_TBL(M) :=G_ACCR_CONVERSION_RATE_TBL_P(I);
23841 G_ESTIM_ACCRUAL_RATE_TBL(M) :=G_ESTIM_ACCRUAL_RATE_TBL_P(I);
23842 G_HEADER_LIMIT_EXISTS_TBL(M) :=G_HEADER_LIMIT_EXISTS_TBL_P(I);
23843 G_LINE_LIMIT_EXISTS_TBL(M) :=G_LINE_LIMIT_EXISTS_TBL_P(I);
23844 G_CHARGE_TYPE_CODE_TBL(M) :=nvl(G_CHARGE_TYPE_CODE_TBL_P(I),'');
23845 G_CHARGE_SUBTYPE_CODE_TBL(M) :=nvl(G_CHARGE_SUBTYPE_CODE_TBL_P(I),'');
23846 G_ACCUM_CONTEXT_TBL(M) :=G_ACCUM_CONTEXT_TBL_P(I); -- accum range break
23847 G_ACCUM_ATTRIBUTE_TBL(M) :=G_ACCUM_ATTRIBUTE_TBL_P(I); -- accum range break
23848 G_ACCUM_FLAG_TBL(M) :=G_ACCUM_FLAG_TBL_P(I); -- accum range break
23849 M:=M+1;
23850 l_satisfied_list_header_id := G_LIST_HEADER_ID_TBL_P(I);
23851 l_satisfied_lst_line_id := G_LIST_LINE_ID_TBL_P(I);
23852 l_satisfied_line_indx := G_LINE_INDEX_TBL_P(I);
23853 l_satisfied_line_detail_indx := L_LINE_DETAIL_INDEX;
23854 l_satisfied_incomp_code := G_INCOMP_GRP_CODE_TBL_P(I);
23855 l_satisfied_modifier_lvl_code := G_MODIFIER_LEVEL_CODE_TBL_P(I);
23856 l_satisfied_primary_uom_flag := G_PRIMARY_UOM_FLAG_TBL_P(I);
23857 lq_line_index := G_LINE_INDEX_TBL_P(I);
23858 lq_list_line_id := G_LIST_LINE_ID_TBL_P(I);
23859 END IF;
23860
23861 --hw
23862 --if l_satis_quals_opt <> 'N' then
23863 --4029027 commented out by 4455344/4489224
23864 --bug 4029027
23865 --IF (l_satis_quals_opt <> 'N' or (l_satis_quals_opt = 'N' and g_context_tbl_p(i) <> G_QUALIFIER_TYPE)) THEN
23866
23867 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23868 engine_debug(' #2 ' );
23869 END IF;
23870 --PRODUCT ATTRIBUTES
23871 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
23872 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_P(I);
23873 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_P(I);
23874 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_P(I);
23875 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_P(I);
23876 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_P(I);
23877 G_VALUE_TO_tbl(K) :=NULL;
23878 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
23879 G_VALIDATED_FLAG_tbl(K) :=G_VALIDATED_FLAG_TBL_P(I);
23880 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
23881 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
23882 G_PRICING_ATTR_FLAG_tbl(K) :=G_PRICING_ATTR_FLAG_TBL_P(I);
23883 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
23884 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
23885 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
23886 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_P(I);
23887 G_SETUP_VALUE_TO_tbl(K) :=NULL;
23888 G_GROUPING_NUMBER_tbl(K) :=NULL;
23889 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
23890 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_ONLY';
23891 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
23892 G_DATATYPE_tbl(K) :=NULL;
23893 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
23894 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
23895 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_P(I);
23896 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
23897 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
23898 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
23899 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
23900 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
23901 K:= K+1;
23902 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23903 engine_debug('The value of K : ' || K);
23904 END IF;
23905
23906 IF l_satis_quals_opt = 'Y' THEN -- [4455344/4489224] {
23907 IF (l_satisfied_list_header_id <> -9999) THEN
23908
23909 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23910 engine_debug('Qualifiers for List Header Id : ' || l_satisfied_list_header_id );
23911 engine_debug('Qualifiers for List Line Id : ' || l_satisfied_lst_line_id );
23912
23913 END IF;
23914
23915 qp_debug_util.tstart('L_GET_SATISFIED_QUALS','Cursor Loop L_GET_SATISFIED_QUALS');
23916
23917 FOR V IN l_get_satisfied_quals(l_satisfied_list_header_id,l_satisfied_lst_line_id, l_satisfied_line_indx)
23918 LOOP
23919 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23920 engine_debug(' Qual #3 ' );
23921 END IF;
23922 --Qualifier attributes
23923 G_LINE_INDEX_tbl(K) :=l_satisfied_line_indx;
23924 G_ATTRIBUTE_LEVEL_tbl(K) :=V.QUALIFIER_ATTRIBUTE_LEVEL;
23925 G_ATTRIBUTE_TYPE_tbl(K) :=V.QUALIFIER_ATTRIBUTE_TYPE;
23926 G_CONTEXT_tbl(K) :=V.QUALIFIER_ATTRIBUTE_CONTEXT;
23927 G_ATTRIBUTE_tbl(K) :=V.QUALIFIER_ATTRIBUTE;
23928 G_VALUE_FROM_tbl(K) :=V.QUALIFIER_ATTRIBUTE_VALUE;
23929 G_VALUE_TO_tbl(K) :=NULL;
23930 G_COMPARISON_OPERATOR_TYPE_tbl(K):=V.QUALIFIER_OPERATOR_TYPE;
23931 G_VALIDATED_FLAG_tbl(K) :=V.VALIDATED_FLAG;
23932 G_APPLIED_FLAG_tbl(K) :=V.APPLIED_FLAG;
23933 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
23934 G_PRICING_ATTR_FLAG_tbl(K) :=V.QUALIFIER_PRICING_ATTR_FLAG;
23935 G_LINE_DETAIL_INDEX_tbl(K) :=l_satisfied_line_detail_indx;
23936 G_LIST_HEADER_ID_tbl(K) :=l_satisfied_list_header_id;
23937 G_LIST_LINE_ID_tbl(K) :=l_satisfied_lst_line_id;
23938 G_SETUP_VALUE_FROM_tbl(K) :=V.SETUP_VALUE_FROM;
23939 G_SETUP_VALUE_TO_tbl(K) :=V.SETUP_VALUE_TO;
23940 G_GROUPING_NUMBER_tbl(K) :=V.QUALIFIER_GROUPING_NO;
23941 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
23942 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_ONLY';
23943 G_QUALIFIER_PRECEDENCE_tbl(K) :=V.QUALIFIER_PRECEDENCE;
23944 G_DATATYPE_tbl(K) :=V.QUALIFIER_DATATYPE;
23945 G_EXCLUDER_FLAG_TBL(K) :=NULL;
23946 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
23947 G_QUALIFIER_TYPE_TBL(K) :=V.QUALIFIER_TYPE;
23948 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
23949 G_INCOMP_GRP_CODE_TBL_A(K) :=l_satisfied_incomp_code;
23950 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
23951 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=l_satisfied_modifier_lvl_code;
23952 G_PRIMARY_UOM_FLAG_TBL_A(K) :=l_satisfied_primary_uom_flag;
23953 K:= K+1;
23954
23955 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23956 engine_debug('The value of K : ' || K);
23957 engine_debug('Qualifier Context : ' || v.qualifier_attribute_context);
23958 engine_debug('Qualifier Attribute : ' || v.qualifier_attribute);
23959 engine_debug('Qualifier Value : ' || v.qualifier_attribute_value);
23960 engine_debug('Qualifier List Header Id : ' || v.list_header_id);
23961 engine_debug('Qualifier List line Id : ' || v.list_line_id);
23962 engine_debug('Qualifier Type : ' || v.qualifier_type);
23963
23964 END IF;
23965 END LOOP;
23966
23967 qp_debug_util.tstop('L_GET_SATISFIED_QUALS');
23968
23969 --Reset the satisfied list header and list line info
23970 l_satisfied_list_header_id := -9999;
23971 l_satisfied_lst_line_id := -9999;
23972 l_satisfied_line_indx := -9999;
23973 l_satisfied_line_detail_indx := -9999;
23974
23975 END IF;
23976
23977 end if; -- } [4455344/4489224]
23978
23979 END LOOP;
23980 END IF;
23981 END LOOP;
23982
23983 qp_debug_util.tstop('L_PROD_QUAL_CUR');
23984
23985 CLOSE l_prod_qual_cur;
23986
23987 lq_line_index := -9999;
23988 lq_list_line_id := -9999;
23989
23990 OPEN l_prod_qual_pric_cur(p_pricing_phase_id, -99,-99,-99) ;
23991
23992 qp_debug_util.tstart('L_PROD_QUAL_PRIC_CUR','Cursor Loop l_prod_qual_pric_cur');
23993 LOOP
23994 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
23995 engine_debug('In l_prod_qual_pric_cur loop fetch');
23996 END IF;
23997 G_LIST_HEADER_ID_TBL_P.delete;
23998 G_LIST_LINE_ID_TBL_P.delete;
23999 G_LIST_LINE_TYPE_TBL_P.delete;
24000 G_LINE_INDEX_TBL_P.delete;
24001 G_VALIDATED_FLAG_TBL_P.delete;
24002 G_APPLIED_FLAG_TBL_P.delete;
24003 G_ATTRIBUTE_LEVEL_TBL_P.delete;
24004 G_ATTRIBUTE_TYPE_TBL_P.delete;
24005 G_CONTEXT_TBL_P.delete;
24006 G_ATTRIBUTE_TBL_P.delete;
24007 G_VALUE_FROM_TBL_P.delete;
24008 G_SETUP_VALUE_FROM_TBL_P.delete;
24009 G_PRICING_ATTR_FLAG_TBL_P.delete;
24010 G_PRODUCT_UOM_CODE_TBL_P.delete;
24011 G_EXCLUDER_FLAG_TBL_P.delete;
24012 G_ATTRIBUTE_LEVEL_TBL_PR.delete;
24013 G_ATTRIBUTE_TYPE_TBL_PR.delete;
24014 G_CONTEXT_TBL_PR.delete;
24015 G_ATTRIBUTE_TBL_PR.delete;
24016 G_VALUE_FROM_TBL_PR.delete;
24017 G_OPERATOR_TYPE_TBL_PR.delete;
24018 G_SETUP_VALUE_FROM_TBL_PR.delete;
24019 G_SETUP_VALUE_TO_TBL_PR.delete;
24020 G_DATATYPE_TBL_PR.delete;
24021 G_AUTOMATIC_FLAG_TBL_P.delete;
24022 G_MODIFIER_LEVEL_CODE_TBL_P.delete;
24023 G_PRIMARY_UOM_FLAG_TBL_P.delete;
24024 G_OPER_CALCULATION_CODE_TBL_P.delete;
24025 G_OPERAND_VALUE_TBL_P.delete;
24026 G_NET_AMOUNT_FLAG_TBL_P.delete; -- IT net_amount 2720717
24027 G_PRICING_GROUP_SEQUENCE_TBL_P.delete;
24028 G_PRICING_PHASE_ID_TBL_P.delete;
24029 G_PRICE_BREAK_TYPE_CODE_TBL_P.delete;
24030 G_INCOMP_GRP_CODE_TBL_P.delete;
24031 G_PRICE_FORMULA_ID_TBL_P.delete;
24032 G_PRODUCT_PRECEDENCE_TBL_P.delete;
24033 G_OVERRIDE_FLAG_TBL_P.delete;
24034 G_BENEFIT_QTY_TBL_P.delete;
24035 G_BENEFIT_UOM_CODE_TBL_P.delete;
24036 G_LIST_LINE_NO_TBL_P.delete;
24037 G_ACCRUAL_FLAG_TBL_P.delete;
24038 G_ACCR_CONVERSION_RATE_TBL_P.delete;
24039 G_ESTIM_ACCRUAL_RATE_TBL_P.delete;
24040 G_ASK_FOR_FLAG_TBL_P.delete;
24041 G_LIST_TYPE_CODE_TBL_P.delete;
24042 G_HEADER_LIMIT_EXISTS_TBL_P.delete;
24043 G_LINE_LIMIT_EXISTS_TBL_P.delete;
24044 G_QUALIFIER_TYPE_TBL_P.delete;
24045 G_CHARGE_TYPE_CODE_TBL_P.delete;
24046 G_CHARGE_SUBTYPE_CODE_TBL_P.delete;
24047 G_ACCUM_CONTEXT_TBL_P.delete; -- accum range break
24048 G_ACCUM_ATTRIBUTE_TBL_P.delete; -- accum range break
24049 G_ACCUM_FLAG_TBL_P.delete; -- accum range break
24050
24051 FETCH l_prod_qual_pric_cur BULK COLLECT INTO
24052 G_LIST_HEADER_ID_TBL_P,
24053 G_LIST_LINE_ID_TBL_P,
24054 G_LIST_LINE_TYPE_TBL_P,
24055 G_LINE_INDEX_TBL_P,
24056 G_VALIDATED_FLAG_TBL_P,
24057 G_APPLIED_FLAG_TBL_P,
24058 G_ATTRIBUTE_LEVEL_TBL_P,
24059 G_ATTRIBUTE_TYPE_TBL_P,
24060 G_CONTEXT_TBL_P,
24061 G_ATTRIBUTE_TBL_P,
24062 G_VALUE_FROM_TBL_P,
24063 G_SETUP_VALUE_FROM_TBL_P,
24064 G_PRICING_ATTR_FLAG_TBL_P,
24065 G_PRODUCT_UOM_CODE_TBL_P,
24066 G_EXCLUDER_FLAG_TBL_P,
24067 G_ATTRIBUTE_LEVEL_TBL_PR,
24068 G_ATTRIBUTE_TYPE_TBL_PR,
24069 G_CONTEXT_TBL_PR,
24070 G_ATTRIBUTE_TBL_PR,
24071 G_VALUE_FROM_TBL_PR,
24072 G_SETUP_VALUE_FROM_TBL_PR,
24073 G_SETUP_VALUE_TO_TBL_PR,
24074 G_OPERATOR_TYPE_TBL_PR,
24075 G_DATATYPE_TBL_PR,
24076 G_AUTOMATIC_FLAG_TBL_P,
24077 G_MODIFIER_LEVEL_CODE_TBL_P,
24078 G_PRIMARY_UOM_FLAG_TBL_P,
24079 G_OPER_CALCULATION_CODE_TBL_P,
24080 G_OPERAND_VALUE_TBL_P,
24081 G_NET_AMOUNT_FLAG_TBL_P, -- IT net_amount 2720717
24082 G_PRICING_GROUP_SEQUENCE_TBL_P,
24083 G_PRICING_PHASE_ID_TBL_P,
24084 G_PRICE_BREAK_TYPE_CODE_TBL_P,
24085 G_INCOMP_GRP_CODE_TBL_P,
24086 G_PRICE_FORMULA_ID_TBL_P,
24087 G_PRODUCT_PRECEDENCE_TBL_P,
24088 G_OVERRIDE_FLAG_TBL_P,
24089 G_BENEFIT_QTY_TBL_P,
24090 G_BENEFIT_UOM_CODE_TBL_P,
24091 G_LIST_LINE_NO_TBL_P,
24092 G_ACCRUAL_FLAG_TBL_P,
24093 G_ACCR_CONVERSION_RATE_TBL_P,
24094 G_ESTIM_ACCRUAL_RATE_TBL_P,
24095 G_ASK_FOR_FLAG_TBL_P,
24096 G_LIST_TYPE_CODE_TBL_P,
24097 G_HEADER_LIMIT_EXISTS_TBL_P,
24098 G_LINE_LIMIT_EXISTS_TBL_P,
24099 G_QUALIFIER_TYPE_TBL_P ,
24100 G_CHARGE_TYPE_CODE_TBL_P ,
24101 G_CHARGE_SUBTYPE_CODE_TBL_P,
24102 G_ACCUM_CONTEXT_TBL_P, -- for accum range break
24103 G_ACCUM_ATTRIBUTE_TBL_P, -- for accum range break
24104 G_ACCUM_FLAG_TBL_P LIMIT nROWS;
24105
24106 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
24107
24108 IF (G_LINE_INDEX_TBL_P.COUNT > 0) THEN
24109 FOR I in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST LOOP
24110
24111 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24112 engine_debug(' Prod Qual Pric List line id selected from big select: '||G_LIST_LINE_ID_TBL_P(I) );
24113 engine_debug(' #1');
24114 END IF;
24115
24116
24117 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24118 engine_debug(' #2');
24119
24120 END IF;
24121 IF (lq_line_index <> G_LINE_INDEX_TBL_P(I) OR lq_list_line_id <> G_LIST_LINE_ID_TBL_P(I)) THEN
24122 l_line_detail_index :=GET_LINE_DETAIL_INDEX;
24123
24124 G_LINE_INDEX_LD_TBL(M ) :=G_LINE_INDEX_TBL_P(I);
24125 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
24126 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(I);
24127 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(I);
24128 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
24129 G_PRICING_STATUS_TEXT_LD_TBL(M) :='PRODUCT_QUALIFIER_PRICING';
24130 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
24131 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
24132 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
24133 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(I);
24134 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(I);
24135 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(I);
24136 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_QUALIFIER_PRICING';
24137 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(I);
24138 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(I);
24139 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(I);
24140 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(I);
24141 G_NET_AMOUNT_FLAG_TBL(M) :=G_NET_AMOUNT_FLAG_TBL_P(I); -- IT net_amount 2720717
24142 G_ASK_FOR_FLAG_TBL(M) :=G_ASK_FOR_FLAG_TBL_P(I);
24143 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(I);
24144 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(I);
24145 G_OVERRIDE_FLAG_TBL(M) :=G_OVERRIDE_FLAG_TBL_P(I);
24146 G_BENEFIT_QTY_TBL(M) :=G_BENEFIT_QTY_TBL_P(I);
24147 G_BENEFIT_UOM_CODE_TBL(M) :=G_BENEFIT_UOM_CODE_TBL_P(I);
24148 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(I);
24149 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
24150 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
24151 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
24152 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(I);
24153 G_ACCRUAL_FLAG_TBL(M) :=G_ACCRUAL_FLAG_TBL_P(I);
24154 G_ACCRUAL_CONVERSION_RATE_TBL(M) :=G_ACCR_CONVERSION_RATE_TBL_P(I);
24155 G_ESTIM_ACCRUAL_RATE_TBL(M) :=G_ESTIM_ACCRUAL_RATE_TBL_P(I);
24156 G_HEADER_LIMIT_EXISTS_TBL(M) :=G_HEADER_LIMIT_EXISTS_TBL_P(I);
24157 G_LINE_LIMIT_EXISTS_TBL(M) :=G_LINE_LIMIT_EXISTS_TBL_P(I);
24158 G_CHARGE_TYPE_CODE_TBL(M) :=nvl(G_CHARGE_TYPE_CODE_TBL_P(I),'');
24159 G_CHARGE_SUBTYPE_CODE_TBL(M) :=nvl(G_CHARGE_SUBTYPE_CODE_TBL_P(I),'');
24160 G_ACCUM_CONTEXT_TBL(M) :=G_ACCUM_CONTEXT_TBL_P(I); -- accum range break
24161 G_ACCUM_ATTRIBUTE_TBL(M) :=G_ACCUM_ATTRIBUTE_TBL_P(I); -- accum range break
24162 G_ACCUM_FLAG_TBL(M) :=G_ACCUM_FLAG_TBL_P(I); -- accum range break
24163 M:=M+1;
24164 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24165 engine_debug(' #4');
24166 END IF;
24167 l_satisfied_list_header_id := G_LIST_HEADER_ID_TBL_P(I);
24168 l_satisfied_lst_line_id := G_LIST_LINE_ID_TBL_P(I);
24169 l_satisfied_line_indx := G_LINE_INDEX_TBL_P(I);
24170 l_satisfied_line_detail_indx := L_LINE_DETAIL_INDEX;
24171 l_satisfied_incomp_code := G_INCOMP_GRP_CODE_TBL_P(I);
24172 l_satisfied_modifier_lvl_code := G_MODIFIER_LEVEL_CODE_TBL_P(I);
24173 l_satisfied_primary_uom_flag := G_PRIMARY_UOM_FLAG_TBL_P(I);
24174 lq_line_index := G_LINE_INDEX_TBL_P(I);
24175 lq_list_line_id := G_LIST_LINE_ID_TBL_P(I);
24176 END IF; --end if for if list_line_no_exists
24177
24178 --if l_satis_quals_opt <> 'N' then
24179 --bug 4029027
24180 IF (l_satis_quals_opt <> 'N' or (l_satis_quals_opt = 'N' and g_context_tbl_p(i) <> G_QUALIFIER_TYPE)) THEN
24181
24182 --INSERT PRODUCT ATTRIBUTES
24183 G_LINE_INDEX_TBL(K) :=G_LINE_INDEX_TBL_P(I);
24184 G_ATTRIBUTE_LEVEL_TBL(K) :=G_ATTRIBUTE_LEVEL_TBL_P(I);
24185 G_ATTRIBUTE_TYPE_TBL(K) :=G_ATTRIBUTE_TYPE_TBL_P(I);
24186 G_CONTEXT_TBL(K) :=G_CONTEXT_TBL_P(I);
24187 G_ATTRIBUTE_TBL(K) :=G_ATTRIBUTE_TBL_P(I);
24188 G_VALUE_FROM_TBL(K) :=G_VALUE_FROM_TBL_P(I);
24189 G_VALUE_TO_TBL(K) :=NULL;
24190 G_COMPARISON_OPERATOR_TYPE_TBL(K):=NULL;
24191 G_VALIDATED_FLAG_TBL(K) :=G_VALIDATED_FLAG_TBL_P(I);
24192 G_APPLIED_FLAG_TBL(K) :=G_APPLIED_FLAG_TBL_P(I);
24193 G_PRICING_STATUS_CODE_TBL(K) :=G_STATUS_NEW;
24194 G_PRICING_ATTR_FLAG_TBL(K) :=G_PRICING_ATTR_FLAG_TBL_P(I);
24195 G_LINE_DETAIL_INDEX_TBL(K) :=L_LINE_DETAIL_INDEX;
24196 G_LIST_HEADER_ID_TBL(K) :=G_LIST_HEADER_ID_TBL_P(I);
24197 G_LIST_LINE_ID_TBL(K) :=G_LIST_LINE_ID_TBL_P(I);
24198 G_SETUP_VALUE_FROM_TBL(K) :=G_SETUP_VALUE_FROM_TBL_P(I);
24199 G_SETUP_VALUE_TO_TBL(K) :=NULL;
24200 G_GROUPING_NUMBER_TBL(K) :=NULL;
24201 G_NO_QUALIFIERS_IN_GRP_TBL(K) :=NULL;
24202 G_PRICING_STATUS_TEXT_TBL(K) :='PRODUCT_QUALIFIER_PRICING';
24203 G_QUALIFIER_PRECEDENCE_TBL(K) :=NULL;
24204 G_DATATYPE_TBL(K) :=NULL;
24205 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
24206 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
24207 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_P(I);
24208 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
24209 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
24210 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
24211 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
24212 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
24213 K:= K+1;
24214
24215 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24216 engine_debug('The value of K : ' || K);
24217 END IF;
24218
24219 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24220 engine_debug(' #5');
24221
24222 END IF;
24223 --INSERT PRICING ATTRIBUTES
24224 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
24225 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
24226 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_PR(I);
24227 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_PR(I);
24228 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_PR(I);
24229 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_PR(I);
24230 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_PR(I);
24231 G_VALUE_TO_tbl(K) :=NULL;
24232 G_COMPARISON_OPERATOR_TYPE_tbl(K):=G_OPERATOR_TYPE_TBL_PR(I);
24233 G_VALIDATED_FLAG_tbl(K) :=G_VALIDATED_FLAG_TBL_P(I);
24234 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
24235 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
24236 G_PRICING_ATTR_FLAG_tbl(K) :=G_PRICING_ATTR_FLAG_TBL_P(I);
24237 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
24238 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
24239 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
24240 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
24241 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
24242 G_GROUPING_NUMBER_tbl(K) :=NULL;
24243 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
24244 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_PRICING';
24245 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
24246 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
24247 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
24248 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
24249 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_P(I);
24250 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
24251 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
24252 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
24253 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
24254 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
24255 K:= K+1;
24256 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24257 engine_debug('The value of K : ' || K);
24258 END IF;
24259 END IF;
24260
24261 IF (l_satisfied_list_header_id <> -9999) THEN
24262
24263 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24264 engine_debug('Qualifiers for List Header Id : ' || l_satisfied_list_header_id );
24265 engine_debug('Qualifiers for List Line Id : ' || l_satisfied_lst_line_id );
24266
24267 END IF;
24268 FOR V IN l_get_satisfied_quals(l_satisfied_list_header_id,l_satisfied_lst_line_id, l_satisfied_line_indx)
24269 LOOP
24270 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24271 engine_debug(' Qual #3 ' );
24272 END IF;
24273 --Qualifier attributes
24274 G_LINE_INDEX_tbl(K) :=l_satisfied_line_indx;
24275 G_ATTRIBUTE_LEVEL_tbl(K) :=V.QUALIFIER_ATTRIBUTE_LEVEL;
24276 G_ATTRIBUTE_TYPE_tbl(K) :=V.QUALIFIER_ATTRIBUTE_TYPE;
24277 G_CONTEXT_tbl(K) :=V.QUALIFIER_ATTRIBUTE_CONTEXT;
24278 G_ATTRIBUTE_tbl(K) :=V.QUALIFIER_ATTRIBUTE;
24279 G_VALUE_FROM_tbl(K) :=V.QUALIFIER_ATTRIBUTE_VALUE;
24280 G_VALUE_TO_tbl(K) :=NULL;
24281 G_COMPARISON_OPERATOR_TYPE_tbl(K):=V.QUALIFIER_OPERATOR_TYPE;
24282 G_VALIDATED_FLAG_tbl(K) :=V.VALIDATED_FLAG;
24283 G_APPLIED_FLAG_tbl(K) :=V.APPLIED_FLAG;
24284 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
24285 G_PRICING_ATTR_FLAG_tbl(K) :=V.QUALIFIER_PRICING_ATTR_FLAG;
24286 G_LINE_DETAIL_INDEX_tbl(K) :=l_satisfied_line_detail_indx;
24287 G_LIST_HEADER_ID_tbl(K) :=l_satisfied_list_header_id;
24288 G_LIST_LINE_ID_tbl(K) :=l_satisfied_lst_line_id;
24289 G_SETUP_VALUE_FROM_tbl(K) :=V.SETUP_VALUE_FROM;
24290 G_SETUP_VALUE_TO_tbl(K) :=V.SETUP_VALUE_TO;
24291 G_GROUPING_NUMBER_tbl(K) :=V.QUALIFIER_GROUPING_NO;
24292 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
24293 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_PRICING_ONLY';
24294 G_QUALIFIER_PRECEDENCE_tbl(K) :=V.QUALIFIER_PRECEDENCE;
24295 G_DATATYPE_tbl(K) :=V.QUALIFIER_DATATYPE;
24296 G_EXCLUDER_FLAG_TBL(K) :=NULL;
24297 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
24298 G_QUALIFIER_TYPE_TBL(K) :=V.QUALIFIER_TYPE;
24299 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
24300 G_INCOMP_GRP_CODE_TBL_A(K) :=l_satisfied_incomp_code;
24301 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
24302 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=l_satisfied_modifier_lvl_code;
24303 G_PRIMARY_UOM_FLAG_TBL_A(K) :=l_satisfied_primary_uom_flag;
24304 K:= K+1;
24305
24306 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24307 engine_debug('The value of K : ' || K);
24308 engine_debug('Qualifier Context : ' || v.qualifier_attribute_context);
24309 engine_debug('Qualifier Attribute : ' || v.qualifier_attribute);
24310 engine_debug('Qualifier Value : ' || v.qualifier_attribute_value);
24311 engine_debug('Qualifier List Header Id : ' || v.list_header_id);
24312 engine_debug('Qualifier List line Id : ' || v.list_line_id);
24313 engine_debug('Qualifier Type : ' || v.qualifier_type);
24314
24315 END IF;
24316 END LOOP;
24317
24318 --Reset the satisfied list header and list line info
24319 l_satisfied_list_header_id := -9999;
24320 l_satisfied_lst_line_id := -9999;
24321 l_satisfied_line_indx := -9999;
24322 l_satisfied_line_detail_indx := -9999;
24323
24324 END IF;
24325
24326 end if;
24327
24328 END LOOP;
24329 END IF;
24330 END LOOP;
24331
24332 qp_debug_util.tstop('L_PROD_QUAL_PRIC_CUR');
24333
24334 CLOSE l_prod_qual_pric_cur;
24335
24336 OPEN l_inner_qual_cur (p_pricing_phase_id, -99,-99,-99,NULL,NULL,NULL,NULL);
24337 qp_debug_util.tstart('L_INNER_QUAL_CUR','Cursor Loop L_INNER_QUAL_CUR');
24338 LOOP
24339 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24340 engine_debug('In l_inner_qual_cur loop fetch');
24341
24342 END IF;
24343 G_LIST_HEADER_ID_TBL_Q.delete;
24344 G_LIST_LINE_ID_TBL_Q.delete;
24345 G_LIST_LINE_TYPE_TBL_Q.delete;
24346 G_LINE_INDEX_TBL_Q.delete;
24347 G_AUTOMATIC_FLAG_TBL_Q.delete;
24348 G_MODIFIER_LEVEL_CODE_TBL_Q.delete;
24349 G_PRIMARY_UOM_FLAG_TBL_Q.delete;
24350 G_OPER_CALCULATION_CODE_TBL_Q.delete;
24351 G_OPERAND_TBL_Q.delete;
24352 G_NET_AMOUNT_FLAG_TBL_Q.delete; -- IT net_amount 2720717
24353 G_PRICING_GROUP_SEQUENCE_TBL_Q.delete;
24354 G_PRICING_PHASE_ID_TBL_Q.delete;
24355 G_PRICE_BREAK_TYPE_CODE_TBL_Q.delete;
24356 G_INCOMP_GRP_CODE_TBL_Q.delete;
24357 G_PRICE_FORMULA_ID_TBL_Q.delete;
24358 G_PRODUCT_PRECEDENCE_TBL_Q.delete;
24359 G_OVERRIDE_FLAG_TBL_P.delete;
24360 G_BENEFIT_QTY_TBL_P.delete;
24361 G_BENEFIT_UOM_CODE_TBL_P.delete;
24362 G_LIST_LINE_NO_TBL_Q.delete;
24363 G_ACCRUAL_FLAG_TBL_Q.delete;
24364 G_ACCR_CONVERSION_RATE_TBL_Q.delete;
24365 G_ESTIM_ACCRUAL_RATE_TBL_Q.delete;
24366 G_ASK_FOR_FLAG_TBL_Q.delete;
24367 G_LIST_TYPE_CODE_TBL_Q.delete;
24368 G_QUALIFIER_TYPE_TBL_Q.delete;
24369 G_HEADER_LIMIT_EXISTS_TBL_P.delete;
24370 G_LINE_LIMIT_EXISTS_TBL_P.delete;
24371 G_CHARGE_TYPE_CODE_TBL_P.delete;
24372 G_CHARGE_SUBTYPE_CODE_TBL_P.delete;
24373 G_ACCUM_CONTEXT_TBL_P.delete; -- for accum range break
24374 G_ACCUM_ATTRIBUTE_TBL_P.delete; -- for accum range break
24375 G_ACCUM_FLAG_TBL_P.delete; -- for accum range break
24376
24377 FETCH l_inner_qual_cur BULK COLLECT INTO
24378 G_LIST_HEADER_ID_TBL_Q,
24379 G_LIST_LINE_ID_TBL_Q,
24380 G_LIST_LINE_TYPE_TBL_Q,
24381 G_LINE_INDEX_TBL_Q,
24382 G_AUTOMATIC_FLAG_TBL_Q,
24383 G_MODIFIER_LEVEL_CODE_TBL_Q,
24384 G_PRIMARY_UOM_FLAG_TBL_Q,
24385 G_OPER_CALCULATION_CODE_TBL_Q,
24386 G_OPERAND_TBL_Q,
24387 G_NET_AMOUNT_FLAG_TBL_Q, -- IT net_amount 2720717
24388 G_PRICING_GROUP_SEQUENCE_TBL_Q,
24389 G_PRICING_PHASE_ID_TBL_Q,
24390 G_PRICE_BREAK_TYPE_CODE_TBL_Q,
24391 G_INCOMP_GRP_CODE_TBL_Q,
24392 G_PRICE_FORMULA_ID_TBL_Q,
24393 G_PRODUCT_PRECEDENCE_TBL_Q,
24394 G_OVERRIDE_FLAG_TBL_P,
24395 G_BENEFIT_QTY_TBL_P,
24396 G_BENEFIT_UOM_CODE_TBL_P,
24397 G_LIST_LINE_NO_TBL_Q,
24398 G_ACCRUAL_FLAG_TBL_Q,
24399 G_ACCR_CONVERSION_RATE_TBL_Q,
24400 G_ESTIM_ACCRUAL_RATE_TBL_Q,
24401 G_ASK_FOR_FLAG_TBL_Q,
24402 G_LIST_TYPE_CODE_TBL_Q,
24403 G_HEADER_LIMIT_EXISTS_TBL_P,
24404 G_LINE_LIMIT_EXISTS_TBL_P,
24405 G_QUALIFIER_TYPE_TBL_Q ,
24406 G_CHARGE_TYPE_CODE_TBL_P ,
24407 G_CHARGE_SUBTYPE_CODE_TBL_P,
24408 G_ACCUM_CONTEXT_TBL_P, -- accum range break
24409 G_ACCUM_ATTRIBUTE_TBL_P, -- accum range break
24410 G_ACCUM_FLAG_TBL_P LIMIT nROWS;
24411
24412 EXIT WHEN G_LINE_INDEX_TBL_Q.COUNT = 0;
24413
24414 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24415 engine_debug(' In l_inner_qual_cur Count : '||G_LIST_LINE_ID_TBL_Q.count );
24416
24417 END IF;
24418 IF (G_LINE_INDEX_TBL_Q.COUNT > 0) THEN
24419 FOR I in G_LINE_INDEX_TBL_Q.FIRST .. G_LINE_INDEX_TBL_Q.LAST LOOP
24420 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24421 engine_debug(' In l_inner_qual_cur : '||G_LIST_LINE_ID_TBL_Q(I) );
24422
24423 END IF;
24424 IF (lq_line_index <> G_LINE_INDEX_TBL_Q(I) OR lq_list_line_id <> G_LIST_LINE_ID_TBL_Q(I)) THEN
24425 l_line_detail_index :=GET_LINE_DETAIL_INDEX;
24426
24427 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_Q(I);
24428 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
24429 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_Q(I);
24430 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_Q(I);
24431 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
24432 G_PRICING_STATUS_TEXT_LD_TBL(M) :='QUALIFIER_ONLY';
24433 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_Q(I);
24434 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
24435 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
24436 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_Q(I);
24437 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_Q(I);
24438 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_Q(I);
24439 G_CREATED_FROM_SQL_TBL(M) :='QUALIFIER_ONLY';
24440 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_Q(I);
24441 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_Q(I);
24442 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_Q(I);
24443 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_TBL_Q(I);
24444 G_NET_AMOUNT_FLAG_TBL(M) :=G_NET_AMOUNT_FLAG_TBL_Q(I); -- IT net_amount 2720717
24445 G_ASK_FOR_FLAG_TBL(M) :=G_ASK_FOR_FLAG_TBL_Q(I);
24446 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_Q(I);
24447 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_Q(I);
24448 G_OVERRIDE_FLAG_TBL(M) :=G_OVERRIDE_FLAG_TBL_P(I);
24449 G_BENEFIT_QTY_TBL(M) :=G_BENEFIT_QTY_TBL_P(I);
24450 G_BENEFIT_UOM_CODE_TBL(M) :=G_BENEFIT_UOM_CODE_TBL_P(I);
24451 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_Q(I);
24452 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_Q(I);
24453 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_Q(I);
24454 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_Q(I);
24455 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_Q(I);
24456 G_ACCRUAL_FLAG_TBL(M) :=G_ACCRUAL_FLAG_TBL_Q(I);
24457 G_ACCRUAL_CONVERSION_RATE_TBL(M) :=G_ACCR_CONVERSION_RATE_TBL_Q(I);
24458 G_ESTIM_ACCRUAL_RATE_TBL(M) :=G_ESTIM_ACCRUAL_RATE_TBL_Q(I);
24459 G_HEADER_LIMIT_EXISTS_TBL(M) :=G_HEADER_LIMIT_EXISTS_TBL_P(I);
24460 G_LINE_LIMIT_EXISTS_TBL(M) :=G_LINE_LIMIT_EXISTS_TBL_P(I);
24461 G_CHARGE_TYPE_CODE_TBL(M) :=nvl(G_CHARGE_TYPE_CODE_TBL_P(I),'');
24462 G_CHARGE_SUBTYPE_CODE_TBL(M) :=nvl(G_CHARGE_SUBTYPE_CODE_TBL_P(I),'');
24463 G_ACCUM_CONTEXT_TBL(M) :=G_ACCUM_CONTEXT_TBL_P(I); -- accum range break
24464 G_ACCUM_ATTRIBUTE_TBL(M) :=G_ACCUM_ATTRIBUTE_TBL_P(I); -- accum range break
24465 G_ACCUM_FLAG_TBL(M) :=G_ACCUM_FLAG_TBL_P(I); -- accum range break
24466 M:=M+1;
24467 l_satisfied_list_header_id := G_LIST_HEADER_ID_TBL_Q(I);
24468 l_satisfied_lst_line_id := G_LIST_LINE_ID_TBL_Q(I);
24469 l_satisfied_line_indx := G_LINE_INDEX_TBL_Q(I);
24470 l_satisfied_line_detail_indx := L_LINE_DETAIL_INDEX;
24471 l_satisfied_incomp_code := G_INCOMP_GRP_CODE_TBL_Q(I);
24472 l_satisfied_modifier_lvl_code := G_MODIFIER_LEVEL_CODE_TBL_Q(I);
24473 l_satisfied_primary_uom_flag := G_PRIMARY_UOM_FLAG_TBL_Q(I);
24474 lq_line_index := G_LINE_INDEX_TBL_Q(I);
24475 lq_list_line_id := G_LIST_LINE_ID_TBL_Q(I);
24476 END IF;
24477
24478 if l_satis_quals_opt <> 'N' then
24479
24480 IF (l_satisfied_list_header_id <> -9999) THEN
24481
24482 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24483 engine_debug('Qualifiers for List Header Id : ' || l_satisfied_list_header_id );
24484 engine_debug('Qualifiers for List Line Id : ' || l_satisfied_lst_line_id );
24485
24486 END IF;
24487 FOR V IN l_get_satisfied_quals(l_satisfied_list_header_id,l_satisfied_lst_line_id, l_satisfied_line_indx)
24488 LOOP
24489 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24490 engine_debug(' Qual #3 ' );
24491 END IF;
24492 --Qualifier attributes
24493 G_LINE_INDEX_tbl(K) :=l_satisfied_line_indx;
24494 G_ATTRIBUTE_LEVEL_tbl(K) :=V.QUALIFIER_ATTRIBUTE_LEVEL;
24495 G_ATTRIBUTE_TYPE_tbl(K) :=V.QUALIFIER_ATTRIBUTE_TYPE;
24496 G_CONTEXT_tbl(K) :=V.QUALIFIER_ATTRIBUTE_CONTEXT;
24497 G_ATTRIBUTE_tbl(K) :=V.QUALIFIER_ATTRIBUTE;
24498 G_VALUE_FROM_tbl(K) :=V.QUALIFIER_ATTRIBUTE_VALUE;
24499 G_VALUE_TO_tbl(K) :=NULL;
24500 G_COMPARISON_OPERATOR_TYPE_tbl(K):=V.QUALIFIER_OPERATOR_TYPE;
24501 G_VALIDATED_FLAG_tbl(K) :=V.VALIDATED_FLAG;
24502 G_APPLIED_FLAG_tbl(K) :=V.APPLIED_FLAG;
24503 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
24504 G_PRICING_ATTR_FLAG_tbl(K) :=V.QUALIFIER_PRICING_ATTR_FLAG;
24505 G_LINE_DETAIL_INDEX_tbl(K) :=l_satisfied_line_detail_indx;
24506 G_LIST_HEADER_ID_tbl(K) :=l_satisfied_list_header_id;
24507 G_LIST_LINE_ID_tbl(K) :=l_satisfied_lst_line_id;
24508 G_SETUP_VALUE_FROM_tbl(K) :=V.SETUP_VALUE_FROM;
24509 G_SETUP_VALUE_TO_tbl(K) :=V.SETUP_VALUE_TO;
24510 G_GROUPING_NUMBER_tbl(K) :=V.QUALIFIER_GROUPING_NO;
24511 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
24512 G_PRICING_STATUS_TEXT_tbl(K) :='QUALIFIERS_ONLY';
24513 G_QUALIFIER_PRECEDENCE_tbl(K) :=V.QUALIFIER_PRECEDENCE;
24514 G_DATATYPE_tbl(K) :=V.QUALIFIER_DATATYPE;
24515 G_EXCLUDER_FLAG_TBL(K) :=NULL;
24516 G_PRODUCT_UOM_CODE_TBL(K) :=NULL;
24517 G_QUALIFIER_TYPE_TBL(K) :=V.QUALIFIER_TYPE;
24518 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
24519 G_INCOMP_GRP_CODE_TBL_A(K) :=l_satisfied_incomp_code;
24520 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
24521 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=l_satisfied_modifier_lvl_code;
24522 G_PRIMARY_UOM_FLAG_TBL_A(K) :=l_satisfied_primary_uom_flag;
24523 K:= K+1;
24524
24525 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24526 engine_debug('The value of K : ' || K);
24527 engine_debug('Qualifier Context : ' || v.qualifier_attribute_context);
24528 engine_debug('Qualifier Attribute : ' || v.qualifier_attribute);
24529 engine_debug('Qualifier Value : ' || v.qualifier_attribute_value);
24530 engine_debug('Qualifier List Header Id : ' || v.list_header_id);
24531 engine_debug('Qualifier List line Id : ' || v.list_line_id);
24532 engine_debug('Qualifier Type : ' || v.qualifier_type);
24533
24534 END IF;
24535 END LOOP;
24536
24537 --Reset the satisfied list header and list line info
24538 l_satisfied_list_header_id := -9999;
24539 l_satisfied_lst_line_id := -9999;
24540 l_satisfied_line_indx := -9999;
24541 l_satisfied_line_detail_indx := -9999;
24542
24543 END IF;
24544
24545 end if;
24546
24547 END LOOP;
24548 END IF;
24549 END LOOP;
24550
24551 qp_debug_util.tstop('L_INNER_QUAL_CUR');
24552 CLOSE l_inner_qual_cur;
24553
24554 lq_line_index := -9999;
24555 lq_list_line_id := -9999;
24556
24557 --selecting lists that match product qttributes only
24558 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24559 engine_debug('Before l_prod_cur_mod');
24560 END IF;
24561 OPEN l_prod_cur(p_pricing_phase_id);
24562 qp_debug_util.tstart('L_PROD_CUR','Cursor Loop L_PROD_CUR');
24563
24564 LOOP
24565 G_LIST_HEADER_ID_TBL_P.delete;
24566 G_LIST_LINE_ID_TBL_P.delete;
24567 G_LIST_LINE_TYPE_TBL_P.delete;
24568 G_LINE_INDEX_TBL_P.delete;
24569 G_VALIDATED_FLAG_TBL_P.delete;
24570 G_APPLIED_FLAG_TBL_P.delete;
24571 G_ATTRIBUTE_LEVEL_TBL_P.delete;
24572 G_ATTRIBUTE_TYPE_TBL_P.delete;
24573 G_CONTEXT_TBL_P.delete;
24574 G_ATTRIBUTE_TBL_P.delete;
24575 G_VALUE_FROM_TBL_P.delete;
24576 G_SETUP_VALUE_FROM_TBL_P.delete;
24577 G_PRICING_ATTR_FLAG_TBL_P.delete;
24578 G_PRODUCT_UOM_CODE_TBL_P.delete;
24579 G_EXCLUDER_FLAG_TBL_P.delete;
24580 G_GROUPING_NUMBER_TBL_P.delete;
24581 G_QUALIFIER_PRECEDENCE_TBL_P.delete;
24582 G_AUTOMATIC_FLAG_TBL_P.delete;
24583 G_MODIFIER_LEVEL_CODE_TBL_P.delete;
24584 G_PRIMARY_UOM_FLAG_TBL_P.delete;
24585 G_OPER_CALCULATION_CODE_TBL_P.delete;
24586 G_OPERAND_VALUE_TBL_P.delete;
24587 G_NET_AMOUNT_FLAG_TBL_P.delete; -- IT net_amount 2720717
24588 G_PRICING_GROUP_SEQUENCE_TBL_P.delete;
24589 G_ASK_FOR_FLAG_TBL_P.delete;
24590 G_LIST_TYPE_CODE_TBL_P.delete;
24591 G_PRICING_PHASE_ID_TBL_P.delete;
24592 G_PRICE_BREAK_TYPE_CODE_TBL_P.delete;
24593 G_INCOMP_GRP_CODE_TBL_P.delete;
24594 G_PRICE_FORMULA_ID_TBL_P.delete;
24595 G_PRODUCT_PRECEDENCE_TBL_P.delete;
24596 G_OVERRIDE_FLAG_TBL_P.delete;
24597 G_BENEFIT_QTY_TBL_P.delete;
24598 G_BENEFIT_UOM_CODE_TBL_P.delete;
24599 G_LIST_LINE_NO_TBL_P.delete;
24600 G_ACCRUAL_FLAG_TBL_P.delete;
24601 G_ACCR_CONVERSION_RATE_TBL_P.delete;
24602 G_ESTIM_ACCRUAL_RATE_TBL_P.delete;
24603 G_HEADER_LIMIT_EXISTS_TBL_P.delete;
24604 G_LINE_LIMIT_EXISTS_TBL_P.delete;
24605 G_QUALIFIER_TYPE_TBL_P.delete;
24606 G_CHARGE_TYPE_CODE_TBL_P.delete;
24607 G_CHARGE_SUBTYPE_CODE_TBL_P.delete;
24608 G_ACCUM_CONTEXT_TBL_P.delete; -- for accum range break
24609 G_ACCUM_ATTRIBUTE_TBL_P.delete; -- for accum range break
24610 G_ACCUM_FLAG_TBL_P.delete; -- for accum range break
24611
24612 FETCH l_prod_cur BULK COLLECT INTO
24613 G_LIST_HEADER_ID_TBL_P
24614 , G_LIST_LINE_ID_TBL_P
24615 , G_LIST_LINE_TYPE_TBL_P
24616 , G_LINE_INDEX_TBL_P
24617 , G_VALIDATED_FLAG_TBL_P
24618 , G_APPLIED_FLAG_TBL_P
24619 , G_ATTRIBUTE_LEVEL_TBL_P
24620 , G_ATTRIBUTE_TYPE_TBL_P
24621 , G_CONTEXT_TBL_P
24622 , G_ATTRIBUTE_TBL_P
24623 , G_VALUE_FROM_TBL_P
24624 , G_SETUP_VALUE_FROM_TBL_P
24625 , G_PRICING_ATTR_FLAG_TBL_P
24626 , G_PRODUCT_UOM_CODE_TBL_P
24627 , G_EXCLUDER_FLAG_TBL_P
24628 , G_GROUPING_NUMBER_TBL_P
24629 , G_QUALIFIER_PRECEDENCE_TBL_P
24630 , G_AUTOMATIC_FLAG_TBL_P
24631 , G_MODIFIER_LEVEL_CODE_TBL_P
24632 , G_PRIMARY_UOM_FLAG_TBL_P
24633 , G_OPER_CALCULATION_CODE_TBL_P
24634 , G_OPERAND_VALUE_TBL_P
24635 , G_NET_AMOUNT_FLAG_TBL_P -- IT net_amount 2720717
24636 , G_PRICING_GROUP_SEQUENCE_TBL_P
24637 , G_ASK_FOR_FLAG_TBL_P
24638 , G_LIST_TYPE_CODE_TBL_P
24639 , G_PRICING_PHASE_ID_TBL_P
24640 , G_PRICE_BREAK_TYPE_CODE_TBL_P
24641 , G_INCOMP_GRP_CODE_TBL_P
24642 , G_PRICE_FORMULA_ID_TBL_P
24643 , G_PRODUCT_PRECEDENCE_TBL_P
24644 , G_OVERRIDE_FLAG_TBL_P
24645 , G_BENEFIT_QTY_TBL_P
24646 , G_BENEFIT_UOM_CODE_TBL_P
24647 , G_LIST_LINE_NO_TBL_P
24648 , G_ACCRUAL_FLAG_TBL_P
24649 , G_ACCR_CONVERSION_RATE_TBL_P
24650 , G_ESTIM_ACCRUAL_RATE_TBL_P
24651 , G_HEADER_LIMIT_EXISTS_TBL_P
24652 , G_LINE_LIMIT_EXISTS_TBL_P
24653 , G_QUALIFIER_TYPE_TBL_P
24654 , G_CHARGE_TYPE_CODE_TBL_P
24655 , G_CHARGE_SUBTYPE_CODE_TBL_P
24656 , G_ACCUM_CONTEXT_TBL_P -- accum range break
24657 , G_ACCUM_ATTRIBUTE_TBL_P -- accum range break
24658 , G_ACCUM_FLAG_TBL_P LIMIT nROWS;
24659
24660 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
24661
24662 IF (G_LINE_INDEX_TBL_P.COUNT > 0) THEN
24663 FOR I in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST LOOP
24664 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24665 engine_debug('Before dup tbl loop');
24666 END IF;
24667
24668 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24669 engine_debug('List line id selected from l_prod_cur_mod: '||g_list_line_id_TBL_P(I));
24670 engine_debug('Excluder Flag selected from big select1: '||g_excluder_flag_TBL_P(I));
24671
24672 END IF;
24673 IF (lq_line_index <> g_line_index_tbl_p(I) OR lq_list_line_id <> g_list_line_id_tbl_p(I)) THEN
24674 l_prod_cur_count := l_prod_cur_count + 1;
24675 l_line_detail_index := get_line_detail_index;
24676
24677 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(I);
24678 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
24679 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(I);
24680 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(I);
24681 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
24682 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_ONLY';
24683 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
24684 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
24685 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
24686 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(I);
24687 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(I);
24688 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(I);
24689 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_ONLY';
24690 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(I);
24691 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(I);
24692 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(I);
24693 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(I);
24694 G_NET_AMOUNT_FLAG_TBL(M) :=G_NET_AMOUNT_FLAG_TBL_P(I); -- IT net_amount 2720717
24695 G_ASK_FOR_FLAG_TBL(M) :=G_ASK_FOR_FLAG_TBL_P(I);
24696 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(I);
24697 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(I);
24698 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(I);
24699 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
24700 G_OVERRIDE_FLAG_TBL(M) :=G_OVERRIDE_FLAG_TBL_P(I);
24701 G_BENEFIT_QTY_TBL(M) :=G_BENEFIT_QTY_TBL_P(I);
24702 G_BENEFIT_UOM_CODE_TBL(M) :=G_BENEFIT_UOM_CODE_TBL_P(I);
24703 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
24704 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
24705 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(I);
24706 G_ACCRUAL_FLAG_TBL(M) :=G_ACCRUAL_FLAG_TBL_P(I);
24707 G_ACCRUAL_CONVERSION_RATE_TBL(M) :=G_ACCR_CONVERSION_RATE_TBL_P(I);
24708 G_ESTIM_ACCRUAL_RATE_TBL(M) :=G_ESTIM_ACCRUAL_RATE_TBL_P(I);
24709 G_HEADER_LIMIT_EXISTS_TBL(M) :=G_HEADER_LIMIT_EXISTS_TBL_P(I);
24710 G_LINE_LIMIT_EXISTS_TBL(M) :=G_LINE_LIMIT_EXISTS_TBL_P(I);
24711 G_CHARGE_TYPE_CODE_TBL(M) :=nvl(G_CHARGE_TYPE_CODE_TBL_P(I),'');
24712 G_CHARGE_SUBTYPE_CODE_TBL(M) :=nvl(G_CHARGE_SUBTYPE_CODE_TBL_P(I),'');
24713 G_ACCUM_CONTEXT_TBL(M) :=G_ACCUM_CONTEXT_TBL_P(I); -- accum range break
24714 G_ACCUM_ATTRIBUTE_TBL(M) :=G_ACCUM_ATTRIBUTE_TBL_P(I); -- accum range break
24715 G_ACCUM_FLAG_TBL(M) :=G_ACCUM_FLAG_TBL_P(I); -- accum range break
24716 M:=M+1;
24717 lq_line_index := g_line_index_tbl_p(I);
24718 lq_list_line_id := g_list_line_id_tbl_p(I);
24719 END IF; --end if for if list_line_no_exists
24720
24721 --if l_satis_quals_opt <> 'N' then
24722 -- 4029027 commented by [4455344/4489224]
24723 --bug 4029027
24724 --IF (l_satis_quals_opt <> 'N' or (l_satis_quals_opt = 'N' and g_context_tbl_p(i) <> G_QUALIFIER_TYPE)) THEN
24725
24726 --INSERT PRODUCT ATTRIBUTES
24727 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(I);
24728 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(I);
24729 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(I);
24730 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(I);
24731 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(I);
24732 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(I);
24733 G_VALUE_TO_tbl(K) := NULL;
24734 G_COMPARISON_OPERATOR_TYPE_tbl(K):= NULL;
24735 G_VALIDATED_FLAG_tbl(K) := G_VALIDATED_FLAG_TBL_P(I);
24736 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(I);
24737 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
24738 G_PRICING_ATTR_FLAG_tbl(K) :=G_PRICING_ATTR_FLAG_TBL_P(I);
24739 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
24740 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
24741 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
24742 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_P(I);
24743 G_SETUP_VALUE_TO_tbl(K) :=NULL;
24744 G_GROUPING_NUMBER_tbl(K) :=G_GROUPING_NUMBER_TBL_P(I);
24745 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
24746 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_ONLY';
24747 G_QUALIFIER_PRECEDENCE_tbl(K) :=G_QUALIFIER_PRECEDENCE_TBL_P(I);
24748 G_DATATYPE_tbl(K) :=NULL;
24749 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24750 engine_debug('Before Insert Excluder Flag selected from big select1: '||g_excluder_flag_TBL_P(I));
24751 END IF;
24752 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
24753 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
24754 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_P(I);
24755 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
24756 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
24757 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
24758 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
24759 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
24760 K:= K+1;
24761 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24762 engine_debug('The value of K : ' || K);
24763 END IF;
24764
24765 -- end if; [4455344/4489224]
24766
24767 END LOOP;
24768 END IF;
24769 END LOOP;
24770
24771 qp_debug_util.tstop('L_PROD_CUR');
24772
24773 CLOSE l_prod_cur;
24774 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24775 engine_debug('After l_prod_cur_mod');
24776
24777 END IF;
24778 lq_line_index := -9999;
24779 lq_list_line_id := -9999;
24780
24781 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24782 engine_debug('Before l_prod_pric_cur_mod');
24783 END IF;
24784 OPEN l_prod_pric_cur(p_pricing_phase_id);
24785
24786 qp_debug_util.tstart('L_PROD_PRIC_CUR','Cursor Loop L_PROD_PRIC_CUR');
24787
24788 LOOP
24789 G_LIST_HEADER_ID_TBL_P.delete;
24790 G_LIST_LINE_ID_TBL_P.delete;
24791 G_LIST_LINE_TYPE_TBL_P.delete;
24792 G_LINE_INDEX_TBL_P.delete;
24793 G_VALIDATED_FLAG_TBL_P.delete;
24794 G_APPLIED_FLAG_TBL_P.delete;
24795 G_ATTRIBUTE_LEVEL_TBL_P.delete;
24796 G_ATTRIBUTE_TYPE_TBL_P.delete;
24797 G_CONTEXT_TBL_P.delete;
24798 G_ATTRIBUTE_TBL_P.delete;
24799 G_VALUE_FROM_TBL_P.delete;
24800 G_SETUP_VALUE_FROM_TBL_P.delete;
24801 G_PRICING_ATTR_FLAG_TBL_P.delete;
24802 G_PRODUCT_UOM_CODE_TBL_P.delete;
24803 G_EXCLUDER_FLAG_TBL_P.delete;
24804 G_GROUPING_NUMBER_TBL_P.delete;
24805 G_QUALIFIER_PRECEDENCE_TBL_P.delete;
24806 G_AUTOMATIC_FLAG_TBL_P.delete;
24807 G_MODIFIER_LEVEL_CODE_TBL_P.delete;
24808 G_PRIMARY_UOM_FLAG_TBL_P.delete;
24809 G_OPER_CALCULATION_CODE_TBL_P.delete;
24810 G_OPERAND_VALUE_TBL_P.delete;
24811 G_NET_AMOUNT_FLAG_TBL_P.delete; -- IT net_amount 2720717
24812 G_PRICING_GROUP_SEQUENCE_TBL_P.delete;
24813 G_ASK_FOR_FLAG_TBL_P.delete;
24814 G_LIST_TYPE_CODE_TBL_P.delete;
24815 G_PRICING_PHASE_ID_TBL_P.delete;
24816 G_PRICE_BREAK_TYPE_CODE_TBL_P.delete;
24817 G_INCOMP_GRP_CODE_TBL_P.delete;
24818 G_PRICE_FORMULA_ID_TBL_P.delete;
24819 G_PRODUCT_PRECEDENCE_TBL_P.delete;
24820 G_OVERRIDE_FLAG_TBL_P.delete;
24821 G_PRINT_ON_INVOICE_FLAG_TBL_P.delete;
24822 G_BENEFIT_QTY_TBL_P.delete;
24823 G_BENEFIT_UOM_CODE_TBL_P.delete;
24824 G_LIST_LINE_NO_TBL_P.delete;
24825 G_ACCRUAL_FLAG_TBL_P.delete;
24826 G_ACCR_CONVERSION_RATE_TBL_P.delete;
24827 G_ESTIM_ACCRUAL_RATE_TBL_P.delete;
24828 G_QUALIFIER_TYPE_TBL_P.delete;
24829 G_ATTRIBUTE_LEVEL_TBL_PR.delete;
24830 G_ATTRIBUTE_TYPE_TBL_PR.delete;
24831 G_CONTEXT_TBL_PR.delete;
24832 G_ATTRIBUTE_TBL_PR.delete;
24833 G_VALUE_FROM_TBL_PR.delete;
24834 G_OPERATOR_TYPE_TBL_PR.delete;
24835 G_SETUP_VALUE_FROM_TBL_PR.delete;
24836 G_SETUP_VALUE_TO_TBL_PR.delete;
24837 G_DATATYPE_TBL_PR.delete;
24838 G_HEADER_LIMIT_EXISTS_TBL_P.delete;
24839 G_LINE_LIMIT_EXISTS_TBL_P.delete;
24840 G_CHARGE_TYPE_CODE_TBL_P.delete;
24841 G_CHARGE_SUBTYPE_CODE_TBL_P.delete;
24842 G_ACCUM_CONTEXT_TBL_P.delete; -- for accum range break
24843 G_ACCUM_ATTRIBUTE_TBL_P.delete; -- for accum range break
24844 G_ACCUM_FLAG_TBL_P.delete; -- for accum range break
24845
24846 FETCH l_prod_pric_cur BULK COLLECT INTO
24847 G_LIST_HEADER_ID_TBL_P
24848 , G_LIST_LINE_ID_TBL_P
24849 , G_LIST_LINE_TYPE_TBL_P
24850 , G_LINE_INDEX_TBL_P
24851 , G_VALIDATED_FLAG_TBL_P
24852 , G_APPLIED_FLAG_TBL_P
24853 , G_ATTRIBUTE_LEVEL_TBL_P
24854 , G_ATTRIBUTE_TYPE_TBL_P
24855 , G_CONTEXT_TBL_P
24856 , G_ATTRIBUTE_TBL_P
24857 , G_VALUE_FROM_TBL_P
24858 , G_SETUP_VALUE_FROM_TBL_P
24859 , G_PRICING_ATTR_FLAG_TBL_P
24860 , G_PRODUCT_UOM_CODE_TBL_P
24861 , G_EXCLUDER_FLAG_TBL_P
24862 , G_ATTRIBUTE_LEVEL_TBL_PR
24863 , G_ATTRIBUTE_TYPE_TBL_PR
24864 , G_CONTEXT_TBL_PR
24865 , G_ATTRIBUTE_TBL_PR
24866 , G_VALUE_FROM_TBL_PR
24867 , G_SETUP_VALUE_FROM_TBL_PR
24868 , G_SETUP_VALUE_TO_TBL_PR
24869 , G_OPERATOR_TYPE_TBL_PR
24870 , G_DATATYPE_TBL_PR
24871 , G_GROUPING_NUMBER_TBL_P
24872 , G_QUALIFIER_PRECEDENCE_TBL_P
24873 , G_AUTOMATIC_FLAG_TBL_P
24874 , G_MODIFIER_LEVEL_CODE_TBL_P
24875 , G_PRIMARY_UOM_FLAG_TBL_P
24876 , G_OPER_CALCULATION_CODE_TBL_P
24877 , G_OPERAND_VALUE_TBL_P
24878 , G_NET_AMOUNT_FLAG_TBL_P -- IT net_amount 2720717
24879 , G_PRICING_GROUP_SEQUENCE_TBL_P
24880 , G_ASK_FOR_FLAG_TBL_P
24881 , G_LIST_TYPE_CODE_TBL_P
24882 , G_PRICING_PHASE_ID_TBL_P
24883 , G_PRICE_BREAK_TYPE_CODE_TBL_P
24884 , G_INCOMP_GRP_CODE_TBL_P
24885 , G_PRICE_FORMULA_ID_TBL_P
24886 , G_PRODUCT_PRECEDENCE_TBL_P
24887 , G_OVERRIDE_FLAG_TBL_P
24888 , G_BENEFIT_QTY_TBL_P
24889 , G_BENEFIT_UOM_CODE_TBL_P
24890 , G_LIST_LINE_NO_TBL_P
24891 , G_ACCRUAL_FLAG_TBL_P
24892 , G_ACCR_CONVERSION_RATE_TBL_P
24893 , G_ESTIM_ACCRUAL_RATE_TBL_P
24894 , G_HEADER_LIMIT_EXISTS_TBL_P
24895 , G_LINE_LIMIT_EXISTS_TBL_P
24896 , G_QUALIFIER_TYPE_TBL_P
24897 , G_CHARGE_TYPE_CODE_TBL_P
24898 , G_CHARGE_SUBTYPE_CODE_TBL_P
24899 , G_ACCUM_CONTEXT_TBL_P -- accum range break
24900 , G_ACCUM_ATTRIBUTE_TBL_P -- accum range break
24901 , G_ACCUM_FLAG_TBL_P LIMIT nROWS;
24902
24903 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
24904
24905 --selecting lists that match product and pricing attributes only
24906 IF (G_LINE_INDEX_TBL_P.COUNT > 0) THEN
24907 FOR I in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST LOOP
24908 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24909 engine_debug('List line id selected from l_prod_pric_cur_mod: '||G_LIST_LINE_ID_TBL_P(I) );
24910 END IF;
24911 IF (lq_line_index <> g_line_index_tbl_p(I) OR lq_list_line_id <> g_list_line_id_tbl_p(I)) THEN
24912 L_LINE_DETAIL_INDEX := GET_LINE_DETAIL_INDEX;
24913
24914 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(I);
24915 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
24916 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(I);
24917 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(I);
24918 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
24919 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_PRICING_ONLY';
24920 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
24921 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
24922 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
24923 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(I);
24924 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(I);
24925 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(I);
24926 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_PRICING_ONLY';
24927 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(I);
24928 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(I);
24929 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(I);
24930 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(I);
24931 G_NET_AMOUNT_FLAG_TBL(M) :=G_NET_AMOUNT_FLAG_TBL_P(I); --?? IT net_amount 2720717
24932 G_ASK_FOR_FLAG_TBL(M) :=G_ASK_FOR_FLAG_TBL_P(I);
24933 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(I);
24934 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(I);
24935 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(I);
24936 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(I);
24937 G_OVERRIDE_FLAG_TBL(M) :=G_OVERRIDE_FLAG_TBL_P(I);
24938 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
24939 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
24940 G_BENEFIT_QTY_TBL(M) :=G_BENEFIT_QTY_TBL_P(I);
24941 G_BENEFIT_UOM_CODE_TBL(M) :=G_BENEFIT_UOM_CODE_TBL_P(I);
24942 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(I);
24943 G_ACCRUAL_FLAG_TBL(M) :=G_ACCRUAL_FLAG_TBL_P(I);
24944 G_ACCRUAL_CONVERSION_RATE_TBL(M) :=G_ACCR_CONVERSION_RATE_TBL_P(I);
24945 G_ESTIM_ACCRUAL_RATE_TBL(M) :=G_ESTIM_ACCRUAL_RATE_TBL_P(I);
24946 G_HEADER_LIMIT_EXISTS_TBL(M) :=G_HEADER_LIMIT_EXISTS_TBL_P(I);
24947 G_LINE_LIMIT_EXISTS_TBL(M) :=G_LINE_LIMIT_EXISTS_TBL_P(I);
24948 G_CHARGE_TYPE_CODE_TBL(M) :=nvl(G_CHARGE_TYPE_CODE_TBL_P(I),'');
24949 G_CHARGE_SUBTYPE_CODE_TBL(M) :=nvl(G_CHARGE_SUBTYPE_CODE_TBL_P(I),'');
24950 G_ACCUM_CONTEXT_TBL(M) :=G_ACCUM_CONTEXT_TBL_P(I); -- accum range break
24951 G_ACCUM_ATTRIBUTE_TBL(M) :=G_ACCUM_ATTRIBUTE_TBL_P(I); -- accum range break
24952 G_ACCUM_FLAG_TBL(M) :=G_ACCUM_FLAG_TBL_P(I); -- accum range break
24953 M:=M+1;
24954 lq_line_index := g_line_index_tbl_p(I);
24955 lq_list_line_id := g_list_line_id_tbl_p(I);
24956
24957 END IF; --end if for is list_line_no_exists
24958
24959
24960 --if l_satis_quals_opt <> 'N' then
24961 -- 4029027 commented out by [4455344/4489224]
24962 --bug 4029027
24963 --IF (l_satis_quals_opt <> 'N' or (l_satis_quals_opt = 'N' and g_context_tbl_p(i) <> G_QUALIFIER_TYPE)) THEN
24964
24965 --INSERT PRODUCT ATTRIBUTES
24966 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(I);
24967 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(I);
24968 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(I);
24969 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(I);
24970 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(I);
24971 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(I);
24972 G_VALUE_TO_tbl(K) := NULL;
24973 G_COMPARISON_OPERATOR_TYPE_tbl(K):= NULL;
24974 G_VALIDATED_FLAG_tbl(K) := G_VALIDATED_FLAG_TBL_P(I);
24975 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(I);
24976 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
24977 G_PRICING_ATTR_FLAG_tbl(K) :=G_PRICING_ATTR_FLAG_TBL_P(I);
24978 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
24979 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
24980 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
24981 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_P(I);
24982 G_SETUP_VALUE_TO_tbl(K) :=NULL;
24983 G_GROUPING_NUMBER_tbl(K) :=G_GROUPING_NUMBER_TBL_P(I);
24984 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
24985 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_PRICING_ONLY';
24986 G_QUALIFIER_PRECEDENCE_tbl(K) :=G_QUALIFIER_PRECEDENCE_TBL_P(I);
24987 G_DATATYPE_tbl(K) :=NULL;
24988 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
24989 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
24990 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_P(I);
24991 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
24992 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
24993 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
24994 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
24995 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
24996 K:= K+1;
24997 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
24998 engine_debug('The value of K : ' || K);
24999
25000 END IF;
25001 --INSERT PRICING ATTRIBUTES
25002 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
25003 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(I);
25004 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_PR(I);
25005 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_PR(I);
25006 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_PR(I);
25007 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_PR(I);
25008 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_PR(I);
25009 G_VALUE_TO_tbl(K) := NULL;
25010 G_COMPARISON_OPERATOR_TYPE_tbl(K):= G_OPERATOR_TYPE_TBL_PR(I);
25011 G_VALIDATED_FLAG_tbl(K) := G_VALIDATED_FLAG_TBL_P(I);
25012 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(I);
25013 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
25014 G_PRICING_ATTR_FLAG_tbl(K) :=G_PRICING_ATTR_FLAG_TBL_P(I);
25015 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
25016 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
25017 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
25018 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
25019 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
25020 G_GROUPING_NUMBER_tbl(K) :=G_GROUPING_NUMBER_TBL_P(I);
25021 G_NO_QUALIFIERS_IN_GRP_tbl(K) :=NULL;
25022 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_PRICING_ONLY';
25023 G_QUALIFIER_PRECEDENCE_tbl(K) :=G_QUALIFIER_PRECEDENCE_TBL_P(I);
25024 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
25025 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
25026 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
25027 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_P(I);
25028 G_PRICING_PHASE_ID_TBL_A(K) :=p_pricing_phase_id;
25029 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
25030 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
25031 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
25032 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
25033 K:= K+1;
25034 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25035 engine_debug('The value of K : ' || K);
25036 END IF;
25037 END IF;
25038
25039 -- end if; [4455344/4489224]
25040
25041 END LOOP;
25042 END IF;
25043 END LOOP;
25044
25045 qp_debug_util.tstop('L_PROD_PRIC_CUR');
25046
25047 CLOSE l_prod_pric_cur;
25048 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25049 engine_debug('After l_prod_pric_cur_mod');
25050
25051 END IF;
25052 IF(G_BLIND_DISCOUNT_PROFILE = G_YES) THEN
25053 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25054 engine_debug('In blind discount mode');
25055
25056 END IF;
25057 lq_line_index := -9999;
25058 lq_list_line_id := -9999;
25059
25060 --Select the lists that are good for anything
25061 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25062 engine_debug('Before blind cursor');
25063 END IF;
25064 OPEN l_cur(p_pricing_phase_id);
25065
25066 qp_debug_util.tstart('L_CUR','Cursor Loop L_CUR');
25067
25068 LOOP
25069 G_LINE_INDEX_TBL_B.delete;
25070 G_LIST_HEADER_ID_TBL_B.delete;
25071 G_LIST_LINE_ID_TBL_B.delete;
25072 G_PRICE_BREAK_TYPE_CODE_TBL_B.delete ;
25073 G_LIST_LINE_TYPE_TBL_B.delete;
25074 G_LIST_TYPE_CODE_TBL_B.delete;
25075 G_PRICING_GROUP_SEQUENCE_TBL_B.delete;
25076 G_PRICING_PHASE_ID_TBL_B.delete;
25077 G_OPER_CALCULATION_CODE_TBL_B.delete;
25078 G_OPERAND_VALUE_TBL_B.delete;
25079 G_NET_AMOUNT_FLAG_TBL_B.delete; -- IT net_amount 2720717
25080 G_ASK_FOR_FLAG_TBL_B.delete;
25081 G_PRICE_FORMULA_ID_TBL_B.delete;
25082 G_PRODUCT_PRECEDENCE_TBL_B.delete;
25083 G_INCOMP_GRP_CODE_TBL_B.delete;
25084 G_AUTOMATIC_FLAG_TBL_B.delete;
25085 G_OVERRIDE_FLAG_TBL_B.delete;
25086 G_PRIMARY_UOM_FLAG_TBL_B.delete;
25087 G_PRINT_ON_INVOICE_FLAG_TBL_B.delete;
25088 G_MODIFIER_LEVEL_CODE_TBL_B.delete;
25089 G_BENEFIT_QTY_TBL_B.delete;
25090 G_BENEFIT_UOM_CODE_TBL_B.delete;
25091 G_LIST_LINE_NO_TBL_B.delete;
25092 G_ACCRUAL_FLAG_TBL_B.delete;
25093 G_ACCR_CONVERSION_RATE_TBL_B.delete;
25094 G_ESTIM_ACCRUAL_RATE_TBL_B.delete;
25095 G_HEADER_LIMIT_EXISTS_TBL_P.delete;
25096 G_LINE_LIMIT_EXISTS_TBL_P.delete;
25097 G_CHARGE_TYPE_CODE_TBL_P.delete;
25098 G_CHARGE_SUBTYPE_CODE_TBL_P.delete;
25099 G_ACCUM_CONTEXT_TBL_P.delete; -- for accum range break
25100 G_ACCUM_ATTRIBUTE_TBL_P.delete; -- for accum range break
25101 G_ACCUM_FLAG_TBL_P.delete; -- for accum range break
25102
25103 FETCH l_cur BULK COLLECT INTO
25104 G_LIST_HEADER_ID_TBL_B
25105 , G_LIST_LINE_ID_TBL_B
25106 , G_LIST_LINE_TYPE_TBL_B
25107 , G_LINE_INDEX_TBL_B
25108 , G_AUTOMATIC_FLAG_TBL_B
25109 , G_MODIFIER_LEVEL_CODE_TBL_B
25110 , G_PRIMARY_UOM_FLAG_TBL_B
25111 , G_OPER_CALCULATION_CODE_TBL_B
25112 , G_OPERAND_VALUE_TBL_B
25113 , G_NET_AMOUNT_FLAG_TBL_B -- IT net_amount 2720717
25114 , G_PRICING_GROUP_SEQUENCE_TBL_B
25115 , G_ASK_FOR_FLAG_TBL_B
25116 , G_LIST_TYPE_CODE_TBL_B
25117 , G_PRICING_PHASE_ID_TBL_B
25118 , G_PRICE_BREAK_TYPE_CODE_TBL_B
25119 , G_INCOMP_GRP_CODE_TBL_B
25120 , G_PRICE_FORMULA_ID_TBL_B
25121 , G_PRODUCT_PRECEDENCE_TBL_B
25122 , G_OVERRIDE_FLAG_TBL_B
25123 , G_BENEFIT_QTY_TBL_B
25124 , G_BENEFIT_UOM_CODE_TBL_B
25125 , G_LIST_LINE_NO_TBL_B
25126 , G_ACCRUAL_FLAG_TBL_B
25127 , G_ACCR_CONVERSION_RATE_TBL_B
25128 , G_ESTIM_ACCRUAL_RATE_TBL_B
25129 , G_HEADER_LIMIT_EXISTS_TBL_P
25130 , G_LINE_LIMIT_EXISTS_TBL_P
25131 , G_CHARGE_TYPE_CODE_TBL_P
25132 , G_CHARGE_SUBTYPE_CODE_TBL_P
25133 , G_ACCUM_CONTEXT_TBL_P -- accum range break
25134 , G_ACCUM_ATTRIBUTE_TBL_P -- accum range break
25135 , G_ACCUM_FLAG_TBL_P LIMIT nROWS;
25136
25137 EXIT WHEN G_LINE_INDEX_TBL_B.COUNT = 0;
25138
25139
25140 IF (G_LINE_INDEX_TBL_B.COUNT > 0) THEN
25141 FOR I in G_LINE_INDEX_TBL_B.FIRST .. G_LINE_INDEX_TBL_B.LAST LOOP
25142
25143 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25144 engine_debug('List line id selected from blind cur: '||G_LIST_LINE_ID_TBL_B(I) );
25145 END IF;
25146 IF (lq_line_index <> g_line_index_tbl_b(I) OR lq_list_line_id <> g_list_line_id_tbl_b(I)) THEN
25147 l_line_detail_index :=GET_LINE_DETAIL_INDEX;
25148 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25149 engine_debug('Getting new line detail index2 '||l_line_detail_index);
25150 END IF;
25151
25152 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_B(I);
25153 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
25154 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_B(I);
25155 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_B(I);
25156 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
25157 G_PRICING_STATUS_TEXT_LD_TBL(M) :='GOOD_FOR_ALL';
25158 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_B(I);
25159 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
25160 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
25161 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_B(I);
25162 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_B(I);
25163 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_B(I);
25164 G_CREATED_FROM_SQL_TBL(M) :='GOOD_FOR_ALL';
25165 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_B(I);
25166 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_B(I);
25167 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_B(I);
25168 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_B(I);
25169 G_NET_AMOUNT_FLAG_TBL(M) :=G_NET_AMOUNT_FLAG_TBL_B(I); -- IT net_amount 2720717
25170 G_ASK_FOR_FLAG_TBL(M) :=G_ASK_FOR_FLAG_TBL_B(I);
25171 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_B(I);
25172 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_B(I);
25173 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_B(I);
25174 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_B(I);
25175 G_OVERRIDE_FLAG_TBL(M) :=G_OVERRIDE_FLAG_TBL_B(I);
25176 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_B(I);
25177 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_B(I);
25178 G_BENEFIT_QTY_TBL(M) :=G_BENEFIT_QTY_TBL_B(I);
25179 G_BENEFIT_UOM_CODE_TBL(M) :=G_BENEFIT_UOM_CODE_TBL_B(I);
25180 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_B(I);
25181 G_ACCRUAL_FLAG_TBL(M) :=G_ACCRUAL_FLAG_TBL_B(I);
25182 G_ACCRUAL_CONVERSION_RATE_TBL(M) :=G_ACCR_CONVERSION_RATE_TBL_B(I);
25183 G_ESTIM_ACCRUAL_RATE_TBL(M) :=G_ESTIM_ACCRUAL_RATE_TBL_B(I);
25184 G_HEADER_LIMIT_EXISTS_TBL(M) :=G_HEADER_LIMIT_EXISTS_TBL_P(I);
25185 G_LINE_LIMIT_EXISTS_TBL(M) :=G_LINE_LIMIT_EXISTS_TBL_P(I);
25186 G_CHARGE_TYPE_CODE_TBL(M) :=nvl(G_CHARGE_TYPE_CODE_TBL_P(I),'');
25187 G_CHARGE_SUBTYPE_CODE_TBL(M) :=nvl(G_CHARGE_SUBTYPE_CODE_TBL_P(I),'');
25188 G_ACCUM_CONTEXT_TBL(M) :=G_ACCUM_CONTEXT_TBL_P(I); -- accum range break
25189 G_ACCUM_ATTRIBUTE_TBL(M) :=G_ACCUM_ATTRIBUTE_TBL_P(I); -- accum range break
25190 G_ACCUM_FLAG_TBL(M) :=G_ACCUM_FLAG_TBL_P(I); -- accum range break
25191 M:=M+1;
25192 lq_line_index := g_line_index_tbl_b(I);
25193 lq_list_line_id := g_list_line_id_tbl_b(I);
25194
25195 END IF;
25196
25197 END LOOP;
25198 END IF; --IF
25199 END LOOP;
25200
25201 qp_debug_util.tstop('L_CUR');
25202
25203 CLOSE l_cur;
25204 END IF; --for blind discount
25205 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25206 engine_debug('After blind cursor');
25207
25208
25209 END IF;
25210 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
25211 --RAISE OTHERS;
25212 NULL;
25213 END IF;
25214
25215 -- Keep it for debugging purposes
25216 /* FOR Z In 1 .. g_line_detail_index_ld_tbl.count
25217 Loop
25218 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25219 engine_debug( '1: ' || G_LINE_DETAIL_INDEX_LD_TBL(Z));
25220 engine_debug( '2: ' || G_LINE_DETAIL_TYPE_CODE_TBL(Z));
25221 engine_debug( '3: ' || G_PRICE_BREAK_TYPE_CODE_TBL(Z));
25222 engine_debug( '5: ' || G_LINE_INDEX_LD_TBL(Z) );
25223 engine_debug( '6: ' || G_LIST_HEADER_ID_LD_TBL(Z));
25224 engine_debug( '7: ' || G_LIST_LINE_ID_LD_TBL(Z) );
25225 engine_debug( '8: ' || G_LIST_LINE_TYPE_TBL(Z) );
25226 engine_debug( '9: ' || G_LIST_TYPE_CODE_TBL(Z));
25227 engine_debug( '10: ' || G_CREATED_FROM_SQL_TBL(Z));
25228 engine_debug( '11: ' || G_PRICING_GROUP_SEQUENCE_TBL(Z));
25229 engine_debug( '12: ' || G_PRICING_PHASE_ID_TBL(Z));
25230 engine_debug( '13: ' || G_OPERAND_CALCULATION_CODE_TBL(Z));
25231 engine_debug( '14: ' || G_OPERAND_VALUE_TBL(Z));
25232 engine_debug( '15: ' || G_SUBSTITUTION_TYPE_CODE_TBL(Z));
25233 engine_debug( '16: ' || G_SUBSTITUTION_VALUE_FROM_TBL(Z));
25234 engine_debug( '17: ' || G_SUBSTITUTION_VALUE_TO_TBL(Z));
25235 engine_debug( '18: ' || G_ASK_FOR_FLAG_TBL(Z));
25236 engine_debug( '19: ' || G_PRICE_FORMULA_ID_TBL(Z));
25237 engine_debug( '20: ' || G_PRICING_STATUS_CODE_LD_TBL(Z));
25238 engine_debug( '21: ' || G_PRICING_STATUS_TEXT_LD_TBL(Z));
25239 engine_debug( '22: ' || G_PRODUCT_PRECEDENCE_TBL(Z) );
25240 engine_debug( '23: ' || G_INCOMP_GRP_CODE_TBL(Z));
25241 engine_debug( '24: ' || G_PROCESSED_FLAG_LD_TBL(Z));
25242 engine_debug( '25: ' || G_APPLIED_FLAG_LD_TBL(Z));
25243 engine_debug( '26: ' || G_AUTOMATIC_FLAG_TBL(Z));
25244 engine_debug( '27: ' || G_OVERRIDE_FLAG_TBL(Z));
25245 engine_debug( '28: ' || G_PRIMARY_UOM_FLAG_TBL(Z));
25246 engine_debug( '29: ' || G_PRINT_ON_INVOICE_FLAG_TBL(Z));
25247 engine_debug( '30: ' || G_MODIFIER_LEVEL_CODE_TBL(Z));
25248 engine_debug( '31: ' || G_BENEFIT_QTY_TBL(Z));
25249 engine_debug( '32: ' || G_BENEFIT_UOM_CODE_TBL(Z));
25250 engine_debug( '33: ' || G_LIST_LINE_NO_TBL(Z));
25251 engine_debug( '34: ' || G_ACCRUAL_FLAG_TBL(Z));
25252 engine_debug( '35: ' || G_ACCRUAL_CONVERSION_RATE_TBL(Z));
25253 engine_debug( '36: ' || G_ESTIM_ACCRUAL_RATE_TBL(Z));
25254 engine_debug( '37: ' || G_RECURRING_FLAG_TBL(Z));
25255 engine_debug( '38: ' || G_SELECTED_VOLUME_ATTR_TBL(Z));
25256 engine_debug( '40: ' || G_HEADER_LIMIT_EXISTS_TBL(Z));
25257 engine_debug( '41: ' || G_LINE_LIMIT_EXISTS_TBL(Z));
25258 engine_debug( '42: ' || G_CHARGE_TYPE_CODE_TBL(Z));
25259 engine_debug( '43: ' || G_CHARGE_SUBTYPE_CODE_TBL(Z));
25260 engine_debug( '44 net_amount_flag: ' || G_NET_AMOUNT_FLAG_TBL(Z)); -- IT net_amount 2720717
25261 END IF;
25262 End Loop; */
25263
25264 IF M > 1 THEN
25265 INSERT_LDETS_PVT( p_LINE_DETAIL_index => G_LINE_DETAIL_INDEX_LD_TBL,
25266 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
25267 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
25268 p_LINE_INDEX => G_LINE_INDEX_LD_TBL,
25269 p_CREATED_FROM_LIST_HEADER_ID =>G_LIST_HEADER_ID_LD_TBL,
25270 p_CREATED_FROM_LIST_LINE_ID =>G_LIST_LINE_ID_LD_TBL,
25271 p_CREATED_FROM_LIST_LINE_TYPE =>G_LIST_LINE_TYPE_TBL,
25272 p_CREATED_FROM_LIST_TYPE_CODE =>G_LIST_TYPE_CODE_TBL,
25273 p_CREATED_FROM_SQL =>G_CREATED_FROM_SQL_TBL,
25274 p_PRICING_GROUP_SEQUENCE =>G_PRICING_GROUP_SEQUENCE_TBL,
25275 P_PRICING_PHASE_ID =>G_PRICING_PHASE_ID_TBL,
25276 p_OPERAND_CALCULATION_CODE =>G_OPERAND_CALCULATION_CODE_TBL,
25277 p_OPERAND_VALUE =>G_OPERAND_VALUE_TBL,
25278 p_NET_AMOUNT_FLAG =>G_NET_AMOUNT_FLAG_TBL, -- IT net_amount 2720717
25279 p_ASK_FOR_FLAG =>G_ASK_FOR_FLAG_TBL,
25280 p_PRICE_FORMULA_ID =>G_PRICE_FORMULA_ID_TBL,
25281 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_LD_TBL,
25282 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_LD_TBL,
25283 p_PRODUCT_PRECEDENCE =>G_PRODUCT_PRECEDENCE_TBL ,
25284 p_INCOMPATABLILITY_GRP_CODE =>G_INCOMP_GRP_CODE_TBL,
25285 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_LD_TBL,
25286 p_APPLIED_FLAG =>G_APPLIED_FLAG_LD_TBL,
25287 p_AUTOMATIC_FLAG =>G_AUTOMATIC_FLAG_TBL,
25288 p_OVERRIDE_FLAG =>G_OVERRIDE_FLAG_TBL,
25289 p_PRIMARY_UOM_FLAG =>G_PRIMARY_UOM_FLAG_TBL,
25290 p_MODIFIER_LEVEL_CODE =>G_MODIFIER_LEVEL_CODE_TBL,
25291 p_BENEFIT_QTY =>G_BENEFIT_QTY_TBL,
25292 p_BENEFIT_UOM_CODE =>G_BENEFIT_UOM_CODE_TBL,
25293 p_LIST_LINE_NO =>G_LIST_LINE_NO_TBL,
25294 p_ACCRUAL_FLAG =>G_ACCRUAL_FLAG_TBL,
25295 p_ACCRUAL_CONVERSION_RATE =>G_ACCRUAL_CONVERSION_RATE_TBL,
25296 p_ESTIM_ACCRUAL_RATE =>G_ESTIM_ACCRUAL_RATE_TBL,
25297 p_HEADER_LIMIT_EXISTS =>G_HEADER_LIMIT_EXISTS_TBL,
25298 p_LINE_LIMIT_EXISTS =>G_LINE_LIMIT_EXISTS_TBL,
25299 p_CHARGE_TYPE_CODE =>G_CHARGE_TYPE_CODE_TBL,
25300 p_CHARGE_SUBTYPE_CODE =>G_CHARGE_SUBTYPE_CODE_TBL,
25301 p_ACCUM_CONTEXT =>G_ACCUM_CONTEXT_TBL, -- accum range break
25302 p_ACCUM_ATTRIBUTE =>G_ACCUM_ATTRIBUTE_TBL, -- accum range break
25303 p_ACCUM_FLAG =>G_ACCUM_FLAG_TBL, -- accum range break
25304 x_status_code =>l_status_code,
25305 x_status_text =>l_status_text
25306 );
25307
25308 END IF;
25309
25310 IF K > 1 THEN
25311 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25312 engine_debug('hw: k = ' || k);
25313 END IF;
25314 INSERT_LINE_ATTRS2
25315 ( p_LINE_INDEX_tbl =>G_LINE_INDEX_tbl,
25316 p_LINE_DETAIL_INDEX_tbl =>G_LINE_DETAIL_INDEX_tbl,
25317 p_ATTRIBUTE_LEVEL_tbl =>G_ATTRIBUTE_LEVEL_tbl,
25318 p_ATTRIBUTE_TYPE_tbl =>G_ATTRIBUTE_TYPE_tbl,
25319 p_LIST_HEADER_ID_tbl =>G_LIST_HEADER_ID_tbl,
25320 p_LIST_LINE_ID_tbl =>G_LIST_LINE_ID_tbl,
25321 p_CONTEXT_tbl =>G_CONTEXT_tbl,
25322 p_ATTRIBUTE_tbl =>G_ATTRIBUTE_tbl,
25323 p_VALUE_FROM_tbl =>G_VALUE_FROM_tbl,
25324 p_SETUP_VALUE_FROM_tbl =>G_SETUP_VALUE_FROM_tbl,
25325 p_VALUE_TO_tbl =>G_VALUE_TO_tbl,
25326 p_SETUP_VALUE_TO_tbl =>G_SETUP_VALUE_TO_tbl,
25327 p_GROUPING_NUMBER_tbl => G_GROUPING_NUMBER_tbl,
25328 p_NO_QUALIFIERS_IN_GRP_tbl =>G_NO_QUALIFIERS_IN_GRP_tbl,
25329 p_COMPARISON_OPERATOR_TYPE_tbl =>G_COMPARISON_OPERATOR_TYPE_tbl,
25330 p_VALIDATED_FLAG_tbl =>G_VALIDATED_FLAG_tbl,
25331 p_APPLIED_FLAG_tbl =>G_APPLIED_FLAG_tbl,
25332 p_PRICING_STATUS_CODE_tbl =>G_PRICING_STATUS_CODE_tbl,
25333 p_PRICING_STATUS_TEXT_tbl =>G_PRICING_STATUS_TEXT_tbl,
25334 p_QUALIFIER_PRECEDENCE_tbl =>G_QUALIFIER_PRECEDENCE_tbl,
25335 p_DATATYPE_tbl =>G_DATATYPE_tbl,
25336 p_PRICING_ATTR_FLAG_tbl =>G_PRICING_ATTR_FLAG_tbl,
25337 p_QUALIFIER_TYPE_tbl =>G_QUALIFIER_TYPE_TBL,
25338 p_product_uom_code_tbl =>G_PRODUCT_UOM_CODE_TBL,
25339 p_excluder_flag_tbl =>G_EXCLUDER_FLAG_TBL,
25340 p_PRICING_PHASE_ID_TBL =>G_PRICING_PHASE_ID_TBL_A,
25341 p_INCOMPATABILITY_GRP_CODE_TBL =>G_INCOMP_GRP_CODE_TBL_A,
25342 p_LINE_DETAIL_TYPE_CODE_TBL =>G_LINE_DETAIL_TYPE_CODE_TBL_A,
25343 p_MODIFIER_LEVEL_CODE_TBL =>G_MODIFIER_LEVEL_CODE_TBL_A,
25344 p_PRIMARY_UOM_FLAG_TBL =>G_PRIMARY_UOM_FLAG_TBL_A,
25345 x_status_code =>l_status_code,
25346 x_status_text =>l_status_text);
25347
25348 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
25349 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
25350 END IF;
25351
25352 END IF;
25353
25354 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25355 engine_debug('Before Inserting attributes in excluded cursor');
25356
25357 END IF;
25358 K := 1;
25359
25360 /*
25361 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
25362 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
25363 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
25364 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
25365 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
25366 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
25367
25368 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,QP_PRICING_ATTRIBUTES_N2,LIST_LINE_ID,1
25369 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,QP_PRICING_ATTRIBUTES_N2,EXCLUDER_FLAG,2
25370
25371 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_ldets_tmp_N2,PRICING_PHASE_ID,1
25372 INDX,QP_PREQ_GRP.select_modifiers.l_excl_cur,qp_npreq_ldets_tmp_N2,PRICING_STATUS_CODE,2
25373
25374 */
25375
25376 -- Delete Excluded Line Details Directly if the inner select returns an excluded row
25377 UPDATE qp_npreq_ldets_tmp a
25378 SET pricing_status_code = 'D_EXCLUDER'
25379 WHERE pricing_phase_id = p_pricing_phase_id
25380 AND pricing_status_code = G_STATUS_NEW
25381 AND EXISTS ( SELECT/*+ ORDERED USE_NL(c) index(c qp_preq_line_attrs_tmp_N2) index(b QP_PRICING_ATTRIBUTES_N2) l_excl_cur */
25382 'x'
25383 FROM qp_pricing_attributes b,
25384 qp_npreq_line_attrs_tmp c
25385 WHERE b.list_line_id = a.created_from_list_line_id
25386 AND b.excluder_flag = G_YES
25387 AND b.product_attribute_context = c.context
25388 AND b.product_attribute = c.attribute
25389 AND b.product_attr_value = c.value_from
25390 AND c.attribute_type = G_PRODUCT_TYPE
25391 AND c.pricing_status_code = G_STATUS_UNCHANGED
25392 AND c.line_index = a.line_index);
25393
25394 --selecting list line attributes that match excluder flag
25395 /* OPEN l_get_excluded_prods_cur(p_pricing_phase_id);
25396
25397 LOOP
25398 G_LIST_HEADER_ID_TBL_P.delete;
25399 G_LIST_LINE_ID_TBL_P.delete;
25400 G_LINE_INDEX_TBL_P.delete;
25401 G_VALIDATED_FLAG_TBL_P.delete;
25402 G_APPLIED_FLAG_TBL_P.delete;
25403 G_ATTRIBUTE_LEVEL_TBL_P.delete;
25404 G_ATTRIBUTE_TYPE_TBL_P.delete;
25405 G_CONTEXT_TBL_P.delete;
25406 G_ATTRIBUTE_TBL_P.delete;
25407 G_VALUE_FROM_TBL_P.delete;
25408 G_SETUP_VALUE_FROM_TBL_P.delete;
25409 G_PRICING_ATTR_FLAG_TBL_P.delete;
25410 G_PRODUCT_UOM_CODE_TBL_P.delete;
25411 G_EXCLUDER_FLAG_TBL_P.delete;
25412 G_QUALIFIER_PRECEDENCE_TBL_P.delete;
25413 G_LINE_DETAIL_INDEX_TBL_P.delete;
25414
25415 FETCH l_get_excluded_prods_cur BULK COLLECT INTO
25416 G_LIST_HEADER_ID_TBL_P
25417 , G_LIST_LINE_ID_TBL_P
25418 , G_LINE_INDEX_TBL_P
25419 , G_VALIDATED_FLAG_TBL_P
25420 , G_APPLIED_FLAG_TBL_P
25421 , G_ATTRIBUTE_LEVEL_TBL_P
25422 , G_ATTRIBUTE_TYPE_TBL_P
25423 , G_CONTEXT_TBL_P
25424 , G_ATTRIBUTE_TBL_P
25425 , G_VALUE_FROM_TBL_P
25426 , G_SETUP_VALUE_FROM_TBL_P
25427 , G_PRICING_ATTR_FLAG_TBL_P
25428 , G_PRODUCT_UOM_CODE_TBL_P
25429 , G_EXCLUDER_FLAG_TBL_P
25430 , G_QUALIFIER_PRECEDENCE_TBL_P
25431 , G_LINE_DETAIL_INDEX_TBL_P LIMIT nROWS;
25432
25433 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
25434
25435 IF (G_LINE_INDEX_TBL_P.COUNT > 0) THEN
25436 FOR I in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST LOOP
25437 --INSERT PRODUCT ATTRIBUTES
25438 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25439 engine_debug('Inserting attributes in excluded cursor : ' || G_LINE_INDEX_TBL_P(I));
25440 END IF;
25441 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(I);
25442 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(I);
25443 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(I);
25444 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(I);
25445 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(I);
25446 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(I);
25447 G_VALUE_TO_tbl(K) := NULL;
25448 G_COMPARISON_OPERATOR_TYPE_tbl(K):= NULL;
25449 G_VALIDATED_FLAG_tbl(K) := G_VALIDATED_FLAG_TBL_P(I);
25450 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(I);
25451 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
25452 G_PRICING_ATTR_FLAG_tbl(K) := G_PRICING_ATTR_FLAG_TBL_P(I);
25453 G_LINE_DETAIL_INDEX_tbl(K) := G_LINE_DETAIL_INDEX_TBL_P(I);
25454 G_LIST_HEADER_ID_tbl(K) := G_LIST_HEADER_ID_TBL_P(I);
25455 G_LIST_LINE_ID_tbl(K) := G_LIST_LINE_ID_TBL_P(I);
25456 G_SETUP_VALUE_FROM_tbl(K) := G_SETUP_VALUE_FROM_TBL_P(I);
25457 G_SETUP_VALUE_TO_tbl(K) := NULL;
25458 G_GROUPING_NUMBER_tbl(K) := NULL;
25459 G_NO_QUALIFIERS_IN_GRP_tbl(K) := NULL;
25460 G_PRICING_STATUS_TEXT_tbl(K) := 'EXCLUDED_PRODUCT_ONLY';
25461 G_QUALIFIER_PRECEDENCE_tbl(K) := G_QUALIFIER_PRECEDENCE_TBL_P(I);
25462 G_DATATYPE_tbl(K) := NULL;
25463 G_EXCLUDER_FLAG_TBL(K) := G_EXCLUDER_FLAG_TBL_P(I);
25464 G_PRODUCT_UOM_CODE_TBL(K) := G_PRODUCT_UOM_CODE_TBL_P(I);
25465 G_QUALIFIER_TYPE_TBL(K) := NULL;
25466 G_PRICING_PHASE_ID_TBL_A(K) := p_pricing_phase_id;
25467 G_INCOMP_GRP_CODE_TBL_A(K) :=NULL;
25468 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
25469 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=NULL;
25470 G_PRIMARY_UOM_FLAG_TBL_A(K) :=NULL;
25471 K:= K+1;
25472 END LOOP;
25473 END IF;
25474 END LOOP;
25475 CLOSE l_get_excluded_prods_cur; */
25476
25477
25478 IF K > 1 THEN
25479 INSERT_LINE_ATTRS2
25480 ( p_LINE_INDEX_tbl =>G_LINE_INDEX_tbl,
25481 p_LINE_DETAIL_INDEX_tbl =>G_LINE_DETAIL_INDEX_tbl,
25482 p_ATTRIBUTE_LEVEL_tbl =>G_ATTRIBUTE_LEVEL_tbl,
25483 p_ATTRIBUTE_TYPE_tbl =>G_ATTRIBUTE_TYPE_tbl,
25484 p_LIST_HEADER_ID_tbl =>G_LIST_HEADER_ID_tbl,
25485 p_LIST_LINE_ID_tbl =>G_LIST_LINE_ID_tbl,
25486 p_CONTEXT_tbl =>G_CONTEXT_tbl,
25487 p_ATTRIBUTE_tbl =>G_ATTRIBUTE_tbl,
25488 p_VALUE_FROM_tbl =>G_VALUE_FROM_tbl,
25489 p_SETUP_VALUE_FROM_tbl =>G_SETUP_VALUE_FROM_tbl,
25490 p_VALUE_TO_tbl =>G_VALUE_TO_tbl,
25491 p_SETUP_VALUE_TO_tbl =>G_SETUP_VALUE_TO_tbl,
25492 p_GROUPING_NUMBER_tbl => G_GROUPING_NUMBER_tbl,
25493 p_NO_QUALIFIERS_IN_GRP_tbl =>G_NO_QUALIFIERS_IN_GRP_tbl,
25494 p_COMPARISON_OPERATOR_TYPE_tbl =>G_COMPARISON_OPERATOR_TYPE_tbl,
25495 p_VALIDATED_FLAG_tbl =>G_VALIDATED_FLAG_tbl,
25496 p_APPLIED_FLAG_tbl =>G_APPLIED_FLAG_tbl,
25497 p_PRICING_STATUS_CODE_tbl =>G_PRICING_STATUS_CODE_tbl,
25498 p_PRICING_STATUS_TEXT_tbl =>G_PRICING_STATUS_TEXT_tbl,
25499 p_QUALIFIER_PRECEDENCE_tbl =>G_QUALIFIER_PRECEDENCE_tbl,
25500 p_DATATYPE_tbl =>G_DATATYPE_tbl,
25501 p_PRICING_ATTR_FLAG_tbl =>G_PRICING_ATTR_FLAG_tbl,
25502 p_QUALIFIER_TYPE_tbl =>G_QUALIFIER_TYPE_TBL,
25503 p_product_uom_code_tbl =>G_PRODUCT_UOM_CODE_TBL,
25504 p_excluder_flag_tbl =>G_EXCLUDER_FLAG_TBL,
25505 p_PRICING_PHASE_ID_TBL =>G_PRICING_PHASE_ID_TBL_A,
25506 p_INCOMPATABILITY_GRP_CODE_TBL =>G_INCOMP_GRP_CODE_TBL_A,
25507 p_LINE_DETAIL_TYPE_CODE_TBL =>G_LINE_DETAIL_TYPE_CODE_TBL_A,
25508 p_MODIFIER_LEVEL_CODE_TBL =>G_MODIFIER_LEVEL_CODE_TBL_A,
25509 p_PRIMARY_UOM_FLAG_TBL =>G_PRIMARY_UOM_FLAG_TBL_A,
25510 x_status_code =>l_status_code,
25511 x_status_text =>l_status_text);
25512 IF l_status_code = FND_API.G_RET_STS_ERROR THEN
25513 RAISE E_ROUTINE_ERRORS;
25514 END IF;
25515
25516 END IF;
25517
25518 --Reset_all_tbls;
25519 Reset_All_Tbls(l_status_code ,l_status_text );
25520 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
25521 RAISE E_ROUTINE_ERRORS;
25522 END IF;
25523
25524
25525 EXCEPTION
25526 WHEN E_ROUTINE_ERRORS THEN
25527 x_status_code := FND_API.G_RET_STS_ERROR;
25528 x_status_text := l_status_text;
25529 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25530 engine_debug(l_status_text);
25531 END IF;
25532 WHEN OTHERS THEN
25533 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
25534 engine_debug('< In Select_modifiers>: '||SQLERRM);
25535 END IF;
25536 x_status_code := FND_API.G_RET_STS_ERROR;
25537 x_status_text := l_routine||' '||SQLERRM;
25538 END SELECT_MODIFIERS;
25539
25540 /*+----------------------------------------------------------
25541 |PROCEDURE SELECT_PRICE_LIST_LINES
25542 +----------------------------------------------------------
25543 */
25544 PROCEDURE SELECT_PRICE_LIST_LINES(p_pricing_phase_id IN NUMBER,
25545 p_freeze_override_flag IN VARCHAR2,
25546 x_status_code OUT NOCOPY VARCHAR2,
25547 x_status_text OUT NOCOPY VARCHAR2,
25548 p_control_rec IN CONTROL_RECORD_TYPE) -- vivek
25549 AS
25550
25551 -- [julin/4742368/4766135] Added QP_QUALIFIERS_N1 hint to prevent db from using N2
25552 --[julin/5007789] Tuned query as follows:
25553 -- 1. Performing line filter first.
25554 -- 2. Performing qualifier filter before product filter
25555 -- 3. Split into unions ('=', 'BETWEEN', 'NOT =') for better use of indexes
25556 CURSOR l_prod_qual_cur (p_pricing_phase_id NUMBER) IS
25557 -- Product and Qualifier Only. No pricing
25558 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPL)
25559 INDEX(QPLATQ QP_PREQ_LINE_ATTRS_TMP_N1)
25560 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
25561 INDEX(QPQ QP_QUALIFIERS_N4)
25562 l_prod_qual_cur_pl */
25563 qpl.list_header_id,
25564 qpl.list_line_id,
25565 qpl.list_line_type_code,
25566 qplatpr.line_index,
25567 qplatpr.applied_flag,
25568 qplatpr.attribute_level product_attribute_level,
25569 qplatpr.attribute_type product_attribute_type,
25570 qplatpr.context product_attribute_context,
25571 qplatpr.attribute product_attribute,
25572 qplatpr.value_from product_attr_value,
25573 qpprod.product_uom_code product_uom_code,
25574 qpprod.excluder_flag,
25575 qplatq.context qualifier_attribute_context,
25576 qplatq.attribute qualifier_attribute,
25577 qplatq.value_from qualifier_attribute_value,
25578 qpq.qualifier_grouping_no qualifier_grouping_no,
25579 qpq.qualifier_precedence qualifier_precedence,
25580 qpq.qualifier_datatype,
25581 qpq.qualifier_attr_value setup_value_from,
25582 qpq.qualifier_attr_value_to setup_value_to,
25583 qpl.automatic_flag,
25584 qpl.modifier_level_code,
25585 qpl.primary_uom_flag,
25586 qpl.arithmetic_operator operand_calculation_code,
25587 qpl.operand operand_value,
25588 qpl.pricing_group_sequence,
25589 qph.list_type_code created_from_list_type,
25590 qph.rounding_factor,
25591 qpl.pricing_phase_id,
25592 qpl.price_break_type_code,
25593 qpl.incompatibility_grp_code,
25594 qpl.price_by_formula_id,
25595 qpl.product_precedence,
25596 qpl.list_line_no,
25597 'HQ' qualifier_type
25598 ,QPL.BREAK_UOM_CODE /* Proration */
25599 ,QPL.BREAK_UOM_CONTEXT /* Proration */
25600 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
25601 FROM --[julin/5007789]
25602 (SELECT /*+ dynamic_sampling(1) */ *
25603 FROM qp_npreq_lines_tmp
25604 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
25605 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
25606 qp_npreq_line_attrs_tmp qplatq,
25607 qp_qualifiers qpq,
25608 qp_list_headers_b qph,
25609 qp_price_req_sources_v qprs,
25610 qp_npreq_line_attrs_tmp qplatpr,
25611 qp_pricing_attributes qpprod,
25612 qp_list_lines qpl
25613 WHERE qph.list_header_id = qpl.list_header_id
25614 --added for moac -- commented references to security profile
25615 --security will be built into qp_list_headers_b
25616 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
25617 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
25618 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
25619 -- 3594459, context and attribute OR'd together
25620 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
25621 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
25622 AND qpq.list_header_id = qph.list_header_id
25623 AND (qplines.price_flag = G_YES OR
25624 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
25625 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
25626 AND qpq.list_line_id = -1
25627 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
25628 AND qpl.list_line_id = qpprod.list_line_id
25629 AND qph.currency_code = qplines.currency_code
25630 AND qpl.modifier_level_code = qplines.line_type_code
25631 AND qph.active_flag = G_YES
25632 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
25633 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
25634 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
25635 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
25636 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
25637 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
25638 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
25639 nvl(qpq.start_date_active, qplines.pricing_effective_date) and
25640 nvl(qpq.end_date_active,qplines.pricing_effective_date)
25641 AND qpq.qualifier_context = qplatq.context
25642 AND qpq.qualifier_attribute = qplatq.attribute
25643 AND qpq.comparison_operator_code = '=' --[julin/5007789]
25644 AND qplatq.value_from = qpq.qualifier_attr_value --bug#1761272 Multiple NOT =, [julin/5007789]
25645 AND qpq.active_flag = G_YES
25646 AND qpprod.pricing_phase_id = p_pricing_phase_id
25647 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
25648 AND qpprod.product_attribute_context = qplatpr.context
25649 AND qpprod.product_attribute = qplatpr.attribute
25650 AND qpprod.product_attr_value = qplatpr.value_from
25651 AND qpprod.excluder_flag = G_NO
25652 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
25653 AND qplatq.line_index = qplines.line_index
25654 AND qplatpr.line_index = qplines.line_index --[julin/5007789]
25655 AND qplatpr.line_index = qplatq.line_index
25656 AND qph.source_system_code = qprs.source_system_code
25657 AND qplines.request_type_code = qprs.request_type_code
25658 AND qplatq.attribute_type = 'QUALIFIER'
25659 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
25660 AND qplatpr.attribute_type='PRODUCT'
25661 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
25662 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
25663 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
25664 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
25665 UNION ALL
25666 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPL)
25667 INDEX(QPLATQ QP_PREQ_LINE_ATTRS_TMP_N1)
25668 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
25669 INDEX(QPQ QP_QUALIFIERS_N5)
25670 l_prod_qual_cur_pl */
25671 qpl.list_header_id,
25672 qpl.list_line_id,
25673 qpl.list_line_type_code,
25674 qplatpr.line_index,
25675 qplatpr.applied_flag,
25676 qplatpr.attribute_level product_attribute_level,
25677 qplatpr.attribute_type product_attribute_type,
25678 qplatpr.context product_attribute_context,
25679 qplatpr.attribute product_attribute,
25680 qplatpr.value_from product_attr_value,
25681 qpprod.product_uom_code product_uom_code,
25682 qpprod.excluder_flag,
25683 qplatq.context qualifier_attribute_context,
25684 qplatq.attribute qualifier_attribute,
25685 qplatq.value_from qualifier_attribute_value,
25686 qpq.qualifier_grouping_no qualifier_grouping_no,
25687 qpq.qualifier_precedence qualifier_precedence,
25688 qpq.qualifier_datatype,
25689 qpq.qualifier_attr_value setup_value_from,
25690 qpq.qualifier_attr_value_to setup_value_to,
25691 qpl.automatic_flag,
25692 qpl.modifier_level_code,
25693 qpl.primary_uom_flag,
25694 qpl.arithmetic_operator operand_calculation_code,
25695 qpl.operand operand_value,
25696 qpl.pricing_group_sequence,
25697 qph.list_type_code created_from_list_type,
25698 qph.rounding_factor,
25699 qpl.pricing_phase_id,
25700 qpl.price_break_type_code,
25701 qpl.incompatibility_grp_code,
25702 qpl.price_by_formula_id,
25703 qpl.product_precedence,
25704 qpl.list_line_no,
25705 'HQ' qualifier_type
25706 ,QPL.BREAK_UOM_CODE /* Proration */
25707 ,QPL.BREAK_UOM_CONTEXT /* Proration */
25708 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
25709 FROM --[julin/5007789]
25710 (SELECT /*+ dynamic_sampling(1) */ *
25711 FROM qp_npreq_lines_tmp
25712 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
25713 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
25714 qp_npreq_line_attrs_tmp qplatq,
25715 qp_qualifiers qpq,
25716 qp_list_headers_b qph,
25717 qp_price_req_sources_v qprs,
25718 qp_npreq_line_attrs_tmp qplatpr,
25719 qp_pricing_attributes qpprod,
25720 qp_list_lines qpl
25721 WHERE qph.list_header_id = qpl.list_header_id
25722 --added for moac -- commented references to security profile
25723 --security will be built into qp_list_headers_b
25724 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
25725 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
25726 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
25727 -- 3594459, context and attribute OR'd together
25728 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
25729 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
25730 AND qpq.list_header_id = qph.list_header_id
25731 AND (qplines.price_flag = G_YES OR
25732 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
25733 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
25734 AND qpq.list_line_id = -1
25735 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
25736 AND qpl.list_line_id = qpprod.list_line_id
25737 AND qph.currency_code = qplines.currency_code
25738 AND qpl.modifier_level_code = qplines.line_type_code
25739 AND qph.active_flag = G_YES
25740 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
25741 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
25742 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
25743 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
25744 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
25745 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
25746 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
25747 nvl(qpq.start_date_active, qplines.pricing_effective_date) and
25748 nvl(qpq.end_date_active,qplines.pricing_effective_date)
25749 AND qpq.qualifier_context = qplatq.context
25750 AND qpq.qualifier_attribute = qplatq.attribute
25751 AND qpq.comparison_operator_code = 'NOT =' --[julin/5007789]
25752 AND qpq.active_flag = G_YES
25753 AND qplatq.value_from <> qpq.qualifier_attr_value --[julin/5007789]
25754 AND qpprod.pricing_phase_id = p_pricing_phase_id
25755 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
25756 AND qpprod.product_attribute_context = qplatpr.context
25757 AND qpprod.product_attribute = qplatpr.attribute
25758 AND qpprod.product_attr_value = qplatpr.value_from
25759 AND qpprod.excluder_flag = G_NO
25760 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
25761 AND qplatq.line_index = qplines.line_index
25762 AND qplatpr.line_index = qplines.line_index --[julin/5007789]
25763 AND qplatpr.line_index = qplatq.line_index
25764 AND qph.source_system_code = qprs.source_system_code
25765 AND qplines.request_type_code = qprs.request_type_code
25766 AND qplatq.attribute_type = 'QUALIFIER'
25767 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
25768 AND qplatpr.attribute_type='PRODUCT'
25769 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
25770 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
25771 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
25772 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
25773 UNION ALL
25774 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPL)
25775 INDEX(QPLATQ QP_PREQ_LINE_ATTRS_TMP_N1)
25776 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
25777 INDEX(QPQ QP_QUALIFIERS_N6)
25778 l_prod_qual_cur_pl */
25779 qpl.list_header_id,
25780 qpl.list_line_id,
25781 qpl.list_line_type_code,
25782 qplatpr.line_index,
25783 qplatpr.applied_flag,
25784 qplatpr.attribute_level product_attribute_level,
25785 qplatpr.attribute_type product_attribute_type,
25786 qplatpr.context product_attribute_context,
25787 qplatpr.attribute product_attribute,
25788 qplatpr.value_from product_attr_value,
25789 qpprod.product_uom_code product_uom_code,
25790 qpprod.excluder_flag,
25791 qplatq.context qualifier_attribute_context,
25792 qplatq.attribute qualifier_attribute,
25793 qplatq.value_from qualifier_attribute_value,
25794 qpq.qualifier_grouping_no qualifier_grouping_no,
25795 qpq.qualifier_precedence qualifier_precedence,
25796 qpq.qualifier_datatype,
25797 qpq.qualifier_attr_value setup_value_from,
25798 qpq.qualifier_attr_value_to setup_value_to,
25799 qpl.automatic_flag,
25800 qpl.modifier_level_code,
25801 qpl.primary_uom_flag,
25802 qpl.arithmetic_operator operand_calculation_code,
25803 qpl.operand operand_value,
25804 qpl.pricing_group_sequence,
25805 qph.list_type_code created_from_list_type,
25806 qph.rounding_factor,
25807 qpl.pricing_phase_id,
25808 qpl.price_break_type_code,
25809 qpl.incompatibility_grp_code,
25810 qpl.price_by_formula_id,
25811 qpl.product_precedence,
25812 qpl.list_line_no,
25813 'HQ' qualifier_type
25814 ,QPL.BREAK_UOM_CODE /* Proration */
25815 ,QPL.BREAK_UOM_CONTEXT /* Proration */
25816 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
25817 FROM --[julin/5007789]
25818 (SELECT /*+ dynamic_sampling(1) */ *
25819 FROM qp_npreq_lines_tmp
25820 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
25821 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
25822 qp_npreq_line_attrs_tmp qplatq,
25823 qp_qualifiers qpq,
25824 qp_list_headers_b qph,
25825 qp_price_req_sources_v qprs,
25826 qp_npreq_line_attrs_tmp qplatpr,
25827 qp_pricing_attributes qpprod,
25828 qp_list_lines qpl
25829 WHERE qph.list_header_id = qpl.list_header_id
25830 --added for moac -- commented references to security profile
25831 --security will be built into qp_list_headers_b
25832 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
25833 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
25834 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
25835 -- 3594459, context and attribute OR'd together
25836 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
25837 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
25838 AND qpq.list_header_id = qph.list_header_id
25839 AND (qplines.price_flag = G_YES OR
25840 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
25841 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
25842 AND qpq.list_line_id = -1
25843 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
25844 AND qpl.list_line_id = qpprod.list_line_id
25845 AND qph.currency_code = qplines.currency_code
25846 AND qpl.modifier_level_code = qplines.line_type_code
25847 AND qph.active_flag = G_YES
25848 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
25849 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
25850 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
25851 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
25852 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
25853 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
25854 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
25855 nvl(qpq.start_date_active, qplines.pricing_effective_date) and
25856 nvl(qpq.end_date_active,qplines.pricing_effective_date)
25857 AND qpq.qualifier_context = qplatq.context
25858 AND qpq.qualifier_attribute = qplatq.attribute
25859 AND qpq.comparison_operator_code = G_OPERATOR_BETWEEN --[julin/5007789]
25860 AND qpq.active_flag = G_YES
25861 and ((qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y) --[julin/5007789]
25862 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to)
25863 or
25864 (qpq.qualifier_datatype = G_NUMERIC
25865 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
25866 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number))
25867 AND qpprod.pricing_phase_id = p_pricing_phase_id
25868 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
25869 AND qpprod.product_attribute_context = qplatpr.context
25870 AND qpprod.product_attribute = qplatpr.attribute
25871 AND qpprod.product_attr_value = qplatpr.value_from
25872 AND qpprod.excluder_flag = G_NO
25873 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
25874 AND qplatq.line_index = qplines.line_index
25875 AND qplatpr.line_index = qplines.line_index --[julin/5007789]
25876 AND qplatpr.line_index = qplatq.line_index
25877 AND qph.source_system_code = qprs.source_system_code
25878 AND qplines.request_type_code = qprs.request_type_code
25879 AND qplatq.attribute_type = 'QUALIFIER'
25880 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
25881 AND qplatpr.attribute_type='PRODUCT'
25882 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
25883 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
25884 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
25885 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
25886 ORDER BY 4,2;
25887
25888 --[julin/4742368/4766135] Added QP_QUALIFIERS_N1 hint to prevent db from using N2
25889 --[julin/5007789] Tuned query as follows:
25890 -- 1. Performing line filter first.
25891 -- 2. Performing qualifier filter before product filter
25892 -- 3. Split into unions ('=', 'BETWEEN', 'NOT =') for better use of indexes
25893 CURSOR l_prod_qual_cur_currency (p_pricing_phase_id NUMBER) IS
25894 -- Product and Qualifier Only. No pricing
25895 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPL)
25896 INDEX(QPLATQ QP_PREQ_LINE_ATTRS_TMP_N1)
25897 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
25898 INDEX(QPQ QP_QUALIFIERS_N4)
25899 l_prod_qual_cur_pl */
25900 qpl.list_header_id,
25901 qpl.list_line_id,
25902 qpl.list_line_type_code,
25903 qplatpr.line_index,
25904 qplatpr.applied_flag,
25905 qplatpr.attribute_level product_attribute_level,
25906 qplatpr.attribute_type product_attribute_type,
25907 qplatpr.context product_attribute_context,
25908 qplatpr.attribute product_attribute,
25909 qplatpr.value_from product_attr_value,
25910 qpprod.product_uom_code product_uom_code,
25911 qpprod.excluder_flag,
25912 qplatq.context qualifier_attribute_context,
25913 qplatq.attribute qualifier_attribute,
25914 qplatq.value_from qualifier_attribute_value,
25915 qpq.qualifier_grouping_no qualifier_grouping_no,
25916 qpq.qualifier_precedence qualifier_precedence,
25917 qpq.qualifier_datatype,
25918 qpq.qualifier_attr_value setup_value_from,
25919 qpq.qualifier_attr_value_to setup_value_to,
25920 qpl.automatic_flag,
25921 qpl.modifier_level_code,
25922 qpl.primary_uom_flag,
25923 qpl.arithmetic_operator operand_calculation_code,
25924 qpl.operand operand_value,
25925 qpl.pricing_group_sequence,
25926 qph.list_type_code created_from_list_type,
25927 qph.rounding_factor,
25928 qpl.pricing_phase_id,
25929 qpl.price_break_type_code,
25930 qpl.incompatibility_grp_code,
25931 qpl.price_by_formula_id,
25932 qpl.product_precedence,
25933 qpl.list_line_no,
25934 'HQ' qualifier_type,
25935 qcdt.currency_detail_id,
25936 qcdt.currency_header_id,
25937 qcdt.selling_rounding_factor,
25938 qplines.currency_code order_currency,
25939 qplines.pricing_effective_date pricing_effective_date,
25940 qph.currency_code base_currency_code
25941 ,QPL.BREAK_UOM_CODE /* Proration */
25942 ,QPL.BREAK_UOM_CONTEXT /* Proration */
25943 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
25944 FROM --[julin/5007789]
25945 (SELECT /*+ dynamic_sampling(1) */ *
25946 FROM qp_npreq_lines_tmp
25947 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
25948 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
25949 qp_npreq_line_attrs_tmp qplatq,
25950 qp_qualifiers qpq,
25951 qp_list_headers_b qph,
25952 qp_price_req_sources_v qprs,
25953 qp_npreq_line_attrs_tmp qplatpr,
25954 qp_pricing_attributes qpprod,
25955 qp_list_lines qpl,
25956 qp_currency_details qcdt
25957 WHERE qph.list_header_id = qpl.list_header_id
25958 --added for moac -- commented references to security profile
25959 --security will be built into qp_list_headers_b
25960 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
25961 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
25962 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
25963 -- 3594459, context and attribute OR'd together
25964 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
25965 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
25966 AND qpq.list_header_id = qph.list_header_id
25967 AND (qplines.price_flag = G_YES OR
25968 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
25969 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
25970 AND qpq.list_line_id = -1
25971 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
25972 AND qpl.list_line_id = qpprod.list_line_id
25973 --AND qph.currency_code = qplines.currency_code
25974 AND qph.currency_header_id = qcdt.currency_header_id
25975 AND qplines.currency_code = qcdt.to_currency_code
25976 AND nvl(qplines.pricing_effective_date,trunc(sysdate)) between
25977 nvl(trunc(qcdt.start_date_active),qplines.pricing_effective_date) and
25978 nvl(trunc(qcdt.end_date_active),qplines.pricing_effective_date)
25979 AND (
25980 (qcdt.curr_attribute_context is null
25981 and not exists
25982 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
25983 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
25984 where qcdt1.curr_attribute_context IS NOT NULL
25985 and qcdt1.curr_attribute_context = pa_tmp.context
25986 and qcdt1.curr_attribute = pa_tmp.attribute
25987 and qcdt1.curr_attribute_value = pa_tmp.value_from
25988 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
25989 and qcdt1.to_currency_code = qcdt.to_currency_code
25990 and qcdt1.currency_header_id = qcdt.currency_header_id
25991 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
25992 and pa_tmp.line_index = qplines.line_index
25993 and qplines.pricing_effective_date between
25994 nvl(trunc(qcdt1.start_date_active),qplines.pricing_effective_date)
25995 and nvl(trunc(qcdt1.end_date_active),qplines.pricing_effective_date)))
25996 OR
25997 (qcdt.curr_attribute_context is not null
25998 and qcdt.precedence =
25999 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
26000 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
26001 where qcdt2.curr_attribute_context IS NOT NULL
26002 and qcdt2.curr_attribute_context = pa_tmp1.context
26003 and qcdt2.curr_attribute = pa_tmp1.attribute
26004 and qcdt2.curr_attribute_value = pa_tmp1.value_from
26005 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
26006 and qcdt2.to_currency_code = qcdt.to_currency_code
26007 and qcdt2.currency_header_id = qcdt.currency_header_id
26008 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
26009 and pa_tmp1.line_index = qplines.line_index
26010 and qplines.pricing_effective_date between
26011 nvl(trunc(qcdt2.start_date_active),qplines.pricing_effective_date)
26012 and nvl(trunc(qcdt2.end_date_active),qplines.pricing_effective_date)
26013 )))
26014 AND qpl.modifier_level_code = qplines.line_type_code
26015 AND qph.active_flag = G_YES
26016 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26017 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
26018 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
26019 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26020 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
26021 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
26022 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26023 nvl(qpq.start_date_active, qplines.pricing_effective_date) and
26024 nvl(qpq.end_date_active,qplines.pricing_effective_date)
26025 AND qpq.qualifier_context = qplatq.context
26026 AND qpq.qualifier_attribute = qplatq.attribute
26027 AND qpq.comparison_operator_code = '=' --[julin/5007789]
26028 AND qplatq.value_from = qpq.qualifier_attr_value --bug#1761272 Multiple NOT =, [julin/5007789]
26029 AND qpq.active_flag = G_YES
26030 AND qpprod.pricing_phase_id = p_pricing_phase_id
26031 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
26032 AND qpprod.product_attribute_context = qplatpr.context
26033 AND qpprod.product_attribute = qplatpr.attribute
26034 AND qpprod.product_attr_value = qplatpr.value_from
26035 AND qpprod.excluder_flag = G_NO
26036 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
26037 AND qplatq.line_index = qplines.line_index
26038 AND qplatpr.line_index = qplines.line_index --[julin/5007789]
26039 AND qplatpr.line_index = qplatq.line_index
26040 AND qph.source_system_code = qprs.source_system_code
26041 AND qplines.request_type_code = qprs.request_type_code
26042 AND qplatq.attribute_type = 'QUALIFIER'
26043 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
26044 AND qplatpr.attribute_type='PRODUCT'
26045 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
26046 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
26047 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
26048 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
26049 UNION ALL
26050 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPL)
26051 INDEX(QPLATQ QP_PREQ_LINE_ATTRS_TMP_N1)
26052 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
26053 INDEX(QPQ QP_QUALIFIERS_N5)
26054 l_prod_qual_cur_pl */
26055 qpl.list_header_id,
26056 qpl.list_line_id,
26057 qpl.list_line_type_code,
26058 qplatpr.line_index,
26059 qplatpr.applied_flag,
26060 qplatpr.attribute_level product_attribute_level,
26061 qplatpr.attribute_type product_attribute_type,
26062 qplatpr.context product_attribute_context,
26063 qplatpr.attribute product_attribute,
26064 qplatpr.value_from product_attr_value,
26065 qpprod.product_uom_code product_uom_code,
26066 qpprod.excluder_flag,
26067 qplatq.context qualifier_attribute_context,
26068 qplatq.attribute qualifier_attribute,
26069 qplatq.value_from qualifier_attribute_value,
26070 qpq.qualifier_grouping_no qualifier_grouping_no,
26071 qpq.qualifier_precedence qualifier_precedence,
26072 qpq.qualifier_datatype,
26073 qpq.qualifier_attr_value setup_value_from,
26074 qpq.qualifier_attr_value_to setup_value_to,
26075 qpl.automatic_flag,
26076 qpl.modifier_level_code,
26077 qpl.primary_uom_flag,
26078 qpl.arithmetic_operator operand_calculation_code,
26079 qpl.operand operand_value,
26080 qpl.pricing_group_sequence,
26081 qph.list_type_code created_from_list_type,
26082 qph.rounding_factor,
26083 qpl.pricing_phase_id,
26084 qpl.price_break_type_code,
26085 qpl.incompatibility_grp_code,
26086 qpl.price_by_formula_id,
26087 qpl.product_precedence,
26088 qpl.list_line_no,
26089 'HQ' qualifier_type,
26090 qcdt.currency_detail_id,
26091 qcdt.currency_header_id,
26092 qcdt.selling_rounding_factor,
26093 qplines.currency_code order_currency,
26094 qplines.pricing_effective_date pricing_effective_date,
26095 qph.currency_code base_currency_code
26096 ,QPL.BREAK_UOM_CODE /* Proration */
26097 ,QPL.BREAK_UOM_CONTEXT /* Proration */
26098 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
26099 FROM --[julin/5007789]
26100 (SELECT /*+ dynamic_sampling(1) */ *
26101 FROM qp_npreq_lines_tmp
26102 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
26103 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
26104 qp_npreq_line_attrs_tmp qplatq,
26105 qp_qualifiers qpq,
26106 qp_list_headers_b qph,
26107 qp_price_req_sources_v qprs,
26108 qp_npreq_line_attrs_tmp qplatpr,
26109 qp_pricing_attributes qpprod,
26110 qp_list_lines qpl,
26111 qp_currency_details qcdt
26112 WHERE qph.list_header_id = qpl.list_header_id
26113 --added for moac -- commented references to security profile
26114 --security will be built into qp_list_headers_b
26115 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
26116 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
26117 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
26118 -- 3594459, context and attribute OR'd together
26119 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
26120 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
26121 AND qpq.list_header_id = qph.list_header_id
26122 AND (qplines.price_flag = G_YES OR
26123 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
26124 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
26125 AND qpq.list_line_id = -1
26126 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
26127 AND qpl.list_line_id = qpprod.list_line_id
26128 --AND qph.currency_code = qplines.currency_code
26129 AND qph.currency_header_id = qcdt.currency_header_id
26130 AND qplines.currency_code = qcdt.to_currency_code
26131 AND nvl(qplines.pricing_effective_date,trunc(sysdate)) between
26132 nvl(trunc(qcdt.start_date_active),qplines.pricing_effective_date) and
26133 nvl(trunc(qcdt.end_date_active),qplines.pricing_effective_date)
26134 AND (
26135 (qcdt.curr_attribute_context is null
26136 and not exists
26137 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
26138 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
26139 where qcdt1.curr_attribute_context IS NOT NULL
26140 and qcdt1.curr_attribute_context = pa_tmp.context
26141 and qcdt1.curr_attribute = pa_tmp.attribute
26142 and qcdt1.curr_attribute_value = pa_tmp.value_from
26143 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
26144 and qcdt1.to_currency_code = qcdt.to_currency_code
26145 and qcdt1.currency_header_id = qcdt.currency_header_id
26146 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
26147 and pa_tmp.line_index = qplines.line_index
26148 and qplines.pricing_effective_date between
26149 nvl(trunc(qcdt1.start_date_active),qplines.pricing_effective_date)
26150 and nvl(trunc(qcdt1.end_date_active),qplines.pricing_effective_date)))
26151 OR
26152 (qcdt.curr_attribute_context is not null
26153 and qcdt.precedence =
26154 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
26155 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
26156 where qcdt2.curr_attribute_context IS NOT NULL
26157 and qcdt2.curr_attribute_context = pa_tmp1.context
26158 and qcdt2.curr_attribute = pa_tmp1.attribute
26159 and qcdt2.curr_attribute_value = pa_tmp1.value_from
26160 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
26161 and qcdt2.to_currency_code = qcdt.to_currency_code
26162 and qcdt2.currency_header_id = qcdt.currency_header_id
26163 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
26164 and pa_tmp1.line_index = qplines.line_index
26165 and qplines.pricing_effective_date between
26166 nvl(trunc(qcdt2.start_date_active),qplines.pricing_effective_date)
26167 and nvl(trunc(qcdt2.end_date_active),qplines.pricing_effective_date)
26168 )))
26169 AND qpl.modifier_level_code = qplines.line_type_code
26170 AND qph.active_flag = G_YES
26171 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26172 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
26173 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
26174 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26175 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
26176 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
26177 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26178 nvl(qpq.start_date_active, qplines.pricing_effective_date) and
26179 nvl(qpq.end_date_active,qplines.pricing_effective_date)
26180 AND qpq.qualifier_context = qplatq.context
26181 AND qpq.qualifier_attribute = qplatq.attribute
26182 AND qpq.comparison_operator_code = 'NOT =' --[julin/5007789]
26183 AND qpq.active_flag = G_YES
26184 AND qplatq.value_from <> qpq.qualifier_attr_value --[julin/5007789]
26185 AND qpprod.pricing_phase_id = p_pricing_phase_id
26186 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
26187 AND qpprod.product_attribute_context = qplatpr.context
26188 AND qpprod.product_attribute = qplatpr.attribute
26189 AND qpprod.product_attr_value = qplatpr.value_from
26190 AND qpprod.excluder_flag = G_NO
26191 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
26192 AND qplatq.line_index = qplines.line_index
26193 AND qplatpr.line_index = qplines.line_index --[julin/5007789]
26194 AND qplatpr.line_index = qplatq.line_index
26195 AND qph.source_system_code = qprs.source_system_code
26196 AND qplines.request_type_code = qprs.request_type_code
26197 AND qplatq.attribute_type = 'QUALIFIER'
26198 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
26199 AND qplatpr.attribute_type='PRODUCT'
26200 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
26201 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
26202 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
26203 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
26204 UNION ALL
26205 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPL)
26206 INDEX(QPLATQ QP_PREQ_LINE_ATTRS_TMP_N1)
26207 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
26208 INDEX(QPQ QP_QUALIFIERS_N6)
26209 l_prod_qual_cur_pl */
26210 qpl.list_header_id,
26211 qpl.list_line_id,
26212 qpl.list_line_type_code,
26213 qplatpr.line_index,
26214 qplatpr.applied_flag,
26215 qplatpr.attribute_level product_attribute_level,
26216 qplatpr.attribute_type product_attribute_type,
26217 qplatpr.context product_attribute_context,
26218 qplatpr.attribute product_attribute,
26219 qplatpr.value_from product_attr_value,
26220 qpprod.product_uom_code product_uom_code,
26221 qpprod.excluder_flag,
26222 qplatq.context qualifier_attribute_context,
26223 qplatq.attribute qualifier_attribute,
26224 qplatq.value_from qualifier_attribute_value,
26225 qpq.qualifier_grouping_no qualifier_grouping_no,
26226 qpq.qualifier_precedence qualifier_precedence,
26227 qpq.qualifier_datatype,
26228 qpq.qualifier_attr_value setup_value_from,
26229 qpq.qualifier_attr_value_to setup_value_to,
26230 qpl.automatic_flag,
26231 qpl.modifier_level_code,
26232 qpl.primary_uom_flag,
26233 qpl.arithmetic_operator operand_calculation_code,
26234 qpl.operand operand_value,
26235 qpl.pricing_group_sequence,
26236 qph.list_type_code created_from_list_type,
26237 qph.rounding_factor,
26238 qpl.pricing_phase_id,
26239 qpl.price_break_type_code,
26240 qpl.incompatibility_grp_code,
26241 qpl.price_by_formula_id,
26242 qpl.product_precedence,
26243 qpl.list_line_no,
26244 'HQ' qualifier_type,
26245 qcdt.currency_detail_id,
26246 qcdt.currency_header_id,
26247 qcdt.selling_rounding_factor,
26248 qplines.currency_code order_currency,
26249 qplines.pricing_effective_date pricing_effective_date,
26250 qph.currency_code base_currency_code
26251 ,QPL.BREAK_UOM_CODE /* Proration */
26252 ,QPL.BREAK_UOM_CONTEXT /* Proration */
26253 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
26254 FROM --[julin/5007789]
26255 (SELECT /*+ dynamic_sampling(1) */ *
26256 FROM qp_npreq_lines_tmp
26257 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
26258 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
26259 qp_npreq_line_attrs_tmp qplatq,
26260 qp_qualifiers qpq,
26261 qp_list_headers_b qph,
26262 qp_price_req_sources_v qprs,
26263 qp_npreq_line_attrs_tmp qplatpr,
26264 qp_pricing_attributes qpprod,
26265 qp_list_lines qpl,
26266 qp_currency_details qcdt
26267 WHERE qph.list_header_id = qpl.list_header_id
26268 --added for moac -- commented references to security profile
26269 --security will be built into qp_list_headers_b
26270 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
26271 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
26272 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
26273 -- 3594459, context and attribute OR'd together
26274 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
26275 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
26276 AND qpq.list_header_id = qph.list_header_id
26277 AND (qplines.price_flag = G_YES OR
26278 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
26279 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
26280 AND qpq.list_line_id = -1
26281 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
26282 AND qpl.list_line_id = qpprod.list_line_id
26283 --AND qph.currency_code = qplines.currency_code
26284 AND qph.currency_header_id = qcdt.currency_header_id
26285 AND qplines.currency_code = qcdt.to_currency_code
26286 AND nvl(qplines.pricing_effective_date,trunc(sysdate)) between
26287 nvl(trunc(qcdt.start_date_active),qplines.pricing_effective_date) and
26288 nvl(trunc(qcdt.end_date_active),qplines.pricing_effective_date)
26289 AND (
26290 (qcdt.curr_attribute_context is null
26291 and not exists
26292 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
26293 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
26294 where qcdt1.curr_attribute_context IS NOT NULL
26295 and qcdt1.curr_attribute_context = pa_tmp.context
26296 and qcdt1.curr_attribute = pa_tmp.attribute
26297 and qcdt1.curr_attribute_value = pa_tmp.value_from
26298 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
26299 and qcdt1.to_currency_code = qcdt.to_currency_code
26300 and qcdt1.currency_header_id = qcdt.currency_header_id
26301 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
26302 and pa_tmp.line_index = qplines.line_index
26303 and qplines.pricing_effective_date between
26304 nvl(trunc(qcdt1.start_date_active),qplines.pricing_effective_date)
26305 and nvl(trunc(qcdt1.end_date_active),qplines.pricing_effective_date)))
26306 OR
26307 (qcdt.curr_attribute_context is not null
26308 and qcdt.precedence =
26309 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
26310 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
26311 where qcdt2.curr_attribute_context IS NOT NULL
26312 and qcdt2.curr_attribute_context = pa_tmp1.context
26313 and qcdt2.curr_attribute = pa_tmp1.attribute
26314 and qcdt2.curr_attribute_value = pa_tmp1.value_from
26315 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
26316 and qcdt2.to_currency_code = qcdt.to_currency_code
26317 and qcdt2.currency_header_id = qcdt.currency_header_id
26318 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
26319 and pa_tmp1.line_index = qplines.line_index
26320 and qplines.pricing_effective_date between
26321 nvl(trunc(qcdt2.start_date_active),qplines.pricing_effective_date)
26322 and nvl(trunc(qcdt2.end_date_active),qplines.pricing_effective_date)
26323 )))
26324 AND qpl.modifier_level_code = qplines.line_type_code
26325 AND qph.active_flag = G_YES
26326 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26327 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
26328 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
26329 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26330 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
26331 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
26332 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26333 nvl(qpq.start_date_active, qplines.pricing_effective_date) and
26334 nvl(qpq.end_date_active,qplines.pricing_effective_date)
26335 AND qpq.qualifier_context = qplatq.context
26336 AND qpq.qualifier_attribute = qplatq.attribute
26337 AND qpq.comparison_operator_code = G_OPERATOR_BETWEEN --[julin/5007789]
26338 AND qpq.active_flag = G_YES
26339 and ((qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y) --[julin/5007789]
26340 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to)
26341 or
26342 (qpq.qualifier_datatype = G_NUMERIC
26343 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
26344 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number))
26345 AND qpprod.pricing_phase_id = p_pricing_phase_id
26346 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_HDR_QUAL_IND
26347 AND qpprod.product_attribute_context = qplatpr.context
26348 AND qpprod.product_attribute = qplatpr.attribute
26349 AND qpprod.product_attr_value = qplatpr.value_from
26350 AND qpprod.excluder_flag = G_NO
26351 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
26352 AND qplatq.line_index = qplines.line_index
26353 AND qplatpr.line_index = qplines.line_index --[julin/5007789]
26354 AND qplatpr.line_index = qplatq.line_index
26355 AND qph.source_system_code = qprs.source_system_code
26356 AND qplines.request_type_code = qprs.request_type_code
26357 AND qplatq.attribute_type = 'QUALIFIER'
26358 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
26359 AND qplatpr.attribute_type='PRODUCT'
26360 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
26361 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
26362 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
26363 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
26364 ORDER BY 4,2;
26365
26366 --Added INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5) for 3259932
26367 --[julin/4708044] added index(qplapr QP_PREQ_LINE_ATTRS_TMP_N1), use_nl(qprs)
26368 CURSOR l_prod_qual_pric_cur(p_pricing_phase_id NUMBER) IS
26369 --Product+Qualifiers+Pricing
26370 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPLATPC QPL)
26371 index(qplatpc QP_PREQ_LINE_ATTRS_TMP_N2)
26372 index(qplatq QP_PREQ_LINE_ATTRS_TMP_N1)
26373 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
26374 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
26375 INDEX(QPQ QP_QUALIFIERS_N4)
26376 l_prod_qual_pric_cur_pl */
26377 qpl.list_header_id,
26378 qpl.list_line_id,
26379 qpl.list_line_type_code,
26380 qplatpr.line_index,
26381 qplatpr.applied_flag,
26382 qplatpr.attribute_level product_attribute_level,
26383 qplatpr.attribute_type product_attribute_type,
26384 qplatpr.context product_attribute_context,
26385 qplatpr.attribute product_attribute,
26386 qplatpr.value_from product_attr_value,
26387 qpprod.product_uom_code product_uom_code,
26388 qpprod.excluder_flag,
26389 qplatq.context qualifier_attribute_context,
26390 qplatq.attribute qualifier_attribute,
26391 qplatq.value_from qualifier_attribute_value,
26392 qpq.qualifier_grouping_no qualifier_grouping_no,
26393 qpq.qualifier_precedence qualifier_precedence,
26394 qpq.qualifier_datatype,
26395 qpq.qualifier_attr_value setup_value_from,
26396 qpq.qualifier_attr_value_to setup_value_to,
26397 qpl.automatic_flag,
26398 qpl.modifier_level_code,
26399 qpl.primary_uom_flag,
26400 qpl.arithmetic_operator operand_calculation_code,
26401 qpl.operand operand_value,
26402 qpl.pricing_group_sequence,
26403 qph.list_type_code created_from_list_type,
26404 qph.rounding_factor,
26405 qpl.pricing_phase_id,
26406 qpl.price_break_type_code,
26407 qpl.incompatibility_grp_code,
26408 qpl.price_by_formula_id,
26409 qpl.product_precedence,
26410 qpl.list_line_no,
26411 'HQ' QUALIFIER_TYPE,
26412 qplatpc.attribute_level pricing_attribute_level,
26413 qplatpc.attribute_type pricing_attribute_type,
26414 qplatpc.context pricing_attribute_context,
26415 qplatpc.attribute pricing_attribute,
26416 qplatpc.value_from pricing_attr_value,
26417 qpprod.pricing_attr_value_from pricing_setup_value_from,
26418 qpprod.pricing_attr_value_to pricing_setup_value_to,
26419 qpprod.comparison_operator_code pricing_comparison_operator,
26420 qpprod.pricing_attribute_datatype pricing_datatype
26421 ,QPL.BREAK_UOM_CODE /* Proration */
26422 ,QPL.BREAK_UOM_CONTEXT /* Proration */
26423 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
26424 FROM --[julin/5007789]
26425 (SELECT /*+ dynamic_sampling(1) */ *
26426 FROM qp_npreq_lines_tmp
26427 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
26428 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
26429 qp_npreq_line_attrs_tmp qplatq,
26430 qp_qualifiers qpq ,
26431 qp_list_headers_b qph,
26432 qp_price_req_sources_v qprs,
26433 qp_npreq_line_attrs_tmp qplatpr,
26434 qp_pricing_attributes qpprod ,
26435 qp_npreq_line_attrs_tmp qplatpc,
26436 qp_list_lines qpl
26437 WHERE qph.list_header_id = qpq.list_header_id
26438 -- 3594459, context and attribute OR'd together
26439 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
26440 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
26441 AND (qplines.price_flag = G_YES OR
26442 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
26443 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
26444 AND qph.list_header_id = qpl.list_header_id
26445 --added for moac -- commented references to security profile
26446 --security will be built into qp_list_headers_b
26447 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
26448 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
26449 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
26450 AND qpq.list_line_id = -1
26451 AND qpl.list_line_id = qpprod.list_line_id
26452 AND qph.currency_code = qplines.currency_code
26453 AND qpl.modifier_level_code = qplines.line_type_code
26454 AND qph.active_flag = G_YES
26455 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26456 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
26457 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
26458 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26459 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
26460 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
26461 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26462 nvl(qpq.start_date_active, qplines.pricing_effective_date) and
26463 nvl(qpq.end_date_active,qplines.pricing_effective_date)
26464 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
26465 AND qpq.qualifier_context = qplatq.context
26466 AND qpq.qualifier_attribute = qplatq.attribute
26467 AND qpq.comparison_operator_code = '=' --[julin/5007789]
26468 AND qplatq.value_from = qpq.qualifier_attr_value --bug#1761272 Multiple NOT =, [julin/5007789]
26469 AND qpq.active_flag = G_YES
26470 AND qpprod.pricing_phase_id = p_pricing_phase_id
26471 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
26472 AND qpprod.product_attribute_context = qplatpr.context
26473 AND qpprod.product_attribute = qplatpr.attribute
26474 AND qpprod.product_attr_value = qplatpr.value_from
26475 AND qpprod.excluder_flag = G_NO
26476 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
26477 AND qpprod.pricing_attribute_context = qplatpc.context
26478 AND qpprod.pricing_attribute = qplatpc.attribute
26479 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
26480 or qpprod.comparison_operator_code = G_OPERATOR_BETWEEN)
26481 AND qplatq.line_index = qplatpc.line_index
26482 AND qplatq.line_index = qplines.line_index
26483 AND qplatpc.line_index = qplatpr.line_index
26484 AND qph.source_system_code = qprs.source_system_code
26485 AND qplines.request_type_code = qprs.request_type_code
26486 AND qplatpr.line_index = qplines.line_index --[julin/4708044]
26487 AND qplatpr.attribute_type='PRODUCT'
26488 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
26489 AND qplatpc.attribute_type = 'PRICING'
26490 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED
26491 AND qplatq.attribute_type = 'QUALIFIER'
26492 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
26493 --AND qplatq.pricing_attr_flag = G_YES --[julin/4708044] wrong table, currently not reliable value, not used in index
26494 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
26495 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
26496 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
26497 UNION ALL
26498 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPLATPC QPL)
26499 index(qplatpc QP_PREQ_LINE_ATTRS_TMP_N2)
26500 index(qplatq QP_PREQ_LINE_ATTRS_TMP_N1)
26501 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
26502 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
26503 INDEX(QPQ QP_QUALIFIERS_N5)
26504 l_prod_qual_pric_cur_pl */
26505 qpl.list_header_id,
26506 qpl.list_line_id,
26507 qpl.list_line_type_code,
26508 qplatpr.line_index,
26509 qplatpr.applied_flag,
26510 qplatpr.attribute_level product_attribute_level,
26511 qplatpr.attribute_type product_attribute_type,
26512 qplatpr.context product_attribute_context,
26513 qplatpr.attribute product_attribute,
26514 qplatpr.value_from product_attr_value,
26515 qpprod.product_uom_code product_uom_code,
26516 qpprod.excluder_flag,
26517 qplatq.context qualifier_attribute_context,
26518 qplatq.attribute qualifier_attribute,
26519 qplatq.value_from qualifier_attribute_value,
26520 qpq.qualifier_grouping_no qualifier_grouping_no,
26521 qpq.qualifier_precedence qualifier_precedence,
26522 qpq.qualifier_datatype,
26523 qpq.qualifier_attr_value setup_value_from,
26524 qpq.qualifier_attr_value_to setup_value_to,
26525 qpl.automatic_flag,
26526 qpl.modifier_level_code,
26527 qpl.primary_uom_flag,
26528 qpl.arithmetic_operator operand_calculation_code,
26529 qpl.operand operand_value,
26530 qpl.pricing_group_sequence,
26531 qph.list_type_code created_from_list_type,
26532 qph.rounding_factor,
26533 qpl.pricing_phase_id,
26534 qpl.price_break_type_code,
26535 qpl.incompatibility_grp_code,
26536 qpl.price_by_formula_id,
26537 qpl.product_precedence,
26538 qpl.list_line_no,
26539 'HQ' QUALIFIER_TYPE,
26540 qplatpc.attribute_level pricing_attribute_level,
26541 qplatpc.attribute_type pricing_attribute_type,
26542 qplatpc.context pricing_attribute_context,
26543 qplatpc.attribute pricing_attribute,
26544 qplatpc.value_from pricing_attr_value,
26545 qpprod.pricing_attr_value_from pricing_setup_value_from,
26546 qpprod.pricing_attr_value_to pricing_setup_value_to,
26547 qpprod.comparison_operator_code pricing_comparison_operator,
26548 qpprod.pricing_attribute_datatype pricing_datatype
26549 ,QPL.BREAK_UOM_CODE /* Proration */
26550 ,QPL.BREAK_UOM_CONTEXT /* Proration */
26551 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
26552 FROM --[julin/5007789]
26553 (SELECT /*+ dynamic_sampling(1) */ *
26554 FROM qp_npreq_lines_tmp
26555 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
26556 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
26557 qp_npreq_line_attrs_tmp qplatq,
26558 qp_qualifiers qpq ,
26559 qp_list_headers_b qph,
26560 qp_price_req_sources_v qprs,
26561 qp_npreq_line_attrs_tmp qplatpr,
26562 qp_pricing_attributes qpprod ,
26563 qp_npreq_line_attrs_tmp qplatpc,
26564 qp_list_lines qpl
26565 WHERE qph.list_header_id = qpq.list_header_id
26566 -- 3594459, context and attribute OR'd together
26567 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
26568 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
26569 AND (qplines.price_flag = G_YES OR
26570 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
26571 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
26572 AND qph.list_header_id = qpl.list_header_id
26573 --added for moac -- commented references to security profile
26574 --security will be built into qp_list_headers_b
26575 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
26576 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
26577 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
26578 AND qpq.list_line_id = -1
26579 AND qpl.list_line_id = qpprod.list_line_id
26580 AND qph.currency_code = qplines.currency_code
26581 AND qpl.modifier_level_code = qplines.line_type_code
26582 AND qph.active_flag = G_YES
26583 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26584 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
26585 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
26586 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26587 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
26588 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
26589 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26590 nvl(qpq.start_date_active, qplines.pricing_effective_date) and
26591 nvl(qpq.end_date_active,qplines.pricing_effective_date)
26592 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
26593 AND qpq.qualifier_context = qplatq.context
26594 AND qpq.qualifier_attribute = qplatq.attribute
26595 AND qpq.comparison_operator_code = 'NOT =' --[julin/5007789]
26596 AND qpq.active_flag = G_YES
26597 AND qplatq.value_from <> qpq.qualifier_attr_value --[julin/5007789]
26598 AND qpprod.pricing_phase_id = p_pricing_phase_id
26599 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
26600 AND qpprod.product_attribute_context = qplatpr.context
26601 AND qpprod.product_attribute = qplatpr.attribute
26602 AND qpprod.product_attr_value = qplatpr.value_from
26603 AND qpprod.excluder_flag = G_NO
26604 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
26605 AND qpprod.pricing_attribute_context = qplatpc.context
26606 AND qpprod.pricing_attribute = qplatpc.attribute
26607 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
26608 or qpprod.comparison_operator_code = G_OPERATOR_BETWEEN)
26609 AND qplatq.line_index = qplatpc.line_index
26610 AND qplatq.line_index = qplines.line_index
26611 AND qplatpc.line_index = qplatpr.line_index
26612 AND qph.source_system_code = qprs.source_system_code
26613 AND qplines.request_type_code = qprs.request_type_code
26614 AND qplatpr.line_index = qplines.line_index --[julin/4708044]
26615 AND qplatpr.attribute_type='PRODUCT'
26616 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
26617 AND qplatpc.attribute_type = 'PRICING'
26618 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED
26619 AND qplatq.attribute_type = 'QUALIFIER'
26620 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
26621 --AND qplatq.pricing_attr_flag = G_YES --[julin/4708044] wrong table, currently not reliable value, not used in index
26622 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
26623 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
26624 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
26625 UNION ALL
26626 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPLATPC QPL)
26627 index(qplatpc QP_PREQ_LINE_ATTRS_TMP_N2)
26628 index(qplatq QP_PREQ_LINE_ATTRS_TMP_N1)
26629 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
26630 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
26631 INDEX(QPQ QP_QUALIFIERS_N6)
26632 l_prod_qual_pric_cur_pl */
26633 qpl.list_header_id,
26634 qpl.list_line_id,
26635 qpl.list_line_type_code,
26636 qplatpr.line_index,
26637 qplatpr.applied_flag,
26638 qplatpr.attribute_level product_attribute_level,
26639 qplatpr.attribute_type product_attribute_type,
26640 qplatpr.context product_attribute_context,
26641 qplatpr.attribute product_attribute,
26642 qplatpr.value_from product_attr_value,
26643 qpprod.product_uom_code product_uom_code,
26644 qpprod.excluder_flag,
26645 qplatq.context qualifier_attribute_context,
26646 qplatq.attribute qualifier_attribute,
26647 qplatq.value_from qualifier_attribute_value,
26648 qpq.qualifier_grouping_no qualifier_grouping_no,
26649 qpq.qualifier_precedence qualifier_precedence,
26650 qpq.qualifier_datatype,
26651 qpq.qualifier_attr_value setup_value_from,
26652 qpq.qualifier_attr_value_to setup_value_to,
26653 qpl.automatic_flag,
26654 qpl.modifier_level_code,
26655 qpl.primary_uom_flag,
26656 qpl.arithmetic_operator operand_calculation_code,
26657 qpl.operand operand_value,
26658 qpl.pricing_group_sequence,
26659 qph.list_type_code created_from_list_type,
26660 qph.rounding_factor,
26661 qpl.pricing_phase_id,
26662 qpl.price_break_type_code,
26663 qpl.incompatibility_grp_code,
26664 qpl.price_by_formula_id,
26665 qpl.product_precedence,
26666 qpl.list_line_no,
26667 'HQ' QUALIFIER_TYPE,
26668 qplatpc.attribute_level pricing_attribute_level,
26669 qplatpc.attribute_type pricing_attribute_type,
26670 qplatpc.context pricing_attribute_context,
26671 qplatpc.attribute pricing_attribute,
26672 qplatpc.value_from pricing_attr_value,
26673 qpprod.pricing_attr_value_from pricing_setup_value_from,
26674 qpprod.pricing_attr_value_to pricing_setup_value_to,
26675 qpprod.comparison_operator_code pricing_comparison_operator,
26676 qpprod.pricing_attribute_datatype pricing_datatype
26677 ,QPL.BREAK_UOM_CODE /* Proration */
26678 ,QPL.BREAK_UOM_CONTEXT /* Proration */
26679 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
26680 FROM --[julin/5007789]
26681 (SELECT /*+ dynamic_sampling(1) */ *
26682 FROM qp_npreq_lines_tmp
26683 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
26684 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
26685 qp_npreq_line_attrs_tmp qplatq,
26686 qp_qualifiers qpq ,
26687 qp_list_headers_b qph,
26688 qp_price_req_sources_v qprs,
26689 qp_npreq_line_attrs_tmp qplatpr,
26690 qp_pricing_attributes qpprod ,
26691 qp_npreq_line_attrs_tmp qplatpc,
26692 qp_list_lines qpl
26693 WHERE qph.list_header_id = qpq.list_header_id
26694 -- 3594459, context and attribute OR'd together
26695 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
26696 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
26697 AND (qplines.price_flag = G_YES OR
26698 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
26699 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
26700 AND qph.list_header_id = qpl.list_header_id
26701 --added for moac -- commented references to security profile
26702 --security will be built into qp_list_headers_b
26703 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
26704 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
26705 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
26706 AND qpq.list_line_id = -1
26707 AND qpl.list_line_id = qpprod.list_line_id
26708 AND qph.currency_code = qplines.currency_code
26709 AND qpl.modifier_level_code = qplines.line_type_code
26710 AND qph.active_flag = G_YES
26711 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26712 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
26713 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
26714 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26715 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
26716 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
26717 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26718 nvl(qpq.start_date_active, qplines.pricing_effective_date) and
26719 nvl(qpq.end_date_active,qplines.pricing_effective_date)
26720 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
26721 AND qpq.qualifier_context = qplatq.context
26722 AND qpq.qualifier_attribute = qplatq.attribute
26723 AND qpq.comparison_operator_code = G_OPERATOR_BETWEEN --[julin/5007789]
26724 AND qpq.active_flag = G_YES
26725 and ((qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y) --[julin/5007789]
26726 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to)
26727 or
26728 (qpq.qualifier_datatype = G_NUMERIC
26729 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
26730 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number))
26731 AND qpprod.pricing_phase_id = p_pricing_phase_id
26732 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
26733 AND qpprod.product_attribute_context = qplatpr.context
26734 AND qpprod.product_attribute = qplatpr.attribute
26735 AND qpprod.product_attr_value = qplatpr.value_from
26736 AND qpprod.excluder_flag = G_NO
26737 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
26738 AND qpprod.pricing_attribute_context = qplatpc.context
26739 AND qpprod.pricing_attribute = qplatpc.attribute
26740 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
26741 or qpprod.comparison_operator_code = G_OPERATOR_BETWEEN)
26742 AND qplatq.line_index = qplatpc.line_index
26743 AND qplatq.line_index = qplines.line_index
26744 AND qplatpc.line_index = qplatpr.line_index
26745 AND qph.source_system_code = qprs.source_system_code
26746 AND qplines.request_type_code = qprs.request_type_code
26747 AND qplatpr.line_index = qplines.line_index --[julin/4708044]
26748 AND qplatpr.attribute_type='PRODUCT'
26749 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
26750 AND qplatpc.attribute_type = 'PRICING'
26751 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED
26752 AND qplatq.attribute_type = 'QUALIFIER'
26753 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
26754 --AND qplatq.pricing_attr_flag = G_YES --[julin/4708044] wrong table, currently not reliable value, not used in index
26755 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
26756 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
26757 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
26758 ORDER BY 4,2;
26759
26760 --Added INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5) for 3259932
26761 --[julin/4708044] added index(qplapr QP_PREQ_LINE_ATTRS_TMP_N1), use_nl(qprs)
26762 --[julin/5007789]
26763 -- 1. Performing line filter first.
26764 -- 2. Performing qualifier filter before product filter
26765 -- 3. Split into unions ('=', 'BETWEEN', 'NOT =') for better use of indexes
26766 CURSOR l_prod_qual_pric_cur_currency(p_pricing_phase_id NUMBER) IS
26767 --Product+Qualifiers+Pricing
26768 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPLATPC QPL)
26769 index(qplatpc QP_PREQ_LINE_ATTRS_TMP_N2)
26770 index(qplatq QP_PREQ_LINE_ATTRS_TMP_N1)
26771 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
26772 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
26773 INDEX(QPQ QP_QUALIFIERS_N4)
26774 l_prod_qual_pric_cur_pl */
26775 qpl.list_header_id,
26776 qpl.list_line_id,
26777 qpl.list_line_type_code,
26778 qplatpr.line_index,
26779 qplatpr.applied_flag,
26780 qplatpr.attribute_level product_attribute_level,
26781 qplatpr.attribute_type product_attribute_type,
26782 qplatpr.context product_attribute_context,
26783 qplatpr.attribute product_attribute,
26784 qplatpr.value_from product_attr_value,
26785 qpprod.product_uom_code product_uom_code,
26786 qpprod.excluder_flag,
26787 qplatq.context qualifier_attribute_context,
26788 qplatq.attribute qualifier_attribute,
26789 qplatq.value_from qualifier_attribute_value,
26790 qpq.qualifier_grouping_no qualifier_grouping_no,
26791 qpq.qualifier_precedence qualifier_precedence,
26792 qpq.qualifier_datatype,
26793 qpq.qualifier_attr_value setup_value_from,
26794 qpq.qualifier_attr_value_to setup_value_to,
26795 qpl.automatic_flag,
26796 qpl.modifier_level_code,
26797 qpl.primary_uom_flag,
26798 qpl.arithmetic_operator operand_calculation_code,
26799 qpl.operand operand_value,
26800 qpl.pricing_group_sequence,
26801 qph.list_type_code created_from_list_type,
26802 qph.rounding_factor,
26803 qpl.pricing_phase_id,
26804 qpl.price_break_type_code,
26805 qpl.incompatibility_grp_code,
26806 qpl.price_by_formula_id,
26807 qpl.product_precedence,
26808 qpl.list_line_no,
26809 'HQ' QUALIFIER_TYPE,
26810 qplatpc.attribute_level pricing_attribute_level,
26811 qplatpc.attribute_type pricing_attribute_type,
26812 qplatpc.context pricing_attribute_context,
26813 qplatpc.attribute pricing_attribute,
26814 qplatpc.value_from pricing_attr_value,
26815 qpprod.pricing_attr_value_from pricing_setup_value_from,
26816 qpprod.pricing_attr_value_to pricing_setup_value_to,
26817 qpprod.comparison_operator_code pricing_comparison_operator,
26818 qpprod.pricing_attribute_datatype pricing_datatype,
26819 qcdt.currency_detail_id,
26820 qcdt.currency_header_id,
26821 qcdt.selling_rounding_factor,
26822 qplines.currency_code order_currency,
26823 qplines.pricing_effective_date pricing_effective_date,
26824 qph.currency_code base_currency_code
26825 ,QPL.BREAK_UOM_CODE /* Proration */
26826 ,QPL.BREAK_UOM_CONTEXT /* Proration */
26827 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
26828 FROM --[julin/5007789]
26829 (SELECT /*+ dynamic_sampling(1) */ *
26830 FROM qp_npreq_lines_tmp
26831 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
26832 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
26833 qp_npreq_line_attrs_tmp qplatq,
26834 qp_qualifiers qpq ,
26835 qp_list_headers_b qph,
26836 qp_price_req_sources_v qprs,
26837 qp_npreq_line_attrs_tmp qplatpr,
26838 qp_pricing_attributes qpprod ,
26839 qp_npreq_line_attrs_tmp qplatpc,
26840 qp_list_lines qpl,
26841 qp_currency_details qcdt
26842 WHERE qph.list_header_id = qpq.list_header_id
26843 -- 3594459, context and attribute OR'd together
26844 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
26845 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
26846 --added for moac -- commented references to security profile
26847 --security will be built into qp_list_headers_b
26848 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
26849 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
26850 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
26851 AND (qplines.price_flag = G_YES OR
26852 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
26853 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
26854 AND qph.list_header_id = qpl.list_header_id
26855 AND qpq.list_line_id = -1
26856 AND qpl.list_line_id = qpprod.list_line_id
26857 --AND qph.currency_code = qplines.currency_code
26858 AND qph.currency_header_id = qcdt.currency_header_id
26859 AND qplines.currency_code = qcdt.to_currency_code
26860 AND qplines.pricing_effective_date between
26861 nvl(trunc(qcdt.start_date_active),qplines.pricing_effective_date)
26862 and nvl(trunc(qcdt.end_date_active),qplines.pricing_effective_date)
26863 AND (
26864 (qcdt.curr_attribute_context is null
26865 and not exists
26866 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
26867 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
26868 where qcdt1.curr_attribute_context IS NOT NULL
26869 and qcdt1.curr_attribute_context = pa_tmp.context
26870 and qcdt1.curr_attribute = pa_tmp.attribute
26871 and qcdt1.curr_attribute_value = pa_tmp.value_from
26872 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
26873 and qcdt1.to_currency_code = qcdt.to_currency_code
26874 and qcdt1.currency_header_id = qcdt.currency_header_id
26875 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
26876 and pa_tmp.line_index = qplines.line_index
26877 and qplines.pricing_effective_date between
26878 nvl(trunc(qcdt1.start_date_active),qplines.pricing_effective_date)
26879 and nvl(trunc(qcdt1.end_date_active),qplines.pricing_effective_date)))
26880 OR
26881 (qcdt.curr_attribute_context is not null
26882 and qcdt.precedence =
26883 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
26884 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
26885 where qcdt2.curr_attribute_context IS NOT NULL
26886 and qcdt2.curr_attribute_context = pa_tmp1.context
26887 and qcdt2.curr_attribute = pa_tmp1.attribute
26888 and qcdt2.curr_attribute_value = pa_tmp1.value_from
26889 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
26890 and qcdt2.to_currency_code = qcdt.to_currency_code
26891 and qcdt2.currency_header_id = qcdt.currency_header_id
26892 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
26893 and pa_tmp1.line_index = qplines.line_index
26894 and qplines.pricing_effective_date between
26895 nvl(trunc(qcdt2.start_date_active),qplines.pricing_effective_date)
26896 and nvl(trunc(qcdt2.end_date_active),qplines.pricing_effective_date)
26897 )))
26898 AND qpl.modifier_level_code = qplines.line_type_code
26899 AND qph.active_flag = G_YES
26900 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26901 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
26902 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
26903 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26904 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
26905 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
26906 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
26907 nvl(qpq.start_date_active, qplines.pricing_effective_date) and
26908 nvl(qpq.end_date_active,qplines.pricing_effective_date)
26909 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
26910 AND qpq.qualifier_context = qplatq.context
26911 AND qpq.qualifier_attribute = qplatq.attribute
26912 AND qpq.comparison_operator_code = '=' --[julin/5007789]
26913 AND qplatq.value_from = qpq.qualifier_attr_value --bug#1761272 Multiple NOT =, [julin/5007789]
26914 AND qpq.active_flag = G_YES
26915 AND qpprod.pricing_phase_id = p_pricing_phase_id
26916 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
26917 AND qpprod.product_attribute_context = qplatpr.context
26918 AND qpprod.product_attribute = qplatpr.attribute
26919 AND qpprod.product_attr_value = qplatpr.value_from
26920 AND qpprod.excluder_flag = G_NO
26921 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
26922 AND qpprod.pricing_attribute_context = qplatpc.context
26923 AND qpprod.pricing_attribute = qplatpc.attribute
26924 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
26925 or qpprod.comparison_operator_code = G_OPERATOR_BETWEEN)
26926 AND qplatq.line_index = qplatpc.line_index
26927 AND qplatq.line_index = qplines.line_index
26928 AND qplatpc.line_index = qplatpr.line_index
26929 AND qph.source_system_code = qprs.source_system_code
26930 AND qplines.request_type_code = qprs.request_type_code
26931 AND qplatpr.line_index = qplines.line_index --[julin/4708044]
26932 AND qplatpr.attribute_type='PRODUCT'
26933 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
26934 AND qplatpc.attribute_type = 'PRICING'
26935 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED
26936 AND qplatq.attribute_type = 'QUALIFIER'
26937 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
26938 --AND qplatq.pricing_attr_flag = G_YES --[julin/4708044] wrong table, currently not reliable value, not used in index
26939 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
26940 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
26941 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
26942 UNION ALL
26943 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPLATPC QPL)
26944 index(qplatpc QP_PREQ_LINE_ATTRS_TMP_N2)
26945 index(qplatq QP_PREQ_LINE_ATTRS_TMP_N1)
26946 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
26947 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
26948 INDEX(QPQ QP_QUALIFIERS_N5)
26949 l_prod_qual_pric_cur_pl */
26950 qpl.list_header_id,
26951 qpl.list_line_id,
26952 qpl.list_line_type_code,
26953 qplatpr.line_index,
26954 qplatpr.applied_flag,
26955 qplatpr.attribute_level product_attribute_level,
26956 qplatpr.attribute_type product_attribute_type,
26957 qplatpr.context product_attribute_context,
26958 qplatpr.attribute product_attribute,
26959 qplatpr.value_from product_attr_value,
26960 qpprod.product_uom_code product_uom_code,
26961 qpprod.excluder_flag,
26962 qplatq.context qualifier_attribute_context,
26963 qplatq.attribute qualifier_attribute,
26964 qplatq.value_from qualifier_attribute_value,
26965 qpq.qualifier_grouping_no qualifier_grouping_no,
26966 qpq.qualifier_precedence qualifier_precedence,
26967 qpq.qualifier_datatype,
26968 qpq.qualifier_attr_value setup_value_from,
26969 qpq.qualifier_attr_value_to setup_value_to,
26970 qpl.automatic_flag,
26971 qpl.modifier_level_code,
26972 qpl.primary_uom_flag,
26973 qpl.arithmetic_operator operand_calculation_code,
26974 qpl.operand operand_value,
26975 qpl.pricing_group_sequence,
26976 qph.list_type_code created_from_list_type,
26977 qph.rounding_factor,
26978 qpl.pricing_phase_id,
26979 qpl.price_break_type_code,
26980 qpl.incompatibility_grp_code,
26981 qpl.price_by_formula_id,
26982 qpl.product_precedence,
26983 qpl.list_line_no,
26984 'HQ' QUALIFIER_TYPE,
26985 qplatpc.attribute_level pricing_attribute_level,
26986 qplatpc.attribute_type pricing_attribute_type,
26987 qplatpc.context pricing_attribute_context,
26988 qplatpc.attribute pricing_attribute,
26989 qplatpc.value_from pricing_attr_value,
26990 qpprod.pricing_attr_value_from pricing_setup_value_from,
26991 qpprod.pricing_attr_value_to pricing_setup_value_to,
26992 qpprod.comparison_operator_code pricing_comparison_operator,
26993 qpprod.pricing_attribute_datatype pricing_datatype,
26994 qcdt.currency_detail_id,
26995 qcdt.currency_header_id,
26996 qcdt.selling_rounding_factor,
26997 qplines.currency_code order_currency,
26998 qplines.pricing_effective_date pricing_effective_date,
26999 qph.currency_code base_currency_code
27000 ,QPL.BREAK_UOM_CODE /* Proration */
27001 ,QPL.BREAK_UOM_CONTEXT /* Proration */
27002 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
27003 FROM --[julin/5007789]
27004 (SELECT /*+ dynamic_sampling(1) */ *
27005 FROM qp_npreq_lines_tmp
27006 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
27007 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
27008 qp_npreq_line_attrs_tmp qplatq,
27009 qp_qualifiers qpq ,
27010 qp_list_headers_b qph,
27011 qp_price_req_sources_v qprs,
27012 qp_npreq_line_attrs_tmp qplatpr,
27013 qp_pricing_attributes qpprod ,
27014 qp_npreq_line_attrs_tmp qplatpc,
27015 qp_list_lines qpl,
27016 qp_currency_details qcdt
27017 WHERE qph.list_header_id = qpq.list_header_id
27018 -- 3594459, context and attribute OR'd together
27019 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
27020 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
27021 --added for moac -- commented references to security profile
27022 --security will be built into qp_list_headers_b
27023 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
27024 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
27025 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
27026 AND (qplines.price_flag = G_YES OR
27027 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
27028 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
27029 AND qph.list_header_id = qpl.list_header_id
27030 AND qpq.list_line_id = -1
27031 AND qpl.list_line_id = qpprod.list_line_id
27032 --AND qph.currency_code = qplines.currency_code
27033 AND qph.currency_header_id = qcdt.currency_header_id
27034 AND qplines.currency_code = qcdt.to_currency_code
27035 AND qplines.pricing_effective_date between
27036 nvl(trunc(qcdt.start_date_active),qplines.pricing_effective_date)
27037 and nvl(trunc(qcdt.end_date_active),qplines.pricing_effective_date)
27038 AND (
27039 (qcdt.curr_attribute_context is null
27040 and not exists
27041 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
27042 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
27043 where qcdt1.curr_attribute_context IS NOT NULL
27044 and qcdt1.curr_attribute_context = pa_tmp.context
27045 and qcdt1.curr_attribute = pa_tmp.attribute
27046 and qcdt1.curr_attribute_value = pa_tmp.value_from
27047 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
27048 and qcdt1.to_currency_code = qcdt.to_currency_code
27049 and qcdt1.currency_header_id = qcdt.currency_header_id
27050 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
27051 and pa_tmp.line_index = qplines.line_index
27052 and qplines.pricing_effective_date between
27053 nvl(trunc(qcdt1.start_date_active),qplines.pricing_effective_date)
27054 and nvl(trunc(qcdt1.end_date_active),qplines.pricing_effective_date)))
27055 OR
27056 (qcdt.curr_attribute_context is not null
27057 and qcdt.precedence =
27058 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
27059 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
27060 where qcdt2.curr_attribute_context IS NOT NULL
27061 and qcdt2.curr_attribute_context = pa_tmp1.context
27062 and qcdt2.curr_attribute = pa_tmp1.attribute
27063 and qcdt2.curr_attribute_value = pa_tmp1.value_from
27064 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
27065 and qcdt2.to_currency_code = qcdt.to_currency_code
27066 and qcdt2.currency_header_id = qcdt.currency_header_id
27067 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
27068 and pa_tmp1.line_index = qplines.line_index
27069 and qplines.pricing_effective_date between
27070 nvl(trunc(qcdt2.start_date_active),qplines.pricing_effective_date)
27071 and nvl(trunc(qcdt2.end_date_active),qplines.pricing_effective_date)
27072 )))
27073 AND qpl.modifier_level_code = qplines.line_type_code
27074 AND qph.active_flag = G_YES
27075 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
27076 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
27077 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
27078 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
27079 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
27080 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
27081 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
27082 nvl(qpq.start_date_active, qplines.pricing_effective_date) and
27083 nvl(qpq.end_date_active,qplines.pricing_effective_date)
27084 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
27085 AND qpq.qualifier_context = qplatq.context
27086 AND qpq.qualifier_attribute = qplatq.attribute
27087 AND qpq.comparison_operator_code = 'NOT =' --[julin/5007789]
27088 AND qpq.active_flag = G_YES
27089 AND qplatq.value_from <> qpq.qualifier_attr_value --[julin/5007789]
27090 AND qpprod.pricing_phase_id = p_pricing_phase_id
27091 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
27092 AND qpprod.product_attribute_context = qplatpr.context
27093 AND qpprod.product_attribute = qplatpr.attribute
27094 AND qpprod.product_attr_value = qplatpr.value_from
27095 AND qpprod.excluder_flag = G_NO
27096 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
27097 AND qpprod.pricing_attribute_context = qplatpc.context
27098 AND qpprod.pricing_attribute = qplatpc.attribute
27099 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
27100 or qpprod.comparison_operator_code = G_OPERATOR_BETWEEN)
27101 AND qplatq.line_index = qplatpc.line_index
27102 AND qplatq.line_index = qplines.line_index
27103 AND qplatpc.line_index = qplatpr.line_index
27104 AND qph.source_system_code = qprs.source_system_code
27105 AND qplines.request_type_code = qprs.request_type_code
27106 AND qplatpr.line_index = qplines.line_index --[julin/4708044]
27107 AND qplatpr.attribute_type='PRODUCT'
27108 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
27109 AND qplatpc.attribute_type = 'PRICING'
27110 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED
27111 AND qplatq.attribute_type = 'QUALIFIER'
27112 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
27113 --AND qplatq.pricing_attr_flag = G_YES --[julin/4708044] wrong table, currently not reliable value, not used in index
27114 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
27115 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
27116 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
27117 UNION ALL
27118 SELECT /*+ ORDERED USE_NL(QPLATQ QPQ QPH QPRS QPLATPR QPPROD QPLATPC QPL)
27119 index(qplatpc QP_PREQ_LINE_ATTRS_TMP_N2)
27120 index(qplatq QP_PREQ_LINE_ATTRS_TMP_N1)
27121 INDEX(QPLAPR QP_PREQ_LINE_ATTRS_TMP_N1)
27122 INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5)
27123 INDEX(QPQ QP_QUALIFIERS_N6)
27124 l_prod_qual_pric_cur_pl */
27125 qpl.list_header_id,
27126 qpl.list_line_id,
27127 qpl.list_line_type_code,
27128 qplatpr.line_index,
27129 qplatpr.applied_flag,
27130 qplatpr.attribute_level product_attribute_level,
27131 qplatpr.attribute_type product_attribute_type,
27132 qplatpr.context product_attribute_context,
27133 qplatpr.attribute product_attribute,
27134 qplatpr.value_from product_attr_value,
27135 qpprod.product_uom_code product_uom_code,
27136 qpprod.excluder_flag,
27137 qplatq.context qualifier_attribute_context,
27138 qplatq.attribute qualifier_attribute,
27139 qplatq.value_from qualifier_attribute_value,
27140 qpq.qualifier_grouping_no qualifier_grouping_no,
27141 qpq.qualifier_precedence qualifier_precedence,
27142 qpq.qualifier_datatype,
27143 qpq.qualifier_attr_value setup_value_from,
27144 qpq.qualifier_attr_value_to setup_value_to,
27145 qpl.automatic_flag,
27146 qpl.modifier_level_code,
27147 qpl.primary_uom_flag,
27148 qpl.arithmetic_operator operand_calculation_code,
27149 qpl.operand operand_value,
27150 qpl.pricing_group_sequence,
27151 qph.list_type_code created_from_list_type,
27152 qph.rounding_factor,
27153 qpl.pricing_phase_id,
27154 qpl.price_break_type_code,
27155 qpl.incompatibility_grp_code,
27156 qpl.price_by_formula_id,
27157 qpl.product_precedence,
27158 qpl.list_line_no,
27159 'HQ' QUALIFIER_TYPE,
27160 qplatpc.attribute_level pricing_attribute_level,
27161 qplatpc.attribute_type pricing_attribute_type,
27162 qplatpc.context pricing_attribute_context,
27163 qplatpc.attribute pricing_attribute,
27164 qplatpc.value_from pricing_attr_value,
27165 qpprod.pricing_attr_value_from pricing_setup_value_from,
27166 qpprod.pricing_attr_value_to pricing_setup_value_to,
27167 qpprod.comparison_operator_code pricing_comparison_operator,
27168 qpprod.pricing_attribute_datatype pricing_datatype,
27169 qcdt.currency_detail_id,
27170 qcdt.currency_header_id,
27171 qcdt.selling_rounding_factor,
27172 qplines.currency_code order_currency,
27173 qplines.pricing_effective_date pricing_effective_date,
27174 qph.currency_code base_currency_code
27175 ,QPL.BREAK_UOM_CODE /* Proration */
27176 ,QPL.BREAK_UOM_CONTEXT /* Proration */
27177 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
27178 FROM --[julin/5007789]
27179 (SELECT /*+ dynamic_sampling(1) */ *
27180 FROM qp_npreq_lines_tmp
27181 WHERE processed_code IN (G_STS_LHS_NOT_FOUND, G_NO_LIST_PASSED)
27182 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
27183 qp_npreq_line_attrs_tmp qplatq,
27184 qp_qualifiers qpq ,
27185 qp_list_headers_b qph,
27186 qp_price_req_sources_v qprs,
27187 qp_npreq_line_attrs_tmp qplatpr,
27188 qp_pricing_attributes qpprod ,
27189 qp_npreq_line_attrs_tmp qplatpc,
27190 qp_list_lines qpl,
27191 qp_currency_details qcdt
27192 WHERE qph.list_header_id = qpq.list_header_id
27193 -- 3594459, context and attribute OR'd together
27194 AND (qpq.qualifier_context <> G_LIST_HEADER_CONTEXT --bug 2799670
27195 OR qpq.qualifier_attribute <> G_PRICELIST_ATTRIBUTE) --bug 2799670
27196 --added for moac -- commented references to security profile
27197 --security will be built into qp_list_headers_b
27198 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
27199 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
27200 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
27201 AND (qplines.price_flag = G_YES OR
27202 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
27203 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
27204 AND qph.list_header_id = qpl.list_header_id
27205 AND qpq.list_line_id = -1
27206 AND qpl.list_line_id = qpprod.list_line_id
27207 --AND qph.currency_code = qplines.currency_code
27208 AND qph.currency_header_id = qcdt.currency_header_id
27209 AND qplines.currency_code = qcdt.to_currency_code
27210 AND qplines.pricing_effective_date between
27211 nvl(trunc(qcdt.start_date_active),qplines.pricing_effective_date)
27212 and nvl(trunc(qcdt.end_date_active),qplines.pricing_effective_date)
27213 AND (
27214 (qcdt.curr_attribute_context is null
27215 and not exists
27216 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
27217 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
27218 where qcdt1.curr_attribute_context IS NOT NULL
27219 and qcdt1.curr_attribute_context = pa_tmp.context
27220 and qcdt1.curr_attribute = pa_tmp.attribute
27221 and qcdt1.curr_attribute_value = pa_tmp.value_from
27222 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
27223 and qcdt1.to_currency_code = qcdt.to_currency_code
27224 and qcdt1.currency_header_id = qcdt.currency_header_id
27225 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
27226 and pa_tmp.line_index = qplines.line_index
27227 and qplines.pricing_effective_date between
27228 nvl(trunc(qcdt1.start_date_active),qplines.pricing_effective_date)
27229 and nvl(trunc(qcdt1.end_date_active),qplines.pricing_effective_date)))
27230 OR
27231 (qcdt.curr_attribute_context is not null
27232 and qcdt.precedence =
27233 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
27234 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
27235 where qcdt2.curr_attribute_context IS NOT NULL
27236 and qcdt2.curr_attribute_context = pa_tmp1.context
27237 and qcdt2.curr_attribute = pa_tmp1.attribute
27238 and qcdt2.curr_attribute_value = pa_tmp1.value_from
27239 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
27240 and qcdt2.to_currency_code = qcdt.to_currency_code
27241 and qcdt2.currency_header_id = qcdt.currency_header_id
27242 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
27243 and pa_tmp1.line_index = qplines.line_index
27244 and qplines.pricing_effective_date between
27245 nvl(trunc(qcdt2.start_date_active),qplines.pricing_effective_date)
27246 and nvl(trunc(qcdt2.end_date_active),qplines.pricing_effective_date)
27247 )))
27248 AND qpl.modifier_level_code = qplines.line_type_code
27249 AND qph.active_flag = G_YES
27250 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
27251 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
27252 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
27253 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
27254 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
27255 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
27256 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
27257 nvl(qpq.start_date_active, qplines.pricing_effective_date) and
27258 nvl(qpq.end_date_active,qplines.pricing_effective_date)
27259 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
27260 AND qpq.qualifier_context = qplatq.context
27261 AND qpq.qualifier_attribute = qplatq.attribute
27262 AND qpq.comparison_operator_code = G_OPERATOR_BETWEEN --[julin/5007789]
27263 AND qpq.active_flag = G_YES
27264 and ((qpq.qualifier_datatype IN (G_VARCHAR,G_DATE_X,G_DATE_Y) --[julin/5007789]
27265 and qplatq.value_from between qpq.qualifier_attr_value and qpq.qualifier_attr_value_to)
27266 or
27267 (qpq.qualifier_datatype = G_NUMERIC
27268 and qp_number.canonical_to_number(decode(qpq.qualifier_datatype,G_NUMERIC,qplatq.value_from,null))
27269 between qpq.qual_attr_value_from_number and qpq.qual_attr_value_to_number))
27270 AND qpprod.pricing_phase_id = p_pricing_phase_id
27271 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_HDR_QUAL_IND
27272 AND qpprod.product_attribute_context = qplatpr.context
27273 AND qpprod.product_attribute = qplatpr.attribute
27274 AND qpprod.product_attr_value = qplatpr.value_from
27275 AND qpprod.excluder_flag = G_NO
27276 AND qpprod.list_header_id = qph.list_header_id --[julin/5007789]
27277 AND qpprod.pricing_attribute_context = qplatpc.context
27278 AND qpprod.pricing_attribute = qplatpc.attribute
27279 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
27280 or qpprod.comparison_operator_code = G_OPERATOR_BETWEEN)
27281 AND qplatq.line_index = qplatpc.line_index
27282 AND qplatq.line_index = qplines.line_index
27283 AND qplatpc.line_index = qplatpr.line_index
27284 AND qph.source_system_code = qprs.source_system_code
27285 AND qplines.request_type_code = qprs.request_type_code
27286 AND qplatpr.line_index = qplines.line_index --[julin/4708044]
27287 AND qplatpr.attribute_type='PRODUCT'
27288 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
27289 AND qplatpc.attribute_type = 'PRICING'
27290 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED
27291 AND qplatq.attribute_type = 'QUALIFIER'
27292 AND qplatq.pricing_status_code = G_STATUS_UNCHANGED
27293 --AND qplatq.pricing_attr_flag = G_YES --[julin/4708044] wrong table, currently not reliable value, not used in index
27294 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
27295 AND ((nvl(qplatq.DERIVED_QUALIFIER_FLAG,'N') ='N' )
27296 OR (qplatq.DERIVED_QUALIFIER_FLAG ='Y' AND qpq.QUALIFY_HIER_DESCENDENTS_FLAG ='Y')) -- Added for TCA
27297 ORDER BY 4,2;
27298
27299 --[julin/5007789] Tuned query as follows:
27300 -- 1. Performing line filter first.
27301 -- 2. Merged qplatpr subquery conditions into main where clause.
27302 CURSOR l_prod_cur (p_pricing_phase_id NUMBER) IS
27303 -- Only Product attributes
27304 SELECT /*+ ORDERED USE_NL(QPLATPR QPPROD QPL QPH QPRS) index(qplatpr QP_PREQ_LINE_ATTRS_TMP_N1) l_prod_cur_pl */
27305 qpl.list_header_id,
27306 qpl.list_line_id,
27307 qpl.list_line_type_code,
27308 qplatpr.line_index,
27309 qplatpr.applied_flag,
27310 qplatpr.attribute_level product_attribute_level,
27311 qplatpr.attribute_type product_attribute_type,
27312 qplatpr.context product_attribute_context,
27313 qplatpr.attribute product_attribute,
27314 qplatpr.value_from product_attr_value,
27315 qpprod.product_uom_code product_uom_code,
27316 qpprod.excluder_flag,
27317 qpl.automatic_flag,
27318 qpl.modifier_level_code,
27319 qpl.primary_uom_flag,
27320 qpl.arithmetic_operator operand_calculation_code,
27321 qpl.operand operand_value,
27322 qpl.pricing_group_sequence,
27323 qph.list_type_code created_from_list_type,
27324 qph.rounding_factor,
27325 qpl.pricing_phase_id,
27326 qpl.price_break_type_code,
27327 qpl.incompatibility_grp_code,
27328 qpl.price_by_formula_id,
27329 qpl.product_precedence,
27330 qpl.list_line_no
27331 ,QPL.BREAK_UOM_CODE /* Proration */
27332 ,QPL.BREAK_UOM_CONTEXT /* Proration */
27333 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
27334 FROM --[julin/5000789]
27335 (SELECT /*+ dynamic_sampling(1) */ *
27336 FROM qp_npreq_lines_tmp
27337 WHERE processed_code IN (G_STS_LHS_NOT_FOUND,G_NO_LIST_PASSED)
27338 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
27339 qp_npreq_line_attrs_tmp qplatpr,
27340 qp_pricing_attributes qpprod ,
27341 qp_list_lines qpl ,
27342 qp_list_headers_b qph ,
27343 qp_price_req_sources_v qprs
27344 WHERE
27345 qph.list_header_id = qpprod.list_header_id
27346 --added for moac -- commented references to security profile
27347 --security will be built into qp_list_headers_b
27348 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
27349 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
27350 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
27351 AND qpl.qualification_ind = QP_PREQ_GRP.G_YES_PROD_IND
27352 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
27353 AND (qplines.price_flag = G_YES OR
27354 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
27355 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
27356 AND qph.currency_code = qplines.currency_code
27357 AND qpl.modifier_level_code = qplines.line_type_code
27358 AND qph.active_flag = G_YES
27359 AND qpl.list_line_id = qpprod.list_line_id
27360 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
27361 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
27362 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
27363 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
27364 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
27365 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
27366 AND qpl.pricing_phase_id = p_pricing_phase_id
27367 AND qpprod.pricing_phase_id = p_pricing_phase_id
27368 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_IND
27369 AND qpprod.product_attribute_context = qplatpr.context
27370 AND qpprod.product_attribute = qplatpr.attribute
27371 AND qpprod.product_attr_value = qplatpr.value_from
27372 AND qpprod.excluder_flag = G_NO
27373 AND qph.source_system_code = qprs.source_system_code
27374 AND qplines.request_type_code = qprs.request_type_code
27375 AND qplatpr.line_index = qplines.line_index
27376 AND qplatpr.attribute_type='PRODUCT' --[julin/5007789]
27377 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED --[julin/5007789]
27378 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
27379 ORDER BY 4,2; --order by list_line_id
27380
27381 --[julin/5007789] Tuned query as follows:
27382 -- 1. Performing line filter first.
27383 CURSOR l_prod_cur_currency (p_pricing_phase_id NUMBER) IS
27384 -- Product Only.
27385 SELECT /*+ ORDERED USE_NL(QPLATPR QPPROD QPL QPH QPRS) index(qplatpr QP_PREQ_LINE_ATTRS_TMP_N1) l_prod_cur_pl */
27386 qpl.list_header_id,
27387 qpl.list_line_id,
27388 qpl.list_line_type_code,
27389 qplatpr.line_index,
27390 qplatpr.applied_flag,
27391 qplatpr.attribute_level product_attribute_level,
27392 qplatpr.attribute_type product_attribute_type,
27393 qplatpr.context product_attribute_context,
27394 qplatpr.attribute product_attribute,
27395 qplatpr.value_from product_attr_value,
27396 qpprod.product_uom_code product_uom_code,
27397 qpprod.excluder_flag,
27398 qpl.automatic_flag,
27399 qpl.modifier_level_code,
27400 qpl.primary_uom_flag,
27401 qpl.arithmetic_operator operand_calculation_code,
27402 qpl.operand operand_value,
27403 qpl.pricing_group_sequence,
27404 qph.list_type_code created_from_list_type,
27405 qph.rounding_factor,
27406 qpl.pricing_phase_id,
27407 qpl.price_break_type_code,
27408 qpl.incompatibility_grp_code,
27409 qpl.price_by_formula_id,
27410 qpl.product_precedence,
27411 qpl.list_line_no,
27412 qcdt.currency_detail_id,
27413 qcdt.currency_header_id,
27414 qcdt.selling_rounding_factor,
27415 qplines.currency_code order_currency,
27416 qplines.pricing_effective_date pricing_effective_date,
27417 qph.currency_code base_currency_code
27418 ,QPL.BREAK_UOM_CODE /* Proration */
27419 ,QPL.BREAK_UOM_CONTEXT /* Proration */
27420 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
27421 FROM --[julin/5007789]
27422 (SELECT /*+ dynamic_sampling(1) */ *
27423 FROM qp_npreq_lines_tmp
27424 WHERE processed_code IN (G_STS_LHS_NOT_FOUND,G_NO_LIST_PASSED)
27425 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
27426 qp_npreq_line_attrs_tmp qplatpr,
27427 qp_pricing_attributes qpprod,
27428 qp_list_lines qpl,
27429 qp_list_headers_b qph,
27430 qp_price_req_sources_v qprs,
27431 qp_currency_details qcdt
27432 WHERE qph.list_header_id = qpl.list_header_id
27433 --added for moac -- commented references to security profile
27434 --security will be built into qp_list_headers_b
27435 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
27436 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
27437 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
27438 AND (qplines.price_flag = G_YES OR
27439 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
27440 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
27441 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
27442 AND qpl.list_line_id = qpprod.list_line_id
27443 --AND qph.currency_code = qplines.currency_code
27444 AND qph.currency_header_id = qcdt.currency_header_id
27445 AND qplines.currency_code = qcdt.to_currency_code
27446 AND qplines.pricing_effective_date between
27447 nvl(trunc(qcdt.start_date_active),qplines.pricing_effective_date)
27448 and nvl(trunc(qcdt.end_date_active),qplines.pricing_effective_date)
27449 AND (
27450 (qcdt.curr_attribute_context is null
27451 and not exists
27452 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
27453 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
27454 where qcdt1.curr_attribute_context IS NOT NULL
27455 and qcdt1.curr_attribute_context = pa_tmp.context
27456 and qcdt1.curr_attribute = pa_tmp.attribute
27457 and qcdt1.curr_attribute_value = pa_tmp.value_from
27458 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
27459 and qcdt1.to_currency_code = qcdt.to_currency_code
27460 and qcdt1.currency_header_id = qcdt.currency_header_id
27461 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
27462 and pa_tmp.line_index = qplines.line_index
27463 and qplines.pricing_effective_date between
27464 nvl(trunc(qcdt1.start_date_active),qplines.pricing_effective_date)
27465 and nvl(trunc(qcdt1.end_date_active),qplines.pricing_effective_date)))
27466 OR
27467 (qcdt.curr_attribute_context is not null
27468 and qcdt.precedence =
27469 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
27470 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
27471 where qcdt2.curr_attribute_context IS NOT NULL
27472 and qcdt2.curr_attribute_context = pa_tmp1.context
27473 and qcdt2.curr_attribute = pa_tmp1.attribute
27474 and qcdt2.curr_attribute_value = pa_tmp1.value_from
27475 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
27476 and qcdt2.to_currency_code = qcdt.to_currency_code
27477 and qcdt2.currency_header_id = qcdt.currency_header_id
27478 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
27479 and pa_tmp1.line_index = qplines.line_index
27480 and qplines.pricing_effective_date between
27481 nvl(trunc(qcdt2.start_date_active),qplines.pricing_effective_date)
27482 and nvl(trunc(qcdt2.end_date_active),qplines.pricing_effective_date)
27483 )))
27484 AND qpl.modifier_level_code = qplines.line_type_code
27485 AND qph.active_flag = G_YES
27486 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
27487 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
27488 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
27489 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
27490 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
27491 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
27492 AND qpprod.pricing_phase_id = p_pricing_phase_id
27493 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_IND
27494 AND qpprod.product_attribute_context = qplatpr.context
27495 AND qpprod.product_attribute = qplatpr.attribute
27496 AND qpprod.product_attr_value = qplatpr.value_from
27497 AND qpprod.excluder_flag = G_NO
27498 AND qph.source_system_code = qprs.source_system_code
27499 AND qplines.request_type_code = qprs.request_type_code
27500 AND qplatpr.attribute_type='PRODUCT'
27501 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
27502 AND QPLATPR.LINE_INDEX = QPLINES.LINE_INDEX -- 4331801/4365538
27503 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
27504 ORDER BY 4,2;
27505
27506 --Added INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5) for 3259932
27507 --[julin/5007789] Tuned query as follows:
27508 -- 1. Performing line filter first.
27509 -- 2. Merged qplatpr subquery conditions into main where clause.
27510 -- 3. Merged qplatpc subquery conditions into main where clause.
27511 CURSOR l_prod_pric_cur (p_pricing_phase_id NUMBER) IS
27512 --PRODUCT and PRICING attributes
27513 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 */
27514 qpl.list_header_id,
27515 qpl.list_line_id,
27516 qpl.list_line_type_code,
27517 qplatpr.line_index,
27518 qplatpr.applied_flag,
27519 qplatpr.attribute_level product_attribute_level,
27520 qplatpr.attribute_type product_attribute_type,
27521 qplatpr.context product_attribute_context,
27522 qplatpr.attribute product_attribute,
27523 qplatpr.value_from product_attr_value,
27524 qpprod.product_uom_code product_uom_code,
27525 qpprod.excluder_flag,
27526 qpl.automatic_flag,
27527 qpl.modifier_level_code,
27528 qpl.primary_uom_flag,
27529 qpl.arithmetic_operator operand_calculation_code,
27530 qpl.operand operand_value,
27531 qpl.pricing_group_sequence,
27532 qph.list_type_code created_from_list_type,
27533 qph.rounding_factor,
27534 qpl.pricing_phase_id,
27535 qpl.price_break_type_code,
27536 qpl.incompatibility_grp_code,
27537 qpl.price_by_formula_id,
27538 qpl.product_precedence,
27539 qpl.list_line_no,
27540 qplatpc.attribute_level pricing_attribute_level,
27541 qplatpc.attribute_type pricing_attribute_type,
27542 qplatpc.context pricing_attribute_context,
27543 qplatpc.attribute pricing_attribute,
27544 qplatpc.value_from pricing_attr_value,
27545 qpprod.pricing_attr_value_from pricing_setup_value_from,
27546 qpprod.pricing_attr_value_to pricing_setup_value_to,
27547 qpprod.comparison_operator_code pricing_comparison_operator,
27548 qpprod.pricing_attribute_datatype pricing_datatype
27549 ,QPL.BREAK_UOM_CODE /* Proration */
27550 ,QPL.BREAK_UOM_CONTEXT /* Proration */
27551 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
27552 FROM --[julin/5007789]
27553 (SELECT /*+ dynamic_sampling(1) */ *
27554 FROM qp_npreq_lines_tmp
27555 WHERE processed_code IN (G_STS_LHS_NOT_FOUND,G_NO_LIST_PASSED)
27556 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
27557 qp_npreq_line_attrs_tmp qplatpr,
27558 qp_pricing_attributes qpprod,
27559 qp_npreq_line_attrs_tmp qplatpc,
27560 qp_list_lines qpl,
27561 qp_list_headers_b qph,
27562 qp_price_req_sources_v QPRS
27563 WHERE
27564 qph.list_header_id = qpl.list_header_id
27565 --added for moac -- commented references to security profile
27566 --security will be built into qp_list_headers_b
27567 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
27568 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
27569 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
27570 AND qpl.list_line_id = qpprod.list_line_id
27571 AND qpl.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
27572 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
27573 AND (qplines.price_flag = G_YES OR
27574 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
27575 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
27576 AND qph.currency_code = qplines.currency_code --5922273
27577 AND qph.active_flag = G_YES
27578 AND qpl.pricing_phase_id = p_pricing_phase_id
27579 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
27580 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
27581 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
27582 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
27583 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date) and
27584 nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
27585 AND qpprod.pricing_phase_id = p_pricing_phase_id
27586 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
27587 AND qpprod.product_attribute_context = qplatpr.context
27588 AND qpprod.product_attribute = qplatpr.attribute
27589 AND qpprod.product_attr_value = qplatpr.value_from
27590 AND qpprod.excluder_flag = G_NO
27591 AND qpprod.pricing_attribute_context = qplatpc.context
27592 AND qpprod.pricing_attribute = qplatpc.attribute
27593 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
27594 or qpprod.comparison_operator_code = G_OPERATOR_BETWEEN)
27595 --or qpl.price_break_type_code = G_RECURRING_BREAK)
27596 AND qplatpc.attribute_type = 'PRICING' --[julin/5007789]
27597 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED --[julin/5007789]
27598 AND qplatpc.line_index = qplines.line_index
27599 AND qplatpr.line_index = qplines.line_index
27600 AND qplatpr.attribute_type = 'PRODUCT' --[julin/5007789]
27601 AND qplatpr.pricing_status_code = G_STATUS_UNCHANGED --[julin/5007789]
27602 AND qph.source_system_code = qprs.source_system_code
27603 AND qplines.request_type_code = qprs.request_type_code
27604 --AND qplatpc.pricing_attr_flag = G_YES --[julin/4708044] currently not reliable value, not used in index
27605 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
27606 ORDER BY 4,2;
27607
27608 --Added INDEX(QPPROD QP_PRICING_ATTRIBUTES_N5) for 3259932
27609 --[julin/5007789] Tuned query as follows:
27610 -- 1. Performing line filter first.
27611 CURSOR l_prod_pric_cur_currency(p_pricing_phase_id NUMBER) IS
27612 --Product+Pricing
27613 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 */
27614 qpl.list_header_id,
27615 qpl.list_line_id,
27616 qpl.list_line_type_code,
27617 qplatpr.line_index,
27618 qplatpr.applied_flag,
27619 qplatpr.attribute_level product_attribute_level,
27620 qplatpr.attribute_type product_attribute_type,
27621 qplatpr.context product_attribute_context,
27622 qplatpr.attribute product_attribute,
27623 qplatpr.value_from product_attr_value,
27624 qpprod.product_uom_code product_uom_code,
27625 qpprod.excluder_flag,
27626 qpl.automatic_flag,
27627 qpl.modifier_level_code,
27628 qpl.primary_uom_flag,
27629 qpl.arithmetic_operator operand_calculation_code,
27630 qpl.operand operand_value,
27631 qpl.pricing_group_sequence,
27632 qph.list_type_code created_from_list_type,
27633 qph.rounding_factor,
27634 qpl.pricing_phase_id,
27635 qpl.price_break_type_code,
27636 qpl.incompatibility_grp_code,
27637 qpl.price_by_formula_id,
27638 qpl.product_precedence,
27639 qpl.list_line_no,
27640 qplatpc.attribute_level pricing_attribute_level,
27641 qplatpc.attribute_type pricing_attribute_type,
27642 qplatpc.context pricing_attribute_context,
27643 qplatpc.attribute pricing_attribute,
27644 qplatpc.value_from pricing_attr_value,
27645 qpprod.pricing_attr_value_from pricing_setup_value_from,
27646 qpprod.pricing_attr_value_to pricing_setup_value_to,
27647 qpprod.comparison_operator_code pricing_comparison_operator,
27648 qpprod.pricing_attribute_datatype pricing_datatype,
27649 qcdt.currency_detail_id,
27650 qcdt.currency_header_id,
27651 qcdt.selling_rounding_factor,
27652 qplines.currency_code order_currency,
27653 qplines.pricing_effective_date pricing_effective_date,
27654 qph.currency_code base_currency_code
27655 ,QPL.BREAK_UOM_CODE /* Proration */
27656 ,QPL.BREAK_UOM_CONTEXT /* Proration */
27657 ,QPL.BREAK_UOM_ATTRIBUTE /* Proration */
27658 FROM --[julin/5007789]
27659 (SELECT /*+ dynamic_sampling(1) */ *
27660 FROM qp_npreq_lines_tmp
27661 WHERE processed_code IN (G_STS_LHS_NOT_FOUND,G_NO_LIST_PASSED)
27662 AND (nvl(validated_flag,G_NO) = G_NO or nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) qplines,
27663 qp_npreq_line_attrs_tmp qplatpr,
27664 qp_pricing_attributes qpprod ,
27665 qp_npreq_line_attrs_tmp qplatpc,
27666 qp_list_lines qpl ,
27667 qp_list_headers_b qph,
27668 qp_price_req_sources_v qprs,
27669 qp_currency_details qcdt
27670 WHERE
27671 qph.list_header_id = qpl.list_header_id
27672 --added for moac -- commented references to security profile
27673 --security will be built into qp_list_headers_b
27674 --AND ((nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND G_CURRENT_USER_OP_UNIT = QPH.orig_org_id) OR -- begin security
27675 -- (nvl(G_SECURITY_CONTROL, 'OFF') = 'ON' AND nvl(QPH.global_flag,'Y') = 'Y') OR
27676 -- nvl(G_SECURITY_CONTROL, 'OFF') = 'OFF' ) -- end security
27677 AND qpl.list_line_id = qpprod.list_line_id
27678 AND (qplines.price_flag = G_YES OR
27679 (qplines.price_flag = G_PHASE AND p_freeze_override_flag = G_YES))
27680 AND qplines.list_price_override_flag in ('N', 'O') -- po integration
27681 --AND qph.currency_code = qplines.currency_code
27682 AND qph.currency_header_id = qcdt.currency_header_id
27683 AND qplines.currency_code = qcdt.to_currency_code
27684 AND qplines.pricing_effective_date between
27685 nvl(trunc(qcdt.start_date_active),qplines.pricing_effective_date) and
27686 nvl(trunc(qcdt.end_date_active),qplines.pricing_effective_date)
27687 AND (
27688 (qcdt.curr_attribute_context is null
27689 and not exists
27690 (select /*+ ORDERED use_nl(qcdt1) index(pa_tmp QP_PREQ_LINE_ATTRS_TMP_N1) */ 'x' --[julin/5139512/4744915]
27691 from qp_npreq_line_attrs_tmp pa_tmp, qp_currency_details qcdt1
27692 where qcdt1.curr_attribute_context IS NOT NULL
27693 and qcdt1.curr_attribute_context = pa_tmp.context
27694 and qcdt1.curr_attribute = pa_tmp.attribute
27695 and qcdt1.curr_attribute_value = pa_tmp.value_from
27696 and qcdt1.curr_attribute_type = pa_tmp.attribute_typE
27697 and qcdt1.to_currency_code = qcdt.to_currency_code
27698 and qcdt1.currency_header_id = qcdt.currency_header_id
27699 and pa_tmp.pricing_status_code = G_STATUS_UNCHANGED
27700 and pa_tmp.line_index = qplines.line_index
27701 and qplines.pricing_effective_date between
27702 nvl(trunc(qcdt1.start_date_active),qplines.pricing_effective_date)
27703 and nvl(trunc(qcdt1.end_date_active),qplines.pricing_effective_date)))
27704 OR
27705 (qcdt.curr_attribute_context is not null
27706 and qcdt.precedence =
27707 (select /*+ ORDERED use_nl(qcdt2) index(pa_tmp1 QP_PREQ_LINE_ATTRS_TMP_N1) */ min(qcdt2.precedence) --[julin/5139512/4744915]
27708 from qp_npreq_line_attrs_tmp pa_tmp1, qp_currency_details qcdt2
27709 where qcdt2.curr_attribute_context IS NOT NULL
27710 and qcdt2.curr_attribute_context = pa_tmp1.context
27711 and qcdt2.curr_attribute = pa_tmp1.attribute
27712 and qcdt2.curr_attribute_value = pa_tmp1.value_from
27713 and qcdt2.curr_attribute_type = pa_tmp1.attribute_type
27714 and qcdt2.to_currency_code = qcdt.to_currency_code
27715 and qcdt2.currency_header_id = qcdt.currency_header_id
27716 and pa_tmp1.pricing_status_code = G_STATUS_UNCHANGED
27717 and pa_tmp1.line_index = qplines.line_index
27718 and qplines.pricing_effective_date between
27719 nvl(trunc(qcdt2.start_date_active),qplines.pricing_effective_date)
27720 and nvl(trunc(qcdt2.end_date_active),qplines.pricing_effective_date)
27721 )))
27722 AND qpl.modifier_level_code = qplines.line_type_code
27723 AND qph.active_flag = G_YES
27724 AND nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)) between
27725 nvl(qph.start_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE))) and
27726 nvl(qph.end_date_active,nvl(qplines.pricing_effective_date,TRUNC(SYSDATE)))
27727 AND qplines.pricing_effective_date between
27728 nvl(TRUNC(qpl.start_date_active), qplines.pricing_effective_date)
27729 and nvl(TRUNC(qpl.end_date_active),qplines.pricing_effective_date)
27730 AND qpl.list_line_type_code in ('PLL','PMR','PBH')
27731 AND qpprod.pricing_phase_id = p_pricing_phase_id
27732 AND qpprod.qualification_ind = QP_PREQ_GRP.G_YES_PROD_PRIC_IND
27733 AND qpprod.product_attribute_context = qplatpr.context
27734 AND qpprod.product_attribute = qplatpr.attribute
27735 AND qpprod.product_attr_value = qplatpr.value_from
27736 AND qpprod.excluder_flag = G_NO
27737 AND qpprod.pricing_attribute_context = qplatpc.context
27738 AND qpprod.pricing_attribute = qplatpc.attribute
27739 AND (qpprod.pricing_attr_value_from = qplatpc.value_from
27740 or qpprod.comparison_operator_code = G_OPERATOR_BETWEEN)
27741 AND qplatpc.line_index = qplatpr.line_index
27742 AND qplatpr.line_index = qplines.line_index -- 4331801/4365538
27743 AND qph.source_system_code = qprs.source_system_code
27744 AND qplines.request_type_code = qprs.request_type_code
27745 AND qplatpr.attribute_type='PRODUCT'
27746 AND qplatpr.pricing_status_code=G_STATUS_UNCHANGED
27747 AND qplatpc.attribute_type = 'PRICING'
27748 AND qplatpc.pricing_status_code = G_STATUS_UNCHANGED
27749 AND (instr(QPLINES.PROCESS_STATUS,'FREEGOOD')=0) -- bug 2693700
27750 ORDER BY 4,2;
27751
27752 J PLS_INTEGER:=1;
27753 N PLS_INTEGER:=1;
27754 K PLS_INTEGER:=1;
27755 M PLS_INTEGER:=1;
27756 l_status VARCHAR2(30);
27757 l_status_code VARCHAR2(30);
27758 l_status_text VARCHAR2(240);
27759 l_list_line_id NUMBER := 0 ;
27760 l_line_index PLS_INTEGER := 0 ;
27761 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.Select_Price_List_Lines';
27762 l_prod_qual_count PLS_INTEGER :=0;
27763 l_prod_cur_count PLS_INTEGER :=0;
27764
27765 l_line_detail_index PLS_INTEGER;
27766 lq_line_index NUMBER := -9999;
27767 lq_list_line_id NUMBER := -9999;
27768 nROWS PLS_INTEGER := 1000;
27769
27770 E_ROUTINE_ERRORS EXCEPTION;
27771
27772 BEGIN
27773
27774 x_status_code := FND_API.G_RET_STS_SUCCESS;
27775 l_prod_qual_count :=0;
27776 l_prod_cur_count :=0;
27777
27778 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27779 engine_debug('Before Big Select');
27780 engine_debug('p_pricing_phase_id: '||p_pricing_phase_id);
27781 engine_debug('p_freeze_override_flag: '||p_freeze_override_flag);
27782
27783 END IF;
27784 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
27785 --selecting lists that match product and qualifiers attributes
27786 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27787 engine_debug('cursor for l_prod_qual_cur_currency-multi-currency TRUE');
27788 END IF;
27789 OPEN l_prod_qual_cur_currency(p_pricing_phase_id);
27790
27791 qp_debug_util.tstart('L_PROD_QUAL_CUR_CURRENCY','Cursor Loop l_prod_qual_cur_currency');
27792 LOOP
27793 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
27794 deleted here. There is no need to explicitly delete since BULK COLLECT
27795 will truncate the data before populating. */
27796
27797 -- fetch into _P and _Q tables here
27798 FETCH l_prod_qual_cur_currency BULK COLLECT INTO
27799 G_LIST_HEADER_ID_TBL_P,
27800 G_LIST_LINE_ID_TBL_P,
27801 G_LIST_LINE_TYPE_TBL_P,
27802 G_LINE_INDEX_TBL_P,
27803 G_APPLIED_FLAG_TBL_P,
27804 G_ATTRIBUTE_LEVEL_TBL_P,
27805 G_ATTRIBUTE_TYPE_TBL_P,
27806 G_CONTEXT_TBL_P,
27807 G_ATTRIBUTE_TBL_P,
27808 G_VALUE_FROM_TBL_P,
27809 G_PRODUCT_UOM_CODE_TBL_P,
27810 G_EXCLUDER_FLAG_TBL_P,
27811 G_CONTEXT_TBL_Q,
27812 G_ATTRIBUTE_TBL_Q,
27813 G_VALUE_FROM_TBL_Q,
27814 G_GROUPING_NO_TBL_Q,
27815 G_QUALIFIER_PRECEDENCE_TBL_Q,
27816 G_DATATYPE_TBL_Q,
27817 G_SETUP_VALUE_FROM_TBL_Q,
27818 G_SETUP_VALUE_TO_TBL_Q,
27819 G_AUTOMATIC_FLAG_TBL_P,
27820 G_MODIFIER_LEVEL_CODE_TBL_P,
27821 G_PRIMARY_UOM_FLAG_TBL_P,
27822 G_OPER_CALCULATION_CODE_TBL_P,
27823 G_OPERAND_VALUE_TBL_P,
27824 G_PRICING_GROUP_SEQUENCE_TBL_P,
27825 G_LIST_TYPE_CODE_TBL_P,
27826 G_ROUNDING_FACTOR_TBL_P,
27827 G_PRICING_PHASE_ID_TBL_P,
27828 G_PRICE_BREAK_TYPE_CODE_TBL_P,
27829 G_INCOMP_GRP_CODE_TBL_P,
27830 G_PRICE_FORMULA_ID_TBL_P,
27831 G_PRODUCT_PRECEDENCE_TBL_P,
27832 G_LIST_LINE_NO_TBL_P,
27833 G_QUALIFIER_TYPE_TBL_Q ,
27834 G_CURRENCY_DETAIL_ID_TBL_P,
27835 G_CURRENCY_HEADER_ID_TBL_P,
27836 G_SELLING_ROUNDING_TBL_P,
27837 G_ORDER_CURRENCY_TBL_P,
27838 G_PRICING_EFFECTIVE_DATE_TBL_P,
27839 G_BASE_CURRENCY_CODE_TBL_P
27840 ,G_BREAK_UOM_TBL_P /* Proration */
27841 ,G_BREAK_CONTEXT_TBL_P /* Proration */
27842 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
27843 LIMIT nROWS;
27844
27845 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
27846
27847 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27848 engine_debug('shu dbg, after bulk insert');
27849 END IF;
27850
27851 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
27852
27853 FOR i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
27854
27855 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
27856
27857 l_prod_qual_count := l_prod_qual_count + 1;
27858 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
27859 -- set attributes
27860 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
27861 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
27862 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
27863 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
27864 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
27865 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_QUALIFIER_CURRENCY';
27866 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
27867 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
27868 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
27869 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
27870 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
27871 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
27872 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_QUALIFIER_CURRENCY';
27873 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
27874 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
27875 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
27876 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
27877 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
27878 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
27879 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
27880 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
27881 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
27882 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
27883 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
27884 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
27885 G_CURRENCY_DETAIL_ID_TBL(M) := G_CURRENCY_DETAIL_ID_TBL_P(i);
27886 G_CURRENCY_HEADER_ID_TBL(M) := G_CURRENCY_HEADER_ID_TBL_P(i);
27887 G_SELLING_ROUNDING_TBL(M) := G_SELLING_ROUNDING_TBL_P(i);
27888 G_ORDER_CURRENCY_TBL(M) := G_ORDER_CURRENCY_TBL_P(i);
27889 G_BASE_CURRENCY_CODE_TBL(M) := G_BASE_CURRENCY_CODE_TBL_P(i);
27890 G_PRICING_EFFECTIVE_DATE_TBL(M) := G_PRICING_EFFECTIVE_DATE_TBL_P(i);
27891 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
27892 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
27893 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
27894
27895 M:=M+1;
27896
27897 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27898 engine_debug('M: '|| M);
27899 END IF;
27900
27901
27902 lq_line_index := G_LINE_INDEX_TBL_P(i);
27903 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
27904 end if;
27905
27906 -- set product attributes
27907
27908 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
27909 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
27910 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
27911 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
27912 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
27913 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
27914 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
27915 G_VALIDATED_FLAG_tbl(K) := G_NO;
27916 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
27917 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
27918 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
27919 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
27920 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
27921 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
27922 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
27923 G_SETUP_VALUE_TO_tbl(K) :=NULL;
27924 G_GROUPING_NUMBER_tbl(K) :=NULL;
27925 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_CURRENCY';
27926 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
27927 G_DATATYPE_tbl(K) :=NULL;
27928 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
27929 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
27930 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_Q(i);
27931 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
27932 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
27933 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
27934 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
27935 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
27936
27937 K:= K+1;
27938 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27939 engine_debug('The value of K1: ' || K);
27940 END IF;
27941 -- set qualifier attributes
27942 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
27943 G_ATTRIBUTE_LEVEL_tbl(K) := nvl(G_ATTRIBUTE_LEVEL_TBL_P(i),'X');
27944 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
27945 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_Q(i);
27946 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_Q(i);
27947 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_Q(i);
27948 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
27949 G_VALIDATED_FLAG_tbl(K) := G_NO;
27950 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
27951 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
27952 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
27953 G_LINE_DETAIL_INDEX_tbl(K) := L_LINE_DETAIL_INDEX;
27954 G_LIST_HEADER_ID_tbl(K) := G_LIST_HEADER_ID_TBL_P(i);
27955 G_LIST_LINE_ID_tbl(K) := G_LIST_LINE_ID_TBL_P(i);
27956 G_SETUP_VALUE_FROM_tbl(K) := G_SETUP_VALUE_FROM_TBL_Q(i);
27957 G_SETUP_VALUE_TO_tbl(K) := G_SETUP_VALUE_TO_TBL_Q(i);
27958 G_GROUPING_NUMBER_tbl(K) := G_GROUPING_NO_TBL_Q(i);
27959 G_PRICING_STATUS_TEXT_tbl(K) := 'PRODUCT_QUALIFIER_CURRENCY';
27960 G_QUALIFIER_PRECEDENCE_tbl(K) := G_QUALIFIER_PRECEDENCE_TBL_Q(i);
27961 G_DATATYPE_tbl(K) := G_DATATYPE_TBL_Q(i);
27962 G_EXCLUDER_FLAG_TBL(K) := G_EXCLUDER_FLAG_TBL_P(i);
27963 G_PRODUCT_UOM_CODE_TBL(K) := G_PRODUCT_UOM_CODE_TBL_P(i);
27964 G_QUALIFIER_TYPE_TBL(K) := G_QUALIFIER_TYPE_TBL_Q(i);
27965 G_PRICING_PHASE_ID_TBL_A(K) := G_PRICING_PHASE_ID_TBL_P(i);
27966 G_INCOMP_GRP_CODE_TBL_A(K) := G_INCOMP_GRP_CODE_TBL_P(i);
27967 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := 'NULL';
27968 G_MODIFIER_LEVEL_CODE_TBL_A(K) := G_MODIFIER_LEVEL_CODE_TBL_P(i);
27969 G_PRIMARY_UOM_FLAG_TBL_A(K) := G_PRIMARY_UOM_FLAG_TBL_P(i);
27970 K:= K+1;
27971 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27972 engine_debug('The value of K2: ' || K);
27973
27974 END IF;
27975 end loop;
27976 end if;
27977 END LOOP;
27978
27979 qp_debug_util.tstop('L_PROD_QUAL_CUR_CURRENCY');
27980
27981 CLOSE l_prod_qual_cur_currency;
27982
27983 lq_line_index := -9999;
27984 lq_list_line_id := -9999;
27985
27986 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
27987 engine_debug('before l_prod_qual_pric_cur_currency... ');
27988 END IF;
27989
27990 OPEN l_prod_qual_pric_cur_currency(p_pricing_phase_id);
27991
27992 qp_debug_util.tstart('L_PROD_QUAL_PRIC_CUR_CURRENCY','Cursor Loop l_prod_qual_pric_cur_currency');
27993 LOOP
27994 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
27995 deleted here. There is no need to explicitly delete since BULK COLLECT
27996 will truncate the data before populating. */
27997
27998 -- fetch into _P , _Q tables and _PR tables here
27999 FETCH l_prod_qual_pric_cur_currency BULK COLLECT INTO
28000 G_LIST_HEADER_ID_TBL_P,
28001 G_LIST_LINE_ID_TBL_P,
28002 G_LIST_LINE_TYPE_TBL_P,
28003 G_LINE_INDEX_TBL_P,
28004 G_APPLIED_FLAG_TBL_P,
28005 G_ATTRIBUTE_LEVEL_TBL_P,
28006 G_ATTRIBUTE_TYPE_TBL_P,
28007 G_CONTEXT_TBL_P,
28008 G_ATTRIBUTE_TBL_P,
28009 G_VALUE_FROM_TBL_P,
28010 G_PRODUCT_UOM_CODE_TBL_P,
28011 G_EXCLUDER_FLAG_TBL_P,
28012 G_CONTEXT_TBL_Q,
28013 G_ATTRIBUTE_TBL_Q,
28014 G_VALUE_FROM_TBL_Q,
28015 G_GROUPING_NO_TBL_Q,
28016 G_QUALIFIER_PRECEDENCE_TBL_Q,
28017 G_DATATYPE_TBL_Q,
28018 G_SETUP_VALUE_FROM_TBL_Q,
28019 G_SETUP_VALUE_TO_TBL_Q,
28020 G_AUTOMATIC_FLAG_TBL_P,
28021 G_MODIFIER_LEVEL_CODE_TBL_P,
28022 G_PRIMARY_UOM_FLAG_TBL_P,
28023 G_OPER_CALCULATION_CODE_TBL_P,
28024 G_OPERAND_VALUE_TBL_P,
28025 G_PRICING_GROUP_SEQUENCE_TBL_P,
28026 G_LIST_TYPE_CODE_TBL_P,
28027 G_ROUNDING_FACTOR_TBL_P,
28028 G_PRICING_PHASE_ID_TBL_P,
28029 G_PRICE_BREAK_TYPE_CODE_TBL_P,
28030 G_INCOMP_GRP_CODE_TBL_P,
28031 G_PRICE_FORMULA_ID_TBL_P,
28032 G_PRODUCT_PRECEDENCE_TBL_P,
28033 G_LIST_LINE_NO_TBL_P,
28034 G_QUALIFIER_TYPE_TBL_Q ,
28035 G_ATTRIBUTE_LEVEL_TBL_PR,
28036 G_ATTRIBUTE_TYPE_TBL_PR,
28037 G_CONTEXT_TBL_PR,
28038 G_ATTRIBUTE_TBL_PR,
28039 G_VALUE_FROM_TBL_PR,
28040 G_SETUP_VALUE_FROM_TBL_PR,
28041 G_SETUP_VALUE_TO_TBL_PR,
28042 G_OPERATOR_TYPE_TBL_PR,
28043 G_DATATYPE_TBL_PR,
28044 G_CURRENCY_DETAIL_ID_TBL_P,
28045 G_CURRENCY_HEADER_ID_TBL_P,
28046 G_SELLING_ROUNDING_TBL_P,
28047 G_ORDER_CURRENCY_TBL_P,
28048 G_PRICING_EFFECTIVE_DATE_TBL_P ,
28049 G_BASE_CURRENCY_CODE_TBL_P
28050 ,G_BREAK_UOM_TBL_P /* Proration */
28051 ,G_BREAK_CONTEXT_TBL_P /* Proration */
28052 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
28053 LIMIT nROWS;
28054 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
28055
28056 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
28057 for i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
28058 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
28059 l_prod_qual_count := l_prod_qual_count + 1;
28060 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
28061
28062 -- set attributes
28063 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
28064 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
28065 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
28066 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
28067 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
28068 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_QUALIFIER_PRICING_CURRENCY';
28069 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
28070 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
28071 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
28072 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
28073 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
28074 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
28075 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_QUAL_PRICING_CURRENCY';
28076 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
28077 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
28078 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
28079 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
28080 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
28081 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
28082 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
28083 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
28084 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
28085 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
28086 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
28087 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
28088 G_CURRENCY_DETAIL_ID_TBL(M) := G_CURRENCY_DETAIL_ID_TBL_P(i);
28089 G_CURRENCY_HEADER_ID_TBL(M) := G_CURRENCY_HEADER_ID_TBL_P(i);
28090 G_SELLING_ROUNDING_TBL(M) := G_SELLING_ROUNDING_TBL_P(i);
28091 G_ORDER_CURRENCY_TBL(M) := G_ORDER_CURRENCY_TBL_P(i);
28092 G_BASE_CURRENCY_CODE_TBL(M) := G_BASE_CURRENCY_CODE_TBL_P(i);
28093 G_PRICING_EFFECTIVE_DATE_TBL(M) := G_PRICING_EFFECTIVE_DATE_TBL_P(i);
28094 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
28095 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
28096 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
28097
28098 M:=M+1;
28099 lq_line_index := G_LINE_INDEX_TBL_P(i);
28100 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
28101 end if;
28102
28103 -- set product attributes
28104 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
28105 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
28106 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
28107 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
28108 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
28109 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
28110 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
28111 G_VALIDATED_FLAG_tbl(K) := G_NO;
28112 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
28113 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
28114 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
28115 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
28116 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
28117 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
28118 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
28119 G_SETUP_VALUE_TO_tbl(K) :=NULL;
28120 G_GROUPING_NUMBER_tbl(K) :=NULL;
28121 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_PRICING_CURRENCY';
28122 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
28123 G_DATATYPE_tbl(K) :=NULL;
28124 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
28125 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
28126 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_Q(i);
28127 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
28128 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
28129 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28130 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
28131 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
28132 K:= K+1;
28133 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28134 engine_debug('The value of K: ' || K);
28135
28136 END IF;
28137 -- set qualifier attributes
28138 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
28139 G_ATTRIBUTE_LEVEL_tbl(K) := nvl(G_ATTRIBUTE_LEVEL_TBL_P(i),'X');
28140 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
28141 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_Q(i);
28142 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_Q(i);
28143 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_Q(i);
28144 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
28145 G_VALIDATED_FLAG_tbl(K) := G_NO;
28146 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
28147 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
28148 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
28149 G_LINE_DETAIL_INDEX_tbl(K) := L_LINE_DETAIL_INDEX;
28150 G_LIST_HEADER_ID_tbl(K) := G_LIST_HEADER_ID_TBL_P(i);
28151 G_LIST_LINE_ID_tbl(K) := G_LIST_LINE_ID_TBL_P(i);
28152 G_SETUP_VALUE_FROM_tbl(K) := G_SETUP_VALUE_FROM_TBL_Q(i);
28153 G_SETUP_VALUE_TO_tbl(K) := G_SETUP_VALUE_TO_TBL_Q(i);
28154 G_GROUPING_NUMBER_tbl(K) := G_GROUPING_NO_TBL_Q(i);
28155 G_PRICING_STATUS_TEXT_tbl(K) := 'PRODUCT_QUALIFIER_PRICING_CURRENCY';
28156 G_QUALIFIER_PRECEDENCE_tbl(K) := G_QUALIFIER_PRECEDENCE_TBL_Q(i);
28157 G_DATATYPE_tbl(K) := G_DATATYPE_TBL_Q(i);
28158 G_EXCLUDER_FLAG_TBL(K) := G_EXCLUDER_FLAG_TBL_P(i);
28159 G_PRODUCT_UOM_CODE_TBL(K) := G_PRODUCT_UOM_CODE_TBL_P(i);
28160 G_QUALIFIER_TYPE_TBL(K) := G_QUALIFIER_TYPE_TBL_Q(i);
28161 G_PRICING_PHASE_ID_TBL_A(K) := G_PRICING_PHASE_ID_TBL_P(i);
28162 G_INCOMP_GRP_CODE_TBL_A(K) := G_INCOMP_GRP_CODE_TBL_P(i);
28163 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := 'NULL';
28164 G_MODIFIER_LEVEL_CODE_TBL_A(K) := G_MODIFIER_LEVEL_CODE_TBL_P(i);
28165 G_PRIMARY_UOM_FLAG_TBL_A(K) := G_PRIMARY_UOM_FLAG_TBL_P(i);
28166 K:= K+1;
28167
28168 --set pricing attributes
28169 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
28170 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
28171 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_PR(I);
28172 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_PR(I);
28173 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_PR(I);
28174 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_PR(I);
28175 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_PR(I);
28176 G_COMPARISON_OPERATOR_TYPE_tbl(K):=G_OPERATOR_TYPE_TBL_PR(I);
28177 G_VALIDATED_FLAG_tbl(K) :=G_NO;
28178 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
28179 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
28180 G_PRICING_ATTR_FLAG_tbl(K) :=G_YES;
28181 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
28182 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
28183 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
28184 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
28185 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
28186 G_GROUPING_NUMBER_tbl(K) :=NULL;
28187 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_PRICING_CURRENCY';
28188 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
28189 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
28190 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
28191 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
28192 G_QUALIFIER_TYPE_TBL(K) :=NULL;
28193 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
28194 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
28195 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28196 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
28197 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
28198 K:= K+1;
28199 END IF;
28200 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28201 engine_debug('The value of K: ' || K);
28202
28203 END IF;
28204 end loop;
28205 end if;
28206 END LOOP;
28207
28208 qp_debug_util.tstop('L_PROD_QUAL_PRIC_CUR_CURRENCY');
28209
28210 CLOSE l_prod_qual_pric_cur_currency;
28211
28212 lq_line_index := -9999;
28213 lq_list_line_id := -9999;
28214
28215 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28216 engine_debug('before l_prod_cur_currency... ');
28217 END IF;
28218
28219 OPEN l_prod_cur_currency(p_pricing_phase_id);
28220
28221 qp_debug_util.tstart('L_PROD_CUR_CURRENCY','Cursor Loop l_prod_cur_currency');
28222
28223 LOOP
28224 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
28225 deleted here. There is no need to explicitly delete since BULK COLLECT
28226 will truncate the data before populating. */
28227
28228 -- fetch into _P tables here
28229 FETCH l_prod_cur_currency BULK COLLECT INTO
28230 G_LIST_HEADER_ID_TBL_P,
28231 G_LIST_LINE_ID_TBL_P,
28232 G_LIST_LINE_TYPE_TBL_P,
28233 G_LINE_INDEX_TBL_P,
28234 G_APPLIED_FLAG_TBL_P,
28235 G_ATTRIBUTE_LEVEL_TBL_P,
28236 G_ATTRIBUTE_TYPE_TBL_P,
28237 G_CONTEXT_TBL_P,
28238 G_ATTRIBUTE_TBL_P,
28239 G_VALUE_FROM_TBL_P,
28240 G_PRODUCT_UOM_CODE_TBL_P,
28241 G_EXCLUDER_FLAG_TBL_P,
28242 G_AUTOMATIC_FLAG_TBL_P,
28243 G_MODIFIER_LEVEL_CODE_TBL_P,
28244 G_PRIMARY_UOM_FLAG_TBL_P,
28245 G_OPER_CALCULATION_CODE_TBL_P,
28246 G_OPERAND_VALUE_TBL_P,
28247 G_PRICING_GROUP_SEQUENCE_TBL_P,
28248 G_LIST_TYPE_CODE_TBL_P,
28249 G_ROUNDING_FACTOR_TBL_P,
28250 G_PRICING_PHASE_ID_TBL_P,
28251 G_PRICE_BREAK_TYPE_CODE_TBL_P,
28252 G_INCOMP_GRP_CODE_TBL_P,
28253 G_PRICE_FORMULA_ID_TBL_P,
28254 G_PRODUCT_PRECEDENCE_TBL_P,
28255 G_LIST_LINE_NO_TBL_P,
28256 G_CURRENCY_DETAIL_ID_TBL_P,
28257 G_CURRENCY_HEADER_ID_TBL_P,
28258 G_SELLING_ROUNDING_TBL_P,
28259 G_ORDER_CURRENCY_TBL_P,
28260 G_PRICING_EFFECTIVE_DATE_TBL_P,
28261 G_BASE_CURRENCY_CODE_TBL_P
28262 ,G_BREAK_UOM_TBL_P /* Proration */
28263 ,G_BREAK_CONTEXT_TBL_P /* Proration */
28264 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
28265 LIMIT nROWS;
28266
28267 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
28268
28269 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
28270 for i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
28271 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
28272 l_prod_qual_count := l_prod_qual_count + 1;
28273 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
28274
28275 -- set attributes
28276 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
28277 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
28278 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
28279 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
28280 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
28281 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_CURRENCY';
28282 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
28283 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
28284 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
28285 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
28286 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
28287 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
28288 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_CURRENCY';
28289 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
28290 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
28291 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
28292 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
28293 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
28294 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
28295 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
28296 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
28297 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
28298 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
28299 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
28300 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
28301 G_CURRENCY_DETAIL_ID_TBL(M) := G_CURRENCY_DETAIL_ID_TBL_P(i);
28302 G_CURRENCY_HEADER_ID_TBL(M) := G_CURRENCY_HEADER_ID_TBL_P(i);
28303 G_SELLING_ROUNDING_TBL(M) := G_SELLING_ROUNDING_TBL_P(i);
28304 G_ORDER_CURRENCY_TBL(M) := G_ORDER_CURRENCY_TBL_P(i);
28305 G_BASE_CURRENCY_CODE_TBL(M) := G_BASE_CURRENCY_CODE_TBL_P(i);
28306 G_PRICING_EFFECTIVE_DATE_TBL(M) := G_PRICING_EFFECTIVE_DATE_TBL_P(i);
28307 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
28308 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
28309 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
28310
28311
28312 M:=M+1;
28313 lq_line_index := G_LINE_INDEX_TBL_P(i);
28314 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
28315 end if;
28316
28317 -- set product attributes
28318 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
28319 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
28320 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
28321 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
28322 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
28323 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
28324 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
28325 G_VALIDATED_FLAG_tbl(K) := G_NO;
28326 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
28327 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
28328 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
28329 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
28330 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
28331 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
28332 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
28333 G_SETUP_VALUE_TO_tbl(K) :=NULL;
28334 G_GROUPING_NUMBER_tbl(K) :=NULL;
28335 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_CURRENCY';
28336 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
28337 G_DATATYPE_tbl(K) :=NULL;
28338 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
28339 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
28340 G_QUALIFIER_TYPE_TBL(K) :=null;
28341 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
28342 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
28343 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28344 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
28345 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
28346 K:= K+1;
28347 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28348 engine_debug('The value of K: ' || K);
28349 END IF;
28350 end loop;
28351 end if;
28352 END LOOP;
28353
28354 qp_debug_util.tstop('L_PROD_CUR_CURRENCY');
28355
28356 CLOSE l_prod_cur_currency;
28357
28358 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28359 engine_debug('before l_prod_pric_cur_currency...');
28360 END IF;
28361
28362 OPEN l_prod_pric_cur_currency(p_pricing_phase_id);
28363
28364 qp_debug_util.tstart('L_PROD_PRIC_CUR_CURRENCY','Cursor Loop l_prod_pric_cur_currency');
28365
28366 LOOP
28367 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
28368 deleted here. There is no need to explicitly delete since BULK COLLECT
28369 will truncate the data before populating. */
28370
28371 -- fetch into _P , and _PR tables here
28372 FETCH l_prod_pric_cur_currency BULK COLLECT INTO
28373 G_LIST_HEADER_ID_TBL_P,
28374 G_LIST_LINE_ID_TBL_P,
28375 G_LIST_LINE_TYPE_TBL_P,
28376 G_LINE_INDEX_TBL_P,
28377 G_APPLIED_FLAG_TBL_P,
28378 G_ATTRIBUTE_LEVEL_TBL_P,
28379 G_ATTRIBUTE_TYPE_TBL_P,
28380 G_CONTEXT_TBL_P,
28381 G_ATTRIBUTE_TBL_P,
28382 G_VALUE_FROM_TBL_P,
28383 G_PRODUCT_UOM_CODE_TBL_P,
28384 G_EXCLUDER_FLAG_TBL_P,
28385 G_AUTOMATIC_FLAG_TBL_P,
28386 G_MODIFIER_LEVEL_CODE_TBL_P,
28387 G_PRIMARY_UOM_FLAG_TBL_P,
28388 G_OPER_CALCULATION_CODE_TBL_P,
28389 G_OPERAND_VALUE_TBL_P,
28390 G_PRICING_GROUP_SEQUENCE_TBL_P,
28391 G_LIST_TYPE_CODE_TBL_P,
28392 G_ROUNDING_FACTOR_TBL_P,
28393 G_PRICING_PHASE_ID_TBL_P,
28394 G_PRICE_BREAK_TYPE_CODE_TBL_P,
28395 G_INCOMP_GRP_CODE_TBL_P,
28396 G_PRICE_FORMULA_ID_TBL_P,
28397 G_PRODUCT_PRECEDENCE_TBL_P,
28398 G_LIST_LINE_NO_TBL_P,
28399 G_ATTRIBUTE_LEVEL_TBL_PR,
28400 G_ATTRIBUTE_TYPE_TBL_PR,
28401 G_CONTEXT_TBL_PR,
28402 G_ATTRIBUTE_TBL_PR,
28403 G_VALUE_FROM_TBL_PR,
28404 G_SETUP_VALUE_FROM_TBL_PR,
28405 G_SETUP_VALUE_TO_TBL_PR,
28406 G_OPERATOR_TYPE_TBL_PR,
28407 G_DATATYPE_TBL_PR,
28408 G_CURRENCY_DETAIL_ID_TBL_P,
28409 G_CURRENCY_HEADER_ID_TBL_P,
28410 G_SELLING_ROUNDING_TBL_P,
28411 G_ORDER_CURRENCY_TBL_P,
28412 G_PRICING_EFFECTIVE_DATE_TBL_P ,
28413 G_BASE_CURRENCY_CODE_TBL_P
28414 ,G_BREAK_UOM_TBL_P /* Proration */
28415 ,G_BREAK_CONTEXT_TBL_P /* Proration */
28416 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
28417 LIMIT nROWS;
28418 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
28419
28420 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
28421 for i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
28422 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
28423 l_prod_qual_count := l_prod_qual_count + 1;
28424 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
28425
28426 -- set attributes
28427 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
28428 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
28429 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
28430 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
28431 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
28432 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_PRICING_CURRENCY';
28433 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
28434 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
28435 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
28436 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
28437 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
28438 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
28439 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_PRICING_CURRENCY';
28440 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
28441 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
28442 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
28443 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
28444 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
28445 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
28446 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
28447 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
28448 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
28449 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
28450 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
28451 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
28452 G_CURRENCY_DETAIL_ID_TBL(M) := G_CURRENCY_DETAIL_ID_TBL_P(i);
28453 G_CURRENCY_HEADER_ID_TBL(M) := G_CURRENCY_HEADER_ID_TBL_P(i);
28454 G_SELLING_ROUNDING_TBL(M) := G_SELLING_ROUNDING_TBL_P(i);
28455 G_ORDER_CURRENCY_TBL(M) := G_ORDER_CURRENCY_TBL_P(i);
28456 G_BASE_CURRENCY_CODE_TBL(M) := G_BASE_CURRENCY_CODE_TBL_P(i);
28457 G_PRICING_EFFECTIVE_DATE_TBL(M) := G_PRICING_EFFECTIVE_DATE_TBL_P(i);
28458 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
28459 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
28460 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
28461
28462 M:=M+1;
28463 lq_line_index := G_LINE_INDEX_TBL_P(i);
28464 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
28465 end if;
28466
28467 -- set product attributes
28468 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
28469 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
28470 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
28471 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
28472 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
28473 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
28474 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
28475 G_VALIDATED_FLAG_tbl(K) := G_NO;
28476 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
28477 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
28478 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
28479 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
28480 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
28481 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
28482 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
28483 G_SETUP_VALUE_TO_tbl(K) :=NULL;
28484 G_GROUPING_NUMBER_tbl(K) :=NULL;
28485 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_PRICING_CURRENCY';
28486 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
28487 G_DATATYPE_tbl(K) :=NULL;
28488 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
28489 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
28490 --G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_Q(i); -- fix bug 2767927 big search failed with no data found
28491 G_QUALIFIER_TYPE_TBL(K) :=null;
28492 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
28493 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
28494 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28495 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
28496 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
28497 K:= K+1;
28498 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28499 engine_debug('The value of K: ' || K);
28500
28501 END IF;
28502 --set pricing attributes
28503 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
28504 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
28505 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_PR(I);
28506 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_PR(I);
28507 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_PR(I);
28508 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_PR(I);
28509 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_PR(I);
28510 G_COMPARISON_OPERATOR_TYPE_tbl(K):=G_OPERATOR_TYPE_TBL_PR(I);
28511 G_VALIDATED_FLAG_tbl(K) :=G_NO;
28512 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
28513 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
28514 G_PRICING_ATTR_FLAG_tbl(K) :=G_YES;
28515 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
28516 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
28517 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
28518 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
28519 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
28520 G_GROUPING_NUMBER_tbl(K) :=NULL;
28521 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_PRICING_CURRENCY';
28522 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
28523 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
28524 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
28525 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
28526 G_QUALIFIER_TYPE_TBL(K) :=NULL;
28527 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
28528 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
28529 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28530 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
28531 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
28532 K:= K+1;
28533 END IF;
28534 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28535 engine_debug('The value of K: ' || K);
28536 END IF;
28537 end loop;
28538 end if;
28539 END LOOP;
28540 qp_debug_util.tstop('L_PROD_PRIC_CUR_CURRENCY');
28541 CLOSE l_prod_pric_cur_currency; -- 4331801/4365538
28542 else -- vivek, multi currency not installed, not used
28543 --selecting lists that match product and qualifiers attributes
28544
28545 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28546 engine_debug('before l_prod_qual_cur...');
28547 END IF;
28548
28549 OPEN l_prod_qual_cur(p_pricing_phase_id);
28550 qp_debug_util.tstart('L_PROD_QUAL_CUR','Cursor Loop l_prod_qual_cur');
28551 LOOP
28552 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
28553 deleted here. There is no need to explicitly delete since BULK COLLECT
28554 will truncate the data before populating. */
28555
28556 -- fetch into _P and _Q tables here
28557 FETCH l_prod_qual_cur BULK COLLECT INTO
28558 G_LIST_HEADER_ID_TBL_P,
28559 G_LIST_LINE_ID_TBL_P,
28560 G_LIST_LINE_TYPE_TBL_P,
28561 G_LINE_INDEX_TBL_P,
28562 G_APPLIED_FLAG_TBL_P,
28563 G_ATTRIBUTE_LEVEL_TBL_P,
28564 G_ATTRIBUTE_TYPE_TBL_P,
28565 G_CONTEXT_TBL_P,
28566 G_ATTRIBUTE_TBL_P,
28567 G_VALUE_FROM_TBL_P,
28568 G_PRODUCT_UOM_CODE_TBL_P,
28569 G_EXCLUDER_FLAG_TBL_P,
28570 G_CONTEXT_TBL_Q,
28571 G_ATTRIBUTE_TBL_Q,
28572 G_VALUE_FROM_TBL_Q,
28573 G_GROUPING_NO_TBL_Q,
28574 G_QUALIFIER_PRECEDENCE_TBL_Q,
28575 G_DATATYPE_TBL_Q,
28576 G_SETUP_VALUE_FROM_TBL_Q,
28577 G_SETUP_VALUE_TO_TBL_Q,
28578 G_AUTOMATIC_FLAG_TBL_P,
28579 G_MODIFIER_LEVEL_CODE_TBL_P,
28580 G_PRIMARY_UOM_FLAG_TBL_P,
28581 G_OPER_CALCULATION_CODE_TBL_P,
28582 G_OPERAND_VALUE_TBL_P,
28583 G_PRICING_GROUP_SEQUENCE_TBL_P,
28584 G_LIST_TYPE_CODE_TBL_P,
28585 G_ROUNDING_FACTOR_TBL_P,
28586 G_PRICING_PHASE_ID_TBL_P,
28587 G_PRICE_BREAK_TYPE_CODE_TBL_P,
28588 G_INCOMP_GRP_CODE_TBL_P,
28589 G_PRICE_FORMULA_ID_TBL_P,
28590 G_PRODUCT_PRECEDENCE_TBL_P,
28591 G_LIST_LINE_NO_TBL_P,
28592 G_QUALIFIER_TYPE_TBL_Q
28593 ,G_BREAK_UOM_TBL_P /* Proration */
28594 ,G_BREAK_CONTEXT_TBL_P /* Proration */
28595 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
28596 LIMIT nROWS;
28597
28598 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
28599
28600 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
28601 for i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
28602 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
28603 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28604 engine_debug('Product_Qualifier');
28605 END IF;
28606 l_prod_qual_count := l_prod_qual_count + 1;
28607 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
28608
28609 -- set attributes
28610 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
28611 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
28612 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
28613 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
28614 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
28615 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_QUALIFIER';
28616 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
28617 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
28618 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
28619 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
28620 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
28621 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
28622 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_QUALIFIER';
28623 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
28624 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
28625 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
28626 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
28627 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
28628 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
28629 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
28630 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
28631 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
28632 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
28633 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
28634 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
28635 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
28636 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
28637 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
28638
28639 M:=M+1;
28640 lq_line_index := G_LINE_INDEX_TBL_P(i);
28641 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
28642 end if;
28643
28644 -- set product attributes
28645 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
28646 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
28647 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
28648 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
28649 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
28650 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
28651 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
28652 G_VALIDATED_FLAG_tbl(K) := G_NO;
28653 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
28654 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
28655 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
28656 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
28657 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
28658 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
28659 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
28660 G_SETUP_VALUE_TO_tbl(K) :=NULL;
28661 G_GROUPING_NUMBER_tbl(K) :=NULL;
28662 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER';
28663 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
28664 G_DATATYPE_tbl(K) :=NULL;
28665 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
28666 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
28667 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_Q(i);
28668 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
28669 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
28670 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28671 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
28672 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
28673 K:= K+1;
28674 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28675 engine_debug('The value of K: ' || K);
28676
28677 END IF;
28678 -- set qualifier attributes
28679 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
28680 G_ATTRIBUTE_LEVEL_tbl(K) := nvl(G_ATTRIBUTE_LEVEL_TBL_P(i),'X');
28681 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
28682 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_Q(i);
28683 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_Q(i);
28684 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_Q(i);
28685 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
28686 G_VALIDATED_FLAG_tbl(K) := G_NO;
28687 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
28688 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
28689 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
28690 G_LINE_DETAIL_INDEX_tbl(K) := L_LINE_DETAIL_INDEX;
28691 G_LIST_HEADER_ID_tbl(K) := G_LIST_HEADER_ID_TBL_P(i);
28692 G_LIST_LINE_ID_tbl(K) := G_LIST_LINE_ID_TBL_P(i);
28693 G_SETUP_VALUE_FROM_tbl(K) := G_SETUP_VALUE_FROM_TBL_Q(i);
28694 G_SETUP_VALUE_TO_tbl(K) := G_SETUP_VALUE_TO_TBL_Q(i);
28695 G_GROUPING_NUMBER_tbl(K) := G_GROUPING_NO_TBL_Q(i);
28696 G_PRICING_STATUS_TEXT_tbl(K) := 'PRODUCT_QUALIFIER';
28697 G_QUALIFIER_PRECEDENCE_tbl(K) := G_QUALIFIER_PRECEDENCE_TBL_Q(i);
28698 G_DATATYPE_tbl(K) := G_DATATYPE_TBL_Q(i);
28699 G_EXCLUDER_FLAG_TBL(K) := G_EXCLUDER_FLAG_TBL_P(i);
28700 G_PRODUCT_UOM_CODE_TBL(K) := G_PRODUCT_UOM_CODE_TBL_P(i);
28701 G_QUALIFIER_TYPE_TBL(K) := G_QUALIFIER_TYPE_TBL_Q(i);
28702 G_PRICING_PHASE_ID_TBL_A(K) := G_PRICING_PHASE_ID_TBL_P(i);
28703 G_INCOMP_GRP_CODE_TBL_A(K) := G_INCOMP_GRP_CODE_TBL_P(i);
28704 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := 'NULL';
28705 G_MODIFIER_LEVEL_CODE_TBL_A(K) := G_MODIFIER_LEVEL_CODE_TBL_P(i);
28706 G_PRIMARY_UOM_FLAG_TBL_A(K) := G_PRIMARY_UOM_FLAG_TBL_P(i);
28707 K:= K+1;
28708 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28709 engine_debug('The value of K: ' || K);
28710
28711 END IF;
28712 end loop;
28713 end if;
28714 END LOOP;
28715 qp_debug_util.tstop('L_PROD_QUAL_CUR');
28716
28717 CLOSE l_prod_qual_cur;
28718
28719 lq_line_index := -9999;
28720 lq_list_line_id := -9999;
28721
28722 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28723 engine_debug('before l_prod_qual_pric_cur...');
28724 END IF;
28725
28726 OPEN l_prod_qual_pric_cur(p_pricing_phase_id);
28727 qp_debug_util.tstart('L_PROD_QUAL_PRIC_CUR','Cursor Loop l_prod_qual_pric_cur');
28728 LOOP
28729 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
28730 deleted here. There is no need to explicitly delete since BULK COLLECT
28731 will truncate the data before populating. */
28732
28733 -- fetch into _P , _Q tables and _PR tables here
28734 FETCH l_prod_qual_pric_cur BULK COLLECT INTO
28735 G_LIST_HEADER_ID_TBL_P,
28736 G_LIST_LINE_ID_TBL_P,
28737 G_LIST_LINE_TYPE_TBL_P,
28738 G_LINE_INDEX_TBL_P,
28739 G_APPLIED_FLAG_TBL_P,
28740 G_ATTRIBUTE_LEVEL_TBL_P,
28741 G_ATTRIBUTE_TYPE_TBL_P,
28742 G_CONTEXT_TBL_P,
28743 G_ATTRIBUTE_TBL_P,
28744 G_VALUE_FROM_TBL_P,
28745 G_PRODUCT_UOM_CODE_TBL_P,
28746 G_EXCLUDER_FLAG_TBL_P,
28747 G_CONTEXT_TBL_Q,
28748 G_ATTRIBUTE_TBL_Q,
28749 G_VALUE_FROM_TBL_Q,
28750 G_GROUPING_NO_TBL_Q,
28751 G_QUALIFIER_PRECEDENCE_TBL_Q,
28752 G_DATATYPE_TBL_Q,
28753 G_SETUP_VALUE_FROM_TBL_Q,
28754 G_SETUP_VALUE_TO_TBL_Q,
28755 G_AUTOMATIC_FLAG_TBL_P,
28756 G_MODIFIER_LEVEL_CODE_TBL_P,
28757 G_PRIMARY_UOM_FLAG_TBL_P,
28758 G_OPER_CALCULATION_CODE_TBL_P,
28759 G_OPERAND_VALUE_TBL_P,
28760 G_PRICING_GROUP_SEQUENCE_TBL_P,
28761 G_LIST_TYPE_CODE_TBL_P,
28762 G_ROUNDING_FACTOR_TBL_P,
28763 G_PRICING_PHASE_ID_TBL_P,
28764 G_PRICE_BREAK_TYPE_CODE_TBL_P,
28765 G_INCOMP_GRP_CODE_TBL_P,
28766 G_PRICE_FORMULA_ID_TBL_P,
28767 G_PRODUCT_PRECEDENCE_TBL_P,
28768 G_LIST_LINE_NO_TBL_P,
28769 G_QUALIFIER_TYPE_TBL_Q ,
28770 G_ATTRIBUTE_LEVEL_TBL_PR,
28771 G_ATTRIBUTE_TYPE_TBL_PR,
28772 G_CONTEXT_TBL_PR,
28773 G_ATTRIBUTE_TBL_PR,
28774 G_VALUE_FROM_TBL_PR,
28775 G_SETUP_VALUE_FROM_TBL_PR,
28776 G_SETUP_VALUE_TO_TBL_PR,
28777 G_OPERATOR_TYPE_TBL_PR,
28778 G_DATATYPE_TBL_PR
28779 ,G_BREAK_UOM_TBL_P /* Proration */
28780 ,G_BREAK_CONTEXT_TBL_P /* Proration */
28781 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
28782 LIMIT nROWS;
28783 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
28784
28785 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
28786 for i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
28787 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
28788 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28789 engine_debug('Product_Qualifier_Pricing');
28790 END IF;
28791 l_prod_qual_count := l_prod_qual_count + 1;
28792 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
28793
28794 -- set attributes
28795 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
28796 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
28797 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
28798 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
28799 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
28800 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_QUALIFIER_PRICING';
28801 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
28802 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
28803 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
28804 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
28805 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
28806 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
28807 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_QUALIFIER_PRICING';
28808 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
28809 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
28810 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
28811 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
28812 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
28813 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
28814 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
28815 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
28816 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
28817 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
28818 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
28819 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
28820 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
28821 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
28822 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
28823
28824 M:=M+1;
28825 lq_line_index := G_LINE_INDEX_TBL_P(i);
28826 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
28827 end if;
28828
28829 -- set product attributes
28830 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
28831 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
28832 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
28833 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
28834 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
28835 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
28836 G_COMPARISON_OPERATOR_TYPE_tbl(K):= NULL;
28837 G_VALIDATED_FLAG_tbl(K) := G_NO;
28838 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
28839 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
28840 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
28841 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
28842 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
28843 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
28844 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
28845 G_SETUP_VALUE_TO_tbl(K) :=NULL;
28846 G_GROUPING_NUMBER_tbl(K) :=NULL;
28847 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_PRICING';
28848 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
28849 G_DATATYPE_tbl(K) :=NULL;
28850 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
28851 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
28852 G_QUALIFIER_TYPE_TBL(K) :=G_QUALIFIER_TYPE_TBL_Q(i);
28853 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
28854 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
28855 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28856 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
28857 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
28858 K:= K+1;
28859 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28860 engine_debug('The value of K: ' || K);
28861
28862 END IF;
28863 -- set qualifier attributes
28864 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
28865 G_ATTRIBUTE_LEVEL_tbl(K) := nvl(G_ATTRIBUTE_LEVEL_TBL_P(i),'X');
28866 G_ATTRIBUTE_TYPE_tbl(K) := G_QUALIFIER_TYPE;
28867 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_Q(i);
28868 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_Q(i);
28869 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_Q(i);
28870 G_COMPARISON_OPERATOR_TYPE_tbl(K):= NULL;
28871 G_VALIDATED_FLAG_tbl(K) := G_NO;
28872 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
28873 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
28874 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
28875 G_LINE_DETAIL_INDEX_tbl(K) := L_LINE_DETAIL_INDEX;
28876 G_LIST_HEADER_ID_tbl(K) := G_LIST_HEADER_ID_TBL_P(i);
28877 G_LIST_LINE_ID_tbl(K) := G_LIST_LINE_ID_TBL_P(i);
28878 G_SETUP_VALUE_FROM_tbl(K) := G_SETUP_VALUE_FROM_TBL_Q(i);
28879 G_SETUP_VALUE_TO_tbl(K) := G_SETUP_VALUE_TO_TBL_Q(i);
28880 G_GROUPING_NUMBER_tbl(K) := G_GROUPING_NO_TBL_Q(i);
28881 G_PRICING_STATUS_TEXT_tbl(K) := 'PRODUCT_QUALIFIER_PRICING';
28882 G_QUALIFIER_PRECEDENCE_tbl(K) := G_QUALIFIER_PRECEDENCE_TBL_Q(i);
28883 G_DATATYPE_tbl(K) := G_DATATYPE_TBL_Q(i);
28884 G_EXCLUDER_FLAG_TBL(K) := G_EXCLUDER_FLAG_TBL_P(i);
28885 G_PRODUCT_UOM_CODE_TBL(K) := G_PRODUCT_UOM_CODE_TBL_P(i);
28886 G_QUALIFIER_TYPE_TBL(K) := G_QUALIFIER_TYPE_TBL_Q(i);
28887 G_PRICING_PHASE_ID_TBL_A(K) := G_PRICING_PHASE_ID_TBL_P(i);
28888 G_INCOMP_GRP_CODE_TBL_A(K) := G_INCOMP_GRP_CODE_TBL_P(i);
28889 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) := 'NULL';
28890 G_MODIFIER_LEVEL_CODE_TBL_A(K) := G_MODIFIER_LEVEL_CODE_TBL_P(i);
28891 G_PRIMARY_UOM_FLAG_TBL_A(K) := G_PRIMARY_UOM_FLAG_TBL_P(i);
28892 K:= K+1;
28893
28894 --set pricing attributes
28895 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
28896 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
28897 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_PR(I);
28898 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_PR(I);
28899 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_PR(I);
28900 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_PR(I);
28901 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_PR(I);
28902 G_COMPARISON_OPERATOR_TYPE_tbl(K):=G_OPERATOR_TYPE_TBL_PR(I);
28903 G_VALIDATED_FLAG_tbl(K) :=G_NO;
28904 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
28905 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
28906 G_PRICING_ATTR_FLAG_tbl(K) :=G_YES;
28907 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
28908 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
28909 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
28910 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
28911 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
28912 G_GROUPING_NUMBER_tbl(K) :=NULL;
28913 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_QUALIFIER_PRICING';
28914 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
28915 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
28916 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
28917 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
28918 G_QUALIFIER_TYPE_TBL(K) :=NULL;
28919 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
28920 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
28921 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
28922 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
28923 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
28924 K:= K+1;
28925 END IF;
28926 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28927 engine_debug('The value of K: ' || K);
28928
28929 END IF;
28930 end loop;
28931 end if;
28932 END LOOP;
28933
28934 qp_debug_util.tstop('L_PROD_QUAL_PRIC_CUR');
28935 CLOSE l_prod_qual_pric_cur;
28936
28937 lq_line_index := -9999;
28938 lq_list_line_id := -9999;
28939
28940 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28941 engine_debug('before l_prod_cur...');
28942 END IF;
28943
28944 OPEN l_prod_cur(p_pricing_phase_id);
28945 qp_debug_util.tstart('L_PROD_CUR','Cursor Loop l_prod_cur');
28946 LOOP
28947 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
28948 deleted here. There is no need to explicitly delete since BULK COLLECT
28949 will truncate the data before populating. */
28950
28951 -- fetch into _P and _Q tables here
28952 FETCH l_prod_cur BULK COLLECT INTO
28953 G_LIST_HEADER_ID_TBL_P,
28954 G_LIST_LINE_ID_TBL_P,
28955 G_LIST_LINE_TYPE_TBL_P,
28956 G_LINE_INDEX_TBL_P,
28957 G_APPLIED_FLAG_TBL_P,
28958 G_ATTRIBUTE_LEVEL_TBL_P,
28959 G_ATTRIBUTE_TYPE_TBL_P,
28960 G_CONTEXT_TBL_P,
28961 G_ATTRIBUTE_TBL_P,
28962 G_VALUE_FROM_TBL_P,
28963 G_PRODUCT_UOM_CODE_TBL_P,
28964 G_EXCLUDER_FLAG_TBL_P,
28965 G_AUTOMATIC_FLAG_TBL_P,
28966 G_MODIFIER_LEVEL_CODE_TBL_P,
28967 G_PRIMARY_UOM_FLAG_TBL_P,
28968 G_OPER_CALCULATION_CODE_TBL_P,
28969 G_OPERAND_VALUE_TBL_P,
28970 G_PRICING_GROUP_SEQUENCE_TBL_P,
28971 G_LIST_TYPE_CODE_TBL_P,
28972 G_ROUNDING_FACTOR_TBL_P,
28973 G_PRICING_PHASE_ID_TBL_P,
28974 G_PRICE_BREAK_TYPE_CODE_TBL_P,
28975 G_INCOMP_GRP_CODE_TBL_P,
28976 G_PRICE_FORMULA_ID_TBL_P,
28977 G_PRODUCT_PRECEDENCE_TBL_P,
28978 G_LIST_LINE_NO_TBL_P
28979 ,G_BREAK_UOM_TBL_P /* Proration */
28980 ,G_BREAK_CONTEXT_TBL_P /* Proration */
28981 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
28982 LIMIT nROWS;
28983
28984 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
28985
28986 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
28987 for i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
28988 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
28989 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
28990 engine_debug('Product Only');
28991 END IF;
28992 l_prod_qual_count := l_prod_qual_count + 1;
28993 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
28994
28995 -- set attributes
28996 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
28997 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
28998 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
28999 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
29000 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
29001 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_ONLY';
29002 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
29003 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
29004 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
29005 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
29006 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
29007 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
29008 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_ONLY';
29009 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
29010 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
29011 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
29012 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
29013 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
29014 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
29015 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
29016 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
29017 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
29018 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
29019 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
29020 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
29021 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
29022 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
29023 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
29024
29025 M:=M+1;
29026 lq_line_index := G_LINE_INDEX_TBL_P(i);
29027 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
29028 end if;
29029
29030 -- set product attributes
29031 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
29032 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
29033 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
29034 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
29035 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
29036 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
29037 G_COMPARISON_OPERATOR_TYPE_tbl(K):=NULL;
29038 G_VALIDATED_FLAG_tbl(K) := G_NO;
29039 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
29040 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
29041 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
29042 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
29043 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
29044 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
29045 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
29046 G_SETUP_VALUE_TO_tbl(K) :=NULL;
29047 G_GROUPING_NUMBER_tbl(K) :=NULL;
29048 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_ONLY';
29049 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
29050 G_DATATYPE_tbl(K) :=NULL;
29051 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
29052 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
29053 G_QUALIFIER_TYPE_TBL(K) :=NULL;
29054 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
29055 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
29056 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
29057 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
29058 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
29059 K:= K+1;
29060 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29061 engine_debug('The value of K: ' || K);
29062
29063 END IF;
29064 end loop;
29065 end if;
29066 END LOOP;
29067 qp_debug_util.tstop('L_PROD_CUR');
29068 CLOSE l_prod_cur;
29069
29070 lq_line_index := -9999;
29071 lq_list_line_id := -9999;
29072
29073 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29074 engine_debug('before l_prod_pric_cur...');
29075 END IF;
29076 OPEN l_prod_pric_cur(p_pricing_phase_id);
29077
29078 qp_debug_util.tstart('L_PROD_PRIC_CUR','Cursor Loop l_prod_pric_cur');
29079 LOOP
29080 /* 4331801/4365538: The PL/SQL tables used for BULK COLLECT were previously
29081 deleted here. There is no need to explicitly delete since BULK COLLECT
29082 will truncate the data before populating. */
29083
29084 -- fetch into _P , and _PR tables here
29085 FETCH l_prod_pric_cur BULK COLLECT INTO
29086 G_LIST_HEADER_ID_TBL_P,
29087 G_LIST_LINE_ID_TBL_P,
29088 G_LIST_LINE_TYPE_TBL_P,
29089 G_LINE_INDEX_TBL_P,
29090 G_APPLIED_FLAG_TBL_P,
29091 G_ATTRIBUTE_LEVEL_TBL_P,
29092 G_ATTRIBUTE_TYPE_TBL_P,
29093 G_CONTEXT_TBL_P,
29094 G_ATTRIBUTE_TBL_P,
29095 G_VALUE_FROM_TBL_P,
29096 G_PRODUCT_UOM_CODE_TBL_P,
29097 G_EXCLUDER_FLAG_TBL_P,
29098 G_AUTOMATIC_FLAG_TBL_P,
29099 G_MODIFIER_LEVEL_CODE_TBL_P,
29100 G_PRIMARY_UOM_FLAG_TBL_P,
29101 G_OPER_CALCULATION_CODE_TBL_P,
29102 G_OPERAND_VALUE_TBL_P,
29103 G_PRICING_GROUP_SEQUENCE_TBL_P,
29104 G_LIST_TYPE_CODE_TBL_P,
29105 G_ROUNDING_FACTOR_TBL_P,
29106 G_PRICING_PHASE_ID_TBL_P,
29107 G_PRICE_BREAK_TYPE_CODE_TBL_P,
29108 G_INCOMP_GRP_CODE_TBL_P,
29109 G_PRICE_FORMULA_ID_TBL_P,
29110 G_PRODUCT_PRECEDENCE_TBL_P,
29111 G_LIST_LINE_NO_TBL_P,
29112 G_ATTRIBUTE_LEVEL_TBL_PR,
29113 G_ATTRIBUTE_TYPE_TBL_PR,
29114 G_CONTEXT_TBL_PR,
29115 G_ATTRIBUTE_TBL_PR,
29116 G_VALUE_FROM_TBL_PR,
29117 G_SETUP_VALUE_FROM_TBL_PR,
29118 G_SETUP_VALUE_TO_TBL_PR,
29119 G_OPERATOR_TYPE_TBL_PR,
29120 G_DATATYPE_TBL_PR
29121 ,G_BREAK_UOM_TBL_P /* Proration */
29122 ,G_BREAK_CONTEXT_TBL_P /* Proration */
29123 ,G_BREAK_ATTRIBUTE_TBL_P /* Proration */
29124 LIMIT nROWS;
29125 EXIT WHEN G_LINE_INDEX_TBL_P.COUNT = 0;
29126
29127 if (G_LINE_INDEX_TBL_P.COUNT > 0) then
29128 for i in G_LINE_INDEX_TBL_P.FIRST .. G_LINE_INDEX_TBL_P.LAST loop
29129 if (lq_line_index <> G_LINE_INDEX_TBL_P(i) or lq_list_line_id <> G_LIST_LINE_ID_TBL_P(i)) then
29130 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29131 engine_debug('Product Pricing Only');
29132 END IF;
29133 l_prod_qual_count := l_prod_qual_count + 1;
29134 L_LINE_DETAIL_INDEX :=GET_LINE_DETAIL_INDEX;
29135
29136 -- set attributes
29137 G_LINE_INDEX_LD_TBL(M) :=G_LINE_INDEX_TBL_P(i);
29138 G_LINE_DETAIL_INDEX_LD_TBL(M) :=L_LINE_DETAIL_INDEX;
29139 G_LIST_HEADER_ID_LD_TBL(M) :=G_LIST_HEADER_ID_TBL_P(i);
29140 G_LIST_LINE_ID_LD_TBL(M) :=G_LIST_LINE_ID_TBL_P(i);
29141 G_PRICING_STATUS_CODE_LD_TBL(M) :=G_STATUS_NEW;
29142 G_PRICING_STATUS_TEXT_LD_TBL(M) := 'PRODUCT_PRICING_ONLY';
29143 G_APPLIED_FLAG_LD_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
29144 G_PROCESSED_FLAG_LD_TBL(M) :=G_NOT_PROCESSED;
29145 G_LINE_DETAIL_TYPE_CODE_TBL(M) :='NULL';
29146 G_PRICE_BREAK_TYPE_CODE_TBL(M) :=G_PRICE_BREAK_TYPE_CODE_TBL_P(i);
29147 G_LIST_LINE_TYPE_TBL(M) :=G_LIST_LINE_TYPE_TBL_P(i);
29148 G_LIST_TYPE_CODE_TBL(M) :=G_LIST_TYPE_CODE_TBL_P(i);
29149 G_CREATED_FROM_SQL_TBL(M) :='PRODUCT_PRICING_ONLY';
29150 G_PRICING_GROUP_SEQUENCE_TBL(M) :=G_PRICING_GROUP_SEQUENCE_TBL_P(i);
29151 G_PRICING_PHASE_ID_TBL(M) :=G_PRICING_PHASE_ID_TBL_P(i);
29152 G_OPERAND_CALCULATION_CODE_TBL(M) :=G_OPER_CALCULATION_CODE_TBL_P(i);
29153 G_OPERAND_VALUE_TBL(M) :=G_OPERAND_VALUE_TBL_P(i);
29154 G_PRICE_FORMULA_ID_TBL(M) :=G_PRICE_FORMULA_ID_TBL_P(i);
29155 G_PRODUCT_PRECEDENCE_TBL(M) :=G_PRODUCT_PRECEDENCE_TBL_P(i);
29156 G_INCOMP_GRP_CODE_TBL(M) :=G_INCOMP_GRP_CODE_TBL_P(i);
29157 G_AUTOMATIC_FLAG_TBL(M) :=G_AUTOMATIC_FLAG_TBL_P(i);
29158 G_PRIMARY_UOM_FLAG_TBL(M) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
29159 G_MODIFIER_LEVEL_CODE_TBL(M) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
29160 G_LIST_LINE_NO_TBL(M) :=G_LIST_LINE_NO_TBL_P(i);
29161 G_ROUNDING_FACTOR_TBL(M) :=G_ROUNDING_FACTOR_TBL_P(i);
29162 G_BREAK_UOM_TBL(M) := G_BREAK_UOM_TBL_P(i); /* Proration */
29163 G_BREAK_CONTEXT_TBL(M) := G_BREAK_CONTEXT_TBL_P(i); /* Proration */
29164 G_BREAK_ATTRIBUTE_TBL(M) := G_BREAK_ATTRIBUTE_TBL_P(i); /* Proration */
29165
29166 M:=M+1;
29167 lq_line_index := G_LINE_INDEX_TBL_P(i);
29168 lq_list_line_id := G_LIST_LINE_ID_TBL_P(i);
29169 end if;
29170
29171 -- set product attributes
29172 G_LINE_INDEX_tbl(K) := G_LINE_INDEX_TBL_P(i);
29173 G_ATTRIBUTE_LEVEL_tbl(K) := G_ATTRIBUTE_LEVEL_TBL_P(i);
29174 G_ATTRIBUTE_TYPE_tbl(K) := G_ATTRIBUTE_TYPE_TBL_P(i);
29175 G_CONTEXT_tbl(K) := G_CONTEXT_TBL_P(i);
29176 G_ATTRIBUTE_tbl(K) := G_ATTRIBUTE_TBL_P(i);
29177 G_VALUE_FROM_tbl(K) := G_VALUE_FROM_TBL_P(i);
29178 G_COMPARISON_OPERATOR_TYPE_tbl(K):= NULL;
29179 G_VALIDATED_FLAG_tbl(K) := G_NO;
29180 G_APPLIED_FLAG_tbl(K) := G_APPLIED_FLAG_TBL_P(i);
29181 G_PRICING_STATUS_CODE_tbl(K) := G_STATUS_NEW;
29182 G_PRICING_ATTR_FLAG_tbl(K) := G_NO;
29183 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
29184 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(i);
29185 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(i);
29186 G_SETUP_VALUE_FROM_tbl(K) :=NULL;
29187 G_SETUP_VALUE_TO_tbl(K) :=NULL;
29188 G_GROUPING_NUMBER_tbl(K) :=NULL;
29189 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_PRICING_ONLY';
29190 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
29191 G_DATATYPE_tbl(K) :=NULL;
29192 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(i);
29193 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(i);
29194 G_QUALIFIER_TYPE_TBL(K) :=NULL;
29195 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(i);
29196 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(i);
29197 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
29198 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(i);
29199 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(i);
29200 K:= K+1;
29201 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29202 engine_debug('The value of K: ' || K);
29203
29204 END IF;
29205 --set pricing attributes
29206 IF (G_CONTEXT_TBL_PR(I) IS NOT NULL) THEN
29207 G_LINE_INDEX_tbl(K) :=G_LINE_INDEX_TBL_P(I);
29208 G_ATTRIBUTE_LEVEL_tbl(K) :=G_ATTRIBUTE_LEVEL_TBL_PR(I);
29209 G_ATTRIBUTE_TYPE_tbl(K) :=G_ATTRIBUTE_TYPE_TBL_PR(I);
29210 G_CONTEXT_tbl(K) :=G_CONTEXT_TBL_PR(I);
29211 G_ATTRIBUTE_tbl(K) :=G_ATTRIBUTE_TBL_PR(I);
29212 G_VALUE_FROM_tbl(K) :=G_VALUE_FROM_TBL_PR(I);
29213 G_COMPARISON_OPERATOR_TYPE_tbl(K):=G_OPERATOR_TYPE_TBL_PR(I);
29214 G_VALIDATED_FLAG_tbl(K) :=G_NO;
29215 G_APPLIED_FLAG_tbl(K) :=G_APPLIED_FLAG_TBL_P(I);
29216 G_PRICING_STATUS_CODE_tbl(K) :=G_STATUS_NEW;
29217 G_PRICING_ATTR_FLAG_tbl(K) :=G_YES;
29218 G_LINE_DETAIL_INDEX_tbl(K) :=L_LINE_DETAIL_INDEX;
29219 G_LIST_HEADER_ID_tbl(K) :=G_LIST_HEADER_ID_TBL_P(I);
29220 G_LIST_LINE_ID_tbl(K) :=G_LIST_LINE_ID_TBL_P(I);
29221 G_SETUP_VALUE_FROM_tbl(K) :=G_SETUP_VALUE_FROM_TBL_PR(I);
29222 G_SETUP_VALUE_TO_tbl(K) :=G_SETUP_VALUE_TO_TBL_PR(I);
29223 G_GROUPING_NUMBER_tbl(K) :=NULL;
29224 G_PRICING_STATUS_TEXT_tbl(K) :='PRODUCT_PRICING_ONLY';
29225 G_QUALIFIER_PRECEDENCE_tbl(K) :=NULL;
29226 G_DATATYPE_tbl(K) :=G_DATATYPE_TBL_PR(I);
29227 G_EXCLUDER_FLAG_TBL(K) :=G_EXCLUDER_FLAG_TBL_P(I);
29228 G_PRODUCT_UOM_CODE_TBL(K) :=G_PRODUCT_UOM_CODE_TBL_P(I);
29229 G_QUALIFIER_TYPE_TBL(K) :=NULL;
29230 G_PRICING_PHASE_ID_TBL_A(K) :=G_PRICING_PHASE_ID_TBL_P(I);
29231 G_INCOMP_GRP_CODE_TBL_A(K) :=G_INCOMP_GRP_CODE_TBL_P(I);
29232 G_LINE_DETAIL_TYPE_CODE_TBL_A(K) :='NULL';
29233 G_MODIFIER_LEVEL_CODE_TBL_A(K) :=G_MODIFIER_LEVEL_CODE_TBL_P(I);
29234 G_PRIMARY_UOM_FLAG_TBL_A(K) :=G_PRIMARY_UOM_FLAG_TBL_P(I);
29235 K:= K+1;
29236 END IF;
29237 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29238 engine_debug('The value of K: ' || K);
29239
29240 END IF;
29241 end loop;
29242 end if;
29243 END LOOP;
29244
29245 qp_debug_util.tstop('L_PROD_PRIC_CUR');
29246 CLOSE l_prod_pric_cur;
29247
29248 --END IF;
29249 end if; -- vivek, multi currency installed
29250
29251 IF M > 1 THEN
29252 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
29253 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29254 engine_debug('last 4 cursors- multi-currency TRUE - insert_ldets2');
29255 END IF;
29256 INSERT_LDETS_PRICE_LIST_MULT(
29257 p_LINE_DETAIL_INDEX => G_LINE_DETAIL_INDEX_LD_TBL,
29258 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
29259 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
29260 p_LINE_INDEX => G_LINE_INDEX_LD_TBL,
29261 p_CREATED_FROM_LIST_HEADER_ID =>G_LIST_HEADER_ID_LD_TBL,
29262 p_CREATED_FROM_LIST_LINE_ID =>G_LIST_LINE_ID_LD_TBL,
29263 p_CREATED_FROM_LIST_LINE_TYPE =>G_LIST_LINE_TYPE_TBL,
29264 p_CREATED_FROM_LIST_TYPE_CODE =>G_LIST_TYPE_CODE_TBL,
29265 p_CREATED_FROM_SQL =>G_CREATED_FROM_SQL_TBL,
29266 p_PRICING_GROUP_SEQUENCE =>G_PRICING_GROUP_SEQUENCE_TBL,
29267 P_PRICING_PHASE_ID =>G_PRICING_PHASE_ID_TBL,
29268 p_OPERAND_CALCULATION_CODE =>G_OPERAND_CALCULATION_CODE_TBL,
29269 p_OPERAND_VALUE =>G_OPERAND_VALUE_TBL,
29270 p_PRICE_FORMULA_ID =>G_PRICE_FORMULA_ID_TBL,
29271 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_LD_TBL,
29272 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_LD_TBL,
29273 p_PRODUCT_PRECEDENCE =>G_PRODUCT_PRECEDENCE_TBL ,
29274 p_INCOMPATABLILITY_GRP_CODE =>G_INCOMP_GRP_CODE_TBL,
29275 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_LD_TBL,
29276 p_APPLIED_FLAG =>G_APPLIED_FLAG_LD_TBL,
29277 p_AUTOMATIC_FLAG =>G_AUTOMATIC_FLAG_TBL,
29278 p_PRIMARY_UOM_FLAG =>G_PRIMARY_UOM_FLAG_TBL,
29279 p_MODIFIER_LEVEL_CODE =>G_MODIFIER_LEVEL_CODE_TBL,
29280 p_LIST_LINE_NO =>G_LIST_LINE_NO_TBL,
29281 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
29282 p_CURRENCY_DETAIL_ID =>G_CURRENCY_DETAIL_ID_TBL,
29283 p_CURRENCY_HEADER_ID =>G_CURRENCY_HEADER_ID_TBL,
29284 p_SELLING_ROUNDING_FACTOR =>G_SELLING_ROUNDING_TBL,
29285 p_ORDER_CURRENCY =>G_ORDER_CURRENCY_TBL,
29286 p_PRICING_EFFECTIVE_DATE =>G_PRICING_EFFECTIVE_DATE_TBL,
29287 p_BASE_CURRENCY_CODE =>G_BASE_CURRENCY_CODE_TBL,
29288 P_BREAK_UOM_CODE =>G_BREAK_UOM_TBL, /* Proration */
29289 P_BREAK_UOM_CONTEXT =>G_BREAK_CONTEXT_TBL, /* Proration */
29290 P_BREAK_UOM_ATTRIBUTE =>G_BREAK_ATTRIBUTE_TBL, /* Proration */
29291 x_status_code =>l_status_code,
29292 x_status_text =>l_status_text);
29293 else -- vivek, multi currency not installed, not used
29294 INSERT_LDETS_PRICE_LIST_PVT( p_LINE_DETAIL_index => G_LINE_DETAIL_INDEX_LD_TBL,
29295 p_LINE_DETAIL_TYPE_CODE => G_LINE_DETAIL_TYPE_CODE_TBL,
29296 p_PRICE_BREAK_TYPE_CODE => G_PRICE_BREAK_TYPE_CODE_TBL,
29297 p_LINE_INDEX => G_LINE_INDEX_LD_TBL,
29298 p_CREATED_FROM_LIST_HEADER_ID =>G_LIST_HEADER_ID_LD_TBL,
29299 p_CREATED_FROM_LIST_LINE_ID =>G_LIST_LINE_ID_LD_TBL,
29300 p_CREATED_FROM_LIST_LINE_TYPE =>G_LIST_LINE_TYPE_TBL,
29301 p_CREATED_FROM_LIST_TYPE_CODE =>G_LIST_TYPE_CODE_TBL,
29302 p_CREATED_FROM_SQL =>G_CREATED_FROM_SQL_TBL,
29303 p_PRICING_GROUP_SEQUENCE =>G_PRICING_GROUP_SEQUENCE_TBL,
29304 P_PRICING_PHASE_ID =>G_PRICING_PHASE_ID_TBL,
29305 p_OPERAND_CALCULATION_CODE =>G_OPERAND_CALCULATION_CODE_TBL,
29306 p_OPERAND_VALUE =>G_OPERAND_VALUE_TBL,
29307 p_PRICE_FORMULA_ID =>G_PRICE_FORMULA_ID_TBL,
29308 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_LD_TBL,
29309 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_LD_TBL,
29310 p_PRODUCT_PRECEDENCE =>G_PRODUCT_PRECEDENCE_TBL ,
29311 p_INCOMPATABLILITY_GRP_CODE =>G_INCOMP_GRP_CODE_TBL,
29312 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_LD_TBL,
29313 p_APPLIED_FLAG =>G_APPLIED_FLAG_LD_TBL,
29314 p_AUTOMATIC_FLAG =>G_AUTOMATIC_FLAG_TBL,
29315 p_PRIMARY_UOM_FLAG =>G_PRIMARY_UOM_FLAG_TBL,
29316 p_MODIFIER_LEVEL_CODE =>G_MODIFIER_LEVEL_CODE_TBL,
29317 p_LIST_LINE_NO =>G_LIST_LINE_NO_TBL,
29318 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
29319 P_BREAK_UOM_CODE =>G_BREAK_UOM_TBL, /* Proration */
29320 P_BREAK_UOM_CONTEXT =>G_BREAK_CONTEXT_TBL, /* Proration */
29321 P_BREAK_UOM_ATTRIBUTE =>G_BREAK_ATTRIBUTE_TBL, /* Proration */
29322 x_status_code =>l_status_code,
29323 x_status_text =>l_status_text
29324 );
29325 end if; -- vivek, multi currency installed
29326
29327 END IF;
29328
29329 IF K > 1 THEN
29330 INSERT_PRICE_LIST_ATTRS
29331 ( p_LINE_INDEX_tbl =>G_LINE_INDEX_tbl,
29332 p_LINE_DETAIL_INDEX_tbl =>G_LINE_DETAIL_INDEX_tbl,
29333 p_ATTRIBUTE_LEVEL_tbl =>G_ATTRIBUTE_LEVEL_tbl,
29334 p_ATTRIBUTE_TYPE_tbl =>G_ATTRIBUTE_TYPE_tbl,
29335 p_LIST_HEADER_ID_tbl =>G_LIST_HEADER_ID_tbl,
29336 p_LIST_LINE_ID_tbl =>G_LIST_LINE_ID_tbl,
29337 p_CONTEXT_tbl =>G_CONTEXT_tbl,
29338 p_ATTRIBUTE_tbl =>G_ATTRIBUTE_tbl,
29339 p_VALUE_FROM_tbl =>G_VALUE_FROM_tbl,
29340 p_SETUP_VALUE_FROM_tbl =>G_SETUP_VALUE_FROM_tbl,
29341 p_SETUP_VALUE_TO_tbl =>G_SETUP_VALUE_TO_tbl,
29342 p_GROUPING_NUMBER_tbl => G_GROUPING_NUMBER_tbl,
29343 p_COMPARISON_OPERATOR_TYPE_tbl =>G_COMPARISON_OPERATOR_TYPE_tbl,
29344 p_VALIDATED_FLAG_tbl =>G_VALIDATED_FLAG_tbl,
29345 p_APPLIED_FLAG_tbl =>G_APPLIED_FLAG_tbl,
29346 p_PRICING_STATUS_CODE_tbl =>G_PRICING_STATUS_CODE_tbl,
29347 p_PRICING_STATUS_TEXT_tbl =>G_PRICING_STATUS_TEXT_tbl,
29348 p_QUALIFIER_PRECEDENCE_tbl =>G_QUALIFIER_PRECEDENCE_tbl,
29349 p_DATATYPE_tbl =>G_DATATYPE_tbl,
29350 p_PRICING_ATTR_FLAG_tbl =>G_PRICING_ATTR_FLAG_tbl,
29351 p_QUALIFIER_TYPE_tbl =>G_QUALIFIER_TYPE_TBL,
29352 p_product_uom_code_tbl =>G_PRODUCT_UOM_CODE_TBL,
29353 p_excluder_flag_tbl =>G_EXCLUDER_FLAG_TBL,
29354 p_PRICING_PHASE_ID_TBL =>G_PRICING_PHASE_ID_TBL_A,
29355 p_INCOMPATABILITY_GRP_CODE_TBL =>G_INCOMP_GRP_CODE_TBL_A,
29356 p_LINE_DETAIL_TYPE_CODE_TBL =>G_LINE_DETAIL_TYPE_CODE_TBL_A,
29357 p_MODIFIER_LEVEL_CODE_TBL =>G_MODIFIER_LEVEL_CODE_TBL_A,
29358 p_PRIMARY_UOM_FLAG_TBL =>G_PRIMARY_UOM_FLAG_TBL_A,
29359 x_status_code =>l_status_code,
29360 x_status_text =>l_status_text);
29361 END IF;
29362
29363 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
29364 RAISE E_ROUTINE_ERRORS;
29365 END IF;
29366
29367 --Reset_all_tbls;
29368 Reset_All_Tbls(l_status_code ,l_status_text );
29369 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
29370 RAISE E_ROUTINE_ERRORS;
29371 END IF;
29372
29373 EXCEPTION
29374 WHEN E_ROUTINE_ERRORS THEN
29375 x_status_code := FND_API.G_RET_STS_ERROR;
29376 x_status_text := l_routine||': '||l_status_text;
29377 WHEN OTHERS THEN
29378 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29379 engine_debug('< In Select_Price_List_Lines>: '||SQLERRM);
29380 -- Keep it for debugging purposes
29381 /*
29382 FOR Z In 1 .. G_LIST_HEADER_ID_TBL_P.count
29383 Loop
29384 engine_debug( '--------');
29385 engine_debug( 'Z: '||Z);
29386 engine_debug( 'G_LIST_HEADER_ID_TBL_P: ' || G_LIST_HEADER_ID_TBL_P(Z));
29387 engine_debug( 'G_LIST_LINE_ID_TBL_P: ' || G_LIST_LINE_ID_TBL_P(Z));
29388 engine_debug( 'G_LINE_INDEX_TBL_P: ' || G_LINE_INDEX_TBL_P(Z));
29389 engine_debug( 'G_APPLIED_FLAG_TBL_P: ' || G_APPLIED_FLAG_TBL_P(Z) );
29390 engine_debug( 'G_ATTRIBUTE_LEVEL_TBL_P: ' || G_ATTRIBUTE_LEVEL_TBL_P(Z));
29391 engine_debug( 'G_ATTRIBUTE_TYPE_TBL_P: ' || G_ATTRIBUTE_TYPE_TBL_P(Z) );
29392 engine_debug( 'G_CONTEXT_TBL_P: ' ||G_CONTEXT_TBL_P(Z) );
29393 engine_debug( 'G_ATTRIBUTE_TBL_P: ' || G_ATTRIBUTE_TBL_P(Z));
29394 engine_debug( 'G_VALUE_FROM_TBL_P: ' || G_VALUE_FROM_TBL_P(Z));
29395 engine_debug( 'G_PRODUCT_UOM_CODE_TBL_P: ' || G_PRODUCT_UOM_CODE_TBL_P(Z));
29396 engine_debug( 'G_EXCLUDER_FLAG_TBL_P: ' || G_EXCLUDER_FLAG_TBL_P(Z));
29397 engine_debug( 'G_CONTEXT_TBL_Q: ' || G_CONTEXT_TBL_Q(Z));
29398 engine_debug( 'G_ATTRIBUTE_TBL_Q: ' || G_ATTRIBUTE_TBL_Q(Z));
29399 engine_debug( 'G_VALUE_FROM_TBL_Q: ' ||G_VALUE_FROM_TBL_Q(Z));
29400 engine_debug( 'G_GROUPING_NO_TBL_Q: ' || G_GROUPING_NO_TBL_Q(Z));
29401 engine_debug( 'G_QUALIFIER_PRECEDENCE_TBL_Q: ' || G_QUALIFIER_PRECEDENCE_TBL_Q(Z));
29402 engine_debug( 'G_DATATYPE_TBL_Q: ' || G_DATATYPE_TBL_Q(Z));
29403 engine_debug( 'G_SETUP_VALUE_FROM_TBL_Q: ' || G_SETUP_VALUE_FROM_TBL_Q(Z));
29404 engine_debug( 'G_SETUP_VALUE_TO_TBL_Q: ' || G_SETUP_VALUE_TO_TBL_Q(Z));
29405 engine_debug( 'G_AUTOMATIC_FLAG_TBL_P: ' || G_AUTOMATIC_FLAG_TBL_P(Z));
29406 engine_debug( 'G_MODIFIER_LEVEL_CODE_TBL_P: ' || G_MODIFIER_LEVEL_CODE_TBL_P(Z) );
29407 engine_debug( 'G_PRIMARY_UOM_FLAG_TBL_P: ' || G_PRIMARY_UOM_FLAG_TBL_P(Z));
29408 engine_debug( 'G_OPER_CALCULATION_CODE_TBL_P: ' || G_OPER_CALCULATION_CODE_TBL_P(Z));
29409 engine_debug( 'G_OPERAND_VALUE_TBL_P: ' || G_OPERAND_VALUE_TBL_P(Z));
29410 engine_debug( 'G_PRICING_GROUP_SEQUENCE_TBL_P: ' || G_PRICING_GROUP_SEQUENCE_TBL_P(Z));
29411 engine_debug( 'G_LIST_TYPE_CODE_TBL_P: ' || G_LIST_TYPE_CODE_TBL_P(Z));
29412 engine_debug( 'G_ROUNDING_FACTOR_TBL_P: ' || G_ROUNDING_FACTOR_TBL_P(Z));
29413 engine_debug( 'G_PRICING_PHASE_ID_TBL_P: ' || G_PRICING_PHASE_ID_TBL_P(Z));
29414 engine_debug( 'G_PRICE_BREAK_TYPE_CODE_TBL_P: ' || G_PRICE_BREAK_TYPE_CODE_TBL_P(Z));
29415 engine_debug( 'G_INCOMP_GRP_CODE_TBL_P: ' || G_INCOMP_GRP_CODE_TBL_P(Z));
29416 engine_debug( 'G_PRICE_FORMULA_ID_TBL_P: ' || G_PRICE_FORMULA_ID_TBL_P(Z));
29417 engine_debug( 'G_PRODUCT_PRECEDENCE_TBL_P: ' || G_PRODUCT_PRECEDENCE_TBL_P(Z));
29418 engine_debug( 'G_LIST_LINE_NO_TBL_P: ' || G_LIST_LINE_NO_TBL_P(Z));
29419 engine_debug( 'G_QUALIFIER_TYPE_TBL_Q: ' || G_QUALIFIER_TYPE_TBL_Q(Z));
29420 engine_debug( 'G_CURRENCY_DETAIL_ID_TBL_P: ' || G_CURRENCY_DETAIL_ID_TBL_P(Z));
29421 engine_debug( 'G_CURRENCY_HEADER_ID_TBL_P: ' || G_CURRENCY_HEADER_ID_TBL_P(Z));
29422 engine_debug( 'G_SELLING_ROUNDING_TBL_P: ' || G_SELLING_ROUNDING_TBL_P(Z));
29423 engine_debug( 'G_ORDER_CURRENCY_TBL_P: ' || G_ORDER_CURRENCY_TBL_P(Z));
29424 engine_debug( 'G_PRICING_EFFECTIVE_DATE_TBL_P: ' || G_PRICING_EFFECTIVE_DATE_TBL_P(Z));
29425 engine_debug( 'G_BASE_CURRENCY_CODE_TBL_P: ' ||G_BASE_CURRENCY_CODE_TBL_P(Z));
29426
29427 End Loop;
29428 */
29429 END IF;
29430 x_status_code := FND_API.G_RET_STS_ERROR;
29431 x_status_text := l_routine||': '||SQLERRM;
29432 END SELECT_PRICE_LIST_LINES;
29433
29434 /*+------------------------------------------------------------
29435 |CREATE_QUALIFIER_FROM_LIST
29436 |We need to make the list we selected from previous phase
29437 |to become qualifier
29438 |because price list might be a qualifier for a discount or promotion
29439 +------------------------------------------------------------
29440 */
29441
29442 PROCEDURE Create_Qualifier_From_List( x_status_code OUT NOCOPY VARCHAR2,
29443 x_status_text OUT NOCOPY VARCHAR2)
29444 AS
29445 v_error_code VARCHAR2(240);
29446 v_error_message VARCHAR2(240);
29447 l_attribute VARCHAR2(240);
29448 l_context VARCHAR2(240);
29449 l_status_code VARCHAR2(30);
29450 l_status_text VARCHAR2(240);
29451 K PLS_INTEGER:= 1;
29452
29453 --We don't want to create a new list which is already passed in as qualifiers
29454 --on previous phase.
29455 /*
29456 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_get_line_index_cur,- No Index Used -,NA,NA
29457 */
29458 CURSOR l_get_line_index_cur IS
29459 SELECT line_index
29460 FROM qp_npreq_lines_tmp
29461 WHERE line_type_code <> G_ORDER_LEVEL;
29462
29463 /*
29464 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_modlist_cur,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
29465 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_modlist_cur,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,2
29466 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_modlist_cur,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,3
29467
29468 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
29469 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
29470 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
29471 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
29472 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
29473 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
29474 */
29475 --check if passed in price list indeed has qualified
29476 CURSOR l_check_modlist_cur(p_line_index IN PLS_INTEGER) IS
29477 SELECT /*+ ORDERED index(qplat qp_preq_line_attrs_tmp_n2) l_check_modlist_cur */ 'X'
29478 FROM qp_npreq_ldets_tmp qpld,
29479 qp_npreq_line_attrs_tmp qplat
29480 WHERE qpld.line_index = p_line_index
29481 AND qpld.pricing_phase_id = G_PRICE_LIST_PHASE_ID
29482 AND qpld.pricing_status_code = G_STATUS_NEW
29483 AND qplat.line_index = qpld.line_index
29484 AND qplat.pricing_status_code = G_STATUS_UNCHANGED
29485 AND qplat.attribute_type = 'QUALIFIER'
29486 AND qplat.context = 'MODLIST'
29487 AND qplat.attribute = 'QUALIFIER_ATTRIBUTE4'
29488 AND qplat.value_from = TO_CHAR(qpld.created_from_list_header_id);
29489
29490 -- find line_index(s) whose passed-in price list has not been qualified
29491 CURSOR l_check_no_modlist_cur IS
29492 SELECT /*+ index(qpll QP_PREQ_LINES_TMP_N2) */ qpll.line_index
29493 FROM qp_npreq_lines_tmp qpll
29494 WHERE qpll.line_type_code <> G_ORDER_LEVEL
29495 AND NOT EXISTS (
29496 SELECT /*+ ORDERED index(qpld QP_PREQ_LDETS_TMP_N1) index(qplat qp_preq_line_attrs_tmp_n2) l_check_modlist_cur */ 'X'
29497 FROM qp_npreq_ldets_tmp qpld,
29498 qp_npreq_line_attrs_tmp qplat
29499 WHERE qpld.line_index = qpll.line_index
29500 AND qpld.pricing_phase_id = G_PRICE_LIST_PHASE_ID
29501 AND qpld.pricing_status_code = G_STATUS_NEW
29502 AND qplat.line_index = qpld.line_index
29503 AND qplat.pricing_status_code = G_STATUS_UNCHANGED
29504 AND qplat.attribute_type = 'QUALIFIER'
29505 AND qplat.context = 'MODLIST'
29506 AND qplat.attribute = 'QUALIFIER_ATTRIBUTE4'
29507 AND qplat.value_from = TO_CHAR(qpld.created_from_list_header_id));
29508
29509 /*
29510 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_exists_modlist_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
29511 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_exists_modlist_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
29512 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_exists_modlist_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
29513 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_exists_modlist_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
29514 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_check_exists_modlist_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
29515 */
29516 --check if there is a modlist passed
29517 CURSOR l_check_modlist_exists_cur(p_line_index IN PLS_INTEGER) IS
29518 SELECT ROWID
29519 FROM qp_npreq_line_attrs_tmp
29520 WHERE pricing_status_code = G_STATUS_UNCHANGED
29521 AND attribute_type = 'QUALIFIER'
29522 AND context = 'MODLIST'
29523 AND attribute ='QUALIFIER_ATTRIBUTE4'
29524 AND line_index = p_line_index
29525 AND ROWNUM = 1; --just one record need to be returned
29526
29527 /*
29528 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_get_pl_cur,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
29529 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_get_pl_cur,qp_npreq_ldets_tmp_N3,PRICING_PHASE_ID,2
29530 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_get_pl_cur,qp_npreq_ldets_tmp_N3,ASK_FOR_FLAG,3
29531 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_get_pl_cur,qp_npreq_ldets_tmp_N3,CREATED_FROM_LIST_LINE_TYPE,4
29532 INDX,QP_PREQ_GRP.create_qualifier_from_list.l_get_pl_cur,qp_npreq_ldets_tmp_N3,PRICING_STATUS_CODE,5
29533 */
29534 CURSOR l_get_pl_cur(p_line_index IN PLS_INTEGER) IS
29535 SELECT created_from_list_header_id
29536 FROM qp_npreq_ldets_tmp
29537 WHERE line_index = p_line_index
29538 and created_from_list_line_type in (G_PRICE_LIST_TYPE,G_BY_PBH) -- Bug#2882115
29539 and pricing_status_code = G_STATUS_NEW
29540 and pricing_phase_id = G_PRICE_LIST_PHASE_ID;
29541
29542
29543 l_dummy VARCHAR2(1);
29544 l_rowid ROWID;
29545 l_list_header_id NUMBER;
29546
29547 l_routine VARCHAR2(30) := 'Create_Qualifier_From_List';
29548
29549 E_ROUTINE_ERRORS EXCEPTION;
29550
29551 l_line_index_tbl NUMBER_TYPE;
29552
29553 -- julin [3805113]: tables for bulk insert/update
29554 A PLS_INTEGER:=1;
29555 l_a_list_header_id_tbl NUMBER_TYPE;
29556 l_a_line_index_tbl NUMBER_TYPE;
29557
29558 B PLS_INTEGER:=1;
29559 l_b_list_header_id_tbl NUMBER_TYPE;
29560 l_b_rowid_tbl ROWID_TYPE;
29561
29562 C PLS_INTEGER:=1;
29563 l_c_line_index_tbl NUMBER_TYPE;
29564 l_c_g_line_level_tbl VARCHAR_30_TYPE;
29565 l_c_G_QUALIFIER_TYPE_tbl VARCHAR_30_TYPE;
29566 l_c_G_LIST_HEADER_CONTEXT_tbl VARCHAR_30_TYPE;
29567 l_c_QUALIFIER_ATTRIBUTE4_tbl VARCHAR_30_TYPE;
29568 l_c_list_header_id_tbl NUMBER_TYPE;
29569 l_c_G_VALIDATED_tbl VARCHAR_30_TYPE;
29570 l_c_G_LIST_APPLIED_tbl VARCHAR_30_TYPE;
29571 l_c_G_STATUS_UNCHANGED_tbl VARCHAR_30_TYPE;
29572 l_c_PRICING_STATUS_TEXT_tbl VARCHAR_TYPE;
29573
29574
29575 BEGIN
29576
29577 --po integration start
29578 UPDATE qp_npreq_lines_tmp a
29579 SET pricing_status_code = G_STATUS_UPDATED
29580 Where list_price_override_flag in ('Y', 'O') --po integration
29581 AND line_type_code <> G_ORDER_LEVEL;
29582 --po integration end
29583
29584 -- julin [3805113]: using bulk collect and update
29585 OPEN l_check_no_modlist_cur;
29586 LOOP
29587 FETCH l_check_no_modlist_cur BULK COLLECT INTO
29588 l_line_index_tbl
29589 LIMIT G_BATCH_SIZE;
29590 EXIT WHEN l_line_index_tbl.count = 0;
29591
29592 l_a_list_header_id_tbl.delete;
29593 l_a_line_index_tbl.delete;
29594
29595 l_b_list_header_id_tbl.delete;
29596 l_b_rowid_tbl.delete;
29597
29598 l_c_line_index_tbl.delete;
29599 l_c_g_line_level_tbl.delete;
29600 l_c_G_QUALIFIER_TYPE_tbl.delete;
29601 l_c_G_LIST_HEADER_CONTEXT_tbl.delete;
29602 l_c_QUALIFIER_ATTRIBUTE4_tbl.delete;
29603 l_c_list_header_id_tbl.delete;
29604 l_c_G_VALIDATED_tbl.delete;
29605 l_c_G_LIST_APPLIED_tbl.delete;
29606 l_c_G_STATUS_UNCHANGED_tbl.delete;
29607 l_c_PRICING_STATUS_TEXT_tbl.delete;
29608
29609 /*FOR i in p_price_list_id_tbl.FIRST .. p_price_list_id_tbl.LAST
29610 LOOP
29611
29612 OPEN l_check_modlist_cur(l_line_index_tbl(I));
29613 FETCH l_check_modlist_cur INTO l_dummy;
29614 IF l_check_modlist_cur%NOTFOUND THEN
29615 */
29616
29617 FOR I in l_line_index_tbl.FIRST .. l_line_index_tbl.LAST
29618 LOOP
29619 OPEN l_check_modlist_exists_cur(l_line_index_tbl(I));
29620 FETCH l_check_modlist_exists_cur INTO l_rowid;
29621
29622 OPEN l_get_pl_cur(l_line_index_tbl(I));
29623 FETCH l_get_pl_cur into l_list_header_id;
29624 CLOSE l_get_pl_cur;
29625
29626 -- Update the order line with the secondary price list id(for OM displaying purposes)
29627 IF (l_list_header_id IS NOT NULL) THEN
29628 l_a_list_header_id_tbl(A) := l_list_header_id;
29629 l_a_line_index_tbl(A) := l_line_index_tbl(I);
29630 A := A + 1;
29631 END IF;
29632
29633 IF l_check_modlist_exists_cur%FOUND THEN
29634 --OPEN l_get_pl_cur(l_line_index_tbl(I));
29635 --FETCH l_get_pl_cur into l_list_header_id;
29636 --CLOSE l_get_pl_cur;
29637
29638 IF (l_list_header_id IS NOT NULL) THEN
29639 l_b_list_header_id_tbl(B) := l_list_header_id;
29640 l_b_rowid_tbl(B) := l_rowid;
29641 B := B + 1;
29642 END IF;
29643
29644 ELSE
29645 --FOR J IN l_get_pl_cur(l_line_index_tbl(I)) LOOP
29646 IF (l_list_header_id IS NOT NULL) THEN
29647 l_c_line_index_tbl(C) := L_LINE_INDEX_TBL(I);
29648 l_c_g_line_level_tbl(C) := G_LINE_LEVEL;
29649 l_c_g_qualifier_type_tbl(C) := G_QUALIFIER_TYPE;
29650 l_c_g_list_header_context_tbl(C) := G_LIST_HEADER_CONTEXT;
29651 l_c_qualifier_attribute4_tbl(C) := 'QUALIFIER_ATTRIBUTE4';
29652 l_c_list_header_id_tbl(C) := l_list_header_id;
29653 l_c_g_validated_tbl(C) := G_VALIDATED;
29654 l_c_g_list_applied_tbl(C) := G_LIST_APPLIED;
29655 l_c_g_status_unchanged_tbl(C) := G_STATUS_UNCHANGED;
29656 l_c_pricing_status_text_tbl(C) := 'Inserted by Create_Qualifier_From_List';
29657 C := C + 1;
29658 --END LOOP;
29659 END IF;
29660 END IF;
29661 CLOSE l_check_modlist_exists_cur;
29662 --END IF;
29663 --CLOSE l_check_modlist_cur;
29664
29665 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
29666 RAISE E_ROUTINE_ERRORS;
29667 END IF;
29668 l_list_header_id := null; -- Bug No: 7323621
29669 END LOOP;
29670
29671 -- julin [3805113]: bulk update
29672 IF (l_a_list_header_id_tbl.COUNT > 0) THEN
29673 FORALL I IN l_a_list_header_id_tbl.first..l_a_list_header_id_tbl.last
29674 UPDATE qp_npreq_lines_tmp
29675 SET price_list_header_id = l_a_list_header_id_tbl(I)
29676 WHERE line_index = l_a_line_index_tbl(I);
29677 END IF;
29678
29679 -- julin [3805113]: bulk update
29680 IF (l_b_list_header_id_tbl.COUNT > 0) THEN
29681 FORALL I IN l_b_list_header_id_tbl.first..l_b_list_header_id_tbl.last
29682 UPDATE qp_npreq_line_attrs_tmp
29683 SET value_from = TO_CHAR(l_b_list_header_id_tbl(I))
29684 WHERE rowid = l_b_rowid_tbl(I);
29685 END IF;
29686
29687 -- julin [3805113]: bulk update
29688 IF (l_c_LINE_INDEX_TBL.COUNT > 0) THEN
29689 FORALL I IN l_c_LINE_INDEX_TBL.first..l_c_LINE_INDEX_TBL.last
29690 INSERT INTO qp_npreq_line_attrs_tmp
29691 (LINE_INDEX,
29692 ATTRIBUTE_LEVEL,
29693 ATTRIBUTE_TYPE,
29694 CONTEXT,
29695 ATTRIBUTE,
29696 VALUE_FROM,
29697 VALIDATED_FLAG, --We may need to reset it to N
29698 APPLIED_FLAG,
29699 PRICING_STATUS_CODE,
29700 PRICING_STATUS_TEXT
29701 )
29702 VALUES
29703 (l_c_line_index_tbl(i),
29704 l_c_g_line_level_tbl(i),
29705 l_c_g_qualifier_type_tbl(i),
29706 l_c_g_list_header_context_tbl(i),
29707 l_c_qualifier_attribute4_tbl(i),
29708 l_c_list_header_id_tbl(i),
29709 l_c_g_validated_tbl(i),
29710 l_c_g_list_applied_tbl(i),
29711 l_c_g_status_unchanged_tbl(i), --as it is passed in as qualifiers from the callers
29712 l_c_pricing_status_text_tbl(i));
29713
29714 END IF;
29715
29716 END LOOP;
29717 CLOSE l_check_no_modlist_cur;
29718
29719 -- Update Rounding Factor, if rounding_flag not N
29720 IF (G_ROUNDING_FLAG <> 'N') THEN
29721 UPDATE_ROUNDING_FACTOR (
29722 QP_PREQ_GRP.G_MCURR_INSTALLED_USED,
29723 l_status_code,
29724 l_status_text);
29725 END IF; -- end if rounding_flag
29726
29727 IF l_status_code <> FND_API.G_RET_STS_SUCCESS THEN
29728 RAISE E_ROUTINE_ERRORS;
29729 END IF;
29730
29731 EXCEPTION
29732 WHEN E_ROUTINE_ERRORS THEN
29733 x_status_code := FND_API.G_RET_STS_ERROR;
29734 x_status_text := l_routine||': '||l_status_text;
29735 WHEN OTHERS THEN
29736 v_error_code :=SQLCODE;
29737 v_error_message:=SQLERRM;
29738 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29739 engine_debug('Error in QP_PREQ_GRP.create_qualifier_from_list: '||SQLERRM);
29740 END IF;
29741 x_status_code := FND_API.G_RET_STS_ERROR;
29742 x_status_text := l_routine||': '||SQLERRM;
29743
29744 END Create_Qualifier_From_List;
29745
29746
29747 /*+------------------------------------------------------------
29748 |GET_REASON
29749 |To tell the reasons why certain list line is deleted
29750 +------------------------------------------------------------
29751 */
29752 PROCEDURE Get_Reason (p_line_index IN PLS_INTEGER,
29753 x_reason_code_tbl OUT NOCOPY VARCHAR_TYPE,
29754 x_status_code OUT NOCOPY VARCHAR2,
29755 x_status_text OUT NOCOPY VARCHAR2) AS
29756 /*
29757 -- Can use N1 instead of N3
29758 INDX,QP_PREQ_GRP.get_reason.l_reason_cur,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
29759 */
29760 CURSOR l_reason_cur(p_line_index IN PLS_INTEGER) IS
29761 SELECT distinct pricing_status_code
29762 FROM qp_npreq_ldets_tmp
29763 WHERE line_index = p_line_index
29764 AND pricing_status_code <> G_STATUS_NEW;
29765
29766 J PLS_INTEGER:=0;
29767 l_routine VARCHAR2(240):='QP_PREQ_GRP.GET_REASON';
29768 BEGIN
29769
29770 FOR I IN l_reason_cur(p_line_index) LOOP
29771 J:=J+1;
29772 x_reason_code_tbl(J):= I.pricing_status_code;
29773 END LOOP;
29774
29775 EXCEPTION
29776 WHEN OTHERS THEN
29777 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
29778 engine_debug(l_routine||': '||SQLERRM);
29779 END IF;
29780 x_status_code := FND_API.G_RET_STS_ERROR;
29781 x_status_text := l_routine||': '||SQLERRM;
29782 END Get_Reason;
29783
29784 /*+------------------------------------------------------------
29785 |Call calculation engine
29786 +------------------------------------------------------------
29787 */
29788 PROCEDURE CALL_CALCULATION_ENGINE (p_phase_sequence IN NUMBER:=NULL,
29789 p_freeze_override_flag IN VARCHAR2:=NULL,
29790 p_is_direct_call IN BOOLEAN:=FALSE,
29791 x_status_code OUT NOCOPY VARCHAR2,
29792 x_status_text OUT NOCOPY VARCHAR2) AS
29793
29794 p_cal_req_line_rec QP_Calculate_Price_PUB.l_request_line_rec;
29795 l_cal_req_line_rec QP_Calculate_Price_PUB.l_request_line_rec;
29796 p_cal_req_ldets_tbl QP_Calculate_Price_PUB.l_request_line_details_tbl;
29797 l_cal_req_ldets_tbl QP_Calculate_Price_PUB.l_request_line_details_tbl;
29798 p_cal_req_rltd_tbl QP_Calculate_Price_PUB.l_related_request_lines_tbl;
29799 l_cal_req_rltd_tbl QP_Calculate_Price_PUB.l_related_request_lines_tbl;
29800
29801 /*
29802 INDX,QP_PREQ_GRP.call_calculation_engine.l_request_line_cur,- No Index Used -,NA,NA
29803 */
29804 CURSOR l_request_line_cur IS
29805 SELECT /*+ dynamic_sampling(1) */ qplt.LINE_INDEX,
29806 qplt.LINE_TYPE_CODE,
29807 qplt.PRICING_EFFECTIVE_DATE,
29808 qplt.LINE_QUANTITY,
29809 qplt.LINE_UOM_CODE,
29810 qplt.PRICED_QUANTITY,
29811 qplt.PRICED_UOM_CODE,
29812 qplt.CURRENCY_CODE,
29813 qplt.UNIT_PRICE,
29814 qplt.PERCENT_PRICE,
29815 qplt.UOM_QUANTITY,
29816 qplt.PARENT_PRICE,
29817 qplt.ADJUSTED_UNIT_PRICE,
29818 qplt.PROCESSED_FLAG,
29819 qplt.PRICE_FLAG,
29820 qplt.PROCESSING_ORDER,
29821 qplt.PRICING_STATUS_CODE,
29822 qplt.PRICING_STATUS_TEXT,
29823 qplt.GROUP_QUANTITY,
29824 qplt.GROUP_AMOUNT,
29825 qplt.ROUNDING_FLAG,
29826 qplt.PRICE_LIST_HEADER_ID,
29827 qplt.ROUNDING_FACTOR,
29828 qplt.CATCHWEIGHT_QTY,
29829 qplt.ACTUAL_ORDER_QUANTITY,
29830 NVL(qplt.price_flag,G_YES)
29831 FROM qp_npreq_lines_tmp qplt
29832 WHERE qplt.PRICING_STATUS_CODE IN (G_STATUS_UNCHANGED, G_STATUS_UPDATED)
29833 AND (qplt.PRICE_FLAG IN (G_YES,G_PHASE)
29834 OR qplt.PROCESSED_CODE = G_BY_ENGINE)
29835 AND nvl(qplt.USAGE_PRICING_TYPE,G_REGULAR_USAGE_TYPE) NOT IN
29836 (G_AUTHORING_TYPE,G_BILLING_TYPE)
29837 ORDER BY PROCESSING_ORDER;
29838
29839 --for the case where p_control_rec.price_flat = 'P' (G_PHASE)
29840 /*
29841 INDX,QP_PREQ_GRP.call_calculation_engine.l_request_line_detail_cur,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
29842 INDX,QP_PREQ_GRP.call_calculation_engine.l_request_line_detail_cur,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
29843
29844 INDX,QP_PREQ_GRP.call_calculation_engine.l_request_line_detail_cur,qp_npreq_lines_tmp_N2,LINE_TYPE_CODE,1
29845 */
29846 CURSOR l_request_line_detail_cur(L_LINE_INDEX PLS_INTEGER,
29847 p_price_flag VARCHAR2) IS
29848 -- hint added as temporary R12 fix for 5573442
29849 SELECT /*+ index(qplt) */ --5658579
29850 QPLT.LINE_DETAIL_INDEX,
29851 QPLT.LINE_DETAIL_TYPE_CODE,
29852 QPLT.LINE_INDEX,
29853 QPLT.CREATED_FROM_LIST_HEADER_ID,
29854 QPLT.CREATED_FROM_LIST_LINE_ID,
29855 QPLT.CREATED_FROM_LIST_LINE_TYPE,
29856 QPLT.CREATED_FROM_LIST_TYPE_CODE,
29857 QPLT.PRICE_BREAK_TYPE_CODE,
29858 QPLT.PRICING_GROUP_SEQUENCE,
29859 QPLT.OPERAND_CALCULATION_CODE,
29860 QPLT.OPERAND_VALUE,
29861 QPLT.NET_AMOUNT_FLAG, -- IT net_amount 2720717
29862 QPLT.AUTOMATIC_FLAG,
29863 QPLT.ACCRUAL_FLAG,
29864 QPLT.ACCRUAL_CONVERSION_RATE,
29865 QPLT.ESTIM_ACCRUAL_RATE,
29866 QPLT.RECURRING_VALUE, -- block pricing
29867 QPLT.MODIFIER_LEVEL_CODE,
29868 QPLT.GROUP_QUANTITY,
29869 QPLT.GROUP_AMOUNT,
29870 QPLT.LINE_QUANTITY, --2388011_new
29871 QPLT.SELECTED_VOLUME_ATTR -- 2388011_new
29872 FROM qp_npreq_ldets_tmp QPLT
29873 WHERE QPLT.LINE_INDEX = L_LINE_INDEX
29874 AND QPLT.PRICING_STATUS_CODE = G_STATUS_NEW
29875 UNION
29876 -- hints added as temporary R12 fix for 5573442
29877 SELECT /*+ ORDERED USE_NL(QPLL QPLT) INDEX(QPLL) INDEX(QPLT) */ --5658579
29878 QPLT.LINE_DETAIL_INDEX,
29879 QPLT.LINE_DETAIL_TYPE_CODE,
29880 QPLT.LINE_INDEX,
29881 QPLT.CREATED_FROM_LIST_HEADER_ID,
29882 QPLT.CREATED_FROM_LIST_LINE_ID,
29883 QPLT.CREATED_FROM_LIST_LINE_TYPE,
29884 QPLT.CREATED_FROM_LIST_TYPE_CODE,
29885 QPLT.PRICE_BREAK_TYPE_CODE,
29886 QPLT.PRICING_GROUP_SEQUENCE,
29887 QPLT.OPERAND_CALCULATION_CODE,
29888 QPLT.OPERAND_VALUE,
29889 QPLT.NET_AMOUNT_FLAG, -- IT net_amount 2720717
29890 QPLT.AUTOMATIC_FLAG,
29891 QPLT.ACCRUAL_FLAG,
29892 QPLT.ACCRUAL_CONVERSION_RATE,
29893 QPLT.ESTIM_ACCRUAL_RATE,
29894 QPLT.RECURRING_VALUE, -- block pricing
29895 QPLT.MODIFIER_LEVEL_CODE,
29896 QPLT.GROUP_QUANTITY,
29897 QPLT.GROUP_AMOUNT,
29898 QPLT.LINE_QUANTITY, --2388011_new
29899 QPLT.SELECTED_VOLUME_ATTR -- 2388011_new
29900 FROM qp_npreq_lines_tmp QPLL,
29901 qp_npreq_ldets_tmp QPLT
29902 WHERE QPLL.LINE_TYPE_CODE = G_ORDER_LEVEL
29903 AND QPLT.LINE_INDEX = QPLL.LINE_INDEX
29904 AND QPLT.PRICING_STATUS_CODE = G_STATUS_NEW
29905 AND QPLT.CREATED_FROM_LIST_TYPE_CODE <> G_CHARGES_HEADER
29906 ORDER BY 9; -- 9 - Pricing Group Sequence
29907
29908 /*
29909 INDX,QP_PREQ_GRP.call_calculation_engine.l_line_attrs_cur,qp_npreq_line_attrs_tmp_N3,LINE_DETAIL_INDEX,1
29910 */
29911 CURSOR l_line_attrs_cur(l_line_detail_index PLS_INTEGER) IS
29912 SELECT VALUE_FROM,
29913 VALUE_TO,
29914 ATTRIBUTE
29915 FROM qp_npreq_line_attrs_tmp
29916 WHERE line_detail_index = l_line_detail_index
29917 AND ATTRIBUTE_LEVEL = G_DETAIL_LEVEL;
29918
29919 /*
29920 INDX,QP_PREQ_GRP.call_calculation_engine.l_list_line_attribute_cur,QP_PRICING_ATTRIBUTES_N2,LIST_LINE_ID,1
29921 */
29922 CURSOR l_list_line_attribute_cur(p_list_line_id PLS_INTEGER) IS
29923 SELECT /*+ index(qpp qp_pricing_attributes_n2) l_list_line_attribute_cur */ PRICING_ATTRIBUTE
29924 FROM QP_PRICING_ATTRIBUTES qpp
29925 WHERE LIST_LINE_ID = p_list_line_id
29926 AND PRICING_ATTRIBUTE_CONTEXT = G_PRIC_VOLUME_CONTEXT;
29927
29928 -- Cursor for getting the related line index for the line index
29929 -- Ex: Related Line Index - Oracle 8i Line Index - Service Line
29930 /*
29931 INDX,QP_PREQ_GRP.call_calculation_engine.l_service_item_cur,- No Index Used -,NA,NA
29932 */
29933 CURSOR l_service_item_cur(l_line_index PLS_INTEGER) IS
29934 SELECT LINE_INDEX
29935 FROM qp_npreq_rltd_lines_tmp
29936 WHERE RELATED_LINE_INDEX = l_line_index
29937 AND RELATIONSHIP_TYPE_CODE = G_SERVICE_LINE;
29938
29939 -- Cursor for getting the unit price of the parent line ex: Oracle 8i line
29940 /*
29941 INDX,QP_PREQ_GRP.call_calculation_engine.l_get_price_parent_line_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
29942 */
29943 CURSOR l_get_price_parent_line_cur(l_line_index PLS_INTEGER) IS
29944 SELECT UNIT_PRICE,
29945 LINE_UNIT_PRICE, --fix bug 2776849, uom_service_pricing
29946 PRICED_QUANTITY,
29947 LINE_QUANTITY,
29948 LINE_UOM_CODE --fix bug 2776849, uom_service_pricing
29949 FROM qp_npreq_lines_tmp
29950 WHERE LINE_INDEX = l_line_index;
29951
29952 /*
29953 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
29954 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
29955 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,CONTEXT,3
29956 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE,4
29957 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,LINE_INDEX,5
29958 INDX,lQP_PREQ_GRP.create_qualifier_from_list._check_modlist_cur,qp_npreq_line_attrs_tmp_N2,VALUE_FROM,6
29959 */
29960 CURSOR gsa_qualifier_exists(p_line_index PLS_INTEGER) IS
29961 SELECT 'X'
29962 FROM qp_npreq_line_attrs_tmp
29963 WHERE CONTEXT = G_CUSTOMER_CONTEXT
29964 AND ATTRIBUTE = G_GSA_ATTRIBUTE
29965 AND VALUE_FROM = G_YES
29966 AND LINE_INDEX = p_line_index
29967 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
29968 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE;
29969
29970 -- begin shulin bug 1605829 fix
29971 CURSOR get_request_prclst_name_cur (p_list_header_id PLS_INTEGER) IS
29972 SELECT name
29973 FROM qp_list_headers_v a
29974 WHERE a.list_header_id = p_list_header_id;
29975
29976 CURSOR get_request_inv_item_id_cur(p_line_index PLS_INTEGER) IS
29977 SELECT qp_number.canonical_to_number(VALUE_FROM)
29978 FROM qp_npreq_line_attrs_tmp
29979 WHERE CONTEXT = G_PRIC_ITEM_CONTEXT
29980 AND ATTRIBUTE = G_PRIC_ATTRIBUTE1
29981 AND ATTRIBUTE_TYPE = G_PRODUCT_TYPE
29982 AND LINE_INDEX = p_line_index
29983 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED;
29984
29985 CURSOR get_request_inv_item_name_cur(p_item_id PLS_INTEGER) IS
29986 SELECT concatenated_segments
29987 --INTO l_request_item_name
29988 FROM mtl_system_items_vl
29989 WHERE inventory_item_id = p_item_id
29990 AND organization_id = QP_UTIL.Get_Item_Validation_Org;
29991 -- end shulin bug 1605829 fix
29992
29993 J PLS_INTEGER:=1;
29994 N PLS_INTEGER:=1;
29995 B PLS_INTEGER:=0;
29996 C PLS_INTEGER:=0;
29997 l_reason_tbl VARCHAR_TYPE;
29998 l_parent_line_detail_index PLS_INTEGER;
29999 l_rltd_line_index PLS_INTEGER;
30000 l_parent_line_index PLS_INTEGER;
30001 l_percent_price NUMBER := 0;
30002 l_parent_unit_price NUMBER :=NULL; -- fix bug 2776849, uom_service_pricing
30003 l_parent_line_unit_price NUMBER :=NULL; -- fix bug 2776849, uom_service_pricing
30004 l_parent_line_quantity NUMBER:=NULL;
30005 l_parent_priced_quantity NUMBER:=NULL;
30006 l_parent_line_uom_code VARCHAR2(30);
30007 l_GSA_Enabled_Flag VARCHAR2(50);
30008 l_GSA_Qualifier_Flag VARCHAR2(50);
30009 l_status_code VARCHAR2(30);
30010 l_status_text VARCHAR2(240);
30011 l_gsa_violation_flag VARCHAR2(1);
30012 l_routine VARCHAR2(240):= 'Routine:QP_PREQ_GRP.Call_Calculation_Engine';
30013 l_err_line_index NUMBER;
30014 l_attribute VARCHAR2(30);
30015 l_value VARCHAR2(30);
30016 V PLS_INTEGER := 0;
30017 U PLS_INTEGER := 0;
30018 Y PLS_INTEGER := 0;
30019 L PLS_INTEGER := 0;
30020
30021 G_UNIT_PRICE_TBL_C NUMBER_TYPE;
30022 G_LINE_UNIT_PRICE_TBL_C NUMBER_TYPE; -- shu_latest
30023 G_ORDER_UOM_TBL_C NUMBER_TYPE; -- bug 2693700
30024 G_PERCENT_PRICE_TBL_C NUMBER_TYPE;
30025 G_ADJUSTED_UNIT_PRICE_TBL_C NUMBER_TYPE;
30026 G_PARENT_PRICE_TBL_C NUMBER_TYPE;
30027 G_PARENT_PRICED_QUANTITY_TBL_C NUMBER_TYPE;
30028 G_PARENT_LINE_QUANTITY_TBL_C NUMBER_TYPE;
30029 G_PARENT_LINE_UOM_TBL_C VARCHAR_TYPE;
30030 G_LINE_INDEX_TBL_C NUMBER_TYPE;
30031 G_EXTENDED_PRICE_TBL_C NUMBER_TYPE; -- block pricing
30032 G_GSA_LINE_INDEX_TBL_C NUMBER_TYPE;
30033 l_line_details_exist_flag BOOLEAN := FALSE;
30034
30035 G_ADJUSTMENT_AMOUNT_TBL_D NUMBER_TYPE;
30036 --G_LINE_QUANTITY_TBL_D NUMBER_TYPE;
30037 G_BENEFIT_QUANTITY_TBL_D NUMBER_TYPE;
30038 G_OPERAND_VALUE_TBL_D NUMBER_TYPE;
30039 G_QUALIFIER_VALUE_TBL_D NUMBER_TYPE;
30040 G_LINE_DETAIL_INDEX_TBL_D NUMBER_TYPE;
30041
30042 G_LINE_QUANTITY_TBL_R NUMBER_TYPE;
30043 G_ADJUSTMENT_AMOUNT_TBL_R NUMBER_TYPE;
30044 G_LINE_DETAIL_INDEX_TBL_R NUMBER_TYPE;
30045
30046 G_PARENT_PRICE_TBL_P NUMBER_TYPE;
30047
30048 --[prarasto:Post Round] Start : new variables
30049 l_adjusted_unit_price_ur NUMBER_TYPE;
30050 l_unit_selling_price_ur NUMBER_TYPE;
30051 l_extended_selling_price_ur NUMBER_TYPE;
30052 l_adjusted_unit_price NUMBER_TYPE;
30053 l_unit_selling_price NUMBER_TYPE;
30054 l_extended_selling_price NUMBER_TYPE;
30055 --[prarasto:Post Round] End : new variables
30056
30057 -- begin shulin bug 1605829 fix
30058 l_request_price_list_name qp_list_headers_v.name%type;
30059 l_request_uom VARCHAR2(30);
30060 l_request_item_id NUMBER;
30061 l_request_item_name mtl_system_items_vl.concatenated_segments%type;
30062 l_message VARCHAR2(240);
30063 -- end shulin bug 1605829 fix
30064
30065 l_line_unit_price NUMBER:= NULL; -- shu, default to null, fix bug 2354422, avoid division zero
30066 l_line_adjusted_unit_price NUMBER:= NULL;
30067 l_conversion_rate NUMBER:= NULL; -- shu, to fix bug 2354422
30068 l_order_uom_selling_price NUMBER:= NULL; -- bug 2693700
30069 v_price_round_options VARCHAR2(30):= FND_PROFILE.Value('QP_SELLING_PRICE_ROUNDING_OPTIONS'); --shu, new rounding
30070
30071 E_CAL_ENGINE_ERROR EXCEPTION;
30072
30073 BEGIN
30074
30075
30076 x_status_code := FND_API.G_RET_STS_SUCCESS;
30077
30078 --For manual discount, we want pricing_group sequence to be NULL
30079 /*
30080 -- This update is not needed as it is taken care of by the setup
30081 INDX,QP_PREQ_GRP.call_calculation_engine.call_calculation_engine_upd1,qp_npreq_ldets_tmp_N6,AUTOMATIC_FLAG,1
30082 */
30083 /* UPDATE qp_npreq_ldets_tmp
30084 SET PRICING_GROUP_SEQUENCE = NULL
30085 WHERE AUTOMATIC_FLAG = G_NO; */
30086
30087
30088 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30089 engine_debug( '-------------In call calculation engine-----------');
30090 END IF;
30091
30092 l_GSA_Enabled_Flag := FND_PROFILE.VALUE(G_GSA_Max_Discount_Enabled);
30093
30094 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30095 engine_debug ('GSA Enabled Flag : ' || l_GSA_Enabled_Flag);
30096 engine_debug ('Freeze_override_flag: '||p_freeze_override_flag);
30097 END IF;
30098
30099 G_UNIT_PRICE_TBL_C.delete;
30100 G_LINE_UNIT_PRICE_TBL_C.delete; -- shu_latest
30101 G_ORDER_UOM_TBL_C.delete; -- bug 2693700
30102 G_PERCENT_PRICE_TBL_C.delete;
30103 G_ADJUSTED_UNIT_PRICE_TBL_C.delete;
30104 G_PARENT_PRICE_TBL_C.delete;
30105 G_PARENT_PRICED_QUANTITY_TBL_C.delete;
30106 G_PARENT_LINE_QUANTITY_TBL_C.delete;
30107 G_PARENT_LINE_UOM_TBL_C.delete;
30108 G_LINE_INDEX_TBL_C.delete;
30109 G_GSA_LINE_INDEX_TBL_C.delete;
30110 G_EXTENDED_PRICE_TBL_C.delete; -- block pricing
30111
30112 G_ADJUSTMENT_AMOUNT_TBL_D.delete;
30113 --G_LINE_QUANTITY_TBL_D.delete;
30114 G_BENEFIT_QUANTITY_TBL_D.delete;
30115 G_OPERAND_VALUE_TBL_D.delete;
30116 G_QUALIFIER_VALUE_TBL_D.delete;
30117 G_LINE_DETAIL_INDEX_TBL_D.delete;
30118
30119 G_LINE_QUANTITY_TBL_R.delete;
30120 G_ADJUSTMENT_AMOUNT_TBL_R.delete;
30121 G_LINE_DETAIL_INDEX_TBL_R.delete;
30122 G_PARENT_PRICE_TBL_P.delete;
30123
30124 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30125 engine_debug (' G_REQUEST_TYPE_CODE: ' ||G_REQUEST_TYPE_CODE); -- shu, aso rounding
30126 engine_debug (' G_ROUNDING_FLAG: ' ||G_ROUNDING_FLAG); -- shu, aso rounding
30127 END IF; -- END IF DEBUG
30128
30129 FOR I IN l_request_line_cur LOOP
30130
30131 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30132 engine_debug('-----l_request_line_cur I loop ------');
30133 engine_debug (' line_index: ' ||i.line_index);
30134 engine_debug (' line_type_code: ' ||i.line_type_code);
30135 engine_debug (' rounding_factor: ' ||i.rounding_factor);
30136 engine_debug (' price_list_header_id: ' ||i.price_list_header_id);
30137 END IF;
30138
30139 IF (l_GSA_Enabled_Flag = G_YES) THEN
30140 OPEN gsa_qualifier_exists(I.LINE_INDEX) ;
30141 FETCH gsa_qualifier_exists INTO l_GSA_Qualifier_Flag;
30142 CLOSE gsa_qualifier_exists;
30143 END IF;
30144
30145 IF (I.PRICE_FLAG <> G_NO) THEN
30146 --IF (l_attribute = G_QUANTITY_ATTRIBUTE) THEN
30147 -- Default value
30148 p_cal_req_line_rec.qualifier_value := NVL(I.priced_quantity,I.line_quantity);
30149 --ELSE
30150 -- p_cal_req_line_rec.qualifier_value := nvl(nvl(I.PRICED_QUANTITY,I.LINE_QUANTITY) * I.UNIT_PRICE,0);
30151 --END IF;
30152
30153
30154 p_cal_req_line_rec.line_index :=I.line_index;
30155 p_cal_req_line_rec.unit_price :=I.unit_price;
30156 p_cal_req_line_rec.percent_price :=I.percent_price;
30157 p_cal_req_line_rec.service_duration :=nvl(I.uom_quantity,1);
30158 p_cal_req_line_rec.gsa_qualifier_flag :=l_GSA_Qualifier_Flag;
30159 p_cal_req_line_rec.gsa_enabled_flag :=l_GSA_Enabled_Flag;
30160 p_cal_req_line_rec.pricing_effective_date :=I.pricing_effective_date;
30161 p_cal_req_line_rec.rounding_factor :=I.rounding_factor;
30162 p_cal_req_line_rec.rounding_flag :=I.rounding_flag;
30163
30164 END IF; -- END IF (I.PRICE_FLAG <> G_NO)
30165
30166 IF (I.PROCESSING_ORDER > 1) THEN -- service pricing
30167
30168 OPEN l_service_item_cur(I.LINE_INDEX);
30169 FETCH l_service_item_cur INTO l_parent_line_index;
30170 CLOSE l_service_item_cur;
30171
30172 IF (l_parent_line_index IS NOT NULL) THEN
30173
30174 OPEN l_get_price_parent_line_cur(l_parent_line_index);
30175 FETCH l_get_price_parent_line_cur
30176 INTO l_parent_unit_price, --fix bug 2776849, uom_service_pricing
30177 l_parent_line_unit_price, --fix bug 2776849, uom_service_pricing
30178 l_parent_priced_quantity,
30179 l_parent_line_quantity,
30180 l_parent_line_uom_code;
30181 CLOSE l_get_price_parent_line_cur;
30182
30183 -- if price flag is 'N' for the parent line , then that record would not exist in g_parent_price_tbl_p
30184 -- So check g_parent_price_tbl_p.exists(l_parent_line_index), bug# 2163919
30185 -- begin fix bug 2776849, uom_service_pricing
30186 IF (g_parent_price_tbl_p.count > 0) AND g_parent_price_tbl_p.exists(l_parent_line_index) THEN
30187 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);
30188 ELSE
30189 p_cal_req_line_rec.RELATED_ITEM_PRICE := nvl(l_parent_line_unit_price, l_parent_unit_price);
30190 END IF; -- END IF (g_parent_price_tbl_p.count > 0)
30191
30192 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30193 engine_debug(' l_parent_line index : '|| l_parent_line_index);
30194 engine_debug(' p_cal_req_line_rec.RELATED_ITEM_PRICE: '|| p_cal_req_line_rec.RELATED_ITEM_PRICE);
30195 END IF; -- END IF DEBUG
30196
30197 ELSE -- l_parent_line_index is null
30198 -- Error Condition
30199 null;
30200 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30201 engine_debug('Unable to find parent line for a service item');
30202 END IF;
30203 l_err_line_index := I.LINE_INDEX;
30204 DELETE_LINES(l_err_line_index,
30205 G_STATUS_OTHER_ERRORS,
30206 'Could not find parent line for a child service line:'||l_err_line_index,
30207 l_status_code,
30208 l_status_text);
30209 GOTO E_LOOP;
30210 END IF; -- END IF (l_parent_line_index IS NOT NULL)
30211
30212 END IF; -- END IF (I.PROCESSING_ORDER > 1)
30213
30214 FOR K IN l_request_line_detail_cur(I.LINE_INDEX,I.PRICE_FLAG) LOOP
30215 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30216 engine_debug('-----l_request_line_detail_cur K loop------');
30217 END IF;
30218
30219 l_line_details_exist_flag := TRUE;
30220
30221 -- Don't populate calculation engine rec if it is not an automatic discount
30222 -- and it is not a direct call
30223 -- If freight charges and Discount related manual Price Breaks or recurring discounts,
30224 -- do not skip calculation even if automatic_flag = 'N'
30225 IF K.AUTOMATIC_FLAG = G_NO AND p_is_direct_call = FALSE THEN
30226 IF (K.created_from_list_line_type NOT IN (G_FREIGHT_CHARGE,G_PRICE_BREAK_TYPE) AND
30227 K.created_from_list_type_code NOT IN ('PRL','AGR') AND
30228 K.PRICE_BREAK_TYPE_CODE <> G_RECURRING_BREAK AND
30229 K.LINE_DETAIL_TYPE_CODE <> G_CHILD_DETAIL_TYPE)THEN
30230 GOTO SKIP_CAL_LOOP;
30231 END IF;
30232 END IF;
30233
30234 IF (K.LINE_DETAIL_TYPE_CODE <> G_CHILD_DETAIL_TYPE) THEN
30235
30236 p_cal_req_ldets_tbl(J).created_from_list_type := K.created_from_list_type_code;
30237 p_cal_req_ldets_tbl(J).created_from_list_line_id:= K.created_from_list_line_id;
30238 p_cal_req_ldets_tbl(J).created_from_list_header_id:= K.created_from_list_header_id;
30239 p_cal_req_ldets_tbl(J).line_detail_index := K.line_detail_index;
30240 p_cal_req_ldets_tbl(J).created_from_list_line_type:= K.created_from_list_line_type;
30241 p_cal_req_ldets_tbl(J).pricing_group_sequence := K.pricing_group_sequence;
30242 p_cal_req_ldets_tbl(J).accrual_flag := K.accrual_flag;
30243 p_cal_req_ldets_tbl(J).automatic_flag := K.automatic_flag;
30244 p_cal_req_ldets_tbl(J).accrual_conversion_rate := K.accrual_conversion_rate;
30245 p_cal_req_ldets_tbl(J).estim_accrual_rate := K.estim_accrual_rate;
30246 p_cal_req_ldets_tbl(J).price_break_type_code := K.price_break_type_code;
30247 p_cal_req_ldets_tbl(J).bucketed_flag := 'N'; -- TO_DO 2388011, IT bucket, for now, should from the cursor
30248 --p_cal_req_ldets_tbl(J).bucketed_flag := k.bucketed_flag; -- TO_DO 2388011, IT bucket
30249 p_cal_req_ldets_tbl(J).bucketed_flag := nvl(k.net_amount_flag, 'N'); -- 2720717, IT net_amount
30250
30251
30252
30253 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30254 engine_debug('List Line Id for Qualifier Value: ' || k.created_from_list_line_id);
30255
30256 END IF;
30257 -- This is not needed as in Process_Line_Group procedure we are populating the right attibute
30258 -- So either it would be group_quantity or group_amount
30259
30260 /* OPEN l_list_line_attribute_cur(K.created_from_list_line_id);
30261 FETCH l_list_line_attribute_cur INTO l_attribute;
30262 CLOSE l_list_line_attribute_cur; */
30263
30264 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30265 engine_debug('Modifier Level Code: ' || K.modifier_level_code);
30266 END IF;
30267
30268 IF (K.MODIFIER_LEVEL_CODE = G_LINE_GROUP) THEN
30269 -- begin 2388011_new
30270 IF (K.SELECTED_VOLUME_ATTR = G_AMOUNT) THEN -- 2388011_new
30271 p_cal_req_ldets_tbl(J).qualifier_value := nvl(K.line_quantity,0);
30272 END IF;
30273 p_cal_req_ldets_tbl(J).line_quantity := nvl(K.group_quantity,K.group_amount); -- ASK RAVI
30274 --p_cal_req_ldets_tbl(J).line_quantity := nvl(K.line_quantity,0); --2388011, grp_lines_pbh
30275 --end 2388011_new
30276 p_cal_req_ldets_tbl(J).modifier_level_code := 'LINEGROUP'; --2388011, grp_lines_pbh
30277 ELSE
30278 -- begin 2388011_new
30279 -- 2388011_latest whole block
30280 IF (K.SELECTED_VOLUME_ATTR = G_QUANTITY) THEN -- ravi_latest
30281 p_cal_req_ldets_tbl(J).line_quantity := NVL(I.priced_quantity,I.line_quantity);
30282 p_cal_req_ldets_tbl(J).modifier_level_code := 'LINE'; -- new ravi
30283 ELSE -- Amount and Other Attributes
30284 p_cal_req_ldets_tbl(J).line_quantity := NVL(I.priced_quantity,I.line_quantity);
30285 p_cal_req_ldets_tbl(J).modifier_level_code := 'LINE'; -- new ravi
30286 p_cal_req_ldets_tbl(J).qualifier_value := nvl(K.line_quantity,0);
30287 END IF;
30288 -- end 2388011_latest
30289 l_value := null;
30290 END IF;
30291
30292 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30293 engine_debug('Qualifier Value for loading: ' || p_cal_req_ldets_tbl(J).qualifier_value);
30294
30295 END IF;
30296 p_cal_req_ldets_tbl(J).operand_calculation_code:=K.operand_calculation_code;
30297 p_cal_req_ldets_tbl(J).operand_value:=K.operand_value;
30298
30299 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30300 engine_debug('accrual_flag: '||p_cal_req_ldets_tbl(J).accrual_flag);
30301 engine_debug('estim_accrual_rate: '||p_cal_req_ldets_tbl(J).estim_accrual_rate);
30302 engine_debug('accrual_conversion_rate: '||p_cal_req_ldets_tbl(J).accrual_conversion_rate);
30303
30304 END IF;
30305 J:=J+1;
30306
30307 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30308 engine_debug('+--------------------------------+');
30309 engine_debug('| In Parent Line |');
30310 engine_debug('+--------------------------------+');
30311 engine_debug('LINE_DETAIL_INDEX: '||K.line_detail_index);
30312 engine_debug('LINE_INDEX: '|| K.line_index);
30313 engine_debug('CREATED_FROM_LIST_LINE_ID :'||K.created_from_list_line_id);
30314 engine_debug('CREATED_FROM_LIST_LINE_TYPE : '||K.created_from_list_line_type);
30315 engine_debug('CREATED_FROM_LIST_TYPE : '||K.created_from_list_type_code);
30316 engine_debug('PRICING_GROUP_SEQUENCE: '||K.pricing_group_sequence);
30317 engine_debug('OPERAND_CALCULATION_CODE: '||K.operand_calculation_code);
30318 engine_debug('OPERAND_VALUE: '||K.operand_value);
30319 engine_debug('NET_AMOUNT_FLAG: '||k.net_amount_flag); -- 2720717, IT net_amount
30320
30321 END IF;
30322 ELSIF (K.LINE_DETAIL_TYPE_CODE = G_CHILD_DETAIL_TYPE) THEN
30323 --FOR P IN l_line_attrs_cur(K.LINE_DETAIL_INDEX) LOOP
30324
30325 p_cal_req_rltd_tbl(N).value_from := qp_number.canonical_to_number(G_CHILD_VALUE_FROM_TBL(k.line_detail_index));
30326 p_cal_req_rltd_tbl(N).value_to := qp_number.canonical_to_number(G_CHILD_VALUE_TO_TBL(k.line_detail_index));
30327 p_cal_req_rltd_tbl(N).operand_calculation_code := K.operand_calculation_code;
30328 p_cal_req_rltd_tbl(N).operand_value := K.operand_value;
30329 p_cal_req_rltd_tbl(N).price_break_type_code := K.price_break_type_code;
30330 p_cal_req_rltd_tbl(N).child_line_detail_index :=K.line_detail_index;
30331 p_cal_req_rltd_tbl(N).related_list_line_type := K.created_from_list_line_type;
30332 p_cal_req_rltd_tbl(N).pricing_group_sequence := K.pricing_group_sequence;
30333 p_cal_req_rltd_tbl(N).recurring_value := K.recurring_value; -- block pricing
30334
30335 --get the parent line detail index for this pbh line
30336
30337 /*
30338 INDX,QP_PREQ_GRP.call_calculation_engine.call_calculation_engine_sel1,-No Index Used-,NA,NA
30339 */
30340 /* julin [3805113]: using global table populated in handle_break
30341 SELECT LINE_DETAIL_INDEX
30342 INTO l_parent_line_detail_index
30343 FROM qp_npreq_rltd_lines_tmp
30344 WHERE RELATED_LINE_DETAIL_INDEX = K.line_detail_index;
30345 */
30346 --p_cal_req_rltd_tbl(N).line_detail_index is actually parent line detail index
30347 p_cal_req_rltd_tbl(N).line_detail_index := TO_NUMBER(G_PARENT_LINE_DETAIL_INDEX_TBL(k.line_detail_index));
30348
30349 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30350 engine_debug('----IN Children line------------');
30351 engine_debug('value from: '||p_cal_req_rltd_tbl(N).value_from);
30352 engine_debug('value to: ' ||p_cal_req_rltd_tbl(N).value_to);
30353 engine_debug('LINE_INDEX: '||I.LINE_INDEX);
30354 engine_debug('Calculation Code: '||K.OPERAND_CALCULATION_CODE);
30355 engine_debug('Operand Value: '||K.OPERAND_VALUE);
30356 engine_debug('Price_break_type_code: '||K.PRICE_BREAK_TYPE_CODE);
30357 engine_debug('Parent line detail index: '||l_parent_line_detail_index);
30358 engine_debug('Child line detail index: '||K.LINE_DETAIL_INDEX);
30359 engine_debug('Related List line type: '||K.created_from_list_line_type);
30360 engine_debug('List Line ID: '||K.created_from_list_line_id);
30361
30362 END IF;
30363 N:=N+1;
30364
30365 --END LOOP;
30366
30367
30368 END IF;
30369 <<SKIP_CAL_LOOP>>
30370 IF(K.AUTOMATIC_FLAG = G_NO AND p_is_direct_call = FALSE) THEN
30371 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30372 engine_debug('Not calling cal engine for child break line because automatic_flag was set to ''N''');
30373 END IF;
30374 null;
30375 END IF;
30376
30377 END LOOP; --END K loop
30378
30379
30380 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30381 engine_debug(l_routine||' Before calling cal engine');
30382
30383 END IF;
30384 QP_Calculate_Price_PUB.Calculate_Price
30385 (p_cal_req_line_rec,
30386 p_cal_req_ldets_tbl,
30387 p_cal_req_rltd_tbl,
30388 l_status_code,
30389 l_status_text);
30390
30391 IF (l_status_code = FND_API.G_RET_STS_ERROR) THEN
30392 l_err_line_index := I.LINE_INDEX;
30393 DELETE_LINES(l_err_line_index,
30394 G_STATUS_OTHER_ERRORS,
30395 'Error returned by QP_Calculate_Price_PUB.Calculate_Price',
30396 l_status_code,
30397 l_status_text);
30398 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30399 engine_debug('Error text '||l_status_text);
30400 END IF;
30401 GOTO E_LOOP;
30402
30403 END IF;
30404
30405 /* fix bug 2776849, move this to later
30406 -- Holding the parent price for service pricing
30407 IF (i.PROCESSING_ORDER = 1 ) THEN
30408 G_PARENT_PRICE_TBL_P(i.line_index) := p_cal_req_line_rec.UNIT_PRICE;
30409 END IF;
30410 */
30411 -- Indicating that there was a GSA Violation
30412 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30413 engine_debug ('GSA Status Code : ' || l_status_code);
30414 END IF;
30415 IF (l_status_code = G_STATUS_GSA_VIOLATION) THEN
30416 l_gsa_violation_flag := 'Y';
30417 V := V + 1;
30418 G_GSA_LINE_INDEX_TBL_C(V) := I.LINE_INDEX;
30419 ELSE
30420 l_gsa_violation_flag := 'N';
30421 END IF;
30422
30423 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30424 engine_debug ('In Line Update Information100');
30425 END IF;
30426 -- Load Line Information
30427 IF (l_line_details_exist_flag = TRUE) THEN --Change
30428 U := U+1; --Change
30429 G_UNIT_PRICE_TBL_C(U) := p_cal_req_line_rec.UNIT_PRICE;
30430 G_PERCENT_PRICE_TBL_C(U) := p_cal_req_line_rec.PERCENT_PRICE;
30431 G_ADJUSTED_UNIT_PRICE_TBL_C(U) := p_cal_req_line_rec.ADJUSTED_UNIT_PRICE;
30432 --G_PARENT_PRICE_TBL_C(U) := l_parent_line_price;
30433 G_PARENT_PRICE_TBL_C(U) := l_parent_line_unit_price; -- fix 2776849, uom_service_pricing
30434 G_PARENT_PRICED_QUANTITY_TBL_C(U) := l_parent_priced_quantity;
30435 G_PARENT_LINE_QUANTITY_TBL_C(U) := l_parent_line_quantity;
30436 G_PARENT_LINE_UOM_TBL_C(U) := l_parent_line_uom_code;
30437 G_LINE_INDEX_TBL_C(U) := i.line_index;
30438 G_EXTENDED_PRICE_TBL_C(U) := p_cal_req_line_rec.EXTENDED_PRICE; -- block pricing
30439 --G_LINE_UNIT_PRICE_TBL_C(U) := p_cal_req_line_rec.UNIT_PRICE * i.PRICED_QUANTITY / i.LINE_QUANTITY;
30440
30441 -- begin shu, round line unit price (unit price by order uom)
30442 -- shu, fix bug 2354422, avoid division zero if i.LINE_QUANTITY is zero
30443
30444 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30445 engine_debug ('parent_qty: '|| l_parent_priced_quantity);
30446 engine_debug ('unit_price: '|| p_cal_req_line_rec.UNIT_PRICE);
30447 engine_debug ('priced_qty: '|| i.PRICED_QUANTITY);
30448 engine_debug ('line_qty: '|| i.LINE_QUANTITY);
30449 END IF;
30450
30451 IF (i.LINE_QUANTITY <> 0 AND i.LINE_QUANTITY IS NOT NULL) THEN
30452 -- l_line_unit_price := p_cal_req_line_rec.UNIT_PRICE * i.PRICED_QUANTITY / i.LINE_QUANTITY;-- bug 2693700
30453 -- l_line_unit_price:=(p_cal_req_line_rec.UNIT_PRICE * i.PRICED_QUANTITY/i.LINE_QUANTITY)*nvl(i.catchweight_qty, 1);
30454 IF (i.catchweight_qty IS NOT NULL) THEN
30455 l_line_unit_price :=
30456 p_cal_req_line_rec.unit_price * (i.priced_quantity/i.actual_order_quantity)* (i.catchweight_qty/i.line_quantity);
30457 ELSIF (i.actual_order_quantity IS NOT NULL) THEN
30458 l_line_unit_price :=
30459 p_cal_req_line_rec.unit_price * (i.priced_quantity/i.actual_order_quantity);
30460 ELSE
30461 l_line_unit_price := p_cal_req_line_rec.unit_price * (i.priced_quantity/i.line_quantity);
30462 END IF;
30463
30464 -- bug 2693700
30465 --l_order_uom_selling_price :=
30466 --(nvl(p_cal_req_line_rec.adjusted_unit_price,p_cal_req_line_rec.unit_price) *
30467 --i.priced_quantity/ i.line_quantity)* nvl(i.catchweight_qty, 1);
30468 -- bug 2693700
30469
30470 IF (i.catchweight_qty IS NOT NULL) THEN
30471 l_order_uom_selling_price := (nvl(p_cal_req_line_rec.adjusted_unit_price,p_cal_req_line_rec.unit_price) *
30472 (i.priced_quantity/i.actual_order_quantity)* (i.catchweight_qty/i.line_quantity));
30473 ELSIF (i.actual_order_quantity IS NOT NULL) THEN
30474 l_order_uom_selling_price := (nvl(p_cal_req_line_rec.adjusted_unit_price,p_cal_req_line_rec.unit_price) *
30475 (i.priced_quantity/i.actual_order_quantity));
30476 ELSE
30477 l_order_uom_selling_price := (nvl(p_cal_req_line_rec.adjusted_unit_price,p_cal_req_line_rec.unit_price)*
30478 (i.priced_quantity/i.line_quantity));
30479 END IF;
30480
30481 ELSE
30482 IF (i.LINE_UOM_CODE = i.PRICED_UOM_CODE) THEN -- no uom conversion
30483 l_line_unit_price := p_cal_req_line_rec.UNIT_PRICE;
30484 l_line_adjusted_unit_price := nvl(p_cal_req_line_rec.ADJUSTED_UNIT_PRICE,p_cal_req_line_rec.UNIT_PRICE);
30485 ELSE -- uom conversion, need to show line_unit_price even line_qty is zero or null
30486 Inv_convert.inv_um_conversion(i.line_uom_code,
30487 i.priced_uom_code,
30488 null,
30489 l_conversion_rate);
30490 l_line_unit_price := p_cal_req_line_rec.UNIT_PRICE * l_conversion_rate;
30491 l_line_adjusted_unit_price := nvl(p_cal_req_line_rec.ADJUSTED_UNIT_PRICE,p_cal_req_line_rec.UNIT_PRICE) *
30492 l_conversion_rate;
30493 END IF;
30494
30495 -- l_order_uom_selling_price := (nvl(p_cal_req_line_rec.adjusted_unit_price,p_cal_req_line_rec.unit_price) *
30496 -- l_conversion_rate * i.priced_quantity/ i.line_quantity)* nvl(i.catchweight_qty, 1);
30497 -- bug 2693700
30498 IF (i.catchweight_qty IS NOT NULL) THEN
30499
30500 if (i.line_quantity <> 0) then
30501 l_order_uom_selling_price := (l_line_adjusted_unit_price *
30502 (i.priced_quantity/i.actual_order_quantity)* (i.catchweight_qty/i.line_quantity));
30503 Else
30504 l_order_uom_selling_price := l_line_adjusted_unit_price;
30505 --Bug#3075286
30506 End if;
30507 ELSIF (i.actual_order_quantity IS NOT NULL) THEN
30508
30509 if i.actual_order_quantity <> 0 then
30510 l_order_uom_selling_price := (l_line_adjusted_unit_price * (i.priced_quantity/i.actual_order_quantity));
30511 Else
30512 l_order_uom_selling_price := l_line_adjusted_unit_price; --Bug#3075286
30513 End if;
30514 ELSE
30515
30516
30517 IF i.LINE_QUANTITY <> 0 THEN
30518
30519 l_order_uom_selling_price := (l_line_adjusted_unit_price *(i.priced_quantity/i.line_quantity));
30520 ELSE
30521 l_order_uom_selling_price := l_line_adjusted_unit_price;
30522 --Bug#3075286
30523 END IF;
30524 END IF;
30525
30526 END IF;
30527 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30528 engine_debug ('line_unit_price bfe round: '||l_line_unit_price);
30529 engine_debug ('rounding_factor:'|| i.rounding_factor);
30530 engine_debug (' order_uom_selling_price bfe round : ' || l_order_uom_selling_price); -- bug 2693700
30531 END IF;
30532
30533 -- Holding the parent price for service pricing
30534 IF (i.PROCESSING_ORDER = 1 ) THEN
30535 G_PARENT_PRICE_TBL_P(i.line_index) := nvl(l_line_unit_price, p_cal_req_line_rec.UNIT_PRICE) ;
30536 END IF;
30537
30538 --===[prarasto:Post Round] Start : Calculate rounded values ==--
30539 l_adjusted_unit_price_ur(U) := NVL(G_ADJUSTED_UNIT_PRICE_TBL_C(U), G_UNIT_PRICE_TBL_C(U));
30540
30541 l_unit_selling_price_ur(U) := l_order_uom_selling_price;
30542
30543 IF( G_EXTENDED_PRICE_TBL_C(U) is not null )THEN
30544 IF ( i.catchweight_qty is null ) and ( i.actual_order_quantity IS NOT NULL ) THEN
30545 l_extended_selling_price_ur(U) := l_unit_selling_price_ur(U) * i.actual_order_quantity;
30546 ELSE
30547 l_extended_selling_price_ur(U) := l_unit_selling_price_ur(U) * i.line_quantity;
30548 END IF;
30549 ELSE
30550 l_extended_selling_price_ur(U) := G_EXTENDED_PRICE_TBL_C(U);
30551 END IF;
30552
30553 IF (G_ROUNDING_FLAG = 'N') or (i.rounding_factor IS null) THEN
30554 l_adjusted_unit_price(U) := l_adjusted_unit_price_ur(U);
30555 l_unit_selling_price(U) := l_unit_selling_price_ur(U);
30556 l_extended_selling_price(U) := l_extended_selling_price_ur(U);
30557 G_LINE_UNIT_PRICE_TBL_C(U) := l_line_unit_price;
30558 ELSE
30559 l_adjusted_unit_price(U) := round(l_adjusted_unit_price_ur(U), - 1 * i.rounding_factor);
30560 l_unit_selling_price(U) := round(l_unit_selling_price_ur(U), - 1 * i.rounding_factor);
30561 l_extended_selling_price(U) := round(l_extended_selling_price_ur(U), - 1 * i.rounding_factor);
30562 G_LINE_UNIT_PRICE_TBL_C(U) := round(l_line_unit_price, - 1 * i.rounding_factor);
30563 END IF;
30564 /*
30565 IF G_ROUNDING_FLAG = 'Y' AND i.rounding_factor IS NOT NULL THEN -- aso rounding
30566
30567 l_line_unit_price := ROUND(l_line_unit_price, (-1)*i.rounding_factor);
30568 G_LINE_UNIT_PRICE_TBL_C(U) := l_line_unit_price;
30569
30570 l_order_uom_selling_price := ROUND(l_order_uom_selling_price, (-1)*i.rounding_factor); --bug 2693700
30571 G_ORDER_UOM_TBL_C(U) := l_order_uom_selling_price; -- bug 2693700
30572
30573
30574 ELSIF (G_ROUNDING_FLAG = 'Q') THEN -- check qp_selling_price_rounding_options profile -- shu, new rounding
30575 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
30576 l_line_unit_price := ROUND(l_line_unit_price, (-1)*i.rounding_factor);
30577 G_LINE_UNIT_PRICE_TBL_C(U) := l_line_unit_price;
30578
30579 l_order_uom_selling_price := ROUND(l_order_uom_selling_price, (-1)*i.rounding_factor); --bug 2693700
30580 G_ORDER_UOM_TBL_C(U) := l_order_uom_selling_price; -- bug 2693700
30581
30582 ELSE -- 'NO_ROUND', 'NO_ROUND_ADJ'
30583 G_LINE_UNIT_PRICE_TBL_C(U) := l_line_unit_price;
30584 G_ORDER_UOM_TBL_C(U) := l_order_uom_selling_price; -- bug 2693700
30585 END IF;
30586 ELSE
30587 G_LINE_UNIT_PRICE_TBL_C(U) := l_line_unit_price;
30588 G_ORDER_UOM_TBL_C(U) := l_order_uom_selling_price; -- bug 2693700
30589 END IF;
30590 */
30591 --===[prarasto:Post Round] End : Calculate rounded values ==--
30592
30593 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30594 engine_debug (' final line_unit_price : '||l_line_unit_price);
30595 engine_debug (' order_uom_selling_price : ' || l_order_uom_selling_price); -- bug 2693700
30596 engine_debug ('G_LINE_UNIT_PRICE_TBL_C(U) : '||G_LINE_UNIT_PRICE_TBL_C(U)); --[prarasto:Post Round]
30597 engine_debug ('l_unit_selling_price(U) : '||l_unit_selling_price(U)); --[prarasto:Post Round]
30598 END IF;
30599 -- end shu
30600 l_line_details_exist_flag := FALSE; -- reset
30601 l_line_unit_price := NULL; --reset, shu
30602 l_order_uom_selling_price := NULL; -- bug 2693700
30603 l_conversion_rate := NULL; -- shu
30604 END IF;
30605
30606 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30607 engine_debug ('In Line Update Information200');
30608 END IF;
30609 --Load Line Detail Information
30610 IF (p_cal_req_ldets_tbl.COUNT > 0) THEN
30611 FOR X IN p_cal_req_ldets_tbl.FIRST .. p_cal_req_ldets_tbl.LAST
30612 LOOP
30613 Y := Y + 1;
30614 G_ADJUSTMENT_AMOUNT_TBL_D(Y) := p_cal_req_ldets_tbl(X).adjustment_amount;
30615 G_BENEFIT_QUANTITY_TBL_D(Y) := p_cal_req_ldets_tbl(X).benefit_qty;
30616 G_OPERAND_VALUE_TBL_D(Y) := p_cal_req_ldets_tbl(X).operand_value;
30617
30618 -- 2388011_new
30619 /*
30620 --begin 2388011, grp_of_lines_pbh
30621 IF (p_cal_req_ldets_tbl(X).modifier_level_code = G_LINE_GROUP) THEN
30622 G_QUALIFIER_VALUE_TBL_D(Y) := p_cal_req_ldets_tbl(X).qualifier_value;
30623 ELSE
30624 G_QUALIFIER_VALUE_TBL_D(Y) := NULL; -- needed , do not remove this code
30625 END IF;
30626 -- end 2388011, grp_of_lines_pbh
30627 */
30628
30629 G_LINE_DETAIL_INDEX_TBL_D(Y) := p_cal_req_ldets_tbl(X).line_detail_index;
30630 END LOOP;
30631 END IF;
30632
30633 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30634 engine_debug ('In Line Update Information300');
30635 engine_debug ('Related Pl/sql table count : ' || p_cal_req_rltd_tbl.count);
30636
30637 END IF;
30638 -- Load Related Lines Information
30639 IF (p_cal_req_rltd_tbl.COUNT > 0) THEN
30640 FOR X IN p_cal_req_rltd_tbl.FIRST .. p_cal_req_rltd_tbl.LAST
30641 LOOP
30642 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30643 engine_debug ('In Line Update Information3001');
30644 engine_debug ('Line Qty : ' || p_cal_req_rltd_tbl(X).line_qty);
30645 engine_debug ('Adjustment Amt : ' || p_cal_req_rltd_tbl(X).adjustment_amount);
30646 engine_debug ('Line Detail : ' || p_cal_req_rltd_tbl(X).child_line_detail_index);
30647 END IF;
30648 L := L+1;
30649 G_LINE_QUANTITY_TBL_R(L) := p_cal_req_rltd_tbl(X).line_qty;
30650 G_ADJUSTMENT_AMOUNT_TBL_R(L) := p_cal_req_rltd_tbl(X).adjustment_amount;
30651 G_LINE_DETAIL_INDEX_TBL_R(L) := p_cal_req_rltd_tbl(X).child_line_detail_index;
30652 END LOOP;
30653 END IF;
30654
30655 --Need to change it when have more time. Using bulk binding features.
30656 --to imporve performance
30657
30658 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30659 engine_debug ('In Line Update Information400');
30660 engine_debug('#7');
30661 END IF;
30662 --Bug# 1372485
30663 --Unit price can not be null at the very first phase
30664 IF (p_phase_sequence = G_PRICE_LIST_SEQUENCE
30665 AND p_cal_req_line_rec.UNIT_PRICE IS NULL
30666 AND I.line_type_code <> G_ORDER_LEVEL
30667 AND I.price_flag <> G_NO) THEN
30668
30669 -- begin shu, fix bug 2425027
30670 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30671 engine_debug ('percent price: '||p_cal_req_line_rec.PERCENT_PRICE);
30672 engine_debug ('related item price: '||p_cal_req_line_rec.RELATED_ITEM_PRICE);
30673 END IF;
30674
30675 IF p_cal_req_line_rec.PERCENT_PRICE IS NOT NULL AND p_cal_req_line_rec.RELATED_ITEM_PRICE IS NULL THEN
30676 l_message := ' No refernce of parent item or parent price is null for percent-based pricing.';
30677 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30678 engine_debug ('line_index: '||i.line_index);
30679 END IF;
30680 UPDATE qp_npreq_lines_tmp qplines
30681 SET
30682 PROCESSED_FLAG = G_PROCESSED,
30683 PERCENT_PRICE = p_cal_req_line_rec.PERCENT_PRICE -- still keep the percent_price
30684 WHERE qplines.LINE_INDEX = i.LINE_INDEX;
30685
30686 DELETE_LINES (i.LINE_INDEX,
30687 G_STATUS_INVALID_PRICE_LIST,
30688 l_message,
30689 l_status_code,
30690 l_status_text);
30691 ELSE
30692 -- end shu, fix bug 2425027
30693
30694 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30695 engine_debug('#8');
30696
30697 END IF;
30698 -- begin shulin bug 1605829 fix
30699
30700 OPEN get_request_prclst_name_cur(I.PRICE_LIST_HEADER_ID);
30701 FETCH get_request_prclst_name_cur INTO l_request_price_list_name;
30702 CLOSE get_request_prclst_name_cur;
30703
30704 OPEN get_request_inv_item_id_cur(I.LINE_INDEX);
30705 FETCH get_request_inv_item_id_cur INTO l_request_item_id;
30706 CLOSE get_request_inv_item_id_cur;
30707
30708 OPEN get_request_inv_item_name_cur(l_request_item_id);
30709 FETCH get_request_inv_item_name_cur INTO l_request_item_name;
30710 CLOSE get_request_inv_item_name_cur;
30711
30712 -- if item_name does not exist, then use inventory_id to display
30713 IF l_request_item_name IS NULL AND l_request_item_id IS NOT NULL THEN
30714 l_request_item_name := ' ID: ' || l_request_item_id;
30715 END IF;
30716
30717 l_request_uom := I.LINE_UOM_CODE;
30718
30719 FND_MESSAGE.SET_NAME('QP','QP_PRC_NO_LIST_PRICE');
30720 FND_MESSAGE.SET_TOKEN('ITEM',l_request_item_name);
30721 FND_MESSAGE.SET_TOKEN('UNIT',l_request_uom);
30722 FND_MESSAGE.SET_TOKEN('PRICE_LIST',l_request_price_list_name);
30723
30724 l_message := FND_MESSAGE.GET;
30725
30726 IF (G_REQUEST_TYPE_CODE = 'PO' AND l_request_price_list_name IS NULL) THEN
30727 SET_STATUS_CODE(NULL,
30728 l_message,
30729 I.LINE_INDEX,
30730 NULL,
30731 'LINES',
30732 l_status_code,
30733 l_status_text);
30734
30735 ELSE
30736 SET_STATUS_CODE(G_STATUS_INVALID_PRICE_LIST,
30737 l_message,
30738 I.LINE_INDEX,
30739 NULL,
30740 'LINES',
30741 l_status_code,
30742 l_status_text);
30743 END IF;
30744
30745 SET_STATUS_CODE(G_STATUS_DELETED,
30746 l_message,
30747 I.LINE_INDEX,
30748 NULL,
30749 'ATTRS',
30750 l_status_code,
30751 l_status_text);
30752
30753 SET_STATUS_CODE(G_STATUS_DELETED,
30754 l_message,
30755 I.LINE_INDEX,
30756 NULL,
30757 'LDETS',
30758 l_status_code,
30759 l_status_text);
30760
30761 -- end shu bug 1605829 fix
30762
30763 END IF; -- end if p_cal_req_line_rec.PERCENT_PRICE IS NOT NULL, shu fix bug 2425027
30764 END IF;
30765
30766 --Reset the values for next loop
30767 l_parent_line_quantity := NULL;
30768 l_parent_unit_price :=NULL; --2776849
30769 l_parent_line_unit_price :=NULL; -- 2776849
30770 l_parent_line_uom_code :=NULL;
30771 l_message := NULL; -- shu, fix bug 2425027
30772 p_cal_req_line_rec := l_cal_req_line_rec;
30773 p_cal_req_ldets_tbl.DELETE ;
30774 p_cal_req_rltd_tbl.DELETE;
30775 J := 1; -- For new request line
30776
30777 <<E_LOOP>>
30778 null;
30779 END LOOP; --end loop for I
30780
30781 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30782 engine_debug ('In Line Update Information500');
30783 END IF;
30784 -- Update All the Line Information at 1 shot
30785 IF (G_LINE_INDEX_TBL_C.COUNT > 0 ) THEN
30786 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30787 engine_debug ('In Line Update Information');
30788 END IF;
30789 FORALL M IN G_LINE_INDEX_TBL_C.FIRST.. G_LINE_INDEX_TBL_C.LAST
30790 UPDATE qp_npreq_lines_tmp qplines
30791 SET PRICING_STATUS_CODE = G_STATUS_UPDATED,
30792 PROCESSED_FLAG = G_PROCESSED,
30793 UNIT_PRICE = G_UNIT_PRICE_TBL_C(M),
30794 LINE_UNIT_PRICE = G_LINE_UNIT_PRICE_TBL_C(M), --shu_latest
30795 -- ORDER_UOM_SELLING_PRICE = G_ORDER_UOM_TBL_C(M), -- bug 2693700
30796 ORDER_UOM_SELLING_PRICE = l_unit_selling_price(M), --[prarasto:Post Round]
30797 --ORDER_UOM_SELLING_PRICE_UR = l_unit_selling_price_ur(M), --[prarasto:Post Round], [julin/postround] redesign
30798 PERCENT_PRICE = G_PERCENT_PRICE_TBL_C(M),
30799 -- ADJUSTED_UNIT_PRICE = NVL(G_ADJUSTED_UNIT_PRICE_TBL_C(M), G_UNIT_PRICE_TBL_C(M)),
30800 ADJUSTED_UNIT_PRICE = l_adjusted_unit_price(M), --[prarasto:Post Round]
30801 --ADJUSTED_UNIT_PRICE_UR = l_adjusted_unit_price_ur(M), --[prarasto:Post Round], [julin/postround] redesign
30802 PARENT_PRICE = G_PARENT_PRICE_TBL_C(M),
30803 --PARENT_QUANTITY = NVL(G_PARENT_PRICED_QUANTITY_TBL_C(M),G_PARENT_LINE_QUANTITY_TBL_C(M)),
30804 PARENT_QUANTITY = NVL(G_PARENT_LINE_QUANTITY_TBL_C(M), G_PARENT_PRICED_QUANTITY_TBL_C(M)), -- 2776849
30805 --PARENT_UOM_CODE = G_PARENT_LINE_UOM_TBL_C(M),
30806 PARENT_UOM_CODE = G_PARENT_LINE_UOM_TBL_C(M), -- 2776849
30807 -- EXTENDED_PRICE = G_EXTENDED_PRICE_TBL_C(M) -- block pricing
30808 EXTENDED_PRICE = l_extended_selling_price(M) --[prarasto:Post Round]
30809 --EXTENDED_SELLING_PRICE_UR = l_extended_selling_price_ur(M) --[prarasto:Post Round], [julin/postround] redesign
30810 WHERE qplines.LINE_INDEX = G_LINE_INDEX_TBL_C(M)
30811 AND (qplines.PRICE_FLAG <> G_NO or qplines.PROCESSED_CODE = G_BY_ENGINE) --CURRENT OF l_request_line_cur;
30812 -- shu, add following line to fix bug 2425027, so pricing_status_code IPL does not get changed to be UPDATED here
30813 AND (qplines.PRICING_STATUS_CODE <> G_STATUS_INVALID_PRICE_LIST
30814 OR qplines.LIST_PRICE_OVERRIDE_FLAG IN ('Y', 'O')); --po integration
30815 END IF;
30816
30817 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30818 engine_debug ('In Line Update Information600');
30819 END IF;
30820 IF (p_is_direct_call = TRUE) THEN
30821 -- Update All the Line Details Information at 1 Shot for all Lines
30822 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30823 engine_debug ('In Line Detail Update Information1');
30824 END IF;
30825 IF (G_LINE_DETAIL_INDEX_TBL_D.COUNT > 0) THEN
30826 FORALL O IN G_LINE_DETAIL_INDEX_TBL_D.FIRST .. G_LINE_DETAIL_INDEX_TBL_D.LAST
30827 UPDATE qp_npreq_ldets_tmp
30828 SET ADJUSTMENT_AMOUNT = G_ADJUSTMENT_AMOUNT_TBL_D(O),
30829 --LINE_QUANTITY = G_QUALIFIER_VALUE_TBL_D(O),-- 2388011, ASK RAVI, either priced_quantity,group_quantity,group_amount
30830 BENEFIT_QTY = G_BENEFIT_QUANTITY_TBL_D(O),
30831 OPERAND_VALUE = G_OPERAND_VALUE_TBL_D(O) --2388011_new, remove comma
30832 -- GROUP_QUANTITY = G_QUALIFIER_VALUE_TBL_D(O), --2388011_new
30833 -- GROUP_AMOUNT = G_QUALIFIER_VALUE_TBL_D(O) --2388011_new
30834 WHERE LINE_DETAIL_INDEX = G_LINE_DETAIL_INDEX_TBL_D(O);
30835 END IF;
30836 ELSE
30837 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30838 engine_debug ('In Line Detail Update Information2');
30839 END IF;
30840 -- Update All the Line Details Information at 1 Shot for all Lines
30841 IF (G_LINE_DETAIL_INDEX_TBL_D.COUNT > 0) THEN
30842 FORALL O IN G_LINE_DETAIL_INDEX_TBL_D.FIRST .. G_LINE_DETAIL_INDEX_TBL_D.LAST
30843 UPDATE /*+ index(QP_NPREQ_LDETS_TMP QP_PREQ_LDETS_TMP_U1) */ qp_npreq_ldets_tmp --5658579
30844 SET ADJUSTMENT_AMOUNT = G_ADJUSTMENT_AMOUNT_TBL_D(O),
30845 --LINE_QUANTITY = G_QUALIFIER_VALUE_TBL_D(O), -- 2388011, ASK RAVI, either priced_quantity,group_quantity,group_amount
30846 BENEFIT_QTY = G_BENEFIT_QUANTITY_TBL_D(O),
30847 OPERAND_VALUE = G_OPERAND_VALUE_TBL_D(O),
30848 --GROUP_QUANTITY = G_QUALIFIER_VALUE_TBL_D(O), --2388011_new
30849 --GROUP_AMOUNT = G_QUALIFIER_VALUE_TBL_D(O), --2388011_new
30850 APPLIED_FLAG = AUTOMATIC_FLAG
30851 WHERE LINE_DETAIL_INDEX = G_LINE_DETAIL_INDEX_TBL_D(O);
30852 END IF;
30853 END IF;
30854
30855 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30856 engine_debug ('In Line Detail Update Information3');
30857 END IF;
30858 -- Update All the Related Line Details Information at 1 Shot for all Lines
30859 IF (G_LINE_DETAIL_INDEX_TBL_R.COUNT > 0) THEN
30860 FORALL O IN G_LINE_DETAIL_INDEX_TBL_R.FIRST .. G_LINE_DETAIL_INDEX_TBL_R.LAST
30861 UPDATE qp_npreq_ldets_tmp
30862 SET ADJUSTMENT_AMOUNT = G_ADJUSTMENT_AMOUNT_TBL_R(O),
30863 LINE_QUANTITY = G_LINE_QUANTITY_TBL_R(O)
30864 WHERE LINE_DETAIL_INDEX = G_LINE_DETAIL_INDEX_TBL_R(O);
30865 END IF;
30866
30867 -- Update all GSA Violations at 1 shot
30868 --INDX,QP_PREQ_GRP.call_calculation_engine.call_calculation_engine_upd6,qp_npreq_lines_tmp_N1,LINE_INDEX,1
30869 IF (G_GSA_LINE_INDEX_TBL_C.COUNT > 0) THEN
30870 FORALL K IN G_GSA_LINE_INDEX_TBL_C.FIRST .. G_GSA_LINE_INDEX_TBL_C.LAST
30871 UPDATE qp_npreq_lines_tmp
30872 SET PRICING_STATUS_CODE = G_STATUS_GSA_VIOLATION,
30873 PRICING_STATUS_TEXT = l_status_text
30874 WHERE LINE_INDEX = G_GSA_LINE_INDEX_TBL_C(K);
30875 END IF;
30876 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30877 engine_debug ('In End Update Information');
30878
30879 END IF;
30880 -- Reset All tables
30881 G_UNIT_PRICE_TBL_C.delete;
30882 G_PERCENT_PRICE_TBL_C.delete;
30883 G_ADJUSTED_UNIT_PRICE_TBL_C.delete;
30884 G_PARENT_PRICE_TBL_C.delete;
30885 G_PARENT_PRICED_QUANTITY_TBL_C.delete;
30886 G_PARENT_LINE_QUANTITY_TBL_C.delete;
30887 G_PARENT_LINE_UOM_TBL_C.delete;
30888 G_LINE_INDEX_TBL_C.delete;
30889 G_GSA_LINE_INDEX_TBL_C.delete;
30890 G_EXTENDED_PRICE_TBL_C.delete; -- block pricing
30891
30892 G_ADJUSTMENT_AMOUNT_TBL_D.delete;
30893 --G_LINE_QUANTITY_TBL_D.delete;
30894 G_BENEFIT_QUANTITY_TBL_D.delete;
30895 G_OPERAND_VALUE_TBL_D.delete;
30896 G_QUALIFIER_VALUE_TBL_D.delete;
30897 G_LINE_DETAIL_INDEX_TBL_D.delete;
30898
30899 G_LINE_QUANTITY_TBL_R.delete;
30900 G_ADJUSTMENT_AMOUNT_TBL_R.delete;
30901 G_LINE_DETAIL_INDEX_TBL_R.delete;
30902
30903 EXCEPTION
30904 WHEN E_CAL_ENGINE_ERROR THEN
30905 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30906 engine_debug(l_routine||' '||l_status_text);
30907 END IF;
30908 DELETE_LINES(l_err_line_index,
30909 G_STATUS_OTHER_ERRORS,
30910 'Error returned by QP_Calculate_Price_PUB.Calculate_Price',
30911 l_status_code,
30912 l_status_text);
30913 WHEN OTHERS THEN
30914 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
30915 engine_debug('Exception in internal procedure CALL_CALCULATION_ENGINE ' || SQLERRM);
30916 END IF;
30917 x_status_code := FND_API.G_RET_STS_ERROR;
30918 x_status_text :=l_routine||' '||SQLERRM;
30919 null;
30920 END;
30921
30922 /*+------------------------------------------------------------
30923 | FORMULA INTEGRATION
30924 +------------------------------------------------------------
30925 */
30926
30927 PROCEDURE Formula_Processing(p_line_index IN NUMBER,
30928 p_pricing_phase_id IN NUMBER,
30929 x_status_code OUT NOCOPY VARCHAR2,
30930 x_status_text OUT NOCOPY VARCHAR2 ) AS
30931
30932 /*
30933 INDX,QP_PREQ_GRP.formula_processing.l_get_formula_id_cur,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
30934 INDX,QP_PREQ_GRP.formula_processing.l_get_formula_id_cur,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
30935 INDX,QP_PREQ_GRP.formula_processing.l_get_formula_id_cur,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
30936
30937 -- Full table scan on qp_npreq_lines_tmp
30938 */
30939 CURSOR l_get_formula_id_cur IS
30940
30941 SELECT /*+ ORDERED USE_NL(b) index(b QP_PREQ_LDETS_TMP_N1) l_get_formula_id_cur */
30942 b.LINE_INDEX , b.PRICE_FORMULA_ID,a.PRICING_EFFECTIVE_DATE,b.CREATED_FROM_LIST_LINE_ID,
30943 b.OPERAND_CALCULATION_CODE , b.OPERAND_VALUE, b.CREATED_FROM_LIST_LINE_TYPE,b.LINE_DETAIL_TYPE_CODE,
30944 b.GROUP_QUANTITY,b.LINE_QUANTITY GROUP_AMOUNT
30945 FROM
30946 qp_npreq_lines_tmp a,
30947 qp_npreq_ldets_tmp b
30948 WHERE a.LINE_INDEX = b.LINE_INDEX
30949 AND b.PRICING_STATUS_CODE = G_STATUS_NEW
30950 AND b.PRICING_PHASE_ID = p_pricing_phase_id
30951 AND b.PRICE_FORMULA_ID IS NOT NULL;
30952
30953 CURSOR l_get_list_price_cur(p_line_index PLS_INTEGER) IS
30954 SELECT UNIT_PRICE
30955 FROM qp_npreq_lines_tmp
30956 WHERE LINE_INDEX = p_line_index;
30957
30958 l_req_line_attrs_rec QP_FORMULA_PRICE_CALC_PVT.req_line_attrs_rec;
30959 l_req_line_attrs_tbl QP_FORMULA_PRICE_CALC_PVT.req_line_attrs_tbl;
30960 l_index NUMBER := 1;
30961 l_formula_based_price NUMBER;
30962 l_list_line_id NUMBER;
30963 l_return_status VARCHAR2(240);
30964 E_FORMULA_CALL_ERROR EXCEPTION;
30965 l_list_price NUMBER;
30966 l_modifier_value NUMBER;
30967 l_routine VARCHAR2(240):='Routine:QP_PREQ_GRP.Formula_Processing';
30968 l_line_index NUMBER;
30969 l_status_code VARCHAR2(30);
30970 l_status_text VARCHAR2(240);
30971 l_attr_inserted_flag BOOLEAN := FALSE;
30972 l_group_amount NUMBER;
30973
30974
30975 TYPE Num_Type IS TABLE OF Number INDEX BY BINARY_INTEGER;
30976 TYPE Char_Type IS TABLE OF Varchar2(30) INDEX BY BINARY_INTEGER;
30977
30978 l_line_index_tbl Num_Type;
30979 l_attribute_type_tbl Char_Type;
30980 l_context_tbl Char_Type;
30981 l_attribute_tbl Char_Type;
30982 l_pricing_status_code_tbl Char_Type;
30983 l_value_from_tbl Num_Type;
30984 l_value_from Number;
30985 l_msg_attribute VARCHAR2(80);
30986 l_msg_context VARCHAR2(240);
30987 l_rows NATURAL := 5000;
30988
30989 -- Bug 2772214
30990 l_pass_qualifiers varchar2(10) := FND_PROFILE.VALUE('QP_PASS_QUALIFIERS_TO_GET_CUSTOM');
30991
30992 -- added for formula messages
30993 E_ATTRIBUTE_NON_NUMERIC EXCEPTION;
30994 CURSOR am_attr_cols_cur
30995 IS
30996 SELECT /*+ dynamic_sampling(1) */ line_index, attribute_type, context, attribute,
30997 pricing_status_code, qp_number.canonical_to_number(value_from)
30998 FROM qp_npreq_line_attrs_tmp lattr
30999 WHERE attribute_type IN ('PRICING', 'PRODUCT')
31000 AND pricing_status_code = G_STATUS_UNCHANGED
31001 AND EXISTS (SELECT format_type
31002 FROM fnd_flex_value_sets VSET,
31003 qp_segments_b SEGMENTS, qp_prc_contexts_b PCONTEXTS
31004 WHERE vset.flex_value_set_id = segments.user_valueset_id
31005 AND segments.application_id = 661
31006 AND pcontexts.prc_context_type <> 'QUALIFIER'
31007 AND pcontexts.prc_context_code = lattr.context
31008 AND segments.segment_mapping_column = lattr.attribute
31009 AND segments.prc_context_id = pcontexts.prc_context_id
31010 AND vset.format_type = 'N');
31011
31012 -- Bug 2772214, To pass Qualifiers to get_custom_price
31013
31014 CURSOR am_attr_qual_cols_cur
31015 IS
31016 SELECT line_index, attribute_type, context, attribute,
31017 pricing_status_code, qp_number.canonical_to_number(value_from)
31018 FROM qp_npreq_line_attrs_tmp lattr
31019 WHERE attribute_type IN ('PRICING', 'PRODUCT', 'QUALIFIER')
31020 AND pricing_status_code = G_STATUS_UNCHANGED
31021 AND EXISTS (SELECT format_type
31022 FROM fnd_flex_value_sets VSET,
31023 qp_segments_b SEGMENTS, qp_prc_contexts_b PCONTEXTS
31024 WHERE vset.flex_value_set_id = segments.user_valueset_id
31025 AND segments.application_id = 661
31026 AND pcontexts.prc_context_code = lattr.context
31027 AND segments.segment_mapping_column = lattr.attribute
31028 AND segments.prc_context_id = pcontexts.prc_context_id
31029 AND vset.format_type = 'N');
31030
31031 -- added for formula error messages
31032 CURSOR am_attr_qual_msg_cur
31033 IS
31034 SELECT lattr.value_from,lattr.context,
31035 nvl(SEGMENTS_TL.SEEDED_SEGMENT_NAME,SEGMENTS_TL.USER_SEGMENT_NAME) attribute
31036 FROM qp_npreq_line_attrs_tmp lattr, fnd_flex_value_sets VSET,
31037 qp_segments_b SEGMENTS, qp_prc_contexts_b PCONTEXTS , qp_segments_tl SEGMENTS_TL
31038 WHERE attribute_type IN ('PRICING', 'PRODUCT', 'QUALIFIER')
31039 AND pricing_status_code = G_STATUS_UNCHANGED
31040 AND vset.flex_value_set_id = segments.user_valueset_id
31041 AND segments.application_id = 661
31042 AND pcontexts.prc_context_code = lattr.context
31043 AND segments.segment_mapping_column = lattr.attribute
31044 AND segments.prc_context_id = pcontexts.prc_context_id
31045 AND segments.segment_id = segments_tl.segment_id
31046 AND vset.format_type = 'N';
31047
31048
31049 CURSOR attr_cols_cur
31050 IS
31051 SELECT line_index, attribute_type, context, attribute,
31052 pricing_status_code, qp_number.canonical_to_number(value_from)
31053 FROM qp_npreq_line_attrs_tmp lattr
31054 WHERE attribute_type IN ('PRICING', 'PRODUCT')
31055 AND pricing_status_code = G_STATUS_UNCHANGED
31056 AND EXISTS (SELECT format_type
31057 FROM fnd_flex_value_sets VSET,
31058 fnd_descr_flex_column_usages DFLEX
31059 WHERE vset.flex_value_set_id = dflex.flex_value_set_id
31060 AND dflex.application_id = 661
31061 AND dflex.descriptive_flexfield_name =
31062 'QP_ATTR_DEFNS_PRICING'
31063 AND dflex.descriptive_flex_context_code = lattr.context
31064 AND dflex.application_column_name = lattr.attribute
31065 AND vset.format_type = 'N');
31066
31067 BEGIN
31068 x_status_code := FND_API.G_RET_STS_SUCCESS;
31069 qp_debug_util.tstart('FORMULA_PROCESSING','Processing Formulas');
31070 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31071 engine_debug('In ---'||l_routine||'---');
31072 engine_debug('PRICING_PHASE_ID: '||p_pricing_phase_id);
31073
31074 END IF;
31075 FOR i IN l_get_formula_id_cur
31076 LOOP
31077 l_line_index := i.line_index;
31078
31079 -- performance related change. Populate the temp table
31080 --qp_preq_line_attrs_formula_tmp with relevant records from
31081 --qp_npreq_line_attrs_tmp with
31082 IF l_get_formula_id_cur%ROWCOUNT = 1 THEN
31083
31084 IF G_INSERT_INTO_FORMULA_TMP
31085 THEN
31086
31087 --Delete already existing rows from formula tmp table
31088 DELETE FROM qp_preq_line_attrs_formula_tmp;
31089
31090 --Insert request line attrs with datatype = 'N'
31091 IF G_AM_INSTALLED_PROFILE = G_YES THEN
31092 If nvl(l_pass_qualifiers, 'N') = 'N' Then /* Bug 2772214 */
31093 OPEN am_attr_cols_cur;
31094 LOOP
31095 l_line_index_tbl.delete;
31096 l_attribute_type_tbl.delete;
31097 l_context_tbl.delete;
31098 l_attribute_tbl.delete;
31099 l_pricing_status_code_tbl.delete;
31100 l_value_from_tbl.delete;
31101
31102 FETCH am_attr_cols_cur BULK COLLECT INTO
31103 l_line_index_tbl, l_attribute_type_tbl, l_context_tbl,
31104 l_attribute_tbl, l_pricing_status_code_tbl,
31105 l_value_from_tbl LIMIT l_rows;
31106
31107 EXIT WHEN l_line_index_tbl.COUNT = 0;
31108
31109 --Change flexible mask to mask below for formula pattern use.
31110 qp_number.canonical_mask :=
31111 '00999999999999999999999.99999999999999999999999999999999999999';
31112 FORALL i IN l_line_index_tbl.FIRST..l_line_index_tbl.LAST
31113 INSERT INTO qp_preq_line_attrs_formula_tmp
31114 ( line_index,
31115 attribute_type,
31116 context,
31117 attribute,
31118 pricing_status_code,
31119 value_from
31120 )
31121 VALUES
31122 ( l_line_index_tbl(i),
31123 l_attribute_type_tbl(i),
31124 l_context_tbl(i),
31125 l_attribute_tbl(i),
31126 l_pricing_status_code_tbl(i),
31127 qp_number.number_to_canonical(l_value_from_tbl(i))
31128 );
31129
31130 --Change mask back to flexible mask.
31131 qp_number.canonical_mask :=
31132 'FM999999999999999999999.9999999999999999999999999999999999999999';
31133
31134 END LOOP; --Loop for bulk fetch
31135
31136 CLOSE am_attr_cols_cur;
31137 Else
31138 BEGIN
31139 OPEN am_attr_qual_cols_cur;
31140 LOOP
31141 l_line_index_tbl.delete;
31142 l_attribute_type_tbl.delete;
31143 l_context_tbl.delete;
31144 l_attribute_tbl.delete;
31145 l_pricing_status_code_tbl.delete;
31146 l_value_from_tbl.delete;
31147 FETCH am_attr_qual_cols_cur BULK COLLECT INTO
31148 l_line_index_tbl, l_attribute_type_tbl, l_context_tbl,
31149 l_attribute_tbl, l_pricing_status_code_tbl,
31150 l_value_from_tbl LIMIT l_rows;
31151
31152 EXIT WHEN l_line_index_tbl.COUNT = 0;
31153 --Change flexible mask to mask below for formula pattern use.
31154 qp_number.canonical_mask :=
31155 '00999999999999999999999.99999999999999999999999999999999999999';
31156 FORALL i IN l_line_index_tbl.FIRST..l_line_index_tbl.LAST
31157 INSERT INTO qp_preq_line_attrs_formula_tmp
31158 ( line_index,
31159 attribute_type,
31160 context,
31161 attribute,
31162 pricing_status_code,
31163 value_from
31164 )
31165 VALUES
31166 ( l_line_index_tbl(i),
31167 l_attribute_type_tbl(i),
31168 l_context_tbl(i),
31169 l_attribute_tbl(i),
31170 l_pricing_status_code_tbl(i),
31171 qp_number.number_to_canonical(l_value_from_tbl(i))
31172 );
31173 qp_number.canonical_mask :=
31174 'FM999999999999999999999.9999999999999999999999999999999999999999';
31175
31176 END LOOP; --Loop for bulk fetch
31177 CLOSE am_attr_qual_cols_cur;
31178 EXCEPTION
31179 WHEN OTHERS THEN
31180 BEGIN
31181 fnd_message.set_name('QP','QP_PRICING_ATTR_NON_NUMERIC');
31182 FOR l_rec IN am_attr_qual_msg_cur
31183 LOOP
31184 l_msg_context := l_rec.context;
31185 l_msg_attribute := l_rec.attribute;
31186 l_value_from := qp_number.canonical_to_number(l_rec.value_from);
31187 END LOOP;
31188 EXCEPTION
31189 WHEN OTHERS THEN
31190 fnd_message.set_token('CONTEXT',l_msg_context);
31191 fnd_message.set_token('ATTRIBUTE',l_msg_attribute);
31192 END;
31193
31194 RAISE E_ATTRIBUTE_NON_NUMERIC;
31195 END;
31196
31197 End If;
31198
31199 --Change flexible mask to mask below for formula pattern use.
31200 qp_number.canonical_mask :=
31201 '00999999999999999999999.99999999999999999999999999999999999999';
31202
31203 -- Bug 2772214 l_pass_qualifiers condition in where clause
31204 --Insert request line attrs with datatype 'X', 'Y', 'C' or null
31205 INSERT INTO qp_preq_line_attrs_formula_tmp
31206 ( line_index,
31207 attribute_type,
31208 context,
31209 attribute,
31210 pricing_status_code,
31211 value_from
31212 )
31213 SELECT /*+ dynamic_sampling(1) */ line_index,
31214 attribute_type,
31215 context,
31216 attribute,
31217 pricing_status_code,
31218 value_from
31219 FROM qp_npreq_line_attrs_tmp lattr
31220 WHERE
31221 ((nvl(l_pass_qualifiers, 'N') = 'Y'
31222 AND attribute_type IN ('QUALIFIER'))
31223 OR attribute_type IN ('PRICING', 'PRODUCT')) -- Changed for bug2806857
31224 AND pricing_status_code = G_STATUS_UNCHANGED
31225 AND NOT EXISTS (
31226 SELECT format_type
31227 FROM fnd_flex_value_sets VSET,
31228 qp_segments_b SEGMENTS, qp_prc_contexts_b PCONTEXTS
31229 WHERE vset.flex_value_set_id = segments.user_valueset_id
31230 AND segments.application_id = 661
31231 AND pcontexts.prc_context_type = decode(lattr.attribute_type,'PRICING','PRICING_ATTRIBUTE',
31232 lattr.attribute_type) -- Changed for bug2806857
31233 AND pcontexts.prc_context_code = lattr.context
31234 AND segments.segment_mapping_column = lattr.attribute
31235 AND segments.prc_context_id = pcontexts.prc_context_id
31236 AND vset.format_type = 'N'); --by yangli 03/06/2002 9:30am
31237
31238 --Change mask back to flexible mask.
31239 qp_number.canonical_mask :=
31240 'FM999999999999999999999.9999999999999999999999999999999999999999';
31241
31242 ELSE --If AM not installed
31243
31244 OPEN attr_cols_cur;
31245 LOOP
31246 l_line_index_tbl.delete;
31247 l_attribute_type_tbl.delete;
31248 l_context_tbl.delete;
31249 l_attribute_tbl.delete;
31250 l_pricing_status_code_tbl.delete;
31251 l_value_from_tbl.delete;
31252
31253 FETCH attr_cols_cur BULK COLLECT INTO
31254 l_line_index_tbl, l_attribute_type_tbl, l_context_tbl,
31255 l_attribute_tbl, l_pricing_status_code_tbl,
31256 l_value_from_tbl LIMIT l_rows;
31257
31258 EXIT WHEN l_line_index_tbl.COUNT = 0;
31259
31260 --Change flexible mask to mask below for formula pattern use.
31261 qp_number.canonical_mask :=
31262 '00999999999999999999999.99999999999999999999999999999999999999';
31263
31264 FORALL i IN l_line_index_tbl.FIRST..l_line_index_tbl.LAST
31265 INSERT INTO qp_preq_line_attrs_formula_tmp
31266 ( line_index,
31267 attribute_type,
31268 context,
31269 attribute,
31270 pricing_status_code,
31271 value_from
31272 )
31273 VALUES
31274 ( l_line_index_tbl(i),
31275 l_attribute_type_tbl(i),
31276 l_context_tbl(i),
31277 l_attribute_tbl(i),
31278 l_pricing_status_code_tbl(i),
31279 qp_number.number_to_canonical(l_value_from_tbl(i))
31280 );
31281
31282 --Change mask back to flexible mask.
31283 qp_number.canonical_mask :=
31284 'FM999999999999999999999.9999999999999999999999999999999999999999';
31285
31286 END LOOP; --Loop for bulk fetch
31287
31288 CLOSE attr_cols_cur;
31289
31290 --Change flexible mask to mask below for formula pattern use.
31291 qp_number.canonical_mask :=
31292 '00999999999999999999999.99999999999999999999999999999999999999';
31293
31294 --Insert request line attrs with datatype 'X', 'Y', 'C' or null
31295 INSERT INTO qp_preq_line_attrs_formula_tmp
31296 ( line_index,
31297 attribute_type,
31298 context,
31299 attribute,
31300 pricing_status_code,
31301 value_from
31302 )
31303 SELECT line_index,
31304 attribute_type,
31305 context,
31306 attribute,
31307 pricing_status_code,
31308 value_from
31309 FROM qp_npreq_line_attrs_tmp lattr
31310 WHERE attribute_type IN ('PRICING', 'PRODUCT')
31311 AND pricing_status_code = G_STATUS_UNCHANGED
31312 AND NOT EXISTS (
31313 SELECT format_type
31314 FROM fnd_flex_value_sets VSET,
31315 fnd_descr_flex_column_usages DFLEX
31316 WHERE vset.flex_value_set_id = dflex.flex_value_set_id
31317 AND dflex.application_id = 661
31318 AND dflex.descriptive_flexfield_name =
31319 'QP_ATTR_DEFNS_PRICING'
31320 AND dflex.descriptive_flex_context_code = lattr.context
31321 AND dflex.application_column_name = lattr.attribute
31322 AND vset.format_type = 'N');
31323
31324 --Change mask back to flexible mask.
31325 qp_number.canonical_mask :=
31326 'FM999999999999999999999.9999999999999999999999999999999999999999';
31327
31328 END IF; -- if G_AM_INSTALLED_PROFILE is true
31329
31330 --Reset Global Flag
31331 G_INSERT_INTO_FORMULA_TMP := FALSE;
31332 --G_INSERT_INTO_FORMULA_TMP := 'N';
31333
31334 END IF; --If G_INSERT_INTO_FORMULA_TMP is true
31335
31336 END IF; --If cur%rowcount is 1
31337
31338 -- FTE
31339
31340 -- Delete for every modifier
31341 IF(l_attr_inserted_flag = TRUE) THEN
31342 DELETE FROM qp_preq_line_attrs_formula_tmp
31343 WHERE line_index = i.line_index
31344 AND context = 'VOLUME'
31345 AND attribute IN ('PRICING_ATTRIBUTE4','PRICING_ATTRIBUTE5')
31346 AND pricing_status_code = G_STATUS_UNCHANGED;
31347 END IF;
31348
31349 l_attr_inserted_flag := FALSE;
31350
31351 IF (i.group_quantity IS NOT NULL and l_attr_inserted_flag = FALSE) THEN
31352
31353
31354 --Change flexible mask to mask below for formula pattern use.
31355 qp_number.canonical_mask :=
31356 '00999999999999999999999.99999999999999999999999999999999999999';
31357 INSERT INTO qp_preq_line_attrs_formula_tmp
31358 ( line_index,
31359 attribute_type,
31360 context,
31361 attribute,
31362 pricing_status_code,
31363 value_from
31364 )
31365 VALUES
31366 ( i.line_index,
31367 G_PRICING_TYPE,
31368 'VOLUME',
31369 'PRICING_ATTRIBUTE4',
31370 G_STATUS_UNCHANGED,
31371 qp_number.number_to_canonical(i.group_quantity)
31372 );
31373
31374 --Change mask back to flexible mask.
31375 qp_number.canonical_mask :=
31376 'FM999999999999999999999.9999999999999999999999999999999999999999';
31377
31378 l_attr_inserted_flag := TRUE;
31379
31380 END IF;
31381
31382 IF (i.group_amount IS NOT NULL and l_attr_inserted_flag = FALSE) THEN
31383
31384 --Change flexible mask to mask below for formula pattern use.
31385 qp_number.canonical_mask :=
31386 '00999999999999999999999.99999999999999999999999999999999999999';
31387 INSERT INTO qp_preq_line_attrs_formula_tmp
31388 ( line_index,
31389 attribute_type,
31390 context,
31391 attribute,
31392 pricing_status_code,
31393 value_from
31394 )
31395 VALUES
31396 ( i.line_index,
31397 G_PRICING_TYPE,
31398 'VOLUME',
31399 'PRICING_ATTRIBUTE5',
31400 G_STATUS_UNCHANGED,
31401 qp_number.number_to_canonical(i.group_amount)
31402 );
31403
31404 --Change mask back to flexible mask.
31405 qp_number.canonical_mask :=
31406 'FM999999999999999999999.9999999999999999999999999999999999999999';
31407
31408 l_attr_inserted_flag := TRUE;
31409
31410 END IF;
31411
31412 -- FTE
31413
31414 --FOR K IN l_get_line_attrs_cur
31415 --LOOP
31416 --Commenting the population of plsql table l_req_line_attrs_rec.
31417 -- Change.
31418 /*
31419 l_req_line_attrs_rec.line_index := i.LINE_INDEX;
31420 l_req_line_attrs_rec.attribute_type := i.ATTRIBUTE_TYPE;
31421 l_req_line_attrs_rec.context := i.CONTEXT;
31422 l_req_line_attrs_rec.attribute := i.ATTRIBUTE;
31423 l_req_line_attrs_rec.value := i.VALUE_FROM;
31424 l_req_line_attrs_tbl(1) := l_req_line_attrs_rec;
31425 l_index := l_index + 1;
31426 */
31427 --END LOOP;
31428
31429 l_list_price := NULL;
31430
31431 IF(p_pricing_phase_id = G_PRICE_LIST_PHASE_ID AND i.operand_calculation_code = 'UNIT_PRICE') THEN
31432 l_list_price := I.operand_value;
31433 l_modifier_value := NULL;
31434 ELSE
31435 OPEN l_get_list_price_cur(I.line_index);
31436 FETCH l_get_list_price_cur INTO l_list_price;
31437 CLOSE l_get_list_price_cur;
31438 l_modifier_value := I.operand_value; -- This value needs to be passed eventually
31439 END IF;
31440
31441 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31442 engine_debug('Processing Formula ID :'||i.PRICE_FORMULA_ID);
31443 engine_debug('Line Index: '||i.line_index);
31444
31445 END IF;
31446 --Commented parameter l_req_line_attrs_tbl and
31447 --added parameters l_line_index and i.created_from_list_line_type.
31448 -- Change.
31449 l_formula_based_price :=
31450 QP_FORMULA_PRICE_CALC_PVT.Calculate(i.PRICE_FORMULA_ID,
31451 l_list_price,
31452 i.PRICING_EFFECTIVE_DATE,
31453 --l_req_line_attrs_tbl,
31454 l_line_index,
31455 i.CREATED_FROM_LIST_LINE_TYPE,
31456 l_return_status,
31457 l_modifier_value);
31458
31459 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31460 engine_debug('Formula return status: '||l_return_status);
31461 engine_debug ('Formula Base Price : '|| l_formula_based_price);
31462
31463 END IF;
31464 IF l_return_status IS NULL THEN
31465 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31466 engine_debug('Formula return status is NULL');
31467 engine_debug('FND_API.G_RET_STS_ERROR: '|| FND_API.G_RET_STS_ERROR);
31468 END IF;
31469 null;
31470 END IF;
31471
31472 IF (l_return_status = FND_API.G_RET_STS_SUCCESS) THEN
31473 -- OR l_formula_based_price IS NOT NULL) THEN
31474 IF (i.OPERAND_CALCULATION_CODE in ('UNIT_PRICE','LIST_PRICE')) THEN
31475 /*
31476 INDX,QP_PREQ_GRP.formula_processing.upd1,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
31477 INDX,QP_PREQ_GRP.formula_processing.upd1,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
31478 INDX,QP_PREQ_GRP.formula_processing.upd1,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
31479 */
31480 UPDATE qp_npreq_ldets_tmp --upd1
31481 SET OPERAND_VALUE = l_formula_based_price
31482 WHERE CREATED_FROM_LIST_LINE_ID = i.CREATED_FROM_LIST_LINE_ID
31483 AND PRICING_PHASE_ID = p_pricing_phase_id
31484 AND LINE_INDEX = i.line_index
31485 AND PRICING_STATUS_CODE = G_STATUS_NEW;
31486
31487 /*
31488 INDX,QP_PREQ_GRP.formula_processing.formula_processing_upd2.qp_npreq_lines_tmp_N1,LINE_INDEX,1
31489 */
31490 UPDATE qp_npreq_lines_tmp --upd2
31491 SET UNIT_PRICE = l_formula_based_price,
31492 PRICING_STATUS_CODE = G_STATUS_UPDATED,
31493 PRICING_STATUS_TEXT ='Priced by formula'
31494 WHERE LINE_INDEX = i.line_index;
31495 ELSIF (i.OPERAND_CALCULATION_CODE = 'PERCENT_PRICE') THEN
31496 /*
31497 INDX,QP_PREQ_GRP.formula_processing.upd3,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
31498 INDX,QP_PREQ_GRP.formula_processing.upd3,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
31499 INDX,QP_PREQ_GRP.formula_processing.upd3,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
31500 */
31501 UPDATE qp_npreq_ldets_tmp --upd3
31502 SET OPERAND_VALUE = l_formula_based_price
31503 WHERE CREATED_FROM_LIST_LINE_ID = i.CREATED_FROM_LIST_LINE_ID
31504 AND PRICING_PHASE_ID = p_pricing_phase_id
31505 AND LINE_INDEX = i.line_index
31506 AND PRICING_STATUS_CODE = G_STATUS_NEW;
31507
31508 /*
31509 INDX,QP_PREQ_GRP.formula_processing.formula_processing_upd4.qp_npreq_lines_tmp_N1,LINE_INDEX,1
31510 */
31511 UPDATE qp_npreq_lines_tmp --upd4
31512 SET PERCENT_PRICE = l_formula_based_price,
31513 PRICING_STATUS_CODE = G_STATUS_UPDATED,
31514 PRICING_STATUS_TEXT ='Priced by formula'
31515 WHERE LINE_INDEX = i.line_index;
31516 ELSE -- BLOCK_PRICE, % , AMT , NEWPRICE
31517 /*
31518 INDX,QP_PREQ_GRP.formula_processing.upd5,qp_npreq_ldets_tmp_N1,LINE_INDEX,1
31519 INDX,QP_PREQ_GRP.formula_processing.upd5,qp_npreq_ldets_tmp_N1,PRICING_STATUS_CODE,2
31520 INDX,QP_PREQ_GRP.formula_processing.upd5,qp_npreq_ldets_tmp_N1,PRICING_PHASE_ID,3
31521 */
31522 UPDATE qp_npreq_ldets_tmp --upd5
31523 SET OPERAND_VALUE = l_formula_based_price
31524 WHERE CREATED_FROM_LIST_LINE_ID = i.CREATED_FROM_LIST_LINE_ID
31525 AND PRICING_PHASE_ID = p_pricing_phase_id
31526 AND LINE_INDEX = i.line_index
31527 AND PRICING_STATUS_CODE = G_STATUS_NEW;
31528
31529 -- Update the operand on the related lines also
31530 IF (i.LINE_DETAIL_TYPE_CODE = G_CHILD_DETAIL_TYPE) THEN
31531
31532 UPDATE qp_npreq_rltd_lines_tmp
31533 SET OPERAND = l_formula_based_price
31534 WHERE RELATED_LIST_LINE_ID = i.CREATED_FROM_LIST_LINE_ID --bug#2875361
31535 AND LINE_INDEX = i.line_index
31536 AND PRICING_STATUS_CODE = G_STATUS_NEW
31537 AND RELATIONSHIP_TYPE_CODE = G_PBH_LINE;
31538
31539 END IF;
31540 END IF;
31541 ELSE
31542 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31543 engine_debug('Error returned by QP_FORMULA_PRICE_CALC_PVT.Calculate');
31544 END IF;
31545
31546 -- Commented raise and added following for Bug 2722477
31547 G_INSERT_INTO_FORMULA_TMP := FALSE; --Reset Global Flag ( Change)
31548 DELETE_LINES(l_line_index,
31549 G_STATUS_FORMULA_ERROR,
31550 FND_MESSAGE.GET,
31551 l_status_code,
31552 l_status_text);
31553 -- RAISE E_Formula_Call_Error;
31554 null; -- Error in Formula Calculation
31555 END IF;
31556 END LOOP;
31557
31558 qp_debug_util.tstop('FORMULA_PROCESSING');
31559
31560 EXCEPTION
31561 WHEN E_ATTRIBUTE_NON_NUMERIC THEN
31562 G_INSERT_INTO_FORMULA_TMP := FALSE; --Reset Global Flag ( Change)
31563 DELETE_LINES(l_line_index,
31564 G_STATUS_FORMULA_ERROR,
31565 FND_MESSAGE.GET,
31566 l_status_code,
31567 l_status_text);
31568 x_status_code := FND_API.G_RET_STS_ERROR;
31569
31570 WHEN E_Formula_Call_Error THEN
31571 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31572 engine_debug('In Formula Integration');
31573 engine_debug('Error returned by QP_FORMULA_PRICE_CALC_PVT.Calculate');
31574 END IF;
31575 G_INSERT_INTO_FORMULA_TMP := FALSE; --Reset Global Flag ( Change)
31576 --G_INSERT_INTO_FORMULA_TMP := 'N'; --Reset Global Flag ( Change)
31577 DELETE_LINES(l_line_index,
31578 G_STATUS_FORMULA_ERROR,
31579 FND_MESSAGE.GET,
31580 l_status_code,
31581 l_status_text);
31582 WHEN OTHERS THEN
31583 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31584 engine_debug('In Formula Integration');
31585 engine_debug(SQLERRM);
31586 END IF;
31587 G_INSERT_INTO_FORMULA_TMP := FALSE; --Reset Global Flag ( Change)
31588 --G_INSERT_INTO_FORMULA_TMP := 'N'; --Reset Global Flag ( Change)
31589 DELETE_LINES(l_line_index,
31590 G_STATUS_FORMULA_ERROR,
31591 FND_MESSAGE.GET,
31592 l_status_code,
31593 l_status_text);
31594 x_status_code := FND_API.G_RET_STS_ERROR;
31595 x_status_text := l_routine||' '|| ' Formula Not Found ';
31596 END Formula_Processing;
31597
31598 /*+-----------------------------------------------------------
31599 |Procedure Truncate_temp_tables
31600 +-----------------------------------------------------------
31601 */
31602 PROCEDURE Truncate_Temp_tables (x_status_code OUT NOCOPY VARCHAR2,
31603 x_status_text OUT NOCOPY VARCHAR2)
31604 IS
31605 l_routine VARCHAR2(240):= 'Procedure Truncate_Temp_Tables';
31606 l_count number;
31607 Begin
31608 x_status_code := FND_API.G_RET_STS_SUCCESS;
31609 --added by yangli for Java Engine project
31610 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
31611 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31612 ENGINE_DEBUG('Truncate_Temp_tables: Java Engine not Installed ----------');
31613 END IF;
31614 --added by yangli for Java Engine project
31615 --Delete from qp_npreq_lines_tmp;
31616 --Delete from qp_npreq_line_attrs_tmp;
31617 --Delete From qp_npreq_ldets_tmp;
31618 --Delete From qp_npreq_rltd_lines_tmp;
31619 --Delete From QP_PREQ_QUAL_TMP;
31620 --Delete From qp_nformula_step_values_tmp;
31621 --Delete From QP_PREQ_LINE_ATTRS_FORMULA_TMP;
31622
31623
31624 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31625 select count(*) into l_count from qp_npreq_lines_tmp;
31626 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31627 engine_debug('qp_npreq_lines_tmp '||l_count);
31628 END IF;
31629 select count(*) into l_count from qp_npreq_line_attrs_tmp;
31630 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31631 engine_debug('qp_npreq_line_attrs_tmp '||l_count);
31632 END IF;
31633 select count(*) into l_count from qp_npreq_ldets_tmp;
31634 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31635 engine_debug('qp_npreq_ldets_tmp '||l_count);
31636 END IF;
31637 END IF;
31638 --added by yangli for Java Engine project
31639 ELSE
31640 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31641 ENGINE_DEBUG('Truncate_Temp_tables: Java Engine is Installed ----------');
31642 END IF;
31643 --Delete from qp_int_lines;
31644 --Delete from qp_int_line_attrs;
31645 --Delete From qp_int_ldets;
31646 --Delete From qp_int_rltd_lines;
31647 --Delete From qp_int_formula_step_values;
31648
31649 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31650 select count(*) into l_count from qp_int_lines;
31651 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31652 engine_debug('qp_int_lines '||l_count);
31653 END IF;
31654 select count(*) into l_count from qp_int_line_attrs;
31655 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31656 engine_debug('qp_int_line_attrs '||l_count);
31657 END IF;
31658 select count(*) into l_count from qp_int_ldets;
31659 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31660 engine_debug('qp_int_ldets '||l_count);
31661 END IF;
31662 END IF;
31663
31664 END IF;
31665 EXCEPTION
31666 WHEN OTHERS THEN
31667 x_status_code := FND_API.G_RET_STS_ERROR;
31668 x_status_text :=l_routine||' '||SQLERRM;
31669 End Truncate_Temp_tables;
31670
31671 /*+------------------------------------------------------------
31672 |PROCEDURE Set_Order_Level_Rltd
31673 +------------------------------------------------------------
31674 The relationship between order level adjustments and request lines
31675 need to be returned back to the caller.
31676 Example: list 'a' is a order level adjustment with line_detail_index
31677 of 3. There are 3 request lines with 4,5,6 line index then
31678 the data in qp_npreq_rltd_lines_tmp should be:
31679 +---------------------------------------------------------------+
31680 | related_line_detail_index| line_index| Relation_ship_type_code|
31681 +--------------------------+-----------+------------------------+
31682 | 3 | 4 | ORDER_TO_LINE |
31683 | 3 | 5 | ORDER_TO_LINE |
31684 | 3 | 6 | ORDER_TO_LINE |
31685 +--------------------------+-----------+------------------------+
31686 */
31687
31688 PROCEDURE Set_Order_Level_Rltd(p_freeze_override_flag IN VARCHAR2,
31689 p_pricing_phase_id IN NUMBER,
31690 x_status_code OUT NOCOPY VARCHAR2,
31691 x_status_text OUT NOCOPY VARCHAR2) AS
31692
31693 /*
31694 INDX,QP_PREQ_GRP.set_order_level_rltd.l_line_index_cur,- No Index Used -,NA,NA
31695 */
31696 CURSOR l_line_index_cur(p_freeze_override_flag VARCHAR2) is
31697 SELECT line_index
31698 FROM qp_npreq_lines_tmp
31699 WHERE pricing_status_code = G_STATUS_UPDATED
31700 AND (PRICE_FLAG = G_YES
31701 OR
31702 (PRICE_FLAG = G_PHASE
31703 AND
31704 p_freeze_override_flag = G_YES)
31705 );
31706
31707 /*
31708 -- Can use N2 instead of N4
31709 INDX,QP_PREQ_GRP.set_order_level_rltd.l_line_detail_index_cur,qp_npreq_ldets_tmp_N2,PRICING_PHASE_ID,1
31710 INDX,QP_PREQ_GRP.set_order_level_rltd.l_line_detail_index_cur,qp_npreq_ldets_tmp_N2,PRICING_STATUS_CODE,2
31711 */
31712 CURSOR l_line_detail_index_cur is
31713 SELECT line_detail_index
31714 FROM qp_npreq_ldets_tmp
31715 WHERE PRICING_STATUS_CODE = G_STATUS_NEW
31716 AND PRICING_PHASE_ID = p_pricing_phase_id
31717 AND MODIFIER_LEVEL_CODE = G_ORDER_LEVEL;
31718
31719 l_line_index_tbl number_type;
31720 l_line_detail_index_tbl number_type;
31721 l_line_detail_index_tbl1 number_type;
31722 J NUMBER:=0;
31723 l_routine VARCHAR2(240):= 'QP_PREQ_GRP.Set_Order_Level_Rltd';
31724 BEGIN
31725 x_status_code := FND_API.G_RET_STS_SUCCESS;
31726
31727 FOR I IN l_line_detail_index_cur LOOP
31728 J:=J+1;
31729 l_line_detail_index_tbl(J):=I.line_detail_index;
31730 END LOOP;
31731
31732
31733 IF J > 0 THEN --do this only if there is order level modifier
31734 J:=0;
31735 FOR I IN l_line_index_cur(p_freeze_override_flag) LOOP
31736 FOR K in l_line_detail_index_tbl.FIRST..l_line_detail_index_tbl.LAST LOOP
31737 J:=J+1;
31738 l_line_detail_index_tbl1(J):=l_line_detail_index_tbl(K);
31739 l_line_index_tbl(J):= I.line_index;
31740 END LOOP;
31741 END LOOP;
31742
31743 END IF;
31744
31745 IF J > 0 THEN
31746 FORALL K IN l_line_index_tbl.FIRST..l_line_index_tbl.LAST
31747 INSERT INTO qp_npreq_rltd_lines_tmp
31748 (LINE_INDEX,RELATED_LINE_DETAIL_INDEX,RELATIONSHIP_TYPE_CODE,PRICING_STATUS_CODE)
31749 VALUES
31750 (l_line_index_tbl(K),l_line_detail_index_tbl1(K),G_ORDER_TO_LINE,G_STATUS_NEW);
31751 END IF;
31752
31753 EXCEPTION
31754 WHEN OTHERS THEN
31755 x_status_code := FND_API.G_RET_STS_ERROR;
31756 x_status_text := SQLERRM;
31757 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31758 engine_debug(l_routine||' :'||SQLERRM);
31759 END IF;
31760 END;
31761
31762
31763 procedure Get_Price_List_Sequence(
31764 x_status_code OUT NOCOPY VARCHAR2,
31765 x_status_text OUT NOCOPY VARCHAR2)
31766 is
31767 l_routine VARCHAR2(30) := 'get_price_list_sequence';
31768 begin
31769
31770 --Get the sequence for price list
31771 /*
31772 INDX,QP_PREQ_GRP.get_price_list_sequence.cur_get_price_list_sequence,- No Index Used -,NA,NA
31773 */
31774 SELECT PHASE_SEQUENCE,PRICING_PHASE_ID
31775 INTO G_PRICE_LIST_SEQUENCE,G_PRICE_LIST_PHASE_ID
31776 FROM QP_PRICING_PHASES
31777 WHERE LIST_TYPE_CODE = 'PRL'
31778 AND ROWNUM < 2;
31779
31780 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31781 engine_debug('G_PRICE_LIST_SEQUENCE: '|| G_PRICE_LIST_SEQUENCE );
31782 END IF;
31783 EXCEPTION
31784 WHEN OTHERS THEN
31785 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
31786 engine_debug(l_routine||' '||SQLERRM);
31787 END IF;
31788 x_status_code := FND_API.G_RET_STS_ERROR;
31789 x_status_text := 'Error in '||l_routine||SQLERRM;
31790 end Get_Price_List_Sequence;
31791
31792 /*+----------------------------------------------------------------------------------------------------
31793 *| PROCEDURE/FUNCTION TO INCLUDE TCA HIERARCHY STRUCTURE FOR QUALIFIER ATTRIBUTE ADDED for TCA
31794 *+----------------------------------------------------------------------------------------------------
31795 */
31796
31797 PROCEDURE INSERT_QUALIFIER_HIERARCHY
31798 IS
31799 l_count number;
31800 BEGIN
31801 select count(*) into l_count from qp_npreq_line_attrs_tmp;
31802
31803 engine_debug('count of attr before insert '|| l_count);
31804
31805 --[julin/4865213] tuned
31806 INSERT INTO qp_npreq_line_attrs_tmp
31807 ( LINE_INDEX
31808 ,LINE_DETAIL_INDEX
31809 ,ATTRIBUTE_LEVEL
31810 ,ATTRIBUTE_TYPE
31811 ,LIST_HEADER_ID
31812 ,LIST_LINE_ID
31813 ,CONTEXT
31814 ,ATTRIBUTE
31815 ,VALUE_FROM
31816 ,SETUP_VALUE_FROM
31817 ,VALUE_TO
31818 ,SETUP_VALUE_TO
31819 ,GROUPING_NUMBER
31820 ,NO_QUALIFIERS_IN_GRP
31821 ,COMPARISON_OPERATOR_TYPE_CODE
31822 ,VALIDATED_FLAG
31823 ,APPLIED_FLAG
31824 ,PRICING_STATUS_CODE
31825 ,PRICING_STATUS_TEXT
31826 ,QUALIFIER_PRECEDENCE
31827 ,PRICING_ATTR_FLAG
31828 ,QUALIFIER_TYPE
31829 ,DATATYPE
31830 ,PRODUCT_UOM_CODE
31831 ,PROCESSED_CODE
31832 ,EXCLUDER_FLAG
31833 ,GROUP_QUANTITY
31834 ,GROUP_AMOUNT
31835 ,DISTINCT_QUALIFIER_FLAG
31836 ,PRICING_PHASE_ID
31837 ,INCOMPATABILITY_GRP_CODE
31838 ,LINE_DETAIL_TYPE_CODE
31839 ,MODIFIER_LEVEL_CODE
31840 ,PRIMARY_UOM_FLAG
31841 ,REQUEST_ID
31842 ,DERIVED_QUALIFIER_FLAG)
31843 SELECT /*+ ORDERED use_nl(qpc qs hn) index(qnlat QP_PREQ_LINE_ATTRS_TMP_N2) */
31844 qnlat.LINE_INDEX
31845 ,qnlat.LINE_DETAIL_INDEX
31846 ,qnlat.ATTRIBUTE_LEVEL
31847 ,qnlat.ATTRIBUTE_TYPE
31848 ,qnlat.LIST_HEADER_ID
31849 ,qnlat.LIST_LINE_ID
31850 ,qnlat.CONTEXT
31851 ,qnlat.ATTRIBUTE
31852 ,to_char(hn.PARENT_ID)
31853 ,qnlat.SETUP_VALUE_FROM
31854 ,qnlat.VALUE_TO
31855 ,qnlat.SETUP_VALUE_TO
31856 ,qnlat.GROUPING_NUMBER
31857 ,qnlat.NO_QUALIFIERS_IN_GRP
31858 ,qnlat.COMPARISON_OPERATOR_TYPE_CODE
31859 ,qnlat.VALIDATED_FLAG
31860 ,qnlat.APPLIED_FLAG
31861 ,qnlat.PRICING_STATUS_CODE
31862 ,qnlat.PRICING_STATUS_TEXT
31863 ,qnlat.QUALIFIER_PRECEDENCE
31864 ,qnlat.PRICING_ATTR_FLAG
31865 ,qnlat.QUALIFIER_TYPE
31866 ,qnlat.DATATYPE
31867 ,qnlat.PRODUCT_UOM_CODE
31868 ,qnlat.PROCESSED_CODE
31869 ,qnlat.EXCLUDER_FLAG
31870 ,qnlat.GROUP_QUANTITY
31871 ,qnlat.GROUP_AMOUNT
31872 ,qnlat.DISTINCT_QUALIFIER_FLAG
31873 ,qnlat.PRICING_PHASE_ID
31874 ,qnlat.INCOMPATABILITY_GRP_CODE
31875 ,qnlat.LINE_DETAIL_TYPE_CODE
31876 ,qnlat.MODIFIER_LEVEL_CODE
31877 ,qnlat.PRIMARY_UOM_FLAG
31878 ,qnlat.REQUEST_ID
31879 ,'Y'
31880 FROM qp_npreq_line_attrs_tmp qnlat,
31881 qp_prc_contexts_b qpc,
31882 qp_segments_b qs,
31883 HZ_HIERARCHY_NODES hn
31884 WHERE qnlat.pricing_status_code = G_STATUS_UNCHANGED
31885 AND qnlat.attribute_type = G_QUALIFIER_TYPE
31886 AND qpc.PRC_CONTEXT_TYPE = 'QUALIFIER'
31887 AND qpc.PRC_CONTEXT_CODE = qnlat.CONTEXT
31888 AND qs.SEGMENT_MAPPING_COLUMN = qnlat.ATTRIBUTE
31889 AND qs.PRC_CONTEXT_ID = qpc.PRC_CONTEXT_ID
31890 AND qs.PARTY_HIERARCHY_ENABLED_FLAG = 'Y'
31891 AND nvl(qs.user_format_type, qs.seeded_format_type) = G_NUMERIC
31892 AND hn.CHILD_ID = to_number(qnlat.VALUE_FROM)
31893 AND hn.child_table_name = 'HZ_PARTIES'
31894 AND hn.HIERARCHY_TYPE = FND_PROFILE.VALUE('QP_PRICING_PARTY_HIERARCHY_TYPE')
31895 AND trunc(nvl(hn.EFFECTIVE_START_DATE,sysdate)) <= trunc(sysdate)
31896 AND trunc(nvl(hn.EFFECTIVE_END_DATE,sysdate)) >= trunc(sysdate)
31897 AND hn.LEVEL_NUMBER > 0;
31898
31899 END INSERT_QUALIFIER_HIERARCHY;
31900
31901 /*+------------------------------------------------------------
31902 |PROCEDURE PRICE_REQUEST
31903 +------------------------------------------------------------
31904 */
31905
31906 PROCEDURE PRICE_REQUEST
31907 (p_line_tbl IN LINE_TBL_TYPE,
31908 p_qual_tbl IN QUAL_TBL_TYPE,
31909 p_line_attr_tbl IN LINE_ATTR_TBL_TYPE,
31910 p_LINE_DETAIL_tbl IN LINE_DETAIL_TBL_TYPE,
31911 p_LINE_DETAIL_qual_tbl IN LINE_DETAIL_QUAL_TBL_TYPE,
31912 p_LINE_DETAIL_attr_tbl IN LINE_DETAIL_ATTR_TBL_TYPE,
31913 p_related_lines_tbl IN RELATED_LINES_TBL_TYPE,
31914 p_control_rec IN CONTROL_RECORD_TYPE,
31915 x_line_tbl OUT NOCOPY LINE_TBL_TYPE,
31916 x_line_qual OUT NOCOPY QUAL_TBL_TYPE,
31917 x_line_attr_tbl OUT NOCOPY LINE_ATTR_TBL_TYPE,
31918 x_line_detail_tbl OUT NOCOPY LINE_DETAIL_TBL_TYPE,
31919 x_line_detail_qual_tbl OUT NOCOPY LINE_DETAIL_QUAL_TBL_TYPE,
31920 x_line_detail_attr_tbl OUT NOCOPY LINE_DETAIL_ATTR_TBL_TYPE,
31921 x_related_lines_tbl OUT NOCOPY RELATED_LINES_TBL_TYPE,
31922 x_return_status OUT NOCOPY VARCHAR2,
31923 x_return_status_text OUT NOCOPY VARCHAR2
31924 ) AS
31925
31926
31927 l_line_tbl LINE_TBL_TYPE;
31928 l_line_qual QUAL_TBL_TYPE;
31929 l_line_attr_tbl LINE_ATTR_TBL_TYPE;
31930 l_line_detail_tbl LINE_DETAIL_TBL_TYPE;
31931 l_line_detail_qual_tbl LINE_DETAIL_QUAL_TBL_TYPE;
31932 l_line_detail_attr_tbl LINE_DETAIL_ATTR_TBL_TYPE;
31933 l_related_lines_tbl RELATED_LINES_TBL_TYPE;
31934 l_line_index PLS_INTEGER;
31935 x_list_line_id PLS_INTEGER;
31936 l_list_price NUMBER;
31937 l_list_line_id NUMBER;
31938 l_return_status VARCHAR2(240);
31939 l_pricing_phase_id PLS_INTEGER;
31940 l_line_quantity NUMBER;
31941 l_line_uom_code VARCHAR2(30);
31942 l_priced_quantity NUMBER;
31943 l_priced_uom_code VARCHAR2(30);
31944 l_GSA_Enabled_Flag VARCHAR2(1);
31945 l_GSA_Qualifier_Flag VARCHAR2(1);
31946 l_incompat_resolve_code VARCHAR2(30);
31947 l_GSA_Max_Discount_Enabled CONSTANT VARCHAR2(30) := 'QP_VERIFY_GSA';
31948 l_status_text VARCHAR2(240);
31949 l_further_search VARCHAR2(1) := 'N';
31950 l_dummy VARCHAR2(30);
31951 l_routine VARCHAR2(30);
31952 l_pricing_effective_date DATE;
31953 l_volume_attribute VARCHAR2(30);
31954 l_bypass_pricing VARCHAR2(30);
31955 I PLS_INTEGER;
31956 l_FIXED_PRICE CONSTANT NUMBER := 11.99;
31957 l_pricelist_phase_count PLS_INTEGER:=0;
31958 l_discount_phase_count PLS_INTEGER:=0;
31959 l_disc_exist_flag VARCHAR2(1) := 'N';
31960 l_rounding_flag VARCHAR2(1):=NULL;
31961 l_rounding_factor PLS_INTEGER:=0;
31962 l_rare_phase_id PLS_INTEGER:=5;
31963 l_exec_flag VARCHAR2(3):=G_YES;
31964 l_pricing_status_code VARCHAR2(30);
31965 l_pricing_phase NUMBER;
31966 l_price_phase_flag BOOLEAN;
31967 l_freeze_override_flag VARCHAR2(3);
31968 l_output_file VARCHAR2(240);
31969 v_debug_switch CONSTANT VARCHAR2(30) := 'QP_DEBUG';
31970 v_om_debug_switch CONSTANT VARCHAR2(30) := 'ONT_DEBUG_LEVEL';
31971 l_max_line_detail_index PLS_INTEGER;
31972 l_price_flag_indx NUMBER;
31973 l_price_flag_yes_only VARCHAR2(1);
31974 l_header_limit_exists VARCHAR2(1);
31975 l_line_limit_exists VARCHAR2(1);
31976 v_order_amount NUMBER;
31977 l_pricing_start_time NUMBER;
31978 l_pricing_end_time NUMBER;
31979 l_time_difference NUMBER;
31980 l_pricing_start_redo NUMBER;
31981 l_pricing_end_redo NUMBER;
31982 l_redo_difference NUMBER;
31983 l_prev_pricing_phase_id NUMBER := -9999;
31984 l_error_status_code VARCHAR2(30);
31985 l_error_status_text VARCHAR2(240);
31986 l_time_stats VARCHAR2(240);
31987
31988 -- Essilor Fix bug 2789138
31989 L_MANUAL_ADJUSTMENTS_CALL_FLAG VARCHAR2(1) := 'N';
31990 L_RETURN_MANUAL_DISCOUNT VARCHAR2(1) := nvl(FND_PROFILE.VALUE('QP_RETURN_MANUAL_DISCOUNTS'),'N');
31991
31992 E_SEARCH_FLAG_IS_NULL EXCEPTION;
31993 E_INVALID_CONTROL_RECORD EXCEPTION;
31994 E_ROUTINE_ERRORS EXCEPTION;
31995 E_INVALID_PHASE EXCEPTION;
31996 E_NO_SOURCE_SYSTEM EXCEPTION;
31997 E_DEBUG_ROUTINE_ERROR EXCEPTION;
31998
31999 l_gone_in_phase_cur_loop varchar2(1); -- bug 3963888
32000 /*
32001 INDX,QP_PREQ_GRP.price_request.l_phase_cur,QP_EVENT_PHASES_U1,PRICING_EVENT_CODE,1
32002
32003 INDX,QP_PREQ_GRP.price_request.l_phase_cur,QP_PRICING_PHASES_U1,PRICING_PHASE_ID,1
32004 */
32005
32006 -- Essilor Fix bug 2789138
32007 --[julin/4865213] merged unions, plan unaffected
32008 CURSOR l_phase_cur(l_event_code VARCHAR2,
32009 l_event_code1 VARCHAR2) IS
32010 SELECT QPP.PRICING_PHASE_ID,
32011 QPP.LIST_TYPE_CODE,
32012 nvl(QPEP.USER_SEARCH_FLAG,QPEP.SEARCH_FLAG) SEARCH_FLAG,
32013 nvl(QPP.USER_INCOMPAT_RESOLVE_CODE,QPP.INCOMPAT_RESOLVE_CODE) INCOMPAT_RESOLVE_CODE,
32014 QPP.PHASE_SEQUENCE,
32015 nvl(QPP.USER_FREEZE_OVERRIDE_FLAG,QPP.FREEZE_OVERRIDE_FLAG) FREEZE_OVERRIDE_FLAG,
32016 QPP.NAME
32017 --QPEP.PRICING_EVENT_CODE
32018 FROM QP_PRICING_PHASES QPP, QP_EVENT_PHASES QPEP
32019 WHERE ((L_MANUAL_ADJUSTMENTS_CALL_FLAG IS NULL)
32020 OR
32021 (L_MANUAL_ADJUSTMENTS_CALL_FLAG = 'N' AND
32022 NVL(QPP.MANUAL_MODIFIER_FLAG,'B') in ('A', 'B'))
32023 OR
32024 (L_MANUAL_ADJUSTMENTS_CALL_FLAG = 'Y' AND
32025 (L_RETURN_MANUAL_DISCOUNT = 'N' AND
32026 NVL(QPP.MANUAL_MODIFIER_FLAG,'B') in ('M', 'B'))
32027 OR
32028 (L_RETURN_MANUAL_DISCOUNT = 'Y')
32029 )
32030 )
32031 AND QPEP.PRICING_EVENT_CODE IN
32032 (SELECT decode(rownum
32033 ,1 ,substr(l_event_code,1,instr(l_event_code1,',',1,1)-1)
32034 ,2 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32035 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32036 ,3 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32037 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32038 ,4 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32039 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32040 ,5 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32041 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32042 ,6 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32043 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1)))
32044 FROM qp_event_phases
32045 WHERE rownum < 7)
32046 AND trunc(sysdate) between trunc(nvl(QPEP.START_DATE_ACTIVE,sysdate))
32047 and trunc(nvl(QPEP.END_DATE_ACTIVE,sysdate))
32048 AND QPP.PRICING_PHASE_ID = QPEP.PRICING_PHASE_ID
32049 -- if p_control_rec.get_freight_flag is 'Y' then select phases from qp_pricing_phases table freight_exists column has value 'Y'
32050 AND ((nvl(p_control_rec.get_freight_flag, G_NO) = G_YES AND QPP.freight_exists = G_YES) OR
32051 (nvl(p_control_rec.get_freight_flag, G_NO) = G_NO))
32052 ORDER BY 5,3 DESC;
32053
32054 /*
32055 UNION
32056 SELECT QPP.PRICING_PHASE_ID,
32057 QPP.LIST_TYPE_CODE,
32058 nvl(QPEP.USER_SEARCH_FLAG,QPEP.SEARCH_FLAG) SEARCH_FLAG,
32059 nvl(QPP.USER_INCOMPAT_RESOLVE_CODE,QPP.INCOMPAT_RESOLVE_CODE) INCOMPAT_RESOLVE_CODE,
32060 QPP.PHASE_SEQUENCE,
32061 nvl(QPP.USER_FREEZE_OVERRIDE_FLAG,QPP.FREEZE_OVERRIDE_FLAG) FREEZE_OVERRIDE_FLAG
32062 --QPEP.PRICING_EVENT_CODE
32063 FROM QP_PRICING_PHASES QPP, QP_EVENT_PHASES QPEP
32064 WHERE L_MANUAL_ADJUSTMENTS_CALL_FLAG = 'N'
32065 AND NVL(QPP.MANUAL_MODIFIER_FLAG,'B') in ('A', 'B')
32066 AND QPEP.PRICING_EVENT_CODE IN
32067 (SELECT decode(rownum
32068 ,1 ,substr(l_event_code,1,instr(l_event_code1,',',1,1)-1)
32069 ,2 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32070 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32071 ,3 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32072 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32073 ,4 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32074 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32075 ,5 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32076 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32077 ,6 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32078 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1)))
32079 FROM qp_event_phases
32080 WHERE rownum < 7)
32081 AND trunc(sysdate) between trunc(nvl(QPEP.START_DATE_ACTIVE,sysdate))
32082 and trunc(nvl(QPEP.END_DATE_ACTIVE,sysdate))
32083 AND QPP.PRICING_PHASE_ID = QPEP.PRICING_PHASE_ID
32084 -- if p_control_rec.get_freight_flag is 'Y' then select phases from qp_pricing_phases table freight_exists column has value 'Y'
32085 AND ((nvl(p_control_rec.get_freight_flag, G_NO) = G_YES AND QPP.freight_exists = G_YES) OR
32086 (nvl(p_control_rec.get_freight_flag, G_NO) = G_NO))
32087 UNION
32088 SELECT QPP.PRICING_PHASE_ID,
32089 QPP.LIST_TYPE_CODE,
32090 nvl(QPEP.USER_SEARCH_FLAG,QPEP.SEARCH_FLAG) SEARCH_FLAG,
32091 nvl(QPP.USER_INCOMPAT_RESOLVE_CODE,QPP.INCOMPAT_RESOLVE_CODE) INCOMPAT_RESOLVE_CODE,
32092 QPP.PHASE_SEQUENCE,
32093 nvl(QPP.USER_FREEZE_OVERRIDE_FLAG,QPP.FREEZE_OVERRIDE_FLAG) FREEZE_OVERRIDE_FLAG
32094 --QPEP.PRICING_EVENT_CODE
32095 FROM QP_PRICING_PHASES QPP, QP_EVENT_PHASES QPEP
32096 WHERE L_MANUAL_ADJUSTMENTS_CALL_FLAG = 'Y'
32097 AND L_RETURN_MANUAL_DISCOUNT = 'N'
32098 AND NVL(QPP.MANUAL_MODIFIER_FLAG,'B') in ('M', 'B')
32099 AND QPEP.PRICING_EVENT_CODE IN
32100 (SELECT decode(rownum
32101 ,1 ,substr(l_event_code,1,instr(l_event_code1,',',1,1)-1)
32102 ,2 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32103 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32104 ,3 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32105 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32106 ,4 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32107 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32108 ,5 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32109 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32110 ,6 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32111 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1)))
32112 FROM qp_event_phases
32113 WHERE rownum < 7)
32114 AND trunc(sysdate) between trunc(nvl(QPEP.START_DATE_ACTIVE,sysdate))
32115 and trunc(nvl(QPEP.END_DATE_ACTIVE,sysdate))
32116 AND QPP.PRICING_PHASE_ID = QPEP.PRICING_PHASE_ID
32117 -- if p_control_rec.get_freight_flag is 'Y' then select phases from qp_pricing_phases table freight_exists column has value 'Y'
32118 AND ((nvl(p_control_rec.get_freight_flag, G_NO) = G_YES AND QPP.freight_exists = G_YES) OR
32119 (nvl(p_control_rec.get_freight_flag, G_NO) = G_NO))
32120 UNION
32121 SELECT QPP.PRICING_PHASE_ID,
32122 QPP.LIST_TYPE_CODE,
32123 nvl(QPEP.USER_SEARCH_FLAG,QPEP.SEARCH_FLAG) SEARCH_FLAG,
32124 nvl(QPP.USER_INCOMPAT_RESOLVE_CODE,QPP.INCOMPAT_RESOLVE_CODE) INCOMPAT_RESOLVE_CODE,
32125 QPP.PHASE_SEQUENCE,
32126 nvl(QPP.USER_FREEZE_OVERRIDE_FLAG,QPP.FREEZE_OVERRIDE_FLAG) FREEZE_OVERRIDE_FLAG
32127 --QPEP.PRICING_EVENT_CODE
32128 FROM QP_PRICING_PHASES QPP, QP_EVENT_PHASES QPEP
32129 WHERE L_MANUAL_ADJUSTMENTS_CALL_FLAG = 'Y'
32130 AND L_RETURN_MANUAL_DISCOUNT = 'Y'
32131 AND QPEP.PRICING_EVENT_CODE IN
32132 (SELECT decode(rownum
32133 ,1 ,substr(l_event_code,1,instr(l_event_code1,',',1,1)-1)
32134 ,2 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32135 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32136 ,3 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32137 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32138 ,4 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32139 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32140 ,5 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32141 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32142 ,6 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32143 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1)))
32144 FROM qp_event_phases
32145 WHERE rownum < 7)
32146 AND trunc(sysdate) between trunc(nvl(QPEP.START_DATE_ACTIVE,sysdate))
32147 and trunc(nvl(QPEP.END_DATE_ACTIVE,sysdate))
32148 AND QPP.PRICING_PHASE_ID = QPEP.PRICING_PHASE_ID
32149 -- if p_control_rec.get_freight_flag is 'Y' then select phases from qp_pricing_phases table freight_exists column has value 'Y'
32150 AND ((nvl(p_control_rec.get_freight_flag, G_NO) = G_YES AND QPP.freight_exists = G_YES) OR
32151 (nvl(p_control_rec.get_freight_flag, G_NO) = G_NO))*/
32152
32153 /* CURSOR l_phase_cur(l_event_code VARCHAR2,
32154 l_event_code1 VARCHAR2) IS
32155 SELECT QPP.PRICING_PHASE_ID,
32156 QPP.LIST_TYPE_CODE,
32157 nvl(QPEP.USER_SEARCH_FLAG,QPEP.SEARCH_FLAG) SEARCH_FLAG,
32158 nvl(QPP.USER_INCOMPAT_RESOLVE_CODE,QPP.INCOMPAT_RESOLVE_CODE) INCOMPAT_RESOLVE_CODE,
32159 QPP.PHASE_SEQUENCE,
32160 nvl(QPP.USER_FREEZE_OVERRIDE_FLAG,QPP.FREEZE_OVERRIDE_FLAG) FREEZE_OVERRIDE_FLAG
32161 --QPEP.PRICING_EVENT_CODE
32162 FROM QP_PRICING_PHASES QPP, QP_EVENT_PHASES QPEP
32163 WHERE QPEP.PRICING_EVENT_CODE IN
32164 (SELECT decode(rownum
32165 ,1 ,substr(l_event_code,1,instr(l_event_code1,',',1,1)-1)
32166 ,2 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32167 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32168 ,3 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32169 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32170 ,4 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32171 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32172 ,5 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32173 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32174 ,6 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32175 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1)))
32176 FROM qp_event_phases
32177 WHERE rownum < 7)
32178 AND trunc(sysdate) between trunc(nvl(QPEP.START_DATE_ACTIVE,sysdate))
32179 and trunc(nvl(QPEP.END_DATE_ACTIVE,sysdate))
32180 AND QPP.PRICING_PHASE_ID = QPEP.PRICING_PHASE_ID
32181 -- if p_control_rec.get_freight_flag is 'Y' then select phases from qp_pricing_phases table freight_exists column has value 'Y'
32182 AND ((nvl(p_control_rec.get_freight_flag, G_NO) = G_YES AND QPP.freight_exists = G_YES) OR
32183 (nvl(p_control_rec.get_freight_flag, G_NO) = G_NO))
32184 ORDER BY QPP.PHASE_SEQUENCE,SEARCH_FLAG DESC; */
32185
32186 /*
32187 Can use N2 instead of N4
32188 INDX,QP_PREQ_GRP.price_request.l_get_line_index_cur,qp_npreq_ldets_tmp_N2,PRICING_PHASE_ID,1
32189 INDX,QP_PREQ_GRP.price_request.l_get_line_index_cur,qp_npreq_ldets_tmp_N2,PRICING_STATUS_CODE,2
32190 */
32191 CURSOR l_get_line_index_cur(p_pricing_phase_id NUMBER) IS
32192 SELECT DISTINCT LINE_INDEX
32193 FROM qp_npreq_ldets_tmp
32194 WHERE PRICING_PHASE_ID = p_pricing_phase_id
32195 AND PRICING_STATUS_CODE = G_STATUS_NEW;
32196
32197 /*
32198 INDX,QP_PREQ_GRP.price_request.l_get_list_price_cur,qp_npreq_lines_tmp_N1,LINE_INDEX,1
32199 */
32200 CURSOR l_get_list_price_cur(p_line_index PLS_INTEGER) IS
32201 SELECT UNIT_PRICE,LINE_QUANTITY,PRICED_QUANTITY,PRICED_UOM_CODE,LINE_UOM_CODE,PRICING_EFFECTIVE_DATE
32202 FROM qp_npreq_lines_tmp
32203 WHERE LINE_INDEX = p_line_index;
32204 --FOR UPDATE OF ROUNDING_FACTOR;
32205
32206 /*
32207 INDX,QP_PREQ_GRP.price_request.get_source_system_cur,QP_PRICE_REQ_SOURCES_PK,REQUEST_TYPE_CODE,1
32208 */
32209 CURSOR get_source_system_cur IS
32210 SELECT 'X'
32211 FROM dual
32212 WHERE EXISTS
32213 (Select 'X'
32214 --From QP_PRICE_REQ_SOURCES
32215 From QP_PRICE_REQ_SOURCES_V /* yangli */
32216 Where REQUEST_TYPE_CODE
32217 In (SELECT REQUEST_TYPE_CODE
32218 FROM qp_npreq_lines_tmp));
32219
32220 CURSOR get_request_type_code_cur IS -- shu, aso rounding
32221 SELECT REQUEST_TYPE_CODE
32222 FROM qp_npreq_lines_tmp
32223 WHERE rownum=1;
32224
32225 /*
32226 INDX,QP_PREQ_GRP.price_request.debug_cur,- No Index Used -,NA,NA
32227 */
32228 CURSOR debug_cur IS
32229 SELECT REQUEST_TYPE_CODE,LINE_INDEX,LINE_TYPE_CODE,PRICE_FLAG,PRICE_LIST_HEADER_ID,ROUNDING_FACTOR
32230 FROM qp_npreq_lines_tmp;
32231
32232 /*
32233 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,LINE_INDEX,1
32234 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,PRICING_PHASE_ID,2
32235 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,ASK_FOR_FLAG,3
32236 INDX,QP_PREQ_GRP.delete_invalid_pbh_children.l_check_deleted_pbh_cur,qp_npreq_ldets_tmp_N3,CREATED_FROM_LIST_LINE_TYPE,4
32237 */
32238 CURSOR l_chk_deleted_pbh_cur(p_line_index IN PLS_INTEGER,
32239 p_pricing_phase_id NUMBER) IS
32240 SELECT 'X'
32241 FROM qp_npreq_ldets_tmp
32242 WHERE created_from_list_line_type = G_PRICE_BREAK_TYPE
32243 AND line_index = p_line_index
32244 AND pricing_phase_id = p_pricing_phase_id
32245 AND pricing_status_code <> G_STATUS_NEW;
32246
32247 --check if there is such a list line with passed in phase id
32248 /*
32249 INDX,QP_PREQ_GRP.price_request.l_chk_phase_exists,QP_LIST_LINES_N5,PRICING_PHASE_ID,1
32250 */
32251
32252 -- [julin/4742368/4766135] modified to try list_header_phases first; if not found, go to
32253 -- lines/headers; assuming that phase/qual on lines is a better EXISTS filter than
32254 -- active flag on headers (can purge if many inactive modifiers)
32255 CURSOR l_chk_phase_exists(p_phase_id IN PLS_INTEGER) IS
32256 SELECT 'x'
32257 FROM dual
32258 WHERE
32259 EXISTS (
32260 select /*+ ORDERED */ 'x'
32261 from qp_list_header_phases lhp, qp_list_headers_b qplh
32262 where lhp.pricing_phase_id = p_phase_id
32263 and qplh.list_header_id = lhp.list_header_id
32264 and qplh.active_flag = 'Y')
32265 OR
32266 EXISTS (
32267 select /*+ ORDERED */ 'x'
32268 from qp_list_lines qpll, qp_list_headers_b qplh
32269 where qpll.pricing_phase_id = p_phase_id
32270 and qpll.qualification_ind in (0, 4, 20)
32271 and qpll.list_header_id = qplh.list_header_id
32272 and qplh.active_flag = 'Y');
32273 /*
32274 -- julin [3773033]: removing hint /*+ ordered use_nl(qpll) index(qpll QP_LIST_LINES_N5) /
32275 -- bug 3804392 - exclude factor lists as well
32276 CURSOR l_chk_phase_exists(p_phase_id IN PLS_INTEGER) IS
32277 select 'x'
32278 from qp_list_headers_b qplh, qp_list_lines qpll
32279 where qplh.active_flag = 'Y'
32280 and qplh.list_type_code not in ('PRL', 'AGR', 'PML')
32281 and qpll.list_header_id = qplh.list_header_id
32282 and qpll.pricing_phase_id = p_phase_id
32283 and qpll.qualification_ind in (0, 2, 4, 6, 8, 10, 12, 14, 20, 22, 28, 30)
32284 and rownum = 1;
32285 select 'X' from dual
32286 where exists (select 'X' from qp_list_lines
32287 where pricing_phase_id = p_phase_id
32288 AND modifier_level_code IN ('LINE','LINEGROUP','ORDER') --3169430
32289 and rownum = 1);*/
32290
32291 /*
32292 INDX,QP_PREQ_GRP.price_request.l_debug,- No Index Used -,NA,NA
32293 */
32294 CURSOR l_debug IS
32295 SELECT CONTEXT,
32296 ATTRIBUTE,
32297 VALUE_FROM,
32298 LINE_INDEX,
32299 LINE_DETAIL_INDEX
32300 FROM qp_npreq_line_attrs_tmp;
32301
32302 /*
32303 INDX,QP_PREQ_GRP.price_request.l_check_pricing_phase_exists,QP_PRICING_PHASES_U1,PRICING_PHASE_ID,1
32304
32305 INDX,QP_PREQ_GRP.price_request.l_check_pricing_phase_exists,QP_EVENT_PHASES_U1,PRICING_EVENT_CODE,1
32306 INDX,QP_PREQ_GRP.price_request.l_check_pricing_phase_exists,QP_EVENT_PHASES_U1,PRICING_PHASE_ID,2
32307 */
32308 CURSOR l_check_pricing_phase_exists(l_event_code VARCHAR2,l_event_code1 VARCHAR2) IS
32309 SELECT b.pricing_phase_id,b.freeze_override_flag
32310 FROM qp_event_phases a , qp_pricing_phases b
32311 WHERE a.pricing_event_code in (SELECT decode(rownum
32312 ,1 ,substr(l_event_code,1,instr(l_event_code1,',',1,1)-1)
32313 ,2 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32314 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32315 ,3 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32316 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32317 ,4 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32318 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32319 ,5 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32320 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1))
32321 ,6 ,substr(l_event_code , instr(l_event_code1,',',1,rownum-1) + 1,
32322 instr(l_event_code1,',',1,rownum)-1 - instr(l_event_code1,',',1,rownum-1)))
32323 FROM qp_event_phases
32324 WHERE rownum < 7)
32325 AND a.pricing_phase_id = G_PRICE_LIST_PHASE_ID
32326 AND b.pricing_phase_id = G_PRICE_LIST_PHASE_ID
32327 AND trunc(sysdate) BETWEEN trunc(nvl(a.START_DATE_ACTIVE,sysdate))
32328 AND trunc(nvl(a.END_DATE_ACTIVE,sysdate));
32329
32330 /*
32331 INDX,QP_PREQ_GRP.price_request.l_get_max_line_detail_index,qp_npreq_ldets_tmp_U1,LINE_DETAIL_INDEX,1
32332 */
32333 CURSOR l_get_max_line_detail_index IS
32334 SELECT MAX(LINE_DETAIL_INDEX)
32335 FROM qp_npreq_ldets_tmp;
32336
32337 /*
32338 INDX,QP_PREQ_GRP.price_request.l_limit_check_cur,qp_npreq_ldets_tmp_N4,HEADER_LIMIT_EXISTS,1
32339 INDX,QP_PREQ_GRP.price_request.l_limit_check_cur,qp_npreq_ldets_tmp_N4,PRICING_STATUS_CODE,2
32340 */
32341 CURSOR l_limit_check_cur IS
32342 SELECT HEADER_LIMIT_EXISTS,LINE_LIMIT_EXISTS
32343 FROM qp_npreq_ldets_tmp
32344 WHERE PRICING_STATUS_CODE = G_STATUS_NEW
32345 AND HEADER_LIMIT_EXISTS = G_YES ;
32346
32347 /*
32348 INDX,QP_PREQ_GRP.price_request.order_amount_cur,- No Index Used -,NA,NA
32349 */
32350 CURSOR order_amount_cur IS
32351 --SELECT nvl(SUM(UNIT_PRICE * PRICED_QUANTITY),0)
32352 select nvl(sum(nvl(line_unit_price * line_quantity, UNIT_PRICE * PRICED_QUANTITY)),0)
32353 FROM qp_npreq_lines_tmp
32354 WHERE charge_periodicity_code is NULL; -- added for recurring charges Bug # 4465168
32355
32356 /*
32357 INDX,QP_PREQ_GRP.price_request.limit_trans_cur,QP_LIMIT_TRANSACTIONS_U1,PRICE_REQUEST_CODE,1
32358 */
32359 CURSOR limit_trans_cur IS
32360 SELECT 'X'
32361 FROM qp_limit_transactions
32362 WHERE price_request_code > fnd_global.local_chr(0);
32363 --WHERE price_request_code > chr(0); fix GSCC compilation warning
32364
32365 l_product_app_id number; -- bug 3841192
32366
32367 CURSOR pricing_install_status_cur IS
32368 SELECT status
32369 FROM fnd_product_installations
32370 WHERE application_id=l_product_app_id;
32371
32372 -- ** Added for showing context and attribute in msg which caused number conversion error **
32373 CURSOR am_attr_msg_cur
32374 IS
32375 SELECT lattr.value_from,lattr.value_to,lattr.context,
32376 nvl(SEGMENTS_TL.SEEDED_SEGMENT_NAME,SEGMENTS_TL.USER_SEGMENT_NAME) attribute
32377 FROM qp_npreq_line_attrs_tmp lattr,fnd_flex_value_sets VSET,
32378 qp_segments_b SEGMENTS, qp_prc_contexts_b PCONTEXTS, qp_segments_tl SEGMENTS_TL
32379 WHERE attribute_type = G_PRICING_TYPE
32380 AND pricing_status_code = G_STATUS_UNCHANGED
32381 AND vset.flex_value_set_id = segments.user_valueset_id
32382 AND segments.application_id = 661
32383 AND pcontexts.prc_context_type <> 'QUALIFIER'
32384 AND pcontexts.prc_context_code = lattr.context
32385 AND segments.segment_mapping_column = lattr.attribute
32386 AND segments.prc_context_id = pcontexts.prc_context_id
32387 AND segments.segment_id = segments_tl.segment_id
32388 AND vset.format_type = 'N';
32389
32390 CURSOR attr_msg_cur
32391 IS
32392 SELECT value_from,value_to,context,attribute
32393 FROM qp_npreq_line_attrs_tmp lattr
32394 WHERE attribute_type = G_PRICING_TYPE
32395 AND pricing_status_code = G_STATUS_UNCHANGED
32396 AND exists (
32397 SELECT format_type
32398 FROM fnd_flex_value_sets VSET,fnd_descr_flex_column_usages DFLEX
32399 WHERE vset.flex_value_set_id = dflex.flex_value_set_id
32400 AND dflex.application_id = 661
32401 AND dflex.descriptive_flexfield_name = 'QP_ATTR_DEFNS_PRICING'
32402 AND dflex.descriptive_flex_context_code = lattr.context
32403 AND dflex.application_column_name = lattr.attribute
32404 AND vset.format_type = 'N');
32405
32406 --added by yangli for Java Engine changes
32407 CURSOR l_lines_info_cur
32408 is
32409 select line_index, unit_price, price_flag
32410 from qp_npreq_lines_tmp
32411 where QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N'
32412 UNION ALL
32413 select line_index, unit_price, price_flag
32414 from qp_int_lines
32415 where QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'Y';
32416
32417
32418 --added by yangli for Java Engine changes
32419 l_msg_value_from NUMBER;
32420 l_msg_value_to NUMBER;
32421 l_msg_context VARCHAR2(240);
32422 l_msg_attribute VARCHAR2(80);
32423 -- end changes
32424
32425 l_trans VARCHAR2(1);
32426 l_install_status VARCHAR2(1);
32427 l_limits_installed VARCHAR2(1) := FND_PROFILE.VALUE('QP_LIMITS_INSTALLED');
32428 --added by yangli for Java Engine 3086881
32429 l_begin_time number;
32430 l_end_time number;
32431 l_request_id number;
32432 --added by yangli for Java Engine 3086881
32433
32434 BEGIN
32435 qp_debug_util.tstart('ENGINE_CALL_QPXGPREB','QPXGPREB Price Engine Call');
32436
32437 --==========START: Debug Viewere needed by JAVA and PL/SQL engine=======
32438 --G_QP_DEBUG_PROFILE_VALUE := FND_PROFILE.VALUE(v_debug_switch);
32439 G_PUBLIC_API_CALL_FLAG := nvl(p_control_rec.public_api_call_flag,'N');
32440
32441 -- Set the G_DEBUG_ENGINE if the call is not from public API
32442 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
32443 Set_QP_Debug;
32444 END IF;
32445
32446 l_pricing_start_time := dbms_utility.get_time;
32447
32448 IF G_QP_DEBUG_PROFILE_VALUE = G_ENGINE_TIME_TRACE_ON THEN --3085171
32449 --added to note redo generation
32450 begin
32451 select value into l_pricing_start_redo
32452 from v$mystat, v$statname
32453 where v$mystat.statistic# = v$statname.statistic#
32454 and v$statname.name = 'redo size';
32455 exception
32456 when others then
32457 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32458 engine_debug('Error in looking up debug'||SQLERRM);
32459 END IF;
32460 end;
32461 END IF;
32462
32463 --l_pricing_start_time := sysdate;
32464
32465 -- Debug Screen related change
32466 -- Irrespective of om debug if qp debug is on debug information is captured into qp debug tables
32467 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
32468 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
32469 -- A call to QP_COPY_DEBUG_PVT.Generate_Debug_Req_Seq to initialize Global Variables
32470 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
32471 QP_COPY_DEBUG_PVT.Generate_Debug_Req_Seq(l_return_status,
32472 l_status_text);
32473 --x_return_status := l_return_status; -- fix bug 2756754
32474 --x_return_status_text := l_status_text; -- fix bug 2756754
32475 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
32476 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32477 engine_debug('Error QP_COPY_DEBUG_PVT.Generate_Debug_Req_Seq: '||l_status_text);
32478 END IF; -- END IF G_DEBUG_ENGINE
32479 RAISE E_DEBUG_ROUTINE_ERROR; -- fix bug 2756754, dbg failed should not be an hard error
32480 END IF;
32481 END IF;
32482 END IF;
32483
32484
32485 /* IF (NOT OE_DEBUG_PUB.ISDebugOn) THEN --If om debug is not on , then only look at qp_debug
32486 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
32487 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
32488 oe_debug_pub.SetDebugLevel(10);
32489 oe_debug_pub.Initialize;
32490 oe_debug_pub.debug_on;
32491 l_output_file := oe_debug_pub.Set_Debug_Mode('FILE');
32492 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32493 engine_debug ('The output file is : ' || l_output_file );
32494 END IF;
32495 G_DEBUG_ENGINE:= FND_API.G_TRUE;
32496 ELSE
32497 G_DEBUG_ENGINE:= FND_API.G_FALSE;
32498 END IF;
32499 ELSE
32500 G_DEBUG_ENGINE:= FND_API.G_TRUE;
32501 END IF; */
32502
32503 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32504 engine_debug('***Entering Oracle Pricing***');
32505 engine_debug('Please set debug level 3 in profile option to see all Pricing Debug Messages');
32506 engine_debug('-----------------New Engine Call----------------------');
32507 engine_debug('Pricing Event: ' || p_control_rec.PRICING_EVENT);
32508 engine_debug('Pricing Engine Version: ' || QP_PREQ_GRP.GET_VERSION);
32509
32510 END IF;
32511 X_RETURN_STATUS:=FND_API.G_RET_STS_SUCCESS;
32512 --==========END: Debug Viewere needed by JAVA and PL/SQL engine=======
32513
32514 --======moved here by yangli, needed by JAVA and PL/SQL engine=============
32515 G_TEMP_TABLE_INSERT_FLAG := nvl(p_control_rec.temp_table_insert_flag,'Y');
32516
32517 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
32518 --=====START: Specific to PL/SQL engine =======================
32519 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32520 ENGINE_DEBUG('Java Engine not Installed ----------');
32521 END IF;
32522
32523 -- julin [3805113]: resetting tables used in handle_break/call_calculation_engine
32524 G_CHILD_VALUE_FROM_TBL.delete;
32525 G_CHILD_VALUE_TO_TBL.delete;
32526 G_PARENT_LINE_DETAIL_INDEX_TBL.delete;
32527
32528 --dbms_output.put_line('Final Debug: ' || oe_debug_pub.g_debug);
32529 --G_DEBUG_ENGINE := FND_API.G_TRUE;
32530 --G_LINE_DETAIL_INDEX := 0;
32531 G_MANUAL_DISCOUNT_FLAG := nvl(FND_PROFILE.VALUE(G_RETURN_MANUAL_DISCOUNTS),'Y'); --p_control_rec.manual_discount_flag;
32532 G_GSA_CHECK_FLAG := p_control_rec.gsa_check_flag;
32533 G_GSA_DUP_CHECK_FLAG := nvl(p_control_rec.gsa_dup_check_flag,'N');
32534 --moved to top for both PL/SQL and Java Engine
32535 --G_TEMP_TABLE_INSERT_FLAG := nvl(p_control_rec.temp_table_insert_flag,'Y');
32536 G_MANUAL_ADJUSTMENTS_CALL_FLAG := nvl(p_control_rec.manual_adjustments_call_flag,'N');
32537 G_INSERT_INTO_FORMULA_TMP := FALSE;
32538 G_INSERT_FORMULA_STEP_VALUES := nvl(FND_PROFILE.VALUE('QP_INSERT_FORMULA_STEP_VALUES'),'Y');
32539 G_BLIND_DISCOUNT_PROFILE := nvl(FND_PROFILE.VALUE(G_BLIND_DISCOUNT),'N');
32540 G_MULTI_CURRENCY_PROFILE := nvl(FND_PROFILE.VALUE(G_MULTI_CURRENCY),'N'); -- vivek
32541 G_QUALIFY_SECONDARY := NVL(FND_PROFILE.VALUE('QP_QUALIFY_SECONDARY_PRICE_LISTS'),'N');--profile option
32542 --G_USE_MULTI_CURRENCY := p_control_rec.use_multi_currency; -- Vivek
32543 G_ORDER_ID := null; -- accum range break
32544
32545 if p_control_rec.use_multi_currency = 'Y' then
32546 G_USE_MULTI_CURRENCY := p_control_rec.use_multi_currency;
32547 else
32548 -- Added new profile (QP_MULTI_CURRENCY_USAGE) with default value 'N' to maintain
32549 -- current behaviour,bug 2943033
32550 G_USE_MULTI_CURRENCY := nvl(fnd_profile.value('QP_MULTI_CURRENCY_USAGE'), 'N');
32551 end if;
32552
32553 -- Essilor Fix bug 2789138
32554 L_MANUAL_ADJUSTMENTS_CALL_FLAG := nvl(p_control_rec.manual_adjustments_call_flag,NULL);
32555
32556 -- shu ADD TO MAIN
32557 IF G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN
32558 G_MCURR_INSTALLED_USED := 'Y';
32559 ELSE
32560 G_MCURR_INSTALLED_USED := 'N';
32561 END IF;
32562 G_SECURITY_CONTROL := nvl(FND_PROFILE.VALUE('QP_SECURITY_CONTROL'), 'OFF'); --security
32563 G_CURRENT_USER_OP_UNIT := NVL(p_control_rec.org_id, QP_UTIL.GET_ORG_ID); --security
32564 -- [prarasto] changed to use get_org_id instead of profile for implementing MOAC
32565
32566 --added for moac
32567 --Initialize MOAC and set org context to Org passed in nvl(p_control_rec.org_id, mo_default_org_id)
32568 --so that the pricing engine will look at data specific to the
32569 --passed org or mo_default_org plus global data only
32570
32571 IF MO_GLOBAL.get_access_mode is null THEN
32572 MO_GLOBAL.Init('QP');
32573 IF G_CURRENT_USER_OP_UNIT IS NOT NULL THEN
32574 MO_GLOBAL.set_policy_context('S', G_CURRENT_USER_OP_UNIT);
32575 END IF;
32576 END IF;--MO_GLOBAL
32577
32578
32579 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32580 engine_debug('G_SECURITY_CONTROL: '||G_SECURITY_CONTROL);
32581 engine_debug('G_CURRENT_USER_OP_UNIT: '||G_CURRENT_USER_OP_UNIT);
32582
32583 END IF;
32584 --=====END: Specific to PL/SQL engine =======================
32585 END IF; --Java engine is not insalled
32586
32587 --=====START: Set_Request_Id needed by both Java and PL/SQL engine
32588 -- Set the request id if called from plsql/path and not temp table insert path
32589 IF (G_TEMP_TABLE_INSERT_FLAG = G_YES) THEN
32590 QP_Price_Request_Context.Set_Request_Id;
32591 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32592 engine_debug('Request id in QP_PREQ_GRP : ' ||sys_context('qp_context','request_id'));
32593 END IF;
32594 END IF;
32595 --=====END: Set_Request_Id needed by both Java and PL/SQL engine
32596
32597 --=====START: No-Pricing-Line check needed by both Java and PL/SQL engine
32598 l_price_flag_indx := NULL;
32599 l_price_flag_yes_only := G_NO;
32600
32601 IF G_TEMP_TABLE_INSERT_FLAG = G_YES THEN -- pl/sql path
32602
32603 IF (p_line_tbl.COUNT > 0) THEN
32604 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32605 engine_debug('There are lines to be priced');
32606 END IF;
32607 FOR i in p_line_tbl.FIRST .. p_line_tbl.LAST
32608 LOOP
32609 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32610 engine_debug('In the Loop');
32611 engine_debug('Before Pricing Line Index: ' || p_line_tbl(i).line_index);
32612 engine_debug('Before Pricing Unit Price: ' || p_line_tbl(i).unit_price);
32613 engine_debug('Before Pricing Price Flag: ' || p_line_tbl(i).price_flag);
32614 END IF;
32615 END LOOP;
32616 ELSE -- else (p_line_tbl.COUNT > 0)
32617 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32618 engine_debug('There are no lines to be priced');
32619 END IF;
32620 END IF; -- end if (p_line_tbl.COUNT > 0)
32621
32622 ELSE --G_TEMP_TABLE_INSERT_FLAG = 'N', direct insert/performance path, shulin dbg 2437534
32623 --FOR cl IN (select line_index, unit_price, price_flag from qp_npreq_lines_tmp)
32624 FOR cl IN l_lines_info_cur --by yangli for Java Engine changes
32625 LOOP
32626 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32627 engine_debug('In direct insert Loop / performance path');
32628 engine_debug('Before Pricing Line Index: ' || cl.line_index);
32629 engine_debug('Before Pricing Unit Price: ' || cl.unit_price);
32630 engine_debug('Before Pricing Price Flag: ' || cl.price_flag);
32631 END IF;
32632 END LOOP;
32633 END IF;--temp_table_insert_flag
32634
32635 --for Java Engine case, the check here will catch it instead of contacting Java Engine
32636 IF (G_TEMP_TABLE_INSERT_FLAG = G_YES) THEN -- If records are inserted in pricing engine from pl/sql tables
32637 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32638 engine_debug('Check to see if all the lines have price flag N');
32639 END IF;
32640 I:= p_line_tbl.FIRST;
32641 WHILE I IS NOT NULL
32642 LOOP
32643 IF (p_line_tbl(I).PRICE_FLAG = G_YES or p_line_tbl(I).PRICE_FLAG = G_PHASE) THEN
32644 l_price_flag_indx := p_line_tbl(I).LINE_INDEX;
32645 EXIT;
32646 END IF;
32647 I:=p_line_tbl.NEXT(I);
32648 END LOOP;
32649
32650 I:= p_line_tbl.FIRST;
32651 WHILE I IS NOT NULL
32652 LOOP
32653
32654 --shu, begin for bug 2437534
32655 --if there is at least 1 line with price_flag = 'Y'
32656 --or if there is at least 1 line with price_flag = 'P' and unit_price is not passed price list search should be done
32657 IF l_price_flag_yes_only = G_NO THEN -- shu, 'N' was default init value for l_price_flag_yes_only
32658 IF p_line_tbl(I).PRICE_FLAG = G_YES
32659 or (p_line_tbl(I).PRICE_FLAG = G_PHASE -- G_PHASE is 'P'
32660 and p_line_tbl(I).unit_price is null)
32661 THEN
32662 l_price_flag_yes_only := G_YES;
32663 EXIT;
32664 END IF;--PRICE_FLAG = G_YES or PRICE_FLAG = G_PHASE
32665 END IF;--l_price_flag_yes_only
32666 -- shu, fix bug 2437534
32667
32668 I:=p_line_tbl.NEXT(I);
32669 END LOOP;
32670
32671 -- The flag tells if there is atleast 1 order line with price_flag = 'Y'
32672 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32673 engine_debug('Price Flag Yes: ' || l_price_flag_yes_only);
32674
32675 END IF;
32676 IF (l_price_flag_indx IS NULL ) THEN
32677 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32678 engine_debug('All the lines have price flag N.Hence no pricing returning');
32679 END IF;
32680 x_line_tbl := p_line_tbl;
32681 x_line_qual := p_qual_tbl;
32682 x_line_attr_tbl := p_line_attr_tbl;
32683 x_line_detail_tbl := p_line_detail_tbl;
32684 RETURN; -- No pricing needs to be done as all the lines have price flag as 'N'
32685 END IF;
32686 END IF;
32687 --=====END: No-Pricing-Line check needed by both Java and PL/SQL engine
32688
32689 --=====START: needed by both Java and PL/SQL engine, used later in shared code
32690 --this method will populate G_PRICE_LIST_SEQUENCE and G_PRICE_LIST_PHASE_ID
32691 --and later NOT-NULL check against these two globals are performed
32692 Get_Price_List_Sequence(l_return_status,l_status_text);
32693
32694 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
32695 RAISE E_ROUTINE_ERRORS;
32696 END IF;
32697 --=====END: needed by both Java and PL/SQL engine, used later in shared code
32698
32699 --=====START: needed by both Java and PL/SQL engine, used in Populate_Output()
32700 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32701 engine_debug('Rounding flag: '||p_control_rec.rounding_flag);
32702 END IF;
32703 l_rounding_flag := nvl(p_control_rec.rounding_flag,G_YES);
32704 --=====START: needed by both Java and PL/SQL engine, used in Populate_Output()
32705
32706 --********************************************************************
32707 --If user populates the temp tables directly
32708 --the public API will populate the currency_code etc in
32709 --public variables
32710 --********************************************************************
32711 -- qp_number.canonical_mask := 'FM999999999999999999999.99999999999999999999999999999999999999'; --3085147
32712 qp_number.canonical_mask := 'FM999999999999999999999.9999999999999999999999999999999999999999'; --3169430
32713
32714 --=======START: Pre-pricing processing needed by JAVA and PL/SQL engine======
32715 IF G_TEMP_TABLE_INSERT_FLAG = G_YES THEN
32716
32717 /*Truncate_Temp_Tables (l_return_status,l_status_text);
32718 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
32719 RAISE E_ROUTINE_ERRORS;
32720 END IF; */
32721
32722 -- qp_number.canonical_mask := 'FM999999999999999999999.99999999999999999999999999999999999999';
32723
32724
32725 l_bypass_pricing := FND_PROFILE.VALUE(G_BYPASS_PRICING);
32726
32727 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32728 engine_debug ('Pricing Bypass : ' || l_bypass_pricing);
32729
32730 END IF;
32731 IF (l_bypass_pricing = 'Y' ) THEN
32732
32733 x_line_tbl := p_line_tbl;
32734 x_line_qual := p_qual_tbl;
32735 x_line_attr_tbl := p_line_attr_tbl;
32736 x_line_detail_tbl := p_line_detail_tbl;
32737
32738 I:= x_line_tbl.FIRST;
32739
32740 WHILE I IS NOT NULL LOOP
32741 If x_line_tbl(I).UNIT_PRICE is null or x_line_tbl(I).ADJUSTED_UNIT_PRICE is null
32742 or x_line_tbl(I).UNIT_PRICE = fnd_api.g_miss_num or
32743 x_line_tbl(I).ADJUSTED_UNIT_PRICE = fnd_api.g_miss_num then
32744
32745 x_line_tbl(I).UNIT_PRICE := l_FIXED_PRICE;
32746 x_line_tbl(I).ADJUSTED_UNIT_PRICE := l_FIXED_PRICE;
32747 x_line_tbl(I).STATUS_CODE := QP_PREQ_GRP.G_STATUS_UPDATED;
32748 end if;
32749 I:=x_line_tbl.NEXT(I);
32750 END LOOP;
32751
32752 RETURN;
32753 END IF;
32754
32755 IF(p_control_rec.PRICING_EVENT = NULL
32756 OR p_control_rec.calculate_flag = NULL
32757 OR UPPER(p_control_rec.SIMULATION_FLAG) NOT IN (G_YES,G_NO)
32758 ) THEN
32759 RAISE E_INVALID_CONTROL_RECORD;
32760 END IF;
32761
32762
32763 IF(G_PRICE_LIST_SEQUENCE = NULL OR G_PRICE_LIST_SEQUENCE = FND_API.G_MISS_NUM
32764 OR G_PRICE_LIST_PHASE_ID = NULL OR G_PRICE_LIST_PHASE_ID = FND_API.G_MISS_NUM) THEN
32765 RAISE E_INVALID_PHASE;
32766 END IF;
32767
32768 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32769 engine_debug('Related_lines count: '||p_related_lines_tbl.COUNT);
32770
32771 END IF;
32772 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
32773 RAISE E_ROUTINE_ERRORS;
32774 END IF;
32775
32776 --=====needed by both Java Engine and PL/SQL engine, used in populate_output()
32777 IF (p_control_rec.calculate_flag = G_CALCULATE_ONLY) THEN
32778 l_pricing_status_code := G_STATUS_NEW;
32779 ELSE
32780 l_pricing_status_code := G_STATUS_UNCHANGED;
32781 END IF;
32782
32783 OPEN l_check_pricing_phase_exists(p_control_rec.PRICING_EVENT,p_control_rec.PRICING_EVENT || ',');
32784 FETCH l_check_pricing_phase_exists INTO l_pricing_phase,l_freeze_override_flag;
32785 CLOSE l_check_pricing_phase_exists;
32786
32787 IF (l_pricing_phase IS NOT NULL) THEN
32788 l_price_phase_flag := TRUE;
32789 G_PRICE_PHASE_FLAG := TRUE;
32790 ELSE
32791 l_price_phase_flag := FALSE;
32792 G_PRICE_PHASE_FLAG := FALSE;
32793 END IF;
32794 --=====needed by both Java Engine and PL/SQL engine, used in populate_output()
32795
32796 ELSE --g_temp_table_insert_flag = 'N', performance path
32797 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32798 engine_debug('Calling application inserted into temp tables');
32799
32800 END IF;
32801 G_CURRENCY_CODE := QP_PREQ_PUB.G_CURRENCY_CODE;
32802 G_PRICE_PHASE_FLAG := QP_PREQ_PUB.G_PRICE_PHASE_FLAG;
32803 G_PRICE_LIST_SEQUENCE := QP_PREQ_PUB.G_PRICE_LIST_SEQUENCE;
32804 G_PRICE_LIST_PHASE_ID := QP_PREQ_PUB.G_PRICE_LIST_PHASE_ID;
32805 G_MIN_PRICING_DATE := QP_PREQ_PUB.G_MIN_PRICING_DATE;
32806 G_MAX_PRICING_DATE := QP_PREQ_PUB.G_MAX_PRICING_DATE;
32807
32808 l_price_flag_yes_only := NULL; -- reset, default
32809 -- Check if atleast there is one line with price_flag = 'Y'
32810 -- shu, begin bug 2437534 fix
32811 IF l_price_flag_yes_only is null THEN
32812 --FOR cl IN (select unit_price, price_flag from qp_npreq_lines_tmp)
32813 FOR cl IN l_lines_info_cur
32814 LOOP
32815 IF cl.price_flag = G_YES OR (cl.unit_price is NULL and cl.price_flag = G_PHASE) then
32816 l_price_flag_yes_only := G_YES;
32817 exit;
32818 END IF;
32819 END LOOP;
32820
32821 END IF;
32822 -- shu, end bug 2437534 fix
32823
32824 l_price_flag_indx := NULL;
32825 -- Check if atleast there is one line with price_flag = 'Y' or price_flag = 'P'
32826 BEGIN
32827 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
32828 SELECT 1
32829 INTO l_price_flag_indx
32830 FROM qp_npreq_lines_tmp
32831 WHERE PRICE_FLAG IN (G_YES,G_PHASE)
32832 AND ROWNUM=1;
32833 --added by yangli for Java Engine
32834 ELSE
32835 SELECT 1
32836 INTO l_price_flag_indx
32837 FROM qp_int_lines
32838 WHERE PRICE_FLAG IN (G_YES, G_PHASE)
32839 AND ROWNUM=1;
32840 END IF;
32841 --added by yangli for Java Engine
32842 EXCEPTION
32843 WHEN NO_DATA_FOUND THEN
32844 l_price_flag_indx := NULL;
32845 END ;
32846
32847 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32848 engine_debug('Direct Temp Table Insert Price Flag Yes Only : '||l_price_flag_yes_only);
32849
32850 END IF;
32851 -- This is the code when calling app inserted into temp tables to quit pricing when there are no lines
32852 -- with either price flag = 'Y' or 'P'
32853 IF (l_price_flag_indx IS NULL) THEN
32854 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32855 engine_debug('No Pricing. Returning, call from direct insert into temp tables by calling app');
32856 END IF;
32857 RETURN;
32858 END IF;
32859
32860 END IF;---p_control_rec.temp_table_insert_flag = G_NO
32861 --=======END: Pre-pricing processing needed by JAVA and PL/SQL engine======
32862
32863 --IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32864 --engine_debug('Pricing Event: ' || p_control_rec.PRICING_EVENT);
32865 --engine_debug('Pricing Engine Version: ' || QP_PREQ_GRP.GET_VERSION);
32866 --END IF; -- 4033618
32867
32868 IF (G_TEMP_TABLE_INSERT_FLAG = G_YES) THEN
32869 --=======START: Truncate/Populate_Temp_tables() needed by JAVA and PL/SQL engine======
32870 Truncate_Temp_Tables (l_return_status,l_status_text);
32871 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
32872 RAISE E_ROUTINE_ERRORS;
32873 END IF;
32874
32875 Populate_Temp_Tables
32876 (p_line_tbl,
32877 p_qual_tbl,
32878 p_line_attr_tbl,
32879 p_LINE_DETAIL_tbl,
32880 p_LINE_DETAIL_qual_tbl,
32881 p_LINE_DETAIL_attr_tbl,
32882 p_related_lines_tbl,
32883 l_rounding_flag,
32884 l_pricing_status_code,
32885 l_price_phase_flag,
32886 l_freeze_override_flag,
32887 p_control_rec.pricing_event,
32888 p_control_rec.calculate_flag,
32889 l_return_status,
32890 l_status_text);
32891
32892 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
32893 RAISE E_ROUTINE_ERRORS;
32894 END IF;
32895 --========END: Truncate/Populate_Temp_tables() needed by JAVA and PL/SQL engine======
32896 ELSE
32897 -----------------START: Specific to PL/SQL Engine----------------------
32898 --added by yangli for Java Engine project
32899 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
32900 -- for accum range break
32901 -- manually set G_ORDER_ID in the direct insert path
32902 -- because Populate_Temp_Tables was not called
32903 BEGIN
32904 select line_id
32905 into G_ORDER_ID
32906 from qp_npreq_lines_tmp
32907 where line_type_code = QP_PREQ_GRP.G_ORDER_LEVEL;
32908 EXCEPTION
32909 WHEN NO_DATA_FOUND THEN
32910 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32911 QP_PREQ_GRP.engine_debug(' - could not get order header ID! Summary request line missing');
32912 END IF; --4033618
32913 END;
32914 END IF;--java engine not installed
32915 --added by yangli for Java Engine project
32916 -----------------END: Specific to PL/SQL Engine----------------------
32917 END IF;
32918
32919 -- [5112585/5087820]
32920 -- This block of code moved outside of the previous IF-THEN-ELSE block.
32921 -- max(line_detail_index)+1 is now correctly computed for both the PL/SQL table
32922 -- and the direct insert path for the PL/SQL engine.
32923 -----------------START: Specific to PL/SQL Engine----------------------
32924 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
32925 -- Assign the max line detail index
32926 OPEN l_get_max_line_detail_index;
32927 FETCH l_get_max_line_detail_index INTO l_max_line_detail_index;
32928 CLOSE l_get_max_line_detail_index;
32929
32930 --Put back the changes for bug 2457983
32931 --in OC case where caller passes adjustments, the adjustments are inserted
32932 --but G_LINE_DETAIL_INDEX is not incremented which causes a
32933 --unique constraint violation on qp_npreq_ldets_tmp_U1
32934 --hence need to fetch the maximum line_detail_index
32935 G_LINE_DETAIL_INDEX := nvl(l_max_line_detail_index,1);
32936 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32937 engine_debug('G_LINE_DETAIL_INDEX '||G_LINE_DETAIL_INDEX);
32938 END IF;
32939 END IF;--java engine not installed
32940 -----------------END: Specific to PL/SQL Engine----------------------
32941
32942 /*+------------------TO INSERT HIERARCHY RECORDS IN ATTRS_TMP Added for TCA ----+*/
32943
32944 INSERT_QUALIFIER_HIERARCHY;
32945
32946 /*+------------------------------------------------------------------------------+*/
32947
32948 --added by yangli for Java Engine project
32949 IF QP_JAVA_ENGINE_UTIL_PUB.Java_Engine_Running = 'N' THEN
32950 -----------------START: Specific to PL/SQL Engine----------------------
32951 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32952 ENGINE_DEBUG('Java Engine not Installed ----------');
32953 END IF;
32954
32955 Update_Processing_Order(l_return_status,l_status_text);
32956 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32957 engine_debug('After calling update_procss--');
32958
32959 END IF;
32960 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
32961 RAISE E_ROUTINE_ERRORS;
32962 END IF;
32963
32964 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32965 FOR i in l_debug loop
32966 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32967 engine_debug('=CONTEXT PASSED: '||i.CONTEXT);
32968 engine_debug('=ATTRIBUTE : '||i.ATTRIBUTE);
32969 engine_debug('=VALUE : ' ||i.VALUE_FROM);
32970 engine_debug('=LINE INDEX : ' ||i.LINE_INDEX);
32971 engine_debug('================================');
32972 END IF;
32973 END LOOP;
32974
32975 FOR I in debug_cur LOOP
32976 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
32977 engine_debug('Request Type Code: '|| I.REQUEST_TYPE_CODE);
32978 engine_debug('Line Index: '|| I.LINE_INDEX);
32979 engine_debug('Line Type Code: '|| I.LINE_TYPE_CODE);
32980 engine_debug('Price Flag: ' || I.PRICE_FLAG);
32981 engine_debug('Price List Header Id: ' || I.PRICE_LIST_HEADER_ID);
32982 engine_debug('Rounding Factor : ' || I.ROUNDING_FACTOR);
32983 END IF;
32984 END LOOP;
32985
32986
32987 END IF;
32988
32989 /*
32990 INDX,QP_PREQ_GRP.price_request.price_request_upd1,qp_npreq_line_attrs_tmp_N2,PRICING_STATUS_CODE,1
32991 INDX,QP_PREQ_GRP.price_request.price_request_upd1,qp_npreq_line_attrs_tmp_N2,ATTRIBUTE_TYPE,2
32992 */
32993 /*
32994 INDX,QP_PREQ_GRP.price_request.price_request_sel1,FND_DESCR_FLEX_COL_USAGES_U1,APPLICATION_ID,1
32995 INDX,QP_PREQ_GRP.price_request.price_request_sel1,FND_DESCR_FLEX_COL_USAGES_U1,DESCRIPTIVE_FLEXFIELD_NAME,2
32996 INDX,QP_PREQ_GRP.price_request.price_request_sel1,FND_DESCR_FLEX_COL_USAGES_U1,DESCRIPTIVE_FLEX_CONTEXT_CODE,3
32997 INDX,QP_PREQ_GRP.price_request.price_request_sel1,FND_DESCR_FLEX_COL_USAGES_U1,APPLICATION_COLUMN_NAME,4
32998
32999 INDX,QP_PREQ_GRP.price_request.price_request_sel1,FND_FLEX_VALUE_SETS_U1,FLEX_VALUE_SET_ID,1
33000 */
33001 --G_AM_INSTALLED_PROFILE := nvl(FND_PROFILE.value('QP_ATTRIBUTE_MANAGER_INSTALLED'), G_YES); /* default is G_YES by yangli 03/12/2002*/
33002 G_AM_INSTALLED_PROFILE := QP_UTIL.Attrmgr_Installed;
33003 /* by yangli 05/02/02*/
33004
33005 IF G_AM_INSTALLED_PROFILE = G_YES THEN
33006 BEGIN
33007 UPDATE /*+ dynamic_sampling(1) */ qp_npreq_line_attrs_tmp lattr
33008 SET value_from = qp_number.number_to_canonical(qp_number.canonical_to_number(lattr.value_from)),
33009 value_to = qp_number.number_to_canonical(qp_number.canonical_to_number(lattr.value_to))
33010 WHERE attribute_type = G_PRICING_TYPE
33011 AND pricing_status_code = G_STATUS_UNCHANGED
33012 AND exists (
33013 SELECT format_type
33014 FROM fnd_flex_value_sets VSET,
33015 qp_segments_b SEGMENTS, qp_prc_contexts_b PCONTEXTS
33016 WHERE vset.flex_value_set_id = segments.user_valueset_id
33017 AND segments.application_id = 661
33018 AND pcontexts.prc_context_type <> 'QUALIFIER'
33019 AND pcontexts.prc_context_code = lattr.context
33020 AND segments.segment_mapping_column = lattr.attribute
33021 AND segments.prc_context_id = pcontexts.prc_context_id
33022 AND vset.format_type = 'N'); --by yangli 03/06/2002 9:30am
33023
33024 EXCEPTION
33025 WHEN OTHERS THEN
33026 x_return_status := FND_API.G_RET_STS_ERROR;
33027 BEGIN
33028
33029 FOR l_rec IN am_attr_msg_cur
33030 LOOP
33031 l_msg_context := l_rec.context;
33032 l_msg_attribute := l_rec.attribute;
33033 l_msg_value_from := qp_number.number_to_canonical(l_rec.value_from);
33034 l_msg_value_to := qp_number.number_to_canonical(l_rec.value_to);
33035 END LOOP;
33036
33037 EXCEPTION
33038 WHEN OTHERS THEN
33039 l_status_text := 'Exception in QP_PREQ_GRP.PRICE_REQUEST ';
33040 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 ';
33041 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33042 engine_debug('l_status_text '|| l_status_text);
33043 END IF; --4033618
33044 END;
33045 RAISE E_ROUTINE_ERRORS;
33046 END;
33047
33048 ELSE
33049
33050 BEGIN
33051 UPDATE qp_npreq_line_attrs_tmp lattr
33052 SET value_from = qp_number.number_to_canonical(qp_number.canonical_to_number(lattr.value_from)),
33053 value_to = qp_number.number_to_canonical(qp_number.canonical_to_number(lattr.value_to))
33054 WHERE attribute_type = G_PRICING_TYPE
33055 AND pricing_status_code = G_STATUS_UNCHANGED
33056 AND exists (
33057 SELECT format_type
33058 FROM fnd_flex_value_sets VSET,fnd_descr_flex_column_usages DFLEX
33059 WHERE vset.flex_value_set_id = dflex.flex_value_set_id
33060 AND dflex.application_id = 661
33061 AND dflex.descriptive_flexfield_name = 'QP_ATTR_DEFNS_PRICING'
33062 AND dflex.descriptive_flex_context_code = lattr.context
33063 AND dflex.application_column_name = lattr.attribute
33064 AND vset.format_type = 'N');
33065
33066 EXCEPTION
33067 --changes for bug 2174000 a qty>23digits causes numeric or value error
33068 --due to the format mas in number_to_canonical
33069 When OTHERS Then
33070 x_return_status := FND_API.G_RET_STS_ERROR;
33071 BEGIN
33072 FOR l_rec IN attr_msg_cur
33073 LOOP
33074 l_msg_context := l_rec.context;
33075 l_msg_attribute := l_rec.attribute;
33076 l_msg_value_from := qp_number.number_to_canonical(l_rec.value_from);
33077 l_msg_value_to := qp_number.number_to_canonical(l_rec.value_to);
33078 END LOOP;
33079 EXCEPTION
33080 WHEN OTHERS THEN
33081 l_status_text := 'Exception in QP_PREQ_GRP.PRICE_REQUEST ';
33082 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
33083 s non-numeric/Errored';
33084 END;
33085 Raise E_ROUTINE_ERRORS;
33086 END;
33087
33088 END IF; --if G_AM_INSTALLED_PROFILE is true
33089
33090 -- begin shu, aso rounding
33091 FOR i IN get_request_type_code_cur LOOP
33092 G_REQUEST_TYPE_CODE:=i.request_type_code;
33093 END LOOP;
33094 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33095 engine_debug ('G_REQUEST_TYPE_CODE: '||G_REQUEST_TYPE_CODE);
33096 engine_debug ('G_TEMP_TABLE_INSERT_FLAG: '||G_TEMP_TABLE_INSERT_FLAG);
33097 END IF;
33098 IF (p_control_rec.rounding_flag IS NULL) THEN
33099 IF G_REQUEST_TYPE_CODE = 'ASO' AND G_TEMP_TABLE_INSERT_FLAG='Y' THEN
33100 G_ROUNDING_FLAG := 'Q';
33101 ELSE -- non 'ASO'
33102 G_ROUNDING_FLAG := 'Y';
33103 END IF;
33104 ELSE -- p_control_rec.rounding_flag not null, honor what is passed
33105 G_ROUNDING_FLAG := p_control_rec.rounding_flag;
33106 END IF;
33107 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33108 engine_debug ('G_ROUNDING_FLAG: '||G_ROUNDING_FLAG);
33109 END IF;
33110 -- end shu, aso rounding
33111
33112 -- Bug 3143535 - ORDER AMOUNT CALCULATION ISSUE
33113 -- if G_PRICE_PHASE_FLAG = TRUE then *** Comment for bug#3588320 ***
33114 OPEN order_amount_cur;
33115 FETCH order_amount_cur INTO G_BEFORE_PRICING_ORD_AMT;
33116 CLOSE order_amount_cur;
33117 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33118 engine_debug ('G_BEFORE_PRICING_ORD_AMT: '||G_BEFORE_PRICING_ORD_AMT);
33119 END IF;
33120 -- end if;
33121
33122 IF (p_control_rec.calculate_flag = G_CALCULATE_ONLY) THEN
33123
33124 CALL_CALCULATION_ENGINE(p_is_direct_call => TRUE,
33125 x_status_code =>l_return_status,
33126 x_status_text =>l_status_text);
33127
33128 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
33129 RAISE E_ROUTINE_ERRORS;
33130 END IF;
33131
33132 ELSIF (p_control_rec.calculate_flag IN (G_SEARCH_N_CALCULATE,G_SEARCH_ONLY) )THEN
33133
33134 -- 4227407/4361975, this call to update_rounding_factor used to be inside l_phase_cur
33135 -- shu, fix bug 2416047
33136 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33137 engine_debug('update_rounding_factor...');
33138 END IF;
33139 -- Update Rounding Factor, if rounding_flag not N -- Ravi, shu new rounding
33140 IF G_ROUNDING_FLAG <> 'N' THEN -- shu, aso rounding,
33141 UPDATE_ROUNDING_FACTOR (
33142 QP_PREQ_GRP.G_MCURR_INSTALLED_USED,
33143 l_return_status,
33144 l_status_text);
33145 END IF; -- end if rounding_flag
33146 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
33147 RAISE E_ROUTINE_ERRORS;
33148 END IF;
33149
33150 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33151 engine_debug('BEFORE event phase loop');
33152 END IF;
33153 l_gone_in_phase_cur_loop := 'N';
33154 FOR I IN l_phase_cur(l_event_code => p_control_rec.pricing_event,
33155 l_event_code1 => p_control_rec.pricing_event || ',') LOOP
33156 l_gone_in_phase_cur_loop := 'Y';
33157
33158 IF (l_prev_pricing_phase_id <> I.pricing_phase_id) THEN
33159
33160 l_prev_pricing_phase_id := I.pricing_phase_id;
33161
33162 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33163 engine_debug('Price Flag Yes Only : '||l_price_flag_yes_only);
33164 END IF;
33165
33166 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
33167
33168 qp_debug_util.tstart('L_PHASE_CUR_LIST_PRICE','List Line Phase(Id) : '||I.name||' ('||I.pricing_phase_id||') ', false, true);
33169 --Set Global Flag ( Change)
33170 G_INSERT_INTO_FORMULA_TMP := TRUE;
33171 --G_INSERT_INTO_FORMULA_TMP := 'Y';
33172
33173 -- Call to Source Item Quantity
33174 /*IF (l_pricelist_phase_count = 0) THEN
33175 Source_Vol_Contexts_Attributes(I.PHASE_SEQUENCE,
33176 I.FREEZE_OVERRIDE_FLAG,
33177 nvl(p_control_rec.source_order_amount_flag,G_NO),
33178 l_return_status,
33179 l_status_text);
33180 l_pricelist_phase_count := l_pricelist_phase_count + 1;
33181 END IF;*/
33182
33183 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33184 engine_debug('Working on phase: '||I.pricing_phase_id);
33185 END IF;
33186
33187 -- Update the price list id , validated flag
33188 Update_Price_List_Information(I.freeze_override_flag, l_return_status, l_status_text); -- fix bug 2756754
33189 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
33190 Raise E_ROUTINE_ERRORS;
33191 END IF;
33192
33193 -- ********
33194 -- 4227047/4361975, the call to Update_Rounding_Factor that used to be here
33195 -- was moved to before this phase cursor
33196
33197 qp_debug_util.tstart('PLL_LIST_HEADER_SEARCH','Price List Search - LIST_HEADER_SEARCH API');
33198 LIST_HEADER_SEARCH(p_pricing_phase_id => I.pricing_phase_id,
33199 p_is_price_list => TRUE,
33200 p_freeze_override_flag => I.freeze_override_flag,
33201 p_control_rec => p_control_rec,
33202 p_list_mode => 'PLL',
33203 x_further_search => l_further_search,
33204 x_status_code => l_return_status,
33205 x_status_text => l_status_text
33206 );
33207
33208 qp_debug_util.tstop('PLL_LIST_HEADER_SEARCH');
33209 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
33210 RAISE E_ROUTINE_ERRORS;
33211 END IF;
33212
33213 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33214 engine_debug('l_further_search: '||l_further_search);
33215 engine_debug('l_further_search: '||l_further_search);
33216
33217 END IF;
33218 -- Do further search only if asked for using I.SEARCH_FLAG on the price list phase
33219 -- Bug# 1367546
33220
33221 IF (l_further_search = G_YES and (I.SEARCH_FLAG = G_YES or
33222 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) = G_YES)) -- price book
33223 THEN
33224 qp_debug_util.tstart('SELECT_PRICE_LIST_LINES','Select Price List Lines(Search Flag on) - SELECT_PRICE_LIST_LINES API');
33225
33226 SELECT_PRICE_LIST_LINES(p_pricing_phase_id => I.pricing_phase_id,
33227 p_freeze_override_flag => I.freeze_override_flag,
33228 x_status_code => l_return_status,
33229 x_status_text => l_status_text,
33230 p_control_rec => p_control_rec); -- vivek\
33231 qp_debug_util.tstop('SELECT_PRICE_LIST_LINES');
33232 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
33233 RAISE E_ROUTINE_ERRORS;
33234 END IF;
33235
33236 --perform grouping will group all the attributes which
33237 --contribute to one list. It will compare, the incoming
33238 --attributes against setup attributes. If the count all the
33239 --required attributes match, then it will UPDATE
33240 --pricing status code of the list from 'T'(transient) to 'N'
33241 --(new). If doesn't mathch then it will set the status as
33242 --D_GRP (DELETED by grouping).
33243
33244 --Evaluating between operator for both qualifiers and pricing attributes
33245 Evaluate_Between(I.pricing_phase_id,NULL,NULL,l_return_status,l_status_text);
33246
33247 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33248 RAISE E_ROUTINE_ERRORS;
33249 END IF;
33250
33251
33252 -- Check for multiple item categories and customer classes
33253 Eliminate_Multiple_Hierarchies(I.pricing_phase_id,l_return_status,l_status_text);
33254
33255 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33256 RAISE E_ROUTINE_ERRORS;
33257 END IF;
33258
33259 --Handle_Excluder(I.pricing_phase_id,NULL,l_return_status,l_status_text);
33260
33261 Perform_Grouping(I.pricing_phase_id, NULL,l_return_status, l_status_text);
33262
33263 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
33264 RAISE E_ROUTINE_ERRORS;
33265 END IF;
33266
33267 --Process_Line_Group(I.pricing_phase_id);
33268
33269 --Evaluating between operator for both qualifiers and pricing attributes
33270 Evaluate_Between(I.pricing_phase_id,'Y',NULL,l_return_status,l_status_text);
33271
33272 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33273 RAISE E_ROUTINE_ERRORS;
33274 END IF;
33275
33276 QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty
33277 (p_line_index => NULL,
33278 p_order_uom_code => NULL,
33279 p_order_qty => NULL,
33280 p_pricing_phase_id => I.pricing_phase_id,
33281 p_call_big_search => TRUE,
33282 x_list_line_id => l_list_line_id,
33283 x_return_status => l_return_status,
33284 x_return_status_txt => l_status_text);
33285
33286 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33287 RAISE E_ROUTINE_ERRORS;
33288 END IF;
33289
33290 -- 3773652
33291 -- re-run Evaluate_Between after UOM conversion to check PLL really qualifies
33292 begin
33293 select 'x' into l_dummy
33294 from qp_npreq_lines_tmp
33295 where LINE_UOM_CODE <> nvl(PRICED_UOM_CODE, LINE_UOM_CODE)
33296 and (PRICE_FLAG = G_YES
33297 or
33298 PRICE_FLAG = G_PHASE and l_freeze_override_flag = G_YES)
33299 and rownum = 1;
33300
33301 Evaluate_Between(i.pricing_phase_id,NULL,NULL,l_return_status,l_status_text);
33302 exception
33303 when no_data_found then
33304 null;
33305 end;
33306
33307
33308 Update_Request_Line_Status(p_control_rec,'SUCCESS',i.freeze_override_flag,l_return_status,l_status_text); --[julin/4708044]
33309 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33310 RAISE E_ROUTINE_ERRORS;
33311 END IF;
33312
33313
33314 --bug# 2091386 not reflecting the right price on change on UOM on the order line . Since
33315 --QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty determines the pricing_qty
33316 --which is needed later in Get_Eligible_Price_Break we need to call Get_Eligible_Price_Break
33317 --after QP_Resolve_Incompatability_PVT.Determine_Pricing_UOM_And_Qty.
33318 --By doing this we will get the right price in the PRICE event on change of UOM on the order line
33319 --for price based on price break
33320 Get_Eligible_Price_Break(I.pricing_phase_id,NULL,l_return_status,l_status_text);
33321
33322 -- Update the request line status for lines which got valid price list
33323
33324 --delete children lines of PBH if the parent PBH line get eliminated in
33325 --QP_Resolve_Incompatability_PVT
33326
33327 /*OPEN l_chk_deleted_pbh_cur(J.line_index,G_PRICE_LIST_PHASE_ID);
33328 FETCH l_chk_deleted_pbh_cur INTO l_dummy;
33329 IF l_chk_deleted_pbh_cur%FOUND THEN
33330 Delete_Invalid_PBH_Children(J.line_index,G_PRICE_LIST_PHASE_ID);
33331 END IF;
33332 CLOSE l_chk_deleted_pbh_cur;*/
33333
33334 END IF; -- l_further_search
33335
33336 -- Bug 3183982, following 4 lines added
33337 CREATE_QUALIFIER_FROM_LIST(l_return_status,l_status_text);
33338 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33339 RAISE E_ROUTINE_ERRORS;
33340 END IF;
33341
33342 -- Formula Integration
33343 Formula_Processing(NULL, --J.LINE_INDEX,
33344 I.pricing_phase_id,
33345 l_return_status,
33346 l_status_text);
33347
33348 /*IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33349 DELETE_LINES(J.LINE_INDEX,
33350 l_return_status,
33351 l_status_text);
33352 END IF;*/
33353
33354
33355 -- vivek, call new API
33356 if G_MULTI_CURRENCY_PROFILE = 'Y' and G_USE_MULTI_CURRENCY = 'Y' THEN /*vivek*/
33357 G_MCURR_INSTALLED_USED := 'Y'; -- shulin, used in QPXPCLPB Calculate_List_Price
33358 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33359 engine_debug('multi-currency TRUE - calling QP_MULTI_CURRENCY_PVT.CURRENCY_CONVERSION_API');
33360 END IF;
33361 QP_MULTI_CURRENCY_PVT.CURRENCY_CONVERSION_API(
33362 P_USER_CONVERSION_RATE => P_CONTROL_REC.USER_CONVERSION_RATE
33363 ,P_USER_CONVERSION_TYPE => P_CONTROL_REC.USER_CONVERSION_TYPE
33364 ,P_FUNCTION_CURRENCY => P_CONTROL_REC.FUNCTION_CURRENCY
33365 ,P_ROUNDING_FLAG => nvl(P_CONTROL_REC.ROUNDING_FLAG, 'Y')
33366 );
33367 end if;
33368 -- Calculation Engine
33369 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33370 engine_debug('------Before 1st call cal-----------');
33371
33372 END IF;
33373
33374 -- Bug 3183982, following 4 lines commented and moved above before calling formula engine
33375 --CREATE_QUALIFIER_FROM_LIST(l_return_status,l_status_text);
33376 --IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33377 -- RAISE E_ROUTINE_ERRORS;
33378 --END IF;
33379
33380 -- IF p_control_rec.calculate_flag = G_SEARCH_N_CALCULATE THEN
33381 Call_Calculation_Engine(p_phase_sequence => I.phase_sequence,
33382 p_freeze_override_flag => I.freeze_override_flag,
33383 x_status_code =>l_return_status,
33384 x_status_text =>l_status_text);
33385 -- END IF;
33386
33387 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33388 RAISE E_ROUTINE_ERRORS;
33389 END IF;
33390
33391 --If it is a price list sequence we need to create this
33392 --list as a qualifier for next phase. Because price list itself
33393 --can be a qualifier for next phase.
33394
33395 qp_debug_util.tstop('L_PHASE_CUR_LIST_PRICE');
33396
33397 ELSE -- not a price list sequence
33398
33399 qp_debug_util.tstart('L_PHASE_CUR_MODIFIERS','Modifiers Phase(Id) : '||I.name||' ('||I.pricing_phase_id||') ', false, true);
33400
33401 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33402 engine_debug ('Starting new a phase, pricing phase id :' || i.pricing_phase_id);
33403 END IF;
33404 --do not execute the rest is there is no list lines at all
33405 --in those rarely used phase.
33406
33407 -- [julin/4329337/4336077] checking for price list phase before l_chk_phase_exists
33408 IF (i.pricing_phase_id = G_PRICE_LIST_PHASE_ID) THEN
33409 l_exec_flag := G_NO;
33410 ELSE
33411 --IF i.pricing_phase_id >= l_rare_phase_id THEN
33412 OPEN l_chk_phase_exists(i.pricing_phase_id);
33413 FETCH l_chk_phase_exists INTO l_dummy;
33414 IF l_chk_phase_exists%NOTFOUND THEN
33415 l_exec_flag := G_NO;
33416 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33417 engine_debug('In rare_phase_id:'||i.pricing_phase_id||' exec_flag set to N');
33418 END IF;
33419 ELSE
33420 l_exec_flag := G_YES;
33421 END IF;
33422 CLOSE l_chk_phase_exists;
33423 --END IF;
33424 END IF;
33425
33426 -- shu, get price_list_header_id for ORDER event, manual adjustments BATCH EVENT
33427 -- so we can update rounding factor in lines_tmp
33428
33429 IF (G_PRICE_PHASE_FLAG=FALSE) THEN
33430
33431 --[julin/pricebook] added hint
33432 UPDATE qp_npreq_lines_tmp a
33433 SET (price_list_header_id,validated_flag) =
33434 (SELECT /*+ index(b QP_PREQ_LINE_ATTRS_TMP_N2) */ distinct qp_number.canonical_to_number(value_from),validated_flag
33435 FROM qp_npreq_line_attrs_tmp b
33436 WHERE a.line_index = b.line_index
33437 AND context = G_LIST_HEADER_CONTEXT
33438 AND attribute = G_PRICELIST_ATTRIBUTE
33439 AND attribute_type = G_QUALIFIER_TYPE
33440 AND pricing_status_code = G_STATUS_UNCHANGED
33441 AND a.PRICE_LIST_HEADER_ID < 0 )
33442 WHERE a.PRICE_LIST_HEADER_ID < 0;
33443
33444 -- ********
33445 -- 4227047/4361975, the call to Update_Rounding_Factor that used to be here
33446 -- was moved to before this phase cursor
33447
33448 END IF; /* G_PRICE_PHASE_FLAG = FALSE */
33449
33450 IF l_exec_flag = G_YES THEN
33451
33452 IF (l_discount_phase_count = 0) THEN
33453
33454 --Set Global Flag
33455 G_INSERT_INTO_FORMULA_TMP := TRUE;
33456 --G_INSERT_INTO_FORMULA_TMP := 'Y';
33457
33458 Source_Vol_Contexts_Attributes(I.PHASE_SEQUENCE,
33459 I.FREEZE_OVERRIDE_FLAG,
33460 nvl(p_control_rec.source_order_amount_flag,G_NO),
33461 l_return_status,
33462 l_status_text);
33463 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33464 RAISE E_ROUTINE_ERRORS;
33465 END IF;
33466
33467 Update_Distinct_Qualifier_Flag(l_return_status,l_status_text);
33468 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33469 RAISE E_ROUTINE_ERRORS;
33470 END IF;
33471
33472 l_discount_phase_count := l_discount_phase_count + 1;
33473 END IF;
33474
33475
33476 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33477 engine_debug('#9999999999990');
33478
33479 END IF;
33480 qp_debug_util.tstart('DIS_LIST_HEADER_SEARCH','Modifier Search - LIST_HEADER_SEARCH API');
33481 LIST_HEADER_SEARCH(p_pricing_phase_id => I.pricing_phase_id,
33482 p_is_price_list => FALSE,
33483 p_freeze_override_flag => I.freeze_override_flag,
33484 p_control_rec => p_control_rec,
33485 p_list_mode => 'DIS',
33486 x_further_search => l_further_search,
33487 x_status_code => l_return_status,
33488 x_status_text => l_status_text
33489 );
33490 qp_debug_util.tstop('DIS_LIST_HEADER_SEARCH');
33491 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
33492 RAISE E_ROUTINE_ERRORS;
33493 END IF;
33494
33495
33496
33497 --only modifiers look at search flag
33498 IF (I.SEARCH_FLAG = G_YES) THEN
33499
33500 l_disc_exist_flag := 'Y';
33501 qp_debug_util.tstart('SELECT_MODIFIERS','Modifier Selection - SELECT_MODIFIERS API');
33502 SELECT_MODIFIERS(p_pricing_phase_id => I.pricing_phase_id,
33503 p_freeze_override_flag => I.freeze_override_flag,
33504 x_status_code => l_return_status,
33505 x_status_text => l_status_text);
33506
33507 qp_debug_util.tstop('SELECT_MODIFIERS');
33508 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
33509 RAISE E_ROUTINE_ERRORS;
33510 END IF;
33511 END IF;
33512
33513 -- Check for multiple item categories and customer classes
33514 Eliminate_Multiple_Hierarchies(I.pricing_phase_id,l_return_status,l_status_text);
33515
33516 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
33517 RAISE E_ROUTINE_ERRORS;
33518 END IF;
33519
33520 --Evaluating between operator for only pricing attributes and not qualifiers
33521 Evaluate_Between(I.pricing_phase_id,NULL,NULL,l_return_status,l_status_text);
33522
33523 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33524 RAISE E_ROUTINE_ERRORS;
33525 END IF;
33526
33527 -- Not needed in modifiers phases as l_outer_qual_cur takes care of this
33528 --Handle_Excluder(I.pricing_phase_id,l_return_status,l_status_text);
33529
33530 -- Only product grouping is done in this ...
33531 Perform_Grouping(I.pricing_phase_id, NULL,l_return_status, l_status_text);
33532
33533 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
33534 RAISE E_ROUTINE_ERRORS;
33535 END IF;
33536
33537 Process_Line_Group(I.pricing_phase_id,l_return_status,l_status_text);
33538 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33539 RAISE E_ROUTINE_ERRORS;
33540 END IF;
33541
33542 --Evaluating between operator for both qualifiers and pricing attributes
33543 Evaluate_Between(I.pricing_phase_id,'Y',NULL,l_return_status,l_status_text);
33544
33545 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33546 RAISE E_ROUTINE_ERRORS;
33547 END IF;
33548
33549 Get_Eligible_Price_Break(I.pricing_phase_id,NULL,l_return_status,l_status_text);
33550 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33551 RAISE E_ROUTINE_ERRORS;
33552 END IF;
33553
33554 --[julin/5529345]
33555 QP_Process_Other_Benefits_PVT.Calculate_Recurring_Quantity(I.pricing_phase_id, l_return_status, l_status_text);
33556
33557 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33558 RAISE E_ROUTINE_ERRORS;
33559 END IF;
33560
33561 FOR J IN l_get_line_index_cur(I.pricing_phase_id)
33562 LOOP
33563 OPEN l_get_list_price_cur(J.LINE_INDEX);
33564 FETCH l_get_list_price_cur
33565 INTO l_list_price,l_line_quantity,l_priced_quantity,l_priced_uom_code,l_line_uom_code,l_pricing_effective_date;
33566 CLOSE l_get_list_price_cur;
33567
33568 Delete_Un_Asked_For_Promotions(J.LINE_INDEX,
33569 I.pricing_phase_id,
33570 I.INCOMPAT_RESOLVE_CODE,
33571 l_return_status,
33572 l_status_text);
33573
33574 -- OID/PRG/DIS/Freight Charges
33575 QP_Process_Other_Benefits_PVT.Process_Other_Benefits
33576 (J.LINE_INDEX,
33577 I.pricing_phase_id,
33578 l_pricing_effective_date,
33579 l_priced_quantity,
33580 p_control_rec.simulation_flag,
33581 l_return_status,
33582 l_status_text);
33583
33584 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
33585 DELETE_LINES(J.LINE_INDEX,
33586 l_return_status,
33587 l_status_text,
33588 l_error_status_code,
33589 l_error_status_text);
33590 END IF;
33591
33592 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33593 engine_debug('list price after phase 1 :'||l_list_price);
33594 END IF;
33595
33596 --IF (l_list_price IS NOT NULL) THEN
33597 IF (I.INCOMPAT_RESOLVE_CODE = G_INCOMP_PRECEDENCE) THEN
33598 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33599 engine_debug('Precedence evaluation');
33600 END IF;
33601 qp_debug_util.tstart('RESOLVE_INCOMPATABILITY','Resolving Modifiers Incompatability - Resolve_Incompatability API');
33602 QP_Resolve_Incompatability_PVT.Resolve_Incompatability
33603 (I.pricing_phase_id,
33604 G_DISCOUNT_PROCESSING,
33605 l_list_price,
33606 J.LINE_INDEX,
33607 l_return_status,
33608 l_status_text);
33609 qp_debug_util.tstop('RESOLVE_INCOMPATABILITY');
33610 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33611 RAISE E_ROUTINE_ERRORS;
33612 END IF;
33613 ELSIF (I.INCOMPAT_RESOLVE_CODE = G_INCOMP_BEST_PRICE) THEN
33614 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33615 engine_debug('Best price for phase');
33616 END IF;
33617 QP_Resolve_Incompatability_PVT.Best_Price_For_Phase
33618 (l_list_price,
33619 J.LINE_INDEX,
33620 I.pricing_phase_id,
33621 l_return_status,
33622 l_status_text);
33623 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33624 RAISE E_ROUTINE_ERRORS;
33625 END IF;
33626 ELSE
33627 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33628 engine_debug('Error, invalid incomp code: '||I.INCOMPAT_RESOLVE_CODE);
33629 END IF;
33630 END IF;
33631 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33632 engine_debug ('G_LINE_DETAIL_INDEX 6: '||G_LINE_DETAIL_INDEX);
33633 END IF;
33634
33635 --check if there is a pbh line deleted by incomp
33636 --if it has one, delete the children lines.
33637 OPEN l_chk_deleted_pbh_cur(J.line_index,I.pricing_phase_id);
33638 FETCH l_chk_deleted_pbh_cur INTO l_dummy;
33639 IF l_chk_deleted_pbh_cur%FOUND THEN
33640 Delete_Invalid_PBH_Children(J.line_index,I.pricing_phase_id,l_return_status,l_status_text);
33641 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33642 RAISE E_ROUTINE_ERRORS;
33643 END IF;
33644 END IF;
33645 CLOSE l_chk_deleted_pbh_cur;
33646
33647 --END IF;
33648
33649
33650 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
33651 DELETE_LINES(J.LINE_INDEX,
33652 l_return_status,
33653 l_status_text,
33654 l_error_status_code,
33655 l_error_status_text);
33656 END IF;
33657
33658 END LOOP; --l_get_line_index_cur
33659
33660 -- Formula Processing
33661 Formula_Processing(NULL, --J.LINE_INDEX,
33662 I.pricing_phase_id,
33663 l_return_status,
33664 l_status_text);
33665
33666 /*IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33667 DELETE_LINES(J.LINE_INDEX,
33668 l_return_status,
33669 l_status_text);
33670 END IF;*/
33671 END IF; --end if for if l_exec_flag=G_YES
33672 qp_debug_util.tstop('L_PHASE_CUR_MODIFIERS');
33673 END IF; --end if for if price_list_sequence
33674 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33675 engine_debug('calling Set_Order_List_Rltd');
33676 END IF;
33677
33678
33679 Set_Order_Level_Rltd(p_freeze_override_flag =>I.freeze_override_flag,
33680 p_pricing_phase_id =>I.pricing_phase_id,
33681 x_status_code =>l_return_status,
33682 x_status_text =>l_status_text);
33683 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33684 RAISE E_ROUTINE_ERRORS;
33685 END IF;
33686 END IF; -- l_pricing_phase_id <> I.pricing_phase_id
33687 END LOOP l_phase_cur;
33688
33689 --Bug fix 3963888 - Call UPDATE_ROUNDING_FACTOR if l_phase_cur cursor did not return any record
33690 If l_gone_in_phase_cur_loop = 'N' then
33691 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33692 engine_debug('l_gone_in_phase_cur_loop is N');
33693 END IF;
33694 -- Update Rounding Factor, if rounding_flag not N -- Ravi, shu new rounding
33695 IF G_ROUNDING_FLAG <> 'N' THEN -- shu, aso rounding,
33696 UPDATE_ROUNDING_FACTOR (
33697 QP_PREQ_GRP.G_MCURR_INSTALLED_USED,
33698 l_return_status,
33699 l_status_text);
33700
33701 END IF; -- end if rounding_flag
33702 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
33703 RAISE E_ROUTINE_ERRORS;
33704 END IF;
33705 End if;
33706
33707 l_product_app_id := 661; -- bug 3963628
33708
33709 OPEN pricing_install_status_cur;
33710 FETCH pricing_install_status_cur into l_install_status;
33711 CLOSE pricing_install_status_cur;
33712
33713 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33714 engine_debug('Pricing Install Status : ' || l_install_status);
33715 engine_debug('Limits Install Status : ' || l_limits_installed);
33716
33717 END IF;
33718 --4900095
33719 IF QP_PREQ_GRP.G_Service_line_qty_tbl.COUNT = 0 THEN
33720 QP_PREQ_PUB.Determine_svc_item_quantity;
33721 END IF;
33722 -- Reset
33723 -- This global variable is used to not calculate the Recurring Qty routine and update the Operand
33724 -- if Limits Code is called to avoid second time calculation of the OPERAND value from the Calculation Engine
33725 -- QP_Process_Other_Limits.Calculate_Recurring_Qty
33726 G_LIMITS_CODE_EXECUTED := 'N';
33727
33728 -- If advanced pricing and limits profile option = 'Y' call calc engine for limits
33729 IF (l_install_status = 'I' and l_limits_installed = G_YES and
33730 UPPER(p_control_rec.simulation_flag) = 'N' and
33731 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES) -- price book
33732 THEN
33733 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33734 engine_debug('------Advanced Pricing and Limits Profile is Set-----------');
33735 END IF;
33736 --IF p_control_rec.calculate_flag = G_SEARCH_N_CALCULATE THEN -- check not needed once limits are installed
33737 Call_Calculation_Engine(x_status_code =>l_return_status,
33738 x_status_text =>l_status_text);
33739 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
33740 RAISE E_ROUTINE_ERRORS;
33741 END IF;
33742
33743 G_LIMITS_CODE_EXECUTED := 'Y';
33744
33745 --END IF;
33746 ELSE
33747 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33748 engine_debug('------Not calling calculation Engine of limits-----------');
33749 END IF;
33750 END IF ; --l_install_status = 'I' and l_limits_installed = G_YES
33751
33752 END IF; -- END IF for G_SEARCH_ONLY or G_SEARCH_N_CALCULATE
33753
33754
33755 IF (l_install_status = 'I' and l_limits_installed = G_YES and
33756 UPPER(p_control_rec.simulation_flag) = 'N' and
33757 nvl(QP_PREQ_PUB.G_CALL_FROM_PRICE_BOOK, G_NO) <> G_YES) -- price book
33758 THEN
33759 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33760 engine_debug('------Advanced Pricing and Limits Profile is Set 2 -----------');
33761
33762 END IF;
33763 --Call the Delete Transactions API only if there is atleast one record in
33764 --qp_limit_transactions table(that is, if limits functionality being used)
33765 OPEN limit_trans_cur;
33766 FETCH limit_trans_cur INTO l_trans;
33767
33768 IF limit_trans_cur%FOUND THEN
33769 QP_Limit_Transactions_PVT.Delete(p_control_rec.pricing_event, l_return_status);
33770 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33771 RAISE E_ROUTINE_ERRORS;
33772 END IF;
33773 END IF;
33774 CLOSE limit_trans_cur;
33775
33776 OPEN l_limit_check_cur;
33777 FETCH l_limit_check_cur INTO l_header_limit_exists , l_line_limit_exists;
33778 CLOSE l_limit_check_cur;
33779
33780 -- Process Limits and call calculation engine
33781 IF (l_header_limit_exists = G_YES or l_line_limit_exists = G_YES) THEN
33782 -- Bug 3143535
33783 -- get the order amount from attributes. if not found then sum it from order lines
33784 begin
33785 select qp_number.canonical_to_number(value_from) -- 5515203
33786 into v_order_amount
33787 from qp_npreq_line_attrs_tmp
33788 where CONTEXT = G_PRIC_VOLUME_CONTEXT
33789 AND ATTRIBUTE = G_ORDER_AMOUNT_ATTRIBUTE
33790 AND ATTRIBUTE_TYPE = G_QUALIFIER_TYPE
33791 AND PRICING_STATUS_CODE = G_STATUS_UNCHANGED
33792 and rownum = 1;
33793 exception
33794 when no_data_found then
33795 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33796 engine_debug ('order amount not found in attributes ');
33797 END IF;
33798 OPEN order_amount_cur;
33799 FETCH order_amount_cur INTO v_order_amount;
33800 CLOSE order_amount_cur;
33801 end;
33802
33803 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33804 engine_debug ('Total order amount = ' || v_order_amount);
33805 END IF;
33806
33807 /*
33808 INDX,QP_PREQ_GRP.price_request.price_request_upd1,qp_npreq_lines_tmp_N2,LINE_TYPE_CODE,1
33809 */
33810 UPDATE qp_npreq_lines_tmp
33811 SET UNIT_PRICE = v_order_amount,
33812 PRICED_QUANTITY = 1
33813 WHERE LINE_TYPE_CODE = 'ORDER';
33814
33815 QP_Limit_Balance_Check_PVT.Process_Limits(l_return_status,l_status_text);
33816
33817 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
33818 RAISE E_ROUTINE_ERRORS;
33819 END IF;
33820
33821 --fix for bug 4765137
33822 --to call the delete txn API to delete the limit transactions
33823 --for the modifiers that the process_limits API marked deleted
33824 --during exceptions
33825 --note that the delete API was already called earlier to delete
33826 --the transactions for the modifiers the search engine did not apply
33827 --need to call the delete API again after process_limits which will also
33828 --update the balance
33829 --Call the Delete Transactions API only if there is atleast one record in
33830 --qp_limit_transactions table(that is, if limits functionality being used)
33831 OPEN limit_trans_cur;
33832 FETCH limit_trans_cur INTO l_trans;
33833
33834 IF limit_trans_cur%FOUND THEN
33835 QP_Limit_Transactions_PVT.Delete(p_control_rec.pricing_event, l_return_status);
33836 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
33837 RAISE E_ROUTINE_ERRORS;
33838 END IF;--l_return_status
33839 END IF;--limit_trans_cur%FOUND
33840 CLOSE limit_trans_cur;
33841 --end fix for bug 4765137
33842
33843
33844 END IF ;
33845 END IF; --l_install_status = 'I' and l_limits_installed = G_YES
33846
33847 -- Do not Call Calculation Engine if it is from public API Call
33848 -- l_disc_exist_flag will be G_YES when there are discounts. Make a second calculation engine call
33849 -- only if there are discounts,since calculation engine is called for pricing once
33850 IF (G_PUBLIC_API_CALL_FLAG = G_NO and l_disc_exist_flag = G_YES) THEN
33851 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33852 engine_debug('------Calling Calculation Engine as the call is from Group Engine Call-----------');
33853 END IF;
33854 Call_Calculation_Engine(x_status_code =>l_return_status,
33855 x_status_text =>l_status_text);
33856 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
33857 RAISE E_ROUTINE_ERRORS;
33858 END IF;
33859 ELSE
33860 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33861 engine_debug('------Not Calling Calculation Engine as the call is from Public Engine Call-----------');
33862 END IF;
33863 END IF;
33864
33865
33866 l_status_text:='QP_COUPON_PVT.REDEEM_COUPONS';
33867 QP_COUPON_PVT.REDEEM_COUPONS(p_control_rec.simulation_flag, l_return_status, l_status_text);
33868
33869 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
33870 l_status_text:= 'QP_COUPON_PVT.REDEEM_COUPONS'||l_status_text;
33871 RAISE E_ROUTINE_ERRORS;
33872 END IF;
33873 -----------------END: Specific to PL/SQL Engine----------------------
33874 ELSE --Java Engine installed
33875 -----------------START: Specific to Java Engine------------------------
33876 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33877 engine_debug('Before calling QP_JAVA_ENGINE.request_price..');
33878 l_begin_time := dbms_utility.get_time;
33879 END IF;
33880
33881 l_request_id := QP_Price_Request_Context.GET_REQUEST_ID;
33882 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33883 engine_debug('Request Id:'||l_request_id);
33884 engine_debug('calc_flag:'||p_control_rec.calculate_flag);
33885 END IF;
33886
33887 QP_JAVA_ENGINE.request_price(request_id => l_request_id,
33888 p_control_rec => p_control_rec,
33889 x_return_status => l_return_status,
33890 x_return_status_text => l_status_Text);
33891
33892 IF(l_return_status = FND_API.G_RET_STS_ERROR) THEN
33893 --l_status_text:= 'QP_JAVA_ENGINE.request_price:'||l_status_text;
33894 RAISE E_ROUTINE_ERRORS;
33895 END IF;
33896 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33897 l_end_time := dbms_utility.get_time;
33898 engine_debug('Elapsed time for calling QP_JAVA_ENGINE: '||(l_end_time - l_begin_time)/100);
33899 END IF;
33900 --------------END: Specific to Java Engine------------------
33901 END IF; -- DONE PL/SQL and JAVA ENGINE CALL SWITCH by yangli
33902
33903 --============START: Populate_Output() needed by Java and PL/SQL engine=============
33904 IF (G_TEMP_TABLE_INSERT_FLAG = G_YES and G_PUBLIC_API_CALL_FLAG = G_NO) THEN
33905 Populate_Output ( l_line_tbl,
33906 l_line_qual,
33907 l_line_attr_tbl,
33908 l_line_detail_tbl,
33909 l_line_detail_qual_tbl,
33910 l_line_detail_attr_tbl,
33911 l_related_lines_tbl);
33912
33913 x_line_tbl := l_line_tbl;
33914 x_line_qual := l_line_qual;
33915 x_line_attr_tbl := l_line_attr_tbl;
33916 x_line_detail_tbl := l_line_detail_tbl;
33917 x_line_detail_qual_tbl := l_line_detail_qual_tbl;
33918 x_line_detail_attr_tbl := l_line_detail_attr_tbl;
33919 x_related_lines_tbl := l_related_lines_tbl;
33920
33921 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33922 engine_debug('No of record in x_line_detail_attr_tbl: '|| x_line_detail_attr_tbl.count);
33923
33924 END IF;
33925 END IF;
33926 --===========END: Populate_Output() needed by both Java Engine and PL/SQL engine=======
33927
33928 --l_pricing_end_time := sysdate;
33929
33930 --l_pricing_end_time := dbms_utility.get_time;
33931
33932
33933 --l_time_difference := (l_pricing_end_time - l_pricing_start_time)/100 ;
33934
33935 --============START: Debug Viewer needed by Java and PL/SQL engine=============
33936 IF G_QP_DEBUG_PROFILE_VALUE = G_ENGINE_TIME_TRACE_ON THEN --3085171
33937 --added to note redo log
33938 begin
33939 select value into l_pricing_end_redo
33940 from v$mystat, v$statname
33941 where v$mystat.statistic# = v$statname.statistic#
33942 and v$statname.name = 'redo size';
33943 exception
33944 when others then
33945 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33946 engine_debug('Error in looking up redo end '||SQLERRM);
33947 END IF;
33948 end;
33949 END IF;
33950
33951 --hw
33952 -- change session time and session redo
33953 g_start_time := g_total_time;
33954 g_start_redo := g_total_redo;
33955 g_total_time := g_total_time + (dbms_utility.get_time - l_pricing_start_time)/100;
33956 g_total_redo := g_total_redo + (l_pricing_end_redo - l_pricing_start_redo);
33957
33958 --Changes for bug2961617
33959 /*
33960 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 ';
33961 */
33962
33963 IF G_QP_DEBUG_PROFILE_VALUE = G_ENGINE_TIME_TRACE_ON THEN --3085171
33964 BEGIN
33965
33966 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 ';
33967 /*
33968 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;
33969 */
33970
33971 EXCEPTION
33972
33973 WHEN OTHERS THEN
33974 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33975 engine_debug('< In Price_Request procedure>. Failed to get time statistics');
33976 END IF;
33977 END;
33978 END IF;
33979
33980 /*
33981 l_redo_difference := l_pricing_end_redo - l_pricing_start_redo ;
33982
33983 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 ';
33984 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33985 engine_debug('redo log in GRP '||l_redo_difference);
33986 END IF;
33987 */
33988
33989 /* IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
33990 x_return_status := FND_API.G_RET_STS_ERROR;
33991 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
33992 engine_debug('< In Price_Request procedure>. Populate_Temp_Tables return with errors');
33993 END IF;
33994 RETURN;
33995 END IF; */
33996
33997 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
33998 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
33999 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
34000 QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES(p_control_rec,
34001 l_return_status,
34002 l_status_text
34003 );
34004 --x_return_status := l_return_status; -- fix bug 2756754
34005 --x_return_status_text := l_status_text; -- fix bug 2756754
34006 IF l_return_status = FND_API.G_RET_STS_ERROR THEN -- fix bug 2756754
34007 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34008 engine_debug('Error QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES: '||l_status_text);
34009 END IF; -- END IF G_DEBUG_ENGINE
34010 RAISE E_DEBUG_ROUTINE_ERROR; -- fix bug 2756754, dbg error should not be an hard error
34011 END IF;
34012 END IF;
34013 END IF;
34014
34015 -- added global condition for caching - hwong
34016 G_NEW_PRICING_CALL := G_YES;
34017 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34018 engine_debug('hw/pre: change to g_yes');
34019
34020 engine_debug('***Exiting Oracle Pricing***');
34021
34022 END IF;
34023 --============END: Debug Viewer needed by Java and PL/SQL engine=============
34024
34025 qp_debug_util.tstop('ENGINE_CALL_QPXGPREB');
34026
34027 EXCEPTION
34028 WHEN E_SEARCH_FLAG_IS_NULL THEN
34029 x_return_status := FND_API.G_RET_STS_ERROR;
34030 x_return_status_text := 'The search flag on qp_event_phase is null for phase '||l_pricing_phase_id;
34031 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34032 engine_debug( 'The search flag on qp_event_phase is null for phase '||l_pricing_phase_id);
34033 END IF;
34034 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
34035 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
34036 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
34037 QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES(p_control_rec,
34038 l_return_status,
34039 l_status_text
34040 );
34041 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
34042 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34043 engine_debug('Error occured in Debug Routine: ' || l_status_text);
34044 END IF;
34045 END IF;
34046 END IF;
34047 END IF;
34048 WHEN E_INVALID_CONTROL_RECORD THEN
34049 x_return_status := FND_API.G_RET_STS_ERROR;
34050 x_return_status_text := 'INVALID CONTROL RECORD';
34051
34052 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
34053 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
34054 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
34055 QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES(p_control_rec,
34056 l_return_status,
34057 l_status_text
34058 );
34059 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
34060 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34061 engine_debug('Error occured in Debug Routine: ' || l_return_status);
34062 END IF;
34063 END IF;
34064 END IF;
34065 END IF;
34066 WHEN E_ROUTINE_ERRORS THEN
34067 x_return_status := FND_API.G_RET_STS_ERROR;
34068 x_return_status_text := l_status_text;
34069 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34070 engine_debug(l_status_text);
34071
34072 END IF;
34073 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
34074 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
34075 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
34076 QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES(p_control_rec,
34077 l_return_status,
34078 l_status_text
34079 );
34080 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
34081 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34082 engine_debug('Error occured in Debug Routine: ' || l_status_text);
34083 END IF;
34084 END IF;
34085 END IF;
34086 END IF;
34087 WHEN E_INVALID_PHASE THEN
34088 x_return_status := FND_API.G_RET_STS_ERROR;
34089 x_return_status_text := 'Invalid phase sequence for Price List phase, Check setup data';
34090 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34091 engine_debug('Invalid phase sequence for Price List phase');
34092
34093 END IF;
34094 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
34095 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
34096 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
34097 QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES(p_control_rec,
34098 l_return_status,
34099 l_status_text
34100 );
34101 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
34102 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34103 engine_debug('Error occured in Debug Routine: ' || l_status_text);
34104 END IF;
34105 END IF;
34106 END IF;
34107 END IF;
34108 WHEN E_NO_SOURCE_SYSTEM THEN
34109 x_return_status := FND_API.G_RET_STS_ERROR;
34110 x_return_status_text := ('No source system found for your request type');
34111 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34112 engine_debug('No source system found for your request type');
34113
34114 END IF;
34115 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
34116 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
34117 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
34118 QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES(p_control_rec,
34119 l_return_status,
34120 l_status_text
34121 );
34122 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
34123 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34124 engine_debug('Error occured in Debug Routine: ' || l_status_text);
34125 END IF;
34126 END IF;
34127 END IF;
34128 END IF;
34129 --fix bug 2756754
34130 WHEN E_DEBUG_ROUTINE_ERROR THEN
34131 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34132 engine_debug('Error occured in Debug Routine.');
34133 END IF;
34134
34135 WHEN OTHERS THEN
34136 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34137 engine_debug('In Price_Request: '||l_status_text||' '||SQLERRM);
34138 END IF;
34139 x_return_status := FND_API.G_RET_STS_ERROR;
34140 x_return_status_text := SQLERRM;
34141
34142 IF (G_QP_DEBUG_PROFILE_VALUE = G_YES) OR
34143 (G_QP_DEBUG_PROFILE_VALUE = G_DONT_WRITE_TO_DEBUG) THEN -- If qp debug is on
34144 IF (G_PUBLIC_API_CALL_FLAG = G_NO) THEN
34145 QP_COPY_DEBUG_PVT.WRITE_TO_DEBUG_TABLES(p_control_rec,
34146 l_return_status,
34147 l_status_text
34148 );
34149 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
34150 IF G_DEBUG_ENGINE = FND_API.G_TRUE THEN
34151 engine_debug('Error occured in Debug Routine: ' || l_status_text);
34152 END IF;
34153 END IF;
34154 END IF;
34155 END IF;
34156 END PRICE_REQUEST;
34157
34158 END QP_PREQ_GRP;