1 PACKAGE BODY QP_Validate_Modifiers AS
2 /* $Header: QPXLMLLB.pls 120.3.12000000.2 2007/04/26 04:59:24 rassharm ship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'QP_Validate_Modifiers';
7
8 -- Procedure Entity
9
10 PROCEDURE Entity
11 ( x_return_status OUT NOCOPY VARCHAR2
12 , p_MODIFIERS_rec IN QP_Modifiers_PUB.Modifiers_Rec_Type
13 , p_old_MODIFIERS_rec IN QP_Modifiers_PUB.Modifiers_Rec_Type :=
14 QP_Modifiers_PUB.G_MISS_MODIFIERS_REC
15 )
16 IS
17 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
18 l_organization_id NUMBER;
19 l_context_flag VARCHAR2(1);
20 l_attribute_flag VARCHAR2(1);
21 l_value_flag VARCHAR2(1);
22 l_datatype VARCHAR2(1);
23 l_precedence NUMBER;
24 l_dummy_1 VARCHAR2(1);
25 l_dummy_3 VARCHAR2(1);
26 l_charge_type_subtype VARCHAR2(1);
27 l_dummy_2 VARCHAR2(3);
28 l_dummy_4 VARCHAR2(3);
29 l_dummy_5 NUMBER;
30 l_error_code NUMBER;
31 l_uom_code VARCHAR2(3);
32 l_list_type_code VARCHAR2(30);
33 l_ask_for_flag VARCHAR2(1);
34 l_start_date_active DATE;
35 l_end_date_active DATE;
36 l_phase_sequence NUMBER;
37 l_primary_list_line_type_code VARCHAR2(30);
38 l_qp_accrual_uom_class VARCHAR2(10);
39 l_qp_status VARCHAR2(1);
40 l_gsa_indicator VARCHAR2(1);
41 l_arithmetic_operator VARCHAR2(30);
42 l_list_line_type_code VARCHAR2(30); -- Bug 2862465
43 l_qualification_ind NUMBER; -- Bug 2862465
44 l_phase_price_evt VARCHAR2(1):='N'; --Bug 2724502
45 l_phase_freeze_set VARCHAR2(1):='N'; --Bug 1748272
46 l_modifier_level_code VARCHAR2(30); --Bug 2835156
47 l_rltd_exist VARCHAR2(1); --Bug 2835156
48 l_profile_pte_code qp_list_headers_b.pte_code%type:=fnd_profile.value('QP_PRICING_TRANSACTION_ENTITY');
49 l_profile_source_system_code qp_list_headers_b.source_system_code%type := fnd_profile.value('QP_SOURCE_SYSTEM_CODE');
50
51 BEGIN
52
53 oe_debug_pub.add('BEGIN Entity in QPXLMLLB');
54
55 -- Check whether Source System Code matches
56 -- mkarya for bug 1728764, Prevent update of Trade Management Data in QP
57 QP_UTIL.Check_Source_System_Code
58 (p_list_header_id => p_MODIFIERS_rec.list_header_id,
59 p_list_line_id => p_MODIFIERS_rec.list_line_id,
60 x_return_status => l_return_status
61 );
62
63 -- Check required attributes.
64
65 IF p_MODIFIERS_rec.list_line_id IS NULL
66 THEN
67
68 l_return_status := FND_API.G_RET_STS_ERROR;
69
70 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
71 THEN
72
73 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
74 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','list line id');
75 OE_MSG_PUB.Add;
76
77 END IF;
78
79 END IF;
80
81 --
82 -- Check rest of required attributes here.
83 --
84
85
86 IF p_MODIFIERS_rec.operation = QP_GLOBALS.G_OPR_UPDATE
87 THEN
88
89 IF p_old_MODIFIERS_rec.list_line_type_code IS NOT NULL
90 AND p_old_MODIFIERS_rec.list_line_type_code <> FND_API.G_MISS_CHAR
91 AND p_old_MODIFIERS_rec.list_line_type_code <> p_MODIFIERS_rec.list_line_type_code
92 THEN
93
94 l_return_status := FND_API.G_RET_STS_ERROR;
95
96 FND_MESSAGE.SET_NAME('QP','QP_CANNOT_UPDATE_LIST_LINE_TYP');
97 OE_MSG_PUB.Add;
98
99 END IF;
100
101 IF p_old_MODIFIERS_rec.modifier_level_code IS NOT NULL
102 AND p_old_MODIFIERS_rec.modifier_level_code <> FND_API.G_MISS_CHAR
103 AND p_old_MODIFIERS_rec.modifier_level_code <> p_MODIFIERS_rec.modifier_level_code
104 THEN
105
106 l_return_status := FND_API.G_RET_STS_ERROR;
107
108 FND_MESSAGE.SET_NAME('QP','QP_CANNOT_UPDATE_MOD_LVL');
109 OE_MSG_PUB.Add;
110
111 END IF;
112
113 IF p_old_MODIFIERS_rec.list_line_no IS NOT NULL
114 AND p_old_MODIFIERS_rec.list_line_no <> FND_API.G_MISS_CHAR
115 AND p_old_MODIFIERS_rec.list_line_no <> p_MODIFIERS_rec.list_line_no
116 THEN
117
118 l_return_status := FND_API.G_RET_STS_ERROR;
119
120 FND_MESSAGE.SET_NAME('QP','QP_CANNOT_UPDATE_LIST_LINE_NO');
121 OE_MSG_PUB.Add;
122
123 END IF;
124 IF (p_old_MODIFIERS_rec.proration_type_code IS NOT NULL OR
125 p_old_MODIFIERS_rec.list_line_type_code = 'FREIGHT_CHARGE')
126 AND nvl(p_old_MODIFIERS_rec.proration_type_code,'X') <> nvl(p_MODIFIERS_rec.proration_type_code,'X')
127 THEN
128
129 l_return_status := FND_API.G_RET_STS_ERROR;
130
131 FND_MESSAGE.SET_NAME('QP','QP_CANNOT_UPDATE_ATTRIBUTE');
132 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Proration Type Code');
133
134 OE_MSG_PUB.Add;
135
136 END IF;
137 END IF;
138
139
140 IF p_MODIFIERS_rec.list_line_type_code <> 'PMR' THEN
141
142 BEGIN
143
144
145 SELECT LIST_TYPE_CODE, ASK_FOR_FLAG, START_DATE_ACTIVE, END_DATE_ACTIVE,GSA_INDICATOR
146 INTO l_list_type_code, l_ask_for_flag, l_start_date_active, l_end_date_active, l_gsa_indicator
147 FROM QP_LIST_HEADERS_B
148 WHERE LIST_HEADER_ID = p_MODIFIERS_rec.list_header_id;
149
150 EXCEPTION
151 WHEN NO_DATA_FOUND THEN
152 null;
153
154 END;
155
156 END IF;
157
158
159 oe_debug_pub.add('11');
160
161 /* List Line Type Code is mandatory and these are the types applicable for Modifiers */
162
163 IF p_MODIFIERS_rec.list_line_type_code IS NULL
164 THEN
165
166 oe_debug_pub.add('list line type code manda');
167 l_return_status := FND_API.G_RET_STS_ERROR;
168
169 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
170 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('LIST_LINE_TYPE_CODE')); -- Fix For Bug-1974413
171 OE_MSG_PUB.Add;
172
173 END IF;
174
175 IF l_gsa_indicator IS NULL
176 THEN
177
178 l_qp_status := QP_UTIL.GET_QP_STATUS;
179
180 IF ( l_qp_status = 'I' AND
181 p_MODIFIERS_rec.list_line_type_code <> 'DIS' AND
182 p_MODIFIERS_rec.list_line_type_code <> 'CIE' AND
183 p_MODIFIERS_rec.list_line_type_code <> 'OID' AND
184 p_MODIFIERS_rec.list_line_type_code <> 'PRG' AND
185 p_MODIFIERS_rec.list_line_type_code <> 'RLTD' AND
186 p_MODIFIERS_rec.list_line_type_code <> 'TSN' AND
187 p_MODIFIERS_rec.list_line_type_code <> 'SUR' AND
188 p_MODIFIERS_rec.list_line_type_code <> 'PBH' AND
189 p_MODIFIERS_rec.list_line_type_code <> 'PMR' AND
190 p_MODIFIERS_rec.list_line_type_code <> 'FREIGHT_CHARGE' AND
191 p_MODIFIERS_rec.list_line_type_code <> 'IUE' )
192 THEN
193
194
195 oe_debug_pub.add('list line type code invalid');
196 l_return_status := FND_API.G_RET_STS_ERROR;
197
198 FND_MESSAGE.SET_NAME('QP','QP_INVALID_LIST_LINE_TYPE');
199 OE_MSG_PUB.Add;
200
201 END IF;
202
203 -- For bug 2363065, raise the error in basic pricing if not called from FTE
204 IF p_MODIFIERS_rec.list_line_type_code <> 'PMR' THEN
205 IF ( l_qp_status = 'S' AND
206 QP_MOD_LOADER_PUB.G_PROCESS_LST_REQ_TYPE <> 'FTE' AND
207 p_MODIFIERS_rec.list_line_type_code <> 'DIS' AND
208 p_MODIFIERS_rec.list_line_type_code <> 'PBH' AND
209 p_MODIFIERS_rec.list_line_type_code <> 'SUR' AND
210 p_MODIFIERS_rec.list_line_type_code <> 'FREIGHT_CHARGE')
211 THEN
212
213
214 oe_debug_pub.add('list line type code invalid');
215 l_return_status := FND_API.G_RET_STS_ERROR;
216
217 FND_MESSAGE.SET_NAME('QP','QP_INVALID_LIST_LINE_TYPE');
218 OE_MSG_PUB.Add;
219
220 END IF;
221 END IF;
222
223 END IF;
224
225 IF p_MODIFIERS_rec.list_line_type_code <> 'PMR' THEN
226 IF l_gsa_indicator = 'Y'
227 AND p_MODIFIERS_rec.list_line_type_code <> 'DIS'
228 THEN
229
230 l_return_status := FND_API.G_RET_STS_ERROR;
231
232 FND_MESSAGE.SET_NAME('QP','QP_INVALID_LIST_LINE_TYPE');
233 OE_MSG_PUB.Add;
234
235 END IF;
236 END IF;
237
238
239 IF p_MODIFIERS_rec.list_line_type_code <> 'PMR' THEN
240 IF p_MODIFIERS_rec.from_rltd_modifier_id IS NOT NULL
241 AND p_MODIFIERS_rec.to_rltd_modifier_id IS NOT NULL
242 THEN
243
244 BEGIN
245 SELECT LIST_LINE_TYPE_CODE
246 INTO l_primary_list_line_type_code
247 FROM QP_LIST_LINES
248 WHERE LIST_LINE_ID = p_MODIFIERS_rec.from_rltd_modifier_id;
249
250 EXCEPTION
251 WHEN NO_DATA_FOUND THEN
252 null;
253
254 END;
255
256 END IF;
257
258 /* Validate that the Modifier type period is within the the Modifier period */
259
260 IF l_start_date_active IS NOT NULL
261 AND p_MODIFIERS_rec.start_date_active IS NOT NULL
262 AND p_MODIFIERS_rec.start_date_active < l_start_date_active
263 THEN
264
265 l_return_status := FND_API.G_RET_STS_ERROR;
266 FND_MESSAGE.SET_NAME('QP','QP_MOD_DATES_WITHIN_MODLIST');
267 OE_MSG_PUB.Add;
268
269 END IF;
270
271 IF l_end_date_active IS NOT NULL
272 AND p_MODIFIERS_rec.end_date_active IS NOT NULL
273 AND p_MODIFIERS_rec.end_date_active > l_end_date_active
274 THEN
275
276 l_return_status := FND_API.G_RET_STS_ERROR;
277 FND_MESSAGE.SET_NAME('QP','QP_MOD_DATES_WITHIN_MODLIST');
278 OE_MSG_PUB.Add;
279
280 END IF;
281
282 IF l_start_date_active IS NOT NULL
283 AND p_MODIFIERS_rec.end_date_active IS NOT NULL
284 AND p_MODIFIERS_rec.end_date_active < l_start_date_active
285 THEN
286
287 l_return_status := FND_API.G_RET_STS_ERROR;
288 FND_MESSAGE.SET_NAME('QP','QP_MOD_DATES_WITHIN_MODLIST');
289 OE_MSG_PUB.Add;
290
291 END IF;
292
293 IF l_end_date_active IS NOT NULL
294 AND p_MODIFIERS_rec.start_date_active IS NOT NULL
295 AND p_MODIFIERS_rec.start_date_active > l_end_date_active
296 THEN
297
298 l_return_status := FND_API.G_RET_STS_ERROR;
299 FND_MESSAGE.SET_NAME('QP','QP_MOD_DATES_WITHIN_MODLIST');
300 OE_MSG_PUB.Add;
301
302 END IF;
303 END IF; -- list_line_type_code <> 'PMR'
304
305
306 /* The only list_line_type_code applicable for CHARGES is FREIGHT_CHARGE */
307
308 IF (l_list_type_code = 'CHARGES'
309 AND p_MODIFIERS_rec.list_line_type_code <> 'FREIGHT_CHARGE')
310 OR (p_MODIFIERS_rec.list_line_type_code = 'FREIGHT_CHARGE'
311 AND l_list_type_code <> 'CHARGES')
312 THEN
313
314 l_return_status := FND_API.G_RET_STS_ERROR;
315 FND_MESSAGE.SET_NAME('QP','QP_FRT_CHRG_ALLOW_CHRGS');
316 OE_MSG_PUB.Add;
317
318 END IF;
319
320 /* If Ask_For_Flag is entered, list_line_no is mandatory for these list types */
321
322 IF ( p_MODIFIERS_rec.list_line_type_code = 'DIS' OR
323 p_MODIFIERS_rec.list_line_type_code = 'SUR' OR
324 p_MODIFIERS_rec.list_line_type_code = 'OID' OR
325 p_MODIFIERS_rec.list_line_type_code = 'PRG' OR
326 p_MODIFIERS_rec.list_line_type_code = 'IUE' OR
327 p_MODIFIERS_rec.list_line_type_code = 'TSN' OR
328 p_MODIFIERS_rec.list_line_type_code = 'PBH' ) AND
329 p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL AND
330 p_MODIFIERS_rec.list_line_no IS NULL AND
331 l_ask_for_flag = 'Y'
332
333 THEN
334 l_return_status := FND_API.G_RET_STS_ERROR;
335
336 FND_MESSAGE.SET_NAME('QP','QP_LIST_NO_MAND_IF_ASK_FOR');
337 OE_MSG_PUB.Add;
338
339 END IF;
340
341 /* List_line_no is mandatory for Coupon Issue */
342
343 IF p_MODIFIERS_rec.list_line_type_code = 'CIE' AND
344 p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL AND
345 p_MODIFIERS_rec.list_line_no IS NULL
346
347 THEN
348 l_return_status := FND_API.G_RET_STS_ERROR;
349
350 FND_MESSAGE.SET_NAME('QP','QP_LIST_NO_MAND_FOR_CIE');
351 OE_MSG_PUB.Add;
352
353 END IF;
354
355 --dbms_output.put_line('1');
356 oe_debug_pub.add('22');
357
358 /* Automatic Flag is mandatory for these Modifier types */
359
360 IF ( p_MODIFIERS_rec.list_line_type_code = 'DIS' OR
361 p_MODIFIERS_rec.list_line_type_code = 'SUR' OR
362 p_MODIFIERS_rec.list_line_type_code = 'OID' OR
363 p_MODIFIERS_rec.list_line_type_code = 'PRG' OR
364 p_MODIFIERS_rec.list_line_type_code = 'CIE' OR
365 p_MODIFIERS_rec.list_line_type_code = 'IUE' OR
366 p_MODIFIERS_rec.list_line_type_code = 'TSN' OR
367 p_MODIFIERS_rec.list_line_type_code = 'FREIGHT_CHARGE' OR
368 p_MODIFIERS_rec.list_line_type_code = 'PBH' ) AND
369 p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL AND
370 p_MODIFIERS_rec.automatic_flag is NULL
371
372 THEN
373 oe_debug_pub.add('auto flag mand');
374 l_return_status := FND_API.G_RET_STS_ERROR;
375
376 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
377 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('AUTOMATIC_FLAG')); -- Fix For Bug-1974413
378 OE_MSG_PUB.Add;
379
380 END IF;
381
382 IF p_MODIFIERS_rec.list_line_type_code <> 'PMR' THEN
383 IF p_MODIFIERS_rec.automatic_flag IS NOT NULL
384 AND p_MODIFIERS_rec.automatic_flag <> 'Y'
385 AND p_MODIFIERS_rec.automatic_flag <> 'N'
386 THEN
387
388 oe_debug_pub.add('auto flag invalid');
389 l_return_status := FND_API.G_RET_STS_ERROR;
390
391 FND_MESSAGE.SET_NAME('QP','QP_AUTO_FLAG_Y_OR_N');
392 OE_MSG_PUB.Add;
393
394 END IF;
395
396 /* Automatic flag is mandatory for all Benefit lines */
397
398 IF p_MODIFIERS_rec.list_line_type_code <> 'RLTD'
399 AND p_MODIFIERS_rec.rltd_modifier_grp_type IS NOT NULL
400 AND p_MODIFIERS_rec.automatic_flag IS NULL
401 THEN
402
403 l_return_status := FND_API.G_RET_STS_ERROR;
404
405 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
406 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('AUTOMATIC_FLAG')); -- Fix For Bug-1974413
407 OE_MSG_PUB.Add;
408
409 END IF;
410
411 /* Automatic Flag must be Y for OID, PRG, CIE and PBH */
412
413 IF ( p_MODIFIERS_rec.list_line_type_code = 'OID' OR
414 --p_MODIFIERS_rec.list_line_type_code = 'PBH' OR -- changes made by spgopal to allow manual breaks bug 1407684
415 p_MODIFIERS_rec.list_line_type_code = 'PRG' OR
416 p_MODIFIERS_rec.list_line_type_code = 'CIE' ) AND
417 p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL AND
418 p_MODIFIERS_rec.automatic_flag <> 'Y'
419
420 THEN
421
422 l_return_status := FND_API.G_RET_STS_ERROR;
423
424 FND_MESSAGE.SET_NAME('QP','QP_AUTO_FLAG_MUST_BE_Y');
425 OE_MSG_PUB.Add;
426
427 END IF;
428
429 /* Only Discount, Surcharge and Freight Charge can be manual or automatic. Other Discount types can always be automatic */
430 /* changes by spgopal bug 1407648 manual overrideable price breaks are allowed R11 functionality*/
431
432 IF ( p_MODIFIERS_rec.list_line_type_code <> 'DIS' AND
433 p_MODIFIERS_rec.list_line_type_code <> 'SUR' AND
434 p_MODIFIERS_rec.list_line_type_code <> 'PBH' AND
435 p_MODIFIERS_rec.list_line_type_code <> 'FREIGHT_CHARGE' AND
436 p_MODIFIERS_rec.automatic_flag = 'N' )
437
438 THEN
439
440 l_return_status := FND_API.G_RET_STS_ERROR;
441
442 FND_MESSAGE.SET_NAME('QP','QP_DIS_SUR_FREIGHT_MANUAL');
443 OE_MSG_PUB.Add;
444
445 END IF;
446
447 END IF; -- list_line_type_code <> 'PMR'
448
449 --dbms_output.put_line('2');
450 oe_debug_pub.add('33');
451
452 /* Modifier Level Code is mandatory for all list lines except for Price Modifier and related*/
453
454 IF p_MODIFIERS_rec.list_line_type_code <> 'PMR'
455 AND p_MODIFIERS_rec.list_line_type_code <> 'RLTD'
456 THEN
457 IF p_MODIFIERS_rec.modifier_level_code IS NULL
458 THEN
459
460 oe_debug_pub.add('modifier level manda');
461 l_return_status := FND_API.G_RET_STS_ERROR;
462
463 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
464 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('MODIFIER_LEVEL_CODE')); --Fix For Bug-1974413
465 OE_MSG_PUB.Add;
466
467
468 ELSIF (p_MODIFIERS_rec.modifier_level_code = 'ORDER'
469 AND p_MODIFIERS_rec.pricing_group_sequence IS NOT NULL
470 AND QP_UTIL.get_qp_status = 'I') THEN
471 --Order level modifiers must have null pricing group sequence(bucket)
472 --added on request by jholla due to invoicing problems in OM for orde
473 --level modifiers
474 /* Bug 1957062 Check Bypassed for Basic Pricing */
475
476 l_return_status := FND_API.G_RET_STS_ERROR;
477 FND_MESSAGE.SET_NAME('QP','QP_ORD_LVL_NULL_BUCKET');
478 OE_MSG_PUB.Add;
479
480
481 /* Modifier Level Code can be LINE, ORDER or LINEGROUP */
482
483 ELSIF ( p_MODIFIERS_rec.modifier_level_code <> 'LINE' AND
484 p_MODIFIERS_rec.modifier_level_code <> 'ORDER' AND
485 p_MODIFIERS_rec.modifier_level_code <> 'LINEGROUP' )
486 THEN
487
488 oe_debug_pub.add('modifier level invalid');
489 l_return_status := FND_API.G_RET_STS_ERROR;
490
491 FND_MESSAGE.SET_NAME('QP','QP_MOD_LVL_LN_LNGRP_OR_ORD');
492 OE_MSG_PUB.Add;
493
494 END IF;
495
496 /* Modifier Level Code can be LINE or ORDER for list line type of Freight Charge and Terms Substitution */
497
498 IF ( p_MODIFIERS_rec.list_line_type_code = 'FREIGHT_CHARGE'
499 OR p_MODIFIERS_rec.list_line_type_code = 'TSN')
500 AND p_MODIFIERS_rec.modifier_level_code <> 'LINE'
501 AND p_MODIFIERS_rec.modifier_level_code <> 'ORDER'
502 THEN
503
504 l_return_status := FND_API.G_RET_STS_ERROR;
505
506 FND_MESSAGE.SET_NAME('QP','QP_MOD_LVL_LN_OR_ORD');
507 OE_MSG_PUB.Add;
508
509 END IF;
510
511 /* Modifier Level Code can be LINE or LINEGROUP for list line type of Price Break Header and Other Item Discount */
512
513 IF ( p_MODIFIERS_rec.list_line_type_code = 'PBH'
514 OR p_MODIFIERS_rec.list_line_type_code = 'OID')
515 AND p_MODIFIERS_rec.modifier_level_code <> 'LINE'
516 AND p_MODIFIERS_rec.modifier_level_code <> 'LINEGROUP'
517 THEN
518
519 l_return_status := FND_API.G_RET_STS_ERROR;
520
521 IF QP_UTIL.get_qp_status = 'I' THEN
522 FND_MESSAGE.SET_NAME('QP','QP_MOD_LVL_LN_OR_LNGRP');
523 ELSE
524 FND_MESSAGE.SET_NAME('QP','QP_MOD_LVL_LN');
525 END IF;
526 OE_MSG_PUB.Add;
527
528 END IF;
529
530 /* Modifier Level Code can be LINE for list line type of Item Upgrade */
531
532 IF p_MODIFIERS_rec.list_line_type_code = 'IUE'
533 AND p_MODIFIERS_rec.modifier_level_code <> 'LINE'
534 THEN
535
536 l_return_status := FND_API.G_RET_STS_ERROR;
537
538 FND_MESSAGE.SET_NAME('QP','QP_MOD_LVL_LN');
539 OE_MSG_PUB.Add;
540
541 END IF;
542
543 /* Modifier Level Code can be LINE for GSA discounts */
544
545 IF l_gsa_indicator = 'Y'
546 AND p_MODIFIERS_rec.modifier_level_code <> 'LINE'
547 THEN
548
549 l_return_status := FND_API.G_RET_STS_ERROR;
550
551 FND_MESSAGE.SET_NAME('QP','QP_MOD_LVL_LN');
552 OE_MSG_PUB.Add;
553
554 END IF;
555
556 END IF; -- list_line_type_code <> 'PMR' and list_line_type_code <> 'RLTD'
557
558
559 IF (p_MODIFIERS_rec.list_line_type_code = 'DIS' OR
560 p_MODIFIERS_rec.list_line_type_code = 'SUR' OR
561 p_MODIFIERS_rec.list_line_type_code = 'FREIGHT_CHARGE') AND
562 p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL AND
563 p_MODIFIERS_rec.operand IS NULL AND
564 p_MODIFIERS_rec.price_by_formula_id IS NULL
565 THEN
566
567 oe_debug_pub.add('arith op mand');
568 l_return_status := FND_API.G_RET_STS_ERROR;
569
570 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
571 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('PRICE_BY_FORMULA_ID')); -- Fix For Bug-1974413
572 OE_MSG_PUB.Add;
573
574 END IF;
575
576 /* Arithmetic Operator is mandatory for these Qualifier list lines */
577
578 oe_debug_pub.add('44');
579 IF p_MODIFIERS_rec.list_line_type_code <> 'PMR' THEN
580 IF (p_MODIFIERS_rec.list_line_type_code = 'DIS' OR
581 p_MODIFIERS_rec.list_line_type_code = 'SUR' OR
582 p_MODIFIERS_rec.list_line_type_code = 'FREIGHT_CHARGE') AND
583 p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL AND
584 p_MODIFIERS_rec.arithmetic_operator IS NULL
585 THEN
586
587 oe_debug_pub.add('arith op mand');
588 l_return_status := FND_API.G_RET_STS_ERROR;
589
590 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
591 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('ARITHMETIC_OPERATOR')); -- Fix For Bug-1974413
592 OE_MSG_PUB.Add;
593
594 END IF;
595
596 /* Arithmetic Operator is mandatory for these Benefit list lines */
597
598 oe_debug_pub.add('list line = '||p_MODIFIERS_rec.list_line_type_code);
599 oe_debug_pub.add('group type = '||p_MODIFIERS_rec.rltd_modifier_grp_type);
600 oe_debug_pub.add('arithme oper = '||p_MODIFIERS_rec.arithmetic_operator);
601
602
603 IF p_MODIFIERS_rec.list_line_type_code <> 'PRG' AND
604 p_MODIFIERS_rec.list_line_type_code <> 'RLTD' AND
605 p_MODIFIERS_rec.list_line_type_code <> 'CIE' AND
606 p_MODIFIERS_rec.rltd_modifier_grp_type IS NOT NULL AND
607 p_MODIFIERS_rec.arithmetic_operator IS NULL
608 THEN
609
610 oe_debug_pub.add('arith op mand');
611 l_return_status := FND_API.G_RET_STS_ERROR;
612
613 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
614 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('ARITHMETIC_OPERATOR')); -- Fix For Bug-1974413
615 OE_MSG_PUB.Add;
616
617 END IF;
618
619 /* For Order level discounts, only lumpsum is allowed for Freight Charge */
620
621 IF p_MODIFIERS_rec.list_line_type_code = 'FREIGHT_CHARGE' AND
622 p_MODIFIERS_rec.modifier_level_code = 'ORDER' AND
623 p_MODIFIERS_rec.arithmetic_operator <> 'LUMPSUM'
624 THEN
625
626 oe_debug_pub.add('arith op mand');
627 l_return_status := FND_API.G_RET_STS_ERROR;
628
629 FND_MESSAGE.SET_NAME('QP','QP_LUMPSUM_FOR_ORDER');
630 OE_MSG_PUB.Add;
631
632 END IF;
633
634 /* Arithmetic Operators applicable for list line type FREIGHT_CHARGE are % and AMT modified by spgopal also lumpsum for freight charge at line level*/
635
636 IF ( p_MODIFIERS_rec.list_line_type_code = 'FREIGHT_CHARGE' AND
637 p_MODIFIERS_rec.modifier_level_code <> 'ORDER' AND
638 p_MODIFIERS_rec.arithmetic_operator <> '%' AND
639 p_MODIFIERS_rec.arithmetic_operator <> 'LUMPSUM' AND
640 p_MODIFIERS_rec.arithmetic_operator <> 'AMT' )
641 THEN
642
643 l_return_status := FND_API.G_RET_STS_ERROR;
644
645 FND_MESSAGE.SET_NAME('QP','QP_DIS_PERCNT_OR_AMT');
646 OE_MSG_PUB.Add;
647
648 END IF;
649
650 /* For Order level discounts, only % is allowed for all discounts except for Freight Charge */
651
652 IF p_MODIFIERS_rec.list_line_type_code <> 'FREIGHT_CHARGE' AND
653 p_MODIFIERS_rec.modifier_level_code = 'ORDER' AND
654 p_MODIFIERS_rec.arithmetic_operator <> '%'
655 THEN
656
657 oe_debug_pub.add('arith op mand');
658 l_return_status := FND_API.G_RET_STS_ERROR;
659
660 FND_MESSAGE.SET_NAME('QP','QP_PERCENT_FOR_ORDER');
661 OE_MSG_PUB.Add;
662
663 END IF;
664
665 /* Operand is mandatory for these Benefit list lines */
666
667 oe_debug_pub.add('list line = '||p_MODIFIERS_rec.list_line_type_code);
668 oe_debug_pub.add('group type = '||p_MODIFIERS_rec.rltd_modifier_grp_type);
669 oe_debug_pub.add('operand = '||to_char(p_MODIFIERS_rec.operand));
670 oe_debug_pub.add('formula = '||to_char(p_MODIFIERS_rec.price_by_formula_id));
671
672 IF p_MODIFIERS_rec.list_line_type_code <> 'PRG' AND
673 p_MODIFIERS_rec.list_line_type_code <> 'RLTD' AND
674 p_MODIFIERS_rec.list_line_type_code <> 'CIE' AND
675 p_MODIFIERS_rec.rltd_modifier_grp_type IS NOT NULL AND
676 p_MODIFIERS_rec.operand IS NULL AND
677 p_MODIFIERS_rec.price_by_formula_id IS NULL
678 THEN
679
680 oe_debug_pub.add('arith op mand');
681 l_return_status := FND_API.G_RET_STS_ERROR;
682
683 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
684 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('PRICE_BY_FORMULA_ID')); -- Fix For Bug-1974413
685 OE_MSG_PUB.Add;
686
687 END IF;
688
689
690 /* Arithmetic Operator can only be NEWPRICE for GSA Discounts */
691
692 IF l_gsa_indicator = 'Y'
693 AND p_MODIFIERS_rec.arithmetic_operator <> 'NEWPRICE'
694 THEN
695
696 l_return_status := FND_API.G_RET_STS_ERROR;
697
698 FND_MESSAGE.SET_NAME('QP','QP_GSA_NEWPRICE_ONLY');
699 OE_MSG_PUB.Add;
700
701 END IF;
702
703 /* Arithmetic Operator can be %, AMT or NEWPRICE */
704
705 IF ( p_MODIFIERS_rec.arithmetic_operator IS NOT NULL AND
706 p_MODIFIERS_rec.arithmetic_operator <> '%' AND
707 p_MODIFIERS_rec.arithmetic_operator <> 'AMT' AND
708 p_MODIFIERS_rec.arithmetic_operator <> 'NEWPRICE' AND
709 p_MODIFIERS_rec.arithmetic_operator <> 'BREAKUNIT_PRICE' AND
710 p_MODIFIERS_rec.arithmetic_operator <> 'BLOCK_PRICE' AND
711 p_MODIFIERS_rec.arithmetic_operator <> 'LUMPSUM' )
712 THEN
713
714 oe_debug_pub.add('arith op invalid');
715 l_return_status := FND_API.G_RET_STS_ERROR;
716
717 FND_MESSAGE.SET_NAME('QP','QP_DIS_PERCNT_AMT_OR_NEWPRICE');
718 OE_MSG_PUB.Add;
719
720 END IF;
721 END IF; -- list_line_type_code <> 'PMR'
722
723 --dbms_output.put_line('4');
724
725 /* Override Flag is mandatory for these Qualifier list lines */
726
727 IF p_MODIFIERS_rec.list_line_type_code <> 'PMR' THEN
728
729 IF ( p_MODIFIERS_rec.list_line_type_code = 'DIS' OR
730 p_MODIFIERS_rec.list_line_type_code = 'SUR' OR
731 p_MODIFIERS_rec.list_line_type_code = 'OID' OR
732 p_MODIFIERS_rec.list_line_type_code = 'PRG' OR
733 p_MODIFIERS_rec.list_line_type_code = 'IUE' OR
734 p_MODIFIERS_rec.list_line_type_code = 'TSN' OR
735 p_MODIFIERS_rec.list_line_type_code = 'FREIGHT_CHARGE' OR
736 p_MODIFIERS_rec.list_line_type_code = 'PBH' ) AND
737 p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL AND
738 p_MODIFIERS_rec.override_flag is NULL
739
740 THEN
741
742
743 oe_debug_pub.add('list line type code invalid');
744 l_return_status := FND_API.G_RET_STS_ERROR;
745
746 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
747 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('OVERRIDE_FLAG')); -- Fix For Bug-1974413
748 OE_MSG_PUB.Add;
749
750 END IF;
751
752 /* Override Flag can be Y or N */
753
754 IF ( p_MODIFIERS_rec.override_flag IS NOT NULL AND
755 p_MODIFIERS_rec.override_flag <> 'Y' AND
756 p_MODIFIERS_rec.override_flag <> 'N' )
757 THEN
758
759 oe_debug_pub.add('override flag invalid');
760 l_return_status := FND_API.G_RET_STS_ERROR;
761
762 FND_MESSAGE.SET_NAME('QP','QP_OVERRIDE_FLAG_Y_OR_N');
763 OE_MSG_PUB.Add;
764
765 END IF;
766
767 /* Override flag is mandatory for all Benefit lines */
768
769 IF p_MODIFIERS_rec.list_line_type_code <> 'RLTD'
770 AND p_MODIFIERS_rec.rltd_modifier_grp_type IS NOT NULL
771 AND p_MODIFIERS_rec.override_flag IS NULL
772 THEN
773
774 l_return_status := FND_API.G_RET_STS_ERROR;
775
776 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
777 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('OVERRIDE_FLAG')); -- Fix For Bug-1974413
778 OE_MSG_PUB.Add;
779
780 END IF;
781
782 /* Override Flag must be N for OID, PRG, CIE */
783
784 IF ( p_MODIFIERS_rec.list_line_type_code = 'OID' OR
785 -- p_MODIFIERS_rec.list_line_type_code = 'PBH' OR -- changed by spgopal
786 p_MODIFIERS_rec.list_line_type_code = 'PRG' OR
787 p_MODIFIERS_rec.list_line_type_code = 'CIE' ) AND
788 p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL AND
789 p_MODIFIERS_rec.override_flag <> 'N'
790
791 THEN
792
793 l_return_status := FND_API.G_RET_STS_ERROR;
794
795 FND_MESSAGE.SET_NAME('QP','QP_OVERRIDE_FLAG_MUST_BE_N');
796 OE_MSG_PUB.Add;
797
798
799 END IF;
800
801
802 /* PBH modifiers can be manual and overrideable
803 changes made by spgopal for bug 1407684 */
804
805 /* Print on invoice Flag is mandatory for these Qualifier list lines */
806
807 IF ( p_MODIFIERS_rec.list_line_type_code = 'DIS' OR
808 p_MODIFIERS_rec.list_line_type_code = 'SUR' OR
809 p_MODIFIERS_rec.list_line_type_code = 'OID' OR
810 p_MODIFIERS_rec.list_line_type_code = 'PRG' OR
811 p_MODIFIERS_rec.list_line_type_code = 'FREIGHT_CHARGE' OR
812 p_MODIFIERS_rec.list_line_type_code = 'PBH' ) AND
813 p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL AND
814 p_MODIFIERS_rec.print_on_invoice_flag is NULL
815
816 THEN
817
818
819 oe_debug_pub.add('list line type code invalid');
820 l_return_status := FND_API.G_RET_STS_ERROR;
821
822 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
823 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('PRINT_ON_INVOICE_FLAG')); -- Fix For Bug-1974413
824 OE_MSG_PUB.Add;
825
826 END IF;
827
828 /* Prine on Invoice Flag can be Y or N */
829
830 IF ( p_MODIFIERS_rec.print_on_invoice_flag IS NOT NULL AND
831 p_MODIFIERS_rec.print_on_invoice_flag <> 'Y' AND
832 p_MODIFIERS_rec.print_on_invoice_flag <> 'N' )
833 THEN
834
835 oe_debug_pub.add('print flag invalid');
836 l_return_status := FND_API.G_RET_STS_ERROR;
837
838 FND_MESSAGE.SET_NAME('QP','QP_PRNT_INV_FLAG_Y_OR_N');
839 OE_MSG_PUB.Add;
840
841 END IF;
842
843
844 END IF; --If list_line_type_code <> 'PMR'
845
846 --dbms_output.put_line('5');
847
848 /* End Date must be after the Start Date */
849
850 IF nvl( p_MODIFIERS_rec.start_date_active,to_date('01/01/1951','mm/dd/yyyy')) >
851 nvl( p_MODIFIERS_rec.end_date_active,to_date('12/31/9999','mm/dd/yyyy'))
852 THEN
853
854 oe_debug_pub.add('start date after end date');
855 l_return_status := FND_API.G_RET_STS_ERROR;
856
857 FND_MESSAGE.SET_NAME('QP','QP_STRT_DATE_BFR_END_DATE');
858 OE_MSG_PUB.Add;
859
860 END IF;
861
862 --dbms_output.put_line('6');
863
864 /* Substitution Context, Attribute and Value is mandatory for list line type of Term Substitution */
865
866 IF p_MODIFIERS_rec.list_line_type_code = 'TSN'
867 THEN
868
869 IF p_MODIFIERS_rec.substitution_context IS NULL
870 OR p_MODIFIERS_rec.substitution_attribute IS NULL
871 OR p_MODIFIERS_rec.substitution_value IS NULL
872 THEN
873
874 oe_debug_pub.add('sub con, attr, value mand');
875 l_return_status := FND_API.G_RET_STS_ERROR;
876
877 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
878 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Terms Attr and Terms Value');
879 OE_MSG_PUB.Add;
880
881 END IF;
882
883 oe_debug_pub.add('before valida subs');
884 oe_debug_pub.add('context = '||p_MODIFIERS_rec.substitution_context);
885 oe_debug_pub.add('attr = '||p_MODIFIERS_rec.substitution_attribute);
886 oe_debug_pub.add('value = '||p_MODIFIERS_rec.substitution_value);
887
888 /* Validating the Substitution Context, Attribute and Value */
889
890 QP_UTIL.validate_qp_flexfield(flexfield_name =>'QP_ATTR_DEFNS_QUALIFIER'
891 ,context =>p_MODIFIERS_rec.substitution_context
892 ,attribute =>p_MODIFIERS_rec.substitution_attribute
893 ,value =>p_MODIFIERS_rec.substitution_value
894 ,application_short_name => 'QP'
895 ,context_flag =>l_context_flag
896 ,attribute_flag =>l_attribute_flag
897 ,value_flag =>l_value_flag
898 ,datatype =>l_datatype
899 ,precedence =>l_precedence
900 ,error_code =>l_error_code
901 );
902
903 oe_debug_pub.add('error code = '||to_char(l_error_code));
904
905 If (l_context_flag = 'N' AND l_error_code = 7) -- invalid context
906 Then
907 l_return_status := FND_API.G_RET_STS_ERROR;
908
909 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
910 THEN
911
912 FND_MESSAGE.SET_NAME('QP','QP_INVALID_SUBSTITUTION_CONT' );
913 OE_MSG_PUB.Add;
914 END IF;
915
916 End If;
917
918 If (l_attribute_flag = 'N' AND l_error_code = 8) -- invalid attribute
919 Then
920 l_return_status := FND_API.G_RET_STS_ERROR;
921
922 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
923 THEN
924
925 FND_MESSAGE.SET_NAME('QP','QP_INVALID_SUBSTITUTION_ATTR' );
926 OE_MSG_PUB.Add;
927 END IF;
928
929 End If;
930
931 If (l_value_flag = 'N' AND l_error_code = 9) -- invalid value
932 Then
933 l_return_status := FND_API.G_RET_STS_ERROR;
934
935 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
936 THEN
937
938 FND_MESSAGE.SET_NAME('QP','QP_INVALID_SUBSTITUTION_VALUE' );
939 OE_MSG_PUB.Add;
940 END IF;
941
942 End If;
943
944 END IF; --list_line_type_code = 'TSN'
945
946 --dbms_output.put_line('7');
947
948 /* Inventory Item Id, Organization Id, Related Item Id and Relationship Type are mandatory for list line typr of Item Upgrade */
949
950 oe_debug_pub.add('inven item = '|| p_MODIFIERS_rec.inventory_item_id);
951 oe_debug_pub.add('org = '|| p_MODIFIERS_rec.organization_id);
952 oe_debug_pub.add('related item = '|| p_MODIFIERS_rec.related_item_id);
953 oe_debug_pub.add('relate = '|| p_MODIFIERS_rec.relationship_type_id);
954
955 IF p_MODIFIERS_rec.list_line_type_code = 'IUE'
956 THEN
957
958 IF p_MODIFIERS_rec.inventory_item_id IS NULL
959 OR p_MODIFIERS_rec.organization_id IS NULL
960 OR p_MODIFIERS_rec.related_item_id IS NULL
961 OR p_MODIFIERS_rec.relationship_type_id IS NULL
962 THEN
963
964 oe_debug_pub.add('itm , org, related item and rrelationship type manda');
965 l_return_status := FND_API.G_RET_STS_ERROR;
966
967 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
968 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Prod Attr Value and Upgrade Item');
969 OE_MSG_PUB.Add;
970
971 ELSE
972
973 BEGIN
974
975 /* Validating Inventory Item Id, Organization Id, Related Item Id and Relationship Type */
976
977 select 'X'
978 into l_dummy_3
979 from mtl_related_items_all_v
980 where inventory_item_id = p_MODIFIERS_rec.inventory_item_id
981 and organization_id = p_MODIFIERS_rec.organization_id
982 and related_item_id = p_MODIFIERS_rec.related_item_id
983 and relationship_type_id = 14;
984
985 EXCEPTION
986 WHEN NO_DATA_FOUND THEN
987 oe_debug_pub.add('item upgrade data is invalid');
988
989 l_return_status := FND_API.G_RET_STS_ERROR;
990
991 FND_MESSAGE.SET_NAME('QP','QP_INVALID_ITEM_UPGRD');
992 OE_MSG_PUB.Add;
993
994 END;
995
996 END IF;
997
998 END IF; --list_line_type_code = 'IUE'
999
1000 oe_debug_pub.add('55');
1001 --dbms_output.put_line('55');
1002
1003 --dbms_output.put_line('8');
1004
1005 /* THE CODE BELOW CHANGED BY SPGOPAL === 05/15/00 FOR REASONS AS MENTIONED */
1006
1007 /* Formula is applicable only at line level for list line type of Discount, Surcharge and Freight Charge*/
1008 /*Formula is applicable for order level freight charge, fix for bug 1527285*/
1009
1010 IF p_MODIFIERS_rec.list_line_type_code <> 'PMR' THEN
1011 IF p_MODIFIERS_rec.price_by_formula_id IS NOT NULL
1012 THEN
1013 IF p_MODIFIERS_rec.modifier_level_code IN ('ORDER', 'LINE')
1014 AND p_MODIFIERS_rec.list_line_type_code NOT IN ('DIS', 'SUR', 'FREIGHT_CHARGE') THEN
1015
1016 --dbms_output.put_line('formula id is applicable with DIS,SUR ');
1017 l_return_status := FND_API.G_RET_STS_ERROR;
1018
1019 FND_MESSAGE.SET_NAME('QP','QP_DIS_SUR_OR_FRT_FOR_FORMULA');
1020 OE_MSG_PUB.Add;
1021
1022 END IF;
1023
1024 /* The Get Condition of OID and PRG cannot have formula attached to it */
1025
1026 IF ((l_primary_list_line_type_code = 'OID'
1027 OR l_primary_list_line_type_code = 'PRG')
1028 AND p_MODIFIERS_rec.rltd_modifier_grp_type = 'BENEFIT')
1029 THEN
1030
1031 l_return_status := FND_API.G_RET_STS_ERROR;
1032
1033 FND_MESSAGE.SET_NAME('QP','QP_FORMULA_NOT_IN_GET');
1034 OE_MSG_PUB.Add;
1035
1036 END IF;
1037
1038 /* THE CODE BELOW CHANGED BY SPGOPAL === 05/15/00 FOR REASONS AS MENTIONED */
1039
1040
1041 /* The Arithmetic Operators applicable when a Formula is given are % and AMT and new price. New price was added to fix bug 1530483
1042 There is a problem with Freight Charge set up. Freight Charge modifier type requires arithmetic operator LUMPSUM in addition to % and AMT
1043 */
1044
1045 IF p_MODIFIERS_rec.arithmetic_operator <> '%'
1046 AND p_MODIFIERS_rec.arithmetic_operator <> 'AMT'
1047 AND p_MODIFIERS_rec.arithmetic_operator <> 'LUMPSUM'
1048 AND p_MODIFIERS_rec.arithmetic_operator <> 'NEWPRICE'
1049 THEN
1050
1051 --dbms_output.put_line('arith op can be % or AMT with formula');
1052 oe_debug_pub.add('arith oper % or AMT invalid');
1053 l_return_status := FND_API.G_RET_STS_ERROR;
1054
1055 FND_MESSAGE.SET_NAME('QP','QP_DIS_PERCNT_OR_AMT');
1056 OE_MSG_PUB.Add;
1057
1058 END IF;
1059
1060 --dbms_output.put_line('9');
1061
1062 BEGIN
1063
1064 /* Validating the Formula */
1065
1066 select 'X'
1067 into l_dummy_1
1068 from qp_price_formulas_b
1069 where price_formula_id = p_MODIFIERS_rec.price_by_formula_id;
1070 -- mkarya for bug 1906545, formula and operand are no more mutually exclusive
1071 -- also formula having a line with line type 'LP' is also allowed
1072 /*
1073 and not exists ( select price_formula_line_type_code
1074 from qp_price_formula_lines
1075 where price_formula_id = p_MODIFIERS_rec.price_by_formula_id
1076 and price_formula_line_type_code = 'LP' );
1077 */
1078 EXCEPTION
1079 WHEN NO_DATA_FOUND THEN
1080 --dbms_output.put_line('invalid formula id');
1081 oe_debug_pub.add('formula id is invalid');
1082
1083 l_return_status := FND_API.G_RET_STS_ERROR;
1084
1085 FND_MESSAGE.SET_NAME('QP','QP_FORMULA_NOT_FOUND');
1086 OE_MSG_PUB.Add;
1087
1088 END;
1089 END IF; --price_by_formula_id IS NOT NULL
1090
1091 /* Operand is not allowed when a Formula is given */
1092 -- mkarya for bug 1906545, formula and operand are no more mutually exclusive
1093 /*
1094 IF p_MODIFIERS_rec.price_by_formula_id IS NOT NULL
1095 AND p_MODIFIERS_rec.operand IS NOT NULL
1096 THEN
1097
1098 --dbms_output.put_line('no operand if formula is given = '|| to_char(p_MODIFIERS_rec.operand));
1099 l_return_status := FND_API.G_RET_STS_ERROR;
1100
1101 FND_MESSAGE.SET_NAME('QP','QP_OPERAND_OR_FORMULA');
1102 OE_MSG_PUB.Add;
1103 END IF;
1104 */
1105
1106 oe_debug_pub.add('77');
1107 END IF; --If list_line_type_code <> 'PMR'
1108
1109 /* Price Break Type Code is mandatory for list line type of Price Break Header */
1110
1111 IF p_MODIFIERS_rec.list_line_type_code = 'PBH'
1112 THEN
1113
1114 IF p_MODIFIERS_rec.price_break_type_code IS NULL
1115 THEN
1116
1117 oe_debug_pub.add('price brek type is manda');
1118 l_return_status := FND_API.G_RET_STS_ERROR;
1119
1120 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1121 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('PRICE_BREAK_TYPE_CODE')); --Fix For Bug-1974413
1122 OE_MSG_PUB.Add;
1123
1124 END IF;
1125
1126 END IF; --list_line_type_code = 'PBH'
1127 --dbms_output.put_line('10');
1128
1129 /* Valid values of Price Break Type Code are Point,Range and RECURRING */
1130
1131 IF p_MODIFIERS_rec.list_line_type_code <> 'PMR' THEN
1132 IF p_MODIFIERS_rec.price_break_type_code IS NOT NULL
1133 AND p_MODIFIERS_rec.price_break_type_code <> 'POINT'
1134 AND p_MODIFIERS_rec.price_break_type_code <> 'RANGE'
1135 AND p_MODIFIERS_rec.price_break_type_code <> 'RECURRING'
1136 THEN
1137
1138 oe_debug_pub.add('price brek type can be point or range');
1139 l_return_status := FND_API.G_RET_STS_ERROR;
1140
1141 FND_MESSAGE.SET_NAME('QP','QP_PRCBRK_POINT_OR_RANGE');
1142 OE_MSG_PUB.Add;
1143
1144 END IF;
1145
1146
1147 /* Recurring allowed only for these Qualifier list line types */
1148
1149 IF p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL THEN
1150 IF ( p_MODIFIERS_rec.list_line_type_code <> 'DIS' AND
1151 p_MODIFIERS_rec.list_line_type_code <> 'SUR' AND
1152 p_MODIFIERS_rec.list_line_type_code <> 'PRG' AND
1153 p_MODIFIERS_rec.list_line_type_code <> 'CIE') AND
1154 p_MODIFIERS_rec.price_break_type_code = 'RECURRING'
1155
1156 THEN
1157
1158 l_return_status := FND_API.G_RET_STS_ERROR;
1159
1160 FND_MESSAGE.SET_NAME('QP','QP_RECURRING_NOT_ALLOWED');
1161 OE_MSG_PUB.Add;
1162
1163 END IF;
1164 END IF;
1165
1166 /* Lumpsum is mandatory for DIS and SUR Qualifier list lines if they are recurring */
1167
1168 IF ( p_MODIFIERS_rec.list_line_type_code = 'DIS' OR
1169 p_MODIFIERS_rec.list_line_type_code = 'SUR') AND
1170 p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL AND
1171 p_MODIFIERS_rec.price_break_type_code = 'RECURRING' AND
1172 p_MODIFIERS_rec.arithmetic_operator <> 'LUMPSUM'
1173
1174 THEN
1175
1176 l_return_status := FND_API.G_RET_STS_ERROR;
1177
1178 FND_MESSAGE.SET_NAME('QP','QP_LUMPSUM_RECUR_DIS_SUR');
1179 OE_MSG_PUB.Add;
1180
1181 END IF;
1182
1183 /* The only price break types allowed for a Qualifier list line are Point and Recurring */
1184
1185 IF p_MODIFIERS_rec.price_break_type_code IS NOT NULL
1186 THEN
1187 IF p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL AND
1188 p_MODIFIERS_rec.list_line_type_code <> 'PBH' AND
1189 p_MODIFIERS_rec.price_break_type_code <> 'POINT' AND
1190 p_MODIFIERS_rec.price_break_type_code <> 'RECURRING'
1191
1192 THEN
1193
1194 l_return_status := FND_API.G_RET_STS_ERROR;
1195
1196 FND_MESSAGE.SET_NAME('QP','QP_BREAK_TYPE_POINT_OR_RECUR');
1197 OE_MSG_PUB.Add;
1198
1199 END IF;
1200 END IF;
1201
1202 /* The only price break types allowed for Price Break child lines are Point and Range */
1203
1204 IF p_MODIFIERS_rec.price_break_type_code IS NOT NULL
1205 THEN
1206 IF l_primary_list_line_type_code = 'PBH'AND
1207 p_MODIFIERS_rec.price_break_type_code <> 'POINT' AND
1208 p_MODIFIERS_rec.price_break_type_code <> 'RANGE'
1209
1210 THEN
1211
1212 l_return_status := FND_API.G_RET_STS_ERROR;
1213
1214 FND_MESSAGE.SET_NAME('QP','QP_BREAK_TYPE_POINT_OR_RANGE');
1215 OE_MSG_PUB.Add;
1216
1217 END IF;
1218 END IF;
1219
1220 /* Recurring not allowed on Benefit list line Except Coupons (Bug - 2037842) */
1221
1222 IF p_MODIFIERS_rec.list_line_type_code <> 'RLTD' AND
1223 (p_MODIFIERS_rec.rltd_modifier_grp_type IS NOT NULL AND
1224 p_MODIFIERS_rec.rltd_modifier_grp_type <> 'COUPON') -- Bug 2037842
1225 AND
1226 p_MODIFIERS_rec.price_break_type_code = 'RECURRING'
1227
1228 THEN
1229
1230 l_return_status := FND_API.G_RET_STS_ERROR;
1231
1232 FND_MESSAGE.SET_NAME('QP','QP_RECURRING_NOT_ALLOWED');
1233 OE_MSG_PUB.Add;
1234
1235 END IF;
1236 END IF; --list_line_type_code <> 'PMR'
1237
1238 --dbms_output.put_line('11');
1239 oe_debug_pub.add('88');
1240
1241 /* Product Precedence is mandatory for the Primary discount lines of type Other Item Discount, Price Break Header and Item Upgrade */
1242
1243 IF p_MODIFIERS_rec.list_line_type_code <> 'PMR'
1244 AND p_MODIFIERS_rec.list_line_type_code <> 'RLTD'
1245 THEN
1246 IF p_MODIFIERS_rec.list_line_type_code = 'OID'
1247 OR p_MODIFIERS_rec.list_line_type_code = 'PBH'
1248 OR p_MODIFIERS_rec.list_line_type_code = 'IUE'
1249 THEN
1250
1251 IF p_MODIFIERS_rec.product_precedence IS NULL
1252 THEN
1253
1254 oe_debug_pub.add('prece 11 ');
1255 --dbms_output.put_line('product precedence is mandatory for primary');
1256 l_return_status := FND_API.G_RET_STS_ERROR;
1257
1258 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1259 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('PRODUCT_PRECEDENCE')); -- Fix For Bug-1974413
1260 OE_MSG_PUB.Add;
1261
1262 END IF;
1263
1264 END IF;
1265
1266 END IF;
1267
1268 oe_debug_pub.add('99');
1269
1270 /* Benefit Price List is mandatory for the benefit DIS line of PRG */
1271 oe_debug_pub.add('benefit = '||to_char( p_MODIFIERS_rec.benefit_price_list_line_id));
1272
1273 IF p_MODIFIERS_rec.list_line_type_code = 'DIS'
1274 AND l_primary_list_line_type_code = 'PRG'
1275 AND p_MODIFIERS_rec.benefit_price_list_line_id IS NULL
1276 THEN
1277
1278 l_return_status := FND_API.G_RET_STS_ERROR;
1279
1280 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1281 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Get Price');
1282 OE_MSG_PUB.Add;
1283
1284 END IF;
1285
1286 /* JULIN (2738479): PRG benefit price list lines cannot be based on lines whose arithmetic_operator is BLOCK_PRICE or PERCENT_PRICE. */
1287 /* jhkuo (2853657,2862465): PRG benefit price list lines now cannot be based on any service items
1288 or any price break headers (and child lines).
1289 */
1290
1291 oe_debug_pub.add('benefit = '||to_char( p_MODIFIERS_rec.benefit_price_list_line_id));
1292
1293 IF l_primary_list_line_type_code = 'PRG'
1294 AND p_MODIFIERS_rec.benefit_price_list_line_id IS NOT NULL
1295 THEN
1296
1297 select arithmetic_operator, list_line_type_code, qualification_ind
1298 into l_arithmetic_operator, l_list_line_type_code, l_qualification_ind
1299 from qp_list_lines
1300 where list_line_id = p_MODIFIERS_rec.benefit_price_list_line_id;
1301
1302 IF l_arithmetic_operator = 'PERCENT_PRICE' OR
1303 l_list_line_type_code = 'PBH' OR
1304 (l_list_line_type_code <> 'PBH' AND l_qualification_ind NOT IN (2,4,6,8,10,12,14,20,22,28,30))
1305 THEN
1306 l_return_status := FND_API.G_RET_STS_ERROR;
1307 FND_MESSAGE.SET_NAME('QP','QP_INVALID_GET_PRICE_LIST_LINE');
1308 OE_MSG_PUB.Add;
1309 END IF;
1310
1311
1312 END IF;
1313
1314 --dbms_output.put_line('12');
1315
1316 /* If a Price Break Header,Coupon Issue and Discount is accrued, it is mandatory to give Expiration Date or both Number of Expiration Periods and Expiration Period UOM */
1317
1318 IF p_MODIFIERS_rec.list_line_type_code = 'CIE'
1319 OR (p_MODIFIERS_rec.list_line_type_code = 'DIS'
1320 AND p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL )
1321 THEN
1322
1323 IF p_MODIFIERS_rec.accrual_flag = 'Y'
1324 THEN
1325
1326
1327 IF p_MODIFIERS_rec.expiration_date IS NOT NULL
1328 THEN
1329
1330 IF p_MODIFIERS_rec.number_expiration_periods IS NOT NULL
1331 OR p_MODIFIERS_rec.expiration_period_uom IS NOT NULL
1332 THEN
1333
1334 --dbms_output.put_line('either exp date or other 2 values');
1335 l_return_status := FND_API.G_RET_STS_ERROR;
1336
1337 FND_MESSAGE.SET_NAME('QP','QP_EXP_DATE_OR_EXP_PERIODS');
1338 OE_MSG_PUB.Add;
1339
1340 END IF;
1341 END IF;
1342
1343 /* Number Expiratiob Periods and Expiration Peirod UOM must both be entered */
1344
1345 IF ((p_MODIFIERS_rec.number_expiration_periods IS NOT NULL
1346 AND p_MODIFIERS_rec.expiration_period_uom IS NULL )
1347 OR
1348 ( p_MODIFIERS_rec.number_expiration_periods IS NULL
1349 AND p_MODIFIERS_rec.expiration_period_uom IS NOT NULL ))
1350 THEN
1351
1352 --dbms_output.put_line('all these 3 values are mandatory');
1353 l_return_status := FND_API.G_RET_STS_ERROR;
1354
1355 FND_MESSAGE.SET_NAME('QP','QP_EXP_UOM_NUM_STRTDT_MAND');
1356 OE_MSG_PUB.Add;
1357
1358 END IF;
1359
1360 IF p_MODIFIERS_rec.expiration_period_uom IS NOT NULL
1361 THEN
1362
1363 BEGIN
1364
1365 /* Validating Expiration Period UOM */
1366
1367 select uom_code
1368 into l_uom_code
1369 from mtl_units_of_measure
1370 where uom_class = 'Time'
1371 and uom_code = p_MODIFIERS_rec.expiration_period_uom;
1372
1373 EXCEPTION
1374 WHEN NO_DATA_FOUND THEN
1375 --dbms_output.put_line('invalid exp uom');
1376 l_return_status := FND_API.G_RET_STS_ERROR;
1377
1378 FND_MESSAGE.SET_NAME('QP','QP_INVALID_PERIOD_UOM');
1379 OE_MSG_PUB.Add;
1380
1381 END;
1382
1383 END IF;
1384 END IF; --Accrual_flag = 'Y'
1385 END IF;
1386
1387 --dbms_output.put_line('13');
1388
1389 /* Estimated GL value is applicable only for Coupons, Item Upgrade, Terms Substitution and Other Item Discount */
1390 IF p_MODIFIERS_rec.list_line_type_code <> 'PMR' THEN
1391 IF p_MODIFIERS_rec.list_line_type_code <> 'CIE'
1392 AND p_MODIFIERS_rec.list_line_type_code <> 'IUE'
1393 AND p_MODIFIERS_rec.list_line_type_code <> 'TSN'
1394 AND p_MODIFIERS_rec.list_line_type_code <> 'OID' --Added for the bug 2589815
1395 AND p_MODIFIERS_rec.estim_gl_value IS NOT NULL
1396
1397 THEN
1398
1399 --dbms_output.put_line('estim gl value only for coupons');
1400 l_return_status := FND_API.G_RET_STS_ERROR;
1401
1402 FND_MESSAGE.SET_NAME('QP','QP_GL_VAL_FOR_CIE_IUE_TSN');
1403 OE_MSG_PUB.Add;
1404
1405 END IF;
1406 END IF; -- list_line_type_code <> 'PMR'
1407
1408
1409 /* For Accruals, it is mandatory to give Estimated Accrual Rate */
1410
1411 IF p_MODIFIERS_rec.accrual_flag = 'Y'
1412 AND p_MODIFIERS_rec.estim_accrual_rate IS NULL
1413
1414 THEN
1415
1416 --dbms_output.put_line('estim accrual rate is mand for coupons or accrual');
1417 l_return_status := FND_API.G_RET_STS_ERROR;
1418
1419 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1420 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('ESTIM_ACCRUAL_RATE')); -- Fix For Bug-1974413
1421 OE_MSG_PUB.Add;
1422
1423 END IF;
1424
1425 /* Charge Type and Charge Subtype are mandatory for list line type of Freight Charge */
1426
1427 IF p_MODIFIERS_rec.list_line_type_code = 'FREIGHT_CHARGE'
1428 THEN
1429
1430 IF p_MODIFIERS_rec.charge_type_code IS NULL
1431 THEN
1432
1433 --dbms_output.put_line('charge tyep and subtype mand for freight charge');
1434 l_return_status := FND_API.G_RET_STS_ERROR;
1435
1436 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1437 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Charge Name');
1438 OE_MSG_PUB.Add;
1439
1440 END IF;
1441
1442 BEGIN
1443
1444 /* Validating Charge Type and Charge Subtype
1445 Added the validation for freight and spl. charges Bug#4562869 */
1446 IF (l_profile_pte_code = 'PO' and l_profile_source_system_code = 'PO') THEN
1447
1448 SELECT'X'
1449 INTO l_charge_type_subtype
1450 FROM pon_cost_factors_vl
1451 WHERE price_element_type_id > 0
1452 AND nvl(enabled_flag,'Y') <> 'N'
1453 AND to_char(price_element_type_id) = p_MODIFIERS_rec.charge_type_code;
1454
1455 else
1456 select 'X'
1457 into l_charge_type_subtype
1458 from fnd_lookup_values lkp1, qp_lookups lkp2
1459 where lkp1.lookup_code = lkp2.lookup_type(+)
1460 and lkp1.enabled_flag = 'Y'
1461 and TRUNC(sysdate)
1462 between TRUNC(nvl(lkp1.start_date_active, sysdate))
1463 and TRUNC(nvl(lkp1.end_date_active, sysdate))
1464 and (lkp2.enabled_flag = 'Y' or lkp2.enabled_flag IS NULL)
1465 and TRUNC(sysdate)
1466 between TRUNC(nvl(lkp2.start_date_active, sysdate))
1467 and TRUNC(nvl(lkp2.end_date_active, sysdate))
1468 and lkp1.lookup_code = p_MODIFIERS_rec.charge_type_code
1469 and NVL(decode(lkp1.lookup_type,'FREIGHT_COST_TYPE',NULL,
1470 lkp2.lookup_code),'o')
1471 = NVL(p_MODIFIERS_rec.charge_subtype_code,'o')
1472 and lkp1.language = userenv('LANG')
1473 and lkp1.security_group_id = 0
1474 and ((lkp1.view_application_id = 661 and lkp1.lookup_type = 'FREIGHT_CHARGES_TYPE')
1475 or (lkp1.view_application_id = 665 and lkp1.lookup_type = 'FREIGHT_COST_TYPE'));
1476 end if;
1477
1478 EXCEPTION
1479 WHEN NO_DATA_FOUND THEN
1480 --dbms_output.put_line('invalid charge and subcharge type');
1481 l_return_status := FND_API.G_RET_STS_ERROR;
1482
1483 FND_MESSAGE.SET_NAME('QP','QP_INVALID_CHARGE_TYPE_SUBTYPE');
1484 OE_MSG_PUB.Add;
1485
1486 END;
1487
1488 END IF;
1489
1490 /* For Primary list line types of Price Break Header and Discount, if it is an Accrual and Benefit UOM is given, Accrual Conversion Rate is mandatory */
1491
1492 IF (p_MODIFIERS_rec.list_line_type_code = 'PBH')
1493 OR (p_MODIFIERS_rec.list_line_type_code = 'DIS'
1494 AND p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL)
1495 THEN
1496 IF p_MODIFIERS_rec.benefit_uom_code IS NOT NULL
1497 AND p_MODIFIERS_rec.accrual_flag = 'Y'
1498 THEN
1499
1500 IF p_MODIFIERS_rec.accrual_conversion_rate IS NULL
1501
1502 THEN
1503
1504 --dbms_output.put_line('accru conv rate mand');
1505 l_return_status := FND_API.G_RET_STS_ERROR;
1506
1507 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1508 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('ACCRUAL_CONVERSION_RATE')); -- Fix For Bug-1974413
1509 OE_MSG_PUB.Add;
1510
1511 END IF;
1512
1513 END IF;
1514
1515 END IF;
1516
1517 oe_debug_pub.add('here9');
1518 /* If Discount is a Primary line with accrual, then if benefit quantity is entered, benefit UOM must be enetered and vice-versa */
1519
1520 IF ((p_MODIFIERS_rec.list_line_type_code = 'DIS'
1521 OR p_MODIFIERS_rec.list_line_type_code = 'CIE' )
1522 AND p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL
1523 AND p_MODIFIERS_rec.accrual_flag = 'Y')
1524 THEN
1525
1526 IF (p_MODIFIERS_rec.benefit_uom_code IS NOT NULL
1527 AND p_MODIFIERS_rec.benefit_qty IS NULL )
1528 OR (p_MODIFIERS_rec.benefit_uom_code IS NULL
1529 AND p_MODIFIERS_rec.benefit_qty IS NOT NULL )
1530 THEN
1531
1532 l_return_status := FND_API.G_RET_STS_ERROR;
1533
1534 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1535 --FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('BENEFIT_QTY')||'/'||
1536 -- QP_PRC_UTIL.Get_Attribute_Name('BENEFIT_UOM_CODE')); -- Fix For Bug-1974413
1537 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Quantity/UOM'); --Bug No 6010792
1538 OE_MSG_PUB.Add;
1539
1540 END IF;
1541
1542 END IF;
1543
1544 /* Benefit qty is mandatory for the benefit DIS line of PRG */
1545
1546 IF p_MODIFIERS_rec.list_line_type_code = 'DIS'
1547 AND l_primary_list_line_type_code = 'PRG'
1548 AND (p_MODIFIERS_rec.benefit_qty IS NULL
1549 OR p_MODIFIERS_rec.benefit_uom_code IS NULL )
1550 THEN
1551
1552 l_return_status := FND_API.G_RET_STS_ERROR;
1553
1554 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1555 --FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('BENEFIT_QTY')||'/'||
1556 -- QP_PRC_UTIL.Get_Attribute_Name('BENEFIT_UOM_CODE')); -- Fix For Bug-1974413
1557 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Quantity/UOM'); --Bug No 6010792
1558 OE_MSG_PUB.Add;
1559
1560 END IF;
1561
1562 /* Benefit qty is mandatory if benefit uom is entered, for the benefit DIS line of PBH */
1563
1564 IF ((p_MODIFIERS_rec.list_line_type_code = 'DIS'
1565 OR p_MODIFIERS_rec.list_line_type_code = 'SUR')
1566 AND p_MODIFIERS_rec.accrual_flag = 'Y'
1567 AND l_primary_list_line_type_code = 'PBH')
1568 THEN
1569
1570 IF (p_MODIFIERS_rec.benefit_uom_code IS NOT NULL
1571 AND p_MODIFIERS_rec.benefit_qty IS NULL )
1572 OR (p_MODIFIERS_rec.benefit_uom_code IS NULL
1573 AND p_MODIFIERS_rec.benefit_qty IS NOT NULL )
1574 THEN
1575
1576 l_return_status := FND_API.G_RET_STS_ERROR;
1577
1578 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1579 --FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('BENEFIT_QTY')||'/'||
1580 -- QP_PRC_UTIL.Get_Attribute_Name('BENEFIT_UOM_CODE')); -- Fix For Bug-1974413
1581 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Quantity/UOM'); --Bug No 6010792
1582 OE_MSG_PUB.Add;
1583
1584 END IF;
1585
1586 END IF;
1587
1588 IF p_MODIFIERS_rec.list_line_type_code <> 'PMR' THEN
1589 IF p_MODIFIERS_rec.benefit_uom_code IS NOT NULL
1590 THEN
1591
1592 IF p_MODIFIERS_rec.accrual_flag = 'Y'
1593 THEN
1594
1595 BEGIN
1596
1597 /* Validating the Benefit UOM Code */
1598
1599 FND_PROFILE.GET('QP_ACCRUAL_UOM_CLASS',l_qp_accrual_uom_class);
1600
1601 select uom_code
1602 into l_dummy_4
1603 from mtl_units_of_measure
1604 where uom_code = p_MODIFIERS_rec.benefit_uom_code
1605 and uom_class = l_qp_accrual_uom_class;
1606
1607 EXCEPTION
1608 WHEN NO_DATA_FOUND THEN
1609 --dbms_output.put_line('invalid bene uom');
1610 l_return_status := FND_API.G_RET_STS_ERROR;
1611
1612 FND_MESSAGE.SET_NAME('QP','QP_INVALID_BENEFIT_UOM');
1613 OE_MSG_PUB.Add;
1614
1615 END;
1616
1617 ELSE
1618
1619 BEGIN
1620
1621 /* Validating the Benefit UOM Code */
1622
1623 select count(*)
1624 into l_dummy_5
1625 from mtl_units_of_measure
1626 where uom_code = p_MODIFIERS_rec.benefit_uom_code;
1627
1628 EXCEPTION
1629 WHEN NO_DATA_FOUND THEN
1630 --dbms_output.put_line('invalid bene uom');
1631 l_return_status := FND_API.G_RET_STS_ERROR;
1632
1633 FND_MESSAGE.SET_NAME('QP','QP_INVALID_BENEFIT_UOM');
1634 OE_MSG_PUB.Add;
1635
1636 END;
1637
1638 END IF;
1639 END IF;
1640 END IF; --list_line_type_code <> 'PMR'
1641
1642 /* Phase is mandatory for these Primary Modifier types */
1643
1644 oe_debug_pub.add('here95');
1645 IF ( p_MODIFIERS_rec.list_line_type_code = 'OID' OR
1646 p_MODIFIERS_rec.list_line_type_code = 'SUR' OR
1647 p_MODIFIERS_rec.list_line_type_code = 'PRG' OR
1648 p_MODIFIERS_rec.list_line_type_code = 'DIS' OR
1649 p_MODIFIERS_rec.list_line_type_code = 'TSN' OR
1650 p_MODIFIERS_rec.list_line_type_code = 'CIE' OR
1651 p_MODIFIERS_rec.list_line_type_code = 'PBH' OR
1652 p_MODIFIERS_rec.list_line_type_code = 'FREIGHT_CHARGE' OR
1653 p_MODIFIERS_rec.list_line_type_code = 'IUE' ) AND
1654 p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL AND
1655 p_MODIFIERS_rec.pricing_phase_id IS NULL
1656 THEN
1657
1658 --dbms_output.put_line('phase is mand');
1659 l_return_status := FND_API.G_RET_STS_ERROR;
1660
1661 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1662 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Phase');
1663 OE_MSG_PUB.Add;
1664
1665 END IF;
1666
1667 /* Phase is mandatory for all benefit list lines, except for RLTD */
1668
1669 IF p_MODIFIERS_rec.list_line_type_code <> 'PMR' THEN
1670 IF p_MODIFIERS_rec.list_line_type_code <> 'RLTD'
1671 AND p_MODIFIERS_rec.rltd_modifier_grp_type IS NOT NULL
1672 AND p_MODIFIERS_rec.pricing_phase_id IS NULL
1673 THEN
1674
1675 --dbms_output.put_line('phase is mand');
1676 l_return_status := FND_API.G_RET_STS_ERROR;
1677
1678 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1679 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Phase');
1680 OE_MSG_PUB.Add;
1681
1682 END IF;
1683
1684 /* Validate the Phase from qp_pricing_phases table */
1685
1686 IF p_MODIFIERS_rec.pricing_phase_id IS NOT NULL
1687 THEN
1688 BEGIN
1689 SELECT phase_sequence, nvl(modifier_level_code,'*')
1690 INTO l_phase_sequence, l_modifier_level_code
1691 FROM QP_PRICING_PHASES
1692 WHERE nvl(LIST_TYPE_CODE,l_list_type_code) = l_list_type_code
1693 AND nvl(LIST_LINE_TYPE_CODE,p_MODIFIERS_rec.list_line_type_code) =
1694 p_MODIFIERS_rec.list_line_type_code
1695 AND nvl(MODIFIER_LEVEL_CODE,p_MODIFIERS_rec.modifier_level_code) =
1696 p_MODIFIERS_rec.modifier_level_code
1697 AND ((p_MODIFIERS_rec.LIST_LINE_TYPE_CODE = 'OID' and nvl(MODIFIER_LEVEL_CODE, '*') <> 'LINE')
1698 or p_MODIFIERS_rec.LIST_LINE_TYPE_CODE <> 'OID')
1699 AND PRICING_PHASE_ID = p_MODIFIERS_rec.pricing_phase_id;
1700
1701 EXCEPTION
1702 WHEN NO_DATA_FOUND THEN
1703 l_return_status := FND_API.G_RET_STS_ERROR;
1704
1705 FND_MESSAGE.SET_NAME('QP','QP_INVALID_PHASE');
1706 OE_MSG_PUB.Add;
1707
1708 END;
1709
1710 /* Additional buy products are not allowed for a PRG, with line phase*/
1711
1712 IF p_MODIFIERS_rec.LIST_LINE_TYPE_CODE = 'RLTD' AND
1713 p_MODIFIERS_rec.RLTD_MODIFIER_GRP_TYPE = 'QUALIFIER' AND
1714 l_modifier_level_code = 'LINE' THEN
1715 /* BEGIN
1716 SELECT phase_sequence
1717 INTO l_phase_sequence
1718 FROM QP_PRICING_PHASES
1719 WHERE PRICING_PHASE_ID = p_MODIFIERS_rec.pricing_phase_id
1720 AND nvl(MODIFIER_LEVEL_CODE, '*') <> 'LINE';
1721 EXCEPTION
1722 WHEN NO_DATA_FOUND THEN */
1723 l_return_status := FND_API.G_RET_STS_ERROR;
1724 FND_MESSAGE.SET_NAME('QP','QP_INVALID_PHASE_RLTD');
1725 OE_MSG_PUB.Add;
1726 -- END;
1727 END IF;
1728
1729 /* If Additional buy products exists for a PRG,the phase cannot be changed to line phase*/
1730
1731 IF p_MODIFIERS_rec.LIST_LINE_TYPE_CODE = 'PRG' AND
1732 l_modifier_level_code = 'LINE' THEN
1733 BEGIN
1734 select 'Y'
1735 into l_rltd_exist
1736 from qp_rltd_modifiers
1737 where from_rltd_modifier_id = p_MODIFIERS_rec.list_line_id
1738 and rltd_modifier_grp_type = 'QUALIFIER'
1739 and rownum = 1;
1740 EXCEPTION
1741 WHEN NO_DATA_FOUND THEN
1742 l_rltd_exist := 'N';
1743 END;
1744 IF l_rltd_exist = 'Y' THEN
1745 l_return_status := FND_API.G_RET_STS_ERROR;
1746 FND_MESSAGE.SET_NAME('QP','QP_INVALID_PHASE_RLTD');
1747 OE_MSG_PUB.Add;
1748 END IF;
1749 END IF;
1750
1751 /* Phase with event PRICING should not be attached to modifier types PRG/IUE/OID/TSN/CIE -- Bug#2724502 */
1752
1753 IF (p_MODIFIERS_rec.list_line_type_code IN ('PRG','IUE','OID','CIE','TSN')) THEN
1754 begin
1755 select 'Y' into l_phase_price_evt
1756 from qp_event_phases
1757 where pricing_event_code = 'PRICE'
1758 and pricing_phase_id = p_MODIFIERS_rec.PRICING_PHASE_ID;
1759 exception
1760 WHEN no_data_found THEN
1761 NULL;
1762 end;
1763
1764 IF l_phase_price_evt = 'Y' THEN
1765 l_return_status := FND_API.G_RET_STS_ERROR;
1766
1767 FND_MESSAGE.SET_NAME('QP','QP_PHASE_PRICE_EVT_ERROR');
1768 OE_MSG_PUB.Add;
1769
1770 END IF;
1771 END IF;
1772
1773 /* Phase with FREE_OVERRIDE_FLAG set to 'Y' should not be attached to modifier type PRG -- Bug#1748272 */
1774
1775 IF (p_MODIFIERS_rec.list_line_type_code = 'PRG') THEN
1776 begin
1777 select 'Y' into l_phase_freeze_set
1778 from qp_pricing_phases
1779 where nvl(user_freeze_override_flag,freeze_override_flag) = 'Y'
1780 and pricing_phase_id = p_MODIFIERS_rec.PRICING_PHASE_ID;
1781 exception
1782 WHEN no_data_found THEN
1783 NULL;
1784 end;
1785
1786 IF l_phase_freeze_set = 'Y' THEN
1787 l_return_status := FND_API.G_RET_STS_ERROR;
1788
1789 FND_MESSAGE.SET_NAME('QP','QP_PHASE_FREEZE_ERROR');
1790 OE_MSG_PUB.Add;
1791
1792 END IF;
1793 END IF;
1794
1795 /* Only Phase 10 is allowed for GSA Discounts */
1796
1797 IF l_gsa_indicator = 'Y'
1798 AND l_phase_sequence <> 10
1799 THEN
1800
1801 l_return_status := FND_API.G_RET_STS_ERROR;
1802
1803 FND_MESSAGE.SET_NAME('QP','QP_INVALID_PHASE');
1804 OE_MSG_PUB.Add;
1805
1806 END IF;
1807
1808 END IF;
1809
1810
1811 /* Accrual not allowed for these Modifier types */
1812
1813 oe_debug_pub.add('line type = '||p_MODIFIERS_rec.list_line_type_code);
1814 oe_debug_pub.add('accrual flag = '||p_MODIFIERS_rec.accrual_flag);
1815
1816 IF ( p_MODIFIERS_rec.list_line_type_code = 'OID' OR
1817 p_MODIFIERS_rec.list_line_type_code = 'SUR' OR
1818 p_MODIFIERS_rec.list_line_type_code = 'PRG' OR
1819 p_MODIFIERS_rec.list_line_type_code = 'RLTD' OR
1820 p_MODIFIERS_rec.list_line_type_code = 'TSN' OR
1821 p_MODIFIERS_rec.list_line_type_code = 'PMR' OR
1822 p_MODIFIERS_rec.list_line_type_code = 'FREIGHT_CHARGE' OR
1823 p_MODIFIERS_rec.list_line_type_code = 'IUE' ) AND
1824 p_MODIFIERS_rec.accrual_flag = 'Y'
1825
1826 THEN
1827
1828
1829 oe_debug_pub.add('list line type code invalid');
1830 l_return_status := FND_API.G_RET_STS_ERROR;
1831
1832 FND_MESSAGE.SET_NAME('QP','QP_ACCRUALS_NOT_ALLOWED');
1833 OE_MSG_PUB.Add;
1834
1835 END IF;
1836
1837 /* Accruals not allowed for GSA Discounts */
1838
1839 IF l_gsa_indicator = 'Y'
1840 AND p_MODIFIERS_rec.accrual_flag = 'Y'
1841 THEN
1842
1843 l_return_status := FND_API.G_RET_STS_ERROR;
1844
1845 FND_MESSAGE.SET_NAME('QP','QP_ACCRUALS_NOT_ALLOWED');
1846 OE_MSG_PUB.Add;
1847
1848 END IF;
1849
1850 /* Accrual is mandatory for Coupon issue */
1851
1852 IF p_MODIFIERS_rec.list_line_type_code = 'CIE'
1853 AND p_MODIFIERS_rec.accrual_flag <> 'Y'
1854
1855 THEN
1856
1857 l_return_status := FND_API.G_RET_STS_ERROR;
1858
1859 FND_MESSAGE.SET_NAME('QP','QP_ACCRUALS_MAND_FOR_CIE');
1860 OE_MSG_PUB.Add;
1861
1862 END IF;
1863
1864 /* Accrual flag must be Y when accrual related fields are entered
1865
1866 oe_debug_pub.add('HERE');
1867 oe_debug_pub.add('exp date = '||to_char(p_MODIFIERS_rec.expiration_date));
1868
1869 IF (( p_MODIFIERS_rec.benefit_qty IS NOT NULL
1870 OR p_MODIFIERS_rec.benefit_uom_code IS NOT NULL
1871 OR p_MODIFIERS_rec.expiration_date IS NOT NULL
1872 OR p_MODIFIERS_rec.expiration_period_start_date IS NOT NULL
1873 OR p_MODIFIERS_rec.number_expiration_periods IS NOT NULL
1874 OR p_MODIFIERS_rec.expiration_period_uom IS NOT NULL
1875 OR p_MODIFIERS_rec.rebate_trxn_type_code IS NOT NULL
1876 OR p_MODIFIERS_rec.estim_accrual_rate IS NOT NULL
1877 OR p_MODIFIERS_rec.accrual_conversion_rate IS NOT NULL )
1878 AND p_MODIFIERS_rec.accrual_flag = 'N')
1879 THEN
1880
1881 l_return_status := FND_API.G_RET_STS_ERROR;
1882
1883 FND_MESSAGE.SET_NAME('QP','QP_ACCRUAL_COLUMNS');
1884 OE_MSG_PUB.Add;
1885
1886 END IF;
1887
1888 */
1889
1890 /* Accrual is allowed only if the benefit line type of Price Break is a Discount */
1891
1892 IF p_MODIFIERS_rec.rltd_modifier_grp_type = 'PRICE BREAK' AND
1893 p_MODIFIERS_rec.accrual_flag = 'Y' AND
1894 p_MODIFIERS_rec.list_line_type_code <> 'DIS'
1895
1896 THEN
1897
1898 oe_debug_pub.add('list line type code invalid');
1899 l_return_status := FND_API.G_RET_STS_ERROR;
1900
1901 FND_MESSAGE.SET_NAME('QP','QP_ACCRUALS_FOR_DIS_ONLY');
1902
1903 OE_MSG_PUB.Add;
1904
1905 END IF;
1906
1907 /* Proration is mandatory for these Primary Modifier types */
1908
1909 IF ( p_MODIFIERS_rec.list_line_type_code = 'DIS' OR
1910 p_MODIFIERS_rec.list_line_type_code = 'SUR' OR
1911 p_MODIFIERS_rec.list_line_type_code = 'PRG' OR
1912 p_MODIFIERS_rec.list_line_type_code = 'OID') AND
1913 p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL AND
1914 p_MODIFIERS_rec.proration_type_code IS NULL
1915
1916 THEN
1917
1918
1919 oe_debug_pub.add('proration 11111');
1920 l_return_status := FND_API.G_RET_STS_ERROR;
1921
1922 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1923 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('PRORATION_TYPE_CODE')); -- Fix For Bug-1974413
1924 OE_MSG_PUB.Add;
1925
1926 END IF;
1927
1928 /* Proration type code must be 'N' for GSA Discounts */
1929
1930 IF l_gsa_indicator = 'Y'
1931 AND p_MODIFIERS_rec.proration_type_code <> 'N'
1932 THEN
1933
1934 l_return_status := FND_API.G_RET_STS_ERROR;
1935
1936 FND_MESSAGE.SET_NAME('QP','QP_GSA_PRORATION_ALWAYS_N');
1937 OE_MSG_PUB.Add;
1938
1939 END IF;
1940
1941 IF ( p_MODIFIERS_rec.list_line_type_code = 'IUE' OR
1942 p_MODIFIERS_rec.list_line_type_code = 'TSN') AND
1943 p_MODIFIERS_rec.estim_gl_value IS NOT NULL AND
1944 p_MODIFIERS_rec.proration_type_code IS NULL
1945
1946 THEN
1947
1948
1949 oe_debug_pub.add('list line type code invalid');
1950 l_return_status := FND_API.G_RET_STS_ERROR;
1951
1952 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1953 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('PRORATION_TYPE_CODE')); -- Fix For Bug-1974413
1954 OE_MSG_PUB.Add;
1955
1956 END IF;
1957
1958
1959 /* If the Primary line is a CIE, OID or PRG, proration type code is mandatory */
1960
1961 IF (l_primary_list_line_type_code = 'CIE'
1962 OR l_primary_list_line_type_code = 'OID'
1963 OR l_primary_list_line_type_code = 'PRG')
1964 AND p_MODIFIERS_rec.proration_type_code IS NULL
1965 THEN
1966
1967 oe_debug_pub.add('proration 22222');
1968 l_return_status := FND_API.G_RET_STS_ERROR;
1969
1970 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1971 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('PRORATION_TYPE_CODE')); -- Fix For Bug-1974413
1972 OE_MSG_PUB.Add;
1973
1974 END IF;
1975
1976 /* If the Primary line is a Price Break Header and the Child lines are DIS or SUR, proration type code is mandatory */
1977
1978 IF l_primary_list_line_type_code = 'PBH'
1979 AND ( p_MODIFIERS_rec.list_line_type_code = 'DIS'
1980 OR p_MODIFIERS_rec.list_line_type_code = 'SUR')
1981 AND p_MODIFIERS_rec.rltd_modifier_grp_type IS NOT NULL
1982 AND p_MODIFIERS_rec.proration_type_code IS NULL
1983 THEN
1984
1985 l_return_status := FND_API.G_RET_STS_ERROR;
1986
1987 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
1988 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',QP_PRC_UTIL.Get_Attribute_Name('PRORATION_TYPE_CODE')); -- Fix For Bug-1974413
1989 OE_MSG_PUB.Add;
1990
1991 END IF;
1992
1993 /* If the Primary line is a Coupon Issue, the Child lines must be DIS or PRG */
1994
1995 IF l_primary_list_line_type_code = 'CIE'
1996 AND p_MODIFIERS_rec.list_line_type_code <> 'DIS'
1997 AND p_MODIFIERS_rec.list_line_type_code <> 'PRG'
1998 THEN
1999
2000 l_return_status := FND_API.G_RET_STS_ERROR;
2001
2002 FND_MESSAGE.SET_NAME('QP','QP_CIE_CHILD_DIS_OR_PRG');
2003 OE_MSG_PUB.Add;
2004
2005 END IF;
2006
2007 /* If the Primary line is a Price Break Header, the child lines must be DIS or SUR */
2008
2009 --dbms_output.put_line('BUY = '||l_primary_list_line_type_code);
2010 --dbms_output.put_line('GET = '||p_MODIFIERS_rec.list_line_type_code);
2011
2012 IF l_primary_list_line_type_code = 'PBH'
2013 AND p_MODIFIERS_rec.list_line_type_code <> 'PBH'
2014 AND p_MODIFIERS_rec.list_line_type_code <> 'DIS'
2015 AND p_MODIFIERS_rec.list_line_type_code <> 'SUR'
2016 THEN
2017
2018 l_return_status := FND_API.G_RET_STS_ERROR;
2019
2020 FND_MESSAGE.SET_NAME('QP','QP_PBH_CHILD_DIS_OR_SUR');
2021 OE_MSG_PUB.Add;
2022
2023 END IF;
2024
2025 /* Pricing Group Sequence is --not-- mandatory for these Primary Modifier types */
2026 /*commented out this validation as the engine does not need this to be mandatory11.5.3+ spgopal*/
2027
2028 /*
2029 IF ( p_MODIFIERS_rec.list_line_type_code = 'OID' OR
2030 p_MODIFIERS_rec.list_line_type_code = 'SUR' OR
2031 p_MODIFIERS_rec.list_line_type_code = 'PRG' OR
2032 p_MODIFIERS_rec.list_line_type_code = 'DIS' OR
2033 p_MODIFIERS_rec.list_line_type_code = 'PBH') AND
2034 p_MODIFIERS_rec.rltd_modifier_grp_type IS NULL AND
2035 p_MODIFIERS_rec.modifier_level_code <> 'ORDER' AND
2036 p_MODIFIERS_rec.automatic_flag = 'Y' AND
2037 p_MODIFIERS_rec.pricing_group_sequence IS NULL
2038 THEN
2039
2040 l_return_status := FND_API.G_RET_STS_ERROR;
2041
2042 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
2043 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Bucket');
2044 OE_MSG_PUB.Add;
2045
2046 END IF;
2047 */
2048
2049 /* Pricing Group Sequence must be 1 for GSA Discounts */
2050
2051 IF l_gsa_indicator = 'Y'
2052 AND p_MODIFIERS_rec.pricing_group_sequence <> 1
2053 THEN
2054
2055 l_return_status := FND_API.G_RET_STS_ERROR;
2056
2057 FND_MESSAGE.SET_NAME('QP','QP_GSA_BUCKET_VALUE_1');
2058 OE_MSG_PUB.Add;
2059
2060 END IF;
2061
2062 /* Pricing Group Sequence is --not-- mandatory for all Benefit list lines */
2063 /*commented out this validation as the engine does not need this to be mandatory11.5.3+ spgopal*/
2064
2065 /*
2066 IF p_MODIFIERS_rec.list_line_type_code <> 'RLTD'
2067 AND p_MODIFIERS_rec.rltd_modifier_grp_type IS NOT NULL
2068 AND p_MODIFIERS_rec.rltd_modifier_grp_type <> 'PRICE BREAK'
2069 AND p_MODIFIERS_rec.pricing_group_sequence IS NULL
2070 THEN
2071
2072 --dbms_output.put_line('phase is mand');
2073 l_return_status := FND_API.G_RET_STS_ERROR;
2074
2075 FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
2076 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Bucket');
2077 OE_MSG_PUB.Add;
2078
2079 END IF;
2080 */
2081
2082 /* Pricing Group Sequence must be NULL for manual discounts before packJ and for basic pricing */
2083
2084
2085 IF p_MODIFIERS_rec.automatic_flag = 'N'
2086 AND p_MODIFIERS_rec.pricing_group_sequence IS NOT NULL
2087 AND (QP_Code_Control.Get_Code_Release_Level < '110510'
2088 OR
2089 QP_UTIL.get_qp_status <> 'I'
2090 OR
2091 fnd_profile.value ('QP_MANUAL_MODIFIER_BUCKET') <> 'Y'
2092 )
2093 THEN
2094
2095 l_return_status := FND_API.G_RET_STS_ERROR;
2096
2097 FND_MESSAGE.SET_NAME('QP','QP_MANUAL_DIS_BUCKET_NULL');
2098 OE_MSG_PUB.Add;
2099
2100 END IF;
2101
2102
2103 /* Incompatibility Group Code must be Level 1 for GSA Discounts */
2104
2105 IF l_gsa_indicator = 'Y'
2106 AND p_MODIFIERS_rec.incompatibility_grp_code IS NOT NULL
2107 AND p_MODIFIERS_rec.incompatibility_grp_code <> 'LVL 1'
2108 THEN
2109
2110 l_return_status := FND_API.G_RET_STS_ERROR;
2111
2112 FND_MESSAGE.SET_NAME('QP','QP_GSA_INCOMP_ALWAYS_LVL1');
2113 OE_MSG_PUB.Add;
2114
2115 END IF;
2116
2117
2118 oe_debug_pub.add('here10');
2119 END IF; -- If list_line_type_code <> 'PMR'
2120 -- Return Error if a required attribute is missing.
2121
2122 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2123
2124 oe_debug_pub.add('before raise');
2125 RAISE FND_API.G_EXC_ERROR;
2126
2127 END IF;
2128
2129 IF p_MODIFIERS_rec.accum_attribute IS NOT NULL THEN
2130 QP_UTIL.validate_attribute_name(p_application_short_name => 'QP'
2131 ,p_flexfield_name => 'QP_ATTR_DEFNS_PRICING'
2132 ,p_context_name => 'VOLUME'
2133 ,p_attribute_name => p_MODIFIERS_rec.accum_attribute
2134 ,p_error_code => l_error_code);
2135
2136 IF (l_error_code <> 0 ) -- invalid context
2137 THEN
2138 l_return_status := FND_API.G_RET_STS_ERROR;
2139
2140 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
2141 THEN
2142
2143 FND_MESSAGE.SET_NAME('QP','QP_INVALID_ACCUM_ATTRIBUTE');
2144 OE_MSG_PUB.Add;
2145 END IF;
2146 END IF;
2147 END IF;
2148
2149
2150 --
2151 -- Check conditionally required attributes here.
2152 --
2153
2154 --
2155 -- Validate attribute dependencies here.
2156 --
2157
2158
2159 -- Done validating entity
2160
2161 x_return_status := l_return_status;
2162
2163 -- Start Bug 2091362, bug2119287
2164
2165 l_qp_status := QP_UTIL.GET_QP_STATUS;
2166
2167 IF (fnd_profile.value('QP_ALLOW_DUPLICATE_MODIFIERS') <> 'Y'
2168 AND (l_qp_status = 'S' OR l_gsa_indicator = 'Y')) THEN
2169
2170 oe_debug_pub.add('about to log a request to check duplicate modifier list lines ');
2171
2172 QP_DELAYED_REQUESTS_PVT.Log_Request
2173 ( p_entity_code => QP_GLOBALS.G_ENTITY_ALL
2174 , p_entity_id => p_modifiers_rec.list_line_id
2175 , p_requesting_entity_code => QP_GLOBALS.G_ENTITY_ALL
2176 , p_requesting_entity_id => p_modifiers_rec.list_line_id
2177 , p_request_type => QP_GLOBALS.G_DUPLICATE_MODIFIER_LINES
2178 , p_param1 => p_modifiers_rec.list_header_id
2179 , p_param2 => fnd_date.date_to_canonical(p_modifiers_rec.start_date_active) --2752265
2180 , p_param3 => fnd_date.date_to_canonical(p_modifiers_rec.end_date_active) --2752265
2181 , p_param4 => NULL
2182 , p_param5 => NULL
2183 , p_param6 => NULL
2184 , x_return_status => l_return_status
2185 );
2186
2187 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
2188
2189 oe_debug_pub.add('failed in logging delayed request for Duplicate Modifiers ');
2190
2191 RAISE FND_API.G_EXC_ERROR;
2192
2193 END IF;
2194
2195 oe_debug_pub.add('after logging delayed request ');
2196
2197 END IF;
2198
2199 -- end bug2091362
2200
2201
2202 oe_debug_pub.add('END Entity in QPXLMLLB');
2203
2204 EXCEPTION
2205
2206 WHEN FND_API.G_EXC_ERROR THEN
2207
2208 oe_debug_pub.add('EXP error');
2209 x_return_status := FND_API.G_RET_STS_ERROR;
2210
2211 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2212
2213 oe_debug_pub.add('EXP unexpected');
2214 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2215
2216 WHEN OTHERS THEN
2217
2218 oe_debug_pub.add('EXP others');
2219 oe_debug_pub.add('error =' || sqlerrm);
2220 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2221
2222 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2223 THEN
2224 OE_MSG_PUB.Add_Exc_Msg
2225 ( G_PKG_NAME
2226 , 'Entity'
2227 );
2228 END IF;
2229
2230 END Entity;
2231
2232 -- Procedure Attributes
2233
2234 PROCEDURE Attributes
2235 ( x_return_status OUT NOCOPY VARCHAR2
2236 , p_MODIFIERS_rec IN QP_Modifiers_PUB.Modifiers_Rec_Type
2237 , p_old_MODIFIERS_rec IN QP_Modifiers_PUB.Modifiers_Rec_Type :=
2238 QP_Modifiers_PUB.G_MISS_MODIFIERS_REC
2239 )
2240 IS
2241 BEGIN
2242
2243 oe_debug_pub.add('BEGIN Attributes in QPXLMLLB');
2244 x_return_status := FND_API.G_RET_STS_SUCCESS;
2245
2246 /* changes to fix bug # 1724169 */
2247
2248 IF FND_PROFILE.VALUE('QP_NEGATIVE_PRICING') = 'N' AND p_MODIFIERS_rec.operand < 0 THEN
2249 FND_MESSAGE.SET_NAME('QP','OE_PR_NEGATIVE_AMOUNT');
2250 OE_MSG_PUB.Add;
2251 x_return_status := FND_API.G_RET_STS_ERROR;
2252 END IF;
2253
2254
2255
2256 -- Validate MODIFIERS attributes
2257
2258 IF p_MODIFIERS_rec.arithmetic_operator IS NOT NULL AND
2259 ( p_MODIFIERS_rec.arithmetic_operator <>
2260 p_old_MODIFIERS_rec.arithmetic_operator OR
2261 p_old_MODIFIERS_rec.arithmetic_operator IS NULL )
2262 THEN
2263 IF NOT QP_Validate.Arithmetic_Operator(p_MODIFIERS_rec.arithmetic_operator) THEN
2264 x_return_status := FND_API.G_RET_STS_ERROR;
2265 END IF;
2266 END IF;
2267 oe_debug_pub.add('here3');
2268
2269 IF p_MODIFIERS_rec.automatic_flag IS NOT NULL AND
2270 ( p_MODIFIERS_rec.automatic_flag <>
2271 p_old_MODIFIERS_rec.automatic_flag OR
2272 p_old_MODIFIERS_rec.automatic_flag IS NULL )
2273 THEN
2274 IF NOT QP_Validate.Automatic(p_MODIFIERS_rec.automatic_flag) THEN
2275 x_return_status := FND_API.G_RET_STS_ERROR;
2276 END IF;
2277 END IF;
2278
2279 /* IF p_MODIFIERS_rec.base_qty IS NOT NULL AND
2280 ( p_MODIFIERS_rec.base_qty <>
2281 p_old_MODIFIERS_rec.base_qty OR
2282 p_old_MODIFIERS_rec.base_qty IS NULL )
2283 THEN
2284 IF NOT QP_Validate.Base_Qty(p_MODIFIERS_rec.base_qty) THEN
2285 x_return_status := FND_API.G_RET_STS_ERROR;
2286 END IF;
2287 END IF;
2288 */
2289 IF p_MODIFIERS_rec.pricing_phase_id IS NOT NULL AND
2290 ( p_MODIFIERS_rec.pricing_phase_id <>
2291 p_old_MODIFIERS_rec.pricing_phase_id OR
2292 p_old_MODIFIERS_rec.pricing_phase_id IS NULL )
2293 THEN
2294 IF NOT QP_Validate.Pricing_Phase(p_MODIFIERS_rec.pricing_phase_id) THEN
2295 x_return_status := FND_API.G_RET_STS_ERROR;
2296 END IF;
2297 END IF;
2298
2299 oe_debug_pub.add('here4');
2300 /* IF p_MODIFIERS_rec.base_uom_code IS NOT NULL AND
2301 ( p_MODIFIERS_rec.base_uom_code <>
2302 p_old_MODIFIERS_rec.base_uom_code OR
2303 p_old_MODIFIERS_rec.base_uom_code IS NULL )
2304 THEN
2305 IF NOT QP_Validate.Base_Uom(p_MODIFIERS_rec.base_uom_code) THEN
2306 x_return_status := FND_API.G_RET_STS_ERROR;
2307 END IF;
2308 END IF;
2309 */
2310 IF p_MODIFIERS_rec.comments IS NOT NULL AND
2311 ( p_MODIFIERS_rec.comments <>
2312 p_old_MODIFIERS_rec.comments OR
2313 p_old_MODIFIERS_rec.comments IS NULL )
2314 THEN
2315 IF NOT QP_Validate.Comments(p_MODIFIERS_rec.comments) THEN
2316 x_return_status := FND_API.G_RET_STS_ERROR;
2317 END IF;
2318 END IF;
2319
2320 IF p_MODIFIERS_rec.created_by IS NOT NULL AND
2321 ( p_MODIFIERS_rec.created_by <>
2322 p_old_MODIFIERS_rec.created_by OR
2323 p_old_MODIFIERS_rec.created_by IS NULL )
2324 THEN
2325 IF NOT QP_Validate.Created_By(p_MODIFIERS_rec.created_by) THEN
2326 x_return_status := FND_API.G_RET_STS_ERROR;
2327 END IF;
2328 END IF;
2329
2330 IF p_MODIFIERS_rec.creation_date IS NOT NULL AND
2331 ( p_MODIFIERS_rec.creation_date <>
2332 p_old_MODIFIERS_rec.creation_date OR
2333 p_old_MODIFIERS_rec.creation_date IS NULL )
2334 THEN
2335 IF NOT QP_Validate.Creation_Date(p_MODIFIERS_rec.creation_date) THEN
2336 x_return_status := FND_API.G_RET_STS_ERROR;
2337 END IF;
2338 END IF;
2339
2340 IF p_MODIFIERS_rec.effective_period_uom IS NOT NULL AND
2341 ( p_MODIFIERS_rec.effective_period_uom <>
2342 p_old_MODIFIERS_rec.effective_period_uom OR
2343 p_old_MODIFIERS_rec.effective_period_uom IS NULL )
2344 THEN
2345 IF NOT QP_Validate.Effective_Period_Uom(p_MODIFIERS_rec.effective_period_uom) THEN
2346 x_return_status := FND_API.G_RET_STS_ERROR;
2347 END IF;
2348 END IF;
2349
2350 IF p_MODIFIERS_rec.end_date_active IS NOT NULL AND
2351 ( p_MODIFIERS_rec.end_date_active <>
2352 p_old_MODIFIERS_rec.end_date_active OR
2353 p_old_MODIFIERS_rec.end_date_active IS NULL )
2354 THEN
2355 IF NOT QP_Validate.End_Date_Active(p_MODIFIERS_rec.end_date_active) THEN
2356 x_return_status := FND_API.G_RET_STS_ERROR;
2357 END IF;
2358 END IF;
2359
2360 IF p_MODIFIERS_rec.estim_accrual_rate IS NOT NULL AND
2361 ( p_MODIFIERS_rec.estim_accrual_rate <>
2362 p_old_MODIFIERS_rec.estim_accrual_rate OR
2363 p_old_MODIFIERS_rec.estim_accrual_rate IS NULL )
2364 THEN
2365 IF NOT QP_Validate.Estim_Accrual_Rate(p_MODIFIERS_rec.estim_accrual_rate) THEN
2366 x_return_status := FND_API.G_RET_STS_ERROR;
2367 END IF;
2368 END IF;
2369
2370 IF p_MODIFIERS_rec.generate_using_formula_id IS NOT NULL AND
2371 ( p_MODIFIERS_rec.generate_using_formula_id <>
2372 p_old_MODIFIERS_rec.generate_using_formula_id OR
2373 p_old_MODIFIERS_rec.generate_using_formula_id IS NULL )
2374 THEN
2375 IF NOT QP_Validate.Generate_Using_Formula(p_MODIFIERS_rec.generate_using_formula_id) THEN
2376 x_return_status := FND_API.G_RET_STS_ERROR;
2377 END IF;
2378 END IF;
2379
2380 /* IF p_MODIFIERS_rec.gl_class_id IS NOT NULL AND
2381 ( p_MODIFIERS_rec.gl_class_id <>
2382 p_old_MODIFIERS_rec.gl_class_id OR
2383 p_old_MODIFIERS_rec.gl_class_id IS NULL )
2384 THEN
2385 IF NOT QP_Validate.Gl_Class(p_MODIFIERS_rec.gl_class_id) THEN
2386 x_return_status := FND_API.G_RET_STS_ERROR;
2387 END IF;
2388 END IF;
2389 */
2390 IF p_MODIFIERS_rec.inventory_item_id IS NOT NULL AND
2391 ( p_MODIFIERS_rec.inventory_item_id <>
2392 p_old_MODIFIERS_rec.inventory_item_id OR
2393 p_old_MODIFIERS_rec.inventory_item_id IS NULL )
2394 THEN
2395 IF NOT QP_Validate.Inventory_Item(p_MODIFIERS_rec.inventory_item_id) THEN
2396 x_return_status := FND_API.G_RET_STS_ERROR;
2397 END IF;
2398 END IF;
2399
2400 IF p_MODIFIERS_rec.last_updated_by IS NOT NULL AND
2401 ( p_MODIFIERS_rec.last_updated_by <>
2402 p_old_MODIFIERS_rec.last_updated_by OR
2403 p_old_MODIFIERS_rec.last_updated_by IS NULL )
2404 THEN
2405 IF NOT QP_Validate.Last_Updated_By(p_MODIFIERS_rec.last_updated_by) THEN
2406 x_return_status := FND_API.G_RET_STS_ERROR;
2407 END IF;
2408 END IF;
2409
2410 IF p_MODIFIERS_rec.last_update_date IS NOT NULL AND
2411 ( p_MODIFIERS_rec.last_update_date <>
2412 p_old_MODIFIERS_rec.last_update_date OR
2413 p_old_MODIFIERS_rec.last_update_date IS NULL )
2414 THEN
2415 IF NOT QP_Validate.Last_Update_Date(p_MODIFIERS_rec.last_update_date) THEN
2416 x_return_status := FND_API.G_RET_STS_ERROR;
2417 END IF;
2418 END IF;
2419
2420 IF p_MODIFIERS_rec.last_update_login IS NOT NULL AND
2421 ( p_MODIFIERS_rec.last_update_login <>
2422 p_old_MODIFIERS_rec.last_update_login OR
2423 p_old_MODIFIERS_rec.last_update_login IS NULL )
2424 THEN
2425 IF NOT QP_Validate.Last_Update_Login(p_MODIFIERS_rec.last_update_login) THEN
2426 x_return_status := FND_API.G_RET_STS_ERROR;
2427 END IF;
2428 END IF;
2429
2430 oe_debug_pub.add('here5');
2431 IF p_MODIFIERS_rec.list_header_id IS NOT NULL AND
2432 ( p_MODIFIERS_rec.list_header_id <>
2433 p_old_MODIFIERS_rec.list_header_id OR
2434 p_old_MODIFIERS_rec.list_header_id IS NULL )
2435 THEN
2436 IF NOT QP_Validate.List_Header(p_MODIFIERS_rec.list_header_id) THEN
2437 x_return_status := FND_API.G_RET_STS_ERROR;
2438 END IF;
2439 END IF;
2440
2441 IF p_MODIFIERS_rec.list_line_id IS NOT NULL AND
2442 ( p_MODIFIERS_rec.list_line_id <>
2443 p_old_MODIFIERS_rec.list_line_id OR
2444 p_old_MODIFIERS_rec.list_line_id IS NULL )
2445 THEN
2446 IF NOT QP_Validate.List_Line(p_MODIFIERS_rec.list_line_id) THEN
2447 x_return_status := FND_API.G_RET_STS_ERROR;
2448 END IF;
2449 END IF;
2450
2451 IF p_MODIFIERS_rec.list_line_type_code IS NOT NULL AND
2452 ( p_MODIFIERS_rec.list_line_type_code <>
2453 p_old_MODIFIERS_rec.list_line_type_code OR
2454 p_old_MODIFIERS_rec.list_line_type_code IS NULL )
2455 THEN
2456 IF NOT QP_Validate.List_Line_Type(p_MODIFIERS_rec.list_line_type_code) THEN
2457 x_return_status := FND_API.G_RET_STS_ERROR;
2458 END IF;
2459 END IF;
2460
2461 IF p_MODIFIERS_rec.list_price IS NOT NULL AND
2462 ( p_MODIFIERS_rec.list_price <>
2463 p_old_MODIFIERS_rec.list_price OR
2464 p_old_MODIFIERS_rec.list_price IS NULL )
2465 THEN
2466 IF NOT QP_Validate.List_Price(p_MODIFIERS_rec.list_price) THEN
2467 x_return_status := FND_API.G_RET_STS_ERROR;
2468 END IF;
2469 END IF;
2470
2471 /* IF p_MODIFIERS_rec.list_price_uom_code IS NOT NULL AND
2472 ( p_MODIFIERS_rec.list_price_uom_code <>
2473 p_old_MODIFIERS_rec.list_price_uom_code OR
2474 p_old_MODIFIERS_rec.list_price_uom_code IS NULL )
2475 THEN
2476 IF NOT QP_Validate.List_Price_Uom(p_MODIFIERS_rec.list_price_uom_code) THEN
2477 x_return_status := FND_API.G_RET_STS_ERROR;
2478 END IF;
2479 END IF;
2480 */
2481 IF p_MODIFIERS_rec.modifier_level_code IS NOT NULL AND
2482 ( p_MODIFIERS_rec.modifier_level_code <>
2483 p_old_MODIFIERS_rec.modifier_level_code OR
2484 p_old_MODIFIERS_rec.modifier_level_code IS NULL )
2485 THEN
2486 IF NOT QP_Validate.Modifier_Level(p_MODIFIERS_rec.modifier_level_code) THEN
2487 x_return_status := FND_API.G_RET_STS_ERROR;
2488 END IF;
2489 END IF;
2490
2491 /* IF p_MODIFIERS_rec.new_price IS NOT NULL AND
2492 ( p_MODIFIERS_rec.new_price <>
2493 p_old_MODIFIERS_rec.new_price OR
2494 p_old_MODIFIERS_rec.new_price IS NULL )
2495 THEN
2496 IF NOT QP_Validate.New_Price(p_MODIFIERS_rec.new_price) THEN
2497 x_return_status := FND_API.G_RET_STS_ERROR;
2498 END IF;
2499 END IF;
2500 */
2501 IF p_MODIFIERS_rec.number_effective_periods IS NOT NULL AND
2502 ( p_MODIFIERS_rec.number_effective_periods <>
2503 p_old_MODIFIERS_rec.number_effective_periods OR
2504 p_old_MODIFIERS_rec.number_effective_periods IS NULL )
2505 THEN
2506 IF NOT QP_Validate.Number_Effective_Periods(p_MODIFIERS_rec.number_effective_periods) THEN
2507 x_return_status := FND_API.G_RET_STS_ERROR;
2508 END IF;
2509 END IF;
2510
2511 oe_debug_pub.add('here6');
2512 IF p_MODIFIERS_rec.operand IS NOT NULL AND
2513 ( p_MODIFIERS_rec.operand <>
2514 p_old_MODIFIERS_rec.operand OR
2515 p_old_MODIFIERS_rec.operand IS NULL )
2516 THEN
2517 oe_debug_pub.add('here7');
2518 IF NOT QP_Validate.Operand(p_MODIFIERS_rec.operand) THEN
2519 oe_debug_pub.add('here8');
2520 x_return_status := FND_API.G_RET_STS_ERROR;
2521 END IF;
2522 END IF;
2523
2524 oe_debug_pub.add('here9');
2525 IF p_MODIFIERS_rec.organization_id IS NOT NULL AND
2526 ( p_MODIFIERS_rec.organization_id <>
2527 p_old_MODIFIERS_rec.organization_id OR
2528 p_old_MODIFIERS_rec.organization_id IS NULL )
2529 THEN
2530 IF NOT QP_Validate.Organization(p_MODIFIERS_rec.organization_id) THEN
2531 x_return_status := FND_API.G_RET_STS_ERROR;
2532 END IF;
2533 END IF;
2534
2535 oe_debug_pub.add('here10');
2536 IF p_MODIFIERS_rec.override_flag IS NOT NULL AND
2537 ( p_MODIFIERS_rec.override_flag <>
2538 p_old_MODIFIERS_rec.override_flag OR
2539 p_old_MODIFIERS_rec.override_flag IS NULL )
2540 THEN
2541 IF NOT QP_Validate.Override(p_MODIFIERS_rec.override_flag) THEN
2542 x_return_status := FND_API.G_RET_STS_ERROR;
2543 END IF;
2544 END IF;
2545
2546 oe_debug_pub.add('here11');
2547 IF p_MODIFIERS_rec.percent_price IS NOT NULL AND
2548 ( p_MODIFIERS_rec.percent_price <>
2549 p_old_MODIFIERS_rec.percent_price OR
2550 p_old_MODIFIERS_rec.percent_price IS NULL )
2551 THEN
2552 IF NOT QP_Validate.Percent_Price(p_MODIFIERS_rec.percent_price) THEN
2553 x_return_status := FND_API.G_RET_STS_ERROR;
2554 END IF;
2555 END IF;
2556
2557 IF p_MODIFIERS_rec.price_break_type_code IS NOT NULL AND
2558 ( p_MODIFIERS_rec.price_break_type_code <>
2559 p_old_MODIFIERS_rec.price_break_type_code OR
2560 p_old_MODIFIERS_rec.price_break_type_code IS NULL )
2561 THEN
2562 IF NOT QP_Validate.Price_Break_Type(p_MODIFIERS_rec.price_break_type_code) THEN
2563 x_return_status := FND_API.G_RET_STS_ERROR;
2564 END IF;
2565 END IF;
2566
2567 IF p_MODIFIERS_rec.price_by_formula_id IS NOT NULL AND
2568 ( p_MODIFIERS_rec.price_by_formula_id <>
2569 p_old_MODIFIERS_rec.price_by_formula_id OR
2570 p_old_MODIFIERS_rec.price_by_formula_id IS NULL )
2571 THEN
2572 IF NOT QP_Validate.Price_By_Formula(p_MODIFIERS_rec.price_by_formula_id) THEN
2573 x_return_status := FND_API.G_RET_STS_ERROR;
2574 END IF;
2575 END IF;
2576
2577 IF p_MODIFIERS_rec.primary_uom_flag IS NOT NULL AND
2578 ( p_MODIFIERS_rec.primary_uom_flag <>
2579 p_old_MODIFIERS_rec.primary_uom_flag OR
2580 p_old_MODIFIERS_rec.primary_uom_flag IS NULL )
2581 THEN
2582 IF NOT QP_Validate.Primary_Uom(p_MODIFIERS_rec.primary_uom_flag) THEN
2583 x_return_status := FND_API.G_RET_STS_ERROR;
2584 END IF;
2585 END IF;
2586
2587 IF p_MODIFIERS_rec.print_on_invoice_flag IS NOT NULL AND
2588 ( p_MODIFIERS_rec.print_on_invoice_flag <>
2589 p_old_MODIFIERS_rec.print_on_invoice_flag OR
2590 p_old_MODIFIERS_rec.print_on_invoice_flag IS NULL )
2591 THEN
2592 IF NOT QP_Validate.Print_On_Invoice(p_MODIFIERS_rec.print_on_invoice_flag) THEN
2593 x_return_status := FND_API.G_RET_STS_ERROR;
2594 END IF;
2595 END IF;
2596
2597 IF p_MODIFIERS_rec.program_application_id IS NOT NULL AND
2598 ( p_MODIFIERS_rec.program_application_id <>
2599 p_old_MODIFIERS_rec.program_application_id OR
2600 p_old_MODIFIERS_rec.program_application_id IS NULL )
2601 THEN
2602 IF NOT QP_Validate.Program_Application(p_MODIFIERS_rec.program_application_id) THEN
2603 x_return_status := FND_API.G_RET_STS_ERROR;
2604 END IF;
2605 END IF;
2606
2607 IF p_MODIFIERS_rec.program_id IS NOT NULL AND
2608 ( p_MODIFIERS_rec.program_id <>
2609 p_old_MODIFIERS_rec.program_id OR
2610 p_old_MODIFIERS_rec.program_id IS NULL )
2611 THEN
2612 IF NOT QP_Validate.Program(p_MODIFIERS_rec.program_id) THEN
2613 x_return_status := FND_API.G_RET_STS_ERROR;
2614 END IF;
2615 END IF;
2616
2617 IF p_MODIFIERS_rec.program_update_date IS NOT NULL AND
2618 ( p_MODIFIERS_rec.program_update_date <>
2619 p_old_MODIFIERS_rec.program_update_date OR
2620 p_old_MODIFIERS_rec.program_update_date IS NULL )
2621 THEN
2622 IF NOT QP_Validate.Program_Update_Date(p_MODIFIERS_rec.program_update_date) THEN
2623 x_return_status := FND_API.G_RET_STS_ERROR;
2624 END IF;
2625 END IF;
2626
2627 /* IF p_MODIFIERS_rec.rebate_subtype_code IS NOT NULL AND
2628 ( p_MODIFIERS_rec.rebate_subtype_code <>
2629 p_old_MODIFIERS_rec.rebate_subtype_code OR
2630 p_old_MODIFIERS_rec.rebate_subtype_code IS NULL )
2631 THEN
2632 IF NOT QP_Validate.Rebate_Subtype(p_MODIFIERS_rec.rebate_subtype_code) THEN
2633 x_return_status := FND_API.G_RET_STS_ERROR;
2634 END IF;
2635 END IF;
2636 */
2637 IF p_MODIFIERS_rec.rebate_trxn_type_code IS NOT NULL AND
2638 ( p_MODIFIERS_rec.rebate_trxn_type_code <>
2639 p_old_MODIFIERS_rec.rebate_trxn_type_code OR
2640 p_old_MODIFIERS_rec.rebate_trxn_type_code IS NULL )
2641 THEN
2642 IF NOT QP_Validate.Rebate_Transaction_Type(p_MODIFIERS_rec.rebate_trxn_type_code) THEN
2643 x_return_status := FND_API.G_RET_STS_ERROR;
2644 END IF;
2645 END IF;
2646
2647 IF p_MODIFIERS_rec.related_item_id IS NOT NULL AND
2648 ( p_MODIFIERS_rec.related_item_id <>
2649 p_old_MODIFIERS_rec.related_item_id OR
2650 p_old_MODIFIERS_rec.related_item_id IS NULL )
2651 THEN
2652 IF NOT QP_Validate.Related_Item(p_MODIFIERS_rec.related_item_id) THEN
2653 x_return_status := FND_API.G_RET_STS_ERROR;
2654 END IF;
2655 END IF;
2656
2657 IF p_MODIFIERS_rec.relationship_type_id IS NOT NULL AND
2658 ( p_MODIFIERS_rec.relationship_type_id <>
2659 p_old_MODIFIERS_rec.relationship_type_id OR
2660 p_old_MODIFIERS_rec.relationship_type_id IS NULL )
2661 THEN
2662 IF NOT QP_Validate.Relationship_Type(p_MODIFIERS_rec.relationship_type_id) THEN
2663 x_return_status := FND_API.G_RET_STS_ERROR;
2664 END IF;
2665 END IF;
2666
2667 IF p_MODIFIERS_rec.reprice_flag IS NOT NULL AND
2668 ( p_MODIFIERS_rec.reprice_flag <>
2669 p_old_MODIFIERS_rec.reprice_flag OR
2670 p_old_MODIFIERS_rec.reprice_flag IS NULL )
2671 THEN
2672 IF NOT QP_Validate.Reprice(p_MODIFIERS_rec.reprice_flag) THEN
2673 x_return_status := FND_API.G_RET_STS_ERROR;
2674 END IF;
2675 END IF;
2676
2677 IF p_MODIFIERS_rec.request_id IS NOT NULL AND
2678 ( p_MODIFIERS_rec.request_id <>
2679 p_old_MODIFIERS_rec.request_id OR
2680 p_old_MODIFIERS_rec.request_id IS NULL )
2681 THEN
2682 IF NOT QP_Validate.Request(p_MODIFIERS_rec.request_id) THEN
2683 x_return_status := FND_API.G_RET_STS_ERROR;
2684 END IF;
2685 END IF;
2686
2687 IF p_MODIFIERS_rec.revision IS NOT NULL AND
2688 ( p_MODIFIERS_rec.revision <>
2689 p_old_MODIFIERS_rec.revision OR
2690 p_old_MODIFIERS_rec.revision IS NULL )
2691 THEN
2692 IF NOT QP_Validate.Revision(p_MODIFIERS_rec.revision) THEN
2693 x_return_status := FND_API.G_RET_STS_ERROR;
2694 END IF;
2695 END IF;
2696
2697 IF p_MODIFIERS_rec.revision_date IS NOT NULL AND
2698 ( p_MODIFIERS_rec.revision_date <>
2699 p_old_MODIFIERS_rec.revision_date OR
2700 p_old_MODIFIERS_rec.revision_date IS NULL )
2701 THEN
2702 IF NOT QP_Validate.Revision_Date(p_MODIFIERS_rec.revision_date) THEN
2703 x_return_status := FND_API.G_RET_STS_ERROR;
2704 END IF;
2705 END IF;
2706
2707 IF p_MODIFIERS_rec.revision_reason_code IS NOT NULL AND
2708 ( p_MODIFIERS_rec.revision_reason_code <>
2709 p_old_MODIFIERS_rec.revision_reason_code OR
2710 p_old_MODIFIERS_rec.revision_reason_code IS NULL )
2711 THEN
2712 IF NOT QP_Validate.Revision_Reason(p_MODIFIERS_rec.revision_reason_code) THEN
2713 x_return_status := FND_API.G_RET_STS_ERROR;
2714 END IF;
2715 END IF;
2716
2717 IF p_MODIFIERS_rec.start_date_active IS NOT NULL AND
2718 ( p_MODIFIERS_rec.start_date_active <>
2719 p_old_MODIFIERS_rec.start_date_active OR
2720 p_old_MODIFIERS_rec.start_date_active IS NULL )
2721 THEN
2722 IF NOT QP_Validate.Start_Date_Active(p_MODIFIERS_rec.start_date_active) THEN
2723 x_return_status := FND_API.G_RET_STS_ERROR;
2724 END IF;
2725 END IF;
2726
2727 IF p_MODIFIERS_rec.substitution_attribute IS NOT NULL AND
2728 ( p_MODIFIERS_rec.substitution_attribute <>
2729 p_old_MODIFIERS_rec.substitution_attribute OR
2730 p_old_MODIFIERS_rec.substitution_attribute IS NULL )
2731 THEN
2732 IF NOT QP_Validate.Substitution_Attribute(p_MODIFIERS_rec.substitution_attribute) THEN
2733 x_return_status := FND_API.G_RET_STS_ERROR;
2734 END IF;
2735 END IF;
2736
2737 IF p_MODIFIERS_rec.substitution_context IS NOT NULL AND
2738 ( p_MODIFIERS_rec.substitution_context <>
2739 p_old_MODIFIERS_rec.substitution_context OR
2740 p_old_MODIFIERS_rec.substitution_context IS NULL )
2741 THEN
2742 IF NOT QP_Validate.Substitution_Context(p_MODIFIERS_rec.substitution_context) THEN
2743 x_return_status := FND_API.G_RET_STS_ERROR;
2744 END IF;
2745 END IF;
2746
2747 IF p_MODIFIERS_rec.substitution_value IS NOT NULL AND
2748 ( p_MODIFIERS_rec.substitution_value <>
2749 p_old_MODIFIERS_rec.substitution_value OR
2750 p_old_MODIFIERS_rec.substitution_value IS NULL )
2751 THEN
2752 IF NOT QP_Validate.Substitution_Value(p_MODIFIERS_rec.substitution_value) THEN
2753 x_return_status := FND_API.G_RET_STS_ERROR;
2754 END IF;
2755 END IF;
2756
2757 IF p_MODIFIERS_rec.accrual_flag IS NOT NULL AND
2758 ( p_MODIFIERS_rec.accrual_flag <>
2759 p_old_MODIFIERS_rec.accrual_flag OR
2760 p_old_MODIFIERS_rec.accrual_flag IS NULL )
2761 THEN
2762 IF NOT QP_Validate.Accrual_Flag(p_MODIFIERS_rec.accrual_flag) THEN
2763 x_return_status := FND_API.G_RET_STS_ERROR;
2764 END IF;
2765 END IF;
2766
2767 IF p_MODIFIERS_rec.pricing_group_sequence IS NOT NULL AND
2768 ( p_MODIFIERS_rec.pricing_group_sequence <>
2769 p_old_MODIFIERS_rec.pricing_group_sequence OR
2770 p_old_MODIFIERS_rec.pricing_group_sequence IS NULL )
2771 THEN
2772 IF NOT QP_Validate.Pricing_Group_Sequence(p_MODIFIERS_rec.pricing_group_sequence) THEN
2773 x_return_status := FND_API.G_RET_STS_ERROR;
2774 END IF;
2775 END IF;
2776 oe_debug_pub.add('here12');
2777 IF p_MODIFIERS_rec.incompatibility_grp_code IS NOT NULL AND
2778 ( p_MODIFIERS_rec.incompatibility_grp_code <>
2779 p_old_MODIFIERS_rec.incompatibility_grp_code OR
2780 p_old_MODIFIERS_rec.incompatibility_grp_code IS NULL )
2781 THEN
2782 IF NOT QP_Validate.Incompatibility_Grp_Code(p_MODIFIERS_rec.incompatibility_grp_code) THEN
2783 x_return_status := FND_API.G_RET_STS_ERROR;
2784 END IF;
2785 END IF;
2786
2787 oe_debug_pub.add('here13');
2788 IF p_MODIFIERS_rec.list_line_no IS NOT NULL AND
2789 ( p_MODIFIERS_rec.list_line_no <>
2790 p_old_MODIFIERS_rec.list_line_no OR
2791 p_old_MODIFIERS_rec.list_line_no IS NULL )
2792 THEN
2793 IF NOT QP_Validate.List_Line_No(p_MODIFIERS_rec.list_line_no) THEN
2794 x_return_status := FND_API.G_RET_STS_ERROR;
2795 END IF;
2796 END IF;
2797
2798 IF p_MODIFIERS_rec.product_precedence IS NOT NULL AND
2799 ( p_MODIFIERS_rec.product_precedence <>
2800 p_old_MODIFIERS_rec.product_precedence OR
2801 p_old_MODIFIERS_rec.product_precedence IS NULL )
2802 THEN
2803 IF NOT QP_Validate.Product_Precedence(p_MODIFIERS_rec.product_precedence) THEN
2804 x_return_status := FND_API.G_RET_STS_ERROR;
2805 END IF;
2806 END IF;
2807
2808 IF p_MODIFIERS_rec.expiration_period_start_date IS NOT NULL AND
2809 ( p_MODIFIERS_rec.expiration_period_start_date <>
2810 p_old_MODIFIERS_rec.expiration_period_start_date OR
2811 p_old_MODIFIERS_rec.expiration_period_start_date IS NULL )
2812 THEN
2813 IF NOT QP_Validate.Exp_Period_Start_Date(p_MODIFIERS_rec.expiration_period_start_date) THEN
2814 x_return_status := FND_API.G_RET_STS_ERROR;
2815 END IF;
2816 END IF;
2817
2818 IF p_MODIFIERS_rec.number_expiration_periods IS NOT NULL AND
2819 ( p_MODIFIERS_rec.number_expiration_periods <>
2820 p_old_MODIFIERS_rec.number_expiration_periods OR
2821 p_old_MODIFIERS_rec.number_expiration_periods IS NULL )
2822 THEN
2823 IF NOT QP_Validate.Number_Expiration_Periods(p_MODIFIERS_rec.number_expiration_periods) THEN
2824 x_return_status := FND_API.G_RET_STS_ERROR;
2825 END IF;
2826 END IF;
2827
2828 IF p_MODIFIERS_rec.number_expiration_periods IS NOT NULL AND
2829 ( p_MODIFIERS_rec.number_expiration_periods <>
2830 p_old_MODIFIERS_rec.number_expiration_periods OR
2831 p_old_MODIFIERS_rec.number_expiration_periods IS NULL )
2832 THEN
2833 IF NOT QP_Validate.Number_Expiration_Periods(p_MODIFIERS_rec.number_expiration_periods) THEN
2834 x_return_status := FND_API.G_RET_STS_ERROR;
2835 END IF;
2836 END IF;
2837
2838 IF p_MODIFIERS_rec.expiration_period_uom IS NOT NULL AND
2839 ( p_MODIFIERS_rec.expiration_period_uom <>
2840 p_old_MODIFIERS_rec.expiration_period_uom OR
2841 p_old_MODIFIERS_rec.expiration_period_uom IS NULL )
2842 THEN
2843 IF NOT QP_Validate.Expiration_Period_Uom(p_MODIFIERS_rec.expiration_period_uom) THEN
2844 x_return_status := FND_API.G_RET_STS_ERROR;
2845 END IF;
2846 END IF;
2847
2848 IF p_MODIFIERS_rec.expiration_date IS NOT NULL AND
2849 ( p_MODIFIERS_rec.expiration_date <>
2850 p_old_MODIFIERS_rec.expiration_date OR
2851 p_old_MODIFIERS_rec.expiration_date IS NULL )
2852 THEN
2853 IF NOT QP_Validate.Expiration_Date(p_MODIFIERS_rec.expiration_date) THEN
2854 x_return_status := FND_API.G_RET_STS_ERROR;
2855 END IF;
2856 END IF;
2857
2858 IF p_MODIFIERS_rec.estim_gl_value IS NOT NULL AND
2859 ( p_MODIFIERS_rec.estim_gl_value <>
2860 p_old_MODIFIERS_rec.estim_gl_value OR
2861 p_old_MODIFIERS_rec.estim_gl_value IS NULL )
2862 THEN
2863 IF NOT QP_Validate.Estim_Gl_Value(p_MODIFIERS_rec.estim_gl_value) THEN
2864 x_return_status := FND_API.G_RET_STS_ERROR;
2865 END IF;
2866 END IF;
2867
2868 IF p_MODIFIERS_rec.benefit_price_list_line_id IS NOT NULL AND
2869 ( p_MODIFIERS_rec.benefit_price_list_line_id <>
2870 p_old_MODIFIERS_rec.benefit_price_list_line_id OR
2871 p_old_MODIFIERS_rec.benefit_price_list_line_id IS NULL )
2872 THEN
2873 IF NOT QP_Validate.Ben_Price_List_Line(p_MODIFIERS_rec.benefit_price_list_line_id) THEN
2874 x_return_status := FND_API.G_RET_STS_ERROR;
2875 END IF;
2876 END IF;
2877
2878 /* IF p_MODIFIERS_rec.recurring_flag IS NOT NULL AND
2879 ( p_MODIFIERS_rec.recurring_flag <>
2880 p_old_MODIFIERS_rec.recurring_flag OR
2881 p_old_MODIFIERS_rec.recurring_flag IS NULL )
2882 THEN
2883 IF NOT QP_Validate.Recurring(p_MODIFIERS_rec.recurring_flag) THEN
2884 x_return_status := FND_API.G_RET_STS_ERROR;
2885 END IF;
2886 END IF;
2887 */
2888 IF p_MODIFIERS_rec.benefit_limit IS NOT NULL AND
2889 ( p_MODIFIERS_rec.benefit_limit <>
2890 p_old_MODIFIERS_rec.benefit_limit OR
2891 p_old_MODIFIERS_rec.benefit_limit IS NULL )
2892 THEN
2893 IF NOT QP_Validate.Benefit_Limit(p_MODIFIERS_rec.benefit_limit) THEN
2894 x_return_status := FND_API.G_RET_STS_ERROR;
2895 END IF;
2896 END IF;
2897
2898 IF p_MODIFIERS_rec.charge_type_code IS NOT NULL AND
2899 ( p_MODIFIERS_rec.charge_type_code <>
2900 p_old_MODIFIERS_rec.charge_type_code OR
2901 p_old_MODIFIERS_rec.charge_type_code IS NULL )
2902 THEN
2903 IF NOT QP_Validate.Charge_Type(p_MODIFIERS_rec.charge_type_code) THEN
2904 x_return_status := FND_API.G_RET_STS_ERROR;
2905 END IF;
2906 END IF;
2907
2908 IF p_MODIFIERS_rec.charge_subtype_code IS NOT NULL AND
2909 ( p_MODIFIERS_rec.charge_subtype_code <>
2910 p_old_MODIFIERS_rec.charge_subtype_code OR
2911 p_old_MODIFIERS_rec.charge_subtype_code IS NULL )
2912 THEN
2913 IF NOT QP_Validate.Charge_Subtype(p_MODIFIERS_rec.charge_subtype_code) THEN
2914 x_return_status := FND_API.G_RET_STS_ERROR;
2915 END IF;
2916 END IF;
2917
2918 IF p_MODIFIERS_rec.benefit_qty IS NOT NULL AND
2919 ( p_MODIFIERS_rec.benefit_qty <>
2920 p_old_MODIFIERS_rec.benefit_qty OR
2921 p_old_MODIFIERS_rec.benefit_qty IS NULL )
2922 THEN
2923 IF NOT QP_Validate.Benefit_Qty(p_MODIFIERS_rec.benefit_qty) THEN
2924 x_return_status := FND_API.G_RET_STS_ERROR;
2925 END IF;
2926 END IF;
2927
2928 IF p_MODIFIERS_rec.benefit_uom_code IS NOT NULL AND
2929 ( p_MODIFIERS_rec.benefit_uom_code <>
2930 p_old_MODIFIERS_rec.benefit_uom_code OR
2931 p_old_MODIFIERS_rec.benefit_uom_code IS NULL )
2932 THEN
2933 IF NOT QP_Validate.Benefit_Uom(p_MODIFIERS_rec.benefit_uom_code) THEN
2934 x_return_status := FND_API.G_RET_STS_ERROR;
2935 END IF;
2936 END IF;
2937
2938 IF p_MODIFIERS_rec.accrual_conversion_rate IS NOT NULL AND
2939 ( p_MODIFIERS_rec.accrual_conversion_rate <>
2940 p_old_MODIFIERS_rec.accrual_conversion_rate OR
2941 p_old_MODIFIERS_rec.accrual_conversion_rate IS NULL )
2942 THEN
2943 IF NOT QP_Validate.Accrual_Conversion_Rate(p_MODIFIERS_rec.accrual_conversion_rate) THEN
2944 x_return_status := FND_API.G_RET_STS_ERROR;
2945 END IF;
2946 END IF;
2947
2948 IF p_MODIFIERS_rec.proration_type_code IS NOT NULL AND
2949 ( p_MODIFIERS_rec.proration_type_code <>
2950 p_old_MODIFIERS_rec.proration_type_code OR
2951 p_old_MODIFIERS_rec.proration_type_code IS NULL )
2952 THEN
2953 IF NOT QP_Validate.Proration_Type(p_MODIFIERS_rec.proration_type_code) THEN
2954 x_return_status := FND_API.G_RET_STS_ERROR;
2955 END IF;
2956 END IF;
2957
2958 IF p_MODIFIERS_rec.from_rltd_modifier_id IS NOT NULL AND
2959 ( p_MODIFIERS_rec.from_rltd_modifier_id <>
2960 p_old_MODIFIERS_rec.from_rltd_modifier_id OR
2961 p_old_MODIFIERS_rec.from_rltd_modifier_id IS NULL )
2962 THEN
2963 IF NOT QP_Validate.From_Rltd_Modifier(p_MODIFIERS_rec.from_rltd_modifier_id) THEN
2964 x_return_status := FND_API.G_RET_STS_ERROR;
2965 END IF;
2966 END IF;
2967
2968 IF p_MODIFIERS_rec.to_rltd_modifier_id IS NOT NULL AND
2969 ( p_MODIFIERS_rec.to_rltd_modifier_id <>
2970 p_old_MODIFIERS_rec.to_rltd_modifier_id OR
2971 p_old_MODIFIERS_rec.to_rltd_modifier_id IS NULL )
2972 THEN
2973 IF NOT QP_Validate.To_Rltd_Modifier(p_MODIFIERS_rec.to_rltd_modifier_id) THEN
2974 x_return_status := FND_API.G_RET_STS_ERROR;
2975 END IF;
2976 END IF;
2977
2978 IF p_MODIFIERS_rec.rltd_modifier_grp_no IS NOT NULL AND
2979 ( p_MODIFIERS_rec.rltd_modifier_grp_no <>
2980 p_old_MODIFIERS_rec.rltd_modifier_grp_no OR
2981 p_old_MODIFIERS_rec.rltd_modifier_grp_no IS NULL )
2982 THEN
2983 IF NOT QP_Validate.Rltd_Modifier_Grp_No(p_MODIFIERS_rec.rltd_modifier_grp_no) THEN
2984 x_return_status := FND_API.G_RET_STS_ERROR;
2985 END IF;
2986 END IF;
2987
2988 IF p_MODIFIERS_rec.rltd_modifier_grp_type IS NOT NULL AND
2989 ( p_MODIFIERS_rec.rltd_modifier_grp_type <>
2990 p_old_MODIFIERS_rec.rltd_modifier_grp_type OR
2991 p_old_MODIFIERS_rec.rltd_modifier_grp_type IS NULL )
2992 THEN
2993 IF NOT QP_Validate.Rltd_Modifier_Grp_Type(p_MODIFIERS_rec.rltd_modifier_grp_type) THEN
2994 x_return_status := FND_API.G_RET_STS_ERROR;
2995 END IF;
2996 END IF;
2997
2998 --Item Amount
2999 IF p_MODIFIERS_rec.net_amount_flag IS NOT NULL AND
3000 ( p_MODIFIERS_rec.net_amount_flag <>
3001 p_old_MODIFIERS_rec.net_amount_flag OR
3002 p_old_MODIFIERS_rec.net_amount_flag IS NULL )
3003 THEN
3004 IF NOT QP_Validate.Net_Amount(p_MODIFIERS_rec.net_amount_flag) THEN
3005 x_return_status := FND_API.G_RET_STS_ERROR;
3006 END IF;
3007 END IF;
3008
3009 -- Accumulation of range breaks
3010 IF p_MODIFIERS_rec.accum_attribute IS NOT NULL AND
3011 ( p_MODIFIERS_rec.accum_attribute <>
3012 p_old_MODIFIERS_rec.accum_attribute OR
3013 p_old_MODIFIERS_rec.accum_attribute IS NULL )
3014 THEN
3015 IF NOT QP_Validate.Accum_Attribute(p_MODIFIERS_rec.accum_attribute) THEN
3016 x_return_status := FND_API.G_RET_STS_ERROR;
3017 END IF;
3018 END IF;
3019
3020
3021
3022 oe_debug_pub.add('here14');
3023 IF (p_MODIFIERS_rec.attribute1 IS NOT NULL AND
3024 ( p_MODIFIERS_rec.attribute1 <>
3025 p_old_MODIFIERS_rec.attribute1 OR
3026 p_old_MODIFIERS_rec.attribute1 IS NULL ))
3027 OR (p_MODIFIERS_rec.attribute10 IS NOT NULL AND
3028 ( p_MODIFIERS_rec.attribute10 <>
3029 p_old_MODIFIERS_rec.attribute10 OR
3030 p_old_MODIFIERS_rec.attribute10 IS NULL ))
3031 OR (p_MODIFIERS_rec.attribute11 IS NOT NULL AND
3032 ( p_MODIFIERS_rec.attribute11 <>
3033 p_old_MODIFIERS_rec.attribute11 OR
3034 p_old_MODIFIERS_rec.attribute11 IS NULL ))
3035 OR (p_MODIFIERS_rec.attribute12 IS NOT NULL AND
3036 ( p_MODIFIERS_rec.attribute12 <>
3037 p_old_MODIFIERS_rec.attribute12 OR
3038 p_old_MODIFIERS_rec.attribute12 IS NULL ))
3039 OR (p_MODIFIERS_rec.attribute13 IS NOT NULL AND
3040 ( p_MODIFIERS_rec.attribute13 <>
3041 p_old_MODIFIERS_rec.attribute13 OR
3042 p_old_MODIFIERS_rec.attribute13 IS NULL ))
3043 OR (p_MODIFIERS_rec.attribute14 IS NOT NULL AND
3044 ( p_MODIFIERS_rec.attribute14 <>
3045 p_old_MODIFIERS_rec.attribute14 OR
3046 p_old_MODIFIERS_rec.attribute14 IS NULL ))
3047 OR (p_MODIFIERS_rec.attribute15 IS NOT NULL AND
3048 ( p_MODIFIERS_rec.attribute15 <>
3049 p_old_MODIFIERS_rec.attribute15 OR
3050 p_old_MODIFIERS_rec.attribute15 IS NULL ))
3051 OR (p_MODIFIERS_rec.attribute2 IS NOT NULL AND
3052 ( p_MODIFIERS_rec.attribute2 <>
3053 p_old_MODIFIERS_rec.attribute2 OR
3054 p_old_MODIFIERS_rec.attribute2 IS NULL ))
3055 OR (p_MODIFIERS_rec.attribute3 IS NOT NULL AND
3056 ( p_MODIFIERS_rec.attribute3 <>
3057 p_old_MODIFIERS_rec.attribute3 OR
3058 p_old_MODIFIERS_rec.attribute3 IS NULL ))
3059 OR (p_MODIFIERS_rec.attribute4 IS NOT NULL AND
3060 ( p_MODIFIERS_rec.attribute4 <>
3061 p_old_MODIFIERS_rec.attribute4 OR
3062 p_old_MODIFIERS_rec.attribute4 IS NULL ))
3063 OR (p_MODIFIERS_rec.attribute5 IS NOT NULL AND
3064 ( p_MODIFIERS_rec.attribute5 <>
3065 p_old_MODIFIERS_rec.attribute5 OR
3066 p_old_MODIFIERS_rec.attribute5 IS NULL ))
3067 OR (p_MODIFIERS_rec.attribute6 IS NOT NULL AND
3068 ( p_MODIFIERS_rec.attribute6 <>
3069 p_old_MODIFIERS_rec.attribute6 OR
3070 p_old_MODIFIERS_rec.attribute6 IS NULL ))
3071 OR (p_MODIFIERS_rec.attribute7 IS NOT NULL AND
3072 ( p_MODIFIERS_rec.attribute7 <>
3073 p_old_MODIFIERS_rec.attribute7 OR
3074 p_old_MODIFIERS_rec.attribute7 IS NULL ))
3075 OR (p_MODIFIERS_rec.attribute8 IS NOT NULL AND
3076 ( p_MODIFIERS_rec.attribute8 <>
3077 p_old_MODIFIERS_rec.attribute8 OR
3078 p_old_MODIFIERS_rec.attribute8 IS NULL ))
3079 OR (p_MODIFIERS_rec.attribute9 IS NOT NULL AND
3080 ( p_MODIFIERS_rec.attribute9 <>
3081 p_old_MODIFIERS_rec.attribute9 OR
3082 p_old_MODIFIERS_rec.attribute9 IS NULL ))
3083 OR (p_MODIFIERS_rec.context IS NOT NULL AND
3084 ( p_MODIFIERS_rec.context <>
3085 p_old_MODIFIERS_rec.context OR
3086 p_old_MODIFIERS_rec.context IS NULL ))
3087 THEN
3088
3089 -- These calls are temporarily commented out
3090
3091 /*
3092 FND_FLEX_DESC_VAL.Set_Column_Value
3093 ( column_name => 'ATTRIBUTE1'
3094 , column_value => p_MODIFIERS_rec.attribute1
3095 );
3096 FND_FLEX_DESC_VAL.Set_Column_Value
3097 ( column_name => 'ATTRIBUTE10'
3098 , column_value => p_MODIFIERS_rec.attribute10
3099 );
3100 FND_FLEX_DESC_VAL.Set_Column_Value
3101 ( column_name => 'ATTRIBUTE11'
3102 , column_value => p_MODIFIERS_rec.attribute11
3103 );
3104 FND_FLEX_DESC_VAL.Set_Column_Value
3105 ( column_name => 'ATTRIBUTE12'
3106 , column_value => p_MODIFIERS_rec.attribute12
3107 );
3108 FND_FLEX_DESC_VAL.Set_Column_Value
3109 ( column_name => 'ATTRIBUTE13'
3110 , column_value => p_MODIFIERS_rec.attribute13
3111 );
3112 FND_FLEX_DESC_VAL.Set_Column_Value
3113 ( column_name => 'ATTRIBUTE14'
3114 , column_value => p_MODIFIERS_rec.attribute14
3115 );
3116 FND_FLEX_DESC_VAL.Set_Column_Value
3117 ( column_name => 'ATTRIBUTE15'
3118 , column_value => p_MODIFIERS_rec.attribute15
3119 );
3120 FND_FLEX_DESC_VAL.Set_Column_Value
3121 ( column_name => 'ATTRIBUTE2'
3122 , column_value => p_MODIFIERS_rec.attribute2
3123 );
3124 FND_FLEX_DESC_VAL.Set_Column_Value
3125 ( column_name => 'ATTRIBUTE3'
3126 , column_value => p_MODIFIERS_rec.attribute3
3127 );
3128 FND_FLEX_DESC_VAL.Set_Column_Value
3129 ( column_name => 'ATTRIBUTE4'
3130 , column_value => p_MODIFIERS_rec.attribute4
3131 );
3132 FND_FLEX_DESC_VAL.Set_Column_Value
3133 ( column_name => 'ATTRIBUTE5'
3134 , column_value => p_MODIFIERS_rec.attribute5
3135 );
3136 FND_FLEX_DESC_VAL.Set_Column_Value
3137 ( column_name => 'ATTRIBUTE6'
3138 , column_value => p_MODIFIERS_rec.attribute6
3139 );
3140 FND_FLEX_DESC_VAL.Set_Column_Value
3141 ( column_name => 'ATTRIBUTE7'
3142 , column_value => p_MODIFIERS_rec.attribute7
3143 );
3144 FND_FLEX_DESC_VAL.Set_Column_Value
3145 ( column_name => 'ATTRIBUTE8'
3146 , column_value => p_MODIFIERS_rec.attribute8
3147 );
3148 FND_FLEX_DESC_VAL.Set_Column_Value
3149 ( column_name => 'ATTRIBUTE9'
3150 , column_value => p_MODIFIERS_rec.attribute9
3151 );
3152 FND_FLEX_DESC_VAL.Set_Column_Value
3153 ( column_name => 'CONTEXT'
3154 , column_value => p_MODIFIERS_rec.context
3155 );
3156 */
3157
3158 -- Validate descriptive flexfield.
3159
3160 IF NOT QP_Validate.Desc_Flex( 'MODIFIERS' ) THEN
3161 x_return_status := FND_API.G_RET_STS_ERROR;
3162 END IF;
3163
3164 END IF;
3165
3166 -- Done validating attributes
3167
3168 oe_debug_pub.add('END Attributes in QPXLMLLB');
3169
3170 EXCEPTION
3171
3172 WHEN FND_API.G_EXC_ERROR THEN
3173
3174 x_return_status := FND_API.G_RET_STS_ERROR;
3175
3176 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3177
3178 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3179
3180 WHEN OTHERS THEN
3181
3182 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3183
3184 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3185 THEN
3186 OE_MSG_PUB.Add_Exc_Msg
3187 ( G_PKG_NAME
3188 , 'Attributes'
3189 );
3190 END IF;
3191
3192 oe_debug_pub.add('EXP Attributes in QPXLMLLB');
3193 END Attributes;
3194
3195 -- Procedure Entity_Delete
3196
3197 PROCEDURE Entity_Delete
3198 ( x_return_status OUT NOCOPY VARCHAR2
3199 , p_MODIFIERS_rec IN QP_Modifiers_PUB.Modifiers_Rec_Type
3200 )
3201 IS
3202 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
3203 BEGIN
3204
3205 oe_debug_pub.add('BEGIN Entity_Delete in QPXLMLLB');
3206
3207 -- Validate entity delete.
3208
3209 NULL;
3210 -- Check whether Source System Code matches
3211 -- mkarya for bug 1728764, Prevent update of Trade Management Data in QP
3212 QP_UTIL.Check_Source_System_Code
3213 (p_list_header_id => p_MODIFIERS_rec.list_header_id,
3214 p_list_line_id => p_MODIFIERS_rec.list_line_id,
3215 x_return_status => l_return_status
3216 );
3217
3218 -- Done.
3219
3220 x_return_status := l_return_status;
3221
3222 oe_debug_pub.add('BEGIN Entity_Delete in QPXLMLLB');
3223
3224 EXCEPTION
3225
3226 WHEN FND_API.G_EXC_ERROR THEN
3227
3228 x_return_status := FND_API.G_RET_STS_ERROR;
3229
3230 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3231
3232 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3233
3234 WHEN OTHERS THEN
3235
3236 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3237
3238 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3239 THEN
3240 OE_MSG_PUB.Add_Exc_Msg
3241 ( G_PKG_NAME
3242 , 'Entity_Delete'
3243 );
3244 END IF;
3245
3246 END Entity_Delete;
3247
3248 END QP_Validate_Modifiers;