4:
5: G_PKG_NAME VARCHAR2(30) := 'CS_SR_STATUS_PROPAGATION_PKG';
6: PROCEDURE VALIDATE_SR_CLOSURE(
7: p_api_version IN NUMBER,
8: p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,
9: p_commit IN VARCHAR2,
10: p_service_request_id IN NUMBER,
11: p_user_id IN NUMBER,
12: p_resp_appl_id IN NUMBER,
57: AND a.source_object_id = p_service_request_id;
58:
59: BEGIN
60:
61: x_return_status := FND_API.G_RET_STS_SUCCESS;
62:
63: /* Check if child is a charge line with charge_line_type = 'Actual'
64: and OM interface flag = 'Y' and charge line is not yet submitted
65: to OM */
89: x_msg_count => l_msg_count,
90: x_msg_data => l_msg_data);
91:
92: IF (l_func_ret_status = FALSE) THEN
93: raise FND_API.G_EXC_ERROR;
94: END IF;
95: ELSE
96:
97: /* Check if child is an open non-field service task */
115: END IF;
116: END IF;
117: END LOOP;
118: EXCEPTION
119: WHEN FND_API.G_EXC_ERROR THEN
120: x_return_status := FND_API.G_RET_STS_ERROR;
121: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
122: p_data => x_msg_data);
123:
116: END IF;
117: END LOOP;
118: EXCEPTION
119: WHEN FND_API.G_EXC_ERROR THEN
120: x_return_status := FND_API.G_RET_STS_ERROR;
121: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
122: p_data => x_msg_data);
123:
124: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
120: x_return_status := FND_API.G_RET_STS_ERROR;
121: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
122: p_data => x_msg_data);
123:
124: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
125: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
126: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
127: p_data => x_msg_data);
128:
121: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
122: p_data => x_msg_data);
123:
124: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
125: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
126: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
127: p_data => x_msg_data);
128:
129: WHEN CS_UNSUBMITTED_CHARGES_EXIST THEN
126: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
127: p_data => x_msg_data);
128:
129: WHEN CS_UNSUBMITTED_CHARGES_EXIST THEN
130: x_return_status := FND_API.G_RET_STS_ERROR;
131: FND_MESSAGE.SET_NAME('CS','CS_SR_OPEN_CHARGES_EXISTS');
132: FND_MSG_PUB.ADD;
133: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
134: p_data => x_msg_data);
133: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
134: p_data => x_msg_data);
135:
136: WHEN CS_OPEN_TASKS_EXIST THEN
137: x_return_status := FND_API.G_RET_STS_ERROR;
138: FND_MESSAGE.SET_NAME('CS','CS_SR_OPEN_TASKS_EXISTS');
139: FND_MSG_PUB.ADD;
140: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
141: p_data => x_msg_data);
139: FND_MSG_PUB.ADD;
140: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
141: p_data => x_msg_data);
142: WHEN OTHERS THEN
143: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
144: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
145: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
146: END IF;
147: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
165: -- varchar2 to varchar2(240)
166: -- -----------------------------------------------------------------------------
167: PROCEDURE CLOSE_SR_CHILDREN(
168: p_api_version IN NUMBER,
169: p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,
170: p_commit IN VARCHAR2 DEFAULT fnd_api.g_false,
171: p_validation_required IN VARCHAR2,
172: p_action_required IN VARCHAR2,
173: p_service_request_id IN NUMBER,
166: -- -----------------------------------------------------------------------------
167: PROCEDURE CLOSE_SR_CHILDREN(
168: p_api_version IN NUMBER,
169: p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,
170: p_commit IN VARCHAR2 DEFAULT fnd_api.g_false,
171: p_validation_required IN VARCHAR2,
172: p_action_required IN VARCHAR2,
173: p_service_request_id IN NUMBER,
174: p_user_id IN NUMBER,
214: BEGIN
215:
216: SAVEPOINT CLOSE_SR_CHILDREN;
217:
218: x_return_status := FND_API.G_RET_STS_SUCCESS;
219:
220: -- If the auto task close status is null, return immediately
221:
222: FND_PROFILE.GET('CS_SR_TASK_AUTO_CLOSE_STATUS',l_profile_value);
236: l_return_status,
237: x_msg_count,
238: x_msg_data);
239:
240: IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
241: x_return_status := FND_API.G_RET_STS_ERROR;
242: raise FND_API.G_EXC_ERROR;
243: END IF;
244: END IF;
237: x_msg_count,
238: x_msg_data);
239:
240: IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
241: x_return_status := FND_API.G_RET_STS_ERROR;
242: raise FND_API.G_EXC_ERROR;
243: END IF;
244: END IF;
245:
238: x_msg_data);
239:
240: IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
241: x_return_status := FND_API.G_RET_STS_ERROR;
242: raise FND_API.G_EXC_ERROR;
243: END IF;
244: END IF;
245:
246: -- Continue with the rest of the flow if action_required = Y
262: , x_msg_count => x_msg_count
263: , x_msg_data => x_msg_data
264: );
265:
266: if (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
267: raise FND_API.G_EXC_UNEXPECTED_ERROR;
268: end if;
269: ELSE
270:
263: , x_msg_data => x_msg_data
264: );
265:
266: if (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
267: raise FND_API.G_EXC_UNEXPECTED_ERROR;
268: end if;
269: ELSE
270:
271: /*
289: );
290:
291: -- If update_task() API returned error, raise an exception
292:
293: if (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
294: raise FND_API.G_EXC_UNEXPECTED_ERROR;
295: end if;
296: END IF;
297: END LOOP;
290:
291: -- If update_task() API returned error, raise an exception
292:
293: if (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
294: raise FND_API.G_EXC_UNEXPECTED_ERROR;
295: end if;
296: END IF;
297: END LOOP;
298: END IF;
298: END IF;
299: END IF;
300:
301: EXCEPTION
302: WHEN FND_API.G_EXC_ERROR THEN
303: ROLLBACK TO CLOSE_SR_CHILDREN;
304: x_return_status := FND_API.G_RET_STS_ERROR;
305: FND_MSG_PUB.Count_And_Get
306: ( p_count => x_msg_count,
300:
301: EXCEPTION
302: WHEN FND_API.G_EXC_ERROR THEN
303: ROLLBACK TO CLOSE_SR_CHILDREN;
304: x_return_status := FND_API.G_RET_STS_ERROR;
305: FND_MSG_PUB.Count_And_Get
306: ( p_count => x_msg_count,
307: p_data => x_msg_data
308: );
305: FND_MSG_PUB.Count_And_Get
306: ( p_count => x_msg_count,
307: p_data => x_msg_data
308: );
309: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
310: ROLLBACK TO CLOSE_SR_CHILDREN;
311: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
312: FND_MSG_PUB.Count_And_Get
313: ( p_count => x_msg_count,
307: p_data => x_msg_data
308: );
309: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
310: ROLLBACK TO CLOSE_SR_CHILDREN;
311: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
312: FND_MSG_PUB.Count_And_Get
313: ( p_count => x_msg_count,
314: p_data => x_msg_data
315: );
314: p_data => x_msg_data
315: );
316: WHEN OTHERS THEN
317: ROLLBACK TO CLOSE_SR_CHILDREN;
318: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
319: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
320: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
321: END IF;
322: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
326:
327:
328: PROCEDURE SR_UPWARD_STATUS_PROPAGATION(
329: p_api_version IN NUMBER,
330: p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,
331: p_commit IN VARCHAR2 DEFAULT fnd_api.g_false,
332: p_service_request_id IN NUMBER,
333: p_user_id IN NUMBER,
334: p_resp_appl_id IN NUMBER,
327:
328: PROCEDURE SR_UPWARD_STATUS_PROPAGATION(
329: p_api_version IN NUMBER,
330: p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,
331: p_commit IN VARCHAR2 DEFAULT fnd_api.g_false,
332: p_service_request_id IN NUMBER,
333: p_user_id IN NUMBER,
334: p_resp_appl_id IN NUMBER,
335: p_resp_id IN NUMBER,
426: BEGIN
427:
428: SAVEPOINT SR_UPWARD_STATUS_PROPAGATION;
429:
430: x_return_status := FND_API.G_RET_STS_SUCCESS;
431: FND_GLOBAL.APPS_INITIALIZE(
432: user_id => p_user_id,
433: resp_id => p_resp_id,
434: resp_appl_id => p_resp_appl_id
436:
437: open c_status(p_service_request_id);
438: fetch c_status into l_sr_status;
439: IF (c_status%NOTFOUND) THEN
440: raise FND_API.G_EXC_UNEXPECTED_ERROR;
441: END IF;
442: -- If all the above conditions are satisfied, update SR status
443: -- to 'Close' status. This status is derived fromt the profile
444: -- 'Service : Service Request Auto Close Status'
498: ( p_api_version =>2.0,
499: p_init_msg_list =>p_init_msg_list,
500: p_commit =>p_commit,
501: p_resp_id => fnd_global.RESP_ID ,
502: p_validation_level => fnd_api.g_valid_level_none,
503: x_return_status =>x_return_status,
504: x_msg_count =>x_msg_count,
505: x_msg_data =>x_msg_data,
506: p_request_id => p_service_request_id,
515: ( p_api_version => 2.0,
516: p_init_msg_list => p_init_msg_list,
517: p_commit => p_commit,
518: p_resp_id => l_resp_id,
519: p_validation_level => fnd_api.g_valid_level_none,
520: x_return_status => x_return_status,
521: x_msg_count => x_msg_count,
522: x_msg_data => x_msg_data,
523: p_request_id => p_service_request_id,
540: -- Set the required WF message attributes
541: -- Invoke WF_NOTIFICATION.Send() API to send an independent notificatiom
542: to the service request owner
543: */
544: IF(x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
545: OPEN l_cs_sr_get_empid_csr;
546: FETCH l_cs_sr_get_empid_csr INTO l_request_number, l_subject_owner_id;
547:
548: IF( l_cs_sr_get_empid_csr%NOTFOUND OR l_subject_owner_id IS NULL) THEN
586: avalue => l_owner_role);
587:
588:
589: END IF; /* If (l_owner_role IS NOT NULL) */
590: END IF; /* IF(x_return_status <> FND_API.G_RET_STS_SUCCESS) */
591: /* ROOPA - 12/02/2003 - End*/
592:
593:
594:
594:
595: END IF;
596:
597: EXCEPTION
598: WHEN FND_API.G_EXC_ERROR THEN
599: ROLLBACK TO SR_UPWARD_STATUS_PROPAGATION;
600: x_return_status := FND_API.G_RET_STS_ERROR;
601: FND_MSG_PUB.Count_And_Get
602: ( p_count => x_msg_count,
596:
597: EXCEPTION
598: WHEN FND_API.G_EXC_ERROR THEN
599: ROLLBACK TO SR_UPWARD_STATUS_PROPAGATION;
600: x_return_status := FND_API.G_RET_STS_ERROR;
601: FND_MSG_PUB.Count_And_Get
602: ( p_count => x_msg_count,
603: p_data => x_msg_data
604: );
601: FND_MSG_PUB.Count_And_Get
602: ( p_count => x_msg_count,
603: p_data => x_msg_data
604: );
605: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
606: ROLLBACK TO SR_UPWARD_STATUS_PROPAGATION;
607: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
608: FND_MSG_PUB.Count_And_Get
609: ( p_count => x_msg_count,
603: p_data => x_msg_data
604: );
605: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
606: ROLLBACK TO SR_UPWARD_STATUS_PROPAGATION;
607: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
608: FND_MSG_PUB.Count_And_Get
609: ( p_count => x_msg_count,
610: p_data => x_msg_data
611: );
610: p_data => x_msg_data
611: );
612: WHEN CS_DEPOT_ORDERS_EXIST THEN
613: ROLLBACK TO SR_UPWARD_STATUS_PROPAGATION;
614: x_return_status := FND_API.G_RET_STS_ERROR;
615: FND_MESSAGE.SET_NAME('CS','CS_SR_EAM_ORDERS_EXIST');
616: FND_MSG_PUB.ADD;
617: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
618: p_data => x_msg_data);
617: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
618: p_data => x_msg_data);
619: WHEN CS_EAM_ORDERS_EXIST THEN
620: ROLLBACK TO SR_UPWARD_STATUS_PROPAGATION;
621: x_return_status := FND_API.G_RET_STS_ERROR;
622: FND_MESSAGE.SET_NAME('CS','CS_SR_CMRO_ORDERS_EXIST');
623: FND_MSG_PUB.ADD;
624: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
625: p_data => x_msg_data);
624: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
625: p_data => x_msg_data);
626: WHEN CS_CMRO_ORDERS_EXIST THEN
627: ROLLBACK TO SR_UPWARD_STATUS_PROPAGATION;
628: x_return_status := FND_API.G_RET_STS_ERROR;
629: FND_MESSAGE.SET_NAME('CS','CS_SR_CMRO_ORDERS_EXIST');
630: FND_MSG_PUB.ADD;
631: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
632: p_data => x_msg_data);
631: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
632: p_data => x_msg_data);
633: WHEN CS_UNSUBMITTED_CHARGES_EXIST THEN
634: ROLLBACK TO SR_UPWARD_STATUS_PROPAGATION;
635: x_return_status := FND_API.G_RET_STS_ERROR;
636: FND_MESSAGE.SET_NAME('CS','CS_SR_OPEN_CHARGES_EXISTS');
637: FND_MSG_PUB.ADD;
638: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
639: p_data => x_msg_data);
638: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
639: p_data => x_msg_data);
640: WHEN CS_OPEN_TASKS_EXIST THEN
641: ROLLBACK TO SR_UPWARD_STATUS_PROPAGATION;
642: x_return_status := FND_API.G_RET_STS_ERROR;
643: FND_MESSAGE.SET_NAME('CS','CS_SR_OPEN_TASKS_EXIST');
644: FND_MSG_PUB.ADD;
645: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
646: p_data => x_msg_data);
645: FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
646: p_data => x_msg_data);
647: WHEN OTHERS THEN
648: ROLLBACK TO SR_UPWARD_STATUS_PROPAGATION;
649: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
650: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
651: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
652: END IF;
653: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
651: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
652: END IF;
653: FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
654: p_data => x_msg_data,
655: p_encoded => FND_API.G_FALSE );
656: END;
657:
658: END CS_SR_STATUS_PROPAGATION_PKG;