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