[Home] [Help]
PACKAGE BODY: APPS.AMS_ASSOCIATIONS_PVT
Source
1 PACKAGE BODY AMS_Associations_PVT AS
2 /*$Header: amsvassb.pls 115.24 2002/12/02 20:30:43 dbiswas ship $*/
3
4 g_pkg_name CONSTANT VARCHAR2(30):='AMS_Associations_PVT';
5
6 ---------------------------------------------------------------------
7 -- PROCEDURE
8 -- check_association_dates
9 --
10 -- HISTORY
11 -- 10/30/01 musman created
12 ---------------------------------------------------------------------
13 AMS_DEBUG_HIGH_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
14 AMS_DEBUG_LOW_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
15 AMS_DEBUG_MEDIUM_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
16
17 PROCEDURE check_association_dates(
18 p_association_rec IN association_rec_type,
19 x_return_status OUT NOCOPY VARCHAR2
20 );
21
22
23 --------------------------------------------------------------
24 -- PROCEDURE
25 -- create_association
26 --
27 -- HISTORY
28 -- 11/10/99 sugupta created
29 -- 07/15/00 ptendulk Before creating Object attributes
30 -- check Master object is not campaign and
31 -- using object is not events .
32 -- 07/16/00 holiu Rewrite the IF condition.
33 -- 10/18/00 soagrawa Removed check for DELV.lang = CSCH.lang
34 -- (fixed bug# 2063150)
35 ---------------------------------------------------------------------
36 PROCEDURE create_association(
37 p_api_version IN NUMBER,
38 p_init_msg_list IN VARCHAR2 := FND_API.g_false,
39 p_commit IN VARCHAR2 := FND_API.g_false,
40 p_validation_level IN NUMBER := FND_API.g_valid_level_full,
41
42 x_return_status OUT NOCOPY VARCHAR2,
43 x_msg_count OUT NOCOPY NUMBER,
44 x_msg_data OUT NOCOPY VARCHAR2,
45 p_association_rec IN association_rec_type,
46 x_object_association_id OUT NOCOPY NUMBER
47 )
48 IS
49
50 l_api_version CONSTANT NUMBER := 1.0;
51 l_api_name CONSTANT VARCHAR2(30) := 'create_association';
52 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
53
54 l_return_status VARCHAR2(1);
55 l_association_rec association_rec_type := p_association_rec;
56 l_association_count NUMBER;
57 ------
58 l_user_id NUMBER;
59 l_res_id NUMBER;
60
61 CURSOR get_res_id(l_user_id IN NUMBER) IS
62 SELECT resource_id
63 FROM ams_jtf_rs_emp_v
64 WHERE user_id = l_user_id;
65
66 CURSOR c_association_seq IS
67 SELECT ams_object_associations_s.NEXTVAL
68 FROM DUAL;
69
70 CURSOR c_association_count(association_id IN NUMBER) IS
71 SELECT COUNT(*)
72 FROM ams_object_associations
73 WHERE object_association_id = association_id;
74
75 CURSOR c_get_lang_code ( l_camp_sch_id IN NUMBER) IS
76 SELECT language_code
77 FROM AMS_CAMPAIGN_SCHEDULES_B
78 WHERE schedule_id = l_camp_sch_id;
79
80 CURSOR c_get_delv_details(l_delv_id IN NUMBER) IS
81 SELECT actual_avail_from_date,actual_avail_to_date,language_code
82 FROM ams_deliverables_all_b
83 WHERE deliverable_id = l_delv_id;
84
85 l_csch_lang_code VARCHAR2(30);
86 l_delv_lang_code VARCHAR2(30);
87 l_delv_to_date DATE;
88 l_delv_from_date DATE;
89
90 BEGIN
91
92 --------------------- initialize -----------------------
93 SAVEPOINT create_association;
94
95 IF (AMS_DEBUG_HIGH_ON) THEN
96
97
98
99 AMS_Utility_PVT.debug_message(l_full_name||': start');
100
101 END IF;
102
103 IF FND_API.to_boolean(p_init_msg_list) THEN
104 FND_MSG_PUB.initialize;
105 END IF;
106
107 IF NOT FND_API.compatible_api_call(
108 l_api_version,
109 p_api_version,
110 l_api_name,
111 g_pkg_name
112 ) THEN
113 RAISE FND_API.g_exc_unexpected_error;
114 END IF;
115
116 x_return_status := FND_API.g_ret_sts_success;
117
118 ----------------------- validate -----------------------
119 IF (AMS_DEBUG_HIGH_ON) THEN
120
121 AMS_Utility_PVT.debug_message(l_full_name ||': validate');
122 END IF;
123
124 validate_association(
125 p_api_version => l_api_version,
126 p_init_msg_list => p_init_msg_list,
127 p_validation_level => p_validation_level,
128 x_return_status => l_return_status,
129 x_msg_count => x_msg_count,
130 x_msg_data => x_msg_data,
131 p_association_rec => l_association_rec
132 );
133
134 IF l_return_status = FND_API.g_ret_sts_error THEN
135 RAISE FND_API.g_exc_error;
136 ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
137 RAISE FND_API.g_exc_unexpected_error;
138 END IF;
139 --------------- CHECK ACCESS FOR THE USER-------------------
140 ----------added sugupta 07/25/2000
141 l_user_id := FND_GLOBAL.User_Id;
142 if l_user_id IS NOT NULL then
143 open get_res_id(l_user_id);
144 fetch get_res_id into l_res_id;
145 close get_res_id;
146 end if;
147
148 IF l_association_rec.master_object_type <> 'CSCH' THEN
149 if AMS_ACCESS_PVT.check_update_access(l_association_rec.MASTER_OBJECT_ID, l_association_rec.MASTER_OBJECT_TYPE, l_res_id, 'USER') = 'N' then
150 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
151 FND_MESSAGE.set_name('AMS', 'AMS_EVO_NO_UPDATE_ACCESS'); --resuing message
152 FND_MSG_PUB.add;
153 END IF;
154 RAISE FND_API.g_exc_error;
155 end if;
156 END IF ;
157
158 ------------------- Added by ABHOLA ------------------
159
160 OPEN c_get_delv_details(l_association_rec.USING_OBJECT_ID);
161 FETCH c_get_delv_details INTO l_delv_from_date,l_delv_to_date, l_delv_lang_code;
162 CLOSE c_get_delv_details;
163
164 -- removed by soagrawa on 18-oct-2001
165 -- bug# 2063150
166 /* Check language code of schedule is same as of DELV */
167 /*
168 if (l_association_rec.MASTER_OBJECT_TYPE = 'CSCH') then
169
170 OPEN c_get_lang_code(l_association_rec.MASTER_OBJECT_ID);
171 FETCH c_get_lang_code INTO l_csch_lang_code;
172 CLOSE c_get_lang_code;
173
174 if (l_csch_lang_code <> l_delv_lang_code) then
175 if FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) then
176 FND_MESSAGE.set_name('AMS', 'AMS_DELV_CSCH_LANGUAGE');
177 FND_MSG_PUB.add;
178 end if;
179 RAISE FND_API.g_exc_error;
180 end if;
181
182 end if;*/
183
184 -- end soagrawa 18-oct-2001, bug# 2063150
185
186 /* qunatity neede by date should be between delb to and from date */
187
188 if ((l_association_rec.QUANTITY_NEEDED_BY_DATE > l_delv_to_date )
189 OR
190 (l_association_rec.QUANTITY_NEEDED_BY_DATE < l_delv_from_date )) then
191
192 if FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) then
193 FND_MESSAGE.set_name('AMS', 'AMS_DELV_INVALID_DATES');
194 FND_MSG_PUB.add;
195 end if;
196 RAISE FND_API.g_exc_error;
197 end if;
198
199 check_association_dates(
200 p_association_rec => l_association_rec,
201 x_return_status => x_return_status
202 );
203
204 IF x_return_status = FND_API.g_ret_sts_error THEN
205 RAISE FND_API.g_exc_error;
206 ELSIF x_return_status = FND_API.g_ret_sts_unexp_error THEN
207 RAISE FND_API.g_exc_unexpected_error;
208 END IF;
209
210
211
212
213 ------------------------------------------------------
214 -------------------------- insert --------------------------
215 IF (AMS_DEBUG_HIGH_ON) THEN
216
217 AMS_Utility_PVT.debug_message(l_full_name ||': insert');
218 END IF;
219
220 IF l_association_rec.object_association_id IS NULL THEN
221 LOOP
222 OPEN c_association_seq;
223 FETCH c_association_seq INTO l_association_rec.object_association_id;
224 CLOSE c_association_seq;
225
226 OPEN c_association_count(l_association_rec.object_association_id);
227 FETCH c_association_count into l_association_count;
228 CLOSE c_association_count;
229
230 EXIT WHEN l_association_count = 0;
231 END LOOP;
232 END IF;
233
234 INSERT INTO ams_object_associations(
235 OBJECT_ASSOCIATION_ID,
236 LAST_UPDATE_DATE,
237 LAST_UPDATED_BY,
238 CREATION_DATE,
239 CREATED_BY,
240 LAST_UPDATE_LOGIN,
241 OBJECT_VERSION_NUMBER,
242 MASTER_OBJECT_TYPE,
243 MASTER_OBJECT_ID,
244 USING_OBJECT_TYPE,
245 USING_OBJECT_ID,
246 PRIMARY_FLAG,
247 USAGE_TYPE,
248 QUANTITY_NEEDED,
249 QUANTITY_NEEDED_BY_DATE,
250 COST_FROZEN_FLAG,
251 PCT_OF_COST_TO_CHARGE_USED_BY,
252 MAX_COST_TO_CHARGE_USED_BY,
253 MAX_COST_CURRENCY_CODE,
254 METRIC_CLASS,
255 FULFILL_ON_TYPE_CODE,
256 ATTRIBUTE_CATEGORY,
257 ATTRIBUTE1,
258 ATTRIBUTE2,
259 ATTRIBUTE3,
260 ATTRIBUTE4,
261 ATTRIBUTE5,
262 ATTRIBUTE6,
263 ATTRIBUTE7,
264 ATTRIBUTE8,
265 ATTRIBUTE9,
266 ATTRIBUTE10,
267 ATTRIBUTE11,
268 ATTRIBUTE12,
269 ATTRIBUTE13,
270 ATTRIBUTE14,
271 ATTRIBUTE15,
272 CONTENT_TYPE,
273 SEQUENCE_NO
274 ) VALUES(
275 l_association_rec.OBJECT_ASSOCIATION_ID,
276 sysdate,
277 FND_GLOBAL.user_id,
278 SYSDATE,
279 FND_GLOBAL.user_id,
280 FND_GLOBAL.conc_login_id,
281 1, -- object_version_number
282 l_association_rec.MASTER_OBJECT_TYPE,
283 l_association_rec.MASTER_OBJECT_ID,
284 l_association_rec.USING_OBJECT_TYPE,
285 l_association_rec.USING_OBJECT_ID,
286 nvl(l_association_rec.PRIMARY_FLAG,'N'),
287 l_association_rec.USAGE_TYPE,
288 l_association_rec.QUANTITY_NEEDED,
289 l_association_rec.QUANTITY_NEEDED_BY_DATE,
290 nvl(l_association_rec.COST_FROZEN_FLAG,'N'),
291 l_association_rec.PCT_OF_COST_TO_CHARGE_USED_BY,
292 l_association_rec.MAX_COST_TO_CHARGE_USED_BY,
293 l_association_rec.MAX_COST_CURRENCY_CODE,
294 l_association_rec.METRIC_CLASS,
295 l_association_rec.FULFILL_ON_TYPE_CODE,
296 l_association_rec.ATTRIBUTE_CATEGORY,
297 l_association_rec.ATTRIBUTE1,
298 l_association_rec.ATTRIBUTE2,
299 l_association_rec.ATTRIBUTE3,
300 l_association_rec.ATTRIBUTE4,
301 l_association_rec.ATTRIBUTE5,
302 l_association_rec.ATTRIBUTE6,
303 l_association_rec.ATTRIBUTE7,
304 l_association_rec.ATTRIBUTE8,
305 l_association_rec.ATTRIBUTE9,
306 l_association_rec.ATTRIBUTE10,
307 l_association_rec.ATTRIBUTE11,
308 l_association_rec.ATTRIBUTE12,
309 l_association_rec.ATTRIBUTE13,
310 l_association_rec.ATTRIBUTE14,
311 l_association_rec.ATTRIBUTE15,
312 l_association_rec.content_type,
313 l_association_rec.sequence_no
314 );
315 ------------------------- finish -------------------------------
316 x_object_association_id := l_association_rec.object_association_id;
317 -- added by sugupta on 07/11/2000
318 -- indicate association has been defined for the MASTER_OBJECT_TYPE
319
320 -- =========================================================================
321 -- Following condition is added by ptendulk on 15-Jul-2000 as events created
322 -- for campaigns dont require object attributes
323 -- =========================================================================
324
325 /******************
326
327 IF l_association_rec.MASTER_OBJECT_TYPE <> 'CAMP'
328 OR (l_association_rec.USING_OBJECT_TYPE <> 'EVEH'
329 AND l_association_rec.USING_OBJECT_TYPE <> 'EVEO')
330 THEN
331 AMS_ObjectAttribute_PVT.modify_object_attribute(
332 p_api_version => l_api_version,
333 p_init_msg_list => FND_API.g_false,
334 p_commit => FND_API.g_false,
335 p_validation_level => FND_API.g_valid_level_full,
336
337 x_return_status => l_return_status,
338 x_msg_count => x_msg_count,
339 x_msg_data => x_msg_data,
340
341 p_object_type => l_association_rec.MASTER_OBJECT_TYPE,
342 p_object_id => l_association_rec.MASTER_OBJECT_ID,
343 p_attr => l_association_rec.USING_OBJECT_TYPE,
344 p_attr_defined_flag => 'Y'
345 );
346
347 IF l_return_status = FND_API.g_ret_sts_error THEN
348 RAISE FND_API.g_exc_error;
349 ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
350 RAISE FND_API.g_exc_unexpected_error;
351 END IF;
352 END IF ;
353 *******************/
354
355 -- =========================================================================
356 -- End of Code modified by ptendulk on 15-Jul-2000
357 -- =========================================================================
358
359 IF FND_API.to_boolean(p_commit) THEN
360 COMMIT;
361 END IF;
362
363 FND_MSG_PUB.count_and_get(
364 p_encoded => FND_API.g_false,
365 p_count => x_msg_count,
366 p_data => x_msg_data
367 );
368
369 IF (AMS_DEBUG_HIGH_ON) THEN
370
371
372
373 AMS_Utility_PVT.debug_message(l_full_name ||': end');
374
375 END IF;
376
377 EXCEPTION
378
379 WHEN FND_API.g_exc_error THEN
380 ROLLBACK TO create_association;
381 x_return_status := FND_API.g_ret_sts_error;
382 FND_MSG_PUB.count_and_get(
383 p_encoded => FND_API.g_false,
384 p_count => x_msg_count,
385 p_data => x_msg_data
386 );
387
388 WHEN FND_API.g_exc_unexpected_error THEN
389 ROLLBACK TO create_association;
390 x_return_status := FND_API.g_ret_sts_unexp_error ;
391 FND_MSG_PUB.count_and_get(
392 p_encoded => FND_API.g_false,
393 p_count => x_msg_count,
394 p_data => x_msg_data
395 );
396
397
398 WHEN OTHERS THEN
399 ROLLBACK TO create_association;
400 x_return_status := FND_API.g_ret_sts_unexp_error ;
401
402 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
403 THEN
404 FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
405 END IF;
406
407 FND_MSG_PUB.count_and_get(
408 p_encoded => FND_API.g_false,
409 p_count => x_msg_count,
410 p_data => x_msg_data
411 );
412
413 END create_association;
414 ---------------------------------------------------------------
415 -- PROCEDURE
416 -- delete_association
417 --
418 -- HISTORY
419 -- 11/10/99 sugupta created
420 -- 07/15/00 ptendulk Before Deleting Object attributes
421 -- check Master object is not campaign and
422 -- using object is not events .
423 ---------------------------------------------------------------
424 PROCEDURE delete_association(
425 p_api_version IN NUMBER,
426 p_init_msg_list IN VARCHAR2 := FND_API.g_false,
427 p_commit IN VARCHAR2 := FND_API.g_false,
428 p_validation_level IN NUMBER := FND_API.g_valid_level_full,
429
430 x_return_status OUT NOCOPY VARCHAR2,
431 x_msg_count OUT NOCOPY NUMBER,
432 x_msg_data OUT NOCOPY VARCHAR2,
433
434 p_object_association_id IN NUMBER,
435 p_object_version IN NUMBER
436 )
437 IS
438
439 l_api_version CONSTANT NUMBER := 1.0;
440 l_api_name CONSTANT VARCHAR2(30) := 'delete_association';
441 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
442 l_c_obj_id NUMBER := p_object_association_id;
443 l_object_type VARCHAR2(30);
444 l_object_id NUMBER;
445 l_attr VARCHAR2(30);
446 l_dummy VARCHAR2(100);
447 l_master VARCHAR2(30);
448 l_master_id NUMBER;
449 ------
450 l_user_id NUMBER;
451 l_res_id NUMBER;
452
453 cursor get_objattr_info(l_obj_id IN NUMBER) is
454 select distinct a.using_object_type, a.master_object_type, a.master_object_id
455 from ams_object_associations a, ams_object_associations b
456 where a.master_object_type = b.master_object_type
457 and a.master_object_id = b.master_object_id
458 and a.using_object_type = b.using_object_type
459 and b.object_association_id = l_obj_id;
460
461 cursor get_count(c_obj_type IN VARCHAR2, c_obj_id IN NUMBER, c_attr IN VARCHAR2) is
462 select 'dummy'
463 from ams_object_associations
464 where master_object_type = c_obj_type
465 and master_object_id = c_obj_id
466 and using_object_type = c_attr;
467
468 CURSOR get_res_id(l_user_id IN NUMBER) IS
469 SELECT resource_id
470 FROM ams_jtf_rs_emp_v
471 WHERE user_id = l_user_id;
472
473 CURSOR get_master_info(l_obj_id IN NUMBER) IS
474 SELECT master_object_type, master_object_id
475 FROM ams_object_associations
476 WHERE object_association_id = l_obj_id;
477
478 BEGIN
479
480 --------------------- initialize -----------------------
481 SAVEPOINT delete_association;
482
483 IF (AMS_DEBUG_HIGH_ON) THEN
484
485
486
487 AMS_Utility_PVT.debug_message(l_full_name||': start');
488
489 END IF;
490
491 IF FND_API.to_boolean(p_init_msg_list) THEN
492 FND_MSG_PUB.initialize;
493 END IF;
494
495 IF NOT FND_API.compatible_api_call(
496 l_api_version,
497 p_api_version,
498 l_api_name,
499 g_pkg_name
500 ) THEN
501 RAISE FND_API.g_exc_unexpected_error;
502 END IF;
503
504 x_return_status := FND_API.G_RET_STS_SUCCESS;
505 --------------- CHECK ACCESS FOR THE USER-------------------
506 ----------added sugupta 07/25/2000
507 l_user_id := FND_GLOBAL.User_Id;
508 if l_user_id IS NOT NULL then
509 open get_res_id(l_user_id);
510 fetch get_res_id into l_res_id;
511 close get_res_id;
512 end if;
513
514 open get_master_info(p_object_association_id);
515 fetch get_master_info into l_master, l_master_id;
516 close get_master_info;
517
518 IF l_master <> 'CSCH' THEN
519 if AMS_ACCESS_PVT.check_update_access(l_master_id, l_master, l_res_id, 'USER') = 'N' then
520 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
521 FND_MESSAGE.set_name('AMS', 'AMS_EVO_NO_UPDATE_ACCESS'); --reusing message
522 FND_MSG_PUB.add;
523 END IF;
524 RAISE FND_API.g_exc_error;
525 end if;
526 END IF ;
527
528 ------------------------ delete ------------------------
529 IF (AMS_DEBUG_HIGH_ON) THEN
530
531 AMS_Utility_PVT.debug_message(l_full_name ||': delete');
532 END IF;
533
534 OPEN get_objattr_info(l_c_obj_id);
535 FETCH get_objattr_info into l_attr, l_object_type, l_object_id;
536 close get_objattr_info;
537
538 DELETE FROM ams_object_associations
539 WHERE object_association_id = p_object_association_id
540 AND object_version_number = p_object_version;
541
542 IF (SQL%NOTFOUND) THEN
543 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
544 THEN
545 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
546 FND_MSG_PUB.add;
547 END IF;
548 RAISE FND_API.g_exc_error;
549 END IF;
550
551 ----- Modify Object Attribute ---------------
552
553 OPEN get_count(l_object_type,l_object_id,l_attr);
554 FETCH get_count into l_dummy;
555
556 IF (GET_COUNT%NOTFOUND) THEN
557
558 -- need to make a call to update ams_objec_attributes that no information
559 -- exist for this combination of master obj type and id and using object type
560 -- and set attribute defined flag to N
561
562 -- =========================================================================
563 -- Following condition is added by ptendulk on 15-Jul-2000 as events created
564 -- for campaigns dont require object attributes
565 -- =========================================================================
566 null;
567
568 /**
569 IF l_object_type <> 'CAMP' OR (l_attr <> 'EVEH' AND l_attr <> 'EVEO')
570 THEN
571
572 AMS_ObjectAttribute_PVT.modify_object_attribute(
573 p_api_version => l_api_version,
574 p_init_msg_list => FND_API.g_false,
575 p_commit => FND_API.g_false,
576 p_validation_level => FND_API.g_valid_level_full,
577
578 x_return_status => x_return_status,
579 x_msg_count => x_msg_count,
580 x_msg_data => x_msg_data,
581
582 p_object_type => l_object_type,
583 p_object_id => l_object_id,
584 p_attr => l_attr,
585 p_attr_defined_flag => 'N'
586 );
587 IF x_return_status = FND_API.g_ret_sts_error THEN
588 RAISE FND_API.g_exc_error;
589 ELSIF x_return_status = FND_API.g_ret_sts_unexp_error THEN
590 RAISE FND_API.g_exc_unexpected_error;
591 END IF;
592 END IF;
593 **/
594 -- =========================================================================
595 -- End of code Modified by ptendulk on 15-Jul-2000
596 -- =========================================================================
597
598 END IF;
599
600 CLOSE get_count;
601
602 -------------------- finish --------------------------
603 IF FND_API.to_boolean(p_commit) THEN
604 COMMIT;
605 END IF;
606
607 FND_MSG_PUB.count_and_get(
608 p_encoded => FND_API.g_false,
609 p_count => x_msg_count,
610 p_data => x_msg_data
611 );
612
613 IF (AMS_DEBUG_HIGH_ON) THEN
614
615
616
617 AMS_Utility_PVT.debug_message(l_full_name ||': end');
618
619 END IF;
620
621 EXCEPTION
622
623 WHEN FND_API.g_exc_error THEN
624 ROLLBACK TO delete_association;
625 x_return_status := FND_API.g_ret_sts_error;
626 FND_MSG_PUB.count_and_get(
627 p_encoded => FND_API.g_false,
628 p_count => x_msg_count,
629 p_data => x_msg_data
630 );
631
632 WHEN FND_API.g_exc_unexpected_error THEN
633 ROLLBACK TO delete_association;
634 x_return_status := FND_API.g_ret_sts_unexp_error ;
635 FND_MSG_PUB.count_and_get(
636 p_encoded => FND_API.g_false,
637 p_count => x_msg_count,
638 p_data => x_msg_data
639 );
640
641 WHEN OTHERS THEN
642 ROLLBACK TO delete_association;
643 x_return_status := FND_API.g_ret_sts_unexp_error ;
644
645 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
646 THEN
647 FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
648 END IF;
649
650 FND_MSG_PUB.count_and_get(
651 p_encoded => FND_API.g_false,
652 p_count => x_msg_count,
653 p_data => x_msg_data
654 );
655
656 END delete_association;
657
658 -------------------------------------------------------------------
659 -- PROCEDURE
660 -- lock_association
661 --
662 -- HISTORY
663 -- 11/10/99 sugupta created
664 --------------------------------------------------------------------
665 PROCEDURE lock_association(
666 p_api_version IN NUMBER,
667 p_init_msg_list IN VARCHAR2 := FND_API.g_false,
668 p_validation_level IN NUMBER := FND_API.g_valid_level_full,
669
670 x_return_status OUT NOCOPY VARCHAR2,
671 x_msg_count OUT NOCOPY NUMBER,
672 x_msg_data OUT NOCOPY VARCHAR2,
673
674 p_object_association_id IN NUMBER,
675 p_object_version IN NUMBER
676 )
677 IS
678
679 l_api_version CONSTANT NUMBER := 1.0;
680 l_api_name CONSTANT VARCHAR2(30) := 'lock_association';
681 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
682
683 l_object_association_id NUMBER;
684
685 CURSOR c_association_b IS
686 SELECT object_association_id
687 FROM ams_object_associations
688 WHERE object_association_id = p_object_association_id
689 AND object_version_number = p_object_version
690 FOR UPDATE OF object_association_id NOWAIT;
691
692
693 BEGIN
694
695 -------------------- initialize ------------------------
696 IF (AMS_DEBUG_HIGH_ON) THEN
697
698 AMS_Utility_PVT.debug_message(l_full_name||': start');
699 END IF;
700
701 IF FND_API.to_boolean(p_init_msg_list) THEN
702 FND_MSG_PUB.initialize;
703 END IF;
704
705 IF NOT FND_API.compatible_api_call(
706 l_api_version,
707 p_api_version,
708 l_api_name,
709 g_pkg_name
710 ) THEN
711 RAISE FND_API.g_exc_unexpected_error;
712 END IF;
713
714 x_return_status := FND_API.G_RET_STS_SUCCESS;
715
716 ------------------------ lock -------------------------
717 IF (AMS_DEBUG_HIGH_ON) THEN
718
719 AMS_Utility_PVT.debug_message(l_full_name||': lock');
720 END IF;
721
722 OPEN c_association_b;
723 FETCH c_association_b INTO l_object_association_id;
724 IF (c_association_b%NOTFOUND) THEN
725 CLOSE c_association_b;
726 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
727 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
728 FND_MSG_PUB.add;
729 END IF;
730 RAISE FND_API.g_exc_error;
731 END IF;
732 CLOSE c_association_b;
733 -------------------- finish --------------------------
734 FND_MSG_PUB.count_and_get(
735 p_encoded => FND_API.g_false,
736 p_count => x_msg_count,
737 p_data => x_msg_data
738 );
739
740 IF (AMS_DEBUG_HIGH_ON) THEN
741
742
743
744 AMS_Utility_PVT.debug_message(l_full_name ||': end');
745
746 END IF;
747
748 EXCEPTION
749
750 WHEN AMS_Utility_PVT.resource_locked THEN
751 x_return_status := FND_API.g_ret_sts_error;
752 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
753 FND_MESSAGE.set_name('AMS', 'AMS_API_RESOURCE_LOCKED');
754 FND_MSG_PUB.add;
755 END IF;
756
757 FND_MSG_PUB.count_and_get(
758 p_encoded => FND_API.g_false,
759 p_count => x_msg_count,
760 p_data => x_msg_data
761 );
762
763 WHEN FND_API.g_exc_error THEN
764 x_return_status := FND_API.g_ret_sts_error;
765 FND_MSG_PUB.count_and_get(
766 p_encoded => FND_API.g_false,
767 p_count => x_msg_count,
768 p_data => x_msg_data
769 );
770
771 WHEN FND_API.g_exc_unexpected_error THEN
772 x_return_status := FND_API.g_ret_sts_unexp_error ;
773 FND_MSG_PUB.count_and_get(
774 p_encoded => FND_API.g_false,
775 p_count => x_msg_count,
776 p_data => x_msg_data
777 );
778
779 WHEN OTHERS THEN
780 x_return_status := FND_API.g_ret_sts_unexp_error ;
781 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
782 THEN
783 FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
784 END IF;
785
786 FND_MSG_PUB.count_and_get(
787 p_encoded => FND_API.g_false,
788 p_count => x_msg_count,
789 p_data => x_msg_data
790 );
791
792 END lock_association;
793
794
795 ---------------------------------------------------------------------
796 -- PROCEDURE
797 -- update_association
798 --
799 -- HISTORY
800 -- 11/10/99 sugupta created
801 ----------------------------------------------------------------------
802 PROCEDURE update_association(
803 p_api_version IN NUMBER,
804 p_init_msg_list IN VARCHAR2 := FND_API.g_false,
805 p_commit IN VARCHAR2 := FND_API.g_false,
806 p_validation_level IN NUMBER := FND_API.g_valid_level_full,
807
808 x_return_status OUT NOCOPY VARCHAR2,
809 x_msg_count OUT NOCOPY NUMBER,
810 x_msg_data OUT NOCOPY VARCHAR2,
811
812 p_association_rec IN association_rec_type
813 )
814 IS
815
816 l_api_version CONSTANT NUMBER := 1.0;
817 l_api_name CONSTANT VARCHAR2(30) := 'update_association';
818 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
819
820 l_association_rec association_rec_type;
821 l_return_status VARCHAR2(1);
822 ------
823 l_user_id NUMBER;
824 l_res_id NUMBER;
825
826 CURSOR get_res_id(l_user_id IN NUMBER) IS
827 SELECT resource_id
828 FROM ams_jtf_rs_emp_v
829 WHERE user_id = l_user_id;
830 BEGIN
831
832 -------------------- initialize -------------------------
833 SAVEPOINT update_association;
834
835 IF (AMS_DEBUG_HIGH_ON) THEN
836
837
838
839 AMS_Utility_PVT.debug_message(l_full_name||': start');
840
841 END IF;
842
843 IF FND_API.to_boolean(p_init_msg_list) THEN
844 FND_MSG_PUB.initialize;
845 END IF;
846
847 IF NOT FND_API.compatible_api_call(
848 l_api_version,
849 p_api_version,
850 l_api_name,
851 g_pkg_name
852 ) THEN
853 RAISE FND_API.g_exc_unexpected_error;
854 END IF;
855
856 x_return_status := FND_API.G_RET_STS_SUCCESS;
857
858 -- replace g_miss_char/num/date with current column values
859 complete_association_rec(p_association_rec, l_association_rec);
860
861 ----------------------- validate ----------------------
862 IF (AMS_DEBUG_HIGH_ON) THEN
863
864 AMS_Utility_PVT.debug_message(l_full_name ||': validate');
865 END IF;
866
867 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
868 check_association_items(
869 p_association_rec => p_association_rec,
870 p_validation_mode => JTF_PLSQL_API.g_update,
871 x_return_status => l_return_status
872 );
873
874 IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
875 RAISE FND_API.g_exc_unexpected_error;
876 ELSIF l_return_status = FND_API.g_ret_sts_error THEN
877 RAISE FND_API.g_exc_error;
878 END IF;
879 END IF;
880
881 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_record THEN
882 check_association_record(
883 p_association_rec => p_association_rec,
884 x_return_status => l_return_status
885 );
886
887 IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
888 RAISE FND_API.g_exc_unexpected_error;
889 ELSIF l_return_status = FND_API.g_ret_sts_error THEN
890 RAISE FND_API.g_exc_error;
891 END IF;
892 END IF;
893 --------------- CHECK ACCESS FOR THE USER-------------------
894 ----------added sugupta 07/25/2000
895 l_user_id := FND_GLOBAL.User_Id;
896 if l_user_id IS NOT NULL then
897 open get_res_id(l_user_id);
898 fetch get_res_id into l_res_id;
899 close get_res_id;
900 end if;
901
902 IF l_association_rec.master_object_type <> 'CSCH' THEN
903 if AMS_ACCESS_PVT.check_update_access(l_association_rec.MASTER_OBJECT_ID, l_association_rec.MASTER_OBJECT_TYPE, l_res_id, 'USER') = 'N' then
904 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
905 FND_MESSAGE.set_name('AMS', 'AMS_EVO_NO_UPDATE_ACCESS');
906 FND_MSG_PUB.add;
907 END IF;
908 RAISE FND_API.g_exc_error;
909 end if;
910 END IF ;
911 -------------------------- update --------------------
912 IF (AMS_DEBUG_HIGH_ON) THEN
913
914 AMS_Utility_PVT.debug_message(l_full_name ||': update');
915 END IF;
916
917 UPDATE ams_object_associations SET
918 last_update_date = SYSDATE,
919 last_updated_by = FND_GLOBAL.user_id,
920 last_update_login = FND_GLOBAL.conc_login_id,
921 object_version_number = l_association_rec.object_version_number + 1,
922 MASTER_OBJECT_TYPE = l_association_rec.MASTER_OBJECT_TYPE,
923 MASTER_OBJECT_ID = l_association_rec.MASTER_OBJECT_ID,
924 USING_OBJECT_TYPE = l_association_rec.USING_OBJECT_TYPE,
925 USING_OBJECT_ID = l_association_rec.USING_OBJECT_ID,
926 PRIMARY_FLAG = l_association_rec.PRIMARY_FLAG,
927 USAGE_TYPE = l_association_rec.USAGE_TYPE,
928 QUANTITY_NEEDED = l_association_rec.QUANTITY_NEEDED,
929 QUANTITY_NEEDED_BY_DATE = l_association_rec.QUANTITY_NEEDED_BY_DATE,
930 COST_FROZEN_FLAG = l_association_rec.COST_FROZEN_FLAG,
931 PCT_OF_COST_TO_CHARGE_USED_BY = l_association_rec.PCT_OF_COST_TO_CHARGE_USED_BY,
932 MAX_COST_TO_CHARGE_USED_BY = l_association_rec.MAX_COST_TO_CHARGE_USED_BY,
933 MAX_COST_CURRENCY_CODE = l_association_rec.MAX_COST_CURRENCY_CODE,
934 METRIC_CLASS = l_association_rec.METRIC_CLASS,
935 FULFILL_ON_TYPE_CODE = l_association_rec.FULFILL_ON_TYPE_CODE,
936 ATTRIBUTE_CATEGORY = l_association_rec.ATTRIBUTE_CATEGORY,
937 ATTRIBUTE1 = l_association_rec.ATTRIBUTE1,
938 ATTRIBUTE2 = l_association_rec.ATTRIBUTE2,
939 ATTRIBUTE3 = l_association_rec.ATTRIBUTE3,
940 ATTRIBUTE4 = l_association_rec.ATTRIBUTE4,
941 ATTRIBUTE5 = l_association_rec.ATTRIBUTE5,
942 ATTRIBUTE6 = l_association_rec.ATTRIBUTE6,
943 ATTRIBUTE7 = l_association_rec.ATTRIBUTE7,
944 ATTRIBUTE8 = l_association_rec.ATTRIBUTE8,
945 ATTRIBUTE9 = l_association_rec.ATTRIBUTE9,
946 ATTRIBUTE10 = l_association_rec.ATTRIBUTE10,
947 ATTRIBUTE11 = l_association_rec.ATTRIBUTE11,
948 ATTRIBUTE12 = l_association_rec.ATTRIBUTE12,
949 ATTRIBUTE13 = l_association_rec.ATTRIBUTE13,
950 ATTRIBUTE14 = l_association_rec.ATTRIBUTE14,
951 ATTRIBUTE15 = l_association_rec.ATTRIBUTE15,
952 content_type = l_association_rec.content_type,
953 sequence_no = l_association_rec.sequence_no
954 WHERE object_association_id = l_association_rec.object_association_id
955 AND object_version_number = l_association_rec.object_version_number;
956
957 IF (SQL%NOTFOUND) THEN
958 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
959 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
960 FND_MSG_PUB.add;
961 END IF;
962 RAISE FND_API.g_exc_error;
963 END IF;
964
965 -------------------- finish --------------------------
966 IF FND_API.to_boolean(p_commit) THEN
967 COMMIT;
968 END IF;
969
970 FND_MSG_PUB.count_and_get(
971 p_encoded => FND_API.g_false,
972 p_count => x_msg_count,
973 p_data => x_msg_data
974 );
975
976 IF (AMS_DEBUG_HIGH_ON) THEN
977
978
979
980 AMS_Utility_PVT.debug_message(l_full_name ||': end');
981
982 END IF;
983
984 EXCEPTION
985
986 WHEN FND_API.g_exc_error THEN
987 ROLLBACK TO update_association;
988 x_return_status := FND_API.g_ret_sts_error;
989 FND_MSG_PUB.count_and_get(
990 p_encoded => FND_API.g_false,
991 p_count => x_msg_count,
992 p_data => x_msg_data
993 );
994
995 WHEN FND_API.g_exc_unexpected_error THEN
996 ROLLBACK TO update_association;
997 x_return_status := FND_API.g_ret_sts_unexp_error ;
998 FND_MSG_PUB.count_and_get(
999 p_encoded => FND_API.g_false,
1000 p_count => x_msg_count,
1001 p_data => x_msg_data
1002 );
1003
1004 WHEN OTHERS THEN
1005 ROLLBACK TO update_association;
1006 x_return_status := FND_API.g_ret_sts_unexp_error ;
1007
1008 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
1009 THEN
1010 FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
1011 END IF;
1012
1013 FND_MSG_PUB.count_and_get(
1014 p_encoded => FND_API.g_false,
1015 p_count => x_msg_count,
1016 p_data => x_msg_data
1017 );
1018
1019 END update_association;
1020 --------------------------------------------------------------------
1021 -- PROCEDURE
1022 -- validate_association
1023 --
1024 -- HISTORY
1025 -- 11/10/99 sugupta created
1026 --------------------------------------------------------------------
1027 PROCEDURE validate_association(
1028 p_api_version IN NUMBER,
1029 p_init_msg_list IN VARCHAR2 := FND_API.g_false,
1030 p_validation_level IN NUMBER := FND_API.g_valid_level_full,
1031
1032 x_return_status OUT NOCOPY VARCHAR2,
1033 x_msg_count OUT NOCOPY NUMBER,
1034 x_msg_data OUT NOCOPY VARCHAR2,
1035
1036 p_association_rec IN association_rec_type
1037 )
1038 IS
1039
1040 l_api_version CONSTANT NUMBER := 1.0;
1041 l_api_name CONSTANT VARCHAR2(30) := 'validate_association';
1042 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1043 l_return_status VARCHAR2(1);
1044
1045 BEGIN
1046
1047 ----------------------- initialize --------------------
1048 IF (AMS_DEBUG_HIGH_ON) THEN
1049
1050 AMS_Utility_PVT.debug_message(l_full_name||': start');
1051 END IF;
1052
1053 IF FND_API.to_boolean(p_init_msg_list) THEN
1054 FND_MSG_PUB.initialize;
1055 END IF;
1056
1057 IF NOT FND_API.compatible_api_call(
1058 l_api_version,
1059 p_api_version,
1060 l_api_name,
1061 g_pkg_name
1062 ) THEN
1063 RAISE FND_API.g_exc_unexpected_error;
1064 END IF;
1065
1066 x_return_status := FND_API.g_ret_sts_success;
1067
1068 ---------------------- validate ------------------------
1069 IF (AMS_DEBUG_HIGH_ON) THEN
1070
1071 AMS_Utility_PVT.debug_message(l_full_name||': check items');
1072 END IF;
1073
1074 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1075 check_association_items(
1076 p_association_rec => p_association_rec,
1077 p_validation_mode => JTF_PLSQL_API.g_create,
1078 x_return_status => l_return_status
1079 );
1080
1081 IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1082 RAISE FND_API.g_exc_unexpected_error;
1083 ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1084 RAISE FND_API.g_exc_error;
1085 END IF;
1086 END IF;
1087
1088 IF (AMS_DEBUG_HIGH_ON) THEN
1089
1090
1091
1092 AMS_Utility_PVT.debug_message(l_full_name||': check record');
1093
1094 END IF;
1095
1096 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_record THEN
1097 check_association_record(
1098 p_association_rec => p_association_rec,
1099 x_return_status => l_return_status
1100 );
1101
1102 IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1103 RAISE FND_API.g_exc_unexpected_error;
1104 ELSIF l_return_status = FND_API.g_ret_sts_error THEN
1105 RAISE FND_API.g_exc_error;
1106 END IF;
1107 END IF;
1108
1109 -------------------- finish --------------------------
1110 FND_MSG_PUB.count_and_get(
1111 p_encoded => FND_API.g_false,
1112 p_count => x_msg_count,
1113 p_data => x_msg_data
1114 );
1115
1116 IF (AMS_DEBUG_HIGH_ON) THEN
1117
1118
1119
1120 AMS_Utility_PVT.debug_message(l_full_name ||': end');
1121
1122 END IF;
1123
1124 EXCEPTION
1125
1126 WHEN FND_API.g_exc_error THEN
1127 x_return_status := FND_API.g_ret_sts_error;
1128 FND_MSG_PUB.count_and_get(
1129 p_encoded => FND_API.g_false,
1130 p_count => x_msg_count,
1131 p_data => x_msg_data
1132 );
1133
1134 WHEN FND_API.g_exc_unexpected_error THEN
1135 x_return_status := FND_API.g_ret_sts_unexp_error ;
1136 FND_MSG_PUB.count_and_get(
1137 p_encoded => FND_API.g_false,
1138 p_count => x_msg_count,
1139 p_data => x_msg_data
1140 );
1141
1142 WHEN OTHERS THEN
1143 x_return_status := FND_API.g_ret_sts_unexp_error;
1144 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
1145 THEN
1146 FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
1147 END IF;
1148
1149 FND_MSG_PUB.count_and_get(
1150 p_encoded => FND_API.g_false,
1151 p_count => x_msg_count,
1152 p_data => x_msg_data
1153 );
1154
1155 END validate_association;
1156 ---------------------------------------------------------------------
1157 -- PROCEDURE
1158 -- check_association
1159 --
1160 -- HISTORY
1161 -- 11/10/99 sugupta created
1162 ---------------------------------------------------------------------
1163
1164 FUNCTION check_association(
1165 p_master_type IN VARCHAR2,
1166 p_master_id IN NUMBER,
1167 p_using_type IN VARCHAR2,
1168 p_using_id IN NUMBER
1169 ) RETURN VARCHAR2
1170 IS
1171
1172 l_foreign_table VARCHAR2(30);
1173 l_foreign_table_id VARCHAR2(30);
1174
1175 BEGIN
1176
1177 IF p_master_type = 'EVEH'
1178 THEN l_foreign_table := 'AMS_EVENT_HEADERS_ALL_B';
1179 l_foreign_table_id := 'EVENT_HEADER_ID';
1180 ELSIF p_master_type = 'EVEO'
1181 THEN l_foreign_table := 'AMS_EVENT_OFFERS_ALL_B';
1182 l_foreign_table_id := 'EVENT_OFFER_ID';
1183 ELSIF p_master_type = 'EONE'
1184 THEN l_foreign_table := 'AMS_EVENT_OFFERS_ALL_B';
1185 l_foreign_table_id := 'EVENT_OFFER_ID';
1186 ELSIF p_master_type = 'CAMP'
1187 THEN l_foreign_table := 'AMS_CAMPAIGNS_ALL_B';
1188 l_foreign_table_id := 'CAMPAIGN_ID';
1189 ELSIF p_master_type = 'CSCH'
1190 THEN l_foreign_table := 'AMS_CAMPAIGN_SCHEDULES_B';
1191 l_foreign_table_id := 'SCHEDULE_ID';
1192 ELSE
1193
1194 return FND_API.g_false;
1195 END IF;
1196 -- call fk utility to check master....will call again later to check for using..
1197
1198 IF AMS_Utility_PVT.check_fk_exists(
1199 l_foreign_table,
1200 l_foreign_table_id,
1201 p_master_id
1202 ) = FND_API.g_false
1203 THEN
1204 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1205 THEN
1206 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_INVALID_MASTER_ID');
1207 FND_MSG_PUB.add;
1208 END IF;
1209
1210 return FND_API.g_false;
1211 END IF;
1212
1213 IF p_using_type = 'EVEH'
1214 THEN l_foreign_table := 'AMS_EVENT_HEADERS_ALL_B';
1215 l_foreign_table_id := 'EVENT_HEADER_ID';
1216 ELSIF p_using_type = 'EVEO'
1217 THEN l_foreign_table := 'AMS_EVENT_OFFERS_ALL_B';
1218 l_foreign_table_id := 'EVENT_OFFER_ID';
1219
1220 ELSIF p_using_type = 'EONE'
1221 THEN l_foreign_table := 'AMS_EVENT_OFFERS_ALL_B';
1222 l_foreign_table_id := 'EVENT_OFFER_ID';
1223
1224 ELSIF p_using_type = 'CAMP'
1225 THEN l_foreign_table := 'AMS_CAMPAIGNS_ALL_B';
1226 l_foreign_table_id := 'CAMPAIGN_ID';
1227 ELSIF p_using_type = 'DELV'
1228 THEN l_foreign_table := 'AMS_DELIVERABLES_ALL_B';
1229 l_foreign_table_id := 'DELIVERABLE_ID';
1230 ELSE
1231 return FND_API.g_false;
1232 END IF;
1233
1234 IF AMS_Utility_PVT.check_fk_exists(
1235 l_foreign_table,
1236 l_foreign_table_id,
1237 p_using_id
1238 ) = FND_API.g_false
1239 THEN
1240 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1241 THEN
1242 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_INVALID_USING_ID');
1243 FND_MSG_PUB.add;
1244 END IF;
1245
1246 return FND_API.g_false;
1247 END IF;
1248 return fnd_api.g_true;
1249 END check_association;
1250
1251 ---------------------------------------------------------------------
1252 -- PROCEDURE
1253 -- check_association_req_items
1254 --
1255 -- HISTORY
1256 -- 11/10/99 sugupta created
1257 ---------------------------------------------------------------------
1258 PROCEDURE check_association_req_items(
1259 p_association_rec IN association_rec_type,
1260 x_return_status OUT NOCOPY VARCHAR2
1261 )
1262 IS
1263 BEGIN
1264
1265 x_return_status := FND_API.g_ret_sts_success;
1266
1267 ------------------------ user_status_id --------------------------
1268 IF p_association_rec.master_object_id IS NULL THEN
1269 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1270 THEN
1271 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_NO_MASTER_OBJ_ID');
1272 FND_MSG_PUB.add;
1273 END IF;
1274
1275 x_return_status := FND_API.g_ret_sts_error;
1276 RETURN;
1277 END IF;
1278
1279 IF p_association_rec.using_object_id IS NULL THEN
1280 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1281 THEN
1282 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_NO_USING_OBJ_ID');
1283 FND_MSG_PUB.add;
1284 END IF;
1285
1286 x_return_status := FND_API.g_ret_sts_error;
1287 RETURN;
1288 END IF;
1289
1290 IF p_association_rec.using_object_type IS NULL THEN
1291 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1292 THEN
1293 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_NO_USING_OBJ_TYPE');
1294 FND_MSG_PUB.add;
1295 END IF;
1296
1297 x_return_status := FND_API.g_ret_sts_error;
1298 RETURN;
1299 END IF;
1300
1301 IF p_association_rec.master_object_type IS NULL THEN
1302 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1303 THEN
1304 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_NO_MASTER_OBJ_TYPE');
1305 FND_MSG_PUB.add;
1306 END IF;
1307
1308 x_return_status := FND_API.g_ret_sts_error;
1309 RETURN;
1310 END IF;
1311
1312 IF p_association_rec.primary_flag IS NULL THEN
1313 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1314 THEN
1315 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_NO_PRIMARY_FLAG');
1316 FND_MSG_PUB.add;
1317 END IF;
1318
1319 x_return_status := FND_API.g_ret_sts_error;
1320 RETURN;
1321 END IF;
1322
1323 END check_association_req_items;
1324 ---------------------------------------------------------------------
1325 -- PROCEDURE
1326 -- check_association_uk_items
1327 --
1328 -- HISTORY
1329 -- 11/10/99 sugupta created
1330 ---------------------------------------------------------------------
1331 PROCEDURE check_association_uk_items(
1332 p_association_rec IN association_rec_type,
1333 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
1334 x_return_status OUT NOCOPY VARCHAR2
1335 )
1336 IS
1337 l_valid_flag VARCHAR2(1) := 'N';
1338
1339 l_using_id NUMBER ;
1340 l_master_objid NUMBER ;
1341 l_using_objType VARCHAR2(10);
1342 l_master_objType VARCHAR2(10);
1343
1344 CURSOR c_check_obj (
1345 p_using_id IN NUMBER
1346 ,p_using_objType IN VARCHAR2
1347 ,p_masterobjId IN NUMBER
1348 ,p_masterobjType IN VARCHAR2)
1349 IS
1350 SELECT DISTINCT 'Y'
1351 FROM ams_object_associations
1352 WHERE master_object_type = p_masterobjType
1353 AND master_object_id = p_masterobjId
1354 AND using_object_type = p_using_objType
1355 AND using_object_id = p_using_id;
1356
1357
1358 BEGIN
1359
1360 x_return_status := FND_API.g_ret_sts_success;
1361
1362 -- For create_associations, when association_id is passed in, we need to
1363 -- check if this association_id is unique.
1364 --
1365 IF p_validation_mode = JTF_PLSQL_API.g_create
1366 AND p_association_rec.object_association_id IS NOT NULL
1367 THEN
1368 IF AMS_Utility_PVT.check_uniqueness(
1369 'ams_object_associations',
1370 'object_association_id = ' || p_association_rec.object_association_id
1371 ) = FND_API.g_false
1372 THEN
1373 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1374 THEN
1375 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_DUPLICATE_ID');
1376 FND_MSG_PUB.add;
1377 END IF;
1378 x_return_status := FND_API.g_ret_sts_error;
1379 RETURN;
1380 END IF;
1381 END IF;
1382
1383 IF p_validation_mode = JTF_PLSQL_API.g_create
1384 AND p_association_rec.using_object_id <> FND_API.g_miss_num
1385 AND p_association_rec.master_object_id <> FND_API.g_miss_num
1386 AND p_association_rec.using_object_type <> FND_API.g_miss_char
1387 AND p_association_rec.master_object_type <> FND_API.g_miss_char
1388 THEN
1389 OPEN c_check_obj(p_association_rec.using_object_id,p_association_rec.using_object_type,p_association_rec.master_object_id,p_association_rec.master_object_type);
1390 FETCH c_check_obj INTO l_valid_flag;
1391 CLOSE c_check_obj;
1392
1393 IF l_valid_flag = 'Y' THEN
1394 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1395 THEN
1396 FND_MESSAGE.set_name('AMS','AMS_ACCESS_DUPLICATE_ID');
1397 FND_MSG_PUB.add;
1398 END IF;
1399 x_return_status := FND_API.g_ret_sts_error;
1400 RETURN;
1401 END IF;
1402 END IF;
1403
1404
1405 END check_association_uk_items;
1406
1407 ---------------------------------------------------------------------
1408 -- PROCEDURE
1409 -- check_association_lookup_fk
1410 --
1411 -- HISTORY
1412 -- 11/10/99 sugupta created
1413 -- 07/15/00 ptendulk Added condition to check fulfill_on_type_code,
1414 -- max_cost_currency_code not null before doing
1415 -- fk check
1416 ---------------------------------------------------------------------
1417 PROCEDURE check_association_lookup_fk(
1418 p_association_rec IN association_rec_type,
1419 x_return_status OUT NOCOPY VARCHAR2
1420 )
1421 IS
1422
1423 l_usage_type VARCHAR2(30);
1424 l_master_type VARCHAR2(30);
1425 l_using_type VARCHAR2(30);
1426 l_master_id NUMBER;
1427 l_using_id NUMBER;
1428 l_additional_where_clause VARCHAR2(4000);
1429
1430 BEGIN
1431
1432 x_return_status := FND_API.g_ret_sts_success;
1433
1434 ----------------------- association to object ------------------------
1435 IF p_association_rec.usage_type <> FND_API.g_miss_char THEN
1436 l_usage_type := p_association_rec.usage_type;
1437 IF AMS_Utility_PVT.check_lookup_exists(
1438 p_lookup_type => 'AMS_OBJECT_USAGE_TYPE',
1439 p_lookup_code => p_association_rec.usage_type
1440 ) = FND_API.g_false
1441 THEN
1442 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1443 THEN
1444 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_INVALID_USAGE_TYPE');
1445 FND_MSG_PUB.add;
1446 x_return_status := FND_API.g_ret_sts_error;
1447 RETURN;
1448 END IF;
1449 ELSE
1450 /* master and using object lookup and their association with
1451 usage type logic*/
1452 /* check for master object type lookup..*/
1453
1454 IF p_association_rec.master_object_type <> FND_API.g_miss_char THEN
1455 IF AMS_Utility_PVT.check_lookup_exists(
1456 p_lookup_type => 'AMS_MASTER_OBJECT_TYPE',
1457 p_lookup_code => p_association_rec.master_object_type
1458 ) = FND_API.g_false
1459 THEN
1460 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1461 THEN
1462 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_INVALID_MASTER_TYPE');
1463 FND_MSG_PUB.add;
1464 x_return_status := FND_API.g_ret_sts_error;
1465 RETURN;
1466 END IF;
1467 END IF;
1468 END IF;
1469
1470 -- check for using object type lookup..
1471 IF p_association_rec.using_object_type <> FND_API.g_miss_char THEN
1472 IF AMS_Utility_PVT.check_lookup_exists(
1473 p_lookup_type => 'AMS_USING_OBJECT_TYPE',
1474 p_lookup_code => p_association_rec.using_object_type
1475 ) = FND_API.g_false
1476 THEN
1477 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1478 THEN
1479 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_INVALID_USING_TYPE');
1480 FND_MSG_PUB.add;
1481 x_return_status := FND_API.g_ret_sts_error;
1482 RETURN;
1483 END IF;
1484 END IF;
1485 END IF; /* using obj type*/
1486 ---- check for fk id's....
1487 IF p_association_rec.master_object_id <> FND_API.g_miss_num THEN
1488 l_master_id := p_association_rec.master_object_id;
1489 END IF;
1490
1491 IF p_association_rec.using_object_id <> FND_API.g_miss_num THEN
1492 l_using_id := p_association_rec.using_object_id;
1493 END IF;
1494
1495 --- check corersponsing fk id's for master and using types..
1496 IF (p_association_rec.master_object_type <> FND_API.g_miss_char
1497 AND p_association_rec.using_object_type <> FND_API.g_miss_char) THEN
1498
1499 l_master_type := p_association_rec.master_object_type;
1500 l_using_type := p_association_rec.using_object_type;
1501
1502 IF check_association(l_master_type,l_master_id, l_using_type, l_using_id) = FND_API.g_false
1503 THEN
1504 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1505 THEN
1506 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_INVALID_ASSOCIATION');
1507 FND_MSG_PUB.add;
1508 x_return_status := FND_API.g_ret_sts_error;
1509 RETURN;
1510 END IF;
1511 END IF; /* check association */
1512 END IF; /* check id's if types not null*/
1513 END IF; /* usage type lookup exists */
1514 END IF; /* usage type lookup not fnd_api.g_miss_char */
1515 -------------------------max_cost_currency_code--------------------
1516 l_additional_where_clause := ' enabled_flag '||''''||'Y'||'''';
1517 IF p_association_rec.max_cost_currency_code <> FND_API.g_miss_char
1518 AND p_association_rec.max_cost_currency_code IS NOT NULL THEN
1519 IF AMS_Utility_PVT.Check_FK_Exists (
1520 p_table_name => 'FND_CURRENCIES'
1521 ,p_pk_name => 'CURRENCY_CODE'
1522 ,p_pk_value => p_association_rec.max_cost_currency_code
1523 ,p_pk_data_type => AMS_Utility_PVT.G_VARCHAR2
1524 ,p_additional_where_clause => l_additional_where_clause
1525 ) = FND_API.G_FALSE
1526 THEN
1527 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1528 THEN
1529 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_BAD_CURRENCY_CODE');
1530 FND_MSG_PUB.add;
1531 END IF;
1532
1533 x_return_status := FND_API.g_ret_sts_error;
1534 RETURN;
1535 END IF;
1536 END IF;
1537 -------------------------fulfill_on_type_code--------------------
1538 /**
1539 IF p_association_rec.fulfill_on_type_code <> FND_API.g_miss_char
1540 AND p_association_rec.fulfill_on_type_code IS NOT NULL THEN
1541 IF AMS_Utility_PVT.check_lookup_exists(
1542 p_lookup_type => 'AMS_EVENT_FULFILL_ON',
1543 p_lookup_code => p_association_rec.fulfill_on_type_code
1544 ) = FND_API.g_false
1545 THEN
1546 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1547 THEN
1548 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_BAD_FULFILL');
1549 FND_MSG_PUB.add;
1550 END IF;
1551
1552 x_return_status := FND_API.g_ret_sts_error;
1553 RETURN;
1554 END IF;
1555 END IF;
1556 **/
1557 END check_association_lookup_fk;
1558
1559 ---------------------------------------------------------------------
1560 -- PROCEDURE
1561 -- check_association_flag_items
1562 --
1563 -- HISTORY
1564 -- 11/10/99 sugupta created
1565 ---------------------------------------------------------------------
1566 PROCEDURE check_association_flag_items(
1567 p_association_rec IN association_rec_type,
1568 x_return_status OUT NOCOPY VARCHAR2
1569 )
1570 IS
1571 BEGIN
1572
1573 x_return_status := FND_API.g_ret_sts_success;
1574
1575 ----------------------- primary_flag ------------------------
1576 IF p_association_rec.primary_flag <> FND_API.g_miss_char
1577 AND p_association_rec.primary_flag IS NOT NULL
1578 THEN
1579 IF AMS_Utility_PVT.is_Y_or_N(p_association_rec.primary_flag) = FND_API.g_false
1580 THEN
1581 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1582 THEN
1583 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_BAD_PRIMARY_FLAG');
1584 FND_MSG_PUB.add;
1585 END IF;
1586
1587 x_return_status := FND_API.g_ret_sts_error;
1588 RETURN;
1589 END IF;
1590 END IF;
1591 ----------------------- cost_frozen_flag ------------------------
1592 IF p_association_rec.cost_frozen_flag <> FND_API.g_miss_char
1593 AND p_association_rec.cost_frozen_flag IS NOT NULL
1594 THEN
1595 IF AMS_Utility_PVT.is_Y_or_N(p_association_rec.cost_frozen_flag) = FND_API.g_false
1596 THEN
1597 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1598 THEN
1599 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_BAD_COST_FROZEN_FLAG');
1600 FND_MSG_PUB.add;
1601 END IF;
1602
1603 x_return_status := FND_API.g_ret_sts_error;
1604 RETURN;
1605 END IF;
1606 END IF;
1607
1608 END check_association_flag_items;
1609
1610 ---------------------------------------------------------------------
1611 -- PROCEDURE
1612 -- check_association_dates
1613 --
1614 -- HISTORY
1615 -- 10/30/01 musman created
1616 ---------------------------------------------------------------------
1617 PROCEDURE check_association_dates(
1618 p_association_rec IN association_rec_type,
1619 x_return_status OUT NOCOPY VARCHAR2
1620 )
1621 IS
1622
1623 CURSOR c_eveh_end_Date(l_event_id IN NUMBER)
1624 IS
1625 SELECT active_to_date
1626 FROM ams_event_headers_all_b
1627 WHERE event_header_id = l_event_id;
1628
1629 CURSOR c_eveo_end_date(l_event_offer_id IN NUMBER)
1630 IS
1631 SELECT event_end_date
1632 FROM ams_event_offers_all_b
1633 WHERE event_offer_id = l_event_offer_id;
1634
1635 CURSOR c_camp_end_date(l_camp_id IN NUMBER)
1636 IS
1637 SELECT actual_exec_end_date
1638 FROM ams_campaigns_all_b
1639 WHERE campaign_id = l_camp_id;
1640
1641 CURSOR c_csch_end_date(l_camp_sche_id IN NUMBER)
1642 IS
1643 SELECT end_date_time
1644 FROM ams_campaign_schedules_b
1645 WHERE schedule_id = l_camp_sche_id;
1646
1647 l_end_date date ;
1648
1649
1650 BEGIN
1651
1652 x_return_status := FND_API.g_ret_sts_success;
1653
1654
1655 IF p_association_rec.using_object_type = 'DELV'
1656 THEN
1657
1658 IF p_association_rec.master_object_type = 'CAMP'
1659 THEN
1660 OPEN c_camp_end_date(p_association_rec.master_object_id);
1661 FETCH c_camp_end_date INTO l_end_date;
1662 CLOSE c_camp_end_date;
1663 ELSIF p_association_rec.master_object_type = 'EVEH'
1664 THEN
1665 OPEN c_eveh_end_date(p_association_rec.master_object_id);
1666 FETCH c_eveh_end_date INTO l_end_date;
1667 CLOSE c_eveh_end_date;
1668 ELSIF p_association_rec.master_object_type = 'EVEO'
1669 THEN
1670 OPEN c_eveo_end_date(p_association_rec.master_object_id);
1671 FETCH c_eveo_end_date INTO l_end_date;
1672 CLOSE c_eveo_end_date;
1673 ELSIF p_association_rec.master_object_type = 'EONE'
1674 THEN
1675 OPEN c_eveo_end_date(p_association_rec.master_object_id);
1676 FETCH c_eveo_end_date INTO l_end_date;
1677 CLOSE c_eveo_end_date;
1678 ELSIF p_association_rec.master_object_type = 'CSCH'
1679 THEN
1680 OPEN c_csch_end_date(p_association_rec.master_object_id);
1681 FETCH c_csch_end_date INTO l_end_date;
1682 CLOSE c_csch_end_date;
1683 ELSE
1684 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1685 THEN
1686 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_INVALID_MASTER_TYPE');
1687 FND_MSG_PUB.add;
1688 x_return_status := FND_API.g_ret_sts_error;
1689 RETURN;
1690 END IF;
1691 END IF;
1692
1693 IF p_association_rec.quantity_needed_by_date IS NOT NULL
1694 AND p_association_rec.quantity_needed_by_date <> FND_API.g_miss_date
1695 THEN
1696 IF p_association_rec.quantity_needed_by_date > l_end_date
1697 THEN
1698 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1699 THEN
1700 FND_MESSAGE.set_name('AMS', 'AMS_MASTER_OBJ_INVALID_DATES');
1701 FND_MSG_PUB.add;
1702 END IF;
1703 x_return_status := FND_API.g_ret_sts_error;
1704 RETURN;
1705 END IF;
1706 END IF;
1707
1708 END IF; --using_object_type is DELV
1709
1710 END check_association_dates;
1711 ---------------------------------------------------------------------
1712 -- PROCEDURE
1713 -- check_association_items
1714 --
1715 -- HISTORY
1716 -- 11/10/99 sugupta created
1717 ---------------------------------------------------------------------
1718 PROCEDURE check_association_items(
1719 p_association_rec IN association_rec_type,
1720 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
1721 x_return_status OUT NOCOPY VARCHAR2
1722 )
1723 IS
1724 BEGIN
1725
1726 check_association_req_items(
1727 p_association_rec => p_association_rec,
1728 x_return_status => x_return_status
1729 );
1730
1731 IF x_return_status <> FND_API.g_ret_sts_success THEN
1732 RETURN;
1733 END IF;
1734
1735 check_association_uk_items(
1736 p_association_rec => p_association_rec,
1737 p_validation_mode => p_validation_mode,
1738 x_return_status => x_return_status
1739 );
1740
1741 IF x_return_status <> FND_API.g_ret_sts_success THEN
1742 RETURN;
1743 END IF;
1744
1745 check_association_lookup_fk(
1746 p_association_rec => p_association_rec,
1747 x_return_status => x_return_status
1748 );
1749
1750 IF x_return_status <> FND_API.g_ret_sts_success THEN
1751 RETURN;
1752 END IF;
1753
1754 check_association_flag_items(
1755 p_association_rec => p_association_rec,
1756 x_return_status => x_return_status
1757 );
1758
1759 IF x_return_status <> FND_API.g_ret_sts_success THEN
1760 RETURN;
1761 END IF;
1762
1763 END check_association_items;
1764 ---------------------------------------------------------------------
1765 -- PROCEDURE
1766 -- check_association_record
1767 --
1768 -- HISTORY
1769 -- 11/10/99 sugupta created
1770 ---------------------------------------------------------------------
1771 PROCEDURE check_association_record(
1772 p_association_rec IN association_rec_type,
1773 x_return_status OUT NOCOPY VARCHAR2
1774 )
1775 IS
1776 BEGIN
1777
1778 x_return_status := FND_API.g_ret_sts_success;
1779
1780 -- do other record level checkings
1781
1782 END check_association_record;
1783
1784 ---------------------------------------------------------------------
1785 -- PROCEDURE
1786 -- complete_association_rec
1787 --
1788 -- HISTORY
1789 -- 11/10/99 sugupta created
1790 ---------------------------------------------------------------------
1791 PROCEDURE complete_association_rec(
1792 p_association_rec IN association_rec_type,
1793 x_complete_rec OUT NOCOPY association_rec_type
1794 )
1795 IS
1796
1797 CURSOR c_association IS
1798 SELECT *
1799 FROM ams_object_associations
1800 WHERE object_association_id = p_association_rec.object_association_id;
1801
1802 l_association_rec c_association%ROWTYPE;
1803
1804 BEGIN
1805 x_complete_rec := p_association_rec;
1806
1807 OPEN c_association;
1808 FETCH c_association INTO l_association_rec;
1809 IF c_association%NOTFOUND THEN
1810 CLOSE c_association;
1811 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1812 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
1813 FND_MSG_PUB.add;
1814 END IF;
1815 RAISE FND_API.g_exc_error;
1816 END IF;
1817 CLOSE c_association;
1818
1819 IF p_association_rec.master_object_type = FND_API.g_miss_char THEN
1820 x_complete_rec.master_object_type := l_association_rec.master_object_type;
1821 END IF;
1822
1823 IF p_association_rec.master_object_id = FND_API.g_miss_num THEN
1824 x_complete_rec.master_object_id := l_association_rec.master_object_id;
1825 END IF;
1826
1827 IF p_association_rec.using_object_type = FND_API.g_miss_char THEN
1828 x_complete_rec.using_object_type := l_association_rec.using_object_type;
1829 END IF;
1830
1831 IF p_association_rec.using_object_id = FND_API.g_miss_num THEN
1832 x_complete_rec.using_object_id := l_association_rec.using_object_id;
1833 END IF;
1834
1835 IF p_association_rec.usage_type = FND_API.g_miss_char THEN
1836 x_complete_rec.usage_type := l_association_rec.usage_type;
1837 END IF;
1838
1839 IF p_association_rec.quantity_needed = FND_API.g_miss_num THEN
1840 x_complete_rec.quantity_needed := l_association_rec.quantity_needed;
1841 END IF;
1842
1843 IF p_association_rec.quantity_needed_by_date = FND_API.g_miss_date THEN
1844 x_complete_rec.quantity_needed_by_date := l_association_rec.quantity_needed_by_date;
1845 END IF;
1846
1847 IF p_association_rec.primary_flag = FND_API.g_miss_char THEN
1848 x_complete_rec.primary_flag := l_association_rec.primary_flag ;
1849 END IF;
1850
1851 IF p_association_rec.cost_frozen_flag = FND_API.g_miss_char THEN
1852 x_complete_rec.cost_frozen_flag := l_association_rec.cost_frozen_flag ;
1853 END IF;
1854
1855 IF p_association_rec.pct_of_cost_to_charge_used_by = FND_API.g_miss_num THEN
1856 x_complete_rec.pct_of_cost_to_charge_used_by := l_association_rec.pct_of_cost_to_charge_used_by ;
1857 END IF;
1858
1859 IF p_association_rec.max_cost_to_charge_used_by = FND_API.g_miss_num THEN
1860 x_complete_rec.max_cost_to_charge_used_by := l_association_rec.max_cost_to_charge_used_by ;
1861 END IF;
1862
1863 IF p_association_rec.max_cost_currency_code = FND_API.g_miss_char THEN
1864 x_complete_rec.max_cost_currency_code := l_association_rec.max_cost_currency_code ;
1865 END IF;
1866
1867
1868 IF p_association_rec.metric_class = FND_API.g_miss_char THEN
1869 x_complete_rec.metric_class := l_association_rec.metric_class ;
1870 END IF;
1871
1872 IF p_association_rec.content_type = FND_API.g_miss_char THEN
1873 x_complete_rec.content_type := l_association_rec.content_type ;
1874 END IF;
1875
1876 IF p_association_rec.sequence_no = FND_API.g_miss_num THEN
1877 x_complete_rec.sequence_no := l_association_rec.sequence_no ;
1878 END IF;
1879 END complete_association_rec;
1880 ---------------------------------------------------------------------
1881 -- PROCEDURE
1882 -- init_association_rec
1883 --
1884 -- HISTORY
1885 -- 11/23/1999 sugupta Create.
1886 ---------------------------------------------------------------------
1887 PROCEDURE init_association_rec(
1888 x_association_rec OUT NOCOPY association_rec_type
1889 )
1890 IS
1891 BEGIN
1892
1893 x_association_rec.OBJECT_ASSOCIATION_ID := FND_API.g_miss_num;
1894 x_association_rec.last_update_date := FND_API.g_miss_date;
1895 x_association_rec.last_updated_by := FND_API.g_miss_num;
1896 x_association_rec.creation_date := FND_API.g_miss_date;
1897 x_association_rec.created_by := FND_API.g_miss_num;
1898 x_association_rec.last_update_login := FND_API.g_miss_num;
1899 x_association_rec.object_version_number := FND_API.g_miss_num;
1900 x_association_rec.MASTER_OBJECT_TYPE := FND_API.g_miss_char;
1901 x_association_rec.MASTER_OBJECT_ID := FND_API.g_miss_num;
1902 x_association_rec.USING_OBJECT_TYPE := FND_API.g_miss_char;
1903 x_association_rec.USING_OBJECT_ID := FND_API.g_miss_num;
1904 x_association_rec.PRIMARY_FLAG := FND_API.g_miss_char;
1905 x_association_rec.USAGE_TYPE := FND_API.g_miss_char;
1906 x_association_rec.QUANTITY_NEEDED := FND_API.g_miss_num;
1907 x_association_rec.QUANTITY_NEEDED_BY_DATE := FND_API.g_miss_date;
1908 x_association_rec.COST_FROZEN_FLAG := FND_API.g_miss_char;
1909 x_association_rec.PCT_OF_COST_TO_CHARGE_USED_BY := FND_API.g_miss_num;
1910 x_association_rec.MAX_COST_TO_CHARGE_USED_BY := FND_API.g_miss_num;
1911 x_association_rec.MAX_COST_CURRENCY_CODE := FND_API.g_miss_char;
1912 x_association_rec.METRIC_CLASS := FND_API.g_miss_char;
1913 x_association_rec.FULFILL_ON_TYPE_CODE := FND_API.g_miss_char;
1914 x_association_rec.attribute1 := FND_API.g_miss_char;
1915 x_association_rec.attribute2 := FND_API.g_miss_char;
1916 x_association_rec.attribute3 := FND_API.g_miss_char;
1917 x_association_rec.attribute4 := FND_API.g_miss_char;
1918 x_association_rec.attribute5 := FND_API.g_miss_char;
1919 x_association_rec.attribute6 := FND_API.g_miss_char;
1920 x_association_rec.attribute7 := FND_API.g_miss_char;
1921 x_association_rec.attribute8 := FND_API.g_miss_char;
1922 x_association_rec.attribute9 := FND_API.g_miss_char;
1923 x_association_rec.attribute10 := FND_API.g_miss_char;
1924 x_association_rec.attribute11 := FND_API.g_miss_char;
1925 x_association_rec.attribute12 := FND_API.g_miss_char;
1926 x_association_rec.attribute13 := FND_API.g_miss_char;
1927 x_association_rec.attribute14 := FND_API.g_miss_char;
1928 x_association_rec.attribute15 := FND_API.g_miss_char;
1929 x_association_rec.content_type := FND_API.g_miss_char;
1930 x_association_rec.sequence_no := FND_API.g_miss_num;
1931 END init_association_rec;
1932
1933 END AMS_Associations_PVT;