46: AMS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
47:
48: FUNCTION compare_columns(
49: p_approvers_rec IN Approvers_Rec_Type
50: ) RETURN VARCHAR2; -- FND_API.g_true/g_false
51:
52: FUNCTION seed_needs_update(
53: p_approvers_rec IN Approvers_Rec_Type
54: ) RETURN VARCHAR2; -- FND_API.g_true/g_false
50: ) RETURN VARCHAR2; -- FND_API.g_true/g_false
51:
52: FUNCTION seed_needs_update(
53: p_approvers_rec IN Approvers_Rec_Type
54: ) RETURN VARCHAR2; -- FND_API.g_true/g_false
55:
56: -- Check_Approvers_Req_Items
57: PROCEDURE Check_Approvers_Req_Items (
58: p_approvers_rec IN Approvers_Rec_Type,
113: -- Raise exception in case of duplicates.
114: -- 4. If a flag column is passed in, check if it is 'Y' or 'N'.
115: -- Raise exception for invalid flag.
116: -- 5. If a flag column is not passed in, default it to 'Y' or 'N'.
117: -- 6. Please don't pass in any FND_API.g_mess_char/num/date.
118: --------------------------------------------------------------------
119: PROCEDURE Create_approvers (
120: p_api_version IN NUMBER,
121: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
117: -- 6. Please don't pass in any FND_API.g_mess_char/num/date.
118: --------------------------------------------------------------------
119: PROCEDURE Create_approvers (
120: p_api_version IN NUMBER,
121: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
122: p_commit IN VARCHAR2 := Fnd_Api.g_false,
123: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
124:
125: x_return_status OUT NOCOPY VARCHAR2,
118: --------------------------------------------------------------------
119: PROCEDURE Create_approvers (
120: p_api_version IN NUMBER,
121: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
122: p_commit IN VARCHAR2 := Fnd_Api.g_false,
123: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
124:
125: x_return_status OUT NOCOPY VARCHAR2,
126: x_msg_count OUT NOCOPY NUMBER,
119: PROCEDURE Create_approvers (
120: p_api_version IN NUMBER,
121: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
122: p_commit IN VARCHAR2 := Fnd_Api.g_false,
123: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
124:
125: x_return_status OUT NOCOPY VARCHAR2,
126: x_msg_count OUT NOCOPY NUMBER,
127: x_msg_data OUT NOCOPY VARCHAR2,
154: IF (AMS_DEBUG_HIGH_ON) THEN
155:
156: Ams_Utility_Pvt.debug_message (l_full_name || ': Start');
157: END IF;
158: IF Fnd_Api.to_boolean (p_init_msg_list) THEN
159: Fnd_Msg_Pub.initialize;
160: END IF;
161: IF NOT Fnd_Api.compatible_api_call (
162: L_API_VERSION,
157: END IF;
158: IF Fnd_Api.to_boolean (p_init_msg_list) THEN
159: Fnd_Msg_Pub.initialize;
160: END IF;
161: IF NOT Fnd_Api.compatible_api_call (
162: L_API_VERSION,
163: p_api_version,
164: L_API_NAME,
165: G_PKG_NAME
163: p_api_version,
164: L_API_NAME,
165: G_PKG_NAME
166: ) THEN
167: RAISE Fnd_Api.g_exc_unexpected_error;
168: END IF;
169: x_return_status := Fnd_Api.g_ret_sts_success;
170: ----------------------- validate -----------------------
171: IF (AMS_DEBUG_HIGH_ON) THEN
165: G_PKG_NAME
166: ) THEN
167: RAISE Fnd_Api.g_exc_unexpected_error;
168: END IF;
169: x_return_status := Fnd_Api.g_ret_sts_success;
170: ----------------------- validate -----------------------
171: IF (AMS_DEBUG_HIGH_ON) THEN
172:
173: Ams_Utility_Pvt.debug_message (l_full_name || ': Validate');
181: x_msg_count => x_msg_count,
182: x_msg_data => x_msg_data,
183: p_approvers_rec => l_approvers_rec
184: );
185: IF l_return_status = Fnd_Api.g_ret_sts_error THEN
186: RAISE Fnd_Api.g_exc_error;
187: ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
188: RAISE Fnd_Api.g_exc_unexpected_error;
189: END IF;
182: x_msg_data => x_msg_data,
183: p_approvers_rec => l_approvers_rec
184: );
185: IF l_return_status = Fnd_Api.g_ret_sts_error THEN
186: RAISE Fnd_Api.g_exc_error;
187: ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
188: RAISE Fnd_Api.g_exc_unexpected_error;
189: END IF;
190: --
183: p_approvers_rec => l_approvers_rec
184: );
185: IF l_return_status = Fnd_Api.g_ret_sts_error THEN
186: RAISE Fnd_Api.g_exc_error;
187: ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
188: RAISE Fnd_Api.g_exc_unexpected_error;
189: END IF;
190: --
191: -- Check for the ID.
184: );
185: IF l_return_status = Fnd_Api.g_ret_sts_error THEN
186: RAISE Fnd_Api.g_exc_error;
187: ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
188: RAISE Fnd_Api.g_exc_unexpected_error;
189: END IF;
190: --
191: -- Check for the ID.
192: --
245: --
246: -- END of API body.
247: --
248: -- Standard check of p_commit.
249: IF Fnd_Api.To_Boolean ( p_commit ) THEN
250: COMMIT WORK;
251: END IF;
252: Fnd_Msg_Pub.count_and_get(
253: p_encoded => Fnd_Api.g_false,
249: IF Fnd_Api.To_Boolean ( p_commit ) THEN
250: COMMIT WORK;
251: END IF;
252: Fnd_Msg_Pub.count_and_get(
253: p_encoded => Fnd_Api.g_false,
254: p_count => x_msg_count,
255: p_data => x_msg_data
256: );
257: IF (AMS_DEBUG_HIGH_ON) THEN
260: END IF;
261:
262:
263: EXCEPTION
264: WHEN Fnd_Api.g_exc_error THEN
265: ROLLBACK TO Create_Approvers;
266: x_return_status := Fnd_Api.g_ret_sts_error;
267: Fnd_Msg_Pub.count_and_get(
268: p_encoded => Fnd_Api.g_false,
262:
263: EXCEPTION
264: WHEN Fnd_Api.g_exc_error THEN
265: ROLLBACK TO Create_Approvers;
266: x_return_status := Fnd_Api.g_ret_sts_error;
267: Fnd_Msg_Pub.count_and_get(
268: p_encoded => Fnd_Api.g_false,
269: p_count => x_msg_count,
270: p_data => x_msg_data
264: WHEN Fnd_Api.g_exc_error THEN
265: ROLLBACK TO Create_Approvers;
266: x_return_status := Fnd_Api.g_ret_sts_error;
267: Fnd_Msg_Pub.count_and_get(
268: p_encoded => Fnd_Api.g_false,
269: p_count => x_msg_count,
270: p_data => x_msg_data
271: );
272: WHEN Fnd_Api.g_exc_unexpected_error THEN
268: p_encoded => Fnd_Api.g_false,
269: p_count => x_msg_count,
270: p_data => x_msg_data
271: );
272: WHEN Fnd_Api.g_exc_unexpected_error THEN
273: ROLLBACK TO Create_Approvers;
274: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
275: Fnd_Msg_Pub.count_and_get (
276: p_encoded => Fnd_Api.g_false,
270: p_data => x_msg_data
271: );
272: WHEN Fnd_Api.g_exc_unexpected_error THEN
273: ROLLBACK TO Create_Approvers;
274: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
275: Fnd_Msg_Pub.count_and_get (
276: p_encoded => Fnd_Api.g_false,
277: p_count => x_msg_count,
278: p_data => x_msg_data
272: WHEN Fnd_Api.g_exc_unexpected_error THEN
273: ROLLBACK TO Create_Approvers;
274: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
275: Fnd_Msg_Pub.count_and_get (
276: p_encoded => Fnd_Api.g_false,
277: p_count => x_msg_count,
278: p_data => x_msg_data
279: );
280: WHEN OTHERS THEN
278: p_data => x_msg_data
279: );
280: WHEN OTHERS THEN
281: ROLLBACK TO Create_Approvers;
282: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
283: IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
284: THEN
285: Fnd_Msg_Pub.add_exc_msg (g_pkg_name, l_api_name);
286: END IF;
284: THEN
285: Fnd_Msg_Pub.add_exc_msg (g_pkg_name, l_api_name);
286: END IF;
287: Fnd_Msg_Pub.count_and_get (
288: p_encoded => Fnd_Api.g_false,
289: p_count => x_msg_count,
290: p_data => x_msg_data
291: );
292: END Create_approvers;
301: -- p_approvers_rec: the record representing AMS_APPROVERS (without the ROW_ID column).
302: --
303: -- NOTES
304: -- 1. Raise exception if the object_version_number doesn't match.
305: -- 2. If an attribute is passed in as FND_API.g_miss_char/num/date,
306: -- that column won't be updated.
307: --------------------------------------------------------------------
308: PROCEDURE Update_approvers (
309: p_api_version IN NUMBER,
306: -- that column won't be updated.
307: --------------------------------------------------------------------
308: PROCEDURE Update_approvers (
309: p_api_version IN NUMBER,
310: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
311: p_commit IN VARCHAR2 := Fnd_Api.g_false,
312: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
313:
314: x_return_status OUT NOCOPY VARCHAR2,
307: --------------------------------------------------------------------
308: PROCEDURE Update_approvers (
309: p_api_version IN NUMBER,
310: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
311: p_commit IN VARCHAR2 := Fnd_Api.g_false,
312: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
313:
314: x_return_status OUT NOCOPY VARCHAR2,
315: x_msg_count OUT NOCOPY NUMBER,
308: PROCEDURE Update_approvers (
309: p_api_version IN NUMBER,
310: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
311: p_commit IN VARCHAR2 := Fnd_Api.g_false,
312: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
313:
314: x_return_status OUT NOCOPY VARCHAR2,
315: x_msg_count OUT NOCOPY NUMBER,
316: x_msg_data OUT NOCOPY VARCHAR2,
333: IF (AMS_DEBUG_HIGH_ON) THEN
334:
335: Ams_Utility_Pvt.debug_message (l_full_name || ': Start');
336: END IF;
337: IF Fnd_Api.to_boolean (p_init_msg_list) THEN
338: Fnd_Msg_Pub.initialize;
339: END IF;
340: IF NOT Fnd_Api.compatible_api_call(
341: l_api_version,
336: END IF;
337: IF Fnd_Api.to_boolean (p_init_msg_list) THEN
338: Fnd_Msg_Pub.initialize;
339: END IF;
340: IF NOT Fnd_Api.compatible_api_call(
341: l_api_version,
342: p_api_version,
343: l_api_name,
344: g_pkg_name
342: p_api_version,
343: l_api_name,
344: g_pkg_name
345: ) THEN
346: RAISE Fnd_Api.g_exc_unexpected_error;
347: END IF;
348: x_return_status := Fnd_Api.g_ret_sts_success;
349:
350: ----------------------- validate ----------------------
344: g_pkg_name
345: ) THEN
346: RAISE Fnd_Api.g_exc_unexpected_error;
347: END IF;
348: x_return_status := Fnd_Api.g_ret_sts_success;
349:
350: ----------------------- validate ----------------------
351: IF (AMS_DEBUG_HIGH_ON) THEN
352:
354: END IF;
355: -- replace g_miss_char/num/date with current column values
356: Complete_approvers_Rec(p_approvers_rec,l_approvers_rec);
357: IF l_approvers_rec.seeded_flag = 'Y' THEN
358: IF compare_columns(l_approvers_rec) = Fnd_Api.g_false THEN
359: IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error) THEN
360: Fnd_Message.set_name ('AMS', 'AMS_STATUS_SEED_DATA');
361: Fnd_Msg_Pub.ADD;
362: END IF;
359: IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error) THEN
360: Fnd_Message.set_name ('AMS', 'AMS_STATUS_SEED_DATA');
361: Fnd_Msg_Pub.ADD;
362: END IF;
363: RAISE Fnd_Api.g_exc_error;
364: END IF;
365: ELSE
366: IF p_validation_level >= Jtf_Plsql_Api.g_valid_level_item THEN
367: Check_approvers_Items (
368: p_approvers_rec => l_approvers_rec ,
369: p_validation_mode => Jtf_Plsql_Api.g_update,
370: x_return_status => l_return_status
371: );
372: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
373: RAISE Fnd_Api.g_exc_unexpected_error;
374: ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
375: RAISE Fnd_Api.g_exc_error;
376: END IF;
369: p_validation_mode => Jtf_Plsql_Api.g_update,
370: x_return_status => l_return_status
371: );
372: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
373: RAISE Fnd_Api.g_exc_unexpected_error;
374: ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
375: RAISE Fnd_Api.g_exc_error;
376: END IF;
377: END IF;
370: x_return_status => l_return_status
371: );
372: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
373: RAISE Fnd_Api.g_exc_unexpected_error;
374: ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
375: RAISE Fnd_Api.g_exc_error;
376: END IF;
377: END IF;
378:
371: );
372: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
373: RAISE Fnd_Api.g_exc_unexpected_error;
374: ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
375: RAISE Fnd_Api.g_exc_error;
376: END IF;
377: END IF;
378:
379:
382: p_approvers_rec => l_approvers_rec,
383: p_complete_rec => l_approvers_rec,
384: x_return_status => l_return_status
385: );
386: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
387: RAISE Fnd_Api.g_exc_unexpected_error;
388: ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
389: RAISE Fnd_Api.g_exc_error;
390: END IF;
383: p_complete_rec => l_approvers_rec,
384: x_return_status => l_return_status
385: );
386: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
387: RAISE Fnd_Api.g_exc_unexpected_error;
388: ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
389: RAISE Fnd_Api.g_exc_error;
390: END IF;
391: END IF;
384: x_return_status => l_return_status
385: );
386: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
387: RAISE Fnd_Api.g_exc_unexpected_error;
388: ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
389: RAISE Fnd_Api.g_exc_error;
390: END IF;
391: END IF;
392: END IF; -- check for seeded flag
385: );
386: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
387: RAISE Fnd_Api.g_exc_unexpected_error;
388: ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
389: RAISE Fnd_Api.g_exc_error;
390: END IF;
391: END IF;
392: END IF; -- check for seeded flag
393: -- Check to see if the row is seeded if the row is seeded then can't update
392: END IF; -- check for seeded flag
393: -- Check to see if the row is seeded if the row is seeded then can't update
394: -- modified.. enabled flag for seeded rows can be updated.. added seed_needs_ -- update function
395: IF l_approvers_rec.seeded_flag='N'
396: OR seed_needs_update(l_approvers_rec) = Fnd_Api.g_true
397: THEN
398: -------------------------- update --------------------
399: IF (AMS_DEBUG_HIGH_ON) THEN
400:
419: X_LAST_UPDATE_LOGIN => Fnd_Global.Conc_Login_Id
420: );
421: END IF;-- ending if loop for second seeded_flag check
422: -------------------- finish --------------------------
423: IF Fnd_Api.to_boolean (p_commit) THEN
424: COMMIT;
425: END IF;
426: Fnd_Msg_Pub.count_and_get (
427: p_encoded => Fnd_Api.g_false,
423: IF Fnd_Api.to_boolean (p_commit) THEN
424: COMMIT;
425: END IF;
426: Fnd_Msg_Pub.count_and_get (
427: p_encoded => Fnd_Api.g_false,
428: p_count => x_msg_count,
429: p_data => x_msg_data
430: );
431: IF (AMS_DEBUG_HIGH_ON) THEN
434: END IF;
435:
436:
437: EXCEPTION
438: WHEN Fnd_Api.g_exc_error THEN
439: ROLLBACK TO Update_approvers;
440: x_return_status := Fnd_Api.g_ret_sts_error;
441: Fnd_Msg_Pub.count_and_get (
442: p_encoded => Fnd_Api.g_false,
436:
437: EXCEPTION
438: WHEN Fnd_Api.g_exc_error THEN
439: ROLLBACK TO Update_approvers;
440: x_return_status := Fnd_Api.g_ret_sts_error;
441: Fnd_Msg_Pub.count_and_get (
442: p_encoded => Fnd_Api.g_false,
443: p_count => x_msg_count,
444: p_data => x_msg_data
438: WHEN Fnd_Api.g_exc_error THEN
439: ROLLBACK TO Update_approvers;
440: x_return_status := Fnd_Api.g_ret_sts_error;
441: Fnd_Msg_Pub.count_and_get (
442: p_encoded => Fnd_Api.g_false,
443: p_count => x_msg_count,
444: p_data => x_msg_data
445: );
446:
443: p_count => x_msg_count,
444: p_data => x_msg_data
445: );
446:
447: WHEN Fnd_Api.g_exc_unexpected_error THEN
448: ROLLBACK TO Update_approvers;
449: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
450: Fnd_Msg_Pub.count_and_get (
451: p_encoded => Fnd_Api.g_false,
445: );
446:
447: WHEN Fnd_Api.g_exc_unexpected_error THEN
448: ROLLBACK TO Update_approvers;
449: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
450: Fnd_Msg_Pub.count_and_get (
451: p_encoded => Fnd_Api.g_false,
452: p_count => x_msg_count,
453: p_data => x_msg_data
447: WHEN Fnd_Api.g_exc_unexpected_error THEN
448: ROLLBACK TO Update_approvers;
449: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
450: Fnd_Msg_Pub.count_and_get (
451: p_encoded => Fnd_Api.g_false,
452: p_count => x_msg_count,
453: p_data => x_msg_data
454: );
455:
454: );
455:
456: WHEN OTHERS THEN
457: ROLLBACK TO Update_approvers;
458: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
459: IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
460: THEN
461: Fnd_Msg_Pub.add_exc_msg (g_pkg_name, l_api_name);
462: END IF;
460: THEN
461: Fnd_Msg_Pub.add_exc_msg (g_pkg_name, l_api_name);
462: END IF;
463: Fnd_Msg_Pub.count_and_get (
464: p_encoded => Fnd_Api.g_false,
465: p_count => x_msg_count,
466: p_data => x_msg_data
467: );
468: END Update_approvers;
484: -- 1. Raise exception if the object_version_number doesn't match.
485: --------------------------------------------------------------------
486: PROCEDURE Delete_approvers (
487: p_api_version IN NUMBER,
488: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
489: p_commit IN VARCHAR2 := Fnd_Api.g_false,
490: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
491:
492: x_return_status OUT NOCOPY VARCHAR2,
485: --------------------------------------------------------------------
486: PROCEDURE Delete_approvers (
487: p_api_version IN NUMBER,
488: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
489: p_commit IN VARCHAR2 := Fnd_Api.g_false,
490: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
491:
492: x_return_status OUT NOCOPY VARCHAR2,
493: x_msg_count OUT NOCOPY NUMBER,
486: PROCEDURE Delete_approvers (
487: p_api_version IN NUMBER,
488: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
489: p_commit IN VARCHAR2 := Fnd_Api.g_false,
490: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
491:
492: x_return_status OUT NOCOPY VARCHAR2,
493: x_msg_count OUT NOCOPY NUMBER,
494: x_msg_data OUT NOCOPY VARCHAR2,
521: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
522: Fnd_Message.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
523: Fnd_Msg_Pub.ADD;
524: END IF;
525: RAISE Fnd_Api.g_exc_error;
526: END IF;
527: CLOSE c_approvers;
528: --------------------- initialize -----------------------
529: SAVEPOINT Delete_approvers;
530: IF (AMS_DEBUG_HIGH_ON) THEN
531:
532: Ams_Utility_Pvt.debug_message (l_full_name || ': Start');
533: END IF;
534: IF Fnd_Api.to_boolean (p_init_msg_list) THEN
535: Fnd_Msg_Pub.initialize;
536: END IF;
537: IF NOT Fnd_Api.compatible_api_call (
538: l_api_version,
533: END IF;
534: IF Fnd_Api.to_boolean (p_init_msg_list) THEN
535: Fnd_Msg_Pub.initialize;
536: END IF;
537: IF NOT Fnd_Api.compatible_api_call (
538: l_api_version,
539: p_api_version,
540: l_api_name,
541: g_pkg_name
539: p_api_version,
540: l_api_name,
541: g_pkg_name
542: ) THEN
543: RAISE Fnd_Api.g_exc_unexpected_error;
544: END IF;
545: x_return_status := Fnd_Api.g_ret_sts_success;
546:
547: ------------------------ delete ------------------------
541: g_pkg_name
542: ) THEN
543: RAISE Fnd_Api.g_exc_unexpected_error;
544: END IF;
545: x_return_status := Fnd_Api.g_ret_sts_success;
546:
547: ------------------------ delete ------------------------
548: IF (AMS_DEBUG_HIGH_ON) THEN
549:
556: ELSE
557: IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error) THEN
558: Fnd_Message.set_name ('AMS', 'AMS_API_SEED_DATA');
559: Fnd_Msg_Pub.ADD;
560: RAISE Fnd_Api.g_exc_error;
561: END IF;
562: END IF;
563: -------------------- finish --------------------------
564: IF Fnd_Api.to_boolean (p_commit) THEN
560: RAISE Fnd_Api.g_exc_error;
561: END IF;
562: END IF;
563: -------------------- finish --------------------------
564: IF Fnd_Api.to_boolean (p_commit) THEN
565: COMMIT;
566: END IF;
567: Fnd_Msg_Pub.count_and_get (
568: p_encoded => Fnd_Api.g_false,
564: IF Fnd_Api.to_boolean (p_commit) THEN
565: COMMIT;
566: END IF;
567: Fnd_Msg_Pub.count_and_get (
568: p_encoded => Fnd_Api.g_false,
569: p_count => x_msg_count,
570: p_data => x_msg_data
571: );
572: IF (AMS_DEBUG_HIGH_ON) THEN
575: END IF;
576:
577:
578: EXCEPTION
579: WHEN Fnd_Api.g_exc_error THEN
580: ROLLBACK TO Delete_approvers;
581: x_return_status := Fnd_Api.g_ret_sts_error;
582: Fnd_Msg_Pub.count_and_get (
583: p_encoded => Fnd_Api.g_false,
577:
578: EXCEPTION
579: WHEN Fnd_Api.g_exc_error THEN
580: ROLLBACK TO Delete_approvers;
581: x_return_status := Fnd_Api.g_ret_sts_error;
582: Fnd_Msg_Pub.count_and_get (
583: p_encoded => Fnd_Api.g_false,
584: p_count => x_msg_count,
585: p_data => x_msg_data
579: WHEN Fnd_Api.g_exc_error THEN
580: ROLLBACK TO Delete_approvers;
581: x_return_status := Fnd_Api.g_ret_sts_error;
582: Fnd_Msg_Pub.count_and_get (
583: p_encoded => Fnd_Api.g_false,
584: p_count => x_msg_count,
585: p_data => x_msg_data
586: );
587:
584: p_count => x_msg_count,
585: p_data => x_msg_data
586: );
587:
588: WHEN Fnd_Api.g_exc_unexpected_error THEN
589: ROLLBACK TO Delete_approvers;
590: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
591: Fnd_Msg_Pub.count_and_get (
592: p_encoded => Fnd_Api.g_false,
586: );
587:
588: WHEN Fnd_Api.g_exc_unexpected_error THEN
589: ROLLBACK TO Delete_approvers;
590: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
591: Fnd_Msg_Pub.count_and_get (
592: p_encoded => Fnd_Api.g_false,
593: p_count => x_msg_count,
594: p_data => x_msg_data
588: WHEN Fnd_Api.g_exc_unexpected_error THEN
589: ROLLBACK TO Delete_approvers;
590: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
591: Fnd_Msg_Pub.count_and_get (
592: p_encoded => Fnd_Api.g_false,
593: p_count => x_msg_count,
594: p_data => x_msg_data
595: );
596:
595: );
596:
597: WHEN OTHERS THEN
598: ROLLBACK TO Delete_approvers;
599: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
600: IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
601: THEN
602: Fnd_Msg_Pub.add_exc_msg (g_pkg_name, l_api_name);
603: END IF;
601: THEN
602: Fnd_Msg_Pub.add_exc_msg (g_pkg_name, l_api_name);
603: END IF;
604: Fnd_Msg_Pub.count_and_get (
605: p_encoded => Fnd_Api.g_false,
606: p_count => x_msg_count,
607: p_data => x_msg_data
608: );
609: END Delete_approvers;
625: -- 1. Raise exception if the object_version_number doesn't match.
626: --------------------------------------------------------------------
627: PROCEDURE Lock_approvers (
628: p_api_version IN NUMBER,
629: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
630: p_commit IN VARCHAR2 := Fnd_Api.g_false,
631: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
632:
633: x_return_status OUT NOCOPY VARCHAR2,
626: --------------------------------------------------------------------
627: PROCEDURE Lock_approvers (
628: p_api_version IN NUMBER,
629: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
630: p_commit IN VARCHAR2 := Fnd_Api.g_false,
631: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
632:
633: x_return_status OUT NOCOPY VARCHAR2,
634: x_msg_count OUT NOCOPY NUMBER,
627: PROCEDURE Lock_approvers (
628: p_api_version IN NUMBER,
629: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
630: p_commit IN VARCHAR2 := Fnd_Api.g_false,
631: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
632:
633: x_return_status OUT NOCOPY VARCHAR2,
634: x_msg_count OUT NOCOPY NUMBER,
635: x_msg_data OUT NOCOPY VARCHAR2,
652: -- p_approvers_rec: the record representing AMS_APPROVERS (without ROW_ID).
653: --
654: -- NOTES
655: -- 1. p_approvers_rec should be the complete approvers record.
656: -- There should not be any FND_API.g_miss_char/num/date in it.
657: -- 2. If FND_API.g_miss_char/num/date is in the record, then raise
658: -- an exception, as those values are not handled.
659: --------------------------------------------------------------------
660: PROCEDURE Validate_approvers (
653: --
654: -- NOTES
655: -- 1. p_approvers_rec should be the complete approvers record.
656: -- There should not be any FND_API.g_miss_char/num/date in it.
657: -- 2. If FND_API.g_miss_char/num/date is in the record, then raise
658: -- an exception, as those values are not handled.
659: --------------------------------------------------------------------
660: PROCEDURE Validate_approvers (
661: p_api_version IN NUMBER,
658: -- an exception, as those values are not handled.
659: --------------------------------------------------------------------
660: PROCEDURE Validate_approvers (
661: p_api_version IN NUMBER,
662: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
663: p_commit IN VARCHAR2 := Fnd_Api.g_false,
664: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
665:
666: x_return_status OUT NOCOPY VARCHAR2,
659: --------------------------------------------------------------------
660: PROCEDURE Validate_approvers (
661: p_api_version IN NUMBER,
662: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
663: p_commit IN VARCHAR2 := Fnd_Api.g_false,
664: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
665:
666: x_return_status OUT NOCOPY VARCHAR2,
667: x_msg_count OUT NOCOPY NUMBER,
660: PROCEDURE Validate_approvers (
661: p_api_version IN NUMBER,
662: p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
663: p_commit IN VARCHAR2 := Fnd_Api.g_false,
664: p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
665:
666: x_return_status OUT NOCOPY VARCHAR2,
667: x_msg_count OUT NOCOPY NUMBER,
668: x_msg_data OUT NOCOPY VARCHAR2,
680: IF (AMS_DEBUG_HIGH_ON) THEN
681:
682: Ams_Utility_Pvt.debug_message (l_full_name || ': Start');
683: END IF;
684: IF Fnd_Api.to_boolean (p_init_msg_list) THEN
685: Fnd_Msg_Pub.initialize;
686: END IF;
687: IF NOT Fnd_Api.compatible_api_call (
688: l_api_version,
683: END IF;
684: IF Fnd_Api.to_boolean (p_init_msg_list) THEN
685: Fnd_Msg_Pub.initialize;
686: END IF;
687: IF NOT Fnd_Api.compatible_api_call (
688: l_api_version,
689: p_api_version,
690: l_api_name,
691: g_pkg_name
689: p_api_version,
690: l_api_name,
691: g_pkg_name
692: ) THEN
693: RAISE Fnd_Api.g_exc_unexpected_error;
694: END IF;
695: x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
696:
697: ---------------------- validate ------------------------
691: g_pkg_name
692: ) THEN
693: RAISE Fnd_Api.g_exc_unexpected_error;
694: END IF;
695: x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
696:
697: ---------------------- validate ------------------------
698: IF (AMS_DEBUG_HIGH_ON) THEN
699:
704: p_approvers_rec => p_approvers_rec,
705: p_validation_mode => Jtf_Plsql_Api.g_create,
706: x_return_status => l_return_status
707: );
708: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
709: RAISE Fnd_Api.g_exc_unexpected_error;
710: ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
711: RAISE Fnd_Api.g_exc_error;
712: END IF;
705: p_validation_mode => Jtf_Plsql_Api.g_create,
706: x_return_status => l_return_status
707: );
708: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
709: RAISE Fnd_Api.g_exc_unexpected_error;
710: ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
711: RAISE Fnd_Api.g_exc_error;
712: END IF;
713: END IF;
706: x_return_status => l_return_status
707: );
708: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
709: RAISE Fnd_Api.g_exc_unexpected_error;
710: ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
711: RAISE Fnd_Api.g_exc_error;
712: END IF;
713: END IF;
714: IF (AMS_DEBUG_HIGH_ON) THEN
707: );
708: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
709: RAISE Fnd_Api.g_exc_unexpected_error;
710: ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
711: RAISE Fnd_Api.g_exc_error;
712: END IF;
713: END IF;
714: IF (AMS_DEBUG_HIGH_ON) THEN
715:
720: p_approvers_rec => p_approvers_rec,
721: p_complete_rec => NULL,
722: x_return_status => l_return_status
723: );
724: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
725: RAISE Fnd_Api.g_exc_unexpected_error;
726: ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
727: RAISE Fnd_Api.g_exc_error;
728: END IF;
721: p_complete_rec => NULL,
722: x_return_status => l_return_status
723: );
724: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
725: RAISE Fnd_Api.g_exc_unexpected_error;
726: ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
727: RAISE Fnd_Api.g_exc_error;
728: END IF;
729: END IF;
722: x_return_status => l_return_status
723: );
724: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
725: RAISE Fnd_Api.g_exc_unexpected_error;
726: ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
727: RAISE Fnd_Api.g_exc_error;
728: END IF;
729: END IF;
730:
723: );
724: IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
725: RAISE Fnd_Api.g_exc_unexpected_error;
726: ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
727: RAISE Fnd_Api.g_exc_error;
728: END IF;
729: END IF;
730:
731:
732:
733:
734: -------------------- finish --------------------------
735: Fnd_Msg_Pub.count_and_get (
736: p_encoded => Fnd_Api.g_false,
737: p_count => x_msg_count,
738: p_data => x_msg_data
739: );
740: IF (AMS_DEBUG_HIGH_ON) THEN
741:
742: Ams_Utility_Pvt.debug_message (l_full_name || ': End');
743: END IF;
744: EXCEPTION
745: WHEN Fnd_Api.g_exc_error THEN
746: x_return_status := Fnd_Api.g_ret_sts_error;
747: Fnd_Msg_Pub.count_and_get (
748: p_encoded => Fnd_Api.g_false,
749: p_count => x_msg_count,
742: Ams_Utility_Pvt.debug_message (l_full_name || ': End');
743: END IF;
744: EXCEPTION
745: WHEN Fnd_Api.g_exc_error THEN
746: x_return_status := Fnd_Api.g_ret_sts_error;
747: Fnd_Msg_Pub.count_and_get (
748: p_encoded => Fnd_Api.g_false,
749: p_count => x_msg_count,
750: p_data => x_msg_data
744: EXCEPTION
745: WHEN Fnd_Api.g_exc_error THEN
746: x_return_status := Fnd_Api.g_ret_sts_error;
747: Fnd_Msg_Pub.count_and_get (
748: p_encoded => Fnd_Api.g_false,
749: p_count => x_msg_count,
750: p_data => x_msg_data
751: );
752: WHEN Fnd_Api.g_exc_unexpected_error THEN
748: p_encoded => Fnd_Api.g_false,
749: p_count => x_msg_count,
750: p_data => x_msg_data
751: );
752: WHEN Fnd_Api.g_exc_unexpected_error THEN
753: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
754: Fnd_Msg_Pub.count_and_get (
755: p_encoded => Fnd_Api.g_false,
756: p_count => x_msg_count,
749: p_count => x_msg_count,
750: p_data => x_msg_data
751: );
752: WHEN Fnd_Api.g_exc_unexpected_error THEN
753: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
754: Fnd_Msg_Pub.count_and_get (
755: p_encoded => Fnd_Api.g_false,
756: p_count => x_msg_count,
757: p_data => x_msg_data
751: );
752: WHEN Fnd_Api.g_exc_unexpected_error THEN
753: x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
754: Fnd_Msg_Pub.count_and_get (
755: p_encoded => Fnd_Api.g_false,
756: p_count => x_msg_count,
757: p_data => x_msg_data
758: );
759: WHEN OTHERS THEN
756: p_count => x_msg_count,
757: p_data => x_msg_data
758: );
759: WHEN OTHERS THEN
760: x_return_status := Fnd_Api.g_ret_sts_unexp_error;
761: IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
762: THEN
763: Fnd_Msg_Pub.add_exc_msg (g_pkg_name, l_api_name);
764: END IF;
762: THEN
763: Fnd_Msg_Pub.add_exc_msg (g_pkg_name, l_api_name);
764: END IF;
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:
793: Check_approvers_Req_Items (
794: p_approvers_rec => p_approvers_rec,
795: x_return_status => x_return_status
796: );
797: IF x_return_status <> Fnd_Api.g_ret_sts_success THEN
798: RETURN;
799: END IF;
800: --
801: -- Validate uniqueness.
803: p_approvers_rec => p_approvers_rec,
804: p_validation_mode => p_validation_mode,
805: x_return_status => x_return_status
806: );
807: IF x_return_status <> Fnd_Api.g_ret_sts_success THEN
808: RETURN;
809: END IF;
810:
811: Check_approvers_FK_Items(
812: p_approvers_rec => p_approvers_rec,
813: x_return_status => x_return_status
814: );
815:
816: IF x_return_status <> Fnd_Api.g_ret_sts_success THEN
817: RETURN;
818: END IF;
819: Check_approvers_Lkup_Items (
820: p_approvers_rec => p_approvers_rec,
819: Check_approvers_Lkup_Items (
820: p_approvers_rec => p_approvers_rec,
821: x_return_status => x_return_status
822: );
823: IF x_return_status <> Fnd_Api.g_ret_sts_success THEN
824: RETURN;
825: END IF;
826: Check_approvers_Flag_Items(
827: p_approvers_rec => p_approvers_rec,
826: Check_approvers_Flag_Items(
827: p_approvers_rec => p_approvers_rec,
828: x_return_status => x_return_status
829: );
830: IF x_return_status <> Fnd_Api.g_ret_sts_success THEN
831: RETURN;
832: END IF;
833: IF (p_approvers_rec.start_date_active > p_approvers_rec.end_date_active) THEN
834: --dbms_output.put_line('st > ed ');
834: --dbms_output.put_line('st > ed ');
835: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
836: Fnd_Message.set_name('AMS', 'AMS_APPR_DTL_SD_BFR_ED');
837: Fnd_Msg_Pub.ADD;
838: x_return_status := Fnd_Api.g_ret_sts_error;
839: RETURN;
840: END IF;
841: END IF;
842: END Check_approvers_Items;
849: -- Check the record level business rules.
850: --
851: -- PARAMETERS
852: -- p_approvers_rec: the record to be validated; may contain attributes
853: -- as FND_API.g_miss_char/num/date
854: -- p_complete_rec: the complete record after all "g_miss" items
855: -- have been replaced by current database values
856: ---------------------------------------------------------------------
857: PROCEDURE Check_approvers_Record (
867: IF p_complete_rec.start_date_active IS NOT NULL THEN
868: l_start_date_active := p_complete_rec.start_date_active;
869: ELSE
870: IF p_approvers_rec.start_date_active IS NOT NULL AND
871: p_approvers_rec.start_date_active <> Fnd_Api.g_miss_date THEN
872: l_start_date_active := p_approvers_rec.start_date_active;
873: END IF;
874: END IF;
875: IF p_complete_rec.end_date_active IS NOT NULL THEN
875: IF p_complete_rec.end_date_active IS NOT NULL THEN
876: l_end_date_active := p_complete_rec.end_date_active;
877: ELSE
878: IF p_approvers_rec.end_date_active IS NOT NULL AND
879: p_approvers_rec.end_date_active <> Fnd_Api.g_miss_date THEN
880: l_end_date_active := p_approvers_rec.end_date_active;
881: END IF;
882: END IF;
883: x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
879: p_approvers_rec.end_date_active <> Fnd_Api.g_miss_date THEN
880: l_end_date_active := p_approvers_rec.end_date_active;
881: END IF;
882: END IF;
883: x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
884: IF l_start_date_active IS NOT NULL AND l_end_date_active IS NOT NULL THEN
885: IF l_start_date_active > l_end_date_active THEN
886: IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error) THEN
887: Fnd_Message.set_name ('AMS', 'AMS_APPR_APRVR_SD_BFR_ED');
886: IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error) THEN
887: Fnd_Message.set_name ('AMS', 'AMS_APPR_APRVR_SD_BFR_ED');
888: Fnd_Msg_Pub.ADD;
889: END IF;
890: x_return_status := Fnd_Api.g_ret_sts_error;
891: RETURN;
892: END IF;
893: END IF;
894: END Check_approvers_Record;
896: -- PROCEDURE
897: -- Init_approvers_Rec
898: --
899: -- PURPOSE
900: -- Initialize all attributes to be FND_API.g_miss_char/num/date.
901: ---------------------------------------------------------------------
902: PROCEDURE Init_approvers_Rec (
903: x_approvers_rec OUT NOCOPY Approvers_Rec_Type
904: ) IS
902: PROCEDURE Init_approvers_Rec (
903: x_approvers_rec OUT NOCOPY Approvers_Rec_Type
904: ) IS
905: BEGIN
906: x_approvers_rec.approver_id := Fnd_Api.g_miss_num;
907: x_approvers_rec.start_date_active := Fnd_Api.g_miss_date;
908: x_approvers_rec.end_date_active := Fnd_Api.g_miss_date;
909: x_approvers_rec.object_version_number := Fnd_Api.g_miss_num;
910: --x_approvers_rec.security_group_id := Fnd_Api.g_miss_num;
903: x_approvers_rec OUT NOCOPY Approvers_Rec_Type
904: ) IS
905: BEGIN
906: x_approvers_rec.approver_id := Fnd_Api.g_miss_num;
907: x_approvers_rec.start_date_active := Fnd_Api.g_miss_date;
908: x_approvers_rec.end_date_active := Fnd_Api.g_miss_date;
909: x_approvers_rec.object_version_number := Fnd_Api.g_miss_num;
910: --x_approvers_rec.security_group_id := Fnd_Api.g_miss_num;
911: x_approvers_rec.ams_approval_detail_id := Fnd_Api.g_miss_num;
904: ) IS
905: BEGIN
906: x_approvers_rec.approver_id := Fnd_Api.g_miss_num;
907: x_approvers_rec.start_date_active := Fnd_Api.g_miss_date;
908: x_approvers_rec.end_date_active := Fnd_Api.g_miss_date;
909: x_approvers_rec.object_version_number := Fnd_Api.g_miss_num;
910: --x_approvers_rec.security_group_id := Fnd_Api.g_miss_num;
911: x_approvers_rec.ams_approval_detail_id := Fnd_Api.g_miss_num;
912: x_approvers_rec.approver_seq := Fnd_Api.g_miss_num;
905: BEGIN
906: x_approvers_rec.approver_id := Fnd_Api.g_miss_num;
907: x_approvers_rec.start_date_active := Fnd_Api.g_miss_date;
908: x_approvers_rec.end_date_active := Fnd_Api.g_miss_date;
909: x_approvers_rec.object_version_number := Fnd_Api.g_miss_num;
910: --x_approvers_rec.security_group_id := Fnd_Api.g_miss_num;
911: x_approvers_rec.ams_approval_detail_id := Fnd_Api.g_miss_num;
912: x_approvers_rec.approver_seq := Fnd_Api.g_miss_num;
913: x_approvers_rec.approver_type := Fnd_Api.g_miss_char;
906: x_approvers_rec.approver_id := Fnd_Api.g_miss_num;
907: x_approvers_rec.start_date_active := Fnd_Api.g_miss_date;
908: x_approvers_rec.end_date_active := Fnd_Api.g_miss_date;
909: x_approvers_rec.object_version_number := Fnd_Api.g_miss_num;
910: --x_approvers_rec.security_group_id := Fnd_Api.g_miss_num;
911: x_approvers_rec.ams_approval_detail_id := Fnd_Api.g_miss_num;
912: x_approvers_rec.approver_seq := Fnd_Api.g_miss_num;
913: x_approvers_rec.approver_type := Fnd_Api.g_miss_char;
914: x_approvers_rec.object_approver_id := Fnd_Api.g_miss_num;
907: x_approvers_rec.start_date_active := Fnd_Api.g_miss_date;
908: x_approvers_rec.end_date_active := Fnd_Api.g_miss_date;
909: x_approvers_rec.object_version_number := Fnd_Api.g_miss_num;
910: --x_approvers_rec.security_group_id := Fnd_Api.g_miss_num;
911: x_approvers_rec.ams_approval_detail_id := Fnd_Api.g_miss_num;
912: x_approvers_rec.approver_seq := Fnd_Api.g_miss_num;
913: x_approvers_rec.approver_type := Fnd_Api.g_miss_char;
914: x_approvers_rec.object_approver_id := Fnd_Api.g_miss_num;
915: x_approvers_rec.notification_type := Fnd_Api.g_miss_char;
908: x_approvers_rec.end_date_active := Fnd_Api.g_miss_date;
909: x_approvers_rec.object_version_number := Fnd_Api.g_miss_num;
910: --x_approvers_rec.security_group_id := Fnd_Api.g_miss_num;
911: x_approvers_rec.ams_approval_detail_id := Fnd_Api.g_miss_num;
912: x_approvers_rec.approver_seq := Fnd_Api.g_miss_num;
913: x_approvers_rec.approver_type := Fnd_Api.g_miss_char;
914: x_approvers_rec.object_approver_id := Fnd_Api.g_miss_num;
915: x_approvers_rec.notification_type := Fnd_Api.g_miss_char;
916: x_approvers_rec.notification_timeout := Fnd_Api.g_miss_num;
909: x_approvers_rec.object_version_number := Fnd_Api.g_miss_num;
910: --x_approvers_rec.security_group_id := Fnd_Api.g_miss_num;
911: x_approvers_rec.ams_approval_detail_id := Fnd_Api.g_miss_num;
912: x_approvers_rec.approver_seq := Fnd_Api.g_miss_num;
913: x_approvers_rec.approver_type := Fnd_Api.g_miss_char;
914: x_approvers_rec.object_approver_id := Fnd_Api.g_miss_num;
915: x_approvers_rec.notification_type := Fnd_Api.g_miss_char;
916: x_approvers_rec.notification_timeout := Fnd_Api.g_miss_num;
917: x_approvers_rec.seeded_flag := Fnd_Api.g_miss_char;
910: --x_approvers_rec.security_group_id := Fnd_Api.g_miss_num;
911: x_approvers_rec.ams_approval_detail_id := Fnd_Api.g_miss_num;
912: x_approvers_rec.approver_seq := Fnd_Api.g_miss_num;
913: x_approvers_rec.approver_type := Fnd_Api.g_miss_char;
914: x_approvers_rec.object_approver_id := Fnd_Api.g_miss_num;
915: x_approvers_rec.notification_type := Fnd_Api.g_miss_char;
916: x_approvers_rec.notification_timeout := Fnd_Api.g_miss_num;
917: x_approvers_rec.seeded_flag := Fnd_Api.g_miss_char;
918: END;
911: x_approvers_rec.ams_approval_detail_id := Fnd_Api.g_miss_num;
912: x_approvers_rec.approver_seq := Fnd_Api.g_miss_num;
913: x_approvers_rec.approver_type := Fnd_Api.g_miss_char;
914: x_approvers_rec.object_approver_id := Fnd_Api.g_miss_num;
915: x_approvers_rec.notification_type := Fnd_Api.g_miss_char;
916: x_approvers_rec.notification_timeout := Fnd_Api.g_miss_num;
917: x_approvers_rec.seeded_flag := Fnd_Api.g_miss_char;
918: END;
919:
912: x_approvers_rec.approver_seq := Fnd_Api.g_miss_num;
913: x_approvers_rec.approver_type := Fnd_Api.g_miss_char;
914: x_approvers_rec.object_approver_id := Fnd_Api.g_miss_num;
915: x_approvers_rec.notification_type := Fnd_Api.g_miss_char;
916: x_approvers_rec.notification_timeout := Fnd_Api.g_miss_num;
917: x_approvers_rec.seeded_flag := Fnd_Api.g_miss_char;
918: END;
919:
920: ---------------------------------------------------------------------
913: x_approvers_rec.approver_type := Fnd_Api.g_miss_char;
914: x_approvers_rec.object_approver_id := Fnd_Api.g_miss_num;
915: x_approvers_rec.notification_type := Fnd_Api.g_miss_char;
916: x_approvers_rec.notification_timeout := Fnd_Api.g_miss_num;
917: x_approvers_rec.seeded_flag := Fnd_Api.g_miss_char;
918: END;
919:
920: ---------------------------------------------------------------------
921: -- PROCEDURE
922: -- Complete_approvers_Rec
923: --
924: -- PURPOSE
925: -- For Update_approvers, some attributes may be passed in as
926: -- FND_API.g_miss_char/num/date if the user doesn't want to
927: -- update those attributes. This procedure will replace the
928: -- "g_miss" attributes with current database values.
929: -- change g_miss to null VM 12-29-2002
930: -- PARAMETERS
956: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
957: Fnd_Message.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
958: Fnd_Msg_Pub.ADD;
959: END IF;
960: RAISE Fnd_Api.g_exc_error;
961: END IF;
962: CLOSE c_approvers;
963: --
964: IF p_approvers_rec.approver_id is null THEN
1099: l_count := 0;
1100: END;
1101: END IF;
1102: IF l_count = 0 THEN
1103: RETURN Fnd_Api.g_false;
1104: ELSE
1105: RETURN Fnd_Api.g_true;
1106: END IF;
1107: END compare_columns;
1101: END IF;
1102: IF l_count = 0 THEN
1103: RETURN Fnd_Api.g_false;
1104: ELSE
1105: RETURN Fnd_Api.g_true;
1106: END IF;
1107: END compare_columns;
1108:
1109: ---------------------------------------------------------
1129: l_count := 0;
1130: END;
1131:
1132: IF l_count = 0 THEN
1133: RETURN Fnd_Api.g_true; -- needs update
1134: ELSE
1135: RETURN Fnd_Api.g_false; -- doesnt need update
1136: END IF;
1137: END seed_needs_update;
1131:
1132: IF l_count = 0 THEN
1133: RETURN Fnd_Api.g_true; -- needs update
1134: ELSE
1135: RETURN Fnd_Api.g_false; -- doesnt need update
1136: END IF;
1137: END seed_needs_update;
1138:
1139: -------------------------------------------------------------
1150: FROM AMS_APPROVAL_DETAILS
1151: WHERE APPROVAL_DETAIL_ID = id_in;
1152:
1153: BEGIN
1154: x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1155: IF p_approvers_rec.ams_approval_detail_id = NULL
1156: OR p_approvers_rec.ams_approval_detail_id = Fnd_Api.g_miss_num
1157: THEN
1158: IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error) THEN
1152:
1153: BEGIN
1154: x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1155: IF p_approvers_rec.ams_approval_detail_id = NULL
1156: OR p_approvers_rec.ams_approval_detail_id = Fnd_Api.g_miss_num
1157: THEN
1158: IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error) THEN
1159: Fnd_Message.set_name ('AMS', 'AMS_NO_APPROVAL_DETAIL_ID');
1160: Fnd_Msg_Pub.ADD;
1158: IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error) THEN
1159: Fnd_Message.set_name ('AMS', 'AMS_NO_APPROVAL_DETAIL_ID');
1160: Fnd_Msg_Pub.ADD;
1161: END IF;
1162: x_return_status := Fnd_Api.g_ret_sts_error;
1163: RETURN;
1164: END IF;
1165: --check for valid date range murali
1166: OPEN get_parent_date(p_approvers_rec.ams_approval_detail_id);
1166: OPEN get_parent_date(p_approvers_rec.ams_approval_detail_id);
1167: FETCH get_parent_date INTO l_start_date, l_end_date;
1168: CLOSE get_parent_date;
1169: IF (p_approvers_rec.START_DATE_ACTIVE IS NOT NULL
1170: AND p_approvers_rec.START_DATE_ACTIVE <> Fnd_Api.g_miss_date)
1171: THEN
1172: IF p_approvers_rec.START_DATE_ACTIVE < l_start_date THEN
1173: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
1174: Fnd_Message.set_name('AMS', 'AMS_APPR_SD_LT_APD_SD');
1173: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
1174: Fnd_Message.set_name('AMS', 'AMS_APPR_SD_LT_APD_SD');
1175: Fnd_Msg_Pub.ADD;
1176: END IF;
1177: x_return_status := Fnd_Api.g_ret_sts_error;
1178: RETURN;
1179: END IF;
1180: IF p_approvers_rec.START_DATE_ACTIVE > l_end_date THEN
1181: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
1181: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
1182: Fnd_Message.set_name('AMS', 'AMS_APPR_SD_LT_APD_ED');
1183: Fnd_Msg_Pub.ADD;
1184: END IF;
1185: x_return_status := Fnd_Api.g_ret_sts_error;
1186: RETURN;
1187: END IF;
1188: END IF;
1189: IF (p_approvers_rec.END_DATE_ACTIVE IS NOT NULL
1186: RETURN;
1187: END IF;
1188: END IF;
1189: IF (p_approvers_rec.END_DATE_ACTIVE IS NOT NULL
1190: OR p_approvers_rec.END_DATE_ACTIVE <> Fnd_Api.g_miss_date)
1191: THEN
1192: IF p_approvers_rec.END_DATE_ACTIVE < l_start_date THEN
1193: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
1194: Fnd_Message.set_name('AMS', 'AMS_APPR_ED_LT_APD_SD');
1193: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
1194: Fnd_Message.set_name('AMS', 'AMS_APPR_ED_LT_APD_SD');
1195: Fnd_Msg_Pub.ADD;
1196: END IF;
1197: x_return_status := Fnd_Api.g_ret_sts_error;
1198: RETURN;
1199: END IF;
1200: IF p_approvers_rec.END_DATE_ACTIVE > l_end_date THEN
1201: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
1201: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
1202: Fnd_Message.set_name('AMS', 'AMS_APPR_ED_LT_APD_ED');
1203: Fnd_Msg_Pub.ADD;
1204: END IF;
1205: x_return_status := Fnd_Api.g_ret_sts_error;
1206: RETURN;
1207: END IF;
1208: END IF;
1209: END;
1223: AND ams_approval_detail_id = id_in
1224: AND active_flag = 'Y'
1225: );
1226: BEGIN
1227: x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1228: IF p_validation_mode = Jtf_Plsql_Api.g_create
1229: THEN
1230: OPEN c_appr_seq_exists (p_approvers_rec.approver_seq,
1231: p_approvers_rec.ams_approval_detail_id
1235: IF l_dummy = 1 THEN
1236: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1237: Fnd_Message.set_name('AMS', 'AMS_APPR_DUP_SEQ');
1238: Fnd_Msg_Pub.ADD;
1239: x_return_status := Fnd_Api.g_ret_sts_error;
1240: RETURN;
1241: END IF;
1242: END IF;
1243: END IF;
1248: p_approvers_rec => p_approvers_rec,
1249: x_return_status => x_return_status
1250: );
1251:
1252: IF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1253: RAISE Fnd_Api.g_exc_unexpected_error;
1254: ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
1255: RAISE Fnd_Api.g_exc_error;
1256: END IF;
1249: x_return_status => x_return_status
1250: );
1251:
1252: IF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1253: RAISE Fnd_Api.g_exc_unexpected_error;
1254: ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
1255: RAISE Fnd_Api.g_exc_error;
1256: END IF;
1257: ELSIF (p_validation_mode = Jtf_Plsql_Api.g_update
1250: );
1251:
1252: IF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1253: RAISE Fnd_Api.g_exc_unexpected_error;
1254: ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
1255: RAISE Fnd_Api.g_exc_error;
1256: END IF;
1257: ELSIF (p_validation_mode = Jtf_Plsql_Api.g_update
1258: AND (p_approvers_rec.active_flag = 'Y' OR
1251:
1252: IF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1253: RAISE Fnd_Api.g_exc_unexpected_error;
1254: ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
1255: RAISE Fnd_Api.g_exc_error;
1256: END IF;
1257: ELSIF (p_validation_mode = Jtf_Plsql_Api.g_update
1258: AND (p_approvers_rec.active_flag = 'Y' OR
1259: p_approvers_rec.active_flag = NULL OR p_approvers_rec.active_flag = Fnd_Api.g_miss_char)) THEN
1255: RAISE Fnd_Api.g_exc_error;
1256: END IF;
1257: ELSIF (p_validation_mode = Jtf_Plsql_Api.g_update
1258: AND (p_approvers_rec.active_flag = 'Y' OR
1259: p_approvers_rec.active_flag = NULL OR p_approvers_rec.active_flag = Fnd_Api.g_miss_char)) THEN
1260: Check_Dates_Update_Range (
1261: p_approvers_rec => p_approvers_rec,
1262: x_return_status => x_return_status
1263: );
1261: p_approvers_rec => p_approvers_rec,
1262: x_return_status => x_return_status
1263: );
1264:
1265: IF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1266: RAISE Fnd_Api.g_exc_unexpected_error;
1267: ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
1268: RAISE Fnd_Api.g_exc_error;
1269: END IF;
1262: x_return_status => x_return_status
1263: );
1264:
1265: IF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1266: RAISE Fnd_Api.g_exc_unexpected_error;
1267: ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
1268: RAISE Fnd_Api.g_exc_error;
1269: END IF;
1270: END IF;
1263: );
1264:
1265: IF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1266: RAISE Fnd_Api.g_exc_unexpected_error;
1267: ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
1268: RAISE Fnd_Api.g_exc_error;
1269: END IF;
1270: END IF;
1271:
1264:
1265: IF x_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1266: RAISE Fnd_Api.g_exc_unexpected_error;
1267: ELSIF x_return_status = Fnd_Api.g_ret_sts_error THEN
1268: RAISE Fnd_Api.g_exc_error;
1269: END IF;
1270: END IF;
1271:
1272: END Check_Approvers_UK_Items;
1317: AND TRUNC(SYSDATE) BETWEEN TRUNC(res_rl_start_date)
1318: AND TRUNC(NVL(res_rl_end_date,SYSDATE));
1319: */
1320: BEGIN
1321: x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1322:
1323: IF (AMS_DEBUG_HIGH_ON) THEN
1324:
1325:
1344: IF l_dummy <> 1 THEN
1345: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1346: Fnd_Message.set_name('AMS', 'AMS_APPR_NO_RESORS');
1347: Fnd_Msg_Pub.ADD;
1348: x_return_status := Fnd_Api.g_ret_sts_error;
1349: RETURN;
1350: END IF;
1351: END IF;
1352: ELSIF p_approvers_rec.approver_type = 'ROLE' THEN
1366: IF l_dummy <> 1 THEN
1367: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1368: Fnd_Message.set_name('AMS', 'AMS_APPR_NO_RESORS');
1369: Fnd_Msg_Pub.ADD;
1370: x_return_status := Fnd_Api.g_ret_sts_error;
1371: RETURN;
1372: END IF;
1373: END IF;
1374:
1379: IF l_dummy > 1 THEN
1380: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1381: Fnd_Message.set_name('AMS', 'AMS_MANY_DEFAULT_ROLE');
1382: Fnd_Msg_Pub.ADD;
1383: x_return_status := Fnd_Api.g_ret_sts_error;
1384: RETURN;
1385: END IF;
1386: END IF;
1387:
1399: )IS
1400: -- Changed from varchar2(30) for bug 2544992
1401: l_meaning VARCHAR2(80);
1402: BEGIN
1403: x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1404: IF p_approvers_rec.approver_type <> Fnd_Api.g_miss_char THEN
1405: Ams_Utility_Pvt.get_lookup_meaning( 'AMS_APPROVER_TYPE',
1406: p_approvers_rec.approver_type,
1407: x_return_status,
1400: -- Changed from varchar2(30) for bug 2544992
1401: l_meaning VARCHAR2(80);
1402: BEGIN
1403: x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1404: IF p_approvers_rec.approver_type <> Fnd_Api.g_miss_char THEN
1405: Ams_Utility_Pvt.get_lookup_meaning( 'AMS_APPROVER_TYPE',
1406: p_approvers_rec.approver_type,
1407: x_return_status,
1408: l_meaning
1406: p_approvers_rec.approver_type,
1407: x_return_status,
1408: l_meaning
1409: );
1410: IF x_return_status <> Fnd_Api.G_RET_STS_SUCCESS THEN
1411: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1412: Fnd_Message.set_name('AMS', 'AMS_APPR_NO_APPR_TYPE');
1413: Fnd_Msg_Pub.ADD;
1414: x_return_status := Fnd_Api.g_ret_sts_error;
1410: IF x_return_status <> Fnd_Api.G_RET_STS_SUCCESS THEN
1411: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1412: Fnd_Message.set_name('AMS', 'AMS_APPR_NO_APPR_TYPE');
1413: Fnd_Msg_Pub.ADD;
1414: x_return_status := Fnd_Api.g_ret_sts_error;
1415: RETURN;
1416: END IF;
1417: END IF;
1418: END IF;
1425: p_approvers_rec IN Approvers_Rec_Type,
1426: x_return_status OUT NOCOPY VARCHAR2
1427: )IS
1428: BEGIN
1429: x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1430: END Check_Approvers_Flag_Items;
1431: --------------------------------------------------------------------
1432:
1433:
1455: CLOSE c_approval_rule;
1456:
1457:
1458: IF (p_start_date IS NULL AND p_end_date IS NOT NULL) THEN
1459: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1460: IF (AMS_DEBUG_HIGH_ON) THEN
1461:
1462: Ams_Utility_Pvt.debug_message('Approver end date cannot be specified without start date');
1463: END IF;
1464:
1465: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1466: Fnd_Message.set_name('AMS', 'AMS_APPR_NO_START_DATE');
1467: Fnd_Msg_Pub.ADD;
1468: x_return_status := Fnd_Api.g_ret_sts_error;
1469: END IF;
1470:
1471: RETURN;
1472: END IF;
1472: END IF;
1473:
1474: IF (p_start_date IS NOT NULL) THEN
1475: IF(p_start_date < trunc(SYSDATE)) THEN
1476: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1477: IF (AMS_DEBUG_HIGH_ON) THEN
1478:
1479: Ams_Utility_Pvt.debug_message('Approver start date cannot be less than the system date');
1480: END IF;
1481:
1482: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1483: Fnd_Message.set_name('AMS', 'AMS_APPR_START_DATE_LT_SYSDATE');
1484: Fnd_Msg_Pub.ADD;
1485: x_return_status := Fnd_Api.g_ret_sts_error;
1486: END IF;
1487:
1488: RETURN;
1489: ELSIF ( p_start_date < l_start_date ) THEN
1486: END IF;
1487:
1488: RETURN;
1489: ELSIF ( p_start_date < l_start_date ) THEN
1490: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1491: IF (AMS_DEBUG_HIGH_ON) THEN
1492:
1493: Ams_Utility_Pvt.debug_message('Approver Start Date cannot be less than the Approval Rule Start Date');
1494: END IF;
1495:
1496: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1497: Fnd_Message.set_name('AMS', 'AMS_APPR_STDT_GT_APRD_STDT');
1498: Fnd_Msg_Pub.ADD;
1499: x_return_status := Fnd_Api.g_ret_sts_error;
1500: END IF;
1501:
1502: RETURN;
1503: END IF;
1504: END IF;
1505:
1506: IF (p_end_date IS NOT NULL ) THEN
1507: IF( p_end_date < trunc(SYSDATE)) THEN
1508: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1509: IF (AMS_DEBUG_HIGH_ON) THEN
1510:
1511: Ams_Utility_Pvt.debug_message('Approver end date cannot be less than the system date');
1512: END IF;
1513:
1514: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1515: Fnd_Message.set_name('AMS', 'AMS_APPR_END_DATE_LT_SYSDATE');
1516: Fnd_Msg_Pub.ADD;
1517: x_return_status := Fnd_Api.g_ret_sts_error;
1518: END IF;
1519:
1520: RETURN;
1521: ELSIF (p_end_date > l_end_date) THEN
1518: END IF;
1519:
1520: RETURN;
1521: ELSIF (p_end_date > l_end_date) THEN
1522: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1523: IF (AMS_DEBUG_HIGH_ON) THEN
1524:
1525: Ams_Utility_Pvt.debug_message('Approver end date cannot be greater than the Approval Rule end date');
1526: END IF;
1527:
1528: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1529: Fnd_Message.set_name('AMS', 'AMS_APPR_EDDT_GT_APRD_EDDT');
1530: Fnd_Msg_Pub.ADD;
1531: x_return_status := Fnd_Api.g_ret_sts_error;
1532: END IF;
1533:
1534: RETURN;
1535: END IF;
1574: CLOSE c_approver;
1575:
1576: -- Check whether Approver has a End Date without a Start Date
1577: IF (p_start_date IS NULL AND p_end_date IS NOT NULL) THEN
1578: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1579: IF (AMS_DEBUG_HIGH_ON) THEN
1580:
1581: Ams_Utility_Pvt.debug_message('Approver End Date cannot be specified without Start Date');
1582: END IF;
1583:
1584: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1585: Fnd_Message.set_name('AMS', 'AMS_APPR_NO_START_DATE');
1586: Fnd_Msg_Pub.ADD;
1587: x_return_status := Fnd_Api.g_ret_sts_error;
1588: END IF;
1589:
1590: RETURN;
1591: END IF;
1593: -- Check whether the approver start date has been changed and if it is less than current date
1594: IF (p_start_date IS NOT NULL) THEN
1595: IF(l_start_date_ar < trunc(SYSDATE) AND
1596: l_start_date_ar <> p_start_date) THEN -- Clause added for Bug 2285556
1597: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1598: IF (AMS_DEBUG_HIGH_ON) THEN
1599:
1600: Ams_Utility_Pvt.debug_message('Approver start date cannot be changed as it is already active');
1601: END IF;
1602:
1603: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1604: Fnd_Message.set_name('AMS', 'AMS_APPR_STDT_NO_CHANGE');
1605: Fnd_Msg_Pub.ADD;
1606: x_return_status := Fnd_Api.g_ret_sts_error;
1607: END IF;
1608:
1609: RETURN;
1610:
1609: RETURN;
1610:
1611: -- Check whether approver start date is less than approval rule start date
1612: ELSIF ( p_start_date < l_start_date ) THEN
1613: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1614: IF (AMS_DEBUG_HIGH_ON) THEN
1615:
1616: Ams_Utility_Pvt.debug_message('Approver start date cannot be less than the Approval Rule start date');
1617: END IF;
1618:
1619: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1620: Fnd_Message.set_name('AMS', 'AMS_APPR_STDT_LT_APRD_STDT');
1621: Fnd_Msg_Pub.ADD;
1622: x_return_status := Fnd_Api.g_ret_sts_error;
1623: END IF;
1624:
1625: RETURN;
1626: END IF;
1629: -- Check whether the approver end date has been changed and if it is less than current date
1630: IF (p_end_date IS NOT NULL ) THEN
1631: IF( p_end_date < trunc(SYSDATE) AND
1632: p_end_date <> l_end_date_ar) THEN -- Clause Added for Bug 2285556
1633: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1634: IF (AMS_DEBUG_HIGH_ON) THEN
1635:
1636: Ams_Utility_Pvt.debug_message('Approver end date cannot be less than the system date');
1637: END IF;
1638:
1639: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1640: Fnd_Message.set_name('AMS', 'AMS_APPR_END_DATE_LT_SYSDATE');
1641: Fnd_Msg_Pub.ADD;
1642: x_return_status := Fnd_Api.g_ret_sts_error;
1643: END IF;
1644:
1645: RETURN;
1646:
1645: RETURN;
1646:
1647: -- Check whether approver end date is greater than approval rule end date
1648: ELSIF (p_end_date > l_end_date) THEN
1649: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1650: IF (AMS_DEBUG_HIGH_ON) THEN
1651:
1652: Ams_Utility_Pvt.debug_message('Approver end date cannot be greater than the Approval Rule end date');
1653: END IF;
1654:
1655: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1656: Fnd_Message.set_name('AMS', 'AMS_APPR_EDDT_GT_APRD_EDDT');
1657: Fnd_Msg_Pub.ADD;
1658: x_return_status := Fnd_Api.g_ret_sts_error;
1659: END IF;
1660:
1661: RETURN;
1662: END IF;
1662: END IF;
1663: /* Commented OUT NOCOPY the hanging elsif during fix for 2285556
1664: -- Approval Rule End date overrides the approver end date and hence this is not required
1665: ELSIF(l_end_date IS NOT NULL) THEN
1666: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1667: IF (AMS_DEBUG_HIGH_ON) THEN
1668:
1669: Ams_Utility_Pvt.debug_message('Approver end date cannot be open as the end date for Approval Rule is Closed');
1670: END IF;
1671:
1672: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1673: Fnd_Message.set_name('AMS', 'AMS_APPR_EDDT_OPEN');
1674: Fnd_Msg_Pub.ADD;
1675: x_return_status := Fnd_Api.g_ret_sts_error;
1676: END IF;
1677:
1678: RETURN;
1679: */
1703: FROM ams_object_rules_vl
1704: WHERE object_rule_id = p_approvers_rec.object_approver_id;
1705:
1706: BEGIN
1707: x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1708:
1709: OPEN c_approval_rule;
1710: FETCH c_approval_rule INTO l_approval_object, l_approval_type;
1711: CLOSE c_approval_rule;
1720: IF l_approval_object NOT IN ('CAMP','EVEH','EVEO','CSCH','DELV','EONE')
1721: AND l_package_name = 'AMS_APPROVAL_UTIL_PVT'
1722: AND l_proc_name = 'GET_OBJECT_OWNER' THEN
1723:
1724: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1725: IF (AMS_DEBUG_HIGH_ON) THEN
1726: Ams_Utility_Pvt.debug_message('Invalid Use of Function for this objects Approval');
1727: END IF;
1728:
1728:
1729: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1730: Fnd_Message.set_name('AMS', 'AMS_APPR_FUNC_INVALID');
1731: Fnd_Msg_Pub.ADD;
1732: x_return_status := Fnd_Api.g_ret_sts_error;
1733: END IF;
1734:
1735: RETURN;
1736: END IF;
1738: IF l_approval_object NOT IN ('CSCH', 'EVEO', 'OFFR')
1739: AND l_package_name = 'AMS_APPROVAL_UTIL_PVT'
1740: AND l_proc_name = 'GET_PARENT_OBJECT_OWNER' THEN
1741:
1742: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1743: IF (AMS_DEBUG_HIGH_ON) THEN
1744: Ams_Utility_Pvt.debug_message('Invalid Use of Function for this objects Approval');
1745: END IF;
1746:
1746:
1747: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1748: Fnd_Message.set_name('AMS', 'AMS_APPR_FUNC_INVALID');
1749: Fnd_Msg_Pub.ADD;
1750: x_return_status := Fnd_Api.g_ret_sts_error;
1751: END IF;
1752:
1753: RETURN;
1754: END IF;
1759:
1760: IF NVL(Fnd_Profile.Value(name => 'AMS_SOURCE_FROM_PARENT'), 'N') = 'N' THEN
1761: Fnd_Message.Set_Name('AMS','AMS_APPR_FUNC_INVALID');
1762: Fnd_Msg_Pub.ADD;
1763: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1764: IF (AMS_DEBUG_HIGH_ON) THEN
1765: Ams_Utility_Pvt.debug_message('Invalid Use of Function for this objects Approval as SFP is NO');
1766: END IF;
1767: RETURN;
1772: IF l_approval_object NOT IN ('FUND', 'FREQ')
1773: AND l_package_name = 'AMS_APPROVAL_UTIL_PVT'
1774: AND l_proc_name = 'GET_BUDGET_OWNER' THEN
1775:
1776: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1777: IF (AMS_DEBUG_HIGH_ON) THEN
1778: Ams_Utility_Pvt.debug_message('Invalid Use of Function for this objects Approval');
1779: END IF;
1780:
1780:
1781: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1782: Fnd_Message.set_name('AMS', 'AMS_APPR_FUNC_INVALID');
1783: Fnd_Msg_Pub.ADD;
1784: x_return_status := Fnd_Api.g_ret_sts_error;
1785: END IF;
1786:
1787: RETURN;
1788: END IF;
1790: IF l_approval_object NOT IN ('FREQ') -- RFRQ not right Bug 3979814
1791: AND l_package_name = 'AMS_APPROVAL_UTIL_PVT'
1792: AND l_proc_name = 'GET_PARENT_BUDGET_OWNER' THEN
1793:
1794: x_return_status := Fnd_Api.G_RET_STS_ERROR;
1795: IF (AMS_DEBUG_HIGH_ON) THEN
1796: Ams_Utility_Pvt.debug_message('Invalid Use of Function for this objects Approval');
1797: END IF;
1798:
1798:
1799: IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR) THEN
1800: Fnd_Message.set_name('AMS', 'AMS_APPR_FUNC_INVALID');
1801: Fnd_Msg_Pub.ADD;
1802: x_return_status := Fnd_Api.g_ret_sts_error;
1803: END IF;
1804:
1805: RETURN;
1806: END IF;