[Home] [Help]
PACKAGE BODY: APPS.CS_SR_STATUS_PROPAGATION_PKG
Source
1 PACKAGE BODY CS_SR_STATUS_PROPAGATION_PKG AS
2 /* $Header: csxsrspb.pls 120.5.12020000.2 2012/07/10 10:47:24 sshilpam ship $ */
3
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,
13 p_login_id IN NUMBER DEFAULT NULL,
14 x_return_status OUT NOCOPY VARCHAR2,
15 x_msg_count OUT NOCOPY NUMBER,
16 x_msg_data OUT NOCOPY VARCHAR2
17 ) IS
18
19
20 l_task_id NUMBER;
21 l_inc_id NUMBER;
22 l_api_name VARCHAR2(30) := 'Validate_SR_Closure';
23 l_return_status VARCHAR2(3);
24 l_func_ret_status BOOLEAN;
25 l_msg_count NUMBER;
26 l_msg_data VARCHAR2(2000);
27
28 CS_UNSUBMITTED_CHARGES_EXIST exception;
29 CS_OPEN_TASKS_EXIST exception;
30
31 CURSOR c_charge_lines IS
32 SELECT incident_id
33 FROM CS_ESTIMATE_DETAILS
34 WHERE incident_id = p_service_request_id
35 AND (charge_line_type = 'IN_PROGRESS'
36 OR (charge_line_type='ACTUAL'
37 AND interface_to_oe_flag = 'Y'
38 AND order_line_id is null));
39
40 CURSOR c_OpenTasks IS
41 SELECT a.task_id,
42 a.source_object_id ,
43 --b.closed_flag,
44 a.open_flag,
45 --b.completed_flag,
46 a.scheduled_start_date,
47 a.scheduled_end_date,
48 a.actual_start_date,
49 a.actual_end_date,
50 c.rule
51 FROM JTF_TASKS_B a,
52 --JTF_TASK_STATUSES_B b,
53 JTF_TASK_TYPES_B c
54 WHERE a.task_type_id = c.task_type_id
55 --a.task_status_id = b.task_status_id
56 AND a.source_object_type_code = 'SR'
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 */
66
67 OPEN c_charge_lines;
68 fetch c_charge_lines into l_inc_id;
69
70 IF(c_charge_lines%FOUND) THEN
71 raise CS_UNSUBMITTED_CHARGES_EXIST;
72 END IF;
73 CLOSE c_charge_lines;
74
75
76
77 For sr_tasks in c_OpenTasks LOOP
78
79 /* check if the child is :
80 *) Field Service task AND (if not, the FS api should return success)
81 */
82 IF(sr_tasks.rule = 'DISPATCH') THEN
83
84 -- Invoke Field Service API
85
86 l_func_ret_status := CSF_TASKS_PUB.task_is_closable
87 ( p_task_id => sr_tasks.task_id,
88 x_return_status => l_return_status,
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 */
98 --IF (nvl(sr_tasks.closed_flag,'N') <> 'Y') THEN
99 IF (nvl(sr_tasks.open_flag,'Y') <> 'N') THEN
100 IF (sr_tasks.actual_start_date is not null) THEN
101 IF (trunc(sr_tasks.actual_start_date) <= trunc(sysdate) -- bug 11847647: Added the = sign in the condition
102 AND trunc(nvl(sr_tasks.actual_end_date,sysdate+1)) > trunc(sysdate)) THEN -- bug 9653580: Removed the = sign in the condition
103 -- bug 11652506: Added +1 to sysdate
104 raise CS_OPEN_TASKS_EXIST;
105 END IF;
106 ELSE
107 IF (sr_tasks.scheduled_start_date is not null
108 AND (trunc(sr_tasks.scheduled_start_date) <= trunc(sysdate) -- bug 11847647: Added the = sign in the condition
109 AND trunc(nvl(sr_tasks.scheduled_end_date,sysdate+1)) > trunc(sysdate))) THEN -- bug 9653580: Removed the = sign in the condition
110 -- bug 11652506: Added +1 to sysdate
111 raise CS_OPEN_TASKS_EXIST;
112
113 END IF;
114 END IF;
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
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
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);
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);
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,
148 p_data => x_msg_data);
149 END;
150
151 -- -----------------------------------------------------------------------------
152 -- Modification History
153 -- Date Name Desc
154 -- -----------------------------------------------------------------------------
155 -- 05/10/05 smisra Fixed bug 4211144
156 -- changed the type of variable l_auto_Task_close_status from
157 -- varchar2(3) to Number. Added another variable
158 -- l_profile_value to get value of profile
159 -- CS_SR_TASK_AUTO_CLOSE_STATUS and set
160 -- l_auto_task_close_status using to_number of l_profile_value
161 -- The above change was needed to avoid pl/sql numberic value
162 -- Error. Called csf_tasks_pub.close_task using named natotion
163 -- 07/06/05 smisra Fixed bug 4453777
164 -- Changed the size of variable l_profile_value from
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,
174 p_user_id IN NUMBER,
175 p_resp_appl_id IN NUMBER,
176 p_login_id IN NUMBER DEFAULT NULL,
177 x_return_status OUT NOCOPY VARCHAR2,
178 x_msg_count OUT NOCOPY NUMBER,
179 x_msg_data OUT NOCOPY VARCHAR2
180 ) IS
181
182
183 CURSOR c_OpenTasks IS
184 SELECT task.task_id,
185 task.object_version_number,
186 --status.closed_flag,
187 task.open_flag,
188 type.rule
189 FROM JTF_TASKS_B task,
190 --JTF_TASK_STATUSES_B status,
191 JTF_TASK_TYPES_B type
192 WHERE task.source_object_type_code = 'SR'
193 AND task.source_object_id = p_service_request_id
194 AND task.task_type_id = type.task_type_id
195 --AND task.task_status_id = status.task_status_id
196 --AND nvl(status.closed_flag,'N') = 'N';
197 AND nvl(task.open_flag,'Y') = 'Y';
198
199 CURSOR c_sr_status IS
200 SELECT status.close_flag
201 FROM cs_incidents_all_B sr,
202 cs_incident_statuses_b status
203 WHERE sr.incident_id = p_service_request_id
204 AND sr.incident_status_id = status.incident_status_id
205 AND status.close_flag = 'Y';
206
207 l_api_name VARCHAR2(30) := 'Close_SR_Children';
208
209 l_status_flag varchar2(3);
210 l_profile_value varchar2(240);
211 l_auto_task_close_status NUMBER ;
212 l_return_status VARCHAR2(3);
213
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);
223
224 IF (l_profile_value is not null) THEN
225 -- Invoke the validation API if validation_required = Y
226 l_auto_task_close_status := to_number(l_profile_value);
227 IF (p_validation_required = 'Y') THEN
228 CS_SR_STATUS_PROPAGATION_PKG.VALIDATE_SR_CLOSURE(
229 p_api_version,
230 p_init_msg_list,
231 p_commit,
232 p_service_request_id,
233 p_user_id ,
234 p_resp_appl_id ,
235 p_login_id ,
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;
245
246 -- Continue with the rest of the flow if action_required = Y
247 if (p_action_required = 'Y') then
248
249 -- Get all open tasks
250 FOR sr_tasks in c_OpenTasks
251 LOOP
252
253 IF (sr_tasks.rule = 'DISPATCH') THEN
254 -- Invoke Field Service action API();
255 --dbms_output.put_line('Found a FS task ');
256 CSF_TASKS_PUB.close_task
257 ( p_api_version => 1.0
258 , p_init_msg_list => p_init_msg_list
259 , p_commit => p_commit
260 , p_task_id => sr_tasks.task_id
261 , x_return_status => l_return_status
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
271 /*
272 Call update_task() API to update the task status to the
273 status value held in the Service: Task Auto Close Status
274 profile option
275 */
276
277 --dbms_output.put_line('Found a NFS task ');
278
279 JTF_TASKS_PUB.update_task(
280 p_api_version => 1.0,
281 p_init_msg_list => p_init_msg_list,
282 p_commit => p_commit,
283 p_object_version_number => sr_tasks.object_version_number,
284 p_task_id => sr_tasks.task_id,
285 p_task_status_id => l_auto_task_close_status,
286 x_return_status => l_return_status,
287 x_msg_count => x_msg_count,
288 x_msg_data => x_msg_data
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;
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,
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 );
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,
323 p_data => x_msg_data);
324
325 END;
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,
335 p_resp_id IN NUMBER,
336 p_login_id IN NUMBER DEFAULT NULL,
337 x_return_status OUT NOCOPY VARCHAR2,
338 x_msg_count OUT NOCOPY NUMBER,
339 x_msg_data OUT NOCOPY VARCHAR2
340 ) IS
341
342 l_task_id NUMBER;
343 l_status_id NUMBER;
344 l_child_id NUMBER;
345 l_resp_id NUMBER;
346 l_interaction_id NUMBER;
347 l_object_version_number NUMBER;
348 l_close_date DATE;
349 l_sr_status NUMBER;
350 l_api_name VARCHAR2(30) := 'SR_Upward_Status_Propagation';
351 l_return_status VARCHAR2(3);
352 l_msg_count NUMBER;
353 l_msg_data VARCHAR2(2000);
354
355 CS_UNSUBMITTED_CHARGES_EXIST exception;
356 CS_OPEN_TASKS_EXIST exception;
357 CS_DEPOT_ORDERS_EXIST exception;
358 CS_CMRO_ORDERS_EXIST exception;
359 CS_EAM_ORDERS_EXIST exception;
360
361 CURSOR c_status(c_request_id number) IS
362 SELECT incident_status_id
363 FROM cs_incidents_all_b
364 WHERE incident_id = c_request_id;
365
366 CURSOR c_charge_lines IS
367 SELECT incident_id
368 FROM CS_ESTIMATE_DETAILS
369 WHERE incident_id = p_service_request_id
370 AND (charge_line_type = 'IN_PROGRESS'
371 OR (charge_line_type='ACTUAL'
372 AND interface_to_oe_flag = 'Y'
373 AND order_line_id is null));
374
375 CURSOR c_open_tasks IS
376 SELECT tasks.task_id
377 FROM JTF_TASKS_B tasks
378 --JTF_TASK_STATUSES_B status
379 WHERE tasks.source_object_type_code = 'SR'
380 AND tasks.source_object_id = p_service_request_id
381 --AND tasks.task_status_id = status.task_status_id
382 --AND nvl(status.closed_flag,'N') = 'N';
383 AND nvl(tasks.open_flag,'Y') = 'Y';
384
385 CURSOR c_depot_orders IS
386 SELECT REPAIR_LINE_ID
387 FROM csd_repairs
388 WHERE incident_id = p_service_request_id;
389
390 CURSOR c_eam_orders IS
391 SELECT wip_entity_id
392 FROM eam_wo_service_association
393 WHERE service_request_id = p_service_request_id;
394
395 CURSOR c_cmro_orders IS
396 SELECT ue.mr_header_id
397 FROM ahl_unit_effectivities_app_v sr_ue,
398 ahl_unit_effectivities_app_v ue,
399 ahl_ue_relationships uer
400 WHERE sr_ue.unit_effectivity_id = uer.ue_id
401 and uer.related_ue_id = ue.unit_effectivity_id
402 and sr_ue.cs_incident_id = p_service_request_id;
403 CURSOR c_obj_ver_num IS
404 Select object_version_number
405 FROM cs_incidents_all_b
406 WHERE incident_id = p_service_request_id;
407
408
409 /* ROOPA - 12/02/2003 - Begin*/
410 /* This block of code takes care of the exception path for upward status propagation */
411 CURSOR l_cs_sr_get_empid_csr IS
412 SELECT inc.incident_number, emp.source_id
413 FROM jtf_rs_resource_extns emp ,
414 cs_incidents_all_b inc
415 WHERE emp.resource_id = inc.incident_owner_id
416 AND inc.incident_id = p_service_request_id;
417
418 l_subject_owner_id NUMBER;
419 l_notification_id NUMBER;
420
421 l_owner_role VARCHAR2(100);
422 l_owner_name VARCHAR2(240);
423 l_request_number VARCHAR2(64);
424 /* ROOPA - 12/02/2003 - End */
425
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
435 );
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'
445 -- (Internal Name - CS_SR_AUTO_CLOSE_STATUS')
446
447 FND_PROFILE.GET('CS_SR_AUTO_CLOSE_STATUS',l_status_id);
448
449 IF (l_status_id IS NOT NULL and l_status_id <> l_sr_status) THEN
450 open c_depot_orders;
451 fetch c_depot_orders into l_child_id;
452 IF(c_depot_orders%FOUND) THEN
453 raise CS_DEPOT_ORDERS_EXIST;
454 END IF;
455
456 open c_eam_orders;
457 fetch c_eam_orders into l_child_id;
458 IF(c_eam_orders%FOUND) THEN
459 raise CS_EAM_ORDERS_EXIST;
460 END IF;
461
462 open c_cmro_orders;
463 fetch c_cmro_orders into l_child_id;
464 IF(c_cmro_orders%FOUND) THEN
465 raise CS_CMRO_ORDERS_EXIST;
466 END IF;
467
468 -- Check if child is a charge line with charge_line_type = 'Actual'
469 -- and OM interface flag = 'Y' and charge line is not yet submitted
470 -- to OM
471
472
473 open c_charge_lines;
474 fetch c_charge_lines into l_child_id;
475 IF(c_charge_lines%FOUND) THEN
476 raise CS_UNSUBMITTED_CHARGES_EXIST;
477 END IF;
478
479 open c_open_tasks;
480 fetch c_open_tasks into l_child_id;
481 IF(c_open_tasks%FOUND) THEN
482 raise CS_OPEN_TASKS_EXIST;
483 END IF;
484
485 -- IF (l_close_flag = 'Y') THEN
486 -- l_closed_date := sysdate;
487 -- ELSE
488 -- l_closed_date := NULL;
489 -- END IF;
490
491 open c_obj_ver_num;
492 fetch c_obj_ver_num into l_object_version_number;
493 close c_obj_ver_num;
494
495 l_resp_id := fnd_global.resp_id;
496
497 CS_ServiceRequest_PVT.Update_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,
507 p_object_version_number =>l_object_version_number,
508 p_status_id => l_status_id,
509 p_last_updated_by => p_user_id,
510 p_last_update_date => sysdate,
511 x_interaction_id => l_interaction_id
512 );
513
514 /* CS_ServiceRequest_PVT.Update_Status
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,
524 p_status_id => l_status_id,
525 -- p_closed_date => l_close_date,
526 p_object_version_number => l_object_version_number,
527 p_last_updated_by => p_user_id,
528 p_last_update_date => sysdate,
529 x_interaction_id => l_interaction_id);*/
530
531
532
533 /* ROOPA - 12/02/2003 - Begin*/
534 /* This block of code takes care of the exception path for upward status propagation */
535 /* Logic
536 ------
537 1) Get the current service request's owner
538 2) Get the WF role associated to the current service request's owner
539 3) If a WF role exists,
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
549 l_owner_role := NULL;
550 ELSE
551 -- Retrieve the role name for the request owner
552 CS_WORKFLOW_PUB.Get_Employee_Role (
553 p_api_version => 1.0,
554 p_return_status => l_return_status,
555 p_msg_count => l_msg_count,
556 p_msg_data => l_msg_data,
557 p_employee_id => l_subject_owner_id,
558 p_role_name => l_owner_role,
559 p_role_display_name => l_owner_name );
560 END IF;
561 CLOSE l_cs_sr_get_empid_csr;
562
563
564 If (l_owner_role IS NOT NULL) THEN
565
566 l_notification_id := WF_Notification.Send(
567 role => l_owner_role,
568 msg_type => 'SERVEREQ',
569 msg_name => 'CS_SR_NTFY_OWNER_UPDATE_FAILED');
570
571 WF_Notification.SetAttrText(
572 nid => l_notification_id,
573 aname => 'UPDATE_ERROR_DATA',
574 avalue => l_msg_data);
575
576
577 WF_Notification.SetAttrText(
578 nid => l_notification_id,
579 aname => 'UPDATE_REQUEST_NUMBER',
580 avalue => l_request_number);
581
582
583 WF_NOTIFICATION.SetAttrText(
584 nid => l_notification_id,
585 aname => '#FROM_ROLE',
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
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,
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 );
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);
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);
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);
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);
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);
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,
654 p_data => x_msg_data,
655 p_encoded => FND_API.G_FALSE );
656 END;
657
658 END CS_SR_STATUS_PROPAGATION_PKG;