85: select
86: vwp.visit_id event_id,
87: G_EVENT_TYPE_VISIT event_type,
88: vwp.start_date_time event_start_time,
89: AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(vwp.VISIT_ID , FND_API.G_FALSE) event_end_time
90: from ahl_visits_b vwp, ahl_unit_config_headers uc
91: where uc.unit_config_header_id = p_unit_config_id
92: and vwp.item_instance_id = uc.csi_item_instance_id
93: --priyan Bug # 5303188
102: vwp.start_date_time < p_end_time
103: )
104: or
105: (
106: p_start_time < nvl(AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(vwp.VISIT_ID , FND_API.G_FALSE), vwp.start_date_time + 1/1440 ) and
107: nvl(AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(vwp.VISIT_ID , FND_API.G_FALSE), vwp.start_date_time + 1/1440 ) <= p_end_time
108: )
109: or
110: (
103: )
104: or
105: (
106: p_start_time < nvl(AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(vwp.VISIT_ID , FND_API.G_FALSE), vwp.start_date_time + 1/1440 ) and
107: nvl(AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(vwp.VISIT_ID , FND_API.G_FALSE), vwp.start_date_time + 1/1440 ) <= p_end_time
108: )
109: or
110: (
111: vwp.start_date_time <= p_start_time and
108: )
109: or
110: (
111: vwp.start_date_time <= p_start_time and
112: p_end_time <= nvl(AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(vwp.VISIT_ID , FND_API.G_FALSE), vwp.start_date_time + 1/1440 )
113: )
114: )
115: ) events
116: order by event_start_time asc, NVL(event_end_time, event_start_time + 1/1440) asc, event_type desc;
158: select
159: vwp.visit_id event_id,
160: G_EVENT_TYPE_VISIT event_type,
161: vwp.start_date_time event_start_time,
162: AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(vwp.VISIT_ID , FND_API.G_FALSE) event_end_time
163: from ahl_visits_b vwp, ahl_unit_config_headers uc
164: where uc.unit_config_header_id = p_unit_config_id
165: and vwp.item_instance_id = uc.csi_item_instance_id
166: --priyan Bug # 5303188
175: vwp.start_date_time < p_end_time
176: )
177: or
178: (
179: p_start_time < nvl(AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(vwp.VISIT_ID , FND_API.G_FALSE), vwp.start_date_time + 1/1440 ) and
180: nvl(AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(vwp.VISIT_ID , FND_API.G_FALSE), vwp.start_date_time + 1/1440 ) <= p_end_time
181: )
182: or
183: (
176: )
177: or
178: (
179: p_start_time < nvl(AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(vwp.VISIT_ID , FND_API.G_FALSE), vwp.start_date_time + 1/1440 ) and
180: nvl(AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(vwp.VISIT_ID , FND_API.G_FALSE), vwp.start_date_time + 1/1440 ) <= p_end_time
181: )
182: or
183: (
184: vwp.start_date_time <= p_start_time and
181: )
182: or
183: (
184: vwp.start_date_time <= p_start_time and
185: p_end_time <= nvl(AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(vwp.VISIT_ID , FND_API.G_FALSE), vwp.start_date_time + 1/1440 )
186: )
187: )
188: )
189: order by event_start_time asc, NVL(event_end_time, event_start_time + 1/1440) asc, event_type desc;
189: order by event_start_time asc, NVL(event_end_time, event_start_time + 1/1440) asc, event_type desc;
190:
191: BEGIN
192: -- Standard call to check for call compatibility
193: IF NOT FND_API.compatible_api_call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
194: THEN
195: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
196: END IF;
197:
191: BEGIN
192: -- Standard call to check for call compatibility
193: IF NOT FND_API.compatible_api_call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
194: THEN
195: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
196: END IF;
197:
198: -- Initialize API return status to success
199: x_return_status := FND_API.G_RET_STS_SUCCESS;
195: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
196: END IF;
197:
198: -- Initialize API return status to success
199: x_return_status := FND_API.G_RET_STS_SUCCESS;
200:
201: -- Log API entry point
202: IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)
203: THEN
211:
212: -- API body starts here
213: -- 5. If (p_unit_config_id is null or p_start_date_time is null or p_end_date_time is null), then display error "Unit Configuration Id and Start Time are mandatory parameters"
214: IF (
215: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
216: p_start_date_time IS NULL OR p_start_date_time = FND_API.G_MISS_DATE OR
217: p_end_date_time IS NULL OR p_end_date_time = FND_API.G_MISS_DATE
218: )
219: THEN
212: -- API body starts here
213: -- 5. If (p_unit_config_id is null or p_start_date_time is null or p_end_date_time is null), then display error "Unit Configuration Id and Start Time are mandatory parameters"
214: IF (
215: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
216: p_start_date_time IS NULL OR p_start_date_time = FND_API.G_MISS_DATE OR
217: p_end_date_time IS NULL OR p_end_date_time = FND_API.G_MISS_DATE
218: )
219: THEN
220: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
213: -- 5. If (p_unit_config_id is null or p_start_date_time is null or p_end_date_time is null), then display error "Unit Configuration Id and Start Time are mandatory parameters"
214: IF (
215: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
216: p_start_date_time IS NULL OR p_start_date_time = FND_API.G_MISS_DATE OR
217: p_end_date_time IS NULL OR p_end_date_time = FND_API.G_MISS_DATE
218: )
219: THEN
220: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
221: FND_MESSAGE.SET_TOKEN('PROCEDURE', l_api_name);
219: THEN
220: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
221: FND_MESSAGE.SET_TOKEN('PROCEDURE', l_api_name);
222: FND_MSG_PUB.ADD;
223: RAISE FND_API.G_EXC_ERROR;
224: END IF;
225:
226: /*
227: -- 6. Validate unit configuration with unit_config_id = p_unit_config_id exists and is complete and active, using cursor check_unit_exists. If no record found, throw error "Unit Configuration does not exist or is not complete"
231: THEN
232: FND_MESSAGE.SET_NAME('AHL', 'AHL_UA_UNIT_ID_NOT_FOUND');
233: FND_MSG_PUB.ADD;
234: CLOSE check_unit_exists;
235: RAISE FND_API.G_EXC_ERROR;
236: END IF;
237: CLOSE check_unit_exists;
238: */
239:
247: );
248: END IF;
249:
250: -- 7. If (p_use_actuals = 'T'), open cursor get_prec_flight_act else open cursor get_prec_flight_est
251: IF (p_use_actuals IS NOT NULL AND p_use_actuals = FND_API.G_TRUE)
252: THEN
253: OPEN get_event_details_act (p_unit_config_id, p_start_date_time, p_end_date_time);
254: LOOP
255: FETCH get_event_details_act INTO l_event_id, l_event_type, l_event_start_time, l_event_end_time;
324: -- Check Error Message stack.
325: x_msg_count := FND_MSG_PUB.count_msg;
326: IF x_msg_count > 0
327: THEN
328: RAISE FND_API.G_EXC_ERROR;
329: END IF;
330:
331: -- Standard call to get message count and if count is 1, get message info
332: FND_MSG_PUB.count_and_get
332: FND_MSG_PUB.count_and_get
333: (
334: p_count => x_msg_count,
335: p_data => x_msg_data,
336: p_encoded => FND_API.G_FALSE
337: );
338:
339: EXCEPTION
340: WHEN FND_API.G_EXC_ERROR THEN
336: p_encoded => FND_API.G_FALSE
337: );
338:
339: EXCEPTION
340: WHEN FND_API.G_EXC_ERROR THEN
341: x_return_status := FND_API.G_RET_STS_ERROR;
342: FND_MSG_PUB.count_and_get
343: (
344: p_count => x_msg_count,
337: );
338:
339: EXCEPTION
340: WHEN FND_API.G_EXC_ERROR THEN
341: x_return_status := FND_API.G_RET_STS_ERROR;
342: FND_MSG_PUB.count_and_get
343: (
344: p_count => x_msg_count,
345: p_data => x_msg_data,
342: FND_MSG_PUB.count_and_get
343: (
344: p_count => x_msg_count,
345: p_data => x_msg_data,
346: p_encoded => FND_API.G_FALSE
347: );
348:
349: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
350: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
345: p_data => x_msg_data,
346: p_encoded => FND_API.G_FALSE
347: );
348:
349: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
350: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
351: FND_MSG_PUB.count_and_get
352: (
353: p_count => x_msg_count,
346: p_encoded => FND_API.G_FALSE
347: );
348:
349: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
350: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
351: FND_MSG_PUB.count_and_get
352: (
353: p_count => x_msg_count,
354: p_data => x_msg_data,
351: FND_MSG_PUB.count_and_get
352: (
353: p_count => x_msg_count,
354: p_data => x_msg_data,
355: p_encoded => FND_API.G_FALSE
356: );
357:
358: WHEN OTHERS THEN
359: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
355: p_encoded => FND_API.G_FALSE
356: );
357:
358: WHEN OTHERS THEN
359: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
360: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
361: THEN
362: FND_MSG_PUB.add_exc_msg
363: (
369: FND_MSG_PUB.count_and_get
370: (
371: p_count => x_msg_count,
372: p_data => x_msg_data,
373: p_encoded => FND_API.G_FALSE
374: );
375: END Get_All_Events;
376:
377: -----------------------------------------
434: l_est_flight_rec get_prec_flight_est%rowtype;
435:
436: BEGIN
437: -- Standard call to check for call compatibility
438: IF NOT FND_API.compatible_api_call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
439: THEN
440: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
441: END IF;
442:
436: BEGIN
437: -- Standard call to check for call compatibility
438: IF NOT FND_API.compatible_api_call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
439: THEN
440: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
441: END IF;
442:
443: -- Initialize API return status to success
444: x_return_status := FND_API.G_RET_STS_SUCCESS;
440: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
441: END IF;
442:
443: -- Initialize API return status to success
444: x_return_status := FND_API.G_RET_STS_SUCCESS;
445:
446: -- Log API entry point
447: IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)
448: THEN
456:
457: -- API body starts here
458: -- 4. If (p_unit_config_id is null or p_start_date_time is null), then display error "Unit Configuration Id and Start Time are mandatory parameters"
459: IF (
460: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
461: p_start_date_time IS NULL OR p_start_date_time = FND_API.G_MISS_DATE
462: )
463: THEN
464: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
457: -- API body starts here
458: -- 4. If (p_unit_config_id is null or p_start_date_time is null), then display error "Unit Configuration Id and Start Time are mandatory parameters"
459: IF (
460: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
461: p_start_date_time IS NULL OR p_start_date_time = FND_API.G_MISS_DATE
462: )
463: THEN
464: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
465: FND_MESSAGE.SET_TOKEN('PROCEDURE', l_api_name);
463: THEN
464: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
465: FND_MESSAGE.SET_TOKEN('PROCEDURE', l_api_name);
466: FND_MSG_PUB.ADD;
467: RAISE FND_API.G_EXC_ERROR;
468: END IF;
469:
470: /*
471: -- 5. Validate unit configuration with unit_config_id = p_unit_config_id exists and is complete and active, using cursor check_unit_exists. If no record found, throw error "Unit Configuration does not exist or is not complete"
475: THEN
476: FND_MESSAGE.SET_NAME('AHL', 'AHL_UA_UNIT_ID_NOT_FOUND');
477: FND_MSG_PUB.ADD;
478: CLOSE check_unit_exists;
479: RAISE FND_API.G_EXC_ERROR;
480: END IF;
481: CLOSE check_unit_exists;
482: */
483:
490: 'Basic validations done'
491: );
492: END IF;
493:
494: x_is_conflict := FND_API.G_FALSE;
495:
496: -- 6. If (p_use_actuals = FND_API.G_TRUE), open cursor get_prec_flight_act else open cursor get_prec_flight_est
497: IF (p_use_actuals IS NOT NULL AND p_use_actuals = FND_API.G_TRUE)
498: THEN
492: END IF;
493:
494: x_is_conflict := FND_API.G_FALSE;
495:
496: -- 6. If (p_use_actuals = FND_API.G_TRUE), open cursor get_prec_flight_act else open cursor get_prec_flight_est
497: IF (p_use_actuals IS NOT NULL AND p_use_actuals = FND_API.G_TRUE)
498: THEN
499: -- 7. Fetch one record from cursor into and populate x_Flight_Schedule_Rec_Type with values from this record
500: OPEN get_prec_flight_act (p_unit_config_id, p_start_date_time);
493:
494: x_is_conflict := FND_API.G_FALSE;
495:
496: -- 6. If (p_use_actuals = FND_API.G_TRUE), open cursor get_prec_flight_act else open cursor get_prec_flight_est
497: IF (p_use_actuals IS NOT NULL AND p_use_actuals = FND_API.G_TRUE)
498: THEN
499: -- 7. Fetch one record from cursor into and populate x_Flight_Schedule_Rec_Type with values from this record
500: OPEN get_prec_flight_act (p_unit_config_id, p_start_date_time);
501: FETCH get_prec_flight_act INTO l_act_flight_rec;
547: x_prec_flight_schedule.attribute13 := l_act_flight_rec.attribute13;
548: x_prec_flight_schedule.attribute14 := l_act_flight_rec.attribute14;
549: x_prec_flight_schedule.attribute15 := l_act_flight_rec.attribute15;
550:
551: -- 8. Fetch another record from cursor, and if the record's arrival time (actual / estimated based on p_use_actuals) = previous record's arrival time, then populate x_is_conflict = FND_API.G_TRUE
552: FETCH get_prec_flight_act INTO l_act_flight_rec;
553: IF (
554: get_prec_flight_act%FOUND
555: AND
563: nvl(l_act_flight_rec.actual_arrival_time, l_act_flight_rec.est_arrival_time) =
564: nvl(x_prec_flight_schedule.actual_arrival_time, x_prec_flight_schedule.est_arrival_time)
565: )
566: THEN
567: x_is_conflict := FND_API.G_TRUE;
568: END IF;
569: END IF;
570: CLOSE get_prec_flight_act;
571: ELSE
620: x_prec_flight_schedule.attribute13 := l_est_flight_rec.attribute13;
621: x_prec_flight_schedule.attribute14 := l_est_flight_rec.attribute14;
622: x_prec_flight_schedule.attribute15 := l_est_flight_rec.attribute15;
623:
624: -- 8. Fetch another record from cursor, and if the record's arrival time (actual / estimated based on p_use_actuals) = previous record's arrival time, then populate x_is_conflict = FND_API.G_TRUE
625: FETCH get_prec_flight_est INTO l_est_flight_rec;
626: IF (
627: get_prec_flight_est%FOUND
628: AND
633: AND
634: l_est_flight_rec.est_arrival_time = x_prec_flight_schedule.est_arrival_time
635: )
636: THEN
637: x_is_conflict := FND_API.G_TRUE;
638: END IF;
639: END IF;
640: CLOSE get_prec_flight_est;
641: END IF;
657: -- Check Error Message stack.
658: x_msg_count := FND_MSG_PUB.count_msg;
659: IF x_msg_count > 0
660: THEN
661: RAISE FND_API.G_EXC_ERROR;
662: END IF;
663:
664: -- Standard call to get message count and if count is 1, get message info
665: FND_MSG_PUB.count_and_get
665: FND_MSG_PUB.count_and_get
666: (
667: p_count => x_msg_count,
668: p_data => x_msg_data,
669: p_encoded => FND_API.G_FALSE
670: );
671:
672: EXCEPTION
673: WHEN FND_API.G_EXC_ERROR THEN
669: p_encoded => FND_API.G_FALSE
670: );
671:
672: EXCEPTION
673: WHEN FND_API.G_EXC_ERROR THEN
674: x_return_status := FND_API.G_RET_STS_ERROR;
675: FND_MSG_PUB.count_and_get
676: (
677: p_count => x_msg_count,
670: );
671:
672: EXCEPTION
673: WHEN FND_API.G_EXC_ERROR THEN
674: x_return_status := FND_API.G_RET_STS_ERROR;
675: FND_MSG_PUB.count_and_get
676: (
677: p_count => x_msg_count,
678: p_data => x_msg_data,
675: FND_MSG_PUB.count_and_get
676: (
677: p_count => x_msg_count,
678: p_data => x_msg_data,
679: p_encoded => FND_API.G_FALSE
680: );
681:
682: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
683: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
678: p_data => x_msg_data,
679: p_encoded => FND_API.G_FALSE
680: );
681:
682: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
683: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
684: FND_MSG_PUB.count_and_get
685: (
686: p_count => x_msg_count,
679: p_encoded => FND_API.G_FALSE
680: );
681:
682: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
683: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
684: FND_MSG_PUB.count_and_get
685: (
686: p_count => x_msg_count,
687: p_data => x_msg_data,
684: FND_MSG_PUB.count_and_get
685: (
686: p_count => x_msg_count,
687: p_data => x_msg_data,
688: p_encoded => FND_API.G_FALSE
689: );
690:
691: WHEN OTHERS THEN
692: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
688: p_encoded => FND_API.G_FALSE
689: );
690:
691: WHEN OTHERS THEN
692: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
693: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
694: THEN
695: FND_MSG_PUB.add_exc_msg
696: (
702: FND_MSG_PUB.count_and_get
703: (
704: p_count => x_msg_count,
705: p_data => x_msg_data,
706: p_encoded => FND_API.G_FALSE
707: );
708: END Get_Prec_Flight_Info;
709:
710: ----------------------------------------
773: VB.DEPARTMENT_ID,
774: BDPT.DESCRIPTION DEPARTMENT_NAME,
775: VB.SERVICE_REQUEST_ID,
776: VB.START_DATE_TIME,
777: AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(VB.VISIT_ID , FND_API.G_FALSE) CLOSE_DATE_TIME,
778: VB.STATUS_CODE,
779: VB.VISIT_TYPE_CODE,
780: VB.PROJECT_FLAG,
781: VB.PROJECT_ID,
834: ORGANIZATION_ID,
835: DEPARTMENT_ID,
836: SERVICE_REQUEST_ID,
837: START_DATE_TIME,
838: AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(VISIT_ID , FND_API.G_FALSE) CLOSE_DATE_TIME,
839: STATUS_CODE,
840: VISIT_TYPE_CODE,
841: PROJECT_FLAG,
842: PROJECT_ID,
886: l_prec_visit get_prec_visit_rec%rowtype;
887:
888: BEGIN
889: -- Standard call to check for call compatibility
890: IF NOT FND_API.compatible_api_call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
891: THEN
892: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
893: END IF;
894:
888: BEGIN
889: -- Standard call to check for call compatibility
890: IF NOT FND_API.compatible_api_call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
891: THEN
892: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
893: END IF;
894:
895: -- Initialize API return status to success
896: x_return_status := FND_API.G_RET_STS_SUCCESS;
892: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
893: END IF;
894:
895: -- Initialize API return status to success
896: x_return_status := FND_API.G_RET_STS_SUCCESS;
897:
898: -- Log API entry point
899: IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)
900: THEN
908:
909: -- API body starts here
910: -- 4. If (p_unit_config_id is null or p_start_date_time is null), then display error "Unit Configuration Id and Start Time are mandatory parameters"
911: IF (
912: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
913: p_start_date_time IS NULL OR p_start_date_time = FND_API.G_MISS_DATE
914: )
915: THEN
916: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
909: -- API body starts here
910: -- 4. If (p_unit_config_id is null or p_start_date_time is null), then display error "Unit Configuration Id and Start Time are mandatory parameters"
911: IF (
912: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
913: p_start_date_time IS NULL OR p_start_date_time = FND_API.G_MISS_DATE
914: )
915: THEN
916: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
917: FND_MESSAGE.SET_TOKEN('PROCEDURE', l_api_name);
915: THEN
916: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
917: FND_MESSAGE.SET_TOKEN('PROCEDURE', l_api_name);
918: FND_MSG_PUB.ADD;
919: RAISE FND_API.G_EXC_ERROR;
920: END IF;
921:
922: /*
923: -- 5. Validate unit configuration with unit_config_id = p_unit_config_id exists and is complete and active, using cursor check_unit_exists. If no record found, throw error "Unit Configuration does not exist or is not complete"
927: THEN
928: FND_MESSAGE.SET_NAME('AHL', 'AHL_UA_UNIT_ID_NOT_FOUND');
929: FND_MSG_PUB.ADD;
930: CLOSE check_unit_exists;
931: RAISE FND_API.G_EXC_ERROR;
932: END IF;
933: CLOSE check_unit_exists;
934: */
935:
942: 'Basic validations done'
943: );
944: END IF;
945:
946: x_is_conflict := FND_API.G_FALSE;
947:
948: -- SATRAJEN :: Bug 14459043 :: Changed to improve performance when calculating Visits's end time
949: --5.5 Get the start and end times of the latest starting visit that starts before p_start_date_time
950: OPEN get_visit_start_time (p_unit_config_id ,p_start_date_time);
949: --5.5 Get the start and end times of the latest starting visit that starts before p_start_date_time
950: OPEN get_visit_start_time (p_unit_config_id ,p_start_date_time);
951: FETCH get_visit_start_time INTO l_visit_id, l_visit_start_time;
952: IF(get_visit_start_time%FOUND) THEN
953: l_visit_close_time := AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME( l_visit_id , FND_API.G_FALSE);
954:
955: --6. get the greatest and the second greatest CLOSE_DATE and see if they are the same. If same then a conflict occurs.
956: OPEN get_prec_visit_rec (p_unit_config_id ,p_start_date_time ,l_visit_start_time, l_visit_close_time );
957: FETCH get_prec_visit_rec INTO l_prec_visit;
1003: AND*/
1004: NVL(l_prec_visit.CLOSE_DATE_TIME, l_prec_visit.START_DATE_TIME + 1/1440) = NVL(x_prec_visit.END_DATE, x_prec_visit.START_DATE + 1/1440)
1005: )
1006: THEN
1007: x_is_conflict := FND_API.G_TRUE; -- events are in conflict
1008: END IF;
1009:
1010: END IF;
1011: CLOSE get_prec_visit_rec;
1029: -- Check Error Message stack.
1030: x_msg_count := FND_MSG_PUB.count_msg;
1031: IF x_msg_count > 0
1032: THEN
1033: RAISE FND_API.G_EXC_ERROR;
1034: END IF;
1035:
1036: -- Standard call to get message count and if count is 1, get message info
1037: FND_MSG_PUB.count_and_get
1037: FND_MSG_PUB.count_and_get
1038: (
1039: p_count => x_msg_count,
1040: p_data => x_msg_data,
1041: p_encoded => FND_API.G_FALSE
1042: );
1043:
1044: EXCEPTION
1045: WHEN FND_API.G_EXC_ERROR THEN
1041: p_encoded => FND_API.G_FALSE
1042: );
1043:
1044: EXCEPTION
1045: WHEN FND_API.G_EXC_ERROR THEN
1046: x_return_status := FND_API.G_RET_STS_ERROR;
1047: FND_MSG_PUB.count_and_get
1048: (
1049: p_count => x_msg_count,
1042: );
1043:
1044: EXCEPTION
1045: WHEN FND_API.G_EXC_ERROR THEN
1046: x_return_status := FND_API.G_RET_STS_ERROR;
1047: FND_MSG_PUB.count_and_get
1048: (
1049: p_count => x_msg_count,
1050: p_data => x_msg_data,
1047: FND_MSG_PUB.count_and_get
1048: (
1049: p_count => x_msg_count,
1050: p_data => x_msg_data,
1051: p_encoded => FND_API.G_FALSE
1052: );
1053:
1054: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1055: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1050: p_data => x_msg_data,
1051: p_encoded => FND_API.G_FALSE
1052: );
1053:
1054: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1055: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1056: FND_MSG_PUB.count_and_get
1057: (
1058: p_count => x_msg_count,
1051: p_encoded => FND_API.G_FALSE
1052: );
1053:
1054: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1055: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1056: FND_MSG_PUB.count_and_get
1057: (
1058: p_count => x_msg_count,
1059: p_data => x_msg_data,
1056: FND_MSG_PUB.count_and_get
1057: (
1058: p_count => x_msg_count,
1059: p_data => x_msg_data,
1060: p_encoded => FND_API.G_FALSE
1061: );
1062:
1063: WHEN OTHERS THEN
1064: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1060: p_encoded => FND_API.G_FALSE
1061: );
1062:
1063: WHEN OTHERS THEN
1064: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1065: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1066: THEN
1067: FND_MSG_PUB.add_exc_msg
1068: (
1074: FND_MSG_PUB.count_and_get
1075: (
1076: p_count => x_msg_count,
1077: p_data => x_msg_data,
1078: p_encoded => FND_API.G_FALSE
1079: );
1080: END Get_Prec_Visit_Info;
1081:
1082: ----------------------------------------
1144: VB.DEPARTMENT_ID,
1145: BDPT.DESCRIPTION DEPARTMENT_NAME,
1146: VB.SERVICE_REQUEST_ID,
1147: VB.START_DATE_TIME,
1148: AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(VB.VISIT_ID , FND_API.G_FALSE) CLOSE_DATE_TIME,
1149: VB.STATUS_CODE,
1150: VB.VISIT_TYPE_CODE,
1151: VB.PROJECT_FLAG,
1152: VB.PROJECT_ID,
1202: ORGANIZATION_ID,
1203: DEPARTMENT_ID,
1204: SERVICE_REQUEST_ID,
1205: START_DATE_TIME,
1206: AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME(VISIT_ID , FND_API.G_FALSE) CLOSE_DATE_TIME,
1207: STATUS_CODE,
1208: VISIT_TYPE_CODE,
1209: PROJECT_FLAG,
1210: PROJECT_ID,
1253: l_succ_visit get_succ_visit_rec%rowtype;
1254:
1255: BEGIN
1256: -- Standard call to check for call compatibility
1257: IF NOT FND_API.compatible_api_call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
1258: THEN
1259: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1260: END IF;
1261:
1255: BEGIN
1256: -- Standard call to check for call compatibility
1257: IF NOT FND_API.compatible_api_call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
1258: THEN
1259: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1260: END IF;
1261:
1262: -- Initialize API return status to success
1263: x_return_status := FND_API.G_RET_STS_SUCCESS;
1259: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1260: END IF;
1261:
1262: -- Initialize API return status to success
1263: x_return_status := FND_API.G_RET_STS_SUCCESS;
1264:
1265: -- Log API entry point
1266: IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)
1267: THEN
1276: -- API body starts here
1277: -- 4. If (p_unit_config_id is null or p_end_date_time is null), then display error "Unit Configuration Id and Start Time are mandatory parameters"
1278: -- This API is not expected to be called with p_end_date_time = NULL, since the calling API should already be verifying that, hence throwing error if thats the case...
1279: IF (
1280: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
1281: p_end_date_time IS NULL OR p_end_date_time = FND_API.G_MISS_DATE
1282: )
1283: THEN
1284: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
1277: -- 4. If (p_unit_config_id is null or p_end_date_time is null), then display error "Unit Configuration Id and Start Time are mandatory parameters"
1278: -- This API is not expected to be called with p_end_date_time = NULL, since the calling API should already be verifying that, hence throwing error if thats the case...
1279: IF (
1280: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
1281: p_end_date_time IS NULL OR p_end_date_time = FND_API.G_MISS_DATE
1282: )
1283: THEN
1284: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
1285: FND_MESSAGE.SET_TOKEN('PROCEDURE', l_api_name);
1283: THEN
1284: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
1285: FND_MESSAGE.SET_TOKEN('PROCEDURE', l_api_name);
1286: FND_MSG_PUB.ADD;
1287: RAISE FND_API.G_EXC_ERROR;
1288: END IF;
1289:
1290: /*
1291: -- 5. Validate unit configuration with unit_config_id = p_unit_config_id exists and is complete and active, using cursor check_unit_exists. If no record found, throw error "Unit Configuration does not exist or is not complete"
1295: THEN
1296: FND_MESSAGE.SET_NAME('AHL', 'AHL_UA_UNIT_ID_NOT_FOUND');
1297: FND_MSG_PUB.ADD;
1298: CLOSE check_unit_exists;
1299: RAISE FND_API.G_EXC_ERROR;
1300: END IF;
1301: CLOSE check_unit_exists;
1302: */
1303:
1310: 'Basic validations done'
1311: );
1312: END IF;
1313:
1314: x_is_conflict := FND_API.G_FALSE;
1315:
1316: -- SATRAJEN :: Bug 14459043 :: Changed to improve performance when calculating Visits's end time
1317: --5.5 Get the start and end times of the latest starting visit that starts after p_end_date_time
1318: OPEN get_visit_start_time (p_unit_config_id ,p_end_date_time);
1317: --5.5 Get the start and end times of the latest starting visit that starts after p_end_date_time
1318: OPEN get_visit_start_time (p_unit_config_id ,p_end_date_time);
1319: FETCH get_visit_start_time INTO l_visit_id, l_visit_start_time;
1320: IF(get_visit_start_time%FOUND) THEN
1321: l_visit_close_time := AHL_VWP_TIMES_PVT.GET_VISIT_END_TIME( l_visit_id , FND_API.G_FALSE);
1322:
1323: --6. get the greatest and the second greatest CLOSE_DATE and see if they are the same. If same then a conflict occurs.
1324: OPEN get_succ_visit_rec (p_unit_config_id ,p_end_date_time, l_visit_start_time, l_visit_close_time);
1325: FETCH get_succ_visit_rec INTO l_succ_visit;
1369: AND*/
1370: NVL(l_succ_visit.CLOSE_DATE_TIME, l_succ_visit.START_DATE_TIME + 1/1440) = NVL(x_succ_visit.END_DATE, x_succ_visit.START_DATE + 1/1440)
1371: )
1372: THEN
1373: x_is_conflict := FND_API.G_TRUE; -- events are in conflict
1374: END IF;
1375: END IF;
1376: CLOSE get_succ_visit_rec;
1377: -- API body ends here
1394: -- Check Error Message stack.
1395: x_msg_count := FND_MSG_PUB.count_msg;
1396: IF x_msg_count > 0
1397: THEN
1398: RAISE FND_API.G_EXC_ERROR;
1399: END IF;
1400:
1401: -- Standard call to get message count and if count is 1, get message info
1402: FND_MSG_PUB.count_and_get
1402: FND_MSG_PUB.count_and_get
1403: (
1404: p_count => x_msg_count,
1405: p_data => x_msg_data,
1406: p_encoded => FND_API.G_FALSE
1407: );
1408:
1409: EXCEPTION
1410: WHEN FND_API.G_EXC_ERROR THEN
1406: p_encoded => FND_API.G_FALSE
1407: );
1408:
1409: EXCEPTION
1410: WHEN FND_API.G_EXC_ERROR THEN
1411: x_return_status := FND_API.G_RET_STS_ERROR;
1412: FND_MSG_PUB.count_and_get
1413: (
1414: p_count => x_msg_count,
1407: );
1408:
1409: EXCEPTION
1410: WHEN FND_API.G_EXC_ERROR THEN
1411: x_return_status := FND_API.G_RET_STS_ERROR;
1412: FND_MSG_PUB.count_and_get
1413: (
1414: p_count => x_msg_count,
1415: p_data => x_msg_data,
1412: FND_MSG_PUB.count_and_get
1413: (
1414: p_count => x_msg_count,
1415: p_data => x_msg_data,
1416: p_encoded => FND_API.G_FALSE
1417: );
1418:
1419: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1420: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1415: p_data => x_msg_data,
1416: p_encoded => FND_API.G_FALSE
1417: );
1418:
1419: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1420: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1421: FND_MSG_PUB.count_and_get
1422: (
1423: p_count => x_msg_count,
1416: p_encoded => FND_API.G_FALSE
1417: );
1418:
1419: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1420: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1421: FND_MSG_PUB.count_and_get
1422: (
1423: p_count => x_msg_count,
1424: p_data => x_msg_data,
1421: FND_MSG_PUB.count_and_get
1422: (
1423: p_count => x_msg_count,
1424: p_data => x_msg_data,
1425: p_encoded => FND_API.G_FALSE
1426: );
1427:
1428: WHEN OTHERS THEN
1429: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1425: p_encoded => FND_API.G_FALSE
1426: );
1427:
1428: WHEN OTHERS THEN
1429: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1430: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1431: THEN
1432: FND_MSG_PUB.add_exc_msg
1433: (
1439: FND_MSG_PUB.count_and_get
1440: (
1441: p_count => x_msg_count,
1442: p_data => x_msg_data,
1443: p_encoded => FND_API.G_FALSE
1444: );
1445: END Get_Succ_Visit_Info;
1446:
1447: ---------------------------------------------
1476: l_is_flight_conflict VARCHAR2(1);
1477: l_is_visit_conflict VARCHAR2(1);
1478: BEGIN
1479: -- Standard call to check for call compatibility
1480: IF NOT FND_API.compatible_api_call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
1481: THEN
1482: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1483: END IF;
1484:
1478: BEGIN
1479: -- Standard call to check for call compatibility
1480: IF NOT FND_API.compatible_api_call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
1481: THEN
1482: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1483: END IF;
1484:
1485: -- Initialize API return status to success
1486: x_return_status := FND_API.G_RET_STS_SUCCESS;
1482: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1483: END IF;
1484:
1485: -- Initialize API return status to success
1486: x_return_status := FND_API.G_RET_STS_SUCCESS;
1487:
1488: -- Log API entry point
1489: IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)
1490: THEN
1499: -- API body starts here
1500: -- 4. If (p_unit_config_id is null or p_start_date_time is null), then display error "Unit Configuration Id and End Time are mandatory parameters"
1501:
1502: IF (
1503: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
1504: p_start_date_time IS NULL OR p_start_date_time = FND_API.G_MISS_DATE
1505: )
1506: THEN
1507: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
1500: -- 4. If (p_unit_config_id is null or p_start_date_time is null), then display error "Unit Configuration Id and End Time are mandatory parameters"
1501:
1502: IF (
1503: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
1504: p_start_date_time IS NULL OR p_start_date_time = FND_API.G_MISS_DATE
1505: )
1506: THEN
1507: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
1508: FND_MESSAGE.SET_TOKEN('PROCEDURE', l_api_name);
1506: THEN
1507: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
1508: FND_MESSAGE.SET_TOKEN('PROCEDURE', l_api_name);
1509: FND_MSG_PUB.ADD;
1510: RAISE FND_API.G_EXC_ERROR;
1511: END IF;
1512:
1513: /*
1514: -- 5. Validate unit configuration with unit_config_id = p_unit_config_id exists and is complete and active, using cursor check_unit_exists. If no record found, throw error "Unit Configuration does not exist or is not complete"
1518: THEN
1519: FND_MESSAGE.SET_NAME('AHL', 'AHL_UA_UNIT_ID_NOT_FOUND');
1520: FND_MSG_PUB.ADD;
1521: CLOSE check_unit_exists;
1522: RAISE FND_API.G_EXC_ERROR;
1523: END IF;
1524: CLOSE check_unit_exists;
1525: */
1526:
1533: 'Basic validations done'
1534: );
1535: END IF;
1536:
1537: x_is_conflict := FND_API.G_FALSE;
1538: x_is_org_in_user_ou := FND_API.G_TRUE;
1539:
1540: -- call the Get_Prec_Flight_Info to find out the preceding Flight Schedule or if there is a conflict
1541: -- between preceding Flight Schedules
1534: );
1535: END IF;
1536:
1537: x_is_conflict := FND_API.G_FALSE;
1538: x_is_org_in_user_ou := FND_API.G_TRUE;
1539:
1540: -- call the Get_Prec_Flight_Info to find out the preceding Flight Schedule or if there is a conflict
1541: -- between preceding Flight Schedules
1542: Get_Prec_Flight_Info
1554: -- Check Error Message stack.
1555: x_msg_count := FND_MSG_PUB.count_msg;
1556: IF x_msg_count > 0
1557: THEN
1558: RAISE FND_API.G_EXC_ERROR;
1559: END IF;
1560:
1561: -- call the Get_Prec_Visit_Info to find out the preceding Flight Schedule or if there is a conflict
1562: -- between preceding Flight Schedules
1574: -- Check Error Message stack.
1575: x_msg_count := FND_MSG_PUB.count_msg;
1576: IF x_msg_count > 0
1577: THEN
1578: RAISE FND_API.G_EXC_ERROR;
1579: END IF;
1580:
1581: IF (l_prec_flight_schedule.UNIT_SCHEDULE_ID IS NULL AND l_prec_visit.VISIT_ID IS NULL)
1582: THEN
1582: THEN
1583: RETURN;
1584: ELSIF (l_prec_flight_schedule.UNIT_SCHEDULE_ID IS NULL)
1585: THEN
1586: l_prec_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1587: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1588: ELSIF (l_prec_visit.VISIT_ID IS NULL)
1589: THEN
1590: l_prec_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1586: l_prec_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1587: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1588: ELSIF (l_prec_visit.VISIT_ID IS NULL)
1589: THEN
1590: l_prec_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1591: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1592: ELSE -- implies both records are not NULL
1593: IF (p_use_actuals = FND_API.G_TRUE)
1594: THEN
1589: THEN
1590: l_prec_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1591: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1592: ELSE -- implies both records are not NULL
1593: IF (p_use_actuals = FND_API.G_TRUE)
1594: THEN
1595: --Modifying to capture preceding overlapping visits too...
1596: /*IF(nvl(l_prec_flight_schedule.ACTUAL_ARRIVAL_TIME, l_prec_flight_schedule.EST_ARRIVAL_TIME) > l_prec_visit.END_DATE )
1597: THEN
1594: THEN
1595: --Modifying to capture preceding overlapping visits too...
1596: /*IF(nvl(l_prec_flight_schedule.ACTUAL_ARRIVAL_TIME, l_prec_flight_schedule.EST_ARRIVAL_TIME) > l_prec_visit.END_DATE )
1597: THEN
1598: l_prec_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1599: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1600: ELSIF (nvl(l_prec_flight_schedule.ACTUAL_ARRIVAL_TIME, l_prec_flight_schedule.EST_ARRIVAL_TIME) < l_prec_visit.END_DATE )
1601: THEN
1602: l_prec_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1598: l_prec_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1599: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1600: ELSIF (nvl(l_prec_flight_schedule.ACTUAL_ARRIVAL_TIME, l_prec_flight_schedule.EST_ARRIVAL_TIME) < l_prec_visit.END_DATE )
1601: THEN
1602: l_prec_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1603: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1604: ELSE
1605: x_is_conflict := FND_API.G_TRUE; -- events are in conflict
1606: END IF;*/
1601: THEN
1602: l_prec_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1603: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1604: ELSE
1605: x_is_conflict := FND_API.G_TRUE; -- events are in conflict
1606: END IF;*/
1607: IF(nvl(l_prec_flight_schedule.ACTUAL_DEPARTURE_TIME, l_prec_flight_schedule.EST_DEPARTURE_TIME) > l_prec_visit.START_DATE )
1608: THEN
1609: l_prec_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1605: x_is_conflict := FND_API.G_TRUE; -- events are in conflict
1606: END IF;*/
1607: IF(nvl(l_prec_flight_schedule.ACTUAL_DEPARTURE_TIME, l_prec_flight_schedule.EST_DEPARTURE_TIME) > l_prec_visit.START_DATE )
1608: THEN
1609: l_prec_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1610: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1611: ELSIF (nvl(l_prec_flight_schedule.ACTUAL_DEPARTURE_TIME, l_prec_flight_schedule.EST_DEPARTURE_TIME) < l_prec_visit.START_DATE )
1612: THEN
1613: l_prec_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1609: l_prec_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1610: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1611: ELSIF (nvl(l_prec_flight_schedule.ACTUAL_DEPARTURE_TIME, l_prec_flight_schedule.EST_DEPARTURE_TIME) < l_prec_visit.START_DATE )
1612: THEN
1613: l_prec_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1614: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1615: ELSE
1616: x_is_conflict := FND_API.G_TRUE; -- events are in conflict
1617: END IF;
1612: THEN
1613: l_prec_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1614: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1615: ELSE
1616: x_is_conflict := FND_API.G_TRUE; -- events are in conflict
1617: END IF;
1618: ELSE
1619: --Modifying to capture preceding overlapping visits too...
1620: /*IF(l_prec_flight_schedule.EST_ARRIVAL_TIME > l_prec_visit.END_DATE )
1618: ELSE
1619: --Modifying to capture preceding overlapping visits too...
1620: /*IF(l_prec_flight_schedule.EST_ARRIVAL_TIME > l_prec_visit.END_DATE )
1621: THEN
1622: l_prec_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1623: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1624: ELSIF (l_prec_flight_schedule.EST_ARRIVAL_TIME < l_prec_visit.END_DATE )
1625: THEN
1626: l_prec_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1622: l_prec_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1623: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1624: ELSIF (l_prec_flight_schedule.EST_ARRIVAL_TIME < l_prec_visit.END_DATE )
1625: THEN
1626: l_prec_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1627: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1628: ELSE
1629: x_is_conflict := FND_API.G_TRUE; -- events are in conflict
1630: END IF;*/
1625: THEN
1626: l_prec_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1627: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1628: ELSE
1629: x_is_conflict := FND_API.G_TRUE; -- events are in conflict
1630: END IF;*/
1631: IF(l_prec_flight_schedule.EST_DEPARTURE_TIME > l_prec_visit.START_DATE )
1632: THEN
1633: l_prec_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1629: x_is_conflict := FND_API.G_TRUE; -- events are in conflict
1630: END IF;*/
1631: IF(l_prec_flight_schedule.EST_DEPARTURE_TIME > l_prec_visit.START_DATE )
1632: THEN
1633: l_prec_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1634: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1635: ELSIF (l_prec_flight_schedule.EST_DEPARTURE_TIME < l_prec_visit.START_DATE )
1636: THEN
1637: l_prec_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1633: l_prec_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1634: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1635: ELSIF (l_prec_flight_schedule.EST_DEPARTURE_TIME < l_prec_visit.START_DATE )
1636: THEN
1637: l_prec_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1638: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1639: ELSE
1640: x_is_conflict := FND_API.G_TRUE; -- events are in conflict
1641: END IF;
1636: THEN
1637: l_prec_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1638: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1639: ELSE
1640: x_is_conflict := FND_API.G_TRUE; -- events are in conflict
1641: END IF;
1642: END IF;
1643: END IF;
1644:
1642: END IF;
1643: END IF;
1644:
1645: -- if there is no conflict then populate the relevant record (either visit or flight schedule) to be sent back
1646: IF( x_is_conflict = FND_API.G_FALSE)
1647: THEN
1648: IF (l_prec_is_visit = FND_API.G_FALSE)
1649: THEN
1650: x_prec_flight_schedule := l_prec_flight_schedule; -- populate the record to be sent back
1644:
1645: -- if there is no conflict then populate the relevant record (either visit or flight schedule) to be sent back
1646: IF( x_is_conflict = FND_API.G_FALSE)
1647: THEN
1648: IF (l_prec_is_visit = FND_API.G_FALSE)
1649: THEN
1650: x_prec_flight_schedule := l_prec_flight_schedule; -- populate the record to be sent back
1651: ELSE
1652: x_prec_visit := l_prec_visit; -- populate the record to be sent back
1658: );
1659: x_msg_count := FND_MSG_PUB.count_msg;
1660: IF x_msg_count > 0
1661: THEN
1662: RAISE FND_API.G_EXC_ERROR;
1663: END IF;
1664: END IF;
1665: END IF;
1666: -- API body ends here
1679: -- Check Error Message stack.
1680: x_msg_count := FND_MSG_PUB.count_msg;
1681: IF x_msg_count > 0
1682: THEN
1683: RAISE FND_API.G_EXC_ERROR;
1684: END IF;
1685:
1686: -- Standard call to get message count and if count is 1, get message info
1687: FND_MSG_PUB.count_and_get
1687: FND_MSG_PUB.count_and_get
1688: (
1689: p_count => x_msg_count,
1690: p_data => x_msg_data,
1691: p_encoded => FND_API.G_FALSE
1692: );
1693:
1694: EXCEPTION
1695: WHEN FND_API.G_EXC_ERROR THEN
1691: p_encoded => FND_API.G_FALSE
1692: );
1693:
1694: EXCEPTION
1695: WHEN FND_API.G_EXC_ERROR THEN
1696: x_return_status := FND_API.G_RET_STS_ERROR;
1697: FND_MSG_PUB.count_and_get
1698: (
1699: p_count => x_msg_count,
1692: );
1693:
1694: EXCEPTION
1695: WHEN FND_API.G_EXC_ERROR THEN
1696: x_return_status := FND_API.G_RET_STS_ERROR;
1697: FND_MSG_PUB.count_and_get
1698: (
1699: p_count => x_msg_count,
1700: p_data => x_msg_data,
1697: FND_MSG_PUB.count_and_get
1698: (
1699: p_count => x_msg_count,
1700: p_data => x_msg_data,
1701: p_encoded => FND_API.G_FALSE
1702: );
1703:
1704: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1705: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1700: p_data => x_msg_data,
1701: p_encoded => FND_API.G_FALSE
1702: );
1703:
1704: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1705: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1706: FND_MSG_PUB.count_and_get
1707: (
1708: p_count => x_msg_count,
1701: p_encoded => FND_API.G_FALSE
1702: );
1703:
1704: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1705: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1706: FND_MSG_PUB.count_and_get
1707: (
1708: p_count => x_msg_count,
1709: p_data => x_msg_data,
1706: FND_MSG_PUB.count_and_get
1707: (
1708: p_count => x_msg_count,
1709: p_data => x_msg_data,
1710: p_encoded => FND_API.G_FALSE
1711: );
1712:
1713: WHEN OTHERS THEN
1714: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1710: p_encoded => FND_API.G_FALSE
1711: );
1712:
1713: WHEN OTHERS THEN
1714: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1715: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1716: THEN
1717: FND_MSG_PUB.add_exc_msg
1718: (
1724: FND_MSG_PUB.count_and_get
1725: (
1726: p_count => x_msg_count,
1727: p_data => x_msg_data,
1728: p_encoded => FND_API.G_FALSE
1729: );
1730: END Get_Prec_Event_Info;
1731:
1732: ---------------------------------------------
1762: l_is_visit_conflict VARCHAR2(1);
1763:
1764: BEGIN
1765: -- Standard call to check for call compatibility
1766: IF NOT FND_API.compatible_api_call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
1767: THEN
1768: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1769: END IF;
1770:
1764: BEGIN
1765: -- Standard call to check for call compatibility
1766: IF NOT FND_API.compatible_api_call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
1767: THEN
1768: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1769: END IF;
1770:
1771: -- Initialize API return status to success
1772: x_return_status := FND_API.G_RET_STS_SUCCESS;
1768: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1769: END IF;
1770:
1771: -- Initialize API return status to success
1772: x_return_status := FND_API.G_RET_STS_SUCCESS;
1773:
1774: -- Log API entry point
1775: IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)
1776: THEN
1785: -- API body starts here
1786: -- 4. If (p_unit_config_id is null or p_end_date_time is null), then display error "Unit Configuration Id and End Time are mandatory parameters"
1787: -- This API is not expected to be called with p_end_date_time = NULL, since the calling API should already be verifying that, hence throwing error if thats the case...
1788: IF (
1789: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
1790: p_end_date_time IS NULL OR p_end_date_time = FND_API.G_MISS_DATE
1791: )
1792: THEN
1793: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
1786: -- 4. If (p_unit_config_id is null or p_end_date_time is null), then display error "Unit Configuration Id and End Time are mandatory parameters"
1787: -- This API is not expected to be called with p_end_date_time = NULL, since the calling API should already be verifying that, hence throwing error if thats the case...
1788: IF (
1789: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
1790: p_end_date_time IS NULL OR p_end_date_time = FND_API.G_MISS_DATE
1791: )
1792: THEN
1793: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
1794: FND_MESSAGE.SET_TOKEN('PROCEDURE', l_api_name);
1792: THEN
1793: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
1794: FND_MESSAGE.SET_TOKEN('PROCEDURE', l_api_name);
1795: FND_MSG_PUB.ADD;
1796: RAISE FND_API.G_EXC_ERROR;
1797: END IF;
1798:
1799: /*
1800: -- 5. Validate unit configuration with unit_config_id = p_unit_config_id exists and is complete and active, using cursor check_unit_exists. If no record found, throw error "Unit Configuration does not exist or is not complete"
1804: THEN
1805: FND_MESSAGE.SET_NAME('AHL', 'AHL_UA_UNIT_ID_NOT_FOUND');
1806: FND_MSG_PUB.ADD;
1807: CLOSE check_unit_exists;
1808: RAISE FND_API.G_EXC_ERROR;
1809: END IF;
1810: CLOSE check_unit_exists;
1811: */
1812:
1819: 'Basic validations done'
1820: );
1821: END IF;
1822:
1823: x_is_conflict := FND_API.G_FALSE;
1824: x_is_org_in_user_ou := FND_API.G_TRUE;
1825:
1826: -- call the Get_Succ_Flight_Info to find out the preceding Flight Schedule or if there is a conflict
1827: -- between preceding Flight Schedules
1820: );
1821: END IF;
1822:
1823: x_is_conflict := FND_API.G_FALSE;
1824: x_is_org_in_user_ou := FND_API.G_TRUE;
1825:
1826: -- call the Get_Succ_Flight_Info to find out the preceding Flight Schedule or if there is a conflict
1827: -- between preceding Flight Schedules
1828: Get_Succ_Flight_Info
1840: -- Check Error Message stack.
1841: x_msg_count := FND_MSG_PUB.count_msg;
1842: IF x_msg_count > 0
1843: THEN
1844: RAISE FND_API.G_EXC_ERROR;
1845: END IF;
1846:
1847: -- call the Get_Succ_Visit_Info to find out the preceding Flight Schedule or if there is a conflict
1848: -- between preceding Flight Schedules
1860: -- Check Error Message stack.
1861: x_msg_count := FND_MSG_PUB.count_msg;
1862: IF x_msg_count > 0
1863: THEN
1864: RAISE FND_API.G_EXC_ERROR;
1865: END IF;
1866:
1867: IF (l_succ_flight_schedule.UNIT_SCHEDULE_ID IS NULL AND l_succ_visit.VISIT_ID IS NULL)
1868: THEN
1868: THEN
1869: RETURN;
1870: ELSIF (l_succ_flight_schedule.UNIT_SCHEDULE_ID IS NULL)
1871: THEN
1872: l_succ_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1873: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1874: ELSIF (l_succ_visit.VISIT_ID IS NULL)
1875: THEN
1876: l_succ_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1872: l_succ_is_visit := FND_API.G_TRUE; -- preceding event is a visit
1873: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1874: ELSIF (l_succ_visit.VISIT_ID IS NULL)
1875: THEN
1876: l_succ_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1877: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1878: ELSE -- implies both records are not NULL
1879: IF (p_use_actuals = FND_API.G_TRUE)
1880: THEN
1875: THEN
1876: l_succ_is_visit := FND_API.G_FALSE; -- preceding event is not a visit
1877: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1878: ELSE -- implies both records are not NULL
1879: IF (p_use_actuals = FND_API.G_TRUE)
1880: THEN
1881: IF(nvl(l_succ_flight_schedule.ACTUAL_DEPARTURE_TIME, l_succ_flight_schedule.EST_DEPARTURE_TIME) < l_succ_visit.START_DATE )
1882: THEN
1883: l_succ_is_visit := FND_API.G_FALSE; -- succeeding event is not a visit
1879: IF (p_use_actuals = FND_API.G_TRUE)
1880: THEN
1881: IF(nvl(l_succ_flight_schedule.ACTUAL_DEPARTURE_TIME, l_succ_flight_schedule.EST_DEPARTURE_TIME) < l_succ_visit.START_DATE )
1882: THEN
1883: l_succ_is_visit := FND_API.G_FALSE; -- succeeding event is not a visit
1884: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1885: ELSIF (nvl(l_succ_flight_schedule.ACTUAL_DEPARTURE_TIME, l_succ_flight_schedule.EST_DEPARTURE_TIME) > l_succ_visit.START_DATE )
1886: THEN
1887: l_succ_is_visit := FND_API.G_TRUE; -- succeeding event is a visit
1883: l_succ_is_visit := FND_API.G_FALSE; -- succeeding event is not a visit
1884: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1885: ELSIF (nvl(l_succ_flight_schedule.ACTUAL_DEPARTURE_TIME, l_succ_flight_schedule.EST_DEPARTURE_TIME) > l_succ_visit.START_DATE )
1886: THEN
1887: l_succ_is_visit := FND_API.G_TRUE; -- succeeding event is a visit
1888: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1889: ELSE
1890: x_is_conflict :=FND_API.G_TRUE; -- events are in conflict
1891: END IF;
1886: THEN
1887: l_succ_is_visit := FND_API.G_TRUE; -- succeeding event is a visit
1888: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1889: ELSE
1890: x_is_conflict :=FND_API.G_TRUE; -- events are in conflict
1891: END IF;
1892: ELSE
1893: IF(l_succ_flight_schedule.EST_DEPARTURE_TIME < l_succ_visit.START_DATE )
1894: THEN
1891: END IF;
1892: ELSE
1893: IF(l_succ_flight_schedule.EST_DEPARTURE_TIME < l_succ_visit.START_DATE )
1894: THEN
1895: l_succ_is_visit := FND_API.G_FALSE; -- succeeding event is not a visit
1896: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1897: ELSIF (l_succ_flight_schedule.EST_DEPARTURE_TIME > l_succ_visit.START_DATE )
1898: THEN
1899: l_succ_is_visit := FND_API.G_TRUE; -- succeeding event is a visit
1895: l_succ_is_visit := FND_API.G_FALSE; -- succeeding event is not a visit
1896: x_is_conflict := l_is_flight_conflict; -- events are in conflict
1897: ELSIF (l_succ_flight_schedule.EST_DEPARTURE_TIME > l_succ_visit.START_DATE )
1898: THEN
1899: l_succ_is_visit := FND_API.G_TRUE; -- succeeding event is a visit
1900: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1901: ELSE
1902: x_is_conflict :=FND_API.G_TRUE; -- events are in conflict
1903: END IF;
1898: THEN
1899: l_succ_is_visit := FND_API.G_TRUE; -- succeeding event is a visit
1900: x_is_conflict := l_is_visit_conflict; -- events are in conflict
1901: ELSE
1902: x_is_conflict :=FND_API.G_TRUE; -- events are in conflict
1903: END IF;
1904: END IF;
1905: END IF;
1906:
1904: END IF;
1905: END IF;
1906:
1907: -- if there is no conflict then populate the relevant record (either visit or flight schedule) to be sent back
1908: IF( x_is_conflict = FND_API.G_FALSE)
1909: THEN
1910: IF (l_succ_is_visit = FND_API.G_FALSE)
1911: THEN
1912: x_succ_flight_schedule := l_succ_flight_schedule; -- populate the record to be sent back
1906:
1907: -- if there is no conflict then populate the relevant record (either visit or flight schedule) to be sent back
1908: IF( x_is_conflict = FND_API.G_FALSE)
1909: THEN
1910: IF (l_succ_is_visit = FND_API.G_FALSE)
1911: THEN
1912: x_succ_flight_schedule := l_succ_flight_schedule; -- populate the record to be sent back
1913: ELSE
1914: x_succ_visit := l_succ_visit; -- populate the record to be sent back
1921:
1922: x_msg_count := FND_MSG_PUB.count_msg;
1923: IF x_msg_count > 0
1924: THEN
1925: RAISE FND_API.G_EXC_ERROR;
1926: END IF;
1927: END IF;
1928: END IF;
1929: -- API body ends here
1942: -- Check Error Message stack.
1943: x_msg_count := FND_MSG_PUB.count_msg;
1944: IF x_msg_count > 0
1945: THEN
1946: RAISE FND_API.G_EXC_ERROR;
1947: END IF;
1948:
1949: -- Standard call to get message count and if count is 1, get message info
1950: FND_MSG_PUB.count_and_get
1950: FND_MSG_PUB.count_and_get
1951: (
1952: p_count => x_msg_count,
1953: p_data => x_msg_data,
1954: p_encoded => FND_API.G_FALSE
1955: );
1956:
1957: EXCEPTION
1958: WHEN FND_API.G_EXC_ERROR THEN
1954: p_encoded => FND_API.G_FALSE
1955: );
1956:
1957: EXCEPTION
1958: WHEN FND_API.G_EXC_ERROR THEN
1959: x_return_status := FND_API.G_RET_STS_ERROR;
1960: FND_MSG_PUB.count_and_get
1961: (
1962: p_count => x_msg_count,
1955: );
1956:
1957: EXCEPTION
1958: WHEN FND_API.G_EXC_ERROR THEN
1959: x_return_status := FND_API.G_RET_STS_ERROR;
1960: FND_MSG_PUB.count_and_get
1961: (
1962: p_count => x_msg_count,
1963: p_data => x_msg_data,
1960: FND_MSG_PUB.count_and_get
1961: (
1962: p_count => x_msg_count,
1963: p_data => x_msg_data,
1964: p_encoded => FND_API.G_FALSE
1965: );
1966:
1967: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1968: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1963: p_data => x_msg_data,
1964: p_encoded => FND_API.G_FALSE
1965: );
1966:
1967: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1968: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1969: FND_MSG_PUB.count_and_get
1970: (
1971: p_count => x_msg_count,
1964: p_encoded => FND_API.G_FALSE
1965: );
1966:
1967: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1968: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1969: FND_MSG_PUB.count_and_get
1970: (
1971: p_count => x_msg_count,
1972: p_data => x_msg_data,
1969: FND_MSG_PUB.count_and_get
1970: (
1971: p_count => x_msg_count,
1972: p_data => x_msg_data,
1973: p_encoded => FND_API.G_FALSE
1974: );
1975:
1976: WHEN OTHERS THEN
1977: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1973: p_encoded => FND_API.G_FALSE
1974: );
1975:
1976: WHEN OTHERS THEN
1977: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1978: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1979: THEN
1980: FND_MSG_PUB.add_exc_msg
1981: (
1987: FND_MSG_PUB.count_and_get
1988: (
1989: p_count => x_msg_count,
1990: p_data => x_msg_data,
1991: p_encoded => FND_API.G_FALSE
1992: );
1993: END Get_Succ_Event_Info;
1994:
1995: ---------------------------------------------
2046: l_est_flight_rec get_succ_flight_est%rowtype;
2047:
2048: BEGIN
2049: -- Standard call to check for call compatibility
2050: IF NOT FND_API.compatible_api_call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
2051: THEN
2052: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2053: END IF;
2054:
2048: BEGIN
2049: -- Standard call to check for call compatibility
2050: IF NOT FND_API.compatible_api_call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
2051: THEN
2052: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2053: END IF;
2054:
2055: -- Initialize API return status to success
2056: x_return_status := FND_API.G_RET_STS_SUCCESS;
2052: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2053: END IF;
2054:
2055: -- Initialize API return status to success
2056: x_return_status := FND_API.G_RET_STS_SUCCESS;
2057:
2058: -- Log API entry point
2059: IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)
2060: THEN
2069: -- API body starts here
2070: -- 4. If (p_unit_config_id is null or p_end_date_time is null), then display error "Unit Configuration Id and End Time are mandatory parameters"
2071: -- This API is not expected to be called with p_end_date_time = NULL, since the calling API should already be verifying that, hence throwing error if thats the case...
2072: IF (
2073: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
2074: p_end_date_time IS NULL OR p_end_date_time = FND_API.G_MISS_DATE
2075: )
2076: THEN
2077: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
2070: -- 4. If (p_unit_config_id is null or p_end_date_time is null), then display error "Unit Configuration Id and End Time are mandatory parameters"
2071: -- This API is not expected to be called with p_end_date_time = NULL, since the calling API should already be verifying that, hence throwing error if thats the case...
2072: IF (
2073: p_unit_config_id IS NULL OR p_unit_config_id = FND_API.G_MISS_NUM OR
2074: p_end_date_time IS NULL OR p_end_date_time = FND_API.G_MISS_DATE
2075: )
2076: THEN
2077: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
2078: FND_MESSAGE.SET_TOKEN('PROCEDURE', l_api_name);
2076: THEN
2077: FND_MESSAGE.SET_NAME('AHL', 'AHL_COM_INVALID_PROCEDURE_CALL');
2078: FND_MESSAGE.SET_TOKEN('PROCEDURE', l_api_name);
2079: FND_MSG_PUB.ADD;
2080: RAISE FND_API.G_EXC_ERROR;
2081: END IF;
2082:
2083: /*
2084: -- 5. Validate unit configuration with unit_config_id = p_unit_config_id exists and is complete and active, using cursor check_unit_exists. If no record found, throw error "Unit Configuration does not exist or is not complete"
2088: THEN
2089: FND_MESSAGE.SET_NAME('AHL', 'AHL_UA_UNIT_ID_NOT_FOUND');
2090: FND_MSG_PUB.ADD;
2091: CLOSE check_unit_exists;
2092: RAISE FND_API.G_EXC_ERROR;
2093: END IF;
2094: CLOSE check_unit_exists;
2095: */
2096:
2103: 'Basic validations done'
2104: );
2105: END IF;
2106:
2107: x_is_conflict := FND_API.G_FALSE;
2108:
2109: -- 6. If (p_use_actuals = FND_API.G_TRUE), open cursor get_succ_flight_act else open cursor get_succ_flight_est
2110: IF (p_use_actuals IS NOT NULL AND p_use_actuals = FND_API.G_TRUE)
2111: THEN
2105: END IF;
2106:
2107: x_is_conflict := FND_API.G_FALSE;
2108:
2109: -- 6. If (p_use_actuals = FND_API.G_TRUE), open cursor get_succ_flight_act else open cursor get_succ_flight_est
2110: IF (p_use_actuals IS NOT NULL AND p_use_actuals = FND_API.G_TRUE)
2111: THEN
2112: -- 7. Fetch one record from cursor into and populate x_Flight_Schedule_Rec_Type with values from this record
2113: OPEN get_succ_flight_act (p_unit_config_id, p_end_date_time);
2106:
2107: x_is_conflict := FND_API.G_FALSE;
2108:
2109: -- 6. If (p_use_actuals = FND_API.G_TRUE), open cursor get_succ_flight_act else open cursor get_succ_flight_est
2110: IF (p_use_actuals IS NOT NULL AND p_use_actuals = FND_API.G_TRUE)
2111: THEN
2112: -- 7. Fetch one record from cursor into and populate x_Flight_Schedule_Rec_Type with values from this record
2113: OPEN get_succ_flight_act (p_unit_config_id, p_end_date_time);
2114: FETCH get_succ_flight_act INTO l_act_flight_rec;
2160: x_succ_flight_schedule.attribute13 := l_act_flight_rec.attribute13;
2161: x_succ_flight_schedule.attribute14 := l_act_flight_rec.attribute14;
2162: x_succ_flight_schedule.attribute15 := l_act_flight_rec.attribute15;
2163:
2164: -- 8. Fetch another record from cursor, and if the record's arrival time (actual / estimated based on p_use_actuals) = previous record's arrival time, then populate x_is_conflict = FND_API.G_TRUE
2165: FETCH get_succ_flight_act INTO l_act_flight_rec;
2166: IF (
2167: get_succ_flight_act%FOUND
2168: AND
2173: nvl(l_act_flight_rec.actual_arrival_time, l_act_flight_rec.est_arrival_time) =
2174: nvl(x_succ_flight_schedule.actual_arrival_time, x_succ_flight_schedule.est_arrival_time)
2175: )
2176: THEN
2177: x_is_conflict := FND_API.G_TRUE;
2178: END IF;
2179: END IF;
2180: CLOSE get_succ_flight_act;
2181: ELSE
2230: x_succ_flight_schedule.attribute13 := l_est_flight_rec.attribute13;
2231: x_succ_flight_schedule.attribute14 := l_est_flight_rec.attribute14;
2232: x_succ_flight_schedule.attribute15 := l_est_flight_rec.attribute15;
2233:
2234: -- 8. Fetch another record from cursor, and if the record's arrival time (actual / estimated based on p_use_actuals) = previous record's arrival time, then populate x_is_conflict = FND_API.G_TRUE
2235: FETCH get_succ_flight_est INTO l_est_flight_rec;
2236: IF (
2237: get_succ_flight_est%FOUND
2238: AND
2241: AND
2242: l_est_flight_rec.est_arrival_time = x_succ_flight_schedule.est_arrival_time
2243: )
2244: THEN
2245: x_is_conflict := FND_API.G_TRUE;
2246: END IF;
2247: END IF;
2248: CLOSE get_succ_flight_est;
2249: END IF;
2264: -- Check Error Message stack.
2265: x_msg_count := FND_MSG_PUB.count_msg;
2266: IF x_msg_count > 0
2267: THEN
2268: RAISE FND_API.G_EXC_ERROR;
2269: END IF;
2270:
2271: -- Standard call to get message count and if count is 1, get message info
2272: FND_MSG_PUB.count_and_get
2272: FND_MSG_PUB.count_and_get
2273: (
2274: p_count => x_msg_count,
2275: p_data => x_msg_data,
2276: p_encoded => FND_API.G_FALSE
2277: );
2278:
2279: EXCEPTION
2280: WHEN FND_API.G_EXC_ERROR THEN
2276: p_encoded => FND_API.G_FALSE
2277: );
2278:
2279: EXCEPTION
2280: WHEN FND_API.G_EXC_ERROR THEN
2281: x_return_status := FND_API.G_RET_STS_ERROR;
2282: FND_MSG_PUB.count_and_get
2283: (
2284: p_count => x_msg_count,
2277: );
2278:
2279: EXCEPTION
2280: WHEN FND_API.G_EXC_ERROR THEN
2281: x_return_status := FND_API.G_RET_STS_ERROR;
2282: FND_MSG_PUB.count_and_get
2283: (
2284: p_count => x_msg_count,
2285: p_data => x_msg_data,
2282: FND_MSG_PUB.count_and_get
2283: (
2284: p_count => x_msg_count,
2285: p_data => x_msg_data,
2286: p_encoded => FND_API.G_FALSE
2287: );
2288:
2289: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2290: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2285: p_data => x_msg_data,
2286: p_encoded => FND_API.G_FALSE
2287: );
2288:
2289: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2290: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2291: FND_MSG_PUB.count_and_get
2292: (
2293: p_count => x_msg_count,
2286: p_encoded => FND_API.G_FALSE
2287: );
2288:
2289: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2290: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2291: FND_MSG_PUB.count_and_get
2292: (
2293: p_count => x_msg_count,
2294: p_data => x_msg_data,
2291: FND_MSG_PUB.count_and_get
2292: (
2293: p_count => x_msg_count,
2294: p_data => x_msg_data,
2295: p_encoded => FND_API.G_FALSE
2296: );
2297:
2298: WHEN OTHERS THEN
2299: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2295: p_encoded => FND_API.G_FALSE
2296: );
2297:
2298: WHEN OTHERS THEN
2299: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2300: IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2301: THEN
2302: FND_MSG_PUB.add_exc_msg
2303: (
2309: FND_MSG_PUB.count_and_get
2310: (
2311: p_count => x_msg_count,
2312: p_data => x_msg_data,
2313: p_encoded => FND_API.G_FALSE
2314: );
2315: END Get_Succ_Flight_Info;
2316:
2317: End AHL_UA_COMMON_PVT;