1 PACKAGE BODY cs_sr_delete_util AS
2 /* $Header: csvsrdlb.pls 120.10.12020000.2 2012/07/05 05:39:15 gasankar 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 -- Bug 10090362: Changed the hint in the sub query
1727
1728 DELETE /*+ index(t) */ cs_incidents_all_tl t
1729 WHERE
1730 incident_id IN
1731 (
1732 SELECT /*+ cardinality(jtf_object_purge_param_tmp, 10) */
1733 object_id
1734 FROM
1735 jtf_object_purge_param_tmp
1736 WHERE
1737 object_type = 'SR'
1738 AND p_processing_set_id = processing_set_id
1739 AND NVL
1740 (
1741 purge_status
1742 , 'S'
1743 ) = 'S'
1744 );
1745
1746 l_row_count := SQL%ROWCOUNT;
1747
1748 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1749 THEN
1750 fnd_log.string
1751 (
1752 fnd_log.level_statement
1753 , L_LOG_MODULE || 'del_srtl_end'
1754 , 'After deleting rows from table CS_INCIDENTS_ALL_TL ' || l_row_count
1755 || ' rows'
1756 );
1757 END IF ;
1758 END IF;
1759
1760 ---
1761
1762 Check_User_Termination;
1763
1764 ---
1765
1766 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1767 THEN
1768 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1769 THEN
1770 fnd_log.string
1771 (
1772 fnd_log.level_statement
1773 , L_LOG_MODULE || 'del_srb_start'
1774 , 'Deleting rows from table CS_INCIDENTS_ALL_B'
1775 );
1776 END IF ;
1777
1778 -- Delete all the attributes of the
1779 -- service request from the table
1780 -- Bug 10090362: Changed the hint in the sub query
1781
1782 DELETE /*+ index(b) */ cs_incidents_all_b b
1783 WHERE
1784 incident_id IN
1785 (
1786 SELECT /*+ cardinality(jtf_object_purge_param_tmp, 10) */
1787 object_id
1788 FROM
1789 jtf_object_purge_param_tmp
1790 WHERE
1791 object_type = 'SR'
1792 AND p_processing_set_id = processing_set_id
1793 AND NVL
1794 (
1795 purge_status
1796 , 'S'
1797 ) = 'S'
1798 );
1799
1800 l_row_count := SQL%ROWCOUNT;
1801
1802 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1803 THEN
1804 fnd_log.string
1805 (
1806 fnd_log.level_statement
1807 , L_LOG_MODULE || 'del_srb_end'
1808 , 'After deleting rows from table CS_INCIDENTS_ALL_B ' || l_row_count
1809 || ' rows'
1810 );
1811 END IF ;
1812 END IF;
1813
1814 ---
1815
1816 Check_User_Termination;
1817
1818 ---
1819
1820 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1821 THEN
1822 IF l_incident_id_status_tbl.COUNT > 0
1823
1824 -- If there are any SRs with purge_status E indicating
1825 -- error while validation, the status of these SRs is
1826 -- updated back to the Staging Table to facilitate
1827 -- generation of concurrent request output file.
1828
1829 THEN
1830 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1831 THEN
1832 fnd_log.string
1833 (
1834 fnd_log.level_statement
1835 , L_LOG_MODULE || 'write_staging_start'
1836 , 'Updating purge status into table CS_INCIDENTS_PURGE_STAGING'
1837 );
1838 END IF ;
1839
1840 -- Updating the staging table to indicate the SRs that failed during purge
1841 -- due to validations against child objects.
1842
1843 FORALL j IN l_incident_id_status_tbl.FIRST..l_incident_id_status_tbl.LAST
1844 UPDATE cs_incidents_purge_staging
1845 SET
1846 purge_status = 'E'
1847 , purge_error_message = l_purge_error_message_tbl(j)
1848 WHERE
1849 incident_id = l_incident_id_status_tbl(j);
1850
1851 l_row_count := SQL%ROWCOUNT;
1852
1853 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1854 THEN
1855 fnd_log.string
1856 (
1857 fnd_log.level_statement
1858 , L_LOG_MODULE || 'write_staging_end'
1859 , 'After updating purge status into table CS_INCIDENTS_PURGE_STAGING '
1860 || l_row_count || ' rows'
1861 );
1862 END IF ;
1863 ELSIF l_incident_id_status_tbl.COUNT <= 0
1864 THEN
1865 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1866 THEN
1867 fnd_log.string
1868 (
1869 fnd_log.level_statement
1870 , L_LOG_MODULE || 'write_staging_norows'
1871 , 'While updating purge status into table CS_INCIDENTS_PURGE_STAGING '
1872 || 'l_incident_id_status_tbl had ' || l_incident_id_status_tbl.COUNT
1873 || ' rows'
1874 );
1875 END IF ;
1876 END IF;
1877 END IF;
1878
1879 ---
1880
1881 Check_User_Termination;
1882
1883 ---
1884
1885 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1886 THEN
1887 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1888 THEN
1889 fnd_log.string
1890 (
1891 fnd_log.level_statement
1892 , L_LOG_MODULE || 'write_staging_success_start'
1893 , 'Updating rows processed successfully with purge status = S'
1894 );
1895 END IF ;
1896
1897 -- Setting all the rows in the staging table
1898 -- belonging to this batch which were processed
1899 -- successfully to purge_status 'S' to be able
1900 -- to differentiate these rows from the ones
1901 -- that were not yet processed.
1902
1903 UPDATE cs_incidents_purge_staging
1904 SET
1905 purge_status = 'S'
1906 WHERE
1907 incident_id IN
1908 (
1909 SELECT
1910 object_id
1911 FROM
1912 jtf_object_purge_param_tmp j
1913 WHERE
1914 j.object_type = 'SR'
1915 AND NVL
1916 (
1917 j.purge_status
1918 , 'S'
1919 ) = 'S'
1920 AND j.processing_set_id = p_processing_set_id
1921 );
1922 l_row_count := SQL%ROWCOUNT;
1923
1924 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1925 THEN
1926 fnd_log.string
1927 (
1928 fnd_log.level_statement
1929 , L_LOG_MODULE || 'write_staging_success_end'
1930 , 'After updating rows processed successfully with '
1931 || 'purge status = S ' || l_row_count
1932 );
1933 END IF ;
1934 END IF;
1935
1936 ---
1937
1938 Check_User_Termination;
1939
1940 ---
1941
1942 IF x_return_status = FND_API.G_RET_STS_SUCCESS
1943 AND p_audit_required = 'Y'
1944
1945 -- If audit information is required as per profile option
1946 -- CS_SR_PURGE_AUDIT_REQUIRED, then proceed further
1947
1948 THEN
1949 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1950 THEN
1951 fnd_log.string
1952 (
1953 fnd_log.level_statement
1954 , L_LOG_MODULE || 'purge_audit_create_start'
1955 , 'Calling the procedure CREATE_PURGEAUDIT_RECORDS to create purge '
1956 || 'audit information'
1957 );
1958 END IF ;
1959
1960 -- This procedure takes as input all the data that needs to be captured
1961 -- in the purge audit tables and staging table. Data of all SRs that were
1962 -- successfully purged are entered in the audit tables. For the SRs for
1963 -- which purge failed, the staging table is updated with the purge error
1964 -- message and purge status.
1965
1966 Create_Purgeaudit_Records
1967 (
1968 p_api_version_number => 1.0
1969 , p_init_msg_list => FND_API.G_FALSE
1970 , p_commit => FND_API.G_FALSE
1971 , p_purge_set_id => l_purge_set_id
1972 , p_incident_id_tbl => l_incident_id_tbl
1973 , p_incident_number_tbl => l_incident_number_tbl
1974 , p_incident_type_id_tbl => l_incident_type_id_tbl
1975 , p_customer_id_tbl => l_customer_id_tbl
1976 , p_inv_organization_id_tbl => l_inv_organization_id_tbl
1977 , p_inventory_item_id_tbl => l_inventory_item_id_tbl
1978 , p_customer_product_id_tbl => l_customer_product_id_tbl
1979 , p_inc_creation_date_tbl => l_inc_creation_date_tbl
1980 , p_inc_last_update_date_tbl => l_inc_last_update_date_tbl
1981 , p_incident_id_tl_tbl => l_incident_id_tl_tbl
1982 , p_language_tbl => l_language_tbl
1983 , p_source_lang_tbl => l_source_lang_tbl
1984 , p_summary_tbl => l_summary_tbl
1985 , x_return_status => x_return_status
1986 , x_msg_count => x_msg_count
1987 , x_msg_data => x_msg_data
1988 );
1989
1990 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
1991 THEN
1992 fnd_log.string
1993 (
1994 fnd_log.level_statement
1995 , L_LOG_MODULE || 'purge_audit_create_end'
1996 , 'After calling the procedure CREATE_PURGEAUDIT_RECORDS. '
1997 || 'Returned with status ' || x_return_status
1998 );
1999 END IF ;
2000 END IF;
2001
2002 ---
2003
2004 Check_User_Termination;
2005
2006 ---
2007
2008 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2009 THEN
2010 fnd_log.string
2011 (
2012 fnd_log.level_procedure
2013 , L_LOG_MODULE || 'end'
2014 , 'Completed work in ' || L_API_NAME_FULL || ' with return status '
2015 || x_return_status
2016 );
2017 END IF ;
2018
2019 EXCEPTION
2020
2021 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2022 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2023
2024 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
2025 THEN
2026 fnd_log.string
2027 (
2028 fnd_log.level_unexpected
2029 , L_LOG_MODULE || 'unexpected_error'
2030 , 'Inside WHEN FND_API.G_EXC_UNEXPECTED_ERROR of ' || L_API_NAME_FULL
2031 );
2032
2033 x_msg_count := FND_MSG_PUB.Count_Msg;
2034
2035 IF x_msg_count > 0
2036 THEN
2037 FOR
2038 i IN 1..x_msg_count
2039 LOOP
2040 FND_MSG_PUB.Get
2041 (
2042 p_msg_index => i
2043 , p_encoded => 'F'
2044 , p_data => x_msg_data
2045 , p_msg_index_out => x_msg_index_out
2046 );
2047 fnd_log.string
2048 (
2049 fnd_log.level_unexpected
2050 , L_LOG_MODULE || 'unexpected_error'
2051 , 'Error encountered is : ' || x_msg_data || ' [Index:'
2052 || x_msg_index_out || ']'
2053 );
2054 END LOOP;
2055 END IF ;
2056 END IF ;
2057
2058 WHEN OTHERS THEN
2059 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2060 FND_MESSAGE.Set_Name('CS', 'CS_SR_DEL_FAIL');
2061 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
2062 FND_MESSAGE.Set_Token('ERROR', SQLERRM);
2063 FND_MSG_PUB.ADD;
2064
2065 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
2066 THEN
2067 fnd_log.string
2068 (
2069 fnd_log.level_unexpected
2070 , L_LOG_MODULE || 'when_others'
2071 , 'Inside WHEN OTHERS of ' || L_API_NAME_FULL || '. Oracle Error was:'
2072 );
2073 fnd_log.string
2074 (
2075 fnd_log.level_unexpected
2076 , L_LOG_MODULE || 'when_others'
2077 , SQLERRM
2078 );
2079 END IF ;
2080
2081 END Delete_ServiceRequest;
2082
2083 --------------------------------------------------------------------------------
2084 -- Procedure Name : DELETE_CONTACTS
2085 --
2086 -- Parameters (other than standard ones)
2087 -- IN
2088 -- p_object_type : Type of object for which this procedure is
2089 -- being called. (Here it will be 'SR')
2090 -- p_processing_set_id : Id that helps the API in identifying the
2091 -- set of SRs for which the child objects have
2092 -- to be deleted.
2093 --
2094 -- Description
2095 -- This procedure delets all the contacts, related to an SR present in the
2096 -- global temp table with purge status NULL along with contact audit
2097 -- information, party role extended attributes and party role extended
2098 -- attribute audit information
2099 -- HISTORY
2100 --
2101 ----------------+------------+--------------------------------------------------
2102 -- DATE | UPDATED BY | Change Description
2103 ----------------+------------+--------------------------------------------------
2104 -- 2-Aug_2005 | varnaray | Created
2105 -- | |
2106 ----------------+------------+--------------------------------------------------
2107 /*#
2108 * This procedure delets all the contacts, related to an SR present in the
2109 * global temp table with purge status NULL along with contact audit
2110 * information, party role extended attributes and party role extended
2111 * attribute audit information
2112 * @param p_object_type Type of object for which this procedure is being called.
2113 * (Here it will be 'SR')
2114 * @param p_processing_set_id Id that helps the API in identifying the set of
2115 * SRs for which the child objects have to be deleted.
2116 * @rep:scope internal
2117 * @rep:product CS
2118 * @rep:displayname Delete Contacts
2119 */
2120 PROCEDURE Delete_Contacts
2121 (
2122 p_api_version_number IN NUMBER := 1.0
2123 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
2124 , p_commit IN VARCHAR2 := FND_API.G_FALSE
2125 , p_object_type IN VARCHAR2
2126 , p_processing_set_id IN NUMBER
2127 , x_return_status OUT NOCOPY VARCHAR2
2128 , x_msg_count OUT NOCOPY NUMBER
2129 , x_msg_data OUT NOCOPY VARCHAR2
2130 )
2131 IS
2132 --------------------------------------------------------------------------------
2133 L_API_VERSION CONSTANT NUMBER := 1.0;
2134 L_API_NAME CONSTANT VARCHAR2(30) := 'DELETE_CONTACTS';
2135 L_API_NAME_FULL CONSTANT VARCHAR2(61) := G_PKG_NAME || '.' || L_API_NAME;
2136 L_LOG_MODULE CONSTANT VARCHAR2(255) := 'cs.plsql.' || L_API_NAME_FULL || '.';
2137
2138 l_row_count NUMBER := 0;
2139
2140 BEGIN
2141 x_return_status := FND_API.G_RET_STS_SUCCESS;
2142
2143 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2144 THEN
2145 fnd_log.string
2146 (
2147 fnd_log.level_procedure
2148 , L_LOG_MODULE || 'start'
2149 , 'Inside ' || L_API_NAME_FULL || ', called with parameters below:'
2150 );
2151 fnd_log.string
2152 (
2153 fnd_log.level_procedure
2154 , L_LOG_MODULE || 'param 1'
2155 , 'p_api_version_number:' || p_api_version_number
2156 );
2157 fnd_log.string
2158 (
2159 fnd_log.level_procedure
2160 , L_LOG_MODULE || 'param 2'
2161 , 'p_init_msg_list:' || p_init_msg_list
2162 );
2163 fnd_log.string
2164 (
2165 fnd_log.level_procedure
2166 , L_LOG_MODULE || 'param 3'
2167 , 'p_commit:' || p_commit
2168 );
2169 fnd_log.string
2170 (
2171 fnd_log.level_procedure
2172 , L_LOG_MODULE || 'param 4'
2173 , 'p_object_type:' || p_object_type
2174 );
2175 fnd_log.string
2176 (
2177 fnd_log.level_procedure
2178 , L_LOG_MODULE || 'param 5'
2179 , 'p_processing_set_id:' || p_processing_set_id
2180 );
2181 END IF ;
2182
2183 IF NOT FND_API.Compatible_API_Call
2184 (
2185 L_API_VERSION
2186 , p_api_version_number
2187 , L_API_NAME
2188 , G_PKG_NAME
2189 )
2190 THEN
2191 FND_MSG_PUB.Count_And_Get
2192 (
2193 p_count => x_msg_count
2194 , p_data => x_msg_data
2195 );
2196 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2197 END IF ;
2198
2199 IF
2200 FND_API.to_Boolean(p_init_msg_list)
2201 THEN
2202 FND_MSG_PUB.initialize;
2203 END IF ;
2204
2205 ------------------------------------------------------------------------------
2206 -- Actual Logic starts below:
2207 ------------------------------------------------------------------------------
2208
2209 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2210 THEN
2211 fnd_log.string
2212 (
2213 fnd_log.level_statement
2214 , L_LOG_MODULE || 'del_cont_ext_aud_start'
2215 , 'Deleting data from table CS_SR_CONTACTS_EXT_AUDIT'
2216 );
2217 END IF ;
2218
2219 -- The following statement deletes the audit information captured for
2220 -- the translatable Party role extended attributes related to SRs in the
2221 -- global temp table with purge status NULL.
2222
2223 DELETE /*+ index(a) */ cs_sr_contacts_ext_audit a
2224 WHERE
2225 incident_id IN
2226 (
2227 SELECT /*+ unnest no_semijoin cardinality(10) */
2228 object_id
2229 FROM
2230 jtf_object_purge_param_tmp
2231 WHERE
2232 object_type = 'SR'
2233 AND p_processing_set_id = processing_set_id
2234 AND NVL
2235 (
2236 purge_status
2237 , 'S'
2238 ) = 'S'
2239 );
2240
2241 l_row_count := SQL%ROWCOUNT;
2242
2243 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2244 THEN
2245 fnd_log.string
2246 (
2247 fnd_log.level_statement
2248 , L_LOG_MODULE || 'del_cont_ext_aud_end'
2249 , 'After deleting data from table CS_SR_CONTACTS_EXT_AUDIT '
2250 || l_row_count || ' rows'
2251 );
2252 END IF ;
2253
2254 ---
2255
2256 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2257 THEN
2258 fnd_log.string
2259 (
2260 fnd_log.level_statement
2261 , L_LOG_MODULE || 'del_cont_ext_start'
2262 , 'Deleting data from table CS_SR_CONTACTS_EXT_TL'
2263 );
2264 END IF ;
2265
2266 -- This statement deletes all the translatable extended attributes attached
2267 -- to contacts that are linked to an SR that is available in the global
2268 -- temp table with purge status NULL.
2269
2270 DELETE /*+ index(e) */ cs_sr_contacts_ext_tl e
2271 WHERE incident_id IN
2272 (
2273 SELECT /*+ no_unnest no_semijoin cardinality(10) */
2274 object_id
2275 FROM
2276 jtf_object_purge_param_tmp
2277 WHERE
2278 object_type = 'SR'
2279 AND p_processing_set_id = processing_set_id
2280 AND NVL(purge_status, 'S') = 'S'
2281 );
2282
2283 l_row_count := SQL%ROWCOUNT;
2284
2285 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2286 THEN
2287 fnd_log.string
2288 (
2289 fnd_log.level_statement
2290 , L_LOG_MODULE || 'del_cont_ext_end'
2291 , 'After deleting data from table CS_SR_CONTACTS_EXT_TL '
2292 || l_row_count || ' rows'
2293 );
2294 END IF ;
2295
2296 ---
2297
2298 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2299 THEN
2300 fnd_log.string
2301 (
2302 fnd_log.level_statement
2303 , L_LOG_MODULE || 'del_cont_ext_start'
2304 , 'Deleting data from table CS_SR_CONTACTS_EXT'
2305 );
2306 END IF ;
2307
2308 -- This statement deletes all the translatable extended attributes attached
2309 -- to contacts that are linked to an SR that is available in the global
2310 -- temp table with purge status NULL.
2311
2312 DELETE /*+ index(e) */ cs_sr_contacts_ext e
2313 WHERE incident_id IN
2314 (
2315 SELECT /*+ no_unnest no_semijoin cardinality(10) */
2316 object_id
2317 FROM
2318 jtf_object_purge_param_tmp
2319 WHERE
2320 object_type = 'SR'
2321 AND p_processing_set_id = processing_set_id
2322 AND NVL(purge_status, 'S') = 'S'
2323 );
2324
2325 l_row_count := SQL%ROWCOUNT;
2326
2327 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2328 THEN
2329 fnd_log.string
2330 (
2331 fnd_log.level_statement
2332 , L_LOG_MODULE || 'del_cont_ext_end'
2333 , 'After deleting data from table CS_SR_CONTACTS_EXT '
2334 || l_row_count || ' rows'
2335 );
2336 END IF ;
2337
2338 ---
2339
2340 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2341 THEN
2342 fnd_log.string
2343 (
2344 fnd_log.level_statement
2345 , L_LOG_MODULE || 'del_cont_point_aud_start'
2346 , 'Deleting data from table CS_HZ_SR_CONTACT_PNTS_AUDIT'
2347 );
2348 END IF ;
2349
2350 -- This statement deletes all the audit info attached to contacts
2351 -- that are linked to an SR that is available in the global temp table
2352 -- with purge status NULL.
2353
2354 DELETE /*+ index(a) */ cs_hz_sr_contact_pnts_audit a
2355 WHERE incident_id IN
2356 (
2357 SELECT /*+ no_unnest no_semijoin cardinality(10) */
2358 object_id
2359 FROM
2360 jtf_object_purge_param_tmp
2361 WHERE
2362 object_type = 'SR'
2363 AND p_processing_set_id = processing_set_id
2364 AND NVL(purge_status, 'S') = 'S'
2365 );
2366
2367 l_row_count := SQL%ROWCOUNT;
2368
2369 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2370 THEN
2371 fnd_log.string
2372 (
2373 fnd_log.level_statement
2374 , L_LOG_MODULE || 'del_cont_point_aud_end'
2375 , 'After deleting data from table CS_HZ_SR_CONTACT_PNTS_AUDIT '
2376 || l_row_count || ' rows'
2377 );
2378 END IF ;
2379
2380 ---
2381
2382 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2383 THEN
2384 fnd_log.string
2385 (
2386 fnd_log.level_statement
2387 , L_LOG_MODULE || 'del_cont_point_start'
2388 , 'Deleting data from table CS_HZ_SR_CONTACT_POINTS'
2389 );
2390 END IF ;
2391
2392 -- This statement deletes all the contacts that are linked to an
2393 -- SR that is available in the global temp table with purge status NULL.
2394 -- Bug 10090362: Changed the hint in the sub query
2395
2396 DELETE /*+ index(c) */ cs_hz_sr_contact_points c
2397 WHERE incident_id IN
2398 (
2399 SELECT /*+ cardinality(jtf_object_purge_param_tmp, 10) */
2400 object_id
2401 FROM
2402 jtf_object_purge_param_tmp
2403 WHERE
2404 object_type = 'SR'
2405 AND p_processing_set_id = processing_set_id
2406 AND NVL(purge_status, 'S') = 'S'
2407 );
2408 l_row_count := SQL%ROWCOUNT;
2409
2410 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2411 THEN
2412 fnd_log.string
2413 (
2414 fnd_log.level_statement
2415 , L_LOG_MODULE || 'del_cont_point_end'
2416 , 'After deleting data from table CS_HZ_SR_CONTACT_POINTS '
2417 || l_row_count || ' rows'
2418 );
2419 END IF ;
2420
2421 ---
2422
2423 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2424 THEN
2425 fnd_log.string
2426 (
2427 fnd_log.level_procedure
2428 , L_LOG_MODULE || 'end'
2429 , 'Completed work in ' || L_API_NAME_FULL || ' with return status '
2430 || x_return_status
2431 );
2432 END IF ;
2433
2434 EXCEPTION
2435
2436 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2437 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2438
2439 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
2440 THEN
2441 fnd_log.string
2442 (
2443 fnd_log.level_unexpected
2444 , L_LOG_MODULE || 'unexpected_error'
2445 , 'Inside WHEN FND_API.G_EXC_UNEXPECTED_ERROR of ' || L_API_NAME_FULL
2446 );
2447 END IF ;
2448
2449 WHEN OTHERS THEN
2450 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2451 FND_MESSAGE.Set_Name('CS', 'CS_SR_CONT_DEL_FAIL');
2452 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
2453 FND_MESSAGE.Set_Token('ERROR', SQLERRM);
2454 FND_MSG_PUB.ADD;
2455
2456 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
2457 THEN
2458 fnd_log.string
2459 (
2460 fnd_log.level_unexpected
2461 , L_LOG_MODULE || 'when_others'
2462 , 'Inside WHEN OTHERS of ' || L_API_NAME_FULL || '. Oracle Error was:'
2463 );
2464 fnd_log.string
2465 (
2466 fnd_log.level_unexpected
2467 , L_LOG_MODULE || 'when_others'
2468 , SQLERRM
2469 );
2470 END IF ;
2471
2472 END Delete_Contacts;
2473
2474 --------------------------------------------------------------------------------
2475 -- Procedure Name : DELETE_AUDIT_RECORDS
2476 --
2477 -- Parameters (other than standard ones)
2478 -- IN
2479 -- p_object_type : Type of object for which this procedure is
2480 -- being called. (Here it will be 'SR')
2481 -- p_processing_set_id : Id that helps the API in identifying the
2482 -- set of SRs for which the child objects have
2483 -- to be deleted.
2484 --
2485 -- Description
2486 -- This procedure deletes all the audit information related to SRs that are
2487 -- present in the global temp table with purge status NULL.
2488 --
2489 -- HISTORY
2490 --
2491 ----------------+------------+--------------------------------------------------
2492 -- DATE | UPDATED BY | Change Description
2493 ----------------+------------+--------------------------------------------------
2494 -- 2-Aug_2005 | varnaray | Created
2495 -- | |
2496 ----------------+------------+--------------------------------------------------
2497 /*#
2498 * This procedure deletes all the audit information related to SRs that are
2499 * present in the global temp table with purge status NULL.
2500 * @param p_object_type Type of object for which this procedure is being called.
2501 * (Here it will be 'SR')
2502 * @param p_processing_set_id Id that helps the API in identifying the set of
2503 * SRs for which the child objects have to be deleted.
2504 * @rep:scope internal
2505 * @rep:product CS
2506 * @rep:displayname Delete Audit Requests
2507 */
2508 PROCEDURE Delete_Audit_Records
2509 (
2510 p_api_version_number IN NUMBER := 1.0
2511 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
2512 , p_commit IN VARCHAR2 := FND_API.G_FALSE
2513 , p_object_type IN VARCHAR2
2514 , p_processing_set_id IN NUMBER
2515 , x_return_status OUT NOCOPY VARCHAR2
2516 , x_msg_count OUT NOCOPY NUMBER
2517 , x_msg_data OUT NOCOPY VARCHAR2
2518 )
2519 IS
2520 --------------------------------------------------------------------------------
2521 L_API_VERSION CONSTANT NUMBER := 1.0;
2522 L_API_NAME CONSTANT VARCHAR2(30) := 'DELETE_AUDIT_RECORDS';
2523 L_API_NAME_FULL CONSTANT VARCHAR2(61) := G_PKG_NAME || '.' || L_API_NAME;
2524 L_LOG_MODULE CONSTANT VARCHAR2(255) := 'cs.plsql.' || L_API_NAME_FULL || '.';
2525
2526 l_row_count NUMBER;
2527
2528 BEGIN
2529 x_return_status := FND_API.G_RET_STS_SUCCESS;
2530
2531 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2532 THEN
2533 fnd_log.string
2534 (
2535 fnd_log.level_procedure
2536 , L_LOG_MODULE || 'start'
2537 , 'Inside ' || L_API_NAME_FULL || ', called with parameters below:'
2538 );
2539 fnd_log.string
2540 (
2541 fnd_log.level_procedure
2542 , L_LOG_MODULE || 'param 1'
2543 , 'p_api_version_number:' || p_api_version_number
2544 );
2545 fnd_log.string
2546 (
2547 fnd_log.level_procedure
2548 , L_LOG_MODULE || 'param 2'
2549 , 'p_init_msg_list:' || p_init_msg_list
2550 );
2551 fnd_log.string
2552 (
2553 fnd_log.level_procedure
2554 , L_LOG_MODULE || 'param 3'
2555 , 'p_commit:' || p_commit
2556 );
2557 fnd_log.string
2558 (
2559 fnd_log.level_procedure
2560 , L_LOG_MODULE || 'param 4'
2561 , 'p_object_type:' || p_object_type
2562 );
2563 fnd_log.string
2564 (
2565 fnd_log.level_procedure
2566 , L_LOG_MODULE || 'param 5'
2567 , 'p_processing_set_id:' || p_processing_set_id
2568 );
2569 END IF ;
2570
2571 IF NOT FND_API.Compatible_API_Call
2572 (
2573 L_API_VERSION
2574 , p_api_version_number
2575 , L_API_NAME
2576 , G_PKG_NAME
2577 )
2578 THEN
2579 FND_MSG_PUB.Count_And_Get
2580 (
2581 p_count => x_msg_count
2582 , p_data => x_msg_data
2583 );
2584 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2585 END IF ;
2586
2587 IF
2588 FND_API.to_Boolean(p_init_msg_list)
2589 THEN
2590 FND_MSG_PUB.initialize;
2591 END IF ;
2592
2593 ------------------------------------------------------------------------------
2594 -- Actual Logic starts below:
2595 ------------------------------------------------------------------------------
2596
2597 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2598 THEN
2599 fnd_log.string
2600 (
2601 fnd_log.level_statement
2602 , L_LOG_MODULE || 'del_sraudit_tl_start'
2603 , 'Deleting data from table CS_INCIDENTS_AUDIT_TL'
2604 );
2605 END IF ;
2606
2607 -- Deleting rows from the audit TL table for the
2608 -- SRs in the global temp table with purge status NULL
2609 -- Bug 10090362: Changed the hint in the sub query
2610
2611 DELETE /*+ index(t) */ cs_incidents_audit_tl t
2612 WHERE incident_id IN
2613 (
2614 SELECT /*+ cardinality(JTF_OBJECT_PURGE_PARAM_TMP, 10) */
2615 object_id
2616 FROM
2617 jtf_object_purge_param_tmp
2618 WHERE
2619 object_type = 'SR'
2620 AND p_processing_set_id = processing_set_id
2621 AND NVL(purge_status, 'S') = 'S'
2622 );
2623
2624 l_row_count := SQL%ROWCOUNT;
2625
2626 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2627 THEN
2628 fnd_log.string
2629 (
2630 fnd_log.level_statement
2631 , L_LOG_MODULE || 'del_sraudit_tl_end'
2632 , 'After deleting data from table CS_INCIDENTS_AUDIT_TL '
2633 || l_row_count || ' rows'
2634 );
2635 END IF ;
2636
2637 ---
2638
2639 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2640 THEN
2641 fnd_log.string
2642 (
2643 fnd_log.level_statement
2644 , L_LOG_MODULE || 'del_sraudit_b_start'
2645 , 'Deleting data from table CS_INCIDENTS_AUDIT_B'
2646 );
2647 END IF ;
2648
2649 -- Deleting rows from the audit table for the
2650 -- SRs in the global temp table with purge status NULL
2651
2652 DELETE /*+ index(b) */ cs_incidents_audit_b b
2653 WHERE incident_id IN
2654 (
2655 SELECT /*+ unnest no_semijoin cardinality(10) */
2656 object_id
2657 FROM
2658 jtf_object_purge_param_tmp
2659 WHERE
2660 object_type = 'SR'
2661 AND p_processing_set_id = processing_set_id
2662 AND NVL(purge_status, 'S') = 'S'
2663 );
2664
2665 l_row_count := SQL%ROWCOUNT;
2666
2667 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2668 THEN
2669 fnd_log.string
2670 (
2671 fnd_log.level_statement
2672 , L_LOG_MODULE || 'del_sraudit_b_end'
2673 , 'After deleting data from table CS_INCIDENTS_AUDIT_B '
2674 || l_row_count || ' rows'
2675 );
2676 END IF ;
2677
2678 ---
2679
2680 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2681 THEN
2682 fnd_log.string
2683 (
2684 fnd_log.level_procedure
2685 , L_LOG_MODULE || 'end'
2686 , 'Completed work in ' || L_API_NAME_FULL || ' with return status '
2687 || x_return_status
2688 );
2689 END IF ;
2690
2691 EXCEPTION
2692
2693 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2694 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2695
2696 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
2697 THEN
2698 fnd_log.string
2699 (
2700 fnd_log.level_unexpected
2701 , L_LOG_MODULE || 'unexpected_error'
2702 , 'Inside WHEN FND_API.G_EXC_UNEXPECTED_ERROR of ' || L_API_NAME_FULL
2703 );
2704 END IF ;
2705
2706 WHEN OTHERS THEN
2707 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2708 FND_MESSAGE.Set_Name('CS', 'CS_SR_AUDIT_DEL_FAIL');
2709 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
2710 FND_MESSAGE.Set_Token('ERROR', SQLERRM);
2711 FND_MSG_PUB.ADD;
2712
2713 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
2714 THEN
2715 fnd_log.string
2716 (
2717 fnd_log.level_unexpected
2718 , L_LOG_MODULE || 'when_others'
2719 , 'Inside WHEN OTHERS of ' || L_API_NAME_FULL || '. Oracle Error was:'
2720 );
2721 fnd_log.string
2722 (
2723 fnd_log.level_unexpected
2724 , L_LOG_MODULE || 'when_others'
2725 , SQLERRM
2726 );
2727 END IF ;
2728 END Delete_Audit_Records;
2729
2730 --------------------------------------------------------------------------------
2731 -- Procedure Name : DELETE_SR_ATTRIBUTES
2732 --
2733 -- Parameters (other than standard ones)
2734 -- IN
2735 -- p_object_type : Type of object for which this procedure is
2736 -- being called. (Here it will be 'SR')
2737 -- p_processing_set_id : Id that helps the API in identifying the
2738 -- set of SRs for which the child objects have
2739 -- to be deleted.
2740 --
2741 -- Description
2742 -- This procedure deletes all the extended attributes and CIC attributes
2743 -- associated with the SRs present in the global temp table with purge
2744 -- status NULL along with the audit information captured for the extended
2745 -- attributes.
2746 -- HISTORY
2747 --
2748 ----------------+------------+--------------------------------------------------
2749 -- DATE | UPDATED BY | Change Description
2750 ----------------+------------+--------------------------------------------------
2751 -- 2-Aug_2005 | varnaray | Created
2752 -- | |
2753 ----------------+------------+--------------------------------------------------
2754 /*#
2755 * This procedure deletes all the extended attributes and CIC attributes
2756 * associated with the SRs present in the global temp table with purge status
2757 * NULL along with the audit information captured for the extended attributes.
2758 * @param p_object_type Type of object for which this procedure is being called.
2759 * (Here it will be 'SR')
2760 * @param p_processing_set_id Id that helps the API in identifying the set of
2761 * SRs for which the child objects have to be deleted.
2762 * @rep:scope internal
2763 * @rep:product CS
2764 * @rep:displayname Delete Service Request Attributes
2765 */
2766 PROCEDURE Delete_Sr_Attributes
2767 (
2768 p_api_version_number IN NUMBER
2769 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
2770 , p_commit IN VARCHAR2 := FND_API.G_FALSE
2771 , p_object_type IN VARCHAR2
2772 , p_processing_set_id IN NUMBER
2773 , x_return_status OUT NOCOPY VARCHAR2
2774 , x_msg_count OUT NOCOPY NUMBER
2775 , x_msg_data OUT NOCOPY VARCHAR2
2776 )
2777 IS
2778 --------------------------------------------------------------------------------
2779 L_API_VERSION CONSTANT NUMBER := 1.0;
2780 L_API_NAME CONSTANT VARCHAR2(30) := 'DELETE_SR_ATTRIBUTES';
2781 L_API_NAME_FULL CONSTANT VARCHAR2(61) := G_PKG_NAME || '.' || L_API_NAME;
2782 L_LOG_MODULE CONSTANT VARCHAR2(255) := 'cs.plsql.' || L_API_NAME_FULL || '.';
2783
2784 l_row_count NUMBER;
2785
2786 BEGIN
2787 x_return_status := FND_API.G_RET_STS_SUCCESS;
2788
2789 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2790 THEN
2791 fnd_log.string
2792 (
2793 fnd_log.level_procedure
2794 , L_LOG_MODULE || 'start'
2795 , 'Inside ' || L_API_NAME_FULL || ', called with parameters below:'
2796 );
2797 fnd_log.string
2798 (
2799 fnd_log.level_procedure
2800 , L_LOG_MODULE || 'param 1'
2801 , 'p_api_version_number:' || p_api_version_number
2802 );
2803 fnd_log.string
2804 (
2805 fnd_log.level_procedure
2806 , L_LOG_MODULE || 'param 2'
2807 , 'p_init_msg_list:' || p_init_msg_list
2808 );
2809 fnd_log.string
2810 (
2811 fnd_log.level_procedure
2812 , L_LOG_MODULE || 'param 3'
2813 , 'p_commit:' || p_commit
2814 );
2815 fnd_log.string
2816 (
2817 fnd_log.level_procedure
2818 , L_LOG_MODULE || 'param 4'
2819 , 'p_object_type:' || p_object_type
2820 );
2821 fnd_log.string
2822 (
2823 fnd_log.level_procedure
2824 , L_LOG_MODULE || 'param 5'
2825 , 'p_processing_set_id:' || p_processing_set_id
2826 );
2827 END IF ;
2828
2829 IF NOT FND_API.Compatible_API_Call
2830 (
2831 L_API_VERSION
2832 , p_api_version_number
2833 , L_API_NAME
2834 , G_PKG_NAME
2835 )
2836 THEN
2837 FND_MSG_PUB.Count_And_Get
2838 (
2839 p_count => x_msg_count
2840 , p_data => x_msg_data
2841 );
2842 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2843 END IF ;
2844
2845 IF
2846 FND_API.to_Boolean(p_init_msg_list)
2847 THEN
2848 FND_MSG_PUB.initialize;
2849 END IF ;
2850
2851 ------------------------------------------------------------------------------
2852 -- Actual Logic starts below:
2853 ------------------------------------------------------------------------------
2854
2855 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2856 THEN
2857 fnd_log.string
2858 (
2859 fnd_log.level_statement
2860 , L_LOG_MODULE || 'cug_attr_tl_del_start'
2861 , 'Deleting data from table CUG_INCIDNT_ATTR_VALS_TL'
2862 );
2863 END IF ;
2864
2865 -- The following statement deletes all the translatable CIC attributes that
2866 -- are linked to the SRs in the global temp table with purge_status NULL
2867
2868 DELETE /*+ index(t) */ cug_incidnt_attr_vals_tl t
2869 WHERE incidnt_attr_val_id IN
2870 (
2871 SELECT /*+ cardinality(jtf_object_purge_param_tmp, 10) */
2872 c.incidnt_attr_val_id
2873 FROM
2874 jtf_object_purge_param_tmp j
2875 , cug_incidnt_attr_vals_b c
2876 WHERE
2877 j.object_type = 'SR'
2878 AND p_processing_set_id = j.processing_set_id
2879 AND NVL(j.purge_status, 'S') = 'S'
2880 AND c.incident_id = j.object_id
2881 );
2882
2883 l_row_count := SQL%ROWCOUNT;
2884
2885 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2886 THEN
2887 fnd_log.string
2888 (
2889 fnd_log.level_statement
2890 , L_LOG_MODULE || 'cug_attr_tl_del_end'
2891 , 'After deleting data from table CUG_INCIDNT_ATTR_VALS_TL '
2892 || l_row_count || ' rows'
2893 );
2894 END IF ;
2895
2896 ---
2897
2898 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2899 THEN
2900 fnd_log.string
2901 (
2902 fnd_log.level_statement
2903 , L_LOG_MODULE || 'cug_attr_b_del_start'
2904 , 'Deleting data from table CUG_INCIDNT_ATTR_VALS_B'
2905 );
2906 END IF ;
2907
2908 -- The following statement deletes all the CIC attributes that are
2909 -- linked to the SRs in the global temp table with purge_status NULL
2910
2911 DELETE /*+ index(b) */ cug_incidnt_attr_vals_b b
2912 WHERE incident_id IN
2913 (
2914 SELECT /*+ no_unnest no_semijoin cardinality(10) */
2915 object_id
2916 FROM
2917 jtf_object_purge_param_tmp
2918 WHERE
2919 object_type = 'SR'
2920 AND p_processing_set_id = processing_set_id
2921 AND NVL(purge_status, 'S') = 'S'
2922 );
2923
2924 l_row_count := SQL%ROWCOUNT;
2925
2926 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2927 THEN
2928 fnd_log.string
2929 (
2930 fnd_log.level_statement
2931 , L_LOG_MODULE || 'cug_attr_b_del_end'
2932 , 'After deleting data from table CUG_INCIDNT_ATTR_VALS_B '
2933 || l_row_count || ' rows'
2934 );
2935 END IF ;
2936
2937 ---
2938
2939 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2940 THEN
2941 fnd_log.string
2942 (
2943 fnd_log.level_statement
2944 , L_LOG_MODULE || 'sr_ext_attr_aud_del_start'
2945 , 'Deleting data from table CS_INCIDENTS_EXT_AUDIT'
2946 );
2947 END IF ;
2948
2949 -- The following statement deletes all the audit information captured for
2950 -- the translatable extended attributes linked to SRs in the global temp
2951 -- table with purge_status NULL
2952
2953 DELETE /*+ index(a) */ cs_incidents_ext_audit a
2954 WHERE audit_extension_id IN
2955 (
2956 SELECT /*+ unnest no_semijoin leading(j) use_nl(c) cardinality(10) */
2957 audit_extension_id
2958 FROM
2959 jtf_object_purge_param_tmp j
2960 , cs_incidents_ext_audit c
2961 WHERE
2962 j.object_type = 'SR'
2963 AND p_processing_set_id = j.processing_set_id
2964 AND NVL(j.purge_status, 'S') = 'S'
2965 AND c.incident_id = j.object_id
2966 );
2967
2968 l_row_count := SQL%ROWCOUNT;
2969
2970 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2971 THEN
2972 fnd_log.string
2973 (
2974 fnd_log.level_statement
2975 , L_LOG_MODULE || 'sr_ext_attr_aud_del_end'
2976 , 'After deleting data from table CS_INCIDENTS_EXT_AUDIT '
2977 || l_row_count || ' rows'
2978 );
2979 END IF ;
2980
2981 ---
2982
2983 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2984 THEN
2985 fnd_log.string
2986 (
2987 fnd_log.level_statement
2988 , L_LOG_MODULE || 'sr_ext_attr_del_start'
2989 , 'Deleting data from table CS_INCIDENTS_EXT_TL'
2990 );
2991 END IF ;
2992
2993 -- The following statement deletes all the translatable extended attributes
2994 -- that are linked to the SRs present in the global temp table with purge
2995 -- status NULL
2996
2997 DELETE /*+ index(e) */ cs_incidents_ext_tl e
2998 WHERE incident_id IN
2999 (
3000 SELECT /*+ no_unnest no_semijoin cardinality(10) */
3001 object_id
3002 FROM
3003 jtf_object_purge_param_tmp
3004 WHERE
3005 object_type = 'SR'
3006 AND p_processing_set_id = processing_set_id
3007 AND NVL(purge_status, 'S') = 'S'
3008 );
3009
3010 l_row_count := SQL%ROWCOUNT;
3011
3012 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3013 THEN
3014 fnd_log.string
3015 (
3016 fnd_log.level_statement
3017 , L_LOG_MODULE || 'sr_ext_attr_del_end'
3018 , 'After deleting data from table CS_INCIDENTS_EXT_TL '
3019 || l_row_count || ' rows'
3020 );
3021 END IF ;
3022
3023 ---
3024
3025 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3026 THEN
3027 fnd_log.string
3028 (
3029 fnd_log.level_statement
3030 , L_LOG_MODULE || 'sr_ext_attr_del_start'
3031 , 'Deleting data from table CS_INCIDENTS_EXT'
3032 );
3033 END IF ;
3034
3035 -- The following statement deletes all the translatable extended attributes
3036 -- that are linked to the SRs present in the global temp table with purge
3037 -- status NULL
3038
3039 DELETE /*+ index(e) */ cs_incidents_ext e
3040 WHERE incident_id IN
3041 (
3042 SELECT /*+ no_unnest no_semijoin cardinality(10) */
3043 object_id
3044 FROM
3045 jtf_object_purge_param_tmp
3046 WHERE
3047 object_type = 'SR'
3048 AND p_processing_set_id = processing_set_id
3049 AND NVL(purge_status, 'S') = 'S'
3050 );
3051
3052 l_row_count := SQL%ROWCOUNT;
3053
3054 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3055 THEN
3056 fnd_log.string
3057 (
3058 fnd_log.level_statement
3059 , L_LOG_MODULE || 'sr_ext_attr_del_end'
3060 , 'After deleting data from table CS_INCIDENTS_EXT '
3061 || l_row_count || ' rows'
3062 );
3063 END IF ;
3064
3065 ---
3066
3067 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
3068 THEN
3069 fnd_log.string
3070 (
3071 fnd_log.level_procedure
3072 , L_LOG_MODULE || 'end'
3073 , 'Completed work in ' || L_API_NAME_FULL || ' with return status '
3074 || x_return_status
3075 );
3076 END IF ;
3077
3078 EXCEPTION
3079
3080 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3081 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3082
3083 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
3084 THEN
3085 fnd_log.string
3086 (
3087 fnd_log.level_unexpected
3088 , L_LOG_MODULE || 'unexpected_error'
3089 , 'Inside WHEN FND_API.G_EXC_UNEXPECTED_ERROR of ' || L_API_NAME_FULL
3090 );
3091 END IF ;
3092
3093 WHEN OTHERS THEN
3094 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3095 FND_MESSAGE.Set_Name('CS', 'CS_SR_ATTR_VAL_DEL_FAIL');
3096 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
3097 FND_MESSAGE.Set_Token('ERROR', SQLERRM);
3098 FND_MSG_PUB.ADD;
3099
3100 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
3101 THEN
3102 fnd_log.string
3103 (
3104 fnd_log.level_unexpected
3105 , L_LOG_MODULE || 'when_others'
3106 , 'Inside WHEN OTHERS of ' || L_API_NAME_FULL || '. Oracle Error was:'
3107 );
3108 fnd_log.string
3109 (
3110 fnd_log.level_unexpected
3111 , L_LOG_MODULE || 'when_others'
3112 , SQLERRM
3113 );
3114 END IF ;
3115 END Delete_Sr_Attributes;
3116
3117 --------------------------------------------------------------------------------
3118 -- Procedure Name : CREATE_PURGEAUDIT_RECORDS
3119 --
3120 -- Parameters (other than standard ones)
3121 -- IN
3122 -- p_purge_set_id : Id that helps the API in identifying the
3123 -- set of SRs for which the child objects
3124 -- have to be deleted.
3125 -- p_incident_id_tbl : pl/sql table containing all the SR ids
3126 -- that have been purged successfully
3127 -- p_incident_number_tbl : pl/sql table containing all the SR
3128 -- numbers that have been purged
3129 -- successfully
3130 -- p_incident_type_id_tbl : pl/sql table containing type ids of all
3131 -- the SRs that have been purged
3132 -- successfully
3133 -- p_customer_id_tbl : pl/sql table containing customer ids of
3134 -- all the SRs that have been purged
3135 -- successfully
3136 -- p_inv_organization_id_tbl : pl/sql table containing org ids of all
3137 -- the SRs that have been purged
3138 -- successfully
3139 -- p_inventory_item_id_tbl : pl/sql table containing item ids of all
3140 -- the SRs that have been purged
3141 -- successfully
3142 -- p_customer_product_id_tbl : pl/sql table containing instance ids of
3143 -- all the SRs that have been purged
3144 -- successfully
3145 -- p_inc_creation_date_tbl : pl/sql table containing creation dates
3146 -- of all the SRs that have been purged
3147 -- successfully
3148 -- p_inc_last_update_date_tbl : pl/sql table containing last update
3149 -- dates ids of all the SRs that have been
3150 -- purged successfully
3151 -- p_incident_id_tl_tbl : pl/sql table containing SRs ids (as
3152 -- in TL table) of all the SRs that have
3153 -- been purged successfully
3154 -- p_language_tbl : pl/sql table containing language of all
3155 -- the SRs that have been purged
3156 -- successfully
3157 -- p_source_lang_tbl : pl/sql table containing source lang of
3158 -- all the SRs that have been purged
3159 -- successfully
3160 -- p_summary_tbl : pl/sql table containing summary of all
3161 -- the SRs that have been purged
3162 -- successfully
3163 --
3164 -- Description
3165 -- This procedure creates rows in the purge audit table to preserve the
3166 -- basic information related to the SRs that were purged using the SR
3167 -- purge concurrent program. It is called from the DeleteServiceRequest
3168 -- procedure with pl/sql tables containing all the data that need to
3169 -- be preserved.
3170 --
3171 -- HISTORY
3172 --
3173 ----------------+------------+--------------------------------------------------
3174 -- DATE | UPDATED BY | Change Description
3175 ----------------+------------+--------------------------------------------------
3176 -- 2-Aug_2005 | varnaray | Created
3177 -- | |
3178 ----------------+------------+--------------------------------------------------
3179 /*#
3180 * This procedure creates rows in the purge audit table to preserve the basic
3181 * information related to the SRs that were purged using the SR purge concurrent
3182 * program. It is called from the DeleteServiceRequest procedure with pl/sql
3183 * tables containing all the data that need to be preserved.
3184 * @param p_purge_set_id Id that helps the API in identifying the set of SRs
3185 * for which the child objects have to be deleted.
3186 * @param p_incident_id_tbl pl/sql table containing all the SR ids that have
3187 * been purged successfully
3188 * @param p_incident_number_tbl pl/sql table containing all the SR numbers that
3189 * have been purged successfully
3190 * @param p_incident_type_id_tbl pl/sql table containing type ids of all the
3191 * SRs that have been purged successfully
3192 * @param p_customer_id_tbl pl/sql table containing customer ids of all the
3193 * SRs that have been purged successfully
3194 * @param p_inv_organization_id_tbl pl/sql table containing org ids of all the
3195 * SRs that have been purged successfully
3196 * @param p_inventory_item_id_tbl pl/sql table containing item ids of all the
3197 * SRs that have been purged successfully
3198 * @param p_customer_product_id_tbl pl/sql table containing instance ids of
3199 * all the SRs that have been purged successfully
3200 * @param p_inc_creation_date_tbl pl/sql table containing creation dates of
3201 * all the SRs that have been purged successfully
3202 * @param p_inc_last_update_date_tbl pl/sql table containing last update
3203 * dates ids of all the SRs that have been purged successfully
3204 * @param p_incident_id_tl_tbl pl/sql table containing SRs ids (as in TL
3205 * table) of all the SRs that have been purged successfully
3206 * @param p_language_tbl pl/sql table containing language of all the SRs
3207 * that have been purged successfully
3208 * @param p_source_lang_tbl pl/sql table containing source lang of all the SRs
3209 * that have been purged successfully
3210 * @param p_summary_tbl pl/sql table containing summary of all the SRs
3211 * that have been purged successfully
3212 * @rep:scope internal
3213 * @rep:product CS
3214 * @rep:displayname Create Purge Audit Records
3215 */
3216 PROCEDURE Create_Purgeaudit_Records
3217 (
3218 p_api_version_number IN NUMBER := 1.0
3219 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
3220 , p_commit IN VARCHAR2 := FND_API.G_FALSE
3221 , p_purge_set_id IN NUMBER
3222 , p_incident_id_tbl IN t_number_tbl
3223 , p_incident_number_tbl IN t_long_string_tbl
3224 , p_incident_type_id_tbl IN t_number_tbl
3225 , p_customer_id_tbl IN t_number_tbl
3226 , p_inv_organization_id_tbl IN t_number_tbl
3227 , p_inventory_item_id_tbl IN t_number_tbl
3228 , p_customer_product_id_tbl IN t_number_tbl
3229 , p_inc_creation_date_tbl IN t_date_tbl
3230 , p_inc_last_update_date_tbl IN t_date_tbl
3231 , p_incident_id_tl_tbl IN t_number_tbl
3232 , p_language_tbl IN t_string_tbl
3233 , p_source_lang_tbl IN t_string_tbl
3234 , p_summary_tbl IN t_long_string_tbl
3235 , x_return_status OUT NOCOPY VARCHAR2
3236 , x_msg_count OUT NOCOPY NUMBER
3237 , x_msg_data OUT NOCOPY VARCHAR2
3238 )
3239 IS
3240 --------------------------------------------------------------------------------
3241 L_API_VERSION CONSTANT NUMBER := 1.0;
3242 L_API_NAME CONSTANT VARCHAR2(30) := 'CREATE_PURGEAUDIT_RECORDS';
3243 L_API_NAME_FULL CONSTANT VARCHAR2(61) := G_PKG_NAME || '.' || L_API_NAME;
3244 L_LOG_MODULE CONSTANT VARCHAR2(255) := 'cs.plsql.' || L_API_NAME_FULL || '.';
3245
3246 l_user_id NUMBER;
3247 l_login_id NUMBER;
3248
3249 l_row_count NUMBER;
3250
3251 BEGIN
3252 x_return_status := FND_API.G_RET_STS_SUCCESS;
3253
3254 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
3255 THEN
3256 fnd_log.string
3257 (
3258 fnd_log.level_procedure
3259 , L_LOG_MODULE || 'start'
3260 , 'Inside ' || L_API_NAME_FULL || ', called with parameters below:'
3261 );
3262 fnd_log.string
3263 (
3264 fnd_log.level_procedure
3265 , L_LOG_MODULE || 'param 1'
3266 , 'p_api_version_number:' || p_api_version_number
3267 );
3268 fnd_log.string
3269 (
3270 fnd_log.level_procedure
3271 , L_LOG_MODULE || 'param 2'
3272 , 'p_init_msg_list:' || p_init_msg_list
3273 );
3274 fnd_log.string
3275 (
3276 fnd_log.level_procedure
3277 , L_LOG_MODULE || 'param 3'
3278 , 'p_commit:' || p_commit
3279 );
3280 fnd_log.string
3281 (
3282 fnd_log.level_procedure
3283 , L_LOG_MODULE || 'param 4'
3284 , 'p_purge_set_id' || p_purge_set_id
3285 );
3286 END IF ;
3287
3288 l_user_id := fnd_global.user_id;
3289 l_login_id := fnd_global.login_id;
3290
3291 IF NOT FND_API.Compatible_API_Call
3292 (
3293 L_API_VERSION
3294 , p_api_version_number
3295 , L_API_NAME
3296 , G_PKG_NAME
3297 )
3298 THEN
3299 FND_MSG_PUB.Count_And_Get
3300 (
3301 p_count => x_msg_count
3302 , p_data => x_msg_data
3303 );
3304 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3305 END IF ;
3306
3307 IF FND_API.to_Boolean(p_init_msg_list)
3308 THEN
3309 FND_MSG_PUB.initialize;
3310 END IF ;
3311
3312 ------------------------------------------------------------------------------
3313 -- Actual Logic starts below:
3314 ------------------------------------------------------------------------------
3315
3316 IF p_incident_id_tbl.COUNT > 0
3317 THEN
3318 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3319 THEN
3320 fnd_log.string
3321 (
3322 fnd_log.level_statement
3323 , L_LOG_MODULE || 'ins_purge_aud_b_start'
3324 , 'Inserting data into table CS_INCIDENTS_PURGE_AUDIT_B'
3325 );
3326 END IF ;
3327
3328 -- Inserting information relating to purged SRs into the audit base table
3329
3330 FORALL j IN p_incident_id_tbl.FIRST..p_incident_id_tbl.LAST
3331 INSERT INTO cs_incidents_purge_audit_b
3332 (
3333 purge_id
3334 , incident_id
3335 , incident_number
3336 , incident_type_id
3337 , customer_id
3338 , inv_organization_id
3339 , inventory_item_id
3340 , customer_product_id
3341 , inc_creation_date
3342 , inc_last_update_date
3343 , purged_date
3344 , purged_by
3345 , creation_date
3346 , created_by
3347 , last_update_date
3348 , last_updated_by
3349 , last_update_login
3350 )
3351 VALUES
3352 (
3353 p_purge_set_id
3354 , p_incident_id_tbl(j)
3355 , p_incident_number_tbl(j)
3356 , p_incident_type_id_tbl(j)
3357 , p_customer_id_tbl(j)
3358 , p_inv_organization_id_tbl(j)
3359 , p_inventory_item_id_tbl(j)
3360 , p_customer_product_id_tbl(j)
3361 , p_inc_creation_date_tbl(j)
3362 , p_inc_last_update_date_tbl(j)
3363 , SYSDATE
3364 , l_user_id
3365 , SYSDATE
3366 , l_user_id
3367 , SYSDATE
3368 , l_user_id
3369 , l_login_id
3370 );
3371
3372 l_row_count := SQL%ROWCOUNT;
3373
3374 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3375 THEN
3376 fnd_log.string
3377 (
3378 fnd_log.level_statement
3379 , L_LOG_MODULE || 'ins_purge_aud_b_end'
3380 , 'After inserting data into table CS_INCIDENTS_PURGE_AUDIT_B '
3381 || l_row_count || ' rows'
3382 );
3383 END IF ;
3384 ELSIF p_incident_id_tbl.COUNT <= 0
3385 THEN
3386 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3387 THEN
3388 fnd_log.string
3389 (
3390 fnd_log.level_statement
3391 , L_LOG_MODULE || 'ins_purge_aud_b_err'
3392 , 'While inserting data into table CS_INCIDENTS_PURGE_AUDIT_B '
3393 || 'p_incident_id_tbl had ' || p_incident_id_tbl.COUNT || ' rows'
3394 );
3395 END IF ;
3396 END IF;
3397
3398 IF p_incident_id_tl_tbl.COUNT > 0
3399 THEN
3400 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3401 THEN
3402 fnd_log.string
3403 (
3404 fnd_log.level_statement
3405 , L_LOG_MODULE || 'ins_purge_aud_tl_start'
3406 , 'Inserting data into table CS_INCIDENTS_PURGE_AUDIT_TL'
3407 );
3408 END IF ;
3409
3410 -- Inserting translatable information relating to
3411 -- purged SRs into the audit base table
3412
3413 FORALL j IN p_incident_id_tl_tbl.FIRST..p_incident_id_tl_tbl.LAST
3414 INSERT INTO cs_incidents_purge_audit_tl
3415 (
3416 purge_id
3417 , incident_id
3418 , language
3419 , source_lang
3420 , summary
3421 , creation_date
3422 , created_by
3423 , last_update_date
3424 , last_updated_by
3425 , last_update_login
3426 )
3427 VALUES
3428 (
3429 p_purge_set_id
3430 , p_incident_id_tl_tbl(j)
3431 , p_language_tbl(j)
3432 , p_source_lang_tbl(j)
3433 , p_summary_tbl(j)
3434 , SYSDATE
3435 , l_user_id
3436 , SYSDATE
3437 , l_user_id
3438 , l_login_id
3439 );
3440
3441 l_row_count := SQL%ROWCOUNT;
3442
3443 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3444 THEN
3445 fnd_log.string
3446 (
3447 fnd_log.level_statement
3448 , L_LOG_MODULE || 'ins_purge_aud_tl_end'
3449 , 'After inserting data into table CS_INCIDENTS_PURGE_AUDIT_TL '
3450 || l_row_count || ' rows'
3451 );
3452 END IF ;
3453 ELSIF p_incident_id_tl_tbl.COUNT <= 0
3454 THEN
3455 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3456 THEN
3457 fnd_log.string
3458 (
3459 fnd_log.level_statement
3460 , L_LOG_MODULE || 'ins_purge_aud_tl_err'
3461 , 'While inserting data into table CS_INCIDENTS_PURGE_AUDIT_TL '
3462 || 'p_incident_id_tl_tbl had ' || p_incident_id_tl_tbl.COUNT || ' rows'
3463 );
3464 END IF ;
3465 END IF;
3466
3467 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
3468 THEN
3469 fnd_log.string
3470 (
3471 fnd_log.level_procedure
3472 , L_LOG_MODULE || 'end'
3473 , 'Completed work in ' || L_API_NAME_FULL || ' with return status '
3474 || x_return_status
3475 );
3476 END IF ;
3477
3478 EXCEPTION
3479
3480 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3481 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3482
3483 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
3484 THEN
3485 fnd_log.string
3486 (
3487 fnd_log.level_unexpected
3488 , L_LOG_MODULE || 'unexpected_error'
3489 , 'Inside WHEN FND_API.G_EXC_UNEXPECTED_ERROR of ' || L_API_NAME_FULL
3490 );
3491 END IF ;
3492
3493 WHEN OTHERS THEN
3494 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3495 FND_MESSAGE.Set_Name('CS', 'CS_SR_PRG_CRT_FAIL');
3496 FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
3497 FND_MESSAGE.Set_Token('ERROR', SQLERRM);
3498 FND_MSG_PUB.ADD;
3499
3500 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
3501 THEN
3502 fnd_log.string
3503 (
3504 fnd_log.level_unexpected
3505 , L_LOG_MODULE || 'when_others'
3506 , 'Inside WHEN OTHERS of ' || L_API_NAME_FULL || '. Oracle Error was:'
3507 );
3508 fnd_log.string
3509 (
3510 fnd_log.level_unexpected
3511 , L_LOG_MODULE || 'when_others'
3512 , SQLERRM
3513 );
3514 END IF ;
3515 END Create_Purgeaudit_Records;
3516 --------------------------------------------------------------------------------
3517 -- Procedure Name : CHECK_USER_TERMINATION
3518 --
3519 -- Parameters (other than standard ones)
3520 -- NONE.
3521 --
3522 -- Description
3523 -- This procedure is called before performing any step during the purge
3524 -- process so that if the user requests a termination of the purge process
3525 -- for some reason, the process should end gracefully.
3526 --
3527 -- HISTORY
3528 --
3529 ----------------+------------+--------------------------------------------------
3530 -- DATE | UPDATED BY | Change Description
3531 ----------------+------------+--------------------------------------------------
3532 -- 2-Aug_2005 | varnaray | Created
3533 -- | |
3534 ----------------+------------+--------------------------------------------------
3535 /*#
3536 * This procedure is called before performing any step during the purge process
3537 * so that if the user requests a termination of the purge process for some
3538 * reason, the process should end gracefully.
3539 */
3540 PROCEDURE Check_User_Termination
3541 IS
3542 --------------------------------------------------------------------------------
3543 L_API_VERSION CONSTANT NUMBER := 1.0;
3544 L_API_NAME CONSTANT VARCHAR2(30) := 'CHECK_USER_TERMINATION';
3545 L_API_NAME_FULL CONSTANT VARCHAR2(61) := G_PKG_NAME || '.' || L_API_NAME;
3546 L_LOG_MODULE CONSTANT VARCHAR2(255) := 'cs.plsql.' || L_API_NAME_FULL || '.';
3547
3548 l_request_id NUMBER;
3549 l_phase VARCHAR2(100);
3550 l_status VARCHAR2(100);
3551 l_dev_phase VARCHAR2(100);
3552 l_dev_status VARCHAR2(100);
3553 l_message VARCHAR2(500);
3554
3555 BEGIN
3556 l_request_id := fnd_global.conc_request_id;
3557
3558 IF l_request_id <> -1
3559
3560 -- The check for user termination is only
3561 -- required if the SR Delete Helper is called
3562 -- from a concurrent program. If l_request_id
3563 -- is -1, it means that the procedure is not
3564 -- called from a concurrent program. Hence the
3565 -- check for user termination may not be required.
3566
3567 THEN
3568 IF fnd_concurrent.get_request_status
3569 (
3570 request_id => l_request_id
3571 , phase => l_phase
3572 , status => l_status
3573 , dev_phase => l_dev_phase
3574 , dev_status => l_dev_status
3575 , message => l_message
3576 )
3577 THEN
3578 IF l_dev_status = 'TERMINATING'
3579 AND l_dev_phase = 'RUNNING'
3580 OR l_dev_status = 'TERMINATED'
3581 AND l_dev_phase = 'COMPLETE'
3582
3583 -- If the user terminates the concurrent request
3584 -- raise an exception and add a message to the stack
3585
3586 THEN
3587 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3588 THEN
3589 fnd_log.string
3590 (
3591 fnd_log.level_statement
3592 , L_LOG_MODULE || 'conc_req_user_stop'
3593 , 'This concurrent request is in status ' || l_dev_status
3594 || ' and phase ' || l_dev_phase
3595 );
3596 END IF ;
3597
3598 FND_MESSAGE.Set_Name('CS', 'CS_SR_USER_STOPPED');
3599 FND_MSG_PUB.ADD;
3600
3601 -- Setting the request_data to 'T'
3602 -- indicating that the request has
3603 -- been terminated by the user
3604
3605 fnd_conc_global.set_req_globals
3606 (
3607 request_data => 'T'
3608 );
3609
3610 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3611 END IF;
3612 ELSE
3613 -- if fnd_concurrent.get_request_status failed...
3614
3615 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level
3616 THEN
3617 fnd_log.string
3618 (
3619 fnd_log.level_unexpected
3620 , L_LOG_MODULE || 'conc_req_status_fail'
3621 , 'Failed while getting the status of this request'
3622 );
3623 END IF ;
3624 END IF;
3625 END IF;
3626 END Check_User_Termination;
3627 --------------------------------------------------------------------------------
3628 END cs_sr_delete_util;