1 PACKAGE BODY cs_sr_delete_util AS
2 /* $Header: csvsrdlb.pls 120.10 2008/01/24 10:51:53 nveerara ship $ */
3
4 --------------------------------------------------------------------------------
5 -- Package level definitions
6 --------------------------------------------------------------------------------
7 G_PKG_NAME CONSTANT VARCHAR2(30) := 'CS_SR_DELETE_UTIL';
8
9 TYPE t_number_tbl IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
10 TYPE t_date_tbl IS TABLE OF DATE INDEX BY BINARY_INTEGER;
11 TYPE t_string_tbl IS TABLE OF VARCHAR2(3) INDEX BY BINARY_INTEGER;
12 TYPE t_long_string_tbl IS TABLE OF VARCHAR2(256) INDEX BY BINARY_INTEGER;
13
14 PROCEDURE Delete_Contacts
15 (
16 p_api_version_number IN NUMBER := 1.0
17 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
18 , p_commit IN VARCHAR2 := FND_API.G_FALSE
19 , p_object_type IN VARCHAR2
20 , p_processing_set_id IN NUMBER
21 , x_return_status OUT NOCOPY VARCHAR2
22 , x_msg_count OUT NOCOPY NUMBER
23 , x_msg_data OUT NOCOPY VARCHAR2
24 );
25
26 PROCEDURE Delete_Audit_Records
27 (
28 p_api_version_number IN NUMBER := 1.0
29 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
30 , p_commit IN VARCHAR2 := FND_API.G_FALSE
31 , p_object_type IN VARCHAR2
32 , p_processing_set_id IN NUMBER
33 , x_return_status OUT NOCOPY VARCHAR2
34 , x_msg_count OUT NOCOPY NUMBER
35 , x_msg_data OUT NOCOPY VARCHAR2
36 );
37
38 PROCEDURE Delete_Sr_Attributes
39 (
40 p_api_version_number IN NUMBER := 1.0
41 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
42 , p_commit IN VARCHAR2 := FND_API.G_FALSE
43 , p_object_type IN VARCHAR2
44 , p_processing_set_id IN NUMBER
45 , x_return_status OUT NOCOPY VARCHAR2
46 , x_msg_count OUT NOCOPY NUMBER
47 , x_msg_data OUT NOCOPY VARCHAR2
48 );
49
50 PROCEDURE Create_Purgeaudit_Records
51 (
52 p_api_version_number IN NUMBER := 1.0
53 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
54 , p_commit IN VARCHAR2 := FND_API.G_FALSE
55 , p_purge_set_id IN NUMBER
56 , p_incident_id_tbl IN t_number_tbl
57 , p_incident_number_tbl IN t_long_string_tbl
58 , p_incident_type_id_tbl IN t_number_tbl
59 , p_customer_id_tbl IN t_number_tbl
60 , p_inv_organization_id_tbl IN t_number_tbl
61 , p_inventory_item_id_tbl IN t_number_tbl
62 , p_customer_product_id_tbl IN t_number_tbl
63 , p_inc_creation_date_tbl IN t_date_tbl
64 , p_inc_last_update_date_tbl IN t_date_tbl
65 , p_incident_id_tl_tbl IN t_number_tbl
66 , p_language_tbl IN t_string_tbl
67 , p_source_lang_tbl IN t_string_tbl
68 , p_summary_tbl IN t_long_string_tbl
69 , x_return_status OUT NOCOPY VARCHAR2
70 , x_msg_count OUT NOCOPY NUMBER
71 , x_msg_data OUT NOCOPY VARCHAR2
72 );
73
74 PROCEDURE Check_User_Termination;
75
76 --------------------------------------------------------------------------------
77
78
79
80 --------------------------------------------------------------------------------
81 -- Procedure Name : DELETE_SR_VALIDATIONS
82 --
83 -- Parameters (other than standard ones)
84 -- IN
85 -- p_object_type : Type of object for which this
86 -- procedure is being called. (Here it
87 -- will be 'SR')
88 -- p_processing_set_id : Id that helps the API in identifying
89 -- the set of SRs for which the child
90 -- objects have to be deleted.
91 -- p_purge_source_with_open_task : Indicates whether the SRs containing
92 -- OPEN non field service tasks should
93 -- be purged or not
94 -- Description
95 -- This API physically removes the SRs and all its child objects after
96 -- performing validations wherever required. This is a wrapper which
97 -- delegates the work to another helper API named
98 -- cs_sr_delete_util.delete_servicerequest
99 --
100 -- HISTORY
101 --
102 ----------------+------------+--------------------------------------------------
103 -- DATE | UPDATED BY | Change Description
104 ----------------+------------+--------------------------------------------------
105 -- 2-Aug_2005 | varnaray | Created
106 -- | |
107 ----------------+------------+--------------------------------------------------
108 /*#
109 * This API physically removes the SRs and all its child objects after
110 * performing validations wherever required. This is a wrapper which delegates
111 * the work to another helper API named cs_sr_delete_util.delete_servicerequest
112 * @param p_object_type Type of object for which this procedure is being called.
113 * (Here it will be 'SR')
114 * @param p_processing_set_id Id that helps the API in identifying the set of
115 * SRs for which the child objects have to be deleted.
116 * @param p_purge_source_with_open_task Indicates whether the SRs containing
117 * OPEN non field service tasks should be purged or not
118 * @rep:scope internal
119 * @rep:product CS
120 * @rep:displayname Service Request Delete Validations
121 */
122 PROCEDURE Delete_Sr_Validations
123 (
124 p_api_version_number IN NUMBER := 1.0
125 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
126 , p_commit IN VARCHAR2 := FND_API.G_FALSE
127 , p_object_type IN VARCHAR2
128 , p_processing_set_id IN NUMBER
129 , p_purge_source_with_open_task IN VARCHAR2
130 , x_return_status OUT NOCOPY VARCHAR2
131 , x_msg_count OUT NOCOPY NUMBER
132 , x_msg_data OUT NOCOPY VARCHAR2
133 )
134 IS
135 --------------------------------------------------------------------------------
136
137 L_API_VERSION CONSTANT NUMBER := 1.0;
138 L_API_NAME CONSTANT VARCHAR2(30) := 'DELETE_SR_VALIDATIONS';
139 L_API_NAME_FULL CONSTANT VARCHAR2(61) := G_PKG_NAME || '.' || L_API_NAME;
140 L_LOG_MODULE CONSTANT VARCHAR2(255) := 'cs.plsql.' || L_API_NAME_FULL || '.';
141
142 x_msg_index_out NUMBER;
143
144 BEGIN
145 x_return_status := FND_API.G_RET_STS_SUCCESS;
146
147 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
148 THEN
149 fnd_log.string
150 (
151 fnd_log.level_procedure
152 , L_LOG_MODULE || 'start'
153 , 'Inside ' || L_API_NAME_FULL || ', called with parameters below:'
154 );
155 fnd_log.string
156 (
157 fnd_log.level_procedure
158 , L_LOG_MODULE || 'param 1'
159 , 'p_api_version_number:' || p_api_version_number
160 );
161 fnd_log.string
162 (
163 fnd_log.level_procedure
164 , L_LOG_MODULE || 'param 2'
165 , 'p_init_msg_list:' || p_init_msg_list
166 );
167 fnd_log.string
168 (
169 fnd_log.level_procedure
170 , L_LOG_MODULE || 'param 3'
171 , 'p_commit:' || p_commit
172 );
173 fnd_log.string
174 (
175 fnd_log.level_procedure
176 , L_LOG_MODULE || 'param 4'
177 , 'p_purge_source_with_open_task:' || p_purge_source_with_open_task
178 );
179 fnd_log.string
180 (
181 fnd_log.level_procedure
182 , L_LOG_MODULE || 'param 5'
183 , 'p_object_type:' || p_object_type
184 );
185 fnd_log.string
186 (
187 fnd_log.level_procedure
188 , L_LOG_MODULE || 'param 6'
189 , 'p_processing_set_id:' || p_processing_set_id
190 );
191 END IF ;
192
193 IF NOT FND_API.Compatible_API_Call
194 (
195 L_API_VERSION
196 , p_api_version_number
197 , L_API_NAME
198 , G_PKG_NAME
199 )
200 THEN
201 FND_MSG_PUB.Count_And_Get
202 (
203 p_count => x_msg_count
204 , p_data => x_msg_data
205 );
206 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
207 END IF ;
208
209 IF FND_API.to_Boolean(p_init_msg_list)
210 THEN
211 FND_MSG_PUB.initialize;
212 END IF ;
213
214 ------------------------------------------------------------------------------
215 -- Parameter Validations:
216 ------------------------------------------------------------------------------
217
218 IF NVL(p_object_type, 'X') <> 'SR'
219 THEN
220 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
221 THEN
222 fnd_log.string
223 (
224 fnd_log.level_unexpected
225 , L_LOG_MODULE || 'object_type_invalid'
226 , 'p_object_type has to be SR.'
227 );
228 END IF ;
229
230 FND_MESSAGE.Set_Name('CS', 'CS_SR_PARAM_VALUE_ERROR');
231 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
232 FND_MESSAGE.Set_Token('PARAM', 'p_object_type');
233 FND_MESSAGE.Set_Token('CURRVAL', p_object_type);
234 FND_MSG_PUB.ADD;
235
236 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
237 END IF;
238
239 ---
240
241 IF p_processing_set_id IS NULL
242 THEN
243 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
244 THEN
245 fnd_log.string
246 (
247 fnd_log.level_unexpected
248 , L_LOG_MODULE || 'proc_set_id_invalid'
249 , 'p_processing_set_id should not be NULL.'
250 );
251 END IF ;
252
253 FND_MESSAGE.Set_Name('CS', 'CS_SR_PARAM_VALUE_ERROR');
254 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
255 FND_MESSAGE.Set_Token('PARAM', 'p_processing_set_id');
256 FND_MESSAGE.Set_Token('CURRVAL', NVL(to_char(p_processing_set_id),'NULL'));
257 FND_MSG_PUB.ADD;
258
259 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
260 END IF;
261
262 ---
263
264 IF p_purge_source_with_open_task IS NULL
265 OR NVL(p_purge_source_with_open_task, 'X') NOT IN ('Y', 'N')
266 THEN
267 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
268 THEN
269 fnd_log.string
270 (
271 fnd_log.level_unexpected
272 , L_LOG_MODULE || 'p_purge_source_with_open_task_invalid'
273 , 'p_purge_source_with_open_task value is invalid.'
274 );
275 END IF ;
276
277 FND_MESSAGE.Set_Name('CS', 'CS_SR_PARAM_VALUE_ERROR');
278 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
279 FND_MESSAGE.Set_Token('PARAM', 'p_purge_source_with_open_task');
280 FND_MESSAGE.Set_Token
281 (
282 'CURRVAL'
283 , NVL
284 (
285 p_purge_source_with_open_task
286 , 'NULL'
287 )
288 );
289 FND_MSG_PUB.ADD;
290
291 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
292 END IF;
293
294 ------------------------------------------------------------------------------
295 -- Actual Logic starts below:
296 ------------------------------------------------------------------------------
297
298 Check_User_Termination;
299
300 ---
301
302 IF x_return_status = FND_API.G_RET_STS_SUCCESS
303 THEN
304 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
305 THEN
306 fnd_log.string
307 (
308 fnd_log.level_statement
309 , L_LOG_MODULE || 'field_service_valid_start'
310 , 'calling the Field Service validation API '
311 || 'csf_maintain_grp.validate_fieldserviceobjects'
312 );
313 END IF ;
314
315 -- The following procedure call checks if the field service tasks linked to
316 -- an SR are deletable. The result of this validation is reflected in the
317 -- purge_status column of the global temp table.
318
319 CSF_MAINTAIN_GRP.Validate_FieldServiceObjects
320 (
321 p_api_version => '1.0'
322 , p_init_msg_list => FND_API.G_FALSE
323 , p_commit => FND_API.G_FALSE
324 , p_processing_set_id => p_processing_set_id
325 , p_object_type => p_object_type
326 , x_return_status => x_return_status
327 , x_msg_count => x_msg_count
328 , x_msg_data => x_msg_data
329 );
330
331 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
332 THEN
333 fnd_log.string
334 (
335 fnd_log.level_statement
336 , L_LOG_MODULE || 'field_service_valid_end'
337 , 'returned from Field Service validation API with status '
338 || x_return_status
339 );
340 END IF;
341 END IF;
342
343 ---
344
345 Check_User_Termination;
346
347 ---
348
349 IF x_return_status = FND_API.G_RET_STS_SUCCESS
350 THEN
351 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
352 THEN
353 fnd_log.string
354 (
355 fnd_log.level_statement
356 , L_LOG_MODULE || 'charges_valid_start'
357 , 'calling the Charges validation API '
358 || 'cs_charge_details_pvt.purge_chg_validations'
359 );
360 END IF ;
361
362 -- The following procedure call checks if the charge lines linked to
363 -- an SR are deletable. The result of this validation is reflected in the
364 -- purge_status column of the global temp table.
365
366 CS_CHARGE_DETAILS_PVT.Purge_Chg_Validations
367 (
368 p_api_version_number => '1.0'
369 , p_init_msg_list => FND_API.G_FALSE
370 , p_commit => FND_API.G_FALSE
371 , p_processing_set_id => p_processing_set_id
372 , p_object_type => p_object_type
373 , x_return_status => x_return_status
374 , x_msg_count => x_msg_count
375 , x_msg_data => x_msg_data
376 );
377
378 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
379 THEN
380 fnd_log.string
381 (
382 fnd_log.level_statement
383 , L_LOG_MODULE || 'charges_valid_end'
384 , 'returned from Charges validation API with status ' || x_return_status
385 );
386 END IF ;
387 END IF;
388
389 ---
390
391 Check_User_Termination;
392
393 ---
394
395 IF x_return_status = FND_API.G_RET_STS_SUCCESS
396 THEN
397 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
398 THEN
399 fnd_log.string
400 (
401 fnd_log.level_statement
402 , L_LOG_MODULE || 'task_valid_start'
403 , 'calling the Tasks validation API cac_task_purge_pub.validate_tasks'
404 );
405 END IF ;
406
407 -- The following procedure call checks if the non-field service Tasks linked
408 -- to an SR are deletable. The result of this validation is reflected in the
409 -- purge_status column of the global temp table.
410
411 CAC_TASK_PURGE_PUB.Validate_Tasks
412 (
413 p_api_version => '1.0'
414 , p_init_msg_list => FND_API.G_FALSE
415 , p_commit => FND_API.G_FALSE
416 , p_processing_set_id => p_processing_set_id
417 , p_object_type => p_object_type
418 , p_purge_source_with_open_task => p_purge_source_with_open_task
419 , x_return_status => x_return_status
420 , x_msg_count => x_msg_count
421 , x_msg_data => x_msg_data
422 );
423
424 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
425 THEN
426 fnd_log.string
427 (
428 fnd_log.level_statement
429 , L_LOG_MODULE || 'task_valid_end'
430 , 'returned from Tasks validation API with status ' || x_return_status
431 );
432 END IF ;
433 END IF;
434
435 ---
436
437 Check_User_Termination;
438
439 ---
440
441 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
442 THEN
443 fnd_log.string
444 (
445 fnd_log.level_procedure
446 , L_LOG_MODULE || 'end'
447 , 'Completed work in ' || L_API_NAME_FULL || ' with return status '
448 || x_return_status
449 );
450 END IF ;
451
452 EXCEPTION
453
454 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
455 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
456
457 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
458 THEN
459 fnd_log.string
460 (
461 fnd_log.level_unexpected
462 , L_LOG_MODULE || 'unexpected_error'
463 , 'Inside WHEN FND_API.G_EXC_UNEXPECTED_ERROR of ' || L_API_NAME_FULL
464 );
465
466 x_msg_count := FND_MSG_PUB.Count_Msg;
467
468 IF x_msg_count > 0
469 THEN
470 FOR
471 i IN 1..x_msg_count
472 LOOP
473 FND_MSG_PUB.Get
474 (
475 p_msg_index => i
476 , p_encoded => 'F'
477 , p_data => x_msg_data
478 , p_msg_index_out => x_msg_index_out
479 );
480 fnd_log.string
481 (
482 fnd_log.level_unexpected
483 , L_LOG_MODULE || 'unexpected_error'
484 , 'Error encountered is : ' || x_msg_data || ' [Index:'
485 || x_msg_index_out || ']'
486 );
487 END LOOP;
488 END IF ;
489 END IF ;
490
491 WHEN OTHERS THEN
492 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
493 FND_MESSAGE.Set_Name('CS', 'CS_SR_DEL_VAL_FAIL');
494 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
495 FND_MESSAGE.Set_Token('ERROR', SQLERRM);
496 FND_MSG_PUB.ADD;
497
498 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
499 THEN
500 fnd_log.string
501 (
502 fnd_log.level_unexpected
503 , L_LOG_MODULE || 'when_others'
504 , 'Inside WHEN OTHERS of ' || L_API_NAME_FULL || '. Oracle Error was:'
505 );
506 fnd_log.string
507 (
508 fnd_log.level_unexpected
509 , L_LOG_MODULE || 'when_others'
510 , SQLERRM
511 );
512 END IF ;
513 END Delete_Sr_Validations;
514
515 --------------------------------------------------------------------------------
516 -- Procedure Name : DELETE_SERVICEREQUEST
517 --
518 -- Parameters (other than standard ones)
519 -- IN
520 -- p_object_type : Type of object for which this procedure
521 -- is being called. (Here it will be 'SR')
522 -- p_processing_set_id : Id that helps the API in identifying the
523 -- set of SRs for which the child objects
524 -- have to be deleted.
525 -- p_purge_set_id : Id that helps identify a set of SRs that
526 -- were purged in a single batch. This can
527 -- be passed as NULL if the SR Delete API
528 -- is called separately. In that case, the
529 -- purge_set_id will be generated in this
530 -- procedure.
531 -- p_audit_required : Indicates if audit information has to be
532 -- generated after purging the service
533 -- requests
534 -- Description
535 -- This API physically removes the SRs and all its child objects after
536 -- performing validations wherever required. This procedure calls the
537 -- delete APIs for deleting child objects and directly deletes the rows
538 -- in the tables cs_incidents_all_b and tl.
539 -- This procedure also updates the staging table with the errors generated
540 -- while performing validations on SRs with all child objects so that
541 -- a log of these errors can be generated at the end of the purge process.
542 --
543 -- HISTORY
544 --
545 ----------------+------------+--------------------------------------------------
546 -- DATE | UPDATED BY | Change Description
547 ----------------+------------+--------------------------------------------------
548 -- 2-Aug_2005 | varnaray | Created
549 -- | |
550 ----------------+------------+--------------------------------------------------
551 /*#
552 * This API physically removes the SRs and all its child objects after
553 * performing validations wherever required. This procedure calls the delete
554 * APIs for deleting child objects and directly deletes the rows in the tables
555 * cs_incidents_all_b and tl. This procedure also updates the staging table
556 * with the errors generated while performing validations on SRs with all child
557 * objects so that a log of these errors can be generated at the end of the
558 * purge process.
559 * @param p_object_type Type of object for which this procedure is being
560 * called. (Here it will be 'SR')
561 * @param p_processing_set_id Id that helps the API in identifying the set of
562 * SRs for which the child objects have to be deleted.
563 * @param p_purge_set_id Id that helps identify a set of SRs that were purged
564 * in a single batch. This can be passed as NULL if the SR Delete API is called
565 * separately. In that case, the purge_set_id will be generated in this
566 * procedure.
567 * @param p_audit_required Indicates if audit information has to be generated
568 * after purging the service requests
569 * @rep:scope internal
570 * @rep:product CS
571 * @rep:displayname Delete Service Request Helper Procedure
572 */
573 PROCEDURE Delete_ServiceRequest
574 (
575 p_api_version_number IN NUMBER := 1.0
576 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
577 , p_commit IN VARCHAR2 := FND_API.G_FALSE
578 , p_purge_set_id IN NUMBER
579 , p_processing_set_id IN NUMBER
580 , p_object_type IN VARCHAR2
581 , p_audit_required IN VARCHAR2
582 , x_return_status OUT NOCOPY VARCHAR2
583 , x_msg_count OUT NOCOPY NUMBER
584 , x_msg_data OUT NOCOPY VARCHAR2
585 )
586 IS
587 --------------------------------------------------------------------------------
588 L_API_VERSION CONSTANT NUMBER := 1.0;
589 L_API_NAME CONSTANT VARCHAR2 (30) := 'DELETE_SERVICEREQUEST';
590 L_API_NAME_FULL CONSTANT VARCHAR2 (61) := G_PKG_NAME || '.' || L_API_NAME;
591 L_LOG_MODULE CONSTANT VARCHAR2(255) := 'cs.plsql.' || L_API_NAME_FULL || '.';
592
593 x_msg_index_out NUMBER;
594
595 l_purge_set_id NUMBER := p_purge_set_id;
596 l_row_count NUMBER;
597
598 l_incident_id_tbl t_number_tbl;
599 l_incident_number_tbl t_long_string_tbl;
600 l_incident_type_id_tbl t_number_tbl;
601 l_customer_id_tbl t_number_tbl;
602 l_inv_organization_id_tbl t_number_tbl;
603 l_inventory_item_id_tbl t_number_tbl;
604 l_customer_product_id_tbl t_number_tbl;
605 l_inc_creation_date_tbl t_date_tbl;
606 l_inc_last_update_date_tbl t_date_tbl;
607 l_incident_id_status_tbl t_number_tbl;
608 l_purge_error_message_tbl t_long_string_tbl;
609 l_incident_id_tl_tbl t_number_tbl;
610 l_language_tbl t_string_tbl;
611 l_source_lang_tbl t_string_tbl;
612 l_summary_tbl t_long_string_tbl;
613
614 BEGIN
615 x_return_status := FND_API.G_RET_STS_SUCCESS;
616
617 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
618 THEN
619 fnd_log.string
620 (
621 fnd_log.level_procedure
622 , L_LOG_MODULE || 'start'
623 , 'Inside ' || L_API_NAME_FULL || ', called with parameters below:'
624 );
625 fnd_log.string
626 (
627 fnd_log.level_procedure
628 , L_LOG_MODULE || 'param 1'
629 , 'p_api_version_number:' || p_api_version_number
630 );
631 fnd_log.string
632 (
633 fnd_log.level_procedure
634 , L_LOG_MODULE || 'param 2'
635 , 'p_init_msg_list:' || p_init_msg_list
636 );
637 fnd_log.string
638 (
639 fnd_log.level_procedure
640 , L_LOG_MODULE || 'param 3'
641 , 'p_commit:' || p_commit
642 );
643 fnd_log.string
644 (
645 fnd_log.level_procedure
646 , L_LOG_MODULE || 'param 4'
647 , 'p_object_type:' || p_object_type
648 );
649 fnd_log.string
650 (
651 fnd_log.level_procedure
652 , L_LOG_MODULE || 'param 5'
653 , 'p_processing_set_id:' || p_processing_set_id
654 );
655 fnd_log.string
656 (
657 fnd_log.level_procedure
658 , L_LOG_MODULE || 'param 6'
659 , 'p_purge_set_id:' || p_purge_set_id
660 );
661 fnd_log.string
662 (
663 fnd_log.level_procedure
664 , L_LOG_MODULE || 'param 7'
665 , 'p_audit_required:' || p_audit_required
666 );
667 END IF ;
668
669 IF NOT FND_API.Compatible_API_Call
670 (
671 L_API_VERSION
672 , p_api_version_number
673 , L_API_NAME
674 , G_PKG_NAME
675 )
676 THEN
677 FND_MSG_PUB.Count_And_Get
678 (
679 p_count => x_msg_count
680 , p_data => x_msg_data
681 );
682 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
683 END IF ;
684
685 IF
686 FND_API.to_Boolean(p_init_msg_list)
687 THEN
688 FND_MSG_PUB.initialize;
689 END IF ;
690
691 ------------------------------------------------------------------------------
692 -- Parameter Validations:
693 ------------------------------------------------------------------------------
694
695 IF p_audit_required IS NULL
696 OR NVL(p_audit_required, 'X') NOT IN ('Y', 'N')
697 THEN
698 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
699 THEN
700 fnd_log.string
701 (
702 fnd_log.level_unexpected
703 , L_LOG_MODULE || 'audit_required_invalid'
704 , 'p_audit_required has to be Y/N.'
705 );
706 END IF ;
707
708 FND_MESSAGE.Set_Name('CS', 'CS_SR_PARAM_VALUE_ERROR');
709 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
710 FND_MESSAGE.Set_Token('PARAM', 'p_audit_required');
711 FND_MESSAGE.Set_Token('CURRVAL', p_audit_required);
712 FND_MSG_PUB.ADD;
713
714 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
715 END IF;
716
717 ---
718
719 IF NVL(p_object_type, 'X') <> 'SR'
720 THEN
721 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
722 THEN
723 fnd_log.string
724 (
725 fnd_log.level_unexpected
726 , L_LOG_MODULE || 'object_type_invalid'
727 , 'p_object_type has to be SR.'
728 );
729 END IF ;
730
731 FND_MESSAGE.Set_Name('CS', 'CS_SR_PARAM_VALUE_ERROR');
732 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
733 FND_MESSAGE.Set_Token('PARAM', 'p_object_type');
734 FND_MESSAGE.Set_Token('CURRVAL', p_object_type);
735 FND_MSG_PUB.ADD;
736
737 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
738 END IF;
739
740 ---
741
742 IF p_processing_set_id IS NULL
743 THEN
744 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
745 THEN
746 fnd_log.string
747 (
748 fnd_log.level_unexpected
749 , L_LOG_MODULE || 'proc_set_id_invalid'
750 , 'Processing Set Id should not be NULL.'
751 );
752 END IF ;
753
754 FND_MESSAGE.Set_Name('CS', 'CS_SR_PARAM_VALUE_ERROR');
755 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
756 FND_MESSAGE.Set_Token('PARAM', 'p_processing_set_id');
757 FND_MESSAGE.Set_Token('CURRVAL', NVL(to_char(p_processing_set_id),'NULL'));
758 FND_MSG_PUB.ADD;
759
760 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
761 END IF;
762
763 ------------------------------------------------------------------------------
764 -- Actual Logic starts below:
765 ------------------------------------------------------------------------------
766
767 -- If the purge_set_id is null it means that this code is
768 -- not called from the purge concurrent program but from
769 -- some other consumer of the delete API. Hence generating
770 -- a new purge_set_id before deleting the SR and child data.
771
772 IF l_purge_set_id IS NULL
773 THEN
774 SELECT
775 cs_incidents_purge_set_s.NEXTVAL
776 INTO
777 l_purge_set_id
778 FROM
779 dual
780 WHERE
781 ROWNUM = 1;
782
783 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
784 THEN
785 fnd_log.string
786 (
787 fnd_log.level_statement
788 , L_LOG_MODULE || 'gen_purge_set_id'
789 , 'Generated a new purge_set_id ' || l_purge_set_id
790 );
791 END IF ;
792 END IF;
793
794 ---
795
796 Check_User_Termination;
797
798 ---
799
800 IF x_return_status = FND_API.G_RET_STS_SUCCESS
801 THEN
802 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
803 THEN
804 fnd_log.string
805 (
806 fnd_log.level_statement
807 , L_LOG_MODULE || 'field_service_purge_start'
808 , 'calling the Field Service purge API '
809 || 'csf_maintain_grp.purge_fieldserviceobjects'
810 );
811 END IF ;
812
813 -- This procedure deletes all the field service tasks that are related to
814 -- SRs that are available in the global temp table with purge status NULL.
815
816 CSF_MAINTAIN_GRP.Purge_FieldServiceObjects
817 (
818 p_api_version => '1.0'
819 , p_init_msg_list => FND_API.G_FALSE
820 , p_commit => FND_API.G_FALSE
821 , p_processing_set_id => p_processing_set_id
822 , p_object_type => p_object_type
823 , x_return_status => x_return_status
824 , x_msg_count => x_msg_count
825 , x_msg_data => x_msg_data
826 );
827
828 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
829 THEN
830 fnd_log.string
831 (
832 fnd_log.level_statement
833 , L_LOG_MODULE || 'field_service_purge_end'
834 , 'returned from Field Service purge API with status '
835 || x_return_status
836 );
837 END IF ;
838 END IF;
839
840 ---
841
842 Check_User_Termination;
843
844 ---
845
846 IF x_return_status = FND_API.G_RET_STS_SUCCESS
847 THEN
848 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
849 THEN
850 fnd_log.string
851 (
852 fnd_log.level_statement
853 , L_LOG_MODULE || 'charges_purge_start'
854 , 'calling the Charges purge API '
855 || 'cs_charge_details_pvt.purge_charges'
856 );
857 END IF ;
858
859 -- This procedure deletes all the charge lines that are related to
860 -- SRs that are available in the global temp table with purge status NULL.
861
862 CS_CHARGE_DETAILS_PVT.Purge_Charges
863 (
864 p_api_version_number => '1.0'
865 , p_init_msg_list => FND_API.G_FALSE
866 , p_commit => FND_API.G_FALSE
867 , p_processing_set_id => p_processing_set_id
868 , p_object_type => p_object_type
869 , x_return_status => x_return_status
870 , x_msg_count => x_msg_count
871 , x_msg_data => x_msg_data
872 );
873
874 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
875 THEN
876 fnd_log.string
877 (
878 fnd_log.level_statement
879 , L_LOG_MODULE || 'charges_purge_end'
880 , 'returned from Charges purge API with status '
881 || x_return_status
882 );
883 END IF ;
884 END IF;
885
886 ---
887
888 Check_User_Termination;
889
890 ---
891
892
893 --Added for 12.1 Service Costing
894
895 IF x_return_status = FND_API.G_RET_STS_SUCCESS
896 THEN
897 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
898 THEN
899 fnd_log.string
900 (
901 fnd_log.level_statement
902 , L_LOG_MODULE || 'cost_purge_start'
903 , 'calling the Cost purge API '
904 || 'cs_cost_details_pvt.purge_cost'
905 );
906 END IF ;
907
908
909
910
911 -- This procedure deletes all the charge lines that are related to
912 -- SRs that are available in the global temp table with purge status NULL.
913
914 CS_COST_DETAILS_PVT.Purge_Cost
915 (
916 p_api_version_number => '1.0'
917 , p_init_msg_list => FND_API.G_FALSE
918 , p_commit => FND_API.G_FALSE
919 , p_processing_set_id => p_processing_set_id
920 , p_object_type => p_object_type
921 , x_return_status => x_return_status
922 , x_msg_count => x_msg_count
923 , x_msg_data => x_msg_data
924 );
925
926
927 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
928 THEN
929 fnd_log.string
930 (
931 fnd_log.level_statement
932 , L_LOG_MODULE || 'cost_purge_end'
933 , 'returned from cost purge API with status '
934 || x_return_status
935 );
936 END IF ;
937 END IF;
938
939
940
941
942
943
944 ---
945
946 Check_User_Termination;
947
948 ---
949
950
951 IF x_return_status = FND_API.G_RET_STS_SUCCESS
952 THEN
953 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
954 THEN
955 fnd_log.string
956 (
957 fnd_log.level_statement
958 , L_LOG_MODULE || 'messages_purge_start'
959 , 'calling the Messages purge API cs_messages_pkg.delete_message'
960 );
961 END IF ;
962
963 -- This procedure deletes all the messages that are related to
964 -- SRs that are available in the global temp table with purge status NULL.
965
966 CS_MESSAGES_PKG.Delete_Message
967 (
968 p_api_version_number => '1.0'
969 , p_init_msg_list => FND_API.G_FALSE
970 , p_commit => FND_API.G_FALSE
971 , p_processing_set_id => p_processing_set_id
972 , p_object_type => p_object_type
973 , x_return_status => x_return_status
974 , x_msg_count => x_msg_count
975 , x_msg_data => x_msg_data
976 );
977
978 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
979 THEN
980 fnd_log.string
981 (
982 fnd_log.level_statement
983 , L_LOG_MODULE || 'messages_purge_end'
984 , 'returned from Messages purge API with status '
985 || x_return_status
986 );
987 END IF ;
988 END IF;
989
990 ---
991
992 Check_User_Termination;
993
994 ---
995
996 IF x_return_status = FND_API.G_RET_STS_SUCCESS
997 THEN
998 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
999 THEN
1000 fnd_log.string
1001 (
1002 fnd_log.level_statement
1003 , L_LOG_MODULE || 'contacts_purge_start'
1004 , 'calling the Contacts purge API '
1005 || 'cs_sr_delete_util.delete_contacts'
1006 );
1007 END IF ;
1008
1009 -- This procedure deletes all the contacts related to SRs present in the
1010 -- global temp table with purge status NULL, and also the contact audit
1011 -- information, party role extended attributes and party role extended
1012 -- attributes audit information related to the contacts.
1013
1014 CS_SR_DELETE_UTIL.Delete_Contacts
1015 (
1016 p_api_version_number => '1.0'
1017 , p_init_msg_list => FND_API.G_FALSE
1018 , p_commit => FND_API.G_FALSE
1019 , p_processing_set_id => p_processing_set_id
1020 , p_object_type => p_object_type
1021 , x_return_status => x_return_status
1022 , x_msg_count => x_msg_count
1023 , x_msg_data => x_msg_data
1024 );
1025
1026 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1027 THEN
1028 fnd_log.string
1029 (
1030 fnd_log.level_statement
1031 , L_LOG_MODULE || 'contacts_purge_end'
1032 , 'returned from Contacts purge API with status '
1033 || x_return_status
1034 );
1035 END IF ;
1036 END IF;
1037
1038 ---
1039
1040 Check_User_Termination;
1041
1042 ---
1043
1044 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1045 THEN
1046 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1047 THEN
1048 fnd_log.string
1049 (
1050 fnd_log.level_statement
1051 , L_LOG_MODULE || 'sr_attr_purge_start'
1052 , 'calling the SR Extended Attribs purge API '
1053 || 'cs_sr_delete_util.delete_sr_attributes'
1054 );
1055 END IF ;
1056
1057 -- This procedure deletes all the extended attributes related to SRs
1058 -- present in the global temp table with purge status NULL and also the
1059 -- audit information related to the extended attributes.
1060
1061 CS_SR_DELETE_UTIL.Delete_Sr_Attributes
1062 (
1063 p_api_version_number => '1.0'
1064 , p_init_msg_list => FND_API.G_FALSE
1065 , p_commit => FND_API.G_FALSE
1066 , p_processing_set_id => p_processing_set_id
1067 , p_object_type => p_object_type
1068 , x_return_status => x_return_status
1069 , x_msg_count => x_msg_count
1070 , x_msg_data => x_msg_data
1071 );
1072
1073 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1074 THEN
1075 fnd_log.string
1076 (
1077 fnd_log.level_statement
1078 , L_LOG_MODULE || 'sr_attr_purge_end'
1079 , 'returned from SR Extended Attribs purge API with status '
1080 || x_return_status
1081 );
1082 END IF ;
1083 END IF;
1084
1085 ---
1086
1087 Check_User_Termination;
1088
1089 ---
1090
1091 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1092 THEN
1093 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1094 THEN
1095 fnd_log.string
1096 (
1097 fnd_log.level_statement
1098 , L_LOG_MODULE || 'sr_audit_purge_start'
1099 , 'calling the SR Audit purge API '
1100 || 'cs_sr_delete_util.delete_audit_records'
1101 );
1102 END IF ;
1103
1104 -- This procedure deletes all the audit information related to SRs
1105 -- present in the global temp table with purge status NULL
1106
1107 CS_SR_DELETE_UTIL.Delete_Audit_Records
1108 (
1109 p_api_version_number => '1.0'
1110 , p_init_msg_list => FND_API.G_FALSE
1111 , p_commit => FND_API.G_FALSE
1112 , p_processing_set_id => p_processing_set_id
1113 , p_object_type => p_object_type
1114 , x_return_status => x_return_status
1115 , x_msg_count => x_msg_count
1116 , x_msg_data => x_msg_data
1117 );
1118
1119 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1120 THEN
1121 fnd_log.string
1122 (
1123 fnd_log.level_statement
1124 , L_LOG_MODULE || 'sr_audit_purge_end'
1125 , 'returned from SR Audit purge API with status '
1126 || x_return_status
1127 );
1128 END IF ;
1129 END IF;
1130
1131 ---
1132
1133 Check_User_Termination;
1134
1135 ---
1136
1137 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1138 THEN
1139 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1140 THEN
1141 fnd_log.string
1142 (
1143 fnd_log.level_statement
1144 , L_LOG_MODULE || 'sr_link_purge_start'
1145 , 'calling the SR Links purge API '
1146 || 'cs_incidentlinks_pvt.delete_incidentlink'
1147 );
1148 END IF ;
1149
1150 -- This procedure deletes all the SR links related to SRs present in the
1151 -- global temp table with purge status NULL
1152
1153 CS_INCIDENTLINKS_PVT.Delete_IncidentLink
1154 (
1155 p_api_version_number => '1.0'
1156 , p_init_msg_list => FND_API.G_FALSE
1157 , p_commit => FND_API.G_FALSE
1158 , p_processing_set_id => p_processing_set_id
1159 , p_object_type => p_object_type
1160 , x_return_status => x_return_status
1161 , x_msg_count => x_msg_count
1162 , x_msg_data => x_msg_data
1163 );
1164
1165 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1166 THEN
1167 fnd_log.string
1168 (
1169 fnd_log.level_statement
1170 , L_LOG_MODULE || 'sr_link_purge_end'
1171 , 'returned from SR Links purge API with status '
1172 || x_return_status
1173 );
1174 END IF ;
1175 END IF;
1176
1177 ---
1178
1179 Check_User_Termination;
1180
1181 ---
1182
1183 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1184 THEN
1185 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1186 THEN
1187 fnd_log.string
1188 (
1189 fnd_log.level_statement
1190 , L_LOG_MODULE || 'km_link_purge_start'
1191 , 'calling the KM Links purge API '
1192 || 'cs_knowledge_grp.purge_knowledge_links'
1193 );
1194 END IF ;
1195
1196 -- This procedure deletes all the KM solution links related to SRs
1197 -- present in the global temp table with purge status NULL
1198
1199 CS_KNOWLEDGE_GRP.Purge_Knowledge_Links
1200 (
1201 p_api_version => '1.0'
1202 , p_init_msg_list => FND_API.G_FALSE
1203 , p_commit => FND_API.G_FALSE
1204 , p_processing_set_id => p_processing_set_id
1205 , p_object_type => p_object_type
1206 , x_return_status => x_return_status
1207 , x_msg_count => x_msg_count
1208 , x_msg_data => x_msg_data
1209 );
1210
1211 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1212 THEN
1213 fnd_log.string
1214 (
1215 fnd_log.level_statement
1216 , L_LOG_MODULE || 'km_link_purge_end'
1217 , 'returned from KM Links purge API with status '
1218 || x_return_status
1219 );
1220 END IF ;
1221 END IF;
1222
1223 ---
1224
1225 Check_User_Termination;
1226
1227 ---
1228
1229 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1230 THEN
1231 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1232 THEN
1233 fnd_log.string
1234 (
1235 fnd_log.level_statement
1236 , L_LOG_MODULE || 'notes_purge_start'
1237 , 'calling the Notes purge API cac_note_purge_pub.purge_notes'
1238 );
1239 END IF ;
1240
1241 -- This procedure deletes all the notes related to SRs present in the
1242 -- global temp table with purge status NULL
1243
1244 CAC_NOTE_PURGE_PUB.Purge_Notes
1245 (
1246 p_api_version => '1.0'
1247 , p_init_msg_list => FND_API.G_FALSE
1248 , p_commit => FND_API.G_FALSE
1249 , p_processing_set_id => p_processing_set_id
1250 , p_object_type => p_object_type
1251 , x_return_status => x_return_status
1252 , x_msg_count => x_msg_count
1253 , x_msg_data => x_msg_data
1254 );
1255
1256 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1257 THEN
1258 fnd_log.string
1259 (
1260 fnd_log.level_statement
1261 , L_LOG_MODULE || 'notes_purge_end'
1262 , 'returned from Notes purge API with status ' || x_return_status
1263 );
1264 END IF ;
1265 END IF;
1266
1267 ---
1268
1269 Check_User_Termination;
1270
1271 ---
1272
1273 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1274 THEN
1275 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1276 THEN
1277 fnd_log.string
1278 (
1279 fnd_log.level_statement
1280 , L_LOG_MODULE || 'task_purge_start'
1281 , 'calling the Tasks purge API cac_task_purge_pub.purge_task'
1282 );
1283 END IF ;
1284
1285 -- This procedure deletes all the non-field service tasks related
1286 -- to SRs present in the global temp table with purge status NULL
1287
1288 CAC_TASK_PURGE_PUB.Purge_Tasks
1289 (
1290 p_api_version => '1.0'
1291 , p_init_msg_list => FND_API.G_FALSE
1292 , p_commit => FND_API.G_FALSE
1293 , p_processing_set_id => p_processing_set_id
1294 , p_object_type => p_object_type
1295 , x_return_status => x_return_status
1296 , x_msg_count => x_msg_count
1297 , x_msg_data => x_msg_data
1298 );
1299
1300 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1301 THEN
1302 fnd_log.string
1303 (
1304 fnd_log.level_statement
1305 , L_LOG_MODULE || 'task_purge_end'
1306 , 'returned from Tasks purge API with status ' || x_return_status
1307 );
1308 END IF ;
1309 END IF;
1310
1311 ---
1312
1313 Check_User_Termination;
1314
1315 ---
1316
1317 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1318 THEN
1319 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1320 THEN
1321 fnd_log.string
1322 (
1323 fnd_log.level_statement
1324 , L_LOG_MODULE || 'work_item_purge_start'
1325 , 'calling the UWQ Work Items purge API ieu_wr_pub.purge_wr_item'
1326 );
1327 END IF ;
1328
1329 -- This procedure deletes all the UWQ work items related
1330 -- to SRs present in the global temp table with purge status NULL
1331
1332 IEU_WR_PUB.Purge_Wr_Item
1333 (
1334 p_api_version_number => '1.0'
1335 , p_init_msg_list => FND_API.G_FALSE
1336 , p_commit => FND_API.G_FALSE
1337 , p_processing_set_id => p_processing_set_id
1338 , p_object_type => p_object_type
1339 , x_return_status => x_return_status
1340 , x_msg_count => x_msg_count
1341 , x_msg_data => x_msg_data
1342 );
1343
1344 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1345 THEN
1346 fnd_log.string
1347 (
1348 fnd_log.level_statement
1349 , L_LOG_MODULE || 'work_item_purge_end'
1350 , 'returned from UWQ Work Items purge API with status '
1351 || x_return_status
1352 );
1353 END IF ;
1354 END IF;
1355
1356 ---
1357
1358 Check_User_Termination;
1359
1360 ---
1361
1362 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1363 THEN
1364 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1365 THEN
1366 fnd_log.string
1367 (
1368 fnd_log.level_statement
1369 , L_LOG_MODULE || 'interaction_purge_start'
1370 , 'calling the Interactions purge API '
1371 || 'jtf_ih_purge.p_delete_interactions'
1372 );
1373 END IF ;
1374
1375 -- This procedure deletes all the interactions and activities related
1376 -- to SRs present in the global temp table with purge status NULL
1377
1378 JTF_IH_PURGE.P_Delete_Interactions
1379 (
1380 p_api_version => '1.0'
1381 , p_init_msg_list => FND_API.G_FALSE
1382 , p_commit => FND_API.G_FALSE
1383 , p_processing_set_id => p_processing_set_id
1384 , p_object_type => p_object_type
1385 , x_return_status => x_return_status
1386 , x_msg_count => x_msg_count
1387 , x_msg_data => x_msg_data
1388 );
1389
1390 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1391 THEN
1392 fnd_log.string
1393 (
1394 fnd_log.level_statement
1395 , L_LOG_MODULE || 'interaction_purge_end'
1396 , 'returned from Interactions purge API with status '
1397 || x_return_status
1398 );
1399 END IF ;
1400 END IF;
1401
1402 ---
1403
1404 Check_User_Termination;
1405
1406 ---
1407
1408 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1409 THEN
1410 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1411 THEN
1412 fnd_log.string
1413 (
1414 fnd_log.level_statement
1415 , L_LOG_MODULE || 'get_srid_for_attach_del_start'
1416 , 'Collecting all the Incident_ids into a pl/sql table to '
1417 || 'delete attachments, one at a time'
1418 );
1419 END IF ;
1420
1421 -- The following query collects all the incident ids for which attachments
1422 -- need to be deleted, into a pl/sql table since, in R12, FND does not have
1423 -- an API that can delete attachments in bulk.
1424
1425 SELECT
1426 object_id
1427 BULK COLLECT INTO
1428 l_incident_id_tbl
1429 FROM
1430 jtf_object_purge_param_tmp
1431 WHERE
1432 object_type = 'SR'
1433 AND p_processing_set_id = processing_set_id
1434 AND NVL(purge_status, 'S') = 'S';
1435
1436 l_row_count := SQL%ROWCOUNT;
1437
1438 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1439 THEN
1440 fnd_log.string
1441 (
1442 fnd_log.level_statement
1443 , L_LOG_MODULE || 'get_srid_for_attach_del_end'
1444 , 'After collecting all the Incident_ids into a pl/sql table '
1445 || l_row_count || ' rows'
1446 );
1447 END IF ;
1448 END IF;
1449
1450 ---
1451
1452 Check_User_Termination;
1453
1454 ---
1455
1456 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1457 THEN
1458 IF l_incident_id_tbl.COUNT > 0
1459 THEN
1460 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1461 THEN
1462 fnd_log.string
1463 (
1464 fnd_log.level_statement
1465 , L_LOG_MODULE || 'attachment_purge_start'
1466 , 'calling the Attachments purge API '
1467 || 'fnd_attached_documents2_pkg.delete_attachments'
1468 );
1469 END IF ;
1470
1471 -- This procedure deletes all the attachments related
1472 -- to SRs present in the global temp table with purge status NULL
1473 -- NOTE: THIS PROCEDURE DELETES ATTACHMENTS ONE AT A TIME.
1474
1475 FOR j in l_incident_id_tbl.FIRST..l_incident_id_tbl.LAST
1476 LOOP
1477 FND_ATTACHED_DOCUMENTS2_PKG.Delete_Attachments
1478 (
1479 x_entity_name => 'CS_INCIDENTS'
1480 , x_pk1_value => l_incident_id_tbl(j)
1481 , x_pk2_value => null
1482 , x_pk3_value => null
1483 , x_pk4_value => null
1484 , x_pk5_value => null
1485 , x_delete_document_flag => 'Y'
1486 , x_automatically_added_flag => null
1487 );
1488 END LOOP;
1489
1490 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1491 THEN
1492 fnd_log.string
1493 (
1494 fnd_log.level_statement
1495 , L_LOG_MODULE || 'attachment_purge_end'
1496 , 'returned from Attachments purge API with status '
1497 || x_return_status
1498 );
1499 END IF ;
1500 ELSIF l_incident_id_tbl.COUNT <= 0
1501 THEN
1502 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1503 THEN
1504 fnd_log.string
1505 (
1506 fnd_log.level_statement
1507 , L_LOG_MODULE || 'attachment_purge_err'
1508 , 'while calling Attachments purge API l_incident_id_tbl has '
1509 || l_incident_id_tbl.COUNT || ' rows'
1510 );
1511 END IF ;
1512 END IF;
1513 END IF;
1514
1515 ---
1516
1517 Check_User_Termination;
1518
1519 ---
1520
1521 IF p_audit_required = 'Y'
1522 AND x_return_status = FND_API.G_RET_STS_SUCCESS
1523
1524 -- If audit information is required as per profile option
1525 -- CS_SR_PURGE_AUDIT_REQUIRED, then proceed further
1526
1527 THEN
1528 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1529 THEN
1530 fnd_log.string
1531 (
1532 fnd_log.level_statement
1533 , L_LOG_MODULE || 'get_srbinfo_for_audit_start'
1534 , 'Collecting information that has to be written to the '
1535 || 'CS_INCIDENTS_PURGE_AUDIT_B table'
1536 );
1537 END IF ;
1538
1539 -- Collect all the information from the cs_incidents_all_b
1540 -- table that needs to be entered in the purge audit table
1541
1542 SELECT
1543 incident_number
1544 , incident_type_id
1545 , customer_id
1546 , inv_organization_id
1547 , inventory_item_id
1548 , customer_product_id
1549 , creation_date
1550 , last_update_date
1551 BULK COLLECT INTO
1552 l_incident_number_tbl
1553 , l_incident_type_id_tbl
1554 , l_customer_id_tbl
1555 , l_inv_organization_id_tbl
1556 , l_inventory_item_id_tbl
1557 , l_customer_product_id_tbl
1558 , l_inc_creation_date_tbl
1559 , l_inc_last_update_date_tbl
1560 FROM
1561 cs_incidents_all_b c
1562 , jtf_object_purge_param_tmp j
1563 WHERE
1564 j.object_type = 'SR'
1565 AND j.object_id = c.incident_id
1566 AND NVL
1567 (
1568 j.purge_status
1569 , 'S'
1570 ) = 'S'
1571 AND j.processing_set_id = p_processing_set_id;
1572
1573 l_row_count := SQL%ROWCOUNT;
1574
1575 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1576 THEN
1577 fnd_log.string
1578 (
1579 fnd_log.level_statement
1580 , L_LOG_MODULE || 'get_srbinfo_for_audit_end'
1581 , 'After collecting information that has to be written to the '
1582 || 'CS_INCIDENTS_PURGE_AUDIT_B table ' || l_row_count || ' rows'
1583 );
1584 END IF ;
1585
1586 ---
1587
1588 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1589 THEN
1590 fnd_log.string
1591 (
1592 fnd_log.level_statement
1593 , L_LOG_MODULE || 'get_srtlinfo_for_audit_start'
1594 , 'Collecting information that has to be written to the '
1595 || 'CS_INCIDENTS_PURGE_AUDIT_TL table'
1596 );
1597 END IF ;
1598
1599 -- Collect all the information from the cs_incidents_all_tl
1600 -- table that needs to be entered in the purge audit table
1601
1602 SELECT
1603 incident_id
1604 , language
1605 , source_lang
1606 , summary
1607 BULK COLLECT INTO
1608 l_incident_id_tl_tbl
1609 , l_language_tbl
1610 , l_source_lang_tbl
1611 , l_summary_tbl
1612 FROM
1613 cs_incidents_all_tl c
1614 , jtf_object_purge_param_tmp j
1615 WHERE
1616 j.object_type = 'SR'
1617 AND j.object_id = c.incident_id
1618 AND NVL
1619 (
1620 j.purge_status
1621 , 'S'
1622 ) = 'S'
1623 AND j.processing_set_id = p_processing_set_id;
1624
1625 l_row_count := SQL%ROWCOUNT;
1626
1627 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1628 THEN
1629 fnd_log.string
1630 (
1631 fnd_log.level_statement
1632 , L_LOG_MODULE || 'get_srtlinfo_for_audit_end'
1633 , 'After collecting information that has to be written to the '
1634 || 'CS_INCIDENTS_PURGE_AUDIT_TL table ' || l_row_count || ' rows'
1635 );
1636 END IF ;
1637 ELSIF p_audit_required <> 'Y'
1638 THEN
1639 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1640 THEN
1641 fnd_log.string
1642 (
1643 fnd_log.level_statement
1644 , L_LOG_MODULE || 'purge_audit_not_reqd'
1645 , 'Not collecting audit information since p_audit_required is '
1646 || p_audit_required || '. Would be done if Y.'
1647 );
1648 END IF ;
1649 END IF;
1650
1651 ---
1652
1653 Check_User_Termination;
1654
1655 ---
1656
1657 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1658 THEN
1659 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1660 THEN
1661 fnd_log.string
1662 (
1663 fnd_log.level_statement
1664 , L_LOG_MODULE || 'get_data_for_staging_start'
1665 , 'Collecting information that has to be written to the '
1666 || 'CS_INCIDENTS_PURGE_STAGING table'
1667 );
1668 END IF ;
1669
1670 -- Collect all the information from the global temp table
1671 -- table that needs to be entered in the staging table
1672 -- so that log can be generated at the end of the purge
1673 -- process from the purge concurrent program
1674
1675 SELECT
1676 object_id
1677 , purge_error_message
1678 BULK COLLECT INTO
1679 l_incident_id_status_tbl
1680 , l_purge_error_message_tbl
1681 FROM
1682 jtf_object_purge_param_tmp j
1683 WHERE
1684 j.object_type = 'SR'
1685 AND NVL
1686 (
1687 j.purge_status
1688 , 'S'
1689 ) = 'E'
1690 AND j.processing_set_id = p_processing_set_id;
1691
1692 l_row_count := SQL%ROWCOUNT;
1693
1694 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1695 THEN
1696 fnd_log.string
1697 (
1698 fnd_log.level_statement
1699 , L_LOG_MODULE || 'get_data_for_staging_end'
1700 , 'After collecting information that has to be written to the '
1701 || 'CS_INCIDENTS_PURGE_STAGING table ' || l_row_count || ' rows'
1702 );
1703 END IF ;
1704 END IF;
1705
1706 ---
1707
1708 Check_User_Termination;
1709
1710 ---
1711
1712 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1713 THEN
1714 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1715 THEN
1716 fnd_log.string
1717 (
1718 fnd_log.level_statement
1719 , L_LOG_MODULE || 'del_srtl_start'
1720 , 'Deleting rows from table CS_INCIDENTS_ALL_TL'
1721 );
1722 END IF ;
1723
1724 -- Delete all the translatable attributes of the
1725 -- service request from the table
1726
1727 DELETE /*+ index(t) */ cs_incidents_all_tl t
1728 WHERE
1729 incident_id IN
1730 (
1731 SELECT /*+ no_unnest no_semijoin cardinality(10) */
1732 object_id
1733 FROM
1734 jtf_object_purge_param_tmp
1735 WHERE
1736 object_type = 'SR'
1737 AND p_processing_set_id = processing_set_id
1738 AND NVL
1739 (
1740 purge_status
1741 , 'S'
1742 ) = 'S'
1743 );
1744
1745 l_row_count := SQL%ROWCOUNT;
1746
1747 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1748 THEN
1749 fnd_log.string
1750 (
1751 fnd_log.level_statement
1752 , L_LOG_MODULE || 'del_srtl_end'
1753 , 'After deleting rows from table CS_INCIDENTS_ALL_TL ' || l_row_count
1754 || ' rows'
1755 );
1756 END IF ;
1757 END IF;
1758
1759 ---
1760
1761 Check_User_Termination;
1762
1763 ---
1764
1765 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1766 THEN
1767 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1768 THEN
1769 fnd_log.string
1770 (
1771 fnd_log.level_statement
1772 , L_LOG_MODULE || 'del_srb_start'
1773 , 'Deleting rows from table CS_INCIDENTS_ALL_B'
1774 );
1775 END IF ;
1776
1777 -- Delete all the attributes of the
1778 -- service request from the table
1779
1780 DELETE /*+ index(b) */ cs_incidents_all_b b
1781 WHERE
1782 incident_id IN
1783 (
1784 SELECT /*+ no_unnest no_semijoin cardinality(10) */
1785 object_id
1786 FROM
1787 jtf_object_purge_param_tmp
1788 WHERE
1789 object_type = 'SR'
1790 AND p_processing_set_id = processing_set_id
1791 AND NVL
1792 (
1793 purge_status
1794 , 'S'
1795 ) = 'S'
1796 );
1797
1798 l_row_count := SQL%ROWCOUNT;
1799
1800 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1801 THEN
1802 fnd_log.string
1803 (
1804 fnd_log.level_statement
1805 , L_LOG_MODULE || 'del_srb_end'
1806 , 'After deleting rows from table CS_INCIDENTS_ALL_B ' || l_row_count
1807 || ' rows'
1808 );
1809 END IF ;
1810 END IF;
1811
1812 ---
1813
1814 Check_User_Termination;
1815
1816 ---
1817
1818 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1819 THEN
1820 IF l_incident_id_status_tbl.COUNT > 0
1821
1822 -- If there are any SRs with purge_status E indicating
1823 -- error while validation, the status of these SRs is
1824 -- updated back to the Staging Table to facilitate
1825 -- generation of concurrent request output file.
1826
1827 THEN
1828 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1829 THEN
1830 fnd_log.string
1831 (
1832 fnd_log.level_statement
1833 , L_LOG_MODULE || 'write_staging_start'
1834 , 'Updating purge status into table CS_INCIDENTS_PURGE_STAGING'
1835 );
1836 END IF ;
1837
1838 -- Updating the staging table to indicate the SRs that failed during purge
1839 -- due to validations against child objects.
1840
1841 FORALL j IN l_incident_id_status_tbl.FIRST..l_incident_id_status_tbl.LAST
1842 UPDATE cs_incidents_purge_staging
1843 SET
1844 purge_status = 'E'
1845 , purge_error_message = l_purge_error_message_tbl(j)
1846 WHERE
1847 incident_id = l_incident_id_status_tbl(j);
1848
1849 l_row_count := SQL%ROWCOUNT;
1850
1851 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1852 THEN
1853 fnd_log.string
1854 (
1855 fnd_log.level_statement
1856 , L_LOG_MODULE || 'write_staging_end'
1857 , 'After updating purge status into table CS_INCIDENTS_PURGE_STAGING '
1858 || l_row_count || ' rows'
1859 );
1860 END IF ;
1861 ELSIF l_incident_id_status_tbl.COUNT <= 0
1862 THEN
1863 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1864 THEN
1865 fnd_log.string
1866 (
1867 fnd_log.level_statement
1868 , L_LOG_MODULE || 'write_staging_norows'
1869 , 'While updating purge status into table CS_INCIDENTS_PURGE_STAGING '
1870 || 'l_incident_id_status_tbl had ' || l_incident_id_status_tbl.COUNT
1871 || ' rows'
1872 );
1873 END IF ;
1874 END IF;
1875 END IF;
1876
1877 ---
1878
1879 Check_User_Termination;
1880
1881 ---
1882
1883 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1884 THEN
1885 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1886 THEN
1887 fnd_log.string
1888 (
1889 fnd_log.level_statement
1890 , L_LOG_MODULE || 'write_staging_success_start'
1891 , 'Updating rows processed successfully with purge status = S'
1892 );
1893 END IF ;
1894
1895 -- Setting all the rows in the staging table
1896 -- belonging to this batch which were processed
1897 -- successfully to purge_status 'S' to be able
1898 -- to differentiate these rows from the ones
1899 -- that were not yet processed.
1900
1901 UPDATE cs_incidents_purge_staging
1902 SET
1903 purge_status = 'S'
1904 WHERE
1905 incident_id IN
1906 (
1907 SELECT
1908 object_id
1909 FROM
1910 jtf_object_purge_param_tmp j
1911 WHERE
1912 j.object_type = 'SR'
1913 AND NVL
1914 (
1915 j.purge_status
1916 , 'S'
1917 ) = 'S'
1918 AND j.processing_set_id = p_processing_set_id
1919 );
1920 l_row_count := SQL%ROWCOUNT;
1921
1922 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1923 THEN
1924 fnd_log.string
1925 (
1926 fnd_log.level_statement
1927 , L_LOG_MODULE || 'write_staging_success_end'
1928 , 'After updating rows processed successfully with '
1929 || 'purge status = S ' || l_row_count
1930 );
1931 END IF ;
1932 END IF;
1933
1934 ---
1935
1936 Check_User_Termination;
1937
1938 ---
1939
1940 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1941 AND p_audit_required = 'Y'
1942
1943 -- If audit information is required as per profile option
1944 -- CS_SR_PURGE_AUDIT_REQUIRED, then proceed further
1945
1946 THEN
1947 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1948 THEN
1949 fnd_log.string
1950 (
1951 fnd_log.level_statement
1952 , L_LOG_MODULE || 'purge_audit_create_start'
1953 , 'Calling the procedure CREATE_PURGEAUDIT_RECORDS to create purge '
1954 || 'audit information'
1955 );
1956 END IF ;
1957
1958 -- This procedure takes as input all the data that needs to be captured
1959 -- in the purge audit tables and staging table. Data of all SRs that were
1960 -- successfully purged are entered in the audit tables. For the SRs for
1961 -- which purge failed, the staging table is updated with the purge error
1962 -- message and purge status.
1963
1964 Create_Purgeaudit_Records
1965 (
1966 p_api_version_number => '1.0'
1967 , p_init_msg_list => FND_API.G_FALSE
1968 , p_commit => FND_API.G_FALSE
1969 , p_purge_set_id => l_purge_set_id
1970 , p_incident_id_tbl => l_incident_id_tbl
1971 , p_incident_number_tbl => l_incident_number_tbl
1972 , p_incident_type_id_tbl => l_incident_type_id_tbl
1973 , p_customer_id_tbl => l_customer_id_tbl
1974 , p_inv_organization_id_tbl => l_inv_organization_id_tbl
1975 , p_inventory_item_id_tbl => l_inventory_item_id_tbl
1976 , p_customer_product_id_tbl => l_customer_product_id_tbl
1977 , p_inc_creation_date_tbl => l_inc_creation_date_tbl
1978 , p_inc_last_update_date_tbl => l_inc_last_update_date_tbl
1979 , p_incident_id_tl_tbl => l_incident_id_tl_tbl
1980 , p_language_tbl => l_language_tbl
1981 , p_source_lang_tbl => l_source_lang_tbl
1982 , p_summary_tbl => l_summary_tbl
1983 , x_return_status => x_return_status
1984 , x_msg_count => x_msg_count
1985 , x_msg_data => x_msg_data
1986 );
1987
1988 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1989 THEN
1990 fnd_log.string
1991 (
1992 fnd_log.level_statement
1993 , L_LOG_MODULE || 'purge_audit_create_end'
1994 , 'After calling the procedure CREATE_PURGEAUDIT_RECORDS. '
1995 || 'Returned with status ' || x_return_status
1996 );
1997 END IF ;
1998 END IF;
1999
2000 ---
2001
2002 Check_User_Termination;
2003
2004 ---
2005
2006 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2007 THEN
2008 fnd_log.string
2009 (
2010 fnd_log.level_procedure
2011 , L_LOG_MODULE || 'end'
2012 , 'Completed work in ' || L_API_NAME_FULL || ' with return status '
2013 || x_return_status
2014 );
2015 END IF ;
2016
2017 EXCEPTION
2018
2019 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2020 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2021
2022 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
2023 THEN
2024 fnd_log.string
2025 (
2026 fnd_log.level_unexpected
2027 , L_LOG_MODULE || 'unexpected_error'
2028 , 'Inside WHEN FND_API.G_EXC_UNEXPECTED_ERROR of ' || L_API_NAME_FULL
2029 );
2030
2031 x_msg_count := FND_MSG_PUB.Count_Msg;
2032
2033 IF x_msg_count > 0
2034 THEN
2035 FOR
2036 i IN 1..x_msg_count
2037 LOOP
2038 FND_MSG_PUB.Get
2039 (
2040 p_msg_index => i
2041 , p_encoded => 'F'
2042 , p_data => x_msg_data
2043 , p_msg_index_out => x_msg_index_out
2044 );
2045 fnd_log.string
2046 (
2047 fnd_log.level_unexpected
2048 , L_LOG_MODULE || 'unexpected_error'
2049 , 'Error encountered is : ' || x_msg_data || ' [Index:'
2050 || x_msg_index_out || ']'
2051 );
2052 END LOOP;
2053 END IF ;
2054 END IF ;
2055
2056 WHEN OTHERS THEN
2057 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2058 FND_MESSAGE.Set_Name('CS', 'CS_SR_DEL_FAIL');
2059 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
2060 FND_MESSAGE.Set_Token('ERROR', SQLERRM);
2061 FND_MSG_PUB.ADD;
2062
2063 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
2064 THEN
2065 fnd_log.string
2066 (
2067 fnd_log.level_unexpected
2068 , L_LOG_MODULE || 'when_others'
2069 , 'Inside WHEN OTHERS of ' || L_API_NAME_FULL || '. Oracle Error was:'
2070 );
2071 fnd_log.string
2072 (
2073 fnd_log.level_unexpected
2074 , L_LOG_MODULE || 'when_others'
2075 , SQLERRM
2076 );
2077 END IF ;
2078
2079 END Delete_ServiceRequest;
2080
2081 --------------------------------------------------------------------------------
2082 -- Procedure Name : DELETE_CONTACTS
2083 --
2084 -- Parameters (other than standard ones)
2085 -- IN
2086 -- p_object_type : Type of object for which this procedure is
2087 -- being called. (Here it will be 'SR')
2088 -- p_processing_set_id : Id that helps the API in identifying the
2089 -- set of SRs for which the child objects have
2090 -- to be deleted.
2091 --
2092 -- Description
2093 -- This procedure delets all the contacts, related to an SR present in the
2094 -- global temp table with purge status NULL along with contact audit
2095 -- information, party role extended attributes and party role extended
2096 -- attribute audit information
2097 -- HISTORY
2098 --
2099 ----------------+------------+--------------------------------------------------
2100 -- DATE | UPDATED BY | Change Description
2101 ----------------+------------+--------------------------------------------------
2102 -- 2-Aug_2005 | varnaray | Created
2103 -- | |
2104 ----------------+------------+--------------------------------------------------
2105 /*#
2106 * This procedure delets all the contacts, related to an SR present in the
2107 * global temp table with purge status NULL along with contact audit
2108 * information, party role extended attributes and party role extended
2109 * attribute audit information
2110 * @param p_object_type Type of object for which this procedure is being called.
2111 * (Here it will be 'SR')
2112 * @param p_processing_set_id Id that helps the API in identifying the set of
2113 * SRs for which the child objects have to be deleted.
2114 * @rep:scope internal
2115 * @rep:product CS
2116 * @rep:displayname Delete Contacts
2117 */
2118 PROCEDURE Delete_Contacts
2119 (
2120 p_api_version_number IN NUMBER := 1.0
2121 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
2122 , p_commit IN VARCHAR2 := FND_API.G_FALSE
2123 , p_object_type IN VARCHAR2
2124 , p_processing_set_id IN NUMBER
2125 , x_return_status OUT NOCOPY VARCHAR2
2126 , x_msg_count OUT NOCOPY NUMBER
2127 , x_msg_data OUT NOCOPY VARCHAR2
2128 )
2129 IS
2130 --------------------------------------------------------------------------------
2131 L_API_VERSION CONSTANT NUMBER := 1.0;
2132 L_API_NAME CONSTANT VARCHAR2(30) := 'DELETE_CONTACTS';
2133 L_API_NAME_FULL CONSTANT VARCHAR2(61) := G_PKG_NAME || '.' || L_API_NAME;
2134 L_LOG_MODULE CONSTANT VARCHAR2(255) := 'cs.plsql.' || L_API_NAME_FULL || '.';
2135
2136 l_row_count NUMBER := 0;
2137
2138 BEGIN
2139 x_return_status := FND_API.G_RET_STS_SUCCESS;
2140
2141 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2142 THEN
2143 fnd_log.string
2144 (
2145 fnd_log.level_procedure
2146 , L_LOG_MODULE || 'start'
2147 , 'Inside ' || L_API_NAME_FULL || ', called with parameters below:'
2148 );
2149 fnd_log.string
2150 (
2151 fnd_log.level_procedure
2152 , L_LOG_MODULE || 'param 1'
2153 , 'p_api_version_number:' || p_api_version_number
2154 );
2155 fnd_log.string
2156 (
2157 fnd_log.level_procedure
2158 , L_LOG_MODULE || 'param 2'
2159 , 'p_init_msg_list:' || p_init_msg_list
2160 );
2161 fnd_log.string
2162 (
2163 fnd_log.level_procedure
2164 , L_LOG_MODULE || 'param 3'
2165 , 'p_commit:' || p_commit
2166 );
2167 fnd_log.string
2168 (
2169 fnd_log.level_procedure
2170 , L_LOG_MODULE || 'param 4'
2171 , 'p_object_type:' || p_object_type
2172 );
2173 fnd_log.string
2174 (
2175 fnd_log.level_procedure
2176 , L_LOG_MODULE || 'param 5'
2177 , 'p_processing_set_id:' || p_processing_set_id
2178 );
2179 END IF ;
2180
2181 IF NOT FND_API.Compatible_API_Call
2182 (
2183 L_API_VERSION
2184 , p_api_version_number
2185 , L_API_NAME
2186 , G_PKG_NAME
2187 )
2188 THEN
2189 FND_MSG_PUB.Count_And_Get
2190 (
2191 p_count => x_msg_count
2192 , p_data => x_msg_data
2193 );
2194 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2195 END IF ;
2196
2197 IF
2198 FND_API.to_Boolean(p_init_msg_list)
2199 THEN
2200 FND_MSG_PUB.initialize;
2201 END IF ;
2202
2203 ------------------------------------------------------------------------------
2204 -- Actual Logic starts below:
2205 ------------------------------------------------------------------------------
2206
2207 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2208 THEN
2209 fnd_log.string
2210 (
2211 fnd_log.level_statement
2212 , L_LOG_MODULE || 'del_cont_ext_aud_start'
2213 , 'Deleting data from table CS_SR_CONTACTS_EXT_AUDIT'
2214 );
2215 END IF ;
2216
2217 -- The following statement deletes the audit information captured for
2218 -- the translatable Party role extended attributes related to SRs in the
2219 -- global temp table with purge status NULL.
2220
2221 DELETE /*+ index(a) */ cs_sr_contacts_ext_audit a
2222 WHERE
2223 incident_id IN
2224 (
2225 SELECT /*+ unnest no_semijoin cardinality(10) */
2226 object_id
2227 FROM
2228 jtf_object_purge_param_tmp
2229 WHERE
2230 object_type = 'SR'
2231 AND p_processing_set_id = processing_set_id
2232 AND NVL
2233 (
2234 purge_status
2235 , 'S'
2236 ) = 'S'
2237 );
2238
2239 l_row_count := SQL%ROWCOUNT;
2240
2241 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2242 THEN
2243 fnd_log.string
2244 (
2245 fnd_log.level_statement
2246 , L_LOG_MODULE || 'del_cont_ext_aud_end'
2247 , 'After deleting data from table CS_SR_CONTACTS_EXT_AUDIT '
2248 || l_row_count || ' rows'
2249 );
2250 END IF ;
2251
2252 ---
2253
2254 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2255 THEN
2256 fnd_log.string
2257 (
2258 fnd_log.level_statement
2259 , L_LOG_MODULE || 'del_cont_ext_start'
2260 , 'Deleting data from table CS_SR_CONTACTS_EXT_TL'
2261 );
2262 END IF ;
2263
2264 -- This statement deletes all the translatable extended attributes attached
2265 -- to contacts that are linked to an SR that is available in the global
2266 -- temp table with purge status NULL.
2267
2268 DELETE /*+ index(e) */ cs_sr_contacts_ext_tl e
2269 WHERE incident_id IN
2270 (
2271 SELECT /*+ no_unnest no_semijoin cardinality(10) */
2272 object_id
2273 FROM
2274 jtf_object_purge_param_tmp
2275 WHERE
2276 object_type = 'SR'
2277 AND p_processing_set_id = processing_set_id
2278 AND NVL(purge_status, 'S') = 'S'
2279 );
2280
2281 l_row_count := SQL%ROWCOUNT;
2282
2283 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2284 THEN
2285 fnd_log.string
2286 (
2287 fnd_log.level_statement
2288 , L_LOG_MODULE || 'del_cont_ext_end'
2289 , 'After deleting data from table CS_SR_CONTACTS_EXT_TL '
2290 || l_row_count || ' rows'
2291 );
2292 END IF ;
2293
2294 ---
2295
2296 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2297 THEN
2298 fnd_log.string
2299 (
2300 fnd_log.level_statement
2301 , L_LOG_MODULE || 'del_cont_ext_start'
2302 , 'Deleting data from table CS_SR_CONTACTS_EXT'
2303 );
2304 END IF ;
2305
2306 -- This statement deletes all the translatable extended attributes attached
2307 -- to contacts that are linked to an SR that is available in the global
2308 -- temp table with purge status NULL.
2309
2310 DELETE /*+ index(e) */ cs_sr_contacts_ext e
2311 WHERE incident_id IN
2312 (
2313 SELECT /*+ no_unnest no_semijoin cardinality(10) */
2314 object_id
2315 FROM
2316 jtf_object_purge_param_tmp
2317 WHERE
2318 object_type = 'SR'
2319 AND p_processing_set_id = processing_set_id
2320 AND NVL(purge_status, 'S') = 'S'
2321 );
2322
2323 l_row_count := SQL%ROWCOUNT;
2324
2325 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2326 THEN
2327 fnd_log.string
2328 (
2329 fnd_log.level_statement
2330 , L_LOG_MODULE || 'del_cont_ext_end'
2331 , 'After deleting data from table CS_SR_CONTACTS_EXT '
2332 || l_row_count || ' rows'
2333 );
2334 END IF ;
2335
2336 ---
2337
2338 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2339 THEN
2340 fnd_log.string
2341 (
2342 fnd_log.level_statement
2343 , L_LOG_MODULE || 'del_cont_point_aud_start'
2344 , 'Deleting data from table CS_HZ_SR_CONTACT_PNTS_AUDIT'
2345 );
2346 END IF ;
2347
2348 -- This statement deletes all the audit info attached to contacts
2349 -- that are linked to an SR that is available in the global temp table
2350 -- with purge status NULL.
2351
2352 DELETE /*+ index(a) */ cs_hz_sr_contact_pnts_audit a
2353 WHERE incident_id IN
2354 (
2355 SELECT /*+ no_unnest no_semijoin cardinality(10) */
2356 object_id
2357 FROM
2358 jtf_object_purge_param_tmp
2359 WHERE
2360 object_type = 'SR'
2361 AND p_processing_set_id = processing_set_id
2362 AND NVL(purge_status, 'S') = 'S'
2363 );
2364
2365 l_row_count := SQL%ROWCOUNT;
2366
2367 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2368 THEN
2369 fnd_log.string
2370 (
2371 fnd_log.level_statement
2372 , L_LOG_MODULE || 'del_cont_point_aud_end'
2373 , 'After deleting data from table CS_HZ_SR_CONTACT_PNTS_AUDIT '
2374 || l_row_count || ' rows'
2375 );
2376 END IF ;
2377
2378 ---
2379
2380 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2381 THEN
2382 fnd_log.string
2383 (
2384 fnd_log.level_statement
2385 , L_LOG_MODULE || 'del_cont_point_start'
2386 , 'Deleting data from table CS_HZ_SR_CONTACT_POINTS'
2387 );
2388 END IF ;
2389
2390 -- This statement deletes all the contacts that are linked to an
2391 -- SR that is available in the global temp table with purge status NULL.
2392
2393 DELETE /*+ index(c) */ cs_hz_sr_contact_points c
2394 WHERE incident_id IN
2395 (
2396 SELECT /*+ no_unnest no_semijoin cardinality(10) */
2397 object_id
2398 FROM
2399 jtf_object_purge_param_tmp
2400 WHERE
2401 object_type = 'SR'
2402 AND p_processing_set_id = processing_set_id
2403 AND NVL(purge_status, 'S') = 'S'
2404 );
2405 l_row_count := SQL%ROWCOUNT;
2406
2407 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2408 THEN
2409 fnd_log.string
2410 (
2411 fnd_log.level_statement
2412 , L_LOG_MODULE || 'del_cont_point_end'
2413 , 'After deleting data from table CS_HZ_SR_CONTACT_POINTS '
2414 || l_row_count || ' rows'
2415 );
2416 END IF ;
2417
2418 ---
2419
2420 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2421 THEN
2422 fnd_log.string
2423 (
2424 fnd_log.level_procedure
2425 , L_LOG_MODULE || 'end'
2426 , 'Completed work in ' || L_API_NAME_FULL || ' with return status '
2427 || x_return_status
2428 );
2429 END IF ;
2430
2431 EXCEPTION
2432
2433 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2434 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2435
2436 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
2437 THEN
2438 fnd_log.string
2439 (
2440 fnd_log.level_unexpected
2441 , L_LOG_MODULE || 'unexpected_error'
2442 , 'Inside WHEN FND_API.G_EXC_UNEXPECTED_ERROR of ' || L_API_NAME_FULL
2443 );
2444 END IF ;
2445
2446 WHEN OTHERS THEN
2447 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2448 FND_MESSAGE.Set_Name('CS', 'CS_SR_CONT_DEL_FAIL');
2449 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
2450 FND_MESSAGE.Set_Token('ERROR', SQLERRM);
2451 FND_MSG_PUB.ADD;
2452
2453 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
2454 THEN
2455 fnd_log.string
2456 (
2457 fnd_log.level_unexpected
2458 , L_LOG_MODULE || 'when_others'
2459 , 'Inside WHEN OTHERS of ' || L_API_NAME_FULL || '. Oracle Error was:'
2460 );
2461 fnd_log.string
2462 (
2463 fnd_log.level_unexpected
2464 , L_LOG_MODULE || 'when_others'
2465 , SQLERRM
2466 );
2467 END IF ;
2468
2469 END Delete_Contacts;
2470
2471 --------------------------------------------------------------------------------
2472 -- Procedure Name : DELETE_AUDIT_RECORDS
2473 --
2474 -- Parameters (other than standard ones)
2475 -- IN
2476 -- p_object_type : Type of object for which this procedure is
2477 -- being called. (Here it will be 'SR')
2478 -- p_processing_set_id : Id that helps the API in identifying the
2479 -- set of SRs for which the child objects have
2480 -- to be deleted.
2481 --
2482 -- Description
2483 -- This procedure deletes all the audit information related to SRs that are
2484 -- present in the global temp table with purge status NULL.
2485 --
2486 -- HISTORY
2487 --
2488 ----------------+------------+--------------------------------------------------
2489 -- DATE | UPDATED BY | Change Description
2490 ----------------+------------+--------------------------------------------------
2491 -- 2-Aug_2005 | varnaray | Created
2492 -- | |
2493 ----------------+------------+--------------------------------------------------
2494 /*#
2495 * This procedure deletes all the audit information related to SRs that are
2496 * present in the global temp table with purge status NULL.
2497 * @param p_object_type Type of object for which this procedure is being called.
2498 * (Here it will be 'SR')
2499 * @param p_processing_set_id Id that helps the API in identifying the set of
2500 * SRs for which the child objects have to be deleted.
2501 * @rep:scope internal
2502 * @rep:product CS
2503 * @rep:displayname Delete Audit Requests
2504 */
2505 PROCEDURE Delete_Audit_Records
2506 (
2507 p_api_version_number IN NUMBER := 1.0
2508 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
2509 , p_commit IN VARCHAR2 := FND_API.G_FALSE
2510 , p_object_type IN VARCHAR2
2511 , p_processing_set_id IN NUMBER
2512 , x_return_status OUT NOCOPY VARCHAR2
2513 , x_msg_count OUT NOCOPY NUMBER
2514 , x_msg_data OUT NOCOPY VARCHAR2
2515 )
2516 IS
2517 --------------------------------------------------------------------------------
2518 L_API_VERSION CONSTANT NUMBER := 1.0;
2519 L_API_NAME CONSTANT VARCHAR2(30) := 'DELETE_AUDIT_RECORDS';
2520 L_API_NAME_FULL CONSTANT VARCHAR2(61) := G_PKG_NAME || '.' || L_API_NAME;
2521 L_LOG_MODULE CONSTANT VARCHAR2(255) := 'cs.plsql.' || L_API_NAME_FULL || '.';
2522
2523 l_row_count NUMBER;
2524
2525 BEGIN
2526 x_return_status := FND_API.G_RET_STS_SUCCESS;
2527
2528 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2529 THEN
2530 fnd_log.string
2531 (
2532 fnd_log.level_procedure
2533 , L_LOG_MODULE || 'start'
2534 , 'Inside ' || L_API_NAME_FULL || ', called with parameters below:'
2535 );
2536 fnd_log.string
2537 (
2538 fnd_log.level_procedure
2539 , L_LOG_MODULE || 'param 1'
2540 , 'p_api_version_number:' || p_api_version_number
2541 );
2542 fnd_log.string
2543 (
2544 fnd_log.level_procedure
2545 , L_LOG_MODULE || 'param 2'
2546 , 'p_init_msg_list:' || p_init_msg_list
2547 );
2548 fnd_log.string
2549 (
2550 fnd_log.level_procedure
2551 , L_LOG_MODULE || 'param 3'
2552 , 'p_commit:' || p_commit
2553 );
2554 fnd_log.string
2555 (
2556 fnd_log.level_procedure
2557 , L_LOG_MODULE || 'param 4'
2558 , 'p_object_type:' || p_object_type
2559 );
2560 fnd_log.string
2561 (
2562 fnd_log.level_procedure
2563 , L_LOG_MODULE || 'param 5'
2564 , 'p_processing_set_id:' || p_processing_set_id
2565 );
2566 END IF ;
2567
2568 IF NOT FND_API.Compatible_API_Call
2569 (
2570 L_API_VERSION
2571 , p_api_version_number
2572 , L_API_NAME
2573 , G_PKG_NAME
2574 )
2575 THEN
2576 FND_MSG_PUB.Count_And_Get
2577 (
2578 p_count => x_msg_count
2579 , p_data => x_msg_data
2580 );
2581 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2582 END IF ;
2583
2584 IF
2585 FND_API.to_Boolean(p_init_msg_list)
2586 THEN
2587 FND_MSG_PUB.initialize;
2588 END IF ;
2589
2590 ------------------------------------------------------------------------------
2591 -- Actual Logic starts below:
2592 ------------------------------------------------------------------------------
2593
2594 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2595 THEN
2596 fnd_log.string
2597 (
2598 fnd_log.level_statement
2599 , L_LOG_MODULE || 'del_sraudit_tl_start'
2600 , 'Deleting data from table CS_INCIDENTS_AUDIT_TL'
2601 );
2602 END IF ;
2603
2604 -- Deleting rows from the audit TL table for the
2605 -- SRs in the global temp table with purge status NULL
2606
2607 DELETE /*+ index(t) */ cs_incidents_audit_tl t
2608 WHERE incident_id IN
2609 (
2610 SELECT /*+ no_unnest no_semijoin cardinality(10) */
2611 object_id
2612 FROM
2613 jtf_object_purge_param_tmp
2614 WHERE
2615 object_type = 'SR'
2616 AND p_processing_set_id = processing_set_id
2617 AND NVL(purge_status, 'S') = 'S'
2618 );
2619
2620 l_row_count := SQL%ROWCOUNT;
2621
2622 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2623 THEN
2624 fnd_log.string
2625 (
2626 fnd_log.level_statement
2627 , L_LOG_MODULE || 'del_sraudit_tl_end'
2628 , 'After deleting data from table CS_INCIDENTS_AUDIT_TL '
2629 || l_row_count || ' rows'
2630 );
2631 END IF ;
2632
2633 ---
2634
2635 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2636 THEN
2637 fnd_log.string
2638 (
2639 fnd_log.level_statement
2640 , L_LOG_MODULE || 'del_sraudit_b_start'
2641 , 'Deleting data from table CS_INCIDENTS_AUDIT_B'
2642 );
2643 END IF ;
2644
2645 -- Deleting rows from the audit table for the
2646 -- SRs in the global temp table with purge status NULL
2647
2648 DELETE /*+ index(b) */ cs_incidents_audit_b b
2649 WHERE incident_id IN
2650 (
2651 SELECT /*+ unnest no_semijoin cardinality(10) */
2652 object_id
2653 FROM
2654 jtf_object_purge_param_tmp
2655 WHERE
2656 object_type = 'SR'
2657 AND p_processing_set_id = processing_set_id
2658 AND NVL(purge_status, 'S') = 'S'
2659 );
2660
2661 l_row_count := SQL%ROWCOUNT;
2662
2663 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2664 THEN
2665 fnd_log.string
2666 (
2667 fnd_log.level_statement
2668 , L_LOG_MODULE || 'del_sraudit_b_end'
2669 , 'After deleting data from table CS_INCIDENTS_AUDIT_B '
2670 || l_row_count || ' rows'
2671 );
2672 END IF ;
2673
2674 ---
2675
2676 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2677 THEN
2678 fnd_log.string
2679 (
2680 fnd_log.level_procedure
2681 , L_LOG_MODULE || 'end'
2682 , 'Completed work in ' || L_API_NAME_FULL || ' with return status '
2683 || x_return_status
2684 );
2685 END IF ;
2686
2687 EXCEPTION
2688
2689 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2690 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2691
2692 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
2693 THEN
2694 fnd_log.string
2695 (
2696 fnd_log.level_unexpected
2697 , L_LOG_MODULE || 'unexpected_error'
2698 , 'Inside WHEN FND_API.G_EXC_UNEXPECTED_ERROR of ' || L_API_NAME_FULL
2699 );
2700 END IF ;
2701
2702 WHEN OTHERS THEN
2703 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2704 FND_MESSAGE.Set_Name('CS', 'CS_SR_AUDIT_DEL_FAIL');
2705 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
2706 FND_MESSAGE.Set_Token('ERROR', SQLERRM);
2707 FND_MSG_PUB.ADD;
2708
2709 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
2710 THEN
2711 fnd_log.string
2712 (
2713 fnd_log.level_unexpected
2714 , L_LOG_MODULE || 'when_others'
2715 , 'Inside WHEN OTHERS of ' || L_API_NAME_FULL || '. Oracle Error was:'
2716 );
2717 fnd_log.string
2718 (
2719 fnd_log.level_unexpected
2720 , L_LOG_MODULE || 'when_others'
2721 , SQLERRM
2722 );
2723 END IF ;
2724 END Delete_Audit_Records;
2725
2726 --------------------------------------------------------------------------------
2727 -- Procedure Name : DELETE_SR_ATTRIBUTES
2728 --
2729 -- Parameters (other than standard ones)
2730 -- IN
2731 -- p_object_type : Type of object for which this procedure is
2732 -- being called. (Here it will be 'SR')
2733 -- p_processing_set_id : Id that helps the API in identifying the
2734 -- set of SRs for which the child objects have
2735 -- to be deleted.
2736 --
2737 -- Description
2738 -- This procedure deletes all the extended attributes and CIC attributes
2739 -- associated with the SRs present in the global temp table with purge
2740 -- status NULL along with the audit information captured for the extended
2741 -- attributes.
2742 -- HISTORY
2743 --
2744 ----------------+------------+--------------------------------------------------
2745 -- DATE | UPDATED BY | Change Description
2746 ----------------+------------+--------------------------------------------------
2747 -- 2-Aug_2005 | varnaray | Created
2748 -- | |
2749 ----------------+------------+--------------------------------------------------
2750 /*#
2751 * This procedure deletes all the extended attributes and CIC attributes
2752 * associated with the SRs present in the global temp table with purge status
2753 * NULL along with the audit information captured for the extended attributes.
2754 * @param p_object_type Type of object for which this procedure is being called.
2755 * (Here it will be 'SR')
2756 * @param p_processing_set_id Id that helps the API in identifying the set of
2757 * SRs for which the child objects have to be deleted.
2758 * @rep:scope internal
2759 * @rep:product CS
2760 * @rep:displayname Delete Service Request Attributes
2761 */
2762 PROCEDURE Delete_Sr_Attributes
2763 (
2764 p_api_version_number IN NUMBER
2765 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
2766 , p_commit IN VARCHAR2 := FND_API.G_FALSE
2767 , p_object_type IN VARCHAR2
2768 , p_processing_set_id IN NUMBER
2769 , x_return_status OUT NOCOPY VARCHAR2
2770 , x_msg_count OUT NOCOPY NUMBER
2771 , x_msg_data OUT NOCOPY VARCHAR2
2772 )
2773 IS
2774 --------------------------------------------------------------------------------
2775 L_API_VERSION CONSTANT NUMBER := 1.0;
2776 L_API_NAME CONSTANT VARCHAR2(30) := 'DELETE_SR_ATTRIBUTES';
2777 L_API_NAME_FULL CONSTANT VARCHAR2(61) := G_PKG_NAME || '.' || L_API_NAME;
2778 L_LOG_MODULE CONSTANT VARCHAR2(255) := 'cs.plsql.' || L_API_NAME_FULL || '.';
2779
2780 l_row_count NUMBER;
2781
2782 BEGIN
2783 x_return_status := FND_API.G_RET_STS_SUCCESS;
2784
2785 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2786 THEN
2787 fnd_log.string
2788 (
2789 fnd_log.level_procedure
2790 , L_LOG_MODULE || 'start'
2791 , 'Inside ' || L_API_NAME_FULL || ', called with parameters below:'
2792 );
2793 fnd_log.string
2794 (
2795 fnd_log.level_procedure
2796 , L_LOG_MODULE || 'param 1'
2797 , 'p_api_version_number:' || p_api_version_number
2798 );
2799 fnd_log.string
2800 (
2801 fnd_log.level_procedure
2802 , L_LOG_MODULE || 'param 2'
2803 , 'p_init_msg_list:' || p_init_msg_list
2804 );
2805 fnd_log.string
2806 (
2807 fnd_log.level_procedure
2808 , L_LOG_MODULE || 'param 3'
2809 , 'p_commit:' || p_commit
2810 );
2811 fnd_log.string
2812 (
2813 fnd_log.level_procedure
2814 , L_LOG_MODULE || 'param 4'
2815 , 'p_object_type:' || p_object_type
2816 );
2817 fnd_log.string
2818 (
2819 fnd_log.level_procedure
2820 , L_LOG_MODULE || 'param 5'
2821 , 'p_processing_set_id:' || p_processing_set_id
2822 );
2823 END IF ;
2824
2825 IF NOT FND_API.Compatible_API_Call
2826 (
2827 L_API_VERSION
2828 , p_api_version_number
2829 , L_API_NAME
2830 , G_PKG_NAME
2831 )
2832 THEN
2833 FND_MSG_PUB.Count_And_Get
2834 (
2835 p_count => x_msg_count
2836 , p_data => x_msg_data
2837 );
2838 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2839 END IF ;
2840
2841 IF
2842 FND_API.to_Boolean(p_init_msg_list)
2843 THEN
2844 FND_MSG_PUB.initialize;
2845 END IF ;
2846
2847 ------------------------------------------------------------------------------
2848 -- Actual Logic starts below:
2849 ------------------------------------------------------------------------------
2850
2851 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2852 THEN
2853 fnd_log.string
2854 (
2855 fnd_log.level_statement
2856 , L_LOG_MODULE || 'cug_attr_tl_del_start'
2857 , 'Deleting data from table CUG_INCIDNT_ATTR_VALS_TL'
2858 );
2859 END IF ;
2860
2861 -- The following statement deletes all the translatable CIC attributes that
2862 -- are linked to the SRs in the global temp table with purge_status NULL
2863
2864 DELETE /*+ index(t) */ cug_incidnt_attr_vals_tl t
2865 WHERE incidnt_attr_val_id IN
2866 (
2867 SELECT /*+ no_unnest no_semijoin leading(j) use_concat cardinality(10) */
2868 c.incidnt_attr_val_id
2869 FROM
2870 jtf_object_purge_param_tmp j
2871 , cug_incidnt_attr_vals_b c
2872 WHERE
2873 j.object_type = 'SR'
2874 AND p_processing_set_id = j.processing_set_id
2875 AND NVL(j.purge_status, 'S') = 'S'
2876 AND c.incident_id = j.object_id
2877 );
2878
2879 l_row_count := SQL%ROWCOUNT;
2880
2881 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2882 THEN
2883 fnd_log.string
2884 (
2885 fnd_log.level_statement
2886 , L_LOG_MODULE || 'cug_attr_tl_del_end'
2887 , 'After deleting data from table CUG_INCIDNT_ATTR_VALS_TL '
2888 || l_row_count || ' rows'
2889 );
2890 END IF ;
2891
2892 ---
2893
2894 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2895 THEN
2896 fnd_log.string
2897 (
2898 fnd_log.level_statement
2899 , L_LOG_MODULE || 'cug_attr_b_del_start'
2900 , 'Deleting data from table CUG_INCIDNT_ATTR_VALS_B'
2901 );
2902 END IF ;
2903
2904 -- The following statement deletes all the CIC attributes that are
2905 -- linked to the SRs in the global temp table with purge_status NULL
2906
2907 DELETE /*+ index(b) */ cug_incidnt_attr_vals_b b
2908 WHERE incident_id IN
2909 (
2910 SELECT /*+ no_unnest no_semijoin cardinality(10) */
2911 object_id
2912 FROM
2913 jtf_object_purge_param_tmp
2914 WHERE
2915 object_type = 'SR'
2916 AND p_processing_set_id = processing_set_id
2917 AND NVL(purge_status, 'S') = 'S'
2918 );
2919
2920 l_row_count := SQL%ROWCOUNT;
2921
2922 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2923 THEN
2924 fnd_log.string
2925 (
2926 fnd_log.level_statement
2927 , L_LOG_MODULE || 'cug_attr_b_del_end'
2928 , 'After deleting data from table CUG_INCIDNT_ATTR_VALS_B '
2929 || l_row_count || ' rows'
2930 );
2931 END IF ;
2932
2933 ---
2934
2935 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2936 THEN
2937 fnd_log.string
2938 (
2939 fnd_log.level_statement
2940 , L_LOG_MODULE || 'sr_ext_attr_aud_del_start'
2941 , 'Deleting data from table CS_INCIDENTS_EXT_AUDIT'
2942 );
2943 END IF ;
2944
2945 -- The following statement deletes all the audit information captured for
2946 -- the translatable extended attributes linked to SRs in the global temp
2947 -- table with purge_status NULL
2948
2949 DELETE /*+ index(a) */ cs_incidents_ext_audit a
2950 WHERE audit_extension_id IN
2951 (
2952 SELECT /*+ unnest no_semijoin leading(j) use_nl(c) cardinality(10) */
2953 audit_extension_id
2954 FROM
2955 jtf_object_purge_param_tmp j
2956 , cs_incidents_ext_audit c
2957 WHERE
2958 j.object_type = 'SR'
2959 AND p_processing_set_id = j.processing_set_id
2960 AND NVL(j.purge_status, 'S') = 'S'
2961 AND c.incident_id = j.object_id
2962 );
2963
2964 l_row_count := SQL%ROWCOUNT;
2965
2966 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2967 THEN
2968 fnd_log.string
2969 (
2970 fnd_log.level_statement
2971 , L_LOG_MODULE || 'sr_ext_attr_aud_del_end'
2972 , 'After deleting data from table CS_INCIDENTS_EXT_AUDIT '
2973 || l_row_count || ' rows'
2974 );
2975 END IF ;
2976
2977 ---
2978
2979 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2980 THEN
2981 fnd_log.string
2982 (
2983 fnd_log.level_statement
2984 , L_LOG_MODULE || 'sr_ext_attr_del_start'
2985 , 'Deleting data from table CS_INCIDENTS_EXT_TL'
2986 );
2987 END IF ;
2988
2989 -- The following statement deletes all the translatable extended attributes
2990 -- that are linked to the SRs present in the global temp table with purge
2991 -- status NULL
2992
2993 DELETE /*+ index(e) */ cs_incidents_ext_tl e
2994 WHERE incident_id IN
2995 (
2996 SELECT /*+ no_unnest no_semijoin cardinality(10) */
2997 object_id
2998 FROM
2999 jtf_object_purge_param_tmp
3000 WHERE
3001 object_type = 'SR'
3002 AND p_processing_set_id = processing_set_id
3003 AND NVL(purge_status, 'S') = 'S'
3004 );
3005
3006 l_row_count := SQL%ROWCOUNT;
3007
3008 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3009 THEN
3010 fnd_log.string
3011 (
3012 fnd_log.level_statement
3013 , L_LOG_MODULE || 'sr_ext_attr_del_end'
3014 , 'After deleting data from table CS_INCIDENTS_EXT_TL '
3015 || l_row_count || ' rows'
3016 );
3017 END IF ;
3018
3019 ---
3020
3021 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3022 THEN
3023 fnd_log.string
3024 (
3025 fnd_log.level_statement
3026 , L_LOG_MODULE || 'sr_ext_attr_del_start'
3027 , 'Deleting data from table CS_INCIDENTS_EXT'
3028 );
3029 END IF ;
3030
3031 -- The following statement deletes all the translatable extended attributes
3032 -- that are linked to the SRs present in the global temp table with purge
3033 -- status NULL
3034
3035 DELETE /*+ index(e) */ cs_incidents_ext e
3036 WHERE incident_id IN
3037 (
3038 SELECT /*+ no_unnest no_semijoin cardinality(10) */
3039 object_id
3040 FROM
3041 jtf_object_purge_param_tmp
3042 WHERE
3043 object_type = 'SR'
3044 AND p_processing_set_id = processing_set_id
3045 AND NVL(purge_status, 'S') = 'S'
3046 );
3047
3048 l_row_count := SQL%ROWCOUNT;
3049
3050 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3051 THEN
3052 fnd_log.string
3053 (
3054 fnd_log.level_statement
3055 , L_LOG_MODULE || 'sr_ext_attr_del_end'
3056 , 'After deleting data from table CS_INCIDENTS_EXT '
3057 || l_row_count || ' rows'
3058 );
3059 END IF ;
3060
3061 ---
3062
3063 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
3064 THEN
3065 fnd_log.string
3066 (
3067 fnd_log.level_procedure
3068 , L_LOG_MODULE || 'end'
3069 , 'Completed work in ' || L_API_NAME_FULL || ' with return status '
3070 || x_return_status
3071 );
3072 END IF ;
3073
3074 EXCEPTION
3075
3076 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3077 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3078
3079 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
3080 THEN
3081 fnd_log.string
3082 (
3083 fnd_log.level_unexpected
3084 , L_LOG_MODULE || 'unexpected_error'
3085 , 'Inside WHEN FND_API.G_EXC_UNEXPECTED_ERROR of ' || L_API_NAME_FULL
3086 );
3087 END IF ;
3088
3089 WHEN OTHERS THEN
3090 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3091 FND_MESSAGE.Set_Name('CS', 'CS_SR_ATTR_VAL_DEL_FAIL');
3092 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
3093 FND_MESSAGE.Set_Token('ERROR', SQLERRM);
3094 FND_MSG_PUB.ADD;
3095
3096 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
3097 THEN
3098 fnd_log.string
3099 (
3100 fnd_log.level_unexpected
3101 , L_LOG_MODULE || 'when_others'
3102 , 'Inside WHEN OTHERS of ' || L_API_NAME_FULL || '. Oracle Error was:'
3103 );
3104 fnd_log.string
3105 (
3106 fnd_log.level_unexpected
3107 , L_LOG_MODULE || 'when_others'
3108 , SQLERRM
3109 );
3110 END IF ;
3111 END Delete_Sr_Attributes;
3112
3113 --------------------------------------------------------------------------------
3114 -- Procedure Name : CREATE_PURGEAUDIT_RECORDS
3115 --
3116 -- Parameters (other than standard ones)
3117 -- IN
3118 -- p_purge_set_id : Id that helps the API in identifying the
3119 -- set of SRs for which the child objects
3120 -- have to be deleted.
3121 -- p_incident_id_tbl : pl/sql table containing all the SR ids
3122 -- that have been purged successfully
3123 -- p_incident_number_tbl : pl/sql table containing all the SR
3124 -- numbers that have been purged
3125 -- successfully
3126 -- p_incident_type_id_tbl : pl/sql table containing type ids of all
3127 -- the SRs that have been purged
3128 -- successfully
3129 -- p_customer_id_tbl : pl/sql table containing customer ids of
3130 -- all the SRs that have been purged
3131 -- successfully
3132 -- p_inv_organization_id_tbl : pl/sql table containing org ids of all
3133 -- the SRs that have been purged
3134 -- successfully
3135 -- p_inventory_item_id_tbl : pl/sql table containing item ids of all
3136 -- the SRs that have been purged
3137 -- successfully
3138 -- p_customer_product_id_tbl : pl/sql table containing instance ids of
3139 -- all the SRs that have been purged
3140 -- successfully
3141 -- p_inc_creation_date_tbl : pl/sql table containing creation dates
3142 -- of all the SRs that have been purged
3143 -- successfully
3144 -- p_inc_last_update_date_tbl : pl/sql table containing last update
3145 -- dates ids of all the SRs that have been
3146 -- purged successfully
3147 -- p_incident_id_tl_tbl : pl/sql table containing SRs ids (as
3148 -- in TL table) of all the SRs that have
3149 -- been purged successfully
3150 -- p_language_tbl : pl/sql table containing language of all
3151 -- the SRs that have been purged
3152 -- successfully
3153 -- p_source_lang_tbl : pl/sql table containing source lang of
3154 -- all the SRs that have been purged
3155 -- successfully
3156 -- p_summary_tbl : pl/sql table containing summary of all
3157 -- the SRs that have been purged
3158 -- successfully
3159 --
3160 -- Description
3161 -- This procedure creates rows in the purge audit table to preserve the
3162 -- basic information related to the SRs that were purged using the SR
3163 -- purge concurrent program. It is called from the DeleteServiceRequest
3164 -- procedure with pl/sql tables containing all the data that need to
3165 -- be preserved.
3166 --
3167 -- HISTORY
3168 --
3169 ----------------+------------+--------------------------------------------------
3170 -- DATE | UPDATED BY | Change Description
3171 ----------------+------------+--------------------------------------------------
3172 -- 2-Aug_2005 | varnaray | Created
3173 -- | |
3174 ----------------+------------+--------------------------------------------------
3175 /*#
3176 * This procedure creates rows in the purge audit table to preserve the basic
3177 * information related to the SRs that were purged using the SR purge concurrent
3178 * program. It is called from the DeleteServiceRequest procedure with pl/sql
3179 * tables containing all the data that need to be preserved.
3180 * @param p_purge_set_id Id that helps the API in identifying the set of SRs
3181 * for which the child objects have to be deleted.
3182 * @param p_incident_id_tbl pl/sql table containing all the SR ids that have
3183 * been purged successfully
3184 * @param p_incident_number_tbl pl/sql table containing all the SR numbers that
3185 * have been purged successfully
3186 * @param p_incident_type_id_tbl pl/sql table containing type ids of all the
3187 * SRs that have been purged successfully
3188 * @param p_customer_id_tbl pl/sql table containing customer ids of all the
3189 * SRs that have been purged successfully
3190 * @param p_inv_organization_id_tbl pl/sql table containing org ids of all the
3191 * SRs that have been purged successfully
3192 * @param p_inventory_item_id_tbl pl/sql table containing item ids of all the
3193 * SRs that have been purged successfully
3194 * @param p_customer_product_id_tbl pl/sql table containing instance ids of
3195 * all the SRs that have been purged successfully
3196 * @param p_inc_creation_date_tbl pl/sql table containing creation dates of
3197 * all the SRs that have been purged successfully
3198 * @param p_inc_last_update_date_tbl pl/sql table containing last update
3199 * dates ids of all the SRs that have been purged successfully
3200 * @param p_incident_id_tl_tbl pl/sql table containing SRs ids (as in TL
3201 * table) of all the SRs that have been purged successfully
3202 * @param p_language_tbl pl/sql table containing language of all the SRs
3203 * that have been purged successfully
3204 * @param p_source_lang_tbl pl/sql table containing source lang of all the SRs
3205 * that have been purged successfully
3206 * @param p_summary_tbl pl/sql table containing summary of all the SRs
3207 * that have been purged successfully
3208 * @rep:scope internal
3209 * @rep:product CS
3210 * @rep:displayname Create Purge Audit Records
3211 */
3212 PROCEDURE Create_Purgeaudit_Records
3213 (
3214 p_api_version_number IN NUMBER := 1.0
3215 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
3216 , p_commit IN VARCHAR2 := FND_API.G_FALSE
3217 , p_purge_set_id IN NUMBER
3218 , p_incident_id_tbl IN t_number_tbl
3219 , p_incident_number_tbl IN t_long_string_tbl
3220 , p_incident_type_id_tbl IN t_number_tbl
3221 , p_customer_id_tbl IN t_number_tbl
3222 , p_inv_organization_id_tbl IN t_number_tbl
3223 , p_inventory_item_id_tbl IN t_number_tbl
3224 , p_customer_product_id_tbl IN t_number_tbl
3225 , p_inc_creation_date_tbl IN t_date_tbl
3226 , p_inc_last_update_date_tbl IN t_date_tbl
3227 , p_incident_id_tl_tbl IN t_number_tbl
3228 , p_language_tbl IN t_string_tbl
3229 , p_source_lang_tbl IN t_string_tbl
3230 , p_summary_tbl IN t_long_string_tbl
3231 , x_return_status OUT NOCOPY VARCHAR2
3232 , x_msg_count OUT NOCOPY NUMBER
3233 , x_msg_data OUT NOCOPY VARCHAR2
3234 )
3235 IS
3236 --------------------------------------------------------------------------------
3237 L_API_VERSION CONSTANT NUMBER := 1.0;
3238 L_API_NAME CONSTANT VARCHAR2(30) := 'CREATE_PURGEAUDIT_RECORDS';
3239 L_API_NAME_FULL CONSTANT VARCHAR2(61) := G_PKG_NAME || '.' || L_API_NAME;
3240 L_LOG_MODULE CONSTANT VARCHAR2(255) := 'cs.plsql.' || L_API_NAME_FULL || '.';
3241
3242 l_user_id NUMBER;
3243 l_login_id NUMBER;
3244
3245 l_row_count NUMBER;
3246
3247 BEGIN
3248 x_return_status := FND_API.G_RET_STS_SUCCESS;
3249
3250 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
3251 THEN
3252 fnd_log.string
3253 (
3254 fnd_log.level_procedure
3255 , L_LOG_MODULE || 'start'
3256 , 'Inside ' || L_API_NAME_FULL || ', called with parameters below:'
3257 );
3258 fnd_log.string
3259 (
3260 fnd_log.level_procedure
3261 , L_LOG_MODULE || 'param 1'
3262 , 'p_api_version_number:' || p_api_version_number
3263 );
3264 fnd_log.string
3265 (
3266 fnd_log.level_procedure
3267 , L_LOG_MODULE || 'param 2'
3268 , 'p_init_msg_list:' || p_init_msg_list
3269 );
3270 fnd_log.string
3271 (
3272 fnd_log.level_procedure
3273 , L_LOG_MODULE || 'param 3'
3274 , 'p_commit:' || p_commit
3275 );
3276 fnd_log.string
3277 (
3278 fnd_log.level_procedure
3279 , L_LOG_MODULE || 'param 4'
3280 , 'p_purge_set_id' || p_purge_set_id
3281 );
3282 END IF ;
3283
3284 l_user_id := fnd_global.user_id;
3285 l_login_id := fnd_global.login_id;
3286
3287 IF NOT FND_API.Compatible_API_Call
3288 (
3289 L_API_VERSION
3290 , p_api_version_number
3291 , L_API_NAME
3292 , G_PKG_NAME
3293 )
3294 THEN
3295 FND_MSG_PUB.Count_And_Get
3296 (
3297 p_count => x_msg_count
3298 , p_data => x_msg_data
3299 );
3300 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3301 END IF ;
3302
3303 IF FND_API.to_Boolean(p_init_msg_list)
3304 THEN
3305 FND_MSG_PUB.initialize;
3306 END IF ;
3307
3308 ------------------------------------------------------------------------------
3309 -- Actual Logic starts below:
3310 ------------------------------------------------------------------------------
3311
3312 IF p_incident_id_tbl.COUNT > 0
3313 THEN
3314 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3315 THEN
3316 fnd_log.string
3317 (
3318 fnd_log.level_statement
3319 , L_LOG_MODULE || 'ins_purge_aud_b_start'
3320 , 'Inserting data into table CS_INCIDENTS_PURGE_AUDIT_B'
3321 );
3322 END IF ;
3323
3324 -- Inserting information relating to purged SRs into the audit base table
3325
3326 FORALL j IN p_incident_id_tbl.FIRST..p_incident_id_tbl.LAST
3327 INSERT INTO cs_incidents_purge_audit_b
3328 (
3329 purge_id
3330 , incident_id
3331 , incident_number
3332 , incident_type_id
3333 , customer_id
3334 , inv_organization_id
3335 , inventory_item_id
3336 , customer_product_id
3337 , inc_creation_date
3338 , inc_last_update_date
3339 , purged_date
3340 , purged_by
3341 , creation_date
3342 , created_by
3343 , last_update_date
3344 , last_updated_by
3345 , last_update_login
3346 )
3347 VALUES
3348 (
3349 p_purge_set_id
3350 , p_incident_id_tbl(j)
3351 , p_incident_number_tbl(j)
3352 , p_incident_type_id_tbl(j)
3353 , p_customer_id_tbl(j)
3354 , p_inv_organization_id_tbl(j)
3355 , p_inventory_item_id_tbl(j)
3356 , p_customer_product_id_tbl(j)
3357 , p_inc_creation_date_tbl(j)
3358 , p_inc_last_update_date_tbl(j)
3359 , SYSDATE
3360 , l_user_id
3361 , SYSDATE
3362 , l_user_id
3363 , SYSDATE
3364 , l_user_id
3365 , l_login_id
3366 );
3367
3368 l_row_count := SQL%ROWCOUNT;
3369
3370 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3371 THEN
3372 fnd_log.string
3373 (
3374 fnd_log.level_statement
3375 , L_LOG_MODULE || 'ins_purge_aud_b_end'
3376 , 'After inserting data into table CS_INCIDENTS_PURGE_AUDIT_B '
3377 || l_row_count || ' rows'
3378 );
3379 END IF ;
3380 ELSIF p_incident_id_tbl.COUNT <= 0
3381 THEN
3382 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3383 THEN
3384 fnd_log.string
3385 (
3386 fnd_log.level_statement
3387 , L_LOG_MODULE || 'ins_purge_aud_b_err'
3388 , 'While inserting data into table CS_INCIDENTS_PURGE_AUDIT_B '
3389 || 'p_incident_id_tbl had ' || p_incident_id_tbl.COUNT || ' rows'
3390 );
3391 END IF ;
3392 END IF;
3393
3394 IF p_incident_id_tl_tbl.COUNT > 0
3395 THEN
3396 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3397 THEN
3398 fnd_log.string
3399 (
3400 fnd_log.level_statement
3401 , L_LOG_MODULE || 'ins_purge_aud_tl_start'
3402 , 'Inserting data into table CS_INCIDENTS_PURGE_AUDIT_TL'
3403 );
3404 END IF ;
3405
3406 -- Inserting translatable information relating to
3407 -- purged SRs into the audit base table
3408
3409 FORALL j IN p_incident_id_tl_tbl.FIRST..p_incident_id_tl_tbl.LAST
3410 INSERT INTO cs_incidents_purge_audit_tl
3411 (
3412 purge_id
3413 , incident_id
3414 , language
3415 , source_lang
3416 , summary
3417 , creation_date
3418 , created_by
3419 , last_update_date
3420 , last_updated_by
3421 , last_update_login
3422 )
3423 VALUES
3424 (
3425 p_purge_set_id
3426 , p_incident_id_tl_tbl(j)
3427 , p_language_tbl(j)
3428 , p_source_lang_tbl(j)
3429 , p_summary_tbl(j)
3430 , SYSDATE
3431 , l_user_id
3432 , SYSDATE
3433 , l_user_id
3434 , l_login_id
3435 );
3436
3437 l_row_count := SQL%ROWCOUNT;
3438
3439 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3440 THEN
3441 fnd_log.string
3442 (
3443 fnd_log.level_statement
3444 , L_LOG_MODULE || 'ins_purge_aud_tl_end'
3445 , 'After inserting data into table CS_INCIDENTS_PURGE_AUDIT_TL '
3446 || l_row_count || ' rows'
3447 );
3448 END IF ;
3449 ELSIF p_incident_id_tl_tbl.COUNT <= 0
3450 THEN
3451 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3452 THEN
3453 fnd_log.string
3454 (
3455 fnd_log.level_statement
3456 , L_LOG_MODULE || 'ins_purge_aud_tl_err'
3457 , 'While inserting data into table CS_INCIDENTS_PURGE_AUDIT_TL '
3458 || 'p_incident_id_tl_tbl had ' || p_incident_id_tl_tbl.COUNT || ' rows'
3459 );
3460 END IF ;
3461 END IF;
3462
3463 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
3464 THEN
3465 fnd_log.string
3466 (
3467 fnd_log.level_procedure
3468 , L_LOG_MODULE || 'end'
3469 , 'Completed work in ' || L_API_NAME_FULL || ' with return status '
3470 || x_return_status
3471 );
3472 END IF ;
3473
3474 EXCEPTION
3475
3476 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3477 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3478
3479 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
3480 THEN
3481 fnd_log.string
3482 (
3483 fnd_log.level_unexpected
3484 , L_LOG_MODULE || 'unexpected_error'
3485 , 'Inside WHEN FND_API.G_EXC_UNEXPECTED_ERROR of ' || L_API_NAME_FULL
3486 );
3487 END IF ;
3488
3489 WHEN OTHERS THEN
3490 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3491 FND_MESSAGE.Set_Name('CS', 'CS_SR_PRG_CRT_FAIL');
3492 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
3493 FND_MESSAGE.Set_Token('ERROR', SQLERRM);
3494 FND_MSG_PUB.ADD;
3495
3496 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
3497 THEN
3498 fnd_log.string
3499 (
3500 fnd_log.level_unexpected
3501 , L_LOG_MODULE || 'when_others'
3502 , 'Inside WHEN OTHERS of ' || L_API_NAME_FULL || '. Oracle Error was:'
3503 );
3504 fnd_log.string
3505 (
3506 fnd_log.level_unexpected
3507 , L_LOG_MODULE || 'when_others'
3508 , SQLERRM
3509 );
3510 END IF ;
3511 END Create_Purgeaudit_Records;
3512 --------------------------------------------------------------------------------
3513 -- Procedure Name : CHECK_USER_TERMINATION
3514 --
3515 -- Parameters (other than standard ones)
3516 -- NONE.
3517 --
3518 -- Description
3519 -- This procedure is called before performing any step during the purge
3520 -- process so that if the user requests a termination of the purge process
3521 -- for some reason, the process should end gracefully.
3522 --
3523 -- HISTORY
3524 --
3525 ----------------+------------+--------------------------------------------------
3526 -- DATE | UPDATED BY | Change Description
3527 ----------------+------------+--------------------------------------------------
3528 -- 2-Aug_2005 | varnaray | Created
3529 -- | |
3530 ----------------+------------+--------------------------------------------------
3531 /*#
3532 * This procedure is called before performing any step during the purge process
3533 * so that if the user requests a termination of the purge process for some
3534 * reason, the process should end gracefully.
3535 */
3536 PROCEDURE Check_User_Termination
3537 IS
3538 --------------------------------------------------------------------------------
3539 L_API_VERSION CONSTANT NUMBER := 1.0;
3540 L_API_NAME CONSTANT VARCHAR2(30) := 'CHECK_USER_TERMINATION';
3541 L_API_NAME_FULL CONSTANT VARCHAR2(61) := G_PKG_NAME || '.' || L_API_NAME;
3542 L_LOG_MODULE CONSTANT VARCHAR2(255) := 'cs.plsql.' || L_API_NAME_FULL || '.';
3543
3544 l_request_id NUMBER;
3545 l_phase VARCHAR2(100);
3546 l_status VARCHAR2(100);
3547 l_dev_phase VARCHAR2(100);
3548 l_dev_status VARCHAR2(100);
3549 l_message VARCHAR2(500);
3550
3551 BEGIN
3552 l_request_id := fnd_global.conc_request_id;
3553
3554 IF l_request_id <> -1
3555
3556 -- The check for user termination is only
3557 -- required if the SR Delete Helper is called
3558 -- from a concurrent program. If l_request_id
3559 -- is -1, it means that the procedure is not
3560 -- called from a concurrent program. Hence the
3561 -- check for user termination may not be required.
3562
3563 THEN
3564 IF fnd_concurrent.get_request_status
3565 (
3566 request_id => l_request_id
3567 , phase => l_phase
3568 , status => l_status
3569 , dev_phase => l_dev_phase
3570 , dev_status => l_dev_status
3571 , message => l_message
3572 )
3573 THEN
3574 IF l_dev_status = 'TERMINATING'
3575 AND l_dev_phase = 'RUNNING'
3576 OR l_dev_status = 'TERMINATED'
3577 AND l_dev_phase = 'COMPLETE'
3578
3579 -- If the user terminates the concurrent request
3580 -- raise an exception and add a message to the stack
3581
3582 THEN
3583 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3584 THEN
3585 fnd_log.string
3586 (
3587 fnd_log.level_statement
3588 , L_LOG_MODULE || 'conc_req_user_stop'
3589 , 'This concurrent request is in status ' || l_dev_status
3590 || ' and phase ' || l_dev_phase
3591 );
3592 END IF ;
3593
3594 FND_MESSAGE.Set_Name('CS', 'CS_SR_USER_STOPPED');
3595 FND_MSG_PUB.ADD;
3596
3597 -- Setting the request_data to 'T'
3598 -- indicating that the request has
3599 -- been terminated by the user
3600
3601 fnd_conc_global.set_req_globals
3602 (
3603 request_data => 'T'
3604 );
3605
3606 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3607 END IF;
3608 ELSE
3609 -- if fnd_concurrent.get_request_status failed...
3610
3611 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
3612 THEN
3613 fnd_log.string
3614 (
3615 fnd_log.level_unexpected
3616 , L_LOG_MODULE || 'conc_req_status_fail'
3617 , 'Failed while getting the status of this request'
3618 );
3619 END IF ;
3620 END IF;
3621 END IF;
3622 END Check_User_Termination;
3623 --------------------------------------------------------------------------------
3624 END cs_sr_delete_util;