[Home] [Help]
PACKAGE BODY: APPS.IEU_WR_PUB
Source
1 PACKAGE BODY IEU_WR_PUB AS
2 /* $Header: IEUPUWRB.pls 120.31 2006/08/18 05:10:53 msathyan noship $ */
3
4 -- *******
5 --
6 -- Status_id : 0 - open , 3 - Closed, 4 - Delete, 5- Sleep
7 -- Distribution Status: 0 - Onhold/UnAvailable, 1 - Distributable, 2 - Distributing, 3 - Distributed
8 --
9 -- *******
10 l_audit_log_val VARCHAR2(100);
11 --l_dist_resource_id NUMBER;
12 --l_dist_resource_type VARCHAR2(100);
13 l_not_valid_flag VARCHAR2(1);
14 l_active_flag VARCHAR2(1);
15 l_workitem_obj_code_1 VARCHAR2(30);
16 /********* original proc without audit log ****************/
17
18 PROCEDURE CREATE_WR_ITEM
19 ( p_api_version IN NUMBER,
20 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
21 p_commit IN VARCHAR2 DEFAULT NULL,
22 p_workitem_obj_code IN VARCHAR2 DEFAULT NULL,
23 p_workitem_pk_id IN NUMBER DEFAULT NULL,
24 p_work_item_number IN VARCHAR2 DEFAULT NULL,
25 p_title IN VARCHAR2 DEFAULT NULL,
26 p_party_id IN NUMBER,
27 p_priority_code IN VARCHAR2 DEFAULT NULL,
28 p_due_date IN DATE,
29 p_owner_id IN NUMBER,
30 p_owner_type IN VARCHAR2,
31 p_assignee_id IN NUMBER,
32 p_assignee_type IN VARCHAR2,
33 p_source_object_id IN NUMBER,
34 p_source_object_type_code IN VARCHAR2,
35 p_application_id IN NUMBER DEFAULT NULL,
36 p_ieu_enum_type_uuid IN VARCHAR2 DEFAULT NULL,
37 p_work_item_status IN VARCHAR2 DEFAULT NULL,
38 p_user_id IN NUMBER DEFAULT NULL,
39 p_login_id IN NUMBER DEFAULT NULL,
40 x_work_item_id OUT NOCOPY NUMBER,
41 x_msg_count OUT NOCOPY NUMBER,
42 x_msg_data OUT NOCOPY VARCHAR2,
43 x_return_status OUT NOCOPY VARCHAR2) AS
44
45 l_api_version CONSTANT NUMBER := 1.0;
46 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_WR_ITEM';
47
48 l_miss_param_flag NUMBER(1) := 0;
49 l_token_str VARCHAR2(4000);
50 l_token_str2 VARCHAR2(4000);
51 l_param_valid_flag NUMBER(1) := 0;
52
53 l_workitem_obj_code VARCHAR2(30);
54 l_object_function VARCHAR2(30);
55 l_source_object_type_code VARCHAR2(30);
56 l_source_object_id NUMBER;
57
58 l_owner_id NUMBER;
59 l_assignee_id NUMBER;
60 l_owner_type VARCHAR2(25);
61 l_assignee_type VARCHAR2(25);
62
63 l_owner_type_actual VARCHAR2(30);
64 l_assignee_type_actual VARCHAR2(30);
65
66 l_priority_id NUMBER;
67 l_priority_level NUMBER;
68 l_status_id NUMBER := 0;
69 l_title_len NUMBER := 1990;
70 l_work_item_status_valid_flag VARCHAR2(10);
71
72 -- l_status_update_user_id NUMBER;
73 l_work_item_status_id NUMBER;
74
75 l_msg_data VARCHAR2(4000);
76
77 l_ws_id1 NUMBER;
78 l_ws_id2 NUMBER := null;
79 l_association_ws_id NUMBER;
80 l_dist_from IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_FROM%TYPE;
81 l_dist_to IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_TO%TYPE;
82 l_curr_ws_id NUMBER;
83
84 l_dist_st_based_on_parent IEU_UWQM_WS_ASSCT_PROPS.DIST_ST_BASED_ON_PARENT_FLAG%TYPE;
85 l_distribution_status_id NUMBER;
86 l_parent_dist_status NUMBER;
87 l_set_dist_id_flag VARCHAR2(5);
88 l_parent_status_id NUMBER;
89 l_ws_id NUMBER;
90 l_ctr NUMBER;
91 l_msg_count NUMBER;
92 l_wr_item_list IEU_WR_PUB.IEU_WR_ITEM_LIST;
93
94 cursor c1(p_source_object_id IN NUMBER, p_source_object_type_code IN VARCHAR2) is
95 select work_item_id, workitem_pk_id, workitem_obj_code
96 from ieu_uwqm_items
97 where source_object_id = p_source_object_id
98 and source_object_type_code = p_source_object_type_code
99 and ( distribution_status_id = 0 or distribution_status_id = 1);
100
101
102 BEGIN
103
104 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
105 l_token_str := '';
106 SAVEPOINT insert_wr_items_sp;
107
108 x_return_status := fnd_api.g_ret_sts_success;
109
110 -- Check for API Version
111
112 IF NOT fnd_api.compatible_api_call (
113 l_api_version,
114 p_api_version,
115 l_api_name,
116 g_pkg_name
117 )
118 THEN
119 RAISE fnd_api.g_exc_unexpected_error;
120 END IF;
121
122 -- Initialize Message list
123
124 IF fnd_api.to_boolean(p_init_msg_list)
125 THEN
126 FND_MSG_PUB.INITIALIZE;
127 END IF;
128
129 -- Check for NOT NULL columns
130
131 IF ((p_workitem_obj_code = FND_API.G_MISS_CHAR) or
132 (p_workitem_obj_code is null))
133 THEN
134 l_miss_param_flag := 1;
135 l_token_str := l_token_str || ' WORKITEM_OBJECT_CODE ';
136 END IF;
137 IF ((p_workitem_pk_id = FND_API.G_MISS_NUM) or
138 (p_workitem_pk_id is null))
139 THEN
140 l_miss_param_flag := 1;
141 l_token_str := l_token_str || ' WORKITEM_PK_ID ';
142 END IF;
143 IF ((p_work_item_number = FND_API.G_MISS_CHAR) or
144 (p_work_item_number is null))
145 THEN
146 l_miss_param_flag := 1;
147 l_token_str := l_token_str || ' WORK_ITEM_NUMBER ';
148 END IF;
149 IF ((p_title = FND_API.G_MISS_CHAR) or
150 (p_title is null))
151 THEN
152 l_miss_param_flag := 1;
153 l_token_str := l_token_str || ' TITLE ';
154 END IF;
155 IF ((p_priority_code = FND_API.G_MISS_CHAR) or
156 (p_priority_code is null))
157 THEN
158 l_miss_param_flag := 1;
159 l_token_str := l_token_str || ' PRIORITY_CODE ';
160 END IF;
161 IF ((p_work_item_status = FND_API.G_MISS_CHAR) or
162 (p_work_item_status is null))
163 THEN
164 l_miss_param_flag := 1;
165 l_token_str := l_token_str || ' WORK_ITEM_STATUS ';
166 END IF;
167 IF ((p_ieu_enum_type_uuid = FND_API.G_MISS_CHAR) or
168 (p_ieu_enum_type_uuid is null))
169 THEN
170 l_miss_param_flag := 1;
171 l_token_str := l_token_str || ' ENUM_TYPE_UUID ';
172 END IF;
173 IF ((p_application_id = FND_API.G_MISS_NUM) or
174 (p_application_id is null))
175 THEN
176 l_miss_param_flag := 1;
177 l_token_str := l_token_str || ' APPLICATION_ID ';
178 END IF;
179 IF ((p_user_id = FND_API.G_MISS_NUM) or
180 (p_user_id is null))
181 THEN
182 l_miss_param_flag := 1;
183 l_token_str := l_token_str || ' USER_ID ';
184 END IF;
185
186 If (l_miss_param_flag = 1)
187 THEN
188
189 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_REQUIRED_PARAM_NULL');
190 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
191 FND_MESSAGE.SET_TOKEN('IEU_UWQ_REQ_PARAM',l_token_str);
192 fnd_msg_pub.ADD;
193 fnd_msg_pub.Count_and_Get
194 (
195 p_count => x_msg_count,
196 p_data => x_msg_data
197 );
198
199 x_return_status := fnd_api.g_ret_sts_error;
200 RAISE fnd_api.g_exc_error;
201
202 END IF;
203
204 -- Validate object Code, owner_id, owner_type, assignee_id, assignee_type
205
206 IF (p_workitem_obj_code is not null)
207 THEN
208
209 l_token_str := '';
210
211 BEGIN
212 SELECT object_code, object_function
213 INTO l_workitem_obj_code, l_object_function
214 FROM jtf_objects_b
215 WHERE object_code = p_workitem_obj_code;
216 EXCEPTION
217 WHEN no_data_found THEN
218 null;
219 END;
220
221 IF (l_workitem_obj_code is null)
222 THEN
223
224 l_param_valid_flag := 1;
225 l_token_str := ' WORKITEM_OBJ_CODE : '||p_workitem_obj_code;
226
227 END IF;
228
229 IF (l_param_valid_flag = 1)
230 THEN
231
232 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
233 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
234 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
235 fnd_msg_pub.ADD;
236 fnd_msg_pub.Count_and_Get
237 (
238 p_count => x_msg_count,
239 p_data => x_msg_data
240 );
241
242 RAISE fnd_api.g_exc_error;
243
244 END IF;
245
246 END IF;
247
248 IF (p_priority_code is not null)
249 THEN
250
251 l_token_str := '';
252
253 BEGIN
254
255 SELECT priority_id, priority_level
256 INTO l_priority_id, l_priority_level
257 FROM ieu_uwqm_priorities_b
258 WHERE priority_code = p_priority_code;
259
260 EXCEPTION
261 WHEN no_data_found THEN
262
263 l_param_valid_flag := 1;
264 l_token_str := 'PRIORITY_CODE : '||p_priority_code ;
265
266 END;
267
268 IF (l_param_valid_flag = 1)
269 THEN
270
271 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
272 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
273 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
274 fnd_msg_pub.ADD;
275 fnd_msg_pub.Count_and_Get
276 (
277 p_count => x_msg_count,
278 p_data => x_msg_data
279 );
280
281 RAISE fnd_api.g_exc_error;
282
283 END IF;
284
285 END IF;
286
287 -- Validate Work Item Status
288
289 IF (p_work_item_status = 'OPEN') OR
290 (p_work_item_status = 'CLOSE') OR
291 (p_work_item_status = 'DELETE') OR
292 (p_work_item_status = 'SLEEP')
293 THEN
294 l_work_item_status_valid_flag := 'T';
295 ELSE
296 l_work_item_status_valid_flag := 'F';
297 l_token_str := ' WORK_ITEM_STATUS : '||p_work_item_status;
298 END IF;
299
300 IF (l_work_item_status_valid_flag = 'F')
301 THEN
302
303 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
304 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
305 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
306 fnd_msg_pub.ADD;
307 fnd_msg_pub.Count_and_Get
308 (
309 p_count => x_msg_count,
310 p_data => x_msg_data
311 );
312
313 RAISE fnd_api.g_exc_error;
314
315 END IF;
316
317
318 IF (length(p_title) > l_title_len)
319 THEN
320
321
322 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_PARAM_EXCEED_MAX');
323 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
324 FND_MESSAGE.SET_TOKEN('IEU_UWQ_PARAM_MAX',' TITLE ');
325 fnd_msg_pub.ADD;
326 fnd_msg_pub.Count_and_Get
327 (
328 p_count => x_msg_count,
329 p_data => x_msg_data
330 );
331
332 RAISE fnd_api.g_exc_error;
333
334 END IF;
335
336 -- If OWNER_TYPE or ASSIGNEE_TYPE is not RS_GROUP then set it to RS_INDIVIDUAL
337
338 IF ( (p_owner_type <> 'RS_GROUP')
339 AND (p_owner_type <> 'RS_TEAM') )
340 THEN
341
342 l_owner_type:= 'RS_INDIVIDUAL';
343 l_owner_type_actual := p_owner_type;
344
345 else
346
347 l_owner_type := p_owner_type;
348 l_owner_type_actual := p_owner_type;
349
350 END IF;
351
352 IF ( (p_assignee_type <> 'RS_GROUP')
353 AND (p_assignee_type <> 'RS_TEAM') )
354 THEN
355
356 l_assignee_type := 'RS_INDIVIDUAL';
357 l_assignee_type_actual := p_assignee_type;
358
359 else
360
361 l_assignee_type := p_assignee_type;
362 l_assignee_type_actual := p_assignee_type;
363
364 END IF;
365
366 if ( (p_owner_type is not null) and (p_owner_id is null)) OR
367 ( (p_assignee_type is not null) and (p_assignee_id is null) )
368 then
369 l_token_str := '';
370 l_token_str2 := '';
371 FND_MESSAGE.SET_NAME('IEU', 'IEU_WR_OWN_OR_ASG_ID_NULL');
372 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
373 if ( (p_owner_id is null) and (p_owner_type is not null) OR
374 (p_owner_id is not null) and (p_owner_type is null) )
375 then
376 l_token_str := ' OWNER_ID';
377 l_token_str2 := 'OWNER_TYPE - '||p_owner_type;
378 end if;
379 if ( (p_assignee_id is null) and (p_assignee_type is not null) OR
380 (p_assignee_id is not null) and (p_assignee_type is null) )
381 then
382 if (l_token_str is not null)
383 then
384 l_token_str := l_token_str ||', ASSIGNEE_ID';
385 else
386 l_token_str := ' ASSIGNEE_ID';
387 end if;
388 if (l_token_str2 is not null)
389 then
390 l_token_str2 := l_token_str2 || ', ASSINGEE_TYPE - '||p_assignee_type;
391 else
392 l_token_str2 := ' ASSINGEE_TYPE - '||p_assignee_type;
393 end if;
394 end if;
395 FND_MESSAGE.SET_TOKEN('ID_PARAM',l_token_str);
396 FND_MESSAGE.SET_TOKEN('TYPE_PARAM',l_token_str2);
397 fnd_msg_pub.ADD;
398 fnd_msg_pub.Count_and_Get
399 (
400 p_count => x_msg_count,
401 p_data => x_msg_data
402 );
403
404 RAISE fnd_api.g_exc_error;
405 end if;
406
407 -- Check Source_Object_type_code, Source_Object_id
408 /*
409 IF (p_source_object_type_code is null)
410 THEN
411 l_source_object_type_code := p_workitem_obj_code;
412 ELSE
413 l_source_object_type_code := p_source_object_type_code;
414 END IF;
415
416 IF (p_source_object_id is null)
417 THEN
418 l_source_object_id := p_workitem_pk_id;
419 ELSE
420 l_source_object_id := p_source_object_id;
421 END IF;
422 */
423
424 -- Set Work Item Status Id
425
426 IF (p_work_item_status is not null)
427 THEN
428 IF (p_work_item_status = 'OPEN')
429 THEN
430 l_work_item_status_id := 0;
431 ELSIF (p_work_item_status = 'CLOSE')
432 THEN
433 l_work_item_status_id := 3;
434 ELSIF (p_work_item_status = 'DELETE')
435 THEN
436 l_work_item_status_id := 4;
437 ELSIF (p_work_item_status = 'SLEEP')
438 THEN
439 l_work_item_status_id := 5;
440 END IF;
441 END IF;
442
443
444 -- Set the Distribution states based on Business Rules
445
446 -- Get the Work_source_id
447
448 BEGIN
449 l_not_valid_flag := 'N';
450 Select ws_id
451 into l_ws_id1
452 from ieu_uwqm_work_sources_b
453 where object_code = p_workitem_obj_code
454 -- and nvl(not_valid_flag,'N') = 'N';
455 and nvl(not_valid_flag,'N') = l_not_valid_flag;
456
457 EXCEPTION
458 WHEN OTHERS THEN
459
460 -- Work Source does not exist for this Object Code
461 l_token_str := 'OBJECT_CODE: '||p_workitem_obj_code;
462 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_WORK_SOURCE');
463 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
464 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
465 fnd_msg_pub.ADD;
466 fnd_msg_pub.Count_and_Get
467 (
468 p_count => x_msg_count,
469 p_data => x_msg_data
470 );
471
472 RAISE fnd_api.g_exc_error;
473
474 END;
475
476 if (p_source_object_type_code is not null)
477 then
478
479 BEGIN
480 l_not_valid_flag := 'N';
481 Select ws_id
482 into l_ws_id2
483 from ieu_uwqm_work_sources_b
484 where object_code = p_source_object_type_code
485 -- and nvl(not_valid_flag,'N') = 'N';
486 and nvl(not_valid_flag,'N') = l_not_valid_flag;
487
488 EXCEPTION
489 WHEN OTHERS THEN
490
491 l_ws_id2 := null;
492 END;
493
494 end if;
495
496 if (l_ws_id2 is not null)
497 then
498
499 -- Check if Any Work Source Association exists for this combination of Object Code/Source Obj Code
500 BEGIN
501 l_not_valid_flag := 'N';
502 SELECT a.ws_id
503 INTO l_association_ws_id
504 FROM ieu_uwqm_ws_assct_props a, ieu_uwqm_work_sources_b b
505 WHERE child_ws_id = l_ws_id1
506 AND parent_ws_id = l_ws_id2
507 AND a.ws_id = b.ws_id
508 -- AND nvl(b.not_valid_flag,'N') = 'N';
509 AND nvl(b.not_valid_flag,'N') = l_not_valid_flag;
510
511 EXCEPTION
512 WHEN NO_DATA_FOUND THEN
513 l_association_ws_id := null;
514 END;
515
516 else
517 l_association_ws_id := null;
518
519 end if;
520
521 -- Get the Distribute_from, Distribute_to
522
523 if (l_association_ws_id is not null)
524 then
525
526 l_curr_ws_id := l_association_ws_id;
527
528 BEGIN
529 l_not_valid_flag := 'N';
530 SELECT ws_a_props.dist_st_based_on_parent_flag
531 INTO l_dist_st_based_on_parent
532 FROM ieu_uwqm_work_sources_b ws_b, IEU_UWQM_WS_ASSCT_PROPS ws_a_props
533 WHERE ws_b.ws_id = l_association_ws_id
534 AND ws_b.ws_id = ws_a_props.ws_id
535 -- AND nvl(ws_b.not_valid_flag,'N') = 'N';
536 AND nvl(ws_b.not_valid_flag,'N') = l_not_valid_flag;
537
538 EXCEPTION
539 WHEN OTHERS THEN
540 -- Work Source Details does not exist for this Object Code
541 l_token_str := '';
542 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
543 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
544 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
545 fnd_msg_pub.ADD;
546 fnd_msg_pub.Count_and_Get
547 (
548 p_count => x_msg_count,
549 p_data => x_msg_data
550 );
551
552 RAISE fnd_api.g_exc_error;
553 END;
554 l_dist_from := 'GROUP_OWNED';
555 l_dist_to := 'INDIVIDUAL_ASSIGNED';
556
557 else
558 l_dist_from := 'GROUP_OWNED';
559 l_dist_to := 'INDIVIDUAL_ASSIGNED';
560
561 l_curr_ws_id := l_ws_id1;
562 /*
563 BEGIN
564
565 SELECT distribute_from, distribute_to
566 INTO l_dist_from, l_dist_to
567 FROM ieu_uwqm_work_sources_b
568 WHERE ws_id = l_ws_id1;
569
570 EXCEPTION
571 WHEN OTHERS THEN
572 -- Work Source Details does not exist for this Object Code
573 l_token_str := '';
574 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
575 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
576 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
577 fnd_msg_pub.ADD;
578 fnd_msg_pub.Count_and_Get
579 (
580 p_count => x_msg_count,
581 p_data => x_msg_data
582 );
583
584 RAISE fnd_api.g_exc_error;
585 END;
586 */
587 end if;
588
589 -- Set Distribution Status based on these rules
590
591 -- If the Distribution State is based on the Parent, then check if the parent is distributed.
592
593 if (l_dist_st_based_on_parent = 'Y')
594 then
595 BEGIN
596 SELECT distribution_status_id, status_id
597 INTO l_parent_dist_status, l_parent_status_id
598 FROM ieu_uwqm_items
599 WHERE workitem_pk_id = p_source_object_id
600 AND workitem_obj_code = p_source_object_type_code;
601 EXCEPTION
602 WHEN OTHERS THEN
603 l_parent_dist_status := null;
604 END;
605 end if;
606
607 -- If the parent is not distributed, then this item will be in "On-Hold/Unavailable" status
608 -- else set the status based on distribute_from and distribute_to
609
610 if (l_parent_status_id = 3)
611 then
612
613 l_set_dist_id_flag := 'T';
614
615 else
616
617 if (l_parent_dist_status <> 3)
618 then
619
620 l_distribution_status_id := 0;
621
622 else
623
624 l_set_dist_id_flag := 'T';
625
626 end if; /* parent_dist_status */
627
628 end if; /* l_parent_status_id */
629
630 if (l_set_dist_id_flag = 'T')
631 then
632
633 if (l_parent_dist_status <> 3)
634 then
635
636 l_distribution_status_id := 0;
637
638 else
639 if (l_dist_from = 'GROUP_OWNED') and
640 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
641 then
642
643 if (l_owner_type = 'RS_GROUP') and
644 ( (l_assignee_type is null) OR (l_assignee_type <> 'RS_INDIVIDUAL') )
645 then
646 l_distribution_status_id := 1;
647 elsif (l_assignee_type = 'RS_INDIVIDUAL')
648 then
649 l_distribution_status_id := 3;
650 else
651 l_distribution_status_id := 0;
652 end if;
653 end if;
654 /*
655 if (l_dist_from = 'GROUP_OWNED') and
656 (l_dist_to = 'INDIVIDUAL_OWNED')
657 then
658
659 if (l_owner_type = 'RS_GROUP')
660 then
661 l_distribution_status_id := 1;
662 elsif (l_owner_type = 'RS_INDIVIDUAL')
663 then
664 l_distribution_status_id := 3;
665 else
666 l_distribution_status_id := 0;
667 end if;
668
669 elsif (l_dist_from = 'GROUP_OWNED') and
670 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
671 then
672
673 if (l_owner_type = 'RS_GROUP') and
674 ( (l_assignee_type is null) OR (l_assignee_type <> 'RS_INDIVIDUAL') )
675 then
676 l_distribution_status_id := 1;
677 elsif (l_assignee_type = 'RS_INDIVIDUAL')
678 then
679 l_distribution_status_id := 3;
680 else
681 l_distribution_status_id := 0;
682 end if;
683
684 elsif (l_dist_from = 'GROUP_ASSIGNED') and
685 (l_dist_to = 'INDIVIDUAL_OWNED')
686 then
687
688 if (l_assignee_type = 'RS_GROUP') and
689 ( (l_owner_type is null) OR (l_owner_type <> 'RS_INDIVIDUAL') )
690 then
691 l_distribution_status_id := 1;
692 elsif (l_owner_type = 'RS_INDIVIDUAL')
693 then
694 l_distribution_status_id := 3;
695 else
696 l_distribution_status_id := 0;
697 end if;
698
699 elsif (l_dist_from = 'GROUP_ASSIGNED') and
700 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
701 then
702
703 if (l_assignee_type = 'RS_GROUP')
704 then
705 l_distribution_status_id := 1;
706 elsif (l_assignee_type = 'RS_INDIVIDUAL')
707 then
708 l_distribution_status_id := 3;
709 else
710 l_distribution_status_id := 0;
711 end if;
712
713 end if;
714 */
715 end if; /* l_parent_dist_status */
716
717 end if; /* l_set_dist_id_flag */
718
719 IEU_WR_ITEMS_PKG.INSERT_ROW
720 ( p_workitem_obj_code,
721 p_workitem_pk_id,
722 p_work_item_number,
723 p_title,
724 p_party_id,
725 l_priority_id,
726 l_priority_level,
727 p_due_date,
728 l_work_item_status_id,
729 p_owner_id,
730 l_owner_type,
731 p_assignee_id,
732 l_assignee_type,
733 l_owner_type_actual,
734 l_assignee_type_actual,
735 p_source_object_id,
736 p_source_object_type_code,
737 p_application_id,
738 p_ieu_enum_type_uuid,
739 p_user_id,
740 p_login_id,
741 l_curr_ws_id,
742 l_distribution_status_id,
743 x_work_item_id,
744 l_msg_data,
745 x_return_status
746 );
747
748
749 IF (x_return_status = fnd_api.g_ret_sts_success)
750 THEN
751
752 -- Set the Distribution Status of Child Work Items which are on-hold
753 -- If it is a primary Work Source with Dependent Items
754 if (l_association_ws_id is null)
755 then
756 BEGIN
757 l_not_valid_flag := 'N';
758 select a.ws_id
759 into l_ws_id
760 from ieu_uwqm_ws_assct_props a, ieu_uwqm_work_sources_b b
761 where (parent_ws_id = l_curr_ws_id)
762 and a.ws_id = b.ws_id
763 -- and nvl(b.not_valid_flag, 'N') = 'N';
764 and nvl(b.not_valid_flag, 'N') = l_not_valid_flag;
765 EXCEPTION
766 WHEN OTHERS THEN
767 l_ws_id := null;
768 END;
769
770 if (l_ws_id is not null)
771 then
772
773 l_ctr := 0;
774 for cur_rec in c1(p_workitem_pk_id, p_workitem_obj_code)
775 loop
776 l_wr_item_list(l_ctr).work_item_id := cur_rec.work_item_id;
777 l_wr_item_list(l_ctr).workitem_pk_id := cur_rec.workitem_pk_id;
778 l_wr_item_list(l_ctr).workitem_obj_code := cur_rec.workitem_obj_code;
779 l_ctr := l_ctr + 1;
780 end loop;
781
782 if ( l_wr_item_list.count > 0)
783 then
784
785 IEU_WR_PUB.SYNC_DEPENDENT_WR_ITEMS
786 ( p_api_version => 1,
787 p_init_msg_list => 'T',
788 p_commit => 'F',
789 p_wr_item_list => l_wr_item_list,
790 x_msg_count => l_msg_count,
791 x_msg_data => l_msg_data,
792 x_return_status => x_return_status);
793
794 if (x_return_status <> 'S')
795 then
796 x_return_status := fnd_api.g_ret_sts_error;
797 l_token_str := l_msg_data;
798
799 FND_MESSAGE.SET_NAME('IEU', 'IEU_CREATE_WR_ITEM_FAILED');
800 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
801 FND_MESSAGE.SET_TOKEN('DETAILS', l_token_str);
802
803 fnd_msg_pub.ADD;
804 fnd_msg_pub.Count_and_Get
805 (
806 p_count => x_msg_count,
807 p_data => x_msg_data
808 );
809
810 RAISE fnd_api.g_exc_error;
811 end if; /* x_return_status */
812 end if; /* l_wr_item_list.count */
813
814 end if; /*l_ws_code is not null */
815
816 end if; /* association_ws_id is null */
817
818 ELSIF (x_return_status <> fnd_api.g_ret_sts_success)
819 THEN
820
821 x_return_status := fnd_api.g_ret_sts_error;
822 l_token_str := l_msg_data;
823
824 FND_MESSAGE.SET_NAME('IEU', 'IEU_CREATE_WR_ITEM_FAILED');
825 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
826 FND_MESSAGE.SET_TOKEN('DETAILS', l_token_str);
827
828 fnd_msg_pub.ADD;
829 fnd_msg_pub.Count_and_Get
830 (
831 p_count => x_msg_count,
832 p_data => x_msg_data
833 );
834
835 RAISE fnd_api.g_exc_error;
836 END IF;
837
838 IF FND_API.TO_BOOLEAN( p_commit )
839 THEN
840 COMMIT WORK;
841 END IF;
842
843
844 EXCEPTION
845
846 WHEN fnd_api.g_exc_error THEN
847
848 ROLLBACK TO insert_wr_items_sp;
849 x_return_status := fnd_api.g_ret_sts_error;
850
851 fnd_msg_pub.Count_and_Get
852 (
853 p_count => x_msg_count,
854 p_data => x_msg_data
855 );
856
857 WHEN fnd_api.g_exc_unexpected_error THEN
858
859 ROLLBACK TO insert_wr_items_sp;
860 x_return_status := fnd_api.g_ret_sts_unexp_error;
861
862 fnd_msg_pub.Count_and_Get
863 (
864 p_count => x_msg_count,
865 p_data => x_msg_data
866 );
867
868
869 WHEN OTHERS THEN
870
871 ROLLBACK TO insert_wr_items_sp;
872 x_return_status := fnd_api.g_ret_sts_unexp_error;
873
874 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
875 THEN
876
877 fnd_msg_pub.Count_and_Get
878 (
879 p_count => x_msg_count,
880 p_data => x_msg_data
881 );
882
883 END IF;
884
885 END CREATE_WR_ITEM;
886
887 PROCEDURE UPDATE_WR_ITEM
888 ( p_api_version IN NUMBER,
889 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
890 p_commit IN VARCHAR2 DEFAULT NULL,
891 p_workitem_obj_code IN VARCHAR2 DEFAULT NULL,
892 p_workitem_pk_id IN NUMBER DEFAULT NULL,
893 p_title IN VARCHAR2 DEFAULT NULL,
894 p_party_id IN NUMBER,
895 p_priority_code IN VARCHAR2 DEFAULT NULL,
896 p_due_date IN DATE,
897 p_owner_id IN NUMBER DEFAULT NULL,
898 p_owner_type IN VARCHAR2 DEFAULT NULL,
899 p_assignee_id IN NUMBER,
900 p_assignee_type IN VARCHAR2,
901 p_source_object_id IN NUMBER,
902 p_source_object_type_code IN VARCHAR2,
903 p_application_id IN NUMBER DEFAULT NULL,
904 p_work_item_status IN VARCHAR2 DEFAULT NULL,
905 p_user_id IN NUMBER DEFAULT NULL,
906 p_login_id IN NUMBER DEFAULT NULL,
907 x_msg_count OUT NOCOPY NUMBER,
908 x_msg_data OUT NOCOPY VARCHAR2,
909 x_return_status OUT NOCOPY VARCHAR2) AS
910
911 l_api_version NUMBER := 1.0;
912 l_api_name VARCHAR2(30);
913
914 l_miss_param_flag NUMBER(1) := 0;
915 l_token_str VARCHAR2(4000);
916 l_token_str2 VARCHAR2(4000);
917 l_param_valid_flag NUMBER(1) := 0;
918
919 l_workitem_obj_code VARCHAR2(30);
920 l_object_function VARCHAR2(30);
921 l_owner_id NUMBER;
922 l_assignee_id NUMBER;
923 l_owner_type VARCHAR2(25);
924 l_assignee_type VARCHAR2(25);
925 l_priority_id NUMBER;
926 l_priority_level NUMBER;
927 l_status_id NUMBER := 0;
928 l_title_len NUMBER := 1990;
929 l_work_item_status_id NUMBER;
930 l_work_item_status_valid_flag VARCHAR2(10);
931
932 l_source_object_type_code VARCHAR2(30);
933 l_source_object_id NUMBER;
934
935 l_owner_type_actual VARCHAR2(30);
936 l_assignee_type_actual VARCHAR2(30);
937
938 l_msg_data VARCHAR2(4000);
939
940 l_ws_id1 NUMBER;
941 l_ws_id2 NUMBER;
942 l_association_ws_id NUMBER;
943 l_dist_from IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_FROM%TYPE;
944 l_dist_to IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_TO%TYPE;
945 l_curr_ws_id NUMBER;
946
947 l_dist_st_based_on_parent IEU_UWQM_WS_ASSCT_PROPS.DIST_ST_BASED_ON_PARENT_FLAG%TYPE;
948 l_distribution_status_id NUMBER;
949 l_parent_dist_status NUMBER;
950 l_set_dist_id_flag VARCHAR2(5);
951 l_parent_status_id NUMBER;
952 l_ws_id NUMBER;
953 l_ctr NUMBER;
954 l_msg_count NUMBER;
955 l_wr_item_list IEU_WR_PUB.IEU_WR_ITEM_LIST;
956
957 cursor c1(p_source_object_id IN NUMBER, p_source_object_type_code IN VARCHAR2) is
958 select work_item_id, workitem_pk_id, workitem_obj_code
959 from ieu_uwqm_items
960 where source_object_id = p_source_object_id
961 and source_object_type_code = p_source_object_type_code
962 and ( distribution_status_id = 0 or distribution_status_id = 1);
963
964 m_title VARCHAR2(1990);
965 m_party_id NUMBER;
966 m_priority_code VARCHAR2(30);
967 m_due_date DATE;
968 m_owner_id NUMBER;
969 m_owner_type VARCHAR2(25);
970 m_assignee_id NUMBER;
971 m_assignee_type VARCHAR2(25);
972 m_source_object_id NUMBER;
973 m_source_object_type_code VARCHAR2(30);
974 m_application_id NUMBER;
975 m_work_item_status VARCHAR2(30);
976 l_due_date DATE;
977 l_reschedule_time DATE;
978
979 BEGIN
980
981 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
982 l_api_name := 'UPDATE_WR_ITEM';
983 l_token_str := '';
984 SAVEPOINT update_wr_items_sp;
985 x_return_status := fnd_api.g_ret_sts_success;
986
987 IF NOT fnd_api.compatible_api_call (
988 l_api_version,
989 p_api_version,
990 l_api_name,
991 g_pkg_name
992 )
993 THEN
994 RAISE fnd_api.g_exc_unexpected_error;
995 END IF;
996
997 -- Initialize Message list
998
999 IF fnd_api.to_boolean(p_init_msg_list)
1000 THEN
1001 FND_MSG_PUB.INITIALIZE;
1002 END IF;
1003
1004 -- Check for NOT NULL columns
1005
1006 IF (p_workitem_obj_code is null)
1007 THEN
1008 l_miss_param_flag := 1;
1009 l_token_str := l_token_str || ' WORKITEM_OBJECT_CODE ';
1010 END IF;
1011 IF (p_workitem_pk_id is null)
1012 THEN
1013 l_miss_param_flag := 1;
1014 l_token_str := l_token_str || ' WORKITEM_PK_ID ';
1015 END IF;
1016 IF (p_priority_code is null)
1017 THEN
1018 l_miss_param_flag := 1;
1019 l_token_str := l_token_str || ' PRIORITY_CODE ';
1020 END IF;
1021 IF (p_work_item_status is null)
1022 THEN
1023 l_miss_param_flag := 1;
1024 l_token_str := l_token_str || ' WORK_ITEM_STATUS ';
1025 END IF;
1026 IF (p_application_id is null)
1027 THEN
1028 l_miss_param_flag := 1;
1029 l_token_str := l_token_str || ' APPLICATION_ID ';
1030 END IF;
1031 IF (p_title is null)
1032 THEN
1033 l_miss_param_flag := 1;
1034 l_token_str := l_token_str || ' TITLE ';
1035 END IF;
1036 IF (p_user_id is null)
1037 THEN
1038 l_miss_param_flag := 1;
1039 l_token_str := l_token_str || ' USER_ID ';
1040 END IF;
1041
1042 If (l_miss_param_flag = 1)
1043 THEN
1044
1045 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_REQUIRED_PARAM_NULL');
1046 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
1047 FND_MESSAGE.SET_TOKEN('IEU_UWQ_REQ_PARAM',l_token_str);
1048 fnd_msg_pub.ADD;
1049 fnd_msg_pub.Count_and_Get
1050 (
1051 p_count => x_msg_count,
1052 p_data => x_msg_data
1053 );
1054
1055 x_return_status := fnd_api.g_ret_sts_error;
1056 RAISE fnd_api.g_exc_error;
1057
1058 END IF;
1059
1060 ---- validate if FND_API.G_MISS is passed
1061
1062 /***************
1063 select decode(p_title, FND_API.G_MISS_CHAR, title, p_title) title,
1064 decode(p_party_id, FND_API.G_MISS_NUM, party_id, p_party_id) party_id,
1065 decode(p_due_date, FND_API.G_MISS_DATE, due_date, p_due_date) due_date,
1066 decode(p_owner_id, FND_API.G_MISS_NUM, owner_id, p_owner_id) owner_id,
1067 decode(p_owner_type, FND_API.G_MISS_CHAR, owner_type_actual, p_owner_type) owner_type_actual,
1068 decode(p_assignee_id, FND_API.G_MISS_NUM, assignee_id, p_assignee_id) assignee_id,
1069 decode(p_assignee_type, FND_API.G_MISS_CHAR, assignee_type_actual, p_assignee_type) assignee_type_actual,
1070 decode(p_source_object_id, FND_API.G_MISS_NUM, source_object_id, p_source_object_id) source_object_id,
1071 decode(p_source_object_type_code, FND_API.G_MISS_CHAR, source_object_type_code, p_source_object_type_code) source_object_type_code,
1072 decode(p_application_id, FND_API.G_MISS_NUM, application_id, p_application_id) application_id
1073 into m_title,
1074 m_party_id,
1075 m_due_date,
1076 m_owner_id,
1077 m_owner_type,
1078 m_assignee_id,
1079 m_assignee_type,
1080 m_source_object_id,
1081 m_source_object_type_code,
1082 m_application_id
1083 from ieu_uwqm_items
1084 where workitem_obj_code = p_workitem_obj_code
1085 and workitem_pk_id = p_workitem_pk_id;
1086
1087 *****************/
1088 /**** Modified this code due to performance reasons ********/
1089 BEGIN
1090 select title,
1091 party_id,
1092 due_date,
1093 owner_id,
1094 owner_type_actual,
1095 assignee_id,
1096 assignee_type_actual,
1097 source_object_id,
1098 source_object_type_code,
1099 application_id
1100 into m_title,
1101 m_party_id,
1102 m_due_date,
1103 m_owner_id,
1104 m_owner_type,
1105 m_assignee_id,
1106 m_assignee_type,
1107 m_source_object_id,
1108 m_source_object_type_code,
1109 m_application_id
1110 from ieu_uwqm_items
1111 where workitem_obj_code = p_workitem_obj_code
1112 and workitem_pk_id = p_workitem_pk_id;
1113
1114 EXCEPTION WHEN OTHERS THEN
1115 l_token_str := 'TITLE, PARTY_ID, DUE_DATE, OWNER_ID, OWNER_TYPE, ';
1116 l_token_str := l_token_str || 'ASSIGNEE_ID, APPLICATION_ID, SOURCE_OBJECT_ID, SOURCE_OBJ_TYPE';
1117
1118 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
1119 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
1120 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
1121 fnd_msg_pub.ADD;
1122 fnd_msg_pub.Count_and_Get
1123 (
1124 p_count => x_msg_count,
1125 p_data => x_msg_data
1126 );
1127
1128 RAISE fnd_api.g_exc_error;
1129 END;
1130
1131 IF ((p_title <> FND_API.G_MISS_CHAR))
1132 THEN
1133 m_title := p_title;
1134 END IF;
1135 IF ((nvl(p_party_id, -9999) <> FND_API.G_MISS_NUM) )
1136 THEN
1137 m_party_id := p_party_id;
1138 END IF;
1139 IF ((nvl(p_due_date, sysdate) <> FND_API.G_MISS_DATE) )
1140 THEN
1141 m_due_date := p_due_date;
1142 END IF;
1143 IF ((nvl(p_owner_id, -9999) <> FND_API.G_MISS_NUM ))
1144 THEN
1145 m_owner_id := p_owner_id;
1146 END IF;
1147 IF ((nvl(p_owner_type, 'NULL') <> FND_API.G_MISS_CHAR ))
1148 then
1149 m_owner_type := p_owner_type;
1150 END IF;
1151 IF ( (nvl( p_assignee_id, -9999) <> FND_API.G_MISS_NUM ))
1152 THEN
1153 m_assignee_id := p_assignee_id;
1154 END IF;
1155 IF ( (nvl(p_assignee_type, 'NULL') <> FND_API.G_MISS_CHAR ))
1156 THEN
1157 m_assignee_type := p_assignee_type;
1158 END IF;
1159 IF ((p_application_id <> FND_API.G_MISS_NUM) )
1160 THEN
1161 m_application_id := p_application_id;
1162 END IF;
1163 IF ((nvl(p_source_object_id, -9999) <> FND_API.G_MISS_NUM) )
1164 THEN
1165 m_source_object_id := p_source_object_id;
1166 END IF;
1167 IF ((nvl(p_source_object_type_code, 'NULL') <> FND_API.G_MISS_CHAR) )
1168 THEN
1169 m_source_object_type_code := p_source_object_type_code;
1170 END IF;
1171
1172 BEGIN
1173 select decode(p_priority_code, FND_API.G_MISS_CHAR, b.priority_code, p_priority_code) priority_code
1174 into m_priority_code
1175 from ieu_uwqm_items a, ieu_uwqm_priorities_b b
1176 where a.priority_id = b.priority_id
1177 and a.priority_level = b.priority_level
1178 and a.workitem_obj_code = p_workitem_obj_code
1179 and a.workitem_pk_id = p_workitem_pk_id;
1180 EXCEPTION
1181 WHEN OTHERS THEN
1182
1183 l_token_str := 'PRIORITY_CODE : '||p_priority_code;
1184
1185 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
1186 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
1187 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
1188 fnd_msg_pub.ADD;
1189 fnd_msg_pub.Count_and_Get
1190 (
1191 p_count => x_msg_count,
1192 p_data => x_msg_data
1193 );
1194
1195 RAISE fnd_api.g_exc_error;
1196
1197 END;
1198
1199 BEGIN
1200 select decode(p_work_item_status, FND_API.G_MISS_CHAR, decode(status_id, 0, 'OPEN', 3, 'CLOSE', 4, 'DELETE', 5, 'SLEEP'), p_work_item_status) status_id
1201 into m_work_item_status
1202 from ieu_uwqm_items
1203 where workitem_obj_code = p_workitem_obj_code
1204 and workitem_pk_id = p_workitem_pk_id;
1205 EXCEPTION
1206 WHEN OTHERS THEN
1207 l_token_str := 'WORK_ITEM_STATUS : '||p_work_item_status;
1208
1209 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
1210 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
1211 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
1212 fnd_msg_pub.ADD;
1213 fnd_msg_pub.Count_and_Get
1214 (
1215 p_count => x_msg_count,
1216 p_data => x_msg_data
1217 );
1218
1219 RAISE fnd_api.g_exc_error;
1220
1221
1222
1223 END;
1224 -------- end of FND_API.G_MISS changes
1225
1226
1227 -- Validate object Code
1228
1229 IF (p_workitem_obj_code is not NULL)
1230 THEN
1231
1232 l_token_str := '';
1233
1234 BEGIN
1235 SELECT 1
1236 INTO l_workitem_obj_code
1237 FROM jtf_objects_b
1238 WHERE object_code = p_workitem_obj_code;
1239 EXCEPTION
1240 WHEN no_data_found THEN
1241 null;
1242 END;
1243
1244 IF (l_workitem_obj_code is null)
1245 THEN
1246
1247 l_param_valid_flag := 1;
1248 l_token_str := 'WORKITEM_OBJ_CODE : '||p_workitem_obj_code;
1249
1250 END IF;
1251
1252 IF (l_param_valid_flag = 1)
1253 THEN
1254
1255 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
1256 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
1257 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
1258 fnd_msg_pub.ADD;
1259 fnd_msg_pub.Count_and_Get
1260 (
1261 p_count => x_msg_count,
1262 p_data => x_msg_data
1263 );
1264
1265 RAISE fnd_api.g_exc_error;
1266
1267 END IF;
1268
1269 END IF;
1270
1271 IF (m_priority_code is NOT NULL)
1272 THEN
1273
1274 l_token_str := '';
1275
1276 BEGIN
1277
1278 SELECT priority_id, priority_level
1279 INTO l_priority_id, l_priority_level
1280 FROM ieu_uwqm_priorities_b
1281 WHERE priority_code = m_priority_code;
1282
1283 EXCEPTION
1284 WHEN no_data_found THEN
1285
1286 l_param_valid_flag := 1;
1287 l_token_str := l_token_str || 'PRIORITY_CODE : '||m_priority_code;
1288
1289 END;
1290
1291 IF (l_param_valid_flag = 1)
1292 THEN
1293
1294 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
1295 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
1296 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
1297 fnd_msg_pub.ADD;
1298 fnd_msg_pub.Count_and_Get
1299 (
1300 p_count => x_msg_count,
1301 p_data => x_msg_data
1302 );
1303
1304 RAISE fnd_api.g_exc_error;
1305
1306 END IF;
1307
1308 END IF;
1309
1310 IF (m_work_item_status = 'OPEN') OR
1311 (m_work_item_status = 'CLOSE') OR
1312 (m_work_item_status = 'DELETE') OR
1313 (m_work_item_status = 'SLEEP')
1314 THEN
1315 l_work_item_status_valid_flag := 'T';
1316 ELSE
1317 l_work_item_status_valid_flag := 'F';
1318 l_token_str := ' WORK_ITEM_STATUS : '||m_work_item_status;
1319 END IF;
1320
1321 IF (l_work_item_status_valid_flag = 'F')
1322 THEN
1323
1324 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
1325 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
1326 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
1327 fnd_msg_pub.ADD;
1328 fnd_msg_pub.Count_and_Get
1329 (
1330 p_count => x_msg_count,
1331 p_data => x_msg_data
1332 );
1333
1334 RAISE fnd_api.g_exc_error;
1335
1336 END IF;
1337
1338 IF (length(m_title) > l_title_len)
1339 THEN
1340
1341
1342 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_PARAM_EXCEED_MAX');
1343 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
1344 FND_MESSAGE.SET_TOKEN('IEU_UWQ_PARAM_MAX',' TITLE ');
1345 fnd_msg_pub.ADD;
1346 fnd_msg_pub.Count_and_Get
1347 (
1348 p_count => x_msg_count,
1349 p_data => x_msg_data
1350 );
1351
1352 RAISE fnd_api.g_exc_error;
1353
1354 END IF;
1355
1356 -- If OWNER_TYPE or ASSIGNEE_TYPE is not RS_GROUP then set it to RS_INDIVIDUAL
1357
1358 IF ( (m_owner_type <> 'RS_GROUP')
1359 AND (m_owner_type <> 'RS_TEAM') )
1360 THEN
1361
1362 l_owner_type:= 'RS_INDIVIDUAL';
1363 l_owner_type_actual := m_owner_type;
1364
1365 else
1366
1367 l_owner_type := m_owner_type;
1368 l_owner_type_actual := m_owner_type;
1369
1370 END IF;
1371
1372 IF ( (m_assignee_type <> 'RS_GROUP')
1373 AND (m_assignee_type <> 'RS_TEAM') )
1374 THEN
1375
1376 l_assignee_type := 'RS_INDIVIDUAL';
1377 l_assignee_type_actual := m_assignee_type;
1378
1379 else
1380
1381 l_assignee_type := m_assignee_type;
1382 l_assignee_type_actual := m_assignee_type;
1383
1384 END IF;
1385
1386 if ( (m_owner_type is not null) and (m_owner_id is null)) OR
1387 ( (m_assignee_type is not null) and (m_assignee_id is null) )
1388 then
1389 l_token_str := '';
1390 l_token_str2 := '';
1391 FND_MESSAGE.SET_NAME('IEU', 'IEU_WR_OWN_OR_ASG_ID_NULL');
1392 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
1393 if ( (m_owner_id is null) and (m_owner_type is not null) OR
1394 (m_owner_id is not null) and (m_owner_type is null) )
1395 then
1396 l_token_str := ' OWNER_ID';
1397 l_token_str2 := 'OWNER_TYPE - '||m_owner_type;
1398 end if;
1399 if ( (m_assignee_id is null) and (m_assignee_type is not null) OR
1400 (m_assignee_id is not null) and (m_assignee_type is null) )
1401 then
1402 if (l_token_str is not null)
1403 then
1404 l_token_str := l_token_str ||', ASSIGNEE_ID';
1405 else
1406 l_token_str := ' ASSIGNEE_ID';
1407 end if;
1408 if (l_token_str2 is not null)
1409 then
1410 l_token_str2 := l_token_str2 || ', ASSINGEE_TYPE - '||m_assignee_type;
1411 else
1412 l_token_str2 := ' ASSINGEE_TYPE - '||m_assignee_type;
1413 end if;
1414 end if;
1415 FND_MESSAGE.SET_TOKEN('ID_PARAM',l_token_str);
1416 FND_MESSAGE.SET_TOKEN('TYPE_PARAM',l_token_str2);
1417 fnd_msg_pub.ADD;
1418 fnd_msg_pub.Count_and_Get
1419 (
1420 p_count => x_msg_count,
1421 p_data => x_msg_data
1422 );
1423
1424 RAISE fnd_api.g_exc_error;
1425 end if;
1426 -- Check Source_Object_type_code, Source_Object_id
1427 /*
1428 IF (p_source_object_type_code is null)
1429 THEN
1430 l_source_object_type_code := p_workitem_obj_code;
1431 ELSE
1432 l_source_object_type_code := p_source_object_type_code;
1433 END IF;
1434
1435 IF (p_source_object_id is null)
1436 THEN
1437 l_source_object_id := p_workitem_pk_id;
1438 ELSE
1439 l_source_object_id := p_source_object_id;
1440 END IF;
1441 */
1442 -- Set Work Item Status Id
1443
1444 IF (m_work_item_status is not null)
1445 THEN
1446 IF (m_work_item_status = 'OPEN')
1447 THEN
1448 l_work_item_status_id := 0;
1449 ELSIF (m_work_item_status = 'CLOSE')
1450 THEN
1451 l_work_item_status_id := 3;
1452 ELSIF (m_work_item_status = 'DELETE')
1453 THEN
1454 l_work_item_status_id := 4;
1455 ELSIF (m_work_item_status = 'SLEEP')
1456 THEN
1457 l_work_item_status_id := 5;
1458
1459 END IF;
1460 END IF;
1461
1462 -- Set the Distribution states based on Business Rules
1463
1464 -- Get the Work_source_id
1465
1466 BEGIN
1467 l_not_valid_flag := 'N';
1468 Select ws_id
1469 into l_ws_id1
1470 from ieu_uwqm_work_sources_b
1471 where object_code = p_workitem_obj_code
1472 -- and nvl(not_valid_flag,'N') = 'N';
1473 and nvl(not_valid_flag,'N') = l_not_valid_flag;
1474
1475 EXCEPTION
1476 WHEN OTHERS THEN
1477
1478 -- Work Source does not exist for this Object Code
1479 l_token_str := 'OBJECT_CODE:' ||p_workitem_obj_code;
1480 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_WORK_SOURCE');
1481 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
1482 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
1483 fnd_msg_pub.ADD;
1484 fnd_msg_pub.Count_and_Get
1485 (
1486 p_count => x_msg_count,
1487 p_data => x_msg_data
1488 );
1489
1490 RAISE fnd_api.g_exc_error;
1491
1492 END;
1493
1494 if (m_source_object_type_code is not null)
1495 then
1496
1497 BEGIN
1498 l_not_valid_flag := 'N';
1499 Select ws_id
1500 into l_ws_id2
1501 from ieu_uwqm_work_sources_b
1502 where object_code = m_source_object_type_code
1503 -- and nvl(not_valid_flag,'N') = 'N';
1504 and nvl(not_valid_flag,'N') = l_not_valid_flag;
1505
1506 EXCEPTION
1507 WHEN OTHERS THEN
1508
1509 l_ws_id2 := null;
1510 END;
1511
1512 end if;
1513
1514 if (l_ws_id2 is not null)
1515 then
1516
1517 -- Check if Any Work Source Association exists for this combination of Object Code/Source Obj Code
1518 BEGIN
1519 l_not_valid_flag := 'N';
1520 SELECT a.ws_id
1521 INTO l_association_ws_id
1522 FROM ieu_uwqm_ws_assct_props a, ieu_uwqm_work_sources_b b
1523 WHERE child_ws_id = l_ws_id1
1524 AND parent_ws_id = l_ws_id2
1525 AND a.ws_id = b.ws_id
1526 -- AND nvl(b.not_valid_flag,'N') = 'N';
1527 AND nvl(b.not_valid_flag,'N') = l_not_valid_flag;
1528
1529 EXCEPTION
1530 WHEN NO_DATA_FOUND THEN
1531 l_association_ws_id := null;
1532 END;
1533
1534 else
1535 l_association_ws_id := null;
1536
1537 end if;
1538
1539 -- Get the Distribute_from, Distribute_to
1540
1541 if (l_association_ws_id is not null)
1542 then
1543
1544 l_curr_ws_id := l_association_ws_id;
1545
1546 BEGIN
1547 l_not_valid_flag := 'N';
1548 SELECT ws_a_props.dist_st_based_on_parent_flag
1549 INTO l_dist_st_based_on_parent
1550 FROM ieu_uwqm_work_sources_b ws_b, IEU_UWQM_WS_ASSCT_PROPS ws_a_props
1551 WHERE ws_b.ws_id = l_association_ws_id
1552 AND ws_b.ws_id = ws_a_props.ws_id
1553 -- AND nvl(ws_b.not_valid_flag, 'N') = 'N';
1554 AND nvl(ws_b.not_valid_flag, 'N') = l_not_valid_flag;
1555
1556 EXCEPTION
1557 WHEN OTHERS THEN
1558 -- Work Source does not exist for this Object Code
1559 l_token_str := 'OBJECT_CODE: '||p_workitem_obj_code;
1560 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_WORK_SOURCE');
1561 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
1562 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
1563 fnd_msg_pub.ADD;
1564 fnd_msg_pub.Count_and_Get
1565 (
1566 p_count => x_msg_count,
1567 p_data => x_msg_data
1568 );
1569
1570 RAISE fnd_api.g_exc_error;
1571 END;
1572 l_dist_from := 'GROUP_OWNED';
1573 l_dist_to := 'INDIVIDUAL_ASSIGNED';
1574 else
1575 l_dist_from := 'GROUP_OWNED';
1576 l_dist_to := 'INDIVIDUAL_ASSIGNED';
1577
1578 l_curr_ws_id := l_ws_id1;
1579 /*
1580 BEGIN
1581
1582 SELECT distribute_from, distribute_to
1583 INTO l_dist_from, l_dist_to
1584 FROM ieu_uwqm_work_sources_b
1585 WHERE ws_id = l_ws_id1;
1586
1587 EXCEPTION
1588 WHEN OTHERS THEN
1589 -- Work Source does not exist for this Object Code
1590 l_token_str := 'OBJECT_CODE: '||p_workitem_obj_code;
1591 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_WORK_SOURCE');
1592 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
1593 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
1594 fnd_msg_pub.ADD;
1595 fnd_msg_pub.Count_and_Get
1596 (
1597 p_count => x_msg_count,
1598 p_data => x_msg_data
1599 );
1600
1601 RAISE fnd_api.g_exc_error;
1602 END;
1603 */
1604 end if;
1605
1606 -- Set Distribution Status based on these rules
1607
1608 -- If the Distribution State is based on the Parent, then check if the parent is distributed.
1609
1610 if (l_dist_st_based_on_parent = 'Y')
1611 then
1612 BEGIN
1613 SELECT distribution_status_id, status_id
1614 INTO l_parent_dist_status, l_parent_status_id
1615 FROM ieu_uwqm_items
1616 WHERE workitem_pk_id = m_source_object_id
1617 AND workitem_obj_code = m_source_object_type_code;
1618 EXCEPTION
1619 WHEN OTHERS THEN
1620 l_parent_dist_status := null;
1621 l_parent_status_id := null;
1622 END;
1623 end if;
1624
1625 -- If the parent is not distributed, then this item will be in "On-Hold/Unavailable" status
1626 -- else set the status based on distribute_from and distribute_to
1627 if (l_parent_status_id = 3)
1628 then
1629
1630 l_set_dist_id_flag := 'T';
1631
1632 else
1633
1634 if (l_parent_dist_status <> 3)
1635 then
1636
1637 l_distribution_status_id := 0;
1638
1639 else
1640
1641 l_set_dist_id_flag := 'T';
1642
1643 end if; /* parent_dist_status */
1644
1645 end if; /* l_parent_status_id */
1646
1647 if (l_set_dist_id_flag = 'T')
1648 then
1649
1650 if (l_parent_dist_status <> 3)
1651 then
1652
1653 l_distribution_status_id := 0;
1654
1655 else
1656 if (l_dist_from = 'GROUP_OWNED') and
1657 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
1658 then
1659 if (l_owner_type = 'RS_GROUP') and
1660 ( (l_assignee_type is null) OR (l_assignee_type <> 'RS_INDIVIDUAL') )
1661 then
1662 l_distribution_status_id := 1;
1663 elsif (l_assignee_type = 'RS_INDIVIDUAL')
1664 then
1665 l_distribution_status_id := 3;
1666 else
1667 l_distribution_status_id := 0;
1668 end if;
1669 end if;
1670
1671 /* if (l_dist_from = 'GROUP_OWNED') and
1672 (l_dist_to = 'INDIVIDUAL_OWNED')
1673 then
1674
1675 if (l_owner_type = 'RS_GROUP')
1676 then
1677 l_distribution_status_id := 1;
1678 elsif (l_owner_type = 'RS_INDIVIDUAL')
1679 then
1680 l_distribution_status_id := 3;
1681 else
1682 l_distribution_status_id := 0;
1683 end if;
1684
1685 elsif (l_dist_from = 'GROUP_OWNED') and
1686 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
1687 then
1688
1689 if (l_owner_type = 'RS_GROUP') and
1690 ( (l_assignee_type is null) OR (l_assignee_type <> 'RS_INDIVIDUAL') )
1691 then
1692 l_distribution_status_id := 1;
1693 elsif (l_assignee_type = 'RS_INDIVIDUAL')
1694 then
1695 l_distribution_status_id := 3;
1696 else
1697 l_distribution_status_id := 0;
1698 end if;
1699
1700 elsif (l_dist_from = 'GROUP_ASSIGNED') and
1701 (l_dist_to = 'INDIVIDUAL_OWNED')
1702 then
1703
1704 if (l_assignee_type = 'RS_GROUP') and
1705 ( (l_owner_type is null) OR (l_owner_type <> 'RS_INDIVIDUAL') )
1706 then
1707 l_distribution_status_id := 1;
1708 elsif (l_owner_type = 'RS_INDIVIDUAL')
1709 then
1710 l_distribution_status_id := 3;
1711 else
1712 l_distribution_status_id := 0;
1713 end if;
1714
1715 elsif (l_dist_from = 'GROUP_ASSIGNED') and
1716 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
1717 then
1718
1719 if (l_assignee_type = 'RS_GROUP')
1720 then
1721 l_distribution_status_id := 1;
1722 elsif (l_assignee_type = 'RS_INDIVIDUAL')
1723 then
1724 l_distribution_status_id := 3;
1725 else
1726 l_distribution_status_id := 0;
1727 end if;
1728
1729 end if;
1730 */
1731 end if; /* l_parent_dist_status */
1732 end if; /* l_set_dist_id_flag */
1733
1734 IEU_WR_ITEMS_PKG.UPDATE_ROW
1735 ( p_workitem_obj_code,
1736 p_workitem_pk_id,
1737 m_title,
1738 m_party_id,
1739 l_priority_id,
1740 l_priority_level,
1741 m_due_date,
1742 m_owner_id,
1743 l_owner_type,
1744 m_assignee_id,
1745 l_assignee_type,
1746 l_owner_type_actual,
1747 l_assignee_type_actual,
1748 m_source_object_id,
1749 m_source_object_type_code,
1750 m_application_id,
1751 l_work_item_status_id,
1752 p_user_id,
1753 p_login_id,
1754 l_curr_ws_id,
1755 l_distribution_status_id,
1756 l_msg_data,
1757 x_return_status
1758 );
1759
1760 IF (x_return_status = fnd_api.g_ret_sts_success)
1761 THEN
1762
1763 -- Set the Distribution Status of Child Work Items which are on-hold
1764 -- If it is a primary Work Source with Dependent Items
1765 if (l_association_ws_id is null)
1766 then
1767
1768 BEGIN
1769 l_not_valid_flag := 'N';
1770 select a.ws_id
1771 into l_ws_id
1772 from ieu_uwqm_ws_assct_props a, ieu_uwqm_work_sources_b b
1773 where (parent_ws_id = l_curr_ws_id)
1774 and a.ws_id = b.ws_id
1775 -- and nvl(b.not_valid_flag, 'N') = 'N';
1776 and nvl(b.not_valid_flag, 'N') = l_not_valid_flag;
1777 EXCEPTION
1778 WHEN OTHERS THEN
1779 l_ws_id := null;
1780 END;
1781
1782 if (l_ws_id is not null)
1783 then
1784
1785 l_ctr := 0;
1786 for cur_rec in c1(p_workitem_pk_id, p_workitem_obj_code)
1787 loop
1788 l_wr_item_list(l_ctr).work_item_id := cur_rec.work_item_id;
1789 l_wr_item_list(l_ctr).workitem_pk_id := cur_rec.workitem_pk_id;
1790 l_wr_item_list(l_ctr).workitem_obj_code := cur_rec.workitem_obj_code;
1791 l_ctr := l_ctr + 1;
1792 end loop;
1793
1794 if ( l_wr_item_list.count > 0)
1795 then
1796 IEU_WR_PUB.SYNC_DEPENDENT_WR_ITEMS
1797 ( p_api_version => 1,
1798 p_init_msg_list => 'T',
1799 p_commit => 'F',
1800 p_wr_item_list => l_wr_item_list,
1801 x_msg_count => l_msg_count,
1802 x_msg_data => l_msg_data,
1803 x_return_status => x_return_status);
1804
1805 if (x_return_status <> 'S')
1806 then
1807 x_return_status := fnd_api.g_ret_sts_error;
1808 l_token_str := l_msg_data;
1809
1810 FND_MESSAGE.SET_NAME('IEU', 'IEU_UPDATE_WR_ITEM_FAILED');
1811 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
1812 FND_MESSAGE.SET_TOKEN('DETAILS', l_token_str);
1813
1814 fnd_msg_pub.ADD;
1815 fnd_msg_pub.Count_and_Get
1816 (
1817 p_count => x_msg_count,
1818 p_data => x_msg_data
1819 );
1820
1821 RAISE fnd_api.g_exc_error;
1822 end if;
1823 end if;
1824
1825 end if; /*l_ws_id is not null */
1826
1827 else
1828
1829 x_return_status := fnd_api.g_ret_sts_success;
1830
1831 end if; /* association_ws_id is null */
1832
1833 ELSIF (x_return_status <> fnd_api.g_ret_sts_success)
1834 THEN
1835
1836 x_return_status := fnd_api.g_ret_sts_error;
1837 l_token_str := l_msg_data;
1838
1839 FND_MESSAGE.SET_NAME('IEU', 'IEU_UPDATE_WR_ITEM_FAILED');
1840 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
1841 FND_MESSAGE.SET_TOKEN('DETAILS', l_token_str);
1842
1843 fnd_msg_pub.ADD;
1844 fnd_msg_pub.Count_and_Get
1845 (
1846 p_count => x_msg_count,
1847 p_data => x_msg_data
1848 );
1849
1850 RAISE fnd_api.g_exc_error;
1851 END IF;
1852
1853
1854 IF FND_API.TO_BOOLEAN( p_commit )
1855 THEN
1856 COMMIT WORK;
1857 END iF;
1858
1859 EXCEPTION
1860
1861 WHEN fnd_api.g_exc_error THEN
1862
1863 ROLLBACK TO update_wr_items_sp;
1864 x_return_status := fnd_api.g_ret_sts_error;
1865
1866 fnd_msg_pub.Count_and_Get
1867 (
1868 p_count => x_msg_count,
1869 p_data => x_msg_data
1870 );
1871
1872 WHEN fnd_api.g_exc_unexpected_error THEN
1873
1874 ROLLBACK TO update_wr_items_sp;
1875 x_return_status := fnd_api.g_ret_sts_unexp_error;
1876
1877 fnd_msg_pub.Count_and_Get
1878 (
1879 p_count => x_msg_count,
1880 p_data => x_msg_data
1881 );
1882
1883
1884 WHEN OTHERS THEN
1885
1886 ROLLBACK TO update_wr_items_sp;
1887 x_return_status := fnd_api.g_ret_sts_unexp_error;
1888
1889 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1890 THEN
1891
1892 fnd_msg_pub.Count_and_Get
1893 (
1894 p_count => x_msg_count,
1895 p_data => x_msg_data
1896 );
1897
1898 END IF;
1899
1900 END UPDATE_WR_ITEM;
1901
1902 PROCEDURE SYNC_WS_DETAILS
1903 ( p_api_version IN NUMBER,
1904 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
1905 p_commit IN VARCHAR2 DEFAULT NULL,
1906 p_ws_code IN VARCHAR2 DEFAULT NULL,
1907 x_msg_count OUT NOCOPY NUMBER,
1908 x_msg_data OUT NOCOPY VARCHAR2,
1909 x_return_status OUT NOCOPY VARCHAR2) AS
1910
1911 l_api_version CONSTANT NUMBER := 1.0;
1912 l_api_name CONSTANT VARCHAR2(30) := 'SYNC_WS_DETAILS';
1913
1914 l_miss_param_flag NUMBER(1) := 0;
1915 l_token_str VARCHAR2(4000);
1916 l_param_valid_flag NUMBER(1) := 0;
1917
1918 l_msg_data VARCHAR2(4000);
1919
1920 l_ws_id NUMBER;
1921 l_parent_ws_id NUMBER;
1922 l_child_ws_id NUMBER;
1923 l_parent_obj_code VARCHAR2(500);
1924 l_child_obj_code VARCHAR2(500);
1925 l_dist_from IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_FROM%TYPE;
1926 l_dist_to IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_TO%TYPE;
1927 l_ws_type VARCHAR2(500);
1928 l_obj_code VARCHAR2(500);
1929 l_distribution_status_id NUMBER;
1930 l_parent_dist_status NUMBER;
1931 l_dist_st_based_on_parent VARCHAR2(5);
1932 l_parent_status_id NUMBER;
1933 l_set_dist_id_flag VARCHAR2(5);
1934
1935 l_tasks_rules_func varchar2(256);
1936 l_tasks_data_list SYSTEM.WR_TASKS_DATA_NST;
1937 l_def_data_list SYSTEM.DEF_WR_DATA_NST;
1938 l_uwqm_count number;
1939 l_task_data_var varchar2(20);
1940 l_msg_count number;
1941 l_return_status varchar2(1);
1942
1943 l_task_id number;
1944 l_task_number varchar2(30);
1945 l_customer_id number;
1946 l_owner_id number;
1947 l_owner_type_code varchar2(30);
1948 l_source_object_id number;
1949 l_source_object_type_code varchar2(30);
1950 l_task_name varchar2(80);
1951 l_assignee_id number;
1952 l_assignee_type varchar2(25);
1953 l_task_priority_id number;
1954 l_date_selected varchar2(1);
1955 l_due_date date;
1956 l_planned_end_date date;
1957 l_actual_end_date date;
1958 l_scheduled_end_date date;
1959 l_planned_start_date date;
1960 l_actual_start_date date;
1961 l_scheduled_start_date date;
1962 l_importance_level number;
1963 l_priority_code varchar2(30);
1964 l_task_status varchar2(10);
1965 l_task_status_id number;
1966 l_task_type_id number;
1967
1968 l_tot_cnt NUMBER;
1969 l_success_cnt NUMBER;
1970 l_workitem_sum_msg VARCHAR2(4000);
1971 l_failure_cnt NUMBER;
1972 l_final_msg VARCHAR2(4000);
1973
1974 -- Cursor for primary ws
1975 cursor c_pry_ws(p_obj_code in VARCHAR2) is
1976 select work_item_id, owner_type, assignee_type
1977 from ieu_uwqm_items
1978 where workitem_obj_code = p_obj_code;
1979
1980 -- Cursor for association ws
1981 cursor c_assct_ws(p_parent_obj_code in VARCHAR2, p_child_obj_code in VARCHAR2) is
1982 select work_item_id, owner_type, assignee_type, source_object_id, source_object_type_code
1983 from ieu_uwqm_items
1984 where workitem_obj_code = p_child_obj_code
1985 and source_object_type_code = p_parent_obj_code;
1986
1987 cursor c_task(p_source_object_type_code in varchar2) is
1988 select tb.task_id, tb.task_number, tb.customer_id, tb.owner_id, tb.owner_type_code,
1989 tb.source_object_id, tb.source_object_type_code,
1990 -- decode(tb.date_selected, 'P', tb.planned_end_date,
1991 -- 'A', tb.actual_end_date, 'S', tb.scheduled_end_date, null, tb.scheduled_end_date) due_date,
1992 tb.planned_start_date, tb.planned_end_date, tb.actual_start_date, tb.actual_end_date,
1993 tb.scheduled_start_date, tb.scheduled_end_date,tb.task_type_id,
1994 tb.task_status_id, tt.task_name, tp.importance_level, ip.priority_code, tb.task_priority_id
1995 from jtf_tasks_b tb, jtf_tasks_tl tt, jtf_task_priorities_vl tp, ieu_uwqm_priorities_b ip
1996 where tb.entity = 'TASK' and nvl(tb.deleted_flag, 'N') = 'N' and tb.task_id = tt.task_id
1997 and tt.language = userenv('LANG') and tp.task_priority_id = nvl(tb.task_priority_id, 4)
1998 and least(tp.importance_level, 4) = ip.priority_level
1999 and tb.open_flag = 'Y'
2000 and tb.source_object_type_code = p_source_object_type_code;
2001
2002 CURSOR c_task_status(p_source_object_type_code in varchar2) IS
2003 SELECT TASK_ID,
2004 DECODE(DELETED_FLAG, 'Y', 4, 3) "STATUS_ID"
2005 FROM JTF_TASKS_B
2006 WHERE SOURCE_OBJECT_TYPE_CODE = p_source_object_type_code
2007 AND ((OPEN_FLAG = 'N' AND DELETED_FLAG = 'N') OR (DELETED_FLAG = 'Y'))
2008 AND ENTITY = 'TASK';
2009
2010 TYPE NUMBER_TBL is TABLE OF NUMBER INDEX BY BINARY_INTEGER;
2011
2012 TYPE status_rec is RECORD
2013 (
2014 l_task_id_list NUMBER_TBL,
2015 l_status_id_list NUMBER_TBL
2016 );
2017
2018 l_task_status_rec status_rec;
2019
2020 l_array_size NUMBER;
2021 l_done BOOLEAN;
2022
2023 dml_errors EXCEPTION;
2024 PRAGMA exception_init(dml_errors, -24381);
2025 errors number;
2026
2027 BEGIN
2028
2029 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
2030 l_token_str := '';
2031 l_dist_from := 'GROUP_OWNED';
2032 l_dist_to := 'INDIVIDUAL_ASSIGNED';
2033 l_priority_code := 'LOW';
2034 l_array_size := 2000;
2035
2036 SAVEPOINT sync_ws_details_sp;
2037
2038 x_return_status := fnd_api.g_ret_sts_success;
2039
2040 -- Check for API Version
2041
2042 IF NOT fnd_api.compatible_api_call (
2043 l_api_version,
2044 p_api_version,
2045 l_api_name,
2046 g_pkg_name
2047 )
2048 THEN
2049 RAISE fnd_api.g_exc_unexpected_error;
2050 END IF;
2051
2052 -- Initialize Message list
2053
2054 IF fnd_api.to_boolean(p_init_msg_list)
2055 THEN
2056 FND_MSG_PUB.INITIALIZE;
2057 END IF;
2058
2059
2060 -- Set the Distribution states based on Business Rules
2061
2062 -- Get the Work_source_id
2063
2064 BEGIN
2065 l_not_valid_flag := 'N';
2066 Select ws_id, ws_type, object_code
2067 into l_ws_id, l_ws_type, l_obj_code
2068 from ieu_uwqm_work_sources_b
2069 where ws_code = p_ws_code
2070 -- and nvl(not_valid_flag, 'N') = 'N';
2071 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
2072
2073 EXCEPTION
2074 WHEN OTHERS THEN
2075
2076 -- Work Source does not exist for this Object Code
2077 l_token_str := 'WS_CODE: '||p_ws_code;
2078 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
2079 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WS_DETAILS');
2080 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
2081 fnd_msg_pub.ADD;
2082 fnd_msg_pub.Count_and_Get
2083 (
2084 p_count => x_msg_count,
2085 p_data => x_msg_data
2086 );
2087
2088 RAISE fnd_api.g_exc_error;
2089
2090 END;
2091
2092 if (l_ws_type = 'PRIMARY')
2093 then
2094 -- The Sync script works only for Association Work Source
2095 -- If a primary Work Source is passed then it will throw an exception and exit
2096 -- Work Source does not exist for this Object Code
2097 l_token_str := 'WORK_SOURCE:' ||p_ws_code;
2098 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_WORK_SOURCE');
2099 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WS_DETAILS');
2100 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
2101 fnd_msg_pub.ADD;
2102 fnd_msg_pub.Count_and_Get
2103 (
2104 p_count => x_msg_count,
2105 p_data => x_msg_data
2106 );
2107
2108 RAISE fnd_api.g_exc_error;
2109
2110
2111 elsif (l_ws_type = 'ASSOCIATION')
2112 then
2113 BEGIN
2114
2115 SELECT parent_ws_id, child_ws_id, dist_st_based_on_parent_flag , tasks_rules_function
2116 INTO l_parent_ws_id, l_child_ws_id, l_dist_st_based_on_parent , l_tasks_rules_func
2117 FROM IEU_UWQM_WS_ASSCT_PROPS
2118 WHERE ws_id = l_ws_id;
2119
2120 EXCEPTION
2121 WHEN NO_DATA_FOUND THEN
2122
2123 -- Work Source does not exist for this Object Code
2124 l_token_str := 'WS_CODE: '||p_ws_code;
2125 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
2126 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WS_DETAILS');
2127 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
2128 fnd_msg_pub.ADD;
2129 fnd_msg_pub.Count_and_Get
2130 (
2131 p_count => x_msg_count,
2132 p_data => x_msg_data
2133 );
2134
2135 RAISE fnd_api.g_exc_error;
2136
2137 END;
2138
2139 BEGIN
2140 l_not_valid_flag := 'N';
2141 SELECT object_code
2142 INTO l_parent_obj_code
2143 FROM IEU_UWQM_WORK_SOURCES_B
2144 WHERE ws_id = l_parent_ws_id
2145 -- and nvl(not_valid_flag, 'N') = 'N';
2146 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
2147
2148 EXCEPTION
2149 WHEN NO_DATA_FOUND THEN
2150
2151 -- Work Source does not exist for this Object Code
2152 l_token_str := 'WS_CODE: '||p_ws_code;
2153 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
2154 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WS_DETAILS');
2155 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
2156 fnd_msg_pub.ADD;
2157 fnd_msg_pub.Count_and_Get
2158 (
2159 p_count => x_msg_count,
2160 p_data => x_msg_data
2161 );
2162
2163 RAISE fnd_api.g_exc_error;
2164
2165 END;
2166
2167 BEGIN
2168 l_not_valid_flag := 'N';
2169 SELECT object_code
2170 INTO l_child_obj_code
2171 FROM IEU_UWQM_WORK_SOURCES_B
2172 WHERE ws_id = l_child_ws_id
2173 -- and nvl(not_valid_flag, 'N') = 'N';
2174 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
2175
2176 EXCEPTION
2177 WHEN NO_DATA_FOUND THEN
2178
2179 -- Work Source does not exist for this Object Code
2180 l_token_str := 'WS_CODE: '||p_ws_code;
2181 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
2182 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WS_DETAILS');
2183 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
2184 fnd_msg_pub.ADD;
2185 fnd_msg_pub.Count_and_Get
2186 (
2187 p_count => x_msg_count,
2188 p_data => x_msg_data
2189 );
2190
2191 RAISE fnd_api.g_exc_error;
2192
2193 END;
2194
2195
2196 end if;
2197
2198 /******************** This is not used now *****************************
2199
2200 if (l_ws_type = 'PRIMARY')
2201 then
2202
2203 for cur_rec in c_pry_ws(l_obj_code)
2204 loop
2205
2206 if (l_dist_from = 'GROUP_OWNED') and
2207 (l_dist_to = 'INDIVIDUAL_OWNED')
2208 then
2209
2210 if (cur_rec.owner_type = 'RS_GROUP')
2211 then
2212 l_distribution_status_id := 1;
2213 elsif (cur_rec.owner_type = 'RS_INDIVIDUAL')
2214 then
2215 l_distribution_status_id := 3;
2216 else
2217 l_distribution_status_id := 0;
2218 end if;
2219
2220 elsif (l_dist_from = 'GROUP_OWNED') and
2221 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
2222 then
2223
2224 if (cur_rec.owner_type = 'RS_GROUP') and
2225 ( (cur_rec.assignee_type is null) OR (cur_rec.assignee_type <> 'RS_INDIVIDUAL') )
2226 then
2227 l_distribution_status_id := 1;
2228 elsif (cur_rec.assignee_type = 'RS_INDIVIDUAL')
2229 then
2230 l_distribution_status_id := 3;
2231 else
2232 l_distribution_status_id := 0;
2233 end if;
2234
2235 elsif (l_dist_from = 'GROUP_ASSIGNED') and
2236 (l_dist_to = 'INDIVIDUAL_OWNED')
2237 then
2238
2239 if (cur_rec.assignee_type = 'RS_GROUP') and
2240 ( (cur_rec.owner_type is null) OR (cur_rec.owner_type <> 'RS_INDIVIDUAL') )
2241 then
2242 l_distribution_status_id := 1;
2243 elsif (cur_rec.owner_type= 'RS_INDIVIDUAL')
2244 then
2245 l_distribution_status_id := 3;
2246 else
2247 l_distribution_status_id := 0;
2248 end if;
2249
2250 elsif (l_dist_from = 'GROUP_ASSIGNED') and
2251 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
2252 then
2253
2254 if (cur_rec.assignee_type = 'RS_GROUP')
2255 then
2256 l_distribution_status_id := 1;
2257 elsif (cur_rec.assignee_type = 'RS_INDIVIDUAL')
2258 then
2259 l_distribution_status_id := 3;
2260 else
2261 l_distribution_status_id := 0;
2262 end if;
2263
2264 end if;
2265
2266 update ieu_uwqm_items
2267 set ws_id = l_ws_id,
2268 distribution_status_id = l_distribution_status_id
2269 where work_item_id = cur_rec.work_item_id;
2270 commit;
2271
2272 end loop;
2273
2274 elsif (l_ws_type = 'ASSOCIATION')
2275 ********************************************************************/
2276 if (l_ws_type = 'ASSOCIATION')
2277 then
2278 l_success_cnt := 0;
2279 if l_tasks_rules_func is not null
2280 then
2281 fnd_file.new_line(FND_FILE.LOG, 1);
2282 fnd_file.put_line(FND_FILE.LOG, 'SYNC_WS_DETAILS API');
2283
2284 open c_task(l_parent_obj_code);
2285 loop
2286
2287 fetch c_task into l_task_id, l_task_number, l_customer_id, l_owner_id, l_owner_type_code,
2288 l_source_object_id, l_source_object_type_code,
2289 --l_due_date,
2290 l_planned_start_date,
2291 l_planned_end_date, l_actual_start_date, l_actual_end_date, l_scheduled_start_date, l_scheduled_end_date,
2292 l_task_type_id, l_task_status_id, l_task_name, l_importance_level, l_priority_code, l_task_priority_id;
2293
2294 -- insert into p_temp(msg) values (' count after fetch: '||l_tmp_var);
2295
2296 exit when c_task%notfound;
2297
2298 begin
2299 select 'SLEEP' into l_task_status
2300 from jtf_task_statuses_vl
2301 where (nvl(on_hold_flag,'N') = 'Y')
2302 and task_status_id = l_task_status_id;
2303 EXCEPTION WHEN no_data_found
2304 THEN
2305 l_task_status := 'OPEN';
2306 end;
2307
2308 begin
2309 select booking_end_date
2310 into l_due_date
2311 from jtf_task_all_assignments
2312 where task_id = l_task_id
2313 and assignee_role = 'OWNER';
2314 exception when others then
2315 -- Work Source does not exist for this Object Code
2316 l_token_str := sqlcode||' '||sqlerrm;
2317 fnd_msg_pub.ADD;
2318 fnd_msg_pub.Count_and_Get
2319 (
2320 p_count => x_msg_count,
2321 p_data => x_msg_data
2322 );
2323
2324 RAISE fnd_api.g_exc_error;
2325 end;
2326
2327 begin
2328 l_workitem_obj_code_1 := 'TASK';
2329 select count(*) into l_uwqm_count
2330 from ieu_uwqm_items
2331 -- where workitem_obj_code = 'TASK'
2332 where workitem_obj_code = l_workitem_obj_code_1
2333 and workitem_pk_id = l_task_id;
2334 exception when others then
2335 l_uwqm_count := 0;
2336 end;
2337
2338 if l_uwqm_count = 0 then
2339 l_task_data_var := 'CREATE_TASK';
2340 else
2341 l_task_data_var := 'UPDATE_TASK';
2342 end if;
2343
2344 l_tasks_data_list := SYSTEM.WR_TASKS_DATA_NST();
2345
2346 --insert into p_temp(msg) values('type XSR');
2347 l_tasks_data_list.extend;
2348
2349 l_tasks_data_list(l_tasks_data_list.last) := SYSTEM.WR_TASKS_DATA_OBJ (
2350 l_task_data_var,
2351 l_task_id,
2352 null,
2353 l_task_number,
2354 l_task_name,
2355 l_task_type_id,
2356 l_task_status_id,
2357 l_task_priority_id,
2358 l_owner_id,
2359 l_owner_type_code,
2360 l_source_object_id,
2361 l_source_object_type_code,
2362 l_customer_id,
2363 l_date_selected,
2364 l_planned_start_date,
2365 l_planned_end_date,
2366 l_scheduled_start_date,
2367 l_scheduled_end_date,
2368 l_actual_start_date,
2369 l_actual_end_date,
2370 null,
2371 null,
2372 null);
2373 --insert into p_temp(msg) values('calling SR Tasks');
2374 l_def_data_list := SYSTEM.DEF_WR_DATA_NST();
2375
2376 l_def_data_list.extend;
2377
2378
2379 l_def_data_list(l_def_data_list.last) := SYSTEM.DEF_WR_DATA_OBJ(
2380 l_task_status,
2381 l_priority_code,
2382 l_due_date,
2383 'TASKS',
2384 null
2385 );
2386
2387
2388 execute immediate
2389 'BEGIN '||l_tasks_rules_func ||' ( :1, :2, :3, :4 , :5); END ; '
2390 USING IN l_tasks_data_list, IN l_def_data_list , OUT l_msg_count, OUT l_msg_data, OUT l_return_status;
2391
2392 If (l_return_status = 'S')
2393 then
2394 l_success_cnt := l_success_cnt + 1;
2395 else
2396 l_failure_cnt := l_failure_cnt + 1;
2397
2398 if (l_failure_cnt < 20)
2399 then
2400
2401 fnd_file.new_line(FND_FILE.LOG, 1);
2402 FND_MESSAGE.SET_NAME('IEU', 'IEU_SYNCH_WR_DIST_STATUS_FAIL');
2403 FND_MESSAGE.SET_TOKEN('OBJ_CODE', 'TASK');
2404 FND_MESSAGE.SET_TOKEN('WORKITEM_NUM', l_task_id);
2405 FND_MESSAGE.SET_TOKEN('DETAILS', l_msg_data);
2406 l_final_msg := FND_MESSAGE.GET;
2407 fnd_file.put_line(FND_FILE.LOG, l_final_msg);
2408
2409 end if;
2410
2411 end if;
2412
2413 -- insert into p_temp(msg) values (' called tsk rules func..ret sts. '||l_task_id||' '||l_return_status||'-'||l_msg_data);
2414
2415 end loop;
2416
2417 if (l_failure_cnt < 0)
2418 then
2419 x_return_status := 'E';
2420 else
2421 x_return_status := 'S';
2422 end if;
2423
2424 l_tot_cnt := c_task%ROWCOUNT;
2425 FND_MESSAGE.SET_NAME('IEU', 'IEU_SYNCH_WR_DIST_STATUS_SUM');
2426 FND_MESSAGE.SET_TOKEN('SUCCESS_COUNT', l_success_cnt);
2427 FND_MESSAGE.SET_TOKEN('FAILED_COUNT', (l_tot_cnt - l_success_cnt));
2428 FND_MESSAGE.SET_TOKEN('TOTAL_COUNT', l_tot_cnt );
2429 fnd_msg_pub.ADD;
2430 fnd_msg_pub.Count_and_Get
2431 (
2432 p_count => x_msg_count,
2433 p_data => x_msg_data
2434 );
2435
2436 -- Write to log. Have to set msg again as its been removed from stack.
2437 FND_MESSAGE.SET_NAME('IEU', 'IEU_SYNCH_WR_DIST_STATUS_SUM');
2438 FND_MESSAGE.SET_TOKEN('SUCCESS_COUNT', l_success_cnt);
2439 FND_MESSAGE.SET_TOKEN('FAILED_COUNT', (l_tot_cnt - l_success_cnt));
2440 FND_MESSAGE.SET_TOKEN('TOTAL_COUNT', l_tot_cnt );
2441 l_final_msg := FND_MESSAGE.GET;
2442 fnd_file.put_line(FND_FILE.LOG, l_final_msg);
2443
2444 --dbms_output.put_line('msg: '||l_final_msg);
2445
2446 close c_task;
2447
2448 else
2449
2450 for cur_rec in c_assct_ws(l_parent_obj_code, l_child_obj_code)
2451 loop
2452
2453 if (l_dist_st_based_on_parent = 'Y')
2454 then
2455 BEGIN
2456 SELECT distribution_status_id, status_id
2457 INTO l_parent_dist_status, l_parent_status_id
2458 FROM ieu_uwqm_items
2459 WHERE workitem_pk_id = cur_rec.source_object_id
2460 AND workitem_obj_code = cur_rec.source_object_type_code;
2461 EXCEPTION
2462 WHEN OTHERS THEN
2463 l_parent_dist_status := null;
2464 END;
2465 end if;
2466
2467 -- If the parent is not distributed, then this item will be in "On-Hold/Unavailable" status
2468 -- else set the status based on distribute_from and distribute_to
2469
2470 if (l_parent_status_id = 3)
2471 then
2472
2473 l_set_dist_id_flag := 'T';
2474
2475 else
2476
2477 if (l_parent_dist_status <> 3)
2478 then
2479
2480 l_distribution_status_id := 0;
2481
2482 else
2483
2484 l_set_dist_id_flag := 'T';
2485
2486 end if; /* parent_dist_status */
2487
2488 end if; /* l_parent_status_id */
2489
2490 if (l_set_dist_id_flag = 'T')
2491 then
2492
2493 if (l_dist_from = 'GROUP_OWNED') and
2494 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
2495 then
2496 if (cur_rec.owner_type = 'RS_GROUP') and
2497 ( (cur_rec.assignee_type is null) OR (cur_rec.assignee_type <> 'RS_INDIVIDUAL') )
2498 then
2499 l_distribution_status_id := 1;
2500 elsif (cur_rec.assignee_type = 'RS_INDIVIDUAL')
2501 then
2502 l_distribution_status_id := 3;
2503 else
2504 l_distribution_status_id := 0;
2505 end if;
2506 end if;
2507
2508 end if; /* l_set_dist_id_flag */
2509
2510
2511 update ieu_uwqm_items
2512 set ws_id = l_ws_id,
2513 distribution_status_id = l_distribution_status_id
2514 where work_item_id = cur_rec.work_item_id;
2515 commit;
2516
2517 end loop; /* cur_rec */
2518 end if;
2519
2520 -- Update Close and Delete Statuses
2521
2522 open c_task_status(l_parent_obj_code);
2523 loop
2524
2525 FETCH c_task_status
2526 BULK COLLECT INTO
2527 l_task_status_rec.l_task_id_list,
2528 l_task_status_rec.l_status_id_list
2529 LIMIT l_array_size;
2530
2531 l_done := c_task_status%NOTFOUND;
2532
2533 BEGIN
2534 -- fnd_file.put_line(FND_FILE.LOG,'Begin update');
2535 FORALL i in 1..l_task_status_rec.l_task_id_list.COUNT SAVE EXCEPTIONS
2536 update IEU_UWQM_ITEMS
2537 set status_id = l_task_status_rec.l_status_id_list(i),
2538 LAST_UPDATED_BY = FND_GLOBAL.USER_ID,
2539 LAST_UPDATE_DATE = SYSDATE,
2540 LAST_UPDATE_LOGIN = FND_GLOBAL.LOGIN_ID
2541 where workitem_obj_code = 'TASK'
2542 and workitem_pk_id = l_task_status_rec.l_task_id_list(i)
2543 and source_object_type_code = l_parent_obj_code;
2544
2545 EXCEPTION
2546 WHEN dml_errors THEN
2547 errors := SQL%BULK_EXCEPTIONS.COUNT;
2548 FOR i IN 1..errors LOOP
2549
2550 fnd_file.new_line(FND_FILE.LOG, 1);
2551 FND_MESSAGE.SET_NAME('IEU', 'IEU_UPDATE_UWQM_ITEM_FAILED');
2552 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME', 'IEU_WR_PUB.SYNC_WS_DETAILS');
2553 FND_MESSAGE.SET_TOKEN('DETAILS', ' WORKITEM_PK_ID:'||l_task_status_rec.l_task_id_list(SQL%BULK_EXCEPTIONS(i).ERROR_INDEX) ||' Error: '||SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
2554
2555 fnd_file.put_line(FND_FILE.LOG,SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
2556 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
2557 fnd_msg_pub.ADD;
2558 fnd_msg_pub.Count_and_Get
2559 (
2560 p_count => x_msg_count,
2561 p_data => x_msg_data
2562 );
2563 END LOOP;
2564
2565 RAISE fnd_api.g_exc_error;
2566 END;
2567
2568 COMMIT;
2569
2570 l_task_status_rec.l_task_id_list.DELETE;
2571 l_task_status_rec.l_status_id_list.DELETE;
2572
2573 exit when (l_done);
2574
2575 end loop;
2576
2577 close c_task_status;
2578
2579 end if;
2580
2581 EXCEPTION
2582
2583 WHEN fnd_api.g_exc_error THEN
2584
2585 ROLLBACK TO sync_ws_details_sp;
2586 x_return_status := fnd_api.g_ret_sts_error;
2587 x_msg_data := SQLCODE||' - '||SQLERRM;
2588
2589 fnd_msg_pub.Count_and_Get
2590 (
2591 p_count => x_msg_count,
2592 p_data => x_msg_data
2593 );
2594
2595 WHEN fnd_api.g_exc_unexpected_error THEN
2596
2597 ROLLBACK TO sync_ws_details_sp;
2598 x_return_status := fnd_api.g_ret_sts_unexp_error;
2599 x_msg_data := SQLCODE||' - '||SQLERRM;
2600
2601 fnd_msg_pub.Count_and_Get
2602 (
2603 p_count => x_msg_count,
2604 p_data => x_msg_data
2605 );
2606
2607
2608 WHEN OTHERS THEN
2609
2610 ROLLBACK TO sync_ws_details_sp;
2611 x_return_status := fnd_api.g_ret_sts_unexp_error;
2612 x_msg_data := SQLCODE||' - '||SQLERRM;
2613
2614 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2615 THEN
2616
2617 fnd_msg_pub.Count_and_Get
2618 (
2619 p_count => x_msg_count,
2620 p_data => x_msg_data
2621 );
2622
2623 END IF;
2624
2625 END SYNC_WS_DETAILS;
2626
2627 PROCEDURE GET_NEXT_WORK_FOR_APPS
2628 ( p_api_version IN NUMBER,
2629 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
2630 p_commit IN VARCHAR2 DEFAULT NULL,
2631 p_resource_id IN NUMBER,
2632 p_language IN VARCHAR2,
2633 p_source_lang IN VARCHAR2,
2634 p_ws_det_list IN IEU_UWQ_GET_NEXT_WORK_PVT.IEU_WS_DETAILS_LIST,
2635 x_uwqm_workitem_data OUT NOCOPY IEU_FRM_PVT.T_IEU_MEDIA_DATA,
2636 x_msg_count OUT NOCOPY NUMBER,
2637 x_msg_data OUT NOCOPY VARCHAR2,
2638 x_return_status OUT NOCOPY VARCHAR2) IS
2639
2640 l_dist_from_where VARCHAR2(4000);
2641 l_dist_to_where VARCHAR2(4000);
2642
2643 l_api_version CONSTANT NUMBER := 1.0;
2644 l_api_name CONSTANT VARCHAR2(30) := 'GET_NEXT_WORK_FOR_APPS';
2645
2646 l_token_str VARCHAR2(4000);
2647
2648 l_ws_id NUMBER;
2649 l_ws_type IEU_UWQM_WORK_SOURCES_B.WS_TYPE%TYPE;
2650 l_dist_from IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_FROM%TYPE;
2651 l_dist_to IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_TO%TYPE;
2652 l_obj_code IEU_UWQM_WORK_SOURCES_B.OBJECT_CODE%TYPE;
2653 l_bindvar_from_list IEU_UWQ_GET_NEXT_WORK_PVT.IEU_UWQ_BINDVAR_LIST;
2654 l_bindvar_to_list IEU_UWQ_GET_NEXT_WORK_PVT.IEU_UWQ_BINDVAR_LIST;
2655
2656 BEGIN
2657
2658 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
2659 l_token_str := '';
2660 l_dist_from := 'GROUP_OWNED';
2661 l_dist_to := 'INDIVIDUAL_ASSIGNED';
2662 SAVEPOINT next_work_for_apps;
2663
2664 x_return_status := fnd_api.g_ret_sts_success;
2665
2666 -- Check for API Version
2667
2668 IF NOT fnd_api.compatible_api_call (
2669 l_api_version,
2670 p_api_version,
2671 l_api_name,
2672 g_pkg_name
2673 )
2674 THEN
2675 RAISE fnd_api.g_exc_unexpected_error;
2676 END IF;
2677
2678 -- Initialize Message list
2679
2680 IF fnd_api.to_boolean(p_init_msg_list)
2681 THEN
2682 FND_MSG_PUB.INITIALIZE;
2683 END IF;
2684
2685
2686 for i in p_ws_det_list.first..p_ws_det_list.last
2687 loop
2688
2689 --dbms_output.put_line('ws_code : '||p_ws_det_list(i).ws_code);
2690 BEGIN
2691 l_not_valid_flag := 'N';
2692 Select ws_id, ws_type, object_code
2693 into l_ws_id, l_ws_type, l_obj_code
2694 from ieu_uwqm_work_sources_b
2695 where ws_code = p_ws_det_list(i).ws_code
2696 -- and nvl(not_valid_flag, 'N') = 'N';
2697 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
2698
2699 EXCEPTION
2700 WHEN OTHERS THEN
2701
2702 -- Work Source does not exist for this Object Code
2703 l_token_str := 'WS_CODE: '||p_ws_det_list(i).ws_code;
2704 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
2705 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.GET_NEXT_WORK_FOR_APPS');
2706 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
2707 fnd_msg_pub.ADD;
2708 fnd_msg_pub.Count_and_Get
2709 (
2710 p_count => x_msg_count,
2711 p_data => x_msg_data
2712 );
2713
2714 RAISE fnd_api.g_exc_error;
2715
2716 END;
2717
2718 end loop;
2719
2720 -- Get the extra where clause for Distribute_from and distribute_to based ont he ws_code
2721 IEU_UWQ_GET_NEXT_WORK_PVT.GET_WS_WHERE_CLAUSE
2722 (p_type => 'DELIVER',
2723 p_ws_det_list => p_ws_det_list,
2724 p_resource_id => p_resource_id,
2725 x_dist_from_where => l_dist_from_where,
2726 x_dist_to_where => l_dist_to_where,
2727 x_bindvar_from_list => l_bindvar_from_list,
2728 x_bindvar_to_list => l_bindvar_to_list );
2729
2730 --dbms_output.put_line('calling dist and deliver.. ret status : '||x_return_status );
2731
2732 IEU_UWQ_GET_NEXT_WORK_PVT.DISTRIBUTE_AND_DELIVER_WR_ITEM
2733 ( p_api_version => p_api_version,
2734 p_resource_id => p_resource_id,
2735 p_language => p_language,
2736 p_source_lang => p_source_lang,
2737 p_dist_from_extra_where_clause => l_dist_from_where,
2738 p_dist_to_extra_where_clause => l_dist_to_where,
2739 p_bindvar_from_list => l_bindvar_from_list,
2740 p_bindvar_to_list => l_bindvar_to_list,
2741 x_uwqm_workitem_data => x_uwqm_workitem_data,
2742 x_msg_count => x_msg_count,
2743 x_msg_data => x_msg_data,
2744 x_return_status => x_return_status);
2745
2746
2747
2748 --dbms_output.put_line('executed proc: '||x_return_status);
2749 EXCEPTION
2750
2751 WHEN fnd_api.g_exc_error THEN
2752
2753 ROLLBACK TO next_work_for_apps;
2754 x_return_status := fnd_api.g_ret_sts_error;
2755
2756 fnd_msg_pub.Count_and_Get
2757 (
2758 p_count => x_msg_count,
2759 p_data => x_msg_data
2760 );
2761
2762 WHEN fnd_api.g_exc_unexpected_error THEN
2763
2764 ROLLBACK TO next_work_for_apps;
2765 x_return_status := fnd_api.g_ret_sts_unexp_error;
2766
2767 fnd_msg_pub.Count_and_Get
2768 (
2769 p_count => x_msg_count,
2770 p_data => x_msg_data
2771 );
2772
2773
2774 WHEN OTHERS THEN
2775
2776 ROLLBACK TO next_work_for_apps;
2777 x_return_status := fnd_api.g_ret_sts_unexp_error;
2778
2779 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2780 THEN
2781
2782 fnd_msg_pub.Count_and_Get
2783 (
2784 p_count => x_msg_count,
2785 p_data => x_msg_data
2786 );
2787
2788 END IF;
2789
2790 END GET_NEXT_WORK_FOR_APPS;
2791
2792
2793 PROCEDURE SYNC_DEPENDENT_WR_ITEMS
2794 ( p_api_version IN NUMBER,
2795 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
2796 p_commit IN VARCHAR2 DEFAULT NULL,
2797 p_wr_item_list IN IEU_WR_PUB.IEU_WR_ITEM_LIST ,
2798 x_msg_count OUT NOCOPY NUMBER,
2799 x_msg_data OUT NOCOPY VARCHAR2,
2800 x_return_status OUT NOCOPY VARCHAR2) AS
2801
2802 l_api_version CONSTANT NUMBER := 1.0;
2803 l_api_name CONSTANT VARCHAR2(30) := 'SYNC_DEPENDENT_WR_ITEMS';
2804
2805 l_miss_param_flag NUMBER(1) := 0;
2806 l_token_str VARCHAR2(4000);
2807 l_param_valid_flag NUMBER(1) := 0;
2808
2809 l_msg_data VARCHAR2(4000);
2810
2811 l_ws_id NUMBER;
2812 l_parent_ws_id NUMBER;
2813 l_child_ws_id NUMBER;
2814 l_dist_from IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_FROM%TYPE;
2815 l_dist_to IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_TO%TYPE;
2816 l_ws_type VARCHAR2(500);
2817 l_ws_code VARCHAR2(500);
2818 l_owner_type IEU_UWQM_ITEMS.OWNER_TYPE%TYPE;
2819 l_assignee_type IEU_UWQM_ITEMS.ASSIGNEE_TYPE%TYPE;
2820 l_source_object_id NUMBER;
2821 l_source_object_type_code IEU_UWQM_ITEMS.SOURCE_OBJECT_TYPE_CODE%TYPE;
2822 l_distribution_status_id NUMBER;
2823 l_parent_dist_status NUMBER;
2824 l_dist_st_based_on_parent VARCHAR2(5);
2825 l_set_dist_id_flag VARCHAR2(5);
2826 l_parent_status_id NUMBER;
2827
2828 BEGIN
2829
2830 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
2831 l_token_str := '';
2832 l_dist_from := 'GROUP_OWNED';
2833 l_dist_to := 'INDIVIDUAL_ASSIGNED';
2834 SAVEPOINT sync_dependent_wr_items_sp;
2835
2836 x_return_status := fnd_api.g_ret_sts_success;
2837
2838 -- Check for API Version
2839
2840 IF NOT fnd_api.compatible_api_call (
2841 l_api_version,
2842 p_api_version,
2843 l_api_name,
2844 g_pkg_name
2845 )
2846 THEN
2847 RAISE fnd_api.g_exc_unexpected_error;
2848 END IF;
2849
2850 -- Initialize Message list
2851
2852 IF fnd_api.to_boolean(p_init_msg_list)
2853 THEN
2854 FND_MSG_PUB.INITIALIZE;
2855 END IF;
2856
2857
2858 for i in p_wr_item_list.first .. p_wr_item_list.last
2859 loop
2860
2861
2862 -- dbms_output.put_line('work item pk id: '||p_wr_item_list(i).workitem_pk_id||' obj code: '||p_wr_item_list(i).workitem_obj_code);
2863 -- Get all the required Work Item details
2864
2865 BEGIN
2866
2867 select owner_type, assignee_type, ws_id, source_object_id, source_object_type_code
2868 into l_owner_type , l_assignee_type, l_ws_id, l_source_object_id, l_source_object_type_code
2869 from ieu_uwqm_items
2870 where workitem_pk_id = p_wr_item_list(i).workitem_pk_id
2871 and workitem_obj_code = p_wr_item_list(i).workitem_obj_code;
2872
2873 EXCEPTION
2874 WHEN OTHERS THEN
2875
2876 x_return_status := fnd_api.g_ret_sts_error;
2877
2878 l_token_str := p_wr_item_list(i).workitem_obj_code ||' WORKITEM_PK_ID : '|| p_wr_item_list(i).workitem_pk_id ||' - '||l_msg_data;
2879
2880 FND_MESSAGE.SET_NAME('IEU', 'IEU_UPDATE_UWQM_ITEM_FAILED');
2881 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
2882 FND_MESSAGE.SET_TOKEN('DETAILS', l_token_str);
2883
2884 fnd_msg_pub.ADD;
2885 fnd_msg_pub.Count_and_Get
2886 (
2887 p_count => x_msg_count,
2888 p_data => x_msg_data
2889 );
2890
2891 RAISE fnd_api.g_exc_error;
2892
2893 END;
2894
2895
2896 BEGIN
2897 l_not_valid_flag := 'N';
2898 Select ws_code, ws_type
2899 into l_ws_code, l_ws_type
2900 from ieu_uwqm_work_sources_b
2901 where ws_id = l_ws_id
2902 -- and nvl(not_valid_flag, 'N') = 'N';
2903 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
2904
2905 EXCEPTION
2906 WHEN OTHERS THEN
2907
2908 -- Work Source does not exist for this Object Code
2909 l_token_str := 'WS_CODE: '||l_ws_code;
2910 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
2911 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WS_DETAILS');
2912 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
2913 fnd_msg_pub.ADD;
2914 fnd_msg_pub.Count_and_Get
2915 (
2916 p_count => x_msg_count,
2917 p_data => x_msg_data
2918 );
2919
2920 RAISE fnd_api.g_exc_error;
2921
2922 END;
2923
2924
2925 if (l_ws_type = 'ASSOCIATION')
2926 then
2927 BEGIN
2928
2929 SELECT parent_ws_id, child_ws_id, dist_st_based_on_parent_flag
2930 INTO l_parent_ws_id, l_child_ws_id, l_dist_st_based_on_parent
2931 FROM IEU_UWQM_WS_ASSCT_PROPS
2932 WHERE ws_id = l_ws_id;
2933
2934 EXCEPTION
2935 WHEN NO_DATA_FOUND THEN
2936
2937 -- Work Source does not exist for this Object Code
2938 l_token_str := 'WS_CODE: '||l_ws_code;
2939 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
2940 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WS_DETAILS');
2941 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
2942 fnd_msg_pub.ADD;
2943 fnd_msg_pub.Count_and_Get
2944 (
2945 p_count => x_msg_count,
2946 p_data => x_msg_data
2947 );
2948
2949 RAISE fnd_api.g_exc_error;
2950
2951 END;
2952
2953 end if;/* ws_type */
2954
2955 -- Set Distribution Status based on these rules
2956
2957 -- If the Distribution State is based on the Parent, then check if the parent is distributed.
2958
2959 if (l_dist_st_based_on_parent = 'Y')
2960 then
2961 BEGIN
2962 SELECT distribution_status_id, status_id
2963 INTO l_parent_dist_status, l_parent_status_id
2964 FROM ieu_uwqm_items
2965 WHERE workitem_pk_id = l_source_object_id
2966 AND workitem_obj_code = l_source_object_type_code;
2967 EXCEPTION
2968 WHEN OTHERS THEN
2969 l_parent_dist_status := null;
2970 END;
2971 end if;
2972
2973 --dbms_output.put_line('dist st based on parent; '||l_dist_st_based_on_parent ||'s id: '||l_source_object_id||' s obj: '||l_source_object_type_code||' parent dist st: '||l_parent_dist_status);
2974
2975
2976 -- If the parent is not distributed, then this item will be in "On-Hold/Unavailable" status
2977 -- else set the status based on distribute_from and distribute_to
2978
2979 if (l_parent_status_id = 3)
2980 then
2981
2982 l_set_dist_id_flag := 'T';
2983
2984 else
2985
2986 if (l_parent_dist_status <> 3)
2987 then
2988
2989 l_distribution_status_id := 0;
2990
2991 else
2992
2993 l_set_dist_id_flag := 'T';
2994
2995 end if; /* parent_dist_status */
2996
2997 end if; /* l_parent_status_id */
2998
2999 if (l_set_dist_id_flag = 'T')
3000 then
3001
3002 if (l_dist_from = 'GROUP_OWNED') and
3003 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
3004 then
3005 if (l_owner_type = 'RS_GROUP') and
3006 ( (l_assignee_type is null) OR (l_assignee_type <> 'RS_INDIVIDUAL') )
3007 then
3008 l_distribution_status_id := 1;
3009 elsif (l_assignee_type = 'RS_INDIVIDUAL')
3010 then
3011 l_distribution_status_id := 3;
3012 else
3013 l_distribution_status_id := 0;
3014 end if;
3015 end if;
3016
3017 /* if (l_dist_from = 'GROUP_OWNED') and
3018 (l_dist_to = 'INDIVIDUAL_OWNED')
3019 then
3020
3021 if (l_owner_type = 'RS_GROUP')
3022 then
3023 l_distribution_status_id := 1;
3024 elsif (l_owner_type = 'RS_INDIVIDUAL')
3025 then
3026 l_distribution_status_id := 3;
3027 else
3028 l_distribution_status_id := 0;
3029 end if;
3030
3031 elsif (l_dist_from = 'GROUP_OWNED') and
3032 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
3033 then
3034
3035 if (l_owner_type = 'RS_GROUP') and
3036 ( (l_assignee_type is null) OR (l_assignee_type <> 'RS_INDIVIDUAL') )
3037 then
3038 l_distribution_status_id := 1;
3039 elsif (l_assignee_type = 'RS_INDIVIDUAL')
3040 then
3041 l_distribution_status_id := 3;
3042 else
3043 l_distribution_status_id := 0;
3044 end if;
3045
3046 elsif (l_dist_from = 'GROUP_ASSIGNED') and
3047 (l_dist_to = 'INDIVIDUAL_OWNED')
3048 then
3049
3050 if (l_assignee_type = 'RS_GROUP') and
3051 ( (l_owner_type is null) OR (l_owner_type <> 'RS_INDIVIDUAL') )
3052 then
3053 l_distribution_status_id := 1;
3054 elsif (l_owner_type = 'RS_INDIVIDUAL')
3055 then
3056 l_distribution_status_id := 3;
3057 else
3058 l_distribution_status_id := 0;
3059 end if;
3060
3061 elsif (l_dist_from = 'GROUP_ASSIGNED') and
3062 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
3063 then
3064
3065 if (l_assignee_type = 'RS_GROUP')
3066 then
3067 l_distribution_status_id := 1;
3068 elsif (l_assignee_type = 'RS_INDIVIDUAL')
3069 then
3070 l_distribution_status_id := 3;
3071 else
3072 l_distribution_status_id := 0;
3073 end if;
3074
3075 end if;
3076 */
3077 end if; /* l_set_dist_id_flag */
3078
3079 -- dbms_output.put_line('l_set_dist_id_flag: '||l_set_dist_id_flag|| ' dist status: '|| l_distribution_status_id);
3080 update ieu_uwqm_items
3081 set distribution_status_id = l_distribution_status_id
3082 where workitem_pk_id = p_wr_item_list(i).workitem_pk_id
3083 and workitem_obj_code = p_wr_item_list(i).workitem_obj_code;
3084
3085 IF FND_API.TO_BOOLEAN( p_commit )
3086 THEN
3087 COMMIT WORK;
3088 END iF;
3089
3090
3091 end loop; /* p_wr_item_list */
3092
3093 EXCEPTION
3094
3095 WHEN fnd_api.g_exc_error THEN
3096
3097 ROLLBACK TO sync_dependent_wr_items_sp;
3098 x_return_status := fnd_api.g_ret_sts_error;
3099
3100 fnd_msg_pub.Count_and_Get
3101 (
3102 p_count => x_msg_count,
3103 p_data => x_msg_data
3104 );
3105
3106 WHEN fnd_api.g_exc_unexpected_error THEN
3107
3108 ROLLBACK TO sync_dependent_wr_items_sp;
3109 x_return_status := fnd_api.g_ret_sts_unexp_error;
3110
3111 fnd_msg_pub.Count_and_Get
3112 (
3113 p_count => x_msg_count,
3114 p_data => x_msg_data
3115 );
3116
3117
3118 WHEN OTHERS THEN
3119
3120 ROLLBACK TO sync_dependent_wr_items_sp;
3121 x_return_status := fnd_api.g_ret_sts_unexp_error;
3122
3123 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3124 THEN
3125
3126 fnd_msg_pub.Count_and_Get
3127 (
3128 p_count => x_msg_count,
3129 p_data => x_msg_data
3130 );
3131
3132 END IF;
3133
3134 END SYNC_DEPENDENT_WR_ITEMS;
3135
3136
3137
3138
3139 /******** overloaded Proc for Audit Log ***************/
3140
3141 -- Get the Audit Log profile Option
3142 -- l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
3143
3144
3145 PROCEDURE CREATE_WR_ITEM
3146 ( p_api_version IN NUMBER,
3147 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
3148 p_commit IN VARCHAR2 DEFAULT NULL,
3149 p_workitem_obj_code IN VARCHAR2 DEFAULT NULL,
3150 p_workitem_pk_id IN NUMBER DEFAULT NULL,
3151 p_work_item_number IN VARCHAR2 DEFAULT NULL,
3152 p_title IN VARCHAR2 DEFAULT NULL,
3153 p_party_id IN NUMBER,
3154 p_priority_code IN VARCHAR2 DEFAULT NULL,
3155 p_due_date IN DATE,
3156 p_owner_id IN NUMBER,
3157 p_owner_type IN VARCHAR2,
3158 p_assignee_id IN NUMBER,
3159 p_assignee_type IN VARCHAR2,
3160 p_source_object_id IN NUMBER,
3161 p_source_object_type_code IN VARCHAR2,
3162 p_application_id IN NUMBER DEFAULT NULL,
3163 p_ieu_enum_type_uuid IN VARCHAR2 DEFAULT NULL,
3164 p_work_item_status IN VARCHAR2 DEFAULT NULL,
3165 p_user_id IN NUMBER DEFAULT NULL,
3166 p_login_id IN NUMBER DEFAULT NULL,
3167 p_audit_trail_rec IN SYSTEM.WR_AUDIT_TRAIL_NST,
3168 x_work_item_id OUT NOCOPY NUMBER,
3169 x_msg_count OUT NOCOPY NUMBER,
3170 x_msg_data OUT NOCOPY VARCHAR2,
3171 x_return_status OUT NOCOPY VARCHAR2) AS
3172
3173 l_api_version CONSTANT NUMBER := 1.0;
3174 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_WR_ITEM';
3175
3176 l_miss_param_flag NUMBER(1) := 0;
3177 l_token_str VARCHAR2(4000);
3178 l_token_str2 VARCHAR2(4000);
3179 l_param_valid_flag NUMBER(1) := 0;
3180
3181 l_workitem_obj_code VARCHAR2(30);
3182 l_object_function VARCHAR2(30);
3183 l_source_object_type_code VARCHAR2(30);
3184 l_source_object_id NUMBER;
3185
3186 l_owner_id NUMBER;
3187 l_assignee_id NUMBER;
3188 l_owner_type VARCHAR2(25);
3189 l_assignee_type VARCHAR2(25);
3190
3191 l_owner_type_actual VARCHAR2(30);
3192 l_assignee_type_actual VARCHAR2(30);
3193
3194 l_priority_id NUMBER;
3195 l_priority_level NUMBER;
3196 l_status_id NUMBER := 0;
3197 l_title_len NUMBER := 1990;
3198 l_work_item_status_valid_flag VARCHAR2(10);
3199
3200 -- l_status_update_user_id NUMBER;
3201 l_work_item_status_id NUMBER;
3202
3203 l_msg_data VARCHAR2(4000);
3204
3205 l_ws_id1 NUMBER;
3206 l_ws_id2 NUMBER := null;
3207 l_association_ws_id NUMBER;
3208 l_dist_from IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_FROM%TYPE;
3209 l_dist_to IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_TO%TYPE;
3210 l_curr_ws_id NUMBER;
3211
3212 l_dist_st_based_on_parent IEU_UWQM_WS_ASSCT_PROPS.DIST_ST_BASED_ON_PARENT_FLAG%TYPE;
3213 l_distribution_status_id NUMBER;
3214 l_parent_dist_status NUMBER;
3215 l_set_dist_id_flag VARCHAR2(5);
3216 l_parent_status_id NUMBER;
3217 l_ws_id NUMBER;
3218 l_ctr NUMBER;
3219 l_msg_count NUMBER;
3220 l_wr_item_list IEU_WR_PUB.IEU_WR_ITEM_LIST;
3221
3222 cursor c1(p_source_object_id IN NUMBER, p_source_object_type_code IN VARCHAR2) is
3223 select work_item_id, workitem_pk_id, workitem_obj_code
3224 from ieu_uwqm_items
3225 where source_object_id = p_source_object_id
3226 and source_object_type_code = p_source_object_type_code
3227 and ( distribution_status_id = 0 or distribution_status_id = 1);
3228
3229 -- Audit Log
3230 l_action_key VARCHAR2(2000);
3231 l_event_key VARCHAR2(2000);
3232 l_module VARCHAR2(2000);
3233 l_curr_ws_code VARCHAR2(2000);
3234 l_application_id NUMBER;
3235 l_ieu_comment_code1 VARCHAR2(2000);
3236 l_ieu_comment_code2 VARCHAR2(2000);
3237 l_ieu_comment_code3 VARCHAR2(2000);
3238 l_ieu_comment_code4 VARCHAR2(2000);
3239 l_ieu_comment_code5 VARCHAR2(2000);
3240 l_workitem_comment_code1 VARCHAR2(2000);
3241 l_workitem_comment_code2 VARCHAR2(2000);
3242 l_workitem_comment_code3 VARCHAR2(2000);
3243 l_workitem_comment_code4 VARCHAR2(2000);
3244 l_workitem_comment_code5 VARCHAR2(2000);
3245 l_ws_code1 VARCHAR2(50);
3246 l_ws_code2 VARCHAR2(50);
3247 l_assct_ws_code VARCHAR2(50);
3248 L_LOG_DIST_FROM VARCHAR(100);
3249 L_LOG_DIST_TO VARCHAR2(100);
3250 l_return_status VARCHAR2(10);
3251 l_audit_trail_rec SYSTEM.WR_AUDIT_TRAIL_NST;
3252 l_prev_source_object_id NUMBER;
3253 l_prev_source_object_type_code VARCHAR2(30);
3254
3255 l_audit_log_val VARCHAR2(100);
3256 l_audit_log_id NUMBER;
3257
3258
3259 BEGIN
3260
3261 l_token_str := '';
3262 SAVEPOINT insert_wr_items_sp;
3263 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
3264
3265 x_return_status := fnd_api.g_ret_sts_success;
3266
3267 -- Check for API Version
3268
3269 IF NOT fnd_api.compatible_api_call (
3270 l_api_version,
3271 p_api_version,
3272 l_api_name,
3273 g_pkg_name
3274 )
3275 THEN
3276 RAISE fnd_api.g_exc_unexpected_error;
3277 END IF;
3278
3279 -- Initialize Message list
3280
3281 IF fnd_api.to_boolean(p_init_msg_list)
3282 THEN
3283 FND_MSG_PUB.INITIALIZE;
3284 END IF;
3285
3286 -- Check for NOT NULL columns
3287
3288 IF ((p_workitem_obj_code = FND_API.G_MISS_CHAR) or
3289 (p_workitem_obj_code is null))
3290 THEN
3291 l_miss_param_flag := 1;
3292 l_token_str := l_token_str || ' WORKITEM_OBJECT_CODE ';
3293 END IF;
3294 IF ((p_workitem_pk_id = FND_API.G_MISS_NUM) or
3295 (p_workitem_pk_id is null))
3296 THEN
3297 l_miss_param_flag := 1;
3298 l_token_str := l_token_str || ' WORKITEM_PK_ID ';
3299 END IF;
3300 IF ((p_work_item_number = FND_API.G_MISS_CHAR) or
3301 (p_work_item_number is null))
3302 THEN
3303 l_miss_param_flag := 1;
3304 l_token_str := l_token_str || ' WORK_ITEM_NUMBER ';
3305 END IF;
3306 IF ((p_title = FND_API.G_MISS_CHAR) or
3307 (p_title is null))
3308 THEN
3309 l_miss_param_flag := 1;
3310 l_token_str := l_token_str || ' TITLE ';
3311 END IF;
3312 IF ((p_priority_code = FND_API.G_MISS_CHAR) or
3313 (p_priority_code is null))
3314 THEN
3315 l_miss_param_flag := 1;
3316 l_token_str := l_token_str || ' PRIORITY_CODE ';
3317 END IF;
3318 IF ((p_work_item_status = FND_API.G_MISS_CHAR) or
3319 (p_work_item_status is null))
3320 THEN
3321 l_miss_param_flag := 1;
3322 l_token_str := l_token_str || ' WORK_ITEM_STATUS ';
3323 END IF;
3324 IF ((p_ieu_enum_type_uuid = FND_API.G_MISS_CHAR) or
3325 (p_ieu_enum_type_uuid is null))
3326 THEN
3327 l_miss_param_flag := 1;
3328 l_token_str := l_token_str || ' ENUM_TYPE_UUID ';
3329 END IF;
3330 IF ((p_application_id = FND_API.G_MISS_NUM) or
3331 (p_application_id is null))
3332 THEN
3333 l_miss_param_flag := 1;
3334 l_token_str := l_token_str || ' APPLICATION_ID ';
3335 END IF;
3336 IF ((p_user_id = FND_API.G_MISS_NUM) or
3337 (p_user_id is null))
3338 THEN
3339 l_miss_param_flag := 1;
3340 l_token_str := l_token_str || ' USER_ID ';
3341 END IF;
3342
3343 If (l_miss_param_flag = 1)
3344 THEN
3345
3346 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_REQUIRED_PARAM_NULL');
3347 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
3348 FND_MESSAGE.SET_TOKEN('IEU_UWQ_REQ_PARAM',l_token_str);
3349 fnd_msg_pub.ADD;
3350 fnd_msg_pub.Count_and_Get
3351 (
3352 p_count => x_msg_count,
3353 p_data => x_msg_data
3354 );
3355
3356 x_return_status := fnd_api.g_ret_sts_error;
3357 RAISE fnd_api.g_exc_error;
3358
3359 END IF;
3360
3361 -- Validate object Code, owner_id, owner_type, assignee_id, assignee_type
3362
3363 IF (p_workitem_obj_code is not null)
3364 THEN
3365
3366 l_token_str := '';
3367
3368 BEGIN
3369 SELECT object_code, object_function
3370 INTO l_workitem_obj_code, l_object_function
3371 FROM jtf_objects_b
3372 WHERE object_code = p_workitem_obj_code;
3373 EXCEPTION
3374 WHEN no_data_found THEN
3375 null;
3376 END;
3377
3378 IF (l_workitem_obj_code is null)
3379 THEN
3380
3381 l_param_valid_flag := 1;
3382 l_token_str := ' WORKITEM_OBJ_CODE : '||p_workitem_obj_code;
3383
3384 END IF;
3385
3386 IF (l_param_valid_flag = 1)
3387 THEN
3388
3389 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
3390 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
3391 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
3392 fnd_msg_pub.ADD;
3393 fnd_msg_pub.Count_and_Get
3394 (
3395 p_count => x_msg_count,
3396 p_data => x_msg_data
3397 );
3398
3399 RAISE fnd_api.g_exc_error;
3400
3401 END IF;
3402
3403 END IF;
3404
3405 IF (p_priority_code is not null)
3406 THEN
3407
3408 l_token_str := '';
3409
3410 BEGIN
3411
3412 SELECT priority_id, priority_level
3413 INTO l_priority_id, l_priority_level
3414 FROM ieu_uwqm_priorities_b
3415 WHERE priority_code = p_priority_code;
3416
3417 EXCEPTION
3418 WHEN no_data_found THEN
3419
3420 l_param_valid_flag := 1;
3421 l_token_str := 'PRIORITY_CODE : '||p_priority_code ;
3422
3423 END;
3424
3425 IF (l_param_valid_flag = 1)
3426 THEN
3427
3428 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
3429 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
3430 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
3431 fnd_msg_pub.ADD;
3432 fnd_msg_pub.Count_and_Get
3433 (
3434 p_count => x_msg_count,
3435 p_data => x_msg_data
3436 );
3437
3438 RAISE fnd_api.g_exc_error;
3439
3440 END IF;
3441
3442 END IF;
3443
3444 -- Validate Work Item Status
3445
3446 IF (p_work_item_status = 'OPEN') OR
3447 (p_work_item_status = 'CLOSE') OR
3448 (p_work_item_status = 'DELETE') OR
3449 (p_work_item_status = 'SLEEP')
3450 THEN
3451 l_work_item_status_valid_flag := 'T';
3452 ELSE
3453 l_work_item_status_valid_flag := 'F';
3454 l_token_str := ' WORK_ITEM_STATUS : '||p_work_item_status;
3455 END IF;
3456
3457 IF (l_work_item_status_valid_flag = 'F')
3458 THEN
3459
3460 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
3461 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
3462 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
3463 fnd_msg_pub.ADD;
3464 fnd_msg_pub.Count_and_Get
3465 (
3466 p_count => x_msg_count,
3467 p_data => x_msg_data
3468 );
3469
3470 RAISE fnd_api.g_exc_error;
3471
3472 END IF;
3473
3474
3475 IF (length(p_title) > l_title_len)
3476 THEN
3477
3478
3479 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_PARAM_EXCEED_MAX');
3480 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
3481 FND_MESSAGE.SET_TOKEN('IEU_UWQ_PARAM_MAX',' TITLE ');
3482 fnd_msg_pub.ADD;
3483 fnd_msg_pub.Count_and_Get
3484 (
3485 p_count => x_msg_count,
3486 p_data => x_msg_data
3487 );
3488
3489 RAISE fnd_api.g_exc_error;
3490
3491 END IF;
3492
3493 -- If OWNER_TYPE or ASSIGNEE_TYPE is not RS_GROUP then set it to RS_INDIVIDUAL
3494
3495 IF ( (p_owner_type <> 'RS_GROUP')
3496 AND (p_owner_type <> 'RS_TEAM') )
3497 THEN
3498
3499 l_owner_type:= 'RS_INDIVIDUAL';
3500 l_owner_type_actual := p_owner_type;
3501
3502 else
3503
3504 l_owner_type := p_owner_type;
3505 l_owner_type_actual := p_owner_type;
3506
3507 END IF;
3508
3509 IF ( (p_assignee_type <> 'RS_GROUP')
3510 AND (p_assignee_type <> 'RS_TEAM') )
3511 THEN
3512
3513 l_assignee_type := 'RS_INDIVIDUAL';
3514 l_assignee_type_actual := p_assignee_type;
3515
3516 else
3517
3518 l_assignee_type := p_assignee_type;
3519 l_assignee_type_actual := p_assignee_type;
3520
3521 END IF;
3522
3523 if ( (p_owner_type is not null) and (p_owner_id is null)) OR
3524 ( (p_assignee_type is not null) and (p_assignee_id is null) )
3525 then
3526 l_token_str := '';
3527 l_token_str2 := '';
3528 FND_MESSAGE.SET_NAME('IEU', 'IEU_WR_OWN_OR_ASG_ID_NULL');
3529 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
3530 if ( (p_owner_id is null) and (p_owner_type is not null) OR
3531 (p_owner_id is not null) and (p_owner_type is null) )
3532 then
3533 l_token_str := ' OWNER_ID';
3534 l_token_str2 := 'OWNER_TYPE - '||p_owner_type;
3535 end if;
3536
3537 if ( (p_assignee_id is null) and (p_assignee_type is not null) OR
3538 (p_assignee_id is not null) and (p_assignee_type is null) )
3539 then
3540 if (l_token_str is not null)
3541 then
3542 l_token_str := l_token_str ||', ASSIGNEE_ID';
3543 else
3544 l_token_str := ' ASSIGNEE_ID';
3545 end if;
3546 if (l_token_str2 is not null)
3547 then
3548 l_token_str2 := l_token_str2 || ', ASSINGEE_TYPE - '||p_assignee_type;
3549 else
3550 l_token_str2 := ' ASSINGEE_TYPE - '||p_assignee_type;
3551 end if;
3552 end if;
3553 FND_MESSAGE.SET_TOKEN('ID_PARAM',l_token_str);
3554 FND_MESSAGE.SET_TOKEN('TYPE_PARAM',l_token_str2);
3555 fnd_msg_pub.ADD;
3556 fnd_msg_pub.Count_and_Get
3557 (
3558 p_count => x_msg_count,
3559 p_data => x_msg_data
3560 );
3561
3562 RAISE fnd_api.g_exc_error;
3563 end if;
3564
3565 -- Check Source_Object_type_code, Source_Object_id
3566 /*
3567 IF (p_source_object_type_code is null)
3568 THEN
3569 l_source_object_type_code := p_workitem_obj_code;
3570 ELSE
3571 l_source_object_type_code := p_source_object_type_code;
3572 END IF;
3573
3574 IF (p_source_object_id is null)
3575 THEN
3576 l_source_object_id := p_workitem_pk_id;
3577 ELSE
3578 l_source_object_id := p_source_object_id;
3579 END IF;
3580 */
3581
3582 -- Set Work Item Status Id
3583
3584 IF (p_work_item_status is not null)
3585 THEN
3586 IF (p_work_item_status = 'OPEN')
3587 THEN
3588 l_work_item_status_id := 0;
3589 ELSIF (p_work_item_status = 'CLOSE')
3590 THEN
3591 l_work_item_status_id := 3;
3592 ELSIF (p_work_item_status = 'DELETE')
3593 THEN
3594 l_work_item_status_id := 4;
3595 ELSIF (p_work_item_status = 'SLEEP')
3596 THEN
3597 l_work_item_status_id := 5;
3598 END IF;
3599 END IF;
3600
3601
3602 -- Set the Distribution states based on Business Rules
3603
3604 -- Get the Work_source_id
3605
3606 BEGIN
3607 l_not_valid_flag := 'N';
3608 Select ws_id , ws_code
3609 into l_ws_id1, l_ws_code1
3610 from ieu_uwqm_work_sources_b
3611 where object_code = p_workitem_obj_code
3612 -- and nvl(not_valid_flag,'N') = 'N';
3613 and nvl(not_valid_flag,'N') = l_not_valid_flag;
3614
3615 EXCEPTION
3616 WHEN OTHERS THEN
3617
3618 -- Work Source does not exist for this Object Code
3619 l_token_str := 'OBJECT_CODE: '||p_workitem_obj_code;
3620 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_WORK_SOURCE');
3621 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
3622 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
3623 fnd_msg_pub.ADD;
3624 fnd_msg_pub.Count_and_Get
3625 (
3626 p_count => x_msg_count,
3627 p_data => x_msg_data
3628 );
3629
3630 RAISE fnd_api.g_exc_error;
3631
3632 END;
3633
3634 if (p_source_object_type_code is not null)
3635 then
3636
3637 BEGIN
3638 l_not_valid_flag := 'N';
3639 Select ws_id , ws_code
3640 into l_ws_id2, l_ws_code2
3641 from ieu_uwqm_work_sources_b
3642 where object_code = p_source_object_type_code
3643 -- and nvl(not_valid_flag,'N') = 'N';
3644 and nvl(not_valid_flag,'N') = l_not_valid_flag;
3645
3646 EXCEPTION
3647 WHEN OTHERS THEN
3648
3649 l_ws_id2 := null;
3650 END;
3651
3652 end if;
3653
3654 if (l_ws_id2 is not null)
3655 then
3656
3657 -- Check if Any Work Source Association exists for this combination of Object Code/Source Obj Code
3658 BEGIN
3659 l_not_valid_flag := 'N';
3660 SELECT a.ws_id, b.ws_code
3661 INTO l_association_ws_id, l_assct_ws_code
3662 FROM ieu_uwqm_ws_assct_props a, ieu_uwqm_work_sources_b b
3663 WHERE child_ws_id = l_ws_id1
3664 AND parent_ws_id = l_ws_id2
3665 AND a.ws_id = b.ws_id
3666 -- AND nvl(b.not_valid_flag,'N') = 'N';
3667 AND nvl(b.not_valid_flag,'N') = l_not_valid_flag;
3668
3669 EXCEPTION
3670 WHEN NO_DATA_FOUND THEN
3671 l_association_ws_id := null;
3672 END;
3673
3674 else
3675 l_association_ws_id := null;
3676
3677 end if;
3678
3679 -- Get the Distribute_from, Distribute_to
3680
3681 if (l_association_ws_id is not null)
3682 then
3683
3684 l_curr_ws_id := l_association_ws_id;
3685 l_curr_ws_code := l_assct_ws_code;
3686
3687 BEGIN
3688 l_not_valid_flag := 'N';
3689 SELECT ws_a_props.dist_st_based_on_parent_flag
3690 INTO l_dist_st_based_on_parent
3691 FROM ieu_uwqm_work_sources_b ws_b, IEU_UWQM_WS_ASSCT_PROPS ws_a_props
3692 WHERE ws_b.ws_id = l_association_ws_id
3693 AND ws_b.ws_id = ws_a_props.ws_id
3694 -- AND nvl(ws_b.not_valid_flag,'N') = 'N';
3695 AND nvl(ws_b.not_valid_flag,'N') = l_not_valid_flag;
3696
3697 EXCEPTION
3698 WHEN OTHERS THEN
3699 -- Work Source Details does not exist for this Object Code
3700 l_token_str := '';
3701 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
3702 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
3703 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
3704 fnd_msg_pub.ADD;
3705 fnd_msg_pub.Count_and_Get
3706 (
3707 p_count => x_msg_count,
3708 p_data => x_msg_data
3709 );
3710
3711 RAISE fnd_api.g_exc_error;
3712 END;
3713 l_dist_from := 'GROUP_OWNED';
3714 l_dist_to := 'INDIVIDUAL_ASSIGNED';
3715
3716 else
3717 l_dist_from := 'GROUP_OWNED';
3718 l_dist_to := 'INDIVIDUAL_ASSIGNED';
3719
3720 l_curr_ws_id := l_ws_id1;
3721 l_curr_ws_code := l_ws_code1;
3722 /*
3723 BEGIN
3724
3725 SELECT distribute_from, distribute_to
3726 INTO l_dist_from, l_dist_to
3727 FROM ieu_uwqm_work_sources_b
3728 WHERE ws_id = l_ws_id1;
3729
3730 EXCEPTION
3731 WHEN OTHERS THEN
3732 -- Work Source Details does not exist for this Object Code
3733 l_token_str := '';
3734 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
3735 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
3736 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
3737 fnd_msg_pub.ADD;
3738 fnd_msg_pub.Count_and_Get
3739 (
3740 p_count => x_msg_count,
3741 p_data => x_msg_data
3742 );
3743
3744 RAISE fnd_api.g_exc_error;
3745 END;
3746 */
3747 end if;
3748
3749 -- Set Distribution Status based on these rules
3750
3751 -- If the Distribution State is based on the Parent, then check if the parent is distributed.
3752
3753 if (l_dist_st_based_on_parent = 'Y')
3754 then
3755 BEGIN
3756 SELECT distribution_status_id, status_id
3757 INTO l_parent_dist_status, l_parent_status_id
3758 FROM ieu_uwqm_items
3759 WHERE workitem_pk_id = p_source_object_id
3760 AND workitem_obj_code = p_source_object_type_code;
3761 EXCEPTION
3762 WHEN OTHERS THEN
3763 l_parent_dist_status := null;
3764 END;
3765 end if;
3766
3767 -- If the parent is not distributed, then this item will be in "On-Hold/Unavailable" status
3768 -- else set the status based on distribute_from and distribute_to
3769
3770 if (l_parent_status_id = 3)
3771 then
3772
3773 l_set_dist_id_flag := 'T';
3774
3775 else
3776
3777 if (l_parent_dist_status <> 3)
3778 then
3779
3780 l_distribution_status_id := 0;
3781
3782 else
3783
3784 l_set_dist_id_flag := 'T';
3785
3786 end if; /* parent_dist_status */
3787
3788 end if; /* l_parent_status_id */
3789
3790 if (l_set_dist_id_flag = 'T')
3791 then
3792
3793 if (l_parent_dist_status <> 3)
3794 then
3795
3796 l_distribution_status_id := 0;
3797
3798 else
3799 if (l_dist_from = 'GROUP_OWNED') and
3800 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
3801 then
3802
3803 if (l_owner_type = 'RS_GROUP') and
3804 ( (l_assignee_type is null) OR (l_assignee_type <> 'RS_INDIVIDUAL') )
3805 then
3806 l_distribution_status_id := 1;
3807 elsif (l_assignee_type = 'RS_INDIVIDUAL')
3808 then
3809 l_distribution_status_id := 3;
3810 else
3811 l_distribution_status_id := 0;
3812 end if;
3813 end if;
3814 /*
3815 if (l_dist_from = 'GROUP_OWNED') and
3816 (l_dist_to = 'INDIVIDUAL_OWNED')
3817 then
3818
3819 if (l_owner_type = 'RS_GROUP')
3820 then
3821 l_distribution_status_id := 1;
3822 elsif (l_owner_type = 'RS_INDIVIDUAL')
3823 then
3824 l_distribution_status_id := 3;
3825 else
3826 l_distribution_status_id := 0;
3827 end if;
3828
3829 elsif (l_dist_from = 'GROUP_OWNED') and
3830 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
3831 then
3832
3833 if (l_owner_type = 'RS_GROUP') and
3834 ( (l_assignee_type is null) OR (l_assignee_type <> 'RS_INDIVIDUAL') )
3835 then
3836 l_distribution_status_id := 1;
3837 elsif (l_assignee_type = 'RS_INDIVIDUAL')
3838 then
3839 l_distribution_status_id := 3;
3840 else
3841 l_distribution_status_id := 0;
3842 end if;
3843
3844 elsif (l_dist_from = 'GROUP_ASSIGNED') and
3845 (l_dist_to = 'INDIVIDUAL_OWNED')
3846 then
3847
3848 if (l_assignee_type = 'RS_GROUP') and
3849 ( (l_owner_type is null) OR (l_owner_type <> 'RS_INDIVIDUAL') )
3850 then
3851 l_distribution_status_id := 1;
3852 elsif (l_owner_type = 'RS_INDIVIDUAL')
3853 then
3854 l_distribution_status_id := 3;
3855 else
3856 l_distribution_status_id := 0;
3857 end if;
3858
3859 elsif (l_dist_from = 'GROUP_ASSIGNED') and
3860 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
3861 then
3862
3863 if (l_assignee_type = 'RS_GROUP')
3864 then
3865 l_distribution_status_id := 1;
3866 elsif (l_assignee_type = 'RS_INDIVIDUAL')
3867 then
3868 l_distribution_status_id := 3;
3869 else
3870 l_distribution_status_id := 0;
3871 end if;
3872
3873 end if;
3874 */
3875 end if; /* l_parent_dist_status */
3876
3877 end if; /* l_set_dist_id_flag */
3878
3879 -- Get the values of App Distribute From and To for Audit Logging
3880 if (l_audit_log_val = 'DETAILED')
3881 then
3882 BEGIN
3883
3884 SELECT distribute_from, distribute_to
3885 INTO l_log_dist_from, l_log_dist_to
3886 FROM ieu_uwqm_work_sources_b
3887 WHERE ws_id = l_curr_ws_id;
3888
3889 EXCEPTION
3890 WHEN OTHERS THEN
3891 NULL;
3892 END;
3893
3894 l_ieu_comment_code1 := null;
3895 l_ieu_comment_code2 := null;
3896 l_ieu_comment_code3 := null;
3897 l_ieu_comment_code4 := null;
3898 l_ieu_comment_code5 := null;
3899
3900 /******************************* Used only for Distribute **************************
3901 if (l_log_dist_from = 'GROUP_OWNED') and
3902 (l_log_dist_to = 'INDIVIDUAL_OWNED')
3903 then
3904 l_ieu_comment_code1 := 'GO_IO';
3905 elsif (l_log_dist_from = 'GROUP_OWNED') and
3906 (l_log_dist_to = 'INDIVIDUAL_ASSIGNED')
3907 then
3908 l_ieu_comment_code1 := 'GO_IA';
3909 elsif (l_log_dist_from = 'GROUP_ASSIGNED') and
3910 (l_log_dist_to = 'INDIVIDUAL_OWNED')
3911 then
3912 l_ieu_comment_code1 := 'GA_IO';
3913 elsif (l_log_dist_from = 'GROUP_ASSIGNED') and
3914 (l_log_dist_to = 'INDIVIDUAL_ASSIGNED')
3915 then
3916 l_ieu_comment_code1 := 'GA_IA';
3917 end if; *******************/ /* ieu comment code1 */
3918
3919 if (l_dist_st_based_on_parent = 'Y')
3920 then
3921 if (l_parent_dist_status = 0) and (l_parent_status_id = 0)
3922 then
3923 l_ieu_comment_code2 := 'ON_HOLD_OPEN';
3924 elsif (l_parent_dist_status = 0) and (l_parent_status_id = 3)
3925 then
3926 l_ieu_comment_code2 := 'ON_HOLD_CLOSED';
3927 elsif (l_parent_dist_status = 0) and (l_parent_status_id = 5)
3928 then
3929 l_ieu_comment_code2 := 'ON_HOLD_SLEEP';
3930 elsif (l_parent_dist_status = 1) and (l_parent_status_id = 0)
3931 then
3932 l_ieu_comment_code2 := 'DISTRIBUTABLE_OPEN';
3933 elsif (l_parent_dist_status = 1) and (l_parent_status_id = 3)
3934 then
3935 l_ieu_comment_code2 := 'DISTRIBUTABLE_CLOSED';
3936 elsif (l_parent_dist_status = 1) and (l_parent_status_id = 5)
3937 then
3938 l_ieu_comment_code2 := 'DISTRIBUTABLE_SLEEP';
3939 elsif (l_parent_dist_status = 3) and (l_parent_status_id = 0)
3940 then
3941 l_ieu_comment_code2 := 'DISTRIBUTED_OPEN';
3942 elsif (l_parent_dist_status = 3) and (l_parent_status_id = 3)
3943 then
3944 l_ieu_comment_code2 := 'DISTRIBUTED_CLOSED';
3945 elsif (l_parent_dist_status = 3) and (l_parent_status_id = 5)
3946 then
3947 l_ieu_comment_code2 := 'DISTRIBUTED_SLEEP';
3948 end if; /* ieu comment code 2 */
3949 end if; /* dist st based on parent */
3950
3951 end if; /* Audit Log Val */
3952
3953 IEU_WR_ITEMS_PKG.INSERT_ROW
3954 ( p_workitem_obj_code,
3955 p_workitem_pk_id,
3956 p_work_item_number,
3957 p_title,
3958 p_party_id,
3959 l_priority_id,
3960 l_priority_level,
3961 p_due_date,
3962 l_work_item_status_id,
3963 p_owner_id,
3964 l_owner_type,
3965 p_assignee_id,
3966 l_assignee_type,
3967 l_owner_type_actual,
3968 l_assignee_type_actual,
3969 p_source_object_id,
3970 p_source_object_type_code,
3971 p_application_id,
3972 p_ieu_enum_type_uuid,
3973 p_user_id,
3974 p_login_id,
3975 l_curr_ws_id,
3976 l_distribution_status_id,
3977 x_work_item_id,
3978 l_msg_data,
3979 x_return_status
3980 );
3981
3982 -- Insert values to Audit Log
3983
3984 if p_audit_trail_rec.count > 0
3985 then
3986 for n in p_audit_trail_rec.first..p_audit_trail_rec.last
3987 loop
3988 l_action_key := p_audit_trail_rec(n).action_key;
3989 l_event_key := p_audit_trail_rec(n).event_key;
3990 l_module := p_audit_trail_rec(n).module;
3991 if (l_audit_log_val = 'DETAILED')
3992 then
3993 l_workitem_comment_code1 := p_audit_trail_rec(n).workitem_comment_code1;
3994 l_workitem_comment_code2 := p_audit_trail_rec(n).workitem_comment_code2;
3995 l_workitem_comment_code3 := p_audit_trail_rec(n).workitem_comment_code3;
3996 l_workitem_comment_code4 := p_audit_trail_rec(n).workitem_comment_code4;
3997 l_workitem_comment_code5 := p_audit_trail_rec(n).workitem_comment_code5;
3998 else
3999 l_workitem_comment_code1 := null;
4000 l_workitem_comment_code2 := null;
4001 l_workitem_comment_code3 := null;
4002 l_workitem_comment_code4 := null;
4003 l_workitem_comment_code5 := null;
4004 end if; /* Audit log Val */
4005 end loop;
4006 end if; /* p_audit_trail_rec */
4007
4008
4009 -- Audit Logging should be done only if the Profile Option Value is Full or Detailed
4010 -- However, during the actual Work Item Creation, if the Apps are not integrated,
4011 -- the actions cannot be logged. Hence we will be conditionally logging for
4012 -- Profile Option Value - Minimal. In this case, the Event value will be Null.
4013
4014 if (l_action_key is NULL)
4015 then
4016 l_action_key := 'WORKITEM_CREATION';
4017 end if;
4018
4019 if (l_audit_log_val = 'MINIMAL')
4020 then
4021 l_event_key := null;
4022 elsif ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
4023 then
4024 if (l_event_key is NULL)
4025 then
4026 l_event_key := 'CREATE_WR_ITEM';
4027 end if;
4028 end if;
4029
4030
4031 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') ) OR
4032 ( (l_audit_log_val = 'MINIMAL') AND ( (l_action_key is NULL) OR (l_action_key = 'WORKITEM_CREATION')) )
4033 then
4034
4035 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
4036 (
4037 P_ACTION_KEY => l_action_key,
4038 P_EVENT_KEY => l_event_key,
4039 P_MODULE => l_module,
4040 P_WS_CODE => l_curr_ws_code,
4041 P_APPLICATION_ID => p_application_id,
4042 P_WORKITEM_PK_ID => p_workitem_pk_id,
4043 P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
4044 P_WORK_ITEM_STATUS_PREV => null,
4045 P_WORK_ITEM_STATUS_CURR => l_work_item_status_id,
4046 P_OWNER_ID_PREV => null,
4047 P_OWNER_ID_CURR => p_owner_id,
4048 P_OWNER_TYPE_PREV => null,
4049 P_OWNER_TYPE_CURR => l_owner_type,
4050 P_ASSIGNEE_ID_PREV => null,
4051 P_ASSIGNEE_ID_CURR => p_assignee_id,
4052 P_ASSIGNEE_TYPE_PREV => null,
4053 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
4054 P_SOURCE_OBJECT_ID_PREV => null,
4055 P_SOURCE_OBJECT_ID_CURR => p_source_object_id,
4056 P_SOURCE_OBJECT_TYPE_CODE_PREV => null,
4057 P_SOURCE_OBJECT_TYPE_CODE_CURR => p_source_object_type_code,
4058 P_PARENT_WORKITEM_STATUS_PREV => null,
4059 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
4060 P_PARENT_DIST_STATUS_PREV => null,
4061 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
4062 P_WORKITEM_DIST_STATUS_PREV => null,
4063 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
4064 P_PRIORITY_PREV => null,
4065 P_PRIORITY_CURR => l_priority_id,
4066 P_DUE_DATE_PREV => null,
4067 P_DUE_DATE_CURR => p_due_date,
4068 P_RESCHEDULE_TIME_PREV => null,
4069 P_RESCHEDULE_TIME_CURR => sysdate,
4070 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
4071 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
4072 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
4073 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
4074 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
4075 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
4076 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
4077 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
4078 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
4079 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
4080 P_STATUS => x_return_status,
4081 P_ERROR_CODE => l_msg_data,
4082 X_AUDIT_LOG_ID => l_audit_log_id,
4083 X_MSG_DATA => l_msg_data,
4084 X_RETURN_STATUS => l_return_status);
4085
4086 end if;
4087 --dbms_output.put_line('insert audit rec..ret sts: '||x_return_status);
4088 IF (x_return_status = fnd_api.g_ret_sts_success)
4089 THEN
4090
4091 -- Set the Distribution Status of Child Work Items which are on-hold
4092 -- If it is a primary Work Source with Dependent Items
4093 if (l_association_ws_id is null)
4094 then
4095 BEGIN
4096 l_not_valid_flag := 'N';
4097 select a.ws_id
4098 into l_ws_id
4099 from ieu_uwqm_ws_assct_props a, ieu_uwqm_work_sources_b b
4100 where (parent_ws_id = l_curr_ws_id)
4101 and a.ws_id = b.ws_id
4102 -- and nvl(b.not_valid_flag, 'N') = 'N';
4103 and nvl(b.not_valid_flag, 'N') = l_not_valid_flag;
4104 EXCEPTION
4105 WHEN OTHERS THEN
4106 l_ws_id := null;
4107 END;
4108
4109 if (l_ws_id is not null)
4110 then
4111
4112 l_ctr := 0;
4113 for cur_rec in c1(p_workitem_pk_id, p_workitem_obj_code)
4114 loop
4115 l_wr_item_list(l_ctr).work_item_id := cur_rec.work_item_id;
4116 l_wr_item_list(l_ctr).workitem_pk_id := cur_rec.workitem_pk_id;
4117 l_wr_item_list(l_ctr).workitem_obj_code := cur_rec.workitem_obj_code;
4118 l_wr_item_list(l_ctr).prev_parent_dist_status_id := null;
4119 l_wr_item_list(l_ctr).prev_parent_workitem_status_id := null;
4120 l_ctr := l_ctr + 1;
4121 end loop;
4122
4123 if ( l_wr_item_list.count > 0)
4124 then
4125
4126 l_event_key := null;
4127 l_audit_trail_rec := SYSTEM.WR_AUDIT_TRAIL_NST();
4128 l_audit_trail_rec.extend;
4129 l_audit_trail_rec(l_audit_trail_rec.LAST) := SYSTEM.WR_AUDIT_TRAIL_OBJ
4130 (l_action_key,
4131 l_event_key,
4132 p_application_id,
4133 'IEU_WR_PUB.CREATE_WR_ITEM',
4134 null,
4135 null,
4136 null,
4137 null,
4138 null);
4139
4140 IEU_WR_PUB.SYNC_DEPENDENT_WR_ITEMS
4141 ( p_api_version => 1,
4142 p_init_msg_list => 'T',
4143 p_commit => 'F',
4144 p_wr_item_list => l_wr_item_list,
4145 p_audit_trail_rec => l_audit_trail_rec,
4146 x_msg_count => l_msg_count,
4147 x_msg_data => l_msg_data,
4148 x_return_status => x_return_status);
4149
4150 if (x_return_status <> 'S')
4151 then
4152 x_return_status := fnd_api.g_ret_sts_error;
4153 l_token_str := l_msg_data;
4154
4155 FND_MESSAGE.SET_NAME('IEU', 'IEU_CREATE_WR_ITEM_FAILED');
4156 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
4157 FND_MESSAGE.SET_TOKEN('DETAILS', l_token_str);
4158
4159 fnd_msg_pub.ADD;
4160 fnd_msg_pub.Count_and_Get
4161 (
4162 p_count => x_msg_count,
4163 p_data => x_msg_data
4164 );
4165
4166 RAISE fnd_api.g_exc_error;
4167 end if; /* x_return_status */
4168 end if; /* l_wr_item_list.count */
4169
4170 end if; /*l_ws_code is not null */
4171
4172 end if; /* association_ws_id is null */
4173
4174 ELSIF (x_return_status <> fnd_api.g_ret_sts_success)
4175 THEN
4176
4177 x_return_status := fnd_api.g_ret_sts_error;
4178 l_token_str := l_msg_data;
4179
4180 FND_MESSAGE.SET_NAME('IEU', 'IEU_CREATE_WR_ITEM_FAILED');
4181 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
4182 FND_MESSAGE.SET_TOKEN('DETAILS', l_token_str);
4183
4184 fnd_msg_pub.ADD;
4185 fnd_msg_pub.Count_and_Get
4186 (
4187 p_count => x_msg_count,
4188 p_data => x_msg_data
4189 );
4190
4191 RAISE fnd_api.g_exc_error;
4192 END IF;
4193
4194 IF FND_API.TO_BOOLEAN( p_commit )
4195 THEN
4196 COMMIT WORK;
4197 END IF;
4198
4199
4200 EXCEPTION
4201
4202 WHEN fnd_api.g_exc_error THEN
4203
4204 ROLLBACK TO insert_wr_items_sp;
4205 x_return_status := fnd_api.g_ret_sts_error;
4206
4207 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') ) OR
4208 ( (l_audit_log_val = 'MINIMAL') AND ( (l_action_key is NULL) OR (l_action_key = 'WORKITEM_CREATION')) )
4209 then
4210
4211 if (l_action_key is NULL)
4212 then
4213 l_action_key := 'WORKITEM_CREATION';
4214 end if;
4215
4216 if (l_audit_log_val = 'MINIMAL')
4217 then
4218 l_event_key := null;
4219 elsif ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
4220 then
4221 l_event_key := 'CREATE_WR_ITEM';
4222 end if;
4223 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
4224 (
4225 P_ACTION_KEY => l_action_key,
4226 P_EVENT_KEY => l_event_key,
4227 P_MODULE => l_module,
4228 P_WS_CODE => l_curr_ws_code,
4229 P_APPLICATION_ID => p_application_id,
4230 P_WORKITEM_PK_ID => p_workitem_pk_id,
4231 P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
4232 P_WORK_ITEM_STATUS_PREV => null,
4233 P_WORK_ITEM_STATUS_CURR => l_work_item_status_id,
4234 P_OWNER_ID_PREV => null,
4235 P_OWNER_ID_CURR => p_owner_id,
4236 P_OWNER_TYPE_PREV => null,
4237 P_OWNER_TYPE_CURR => l_owner_type,
4238 P_ASSIGNEE_ID_PREV => null,
4239 P_ASSIGNEE_ID_CURR => p_assignee_id,
4240 P_ASSIGNEE_TYPE_PREV => null,
4241 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
4242 P_SOURCE_OBJECT_ID_PREV => null,
4243 P_SOURCE_OBJECT_ID_CURR => p_source_object_id,
4244 P_SOURCE_OBJECT_TYPE_CODE_PREV => null,
4245 P_SOURCE_OBJECT_TYPE_CODE_CURR => p_source_object_type_code,
4246 P_PARENT_WORKITEM_STATUS_PREV => null,
4247 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
4248 P_PARENT_DIST_STATUS_PREV => null,
4249 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
4250 P_WORKITEM_DIST_STATUS_PREV => null,
4251 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
4252 P_PRIORITY_PREV => null,
4253 P_PRIORITY_CURR => l_priority_id,
4254 P_DUE_DATE_PREV => null,
4255 P_DUE_DATE_CURR => p_due_date,
4256 P_RESCHEDULE_TIME_PREV => null,
4257 P_RESCHEDULE_TIME_CURR => sysdate,
4258 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
4259 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
4260 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
4261 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
4262 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
4263 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
4264 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
4265 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
4266 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
4267 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
4268 P_STATUS => x_return_status,
4269 P_ERROR_CODE => x_msg_data,
4270 X_AUDIT_LOG_ID => l_audit_log_id,
4271 X_MSG_DATA => l_msg_data,
4272 X_RETURN_STATUS => l_return_status); commit;
4273 end if;
4274
4275 fnd_msg_pub.Count_and_Get
4276 (
4277 p_count => x_msg_count,
4278 p_data => x_msg_data
4279 );
4280
4281 WHEN fnd_api.g_exc_unexpected_error THEN
4282
4283 ROLLBACK TO insert_wr_items_sp;
4284 x_return_status := fnd_api.g_ret_sts_unexp_error;
4285
4286 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') ) OR
4287 ( (l_audit_log_val = 'MINIMAL') AND ( (l_action_key is NULL) OR (l_action_key = 'WORKITEM_CREATION')) )
4288 then
4289
4290 if (l_action_key is NULL)
4291 then
4292 l_action_key := 'WORKITEM_CREATION';
4293 end if;
4294
4295 if (l_audit_log_val = 'MINIMAL')
4296 then
4297 l_event_key := null;
4298 elsif ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
4299 then
4300 l_event_key := 'CREATE_WR_ITEM';
4301 end if;
4302
4303 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
4304 (
4305 P_ACTION_KEY => l_action_key,
4306 P_EVENT_KEY => l_event_key,
4307 P_MODULE => l_module,
4308 P_WS_CODE => l_curr_ws_code,
4309 P_APPLICATION_ID => p_application_id,
4310 P_WORKITEM_PK_ID => p_workitem_pk_id,
4311 P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
4312 P_WORK_ITEM_STATUS_PREV => null,
4313 P_WORK_ITEM_STATUS_CURR => l_work_item_status_id,
4314 P_OWNER_ID_PREV => null,
4315 P_OWNER_ID_CURR => p_owner_id,
4316 P_OWNER_TYPE_PREV => null,
4317 P_OWNER_TYPE_CURR => l_owner_type,
4318 P_ASSIGNEE_ID_PREV => null,
4319 P_ASSIGNEE_ID_CURR => p_assignee_id,
4320 P_ASSIGNEE_TYPE_PREV => null,
4321 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
4322 P_SOURCE_OBJECT_ID_PREV => null,
4323 P_SOURCE_OBJECT_ID_CURR => p_source_object_id,
4324 P_SOURCE_OBJECT_TYPE_CODE_PREV => null,
4325 P_SOURCE_OBJECT_TYPE_CODE_CURR => p_source_object_type_code,
4326 P_PARENT_WORKITEM_STATUS_PREV => null,
4327 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
4328 P_PARENT_DIST_STATUS_PREV => null,
4329 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
4330 P_WORKITEM_DIST_STATUS_PREV => null,
4331 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
4332 P_PRIORITY_PREV => null,
4333 P_PRIORITY_CURR => l_priority_id,
4334 P_DUE_DATE_PREV => null,
4335 P_DUE_DATE_CURR => p_due_date,
4336 P_RESCHEDULE_TIME_PREV => null,
4337 P_RESCHEDULE_TIME_CURR => sysdate,
4338 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
4339 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
4340 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
4341 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
4342 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
4343 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
4344 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
4345 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
4346 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
4347 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
4348 P_STATUS => x_return_status,
4349 P_ERROR_CODE => x_msg_data,
4350 X_AUDIT_LOG_ID => l_audit_log_id,
4351 X_MSG_DATA => l_msg_data,
4352 X_RETURN_STATUS => l_return_status); commit;
4353 end if;
4354 fnd_msg_pub.Count_and_Get
4355 (
4356 p_count => x_msg_count,
4357 p_data => x_msg_data
4358 );
4359
4360
4361 WHEN OTHERS THEN
4362
4363 ROLLBACK TO insert_wr_items_sp;
4364 x_return_status := fnd_api.g_ret_sts_unexp_error;
4365
4366 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') ) OR
4367 ( (l_audit_log_val = 'MINIMAL') AND ( (l_action_key is NULL) OR (l_action_key = 'WORKITEM_CREATION')) )
4368 then
4369 if (l_action_key is NULL)
4370 then
4371 l_action_key := 'WORKITEM_CREATION';
4372 end if;
4373
4374 if (l_audit_log_val = 'MINIMAL')
4375 then
4376 l_event_key := null;
4377 elsif ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
4378 then
4379 l_event_key := 'CREATE_WR_ITEM';
4380 end if;
4381
4382 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
4383 (
4384 P_ACTION_KEY => l_action_key,
4385 P_EVENT_KEY => l_event_key,
4386 P_MODULE => l_module,
4387 P_WS_CODE => l_curr_ws_code,
4388 P_APPLICATION_ID => p_application_id,
4389 P_WORKITEM_PK_ID => p_workitem_pk_id,
4390 P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
4391 P_WORK_ITEM_STATUS_PREV => null,
4392 P_WORK_ITEM_STATUS_CURR => l_work_item_status_id,
4393 P_OWNER_ID_PREV => null,
4394 P_OWNER_ID_CURR => p_owner_id,
4395 P_OWNER_TYPE_PREV => null,
4396 P_OWNER_TYPE_CURR => l_owner_type,
4397 P_ASSIGNEE_ID_PREV => null,
4398 P_ASSIGNEE_ID_CURR => p_assignee_id,
4399 P_ASSIGNEE_TYPE_PREV => null,
4400 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
4401 P_SOURCE_OBJECT_ID_PREV => null,
4402 P_SOURCE_OBJECT_ID_CURR => p_source_object_id,
4403 P_SOURCE_OBJECT_TYPE_CODE_PREV => null,
4404 P_SOURCE_OBJECT_TYPE_CODE_CURR => p_source_object_type_code,
4405 P_PARENT_WORKITEM_STATUS_PREV => null,
4406 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
4407 P_PARENT_DIST_STATUS_PREV => null,
4408 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
4409 P_WORKITEM_DIST_STATUS_PREV => null,
4410 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
4411 P_PRIORITY_PREV => null,
4412 P_PRIORITY_CURR => l_priority_id,
4413 P_DUE_DATE_PREV => null,
4414 P_DUE_DATE_CURR => p_due_date,
4415 P_RESCHEDULE_TIME_PREV => null,
4416 P_RESCHEDULE_TIME_CURR => sysdate,
4417 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
4418 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
4419 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
4420 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
4421 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
4422 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
4423 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
4424 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
4425 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
4426 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
4427 P_STATUS => x_return_status,
4428 P_ERROR_CODE => x_msg_data,
4429 X_AUDIT_LOG_ID => l_audit_log_id,
4430 X_MSG_DATA => l_msg_data,
4431 X_RETURN_STATUS => l_return_status); commit;
4432 end if;
4433
4434 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4435 THEN
4436
4437 fnd_msg_pub.Count_and_Get
4438 (
4439 p_count => x_msg_count,
4440 p_data => x_msg_data
4441 );
4442
4443 END IF;
4444
4445 END CREATE_WR_ITEM;
4446
4447 PROCEDURE UPDATE_WR_ITEM
4448 ( p_api_version IN NUMBER,
4449 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
4450 p_commit IN VARCHAR2 DEFAULT NULL,
4451 p_workitem_obj_code IN VARCHAR2 DEFAULT NULL,
4452 p_workitem_pk_id IN NUMBER DEFAULT NULL,
4453 p_title IN VARCHAR2 DEFAULT NULL,
4454 p_party_id IN NUMBER,
4455 p_priority_code IN VARCHAR2 DEFAULT NULL,
4456 p_due_date IN DATE,
4457 p_owner_id IN NUMBER DEFAULT NULL,
4458 p_owner_type IN VARCHAR2 DEFAULT NULL,
4459 p_assignee_id IN NUMBER,
4460 p_assignee_type IN VARCHAR2,
4461 p_source_object_id IN NUMBER,
4462 p_source_object_type_code IN VARCHAR2,
4463 p_application_id IN NUMBER DEFAULT NULL,
4464 p_work_item_status IN VARCHAR2 DEFAULT NULL,
4465 p_user_id IN NUMBER DEFAULT NULL,
4466 p_login_id IN NUMBER DEFAULT NULL,
4467 p_audit_trail_rec IN SYSTEM.WR_AUDIT_TRAIL_NST,
4468 x_msg_count OUT NOCOPY NUMBER,
4469 x_msg_data OUT NOCOPY VARCHAR2,
4470 x_return_status OUT NOCOPY VARCHAR2) AS
4471
4472 l_api_version NUMBER := 1.0;
4473 l_api_name VARCHAR2(30);
4474
4475 l_miss_param_flag NUMBER(1) := 0;
4476 l_token_str VARCHAR2(4000);
4477 l_token_str2 VARCHAR2(4000);
4478 l_param_valid_flag NUMBER(1) := 0;
4479
4480 l_workitem_obj_code VARCHAR2(30);
4481 l_object_function VARCHAR2(30);
4482 l_owner_id NUMBER;
4483 l_assignee_id NUMBER;
4484 l_owner_type VARCHAR2(25);
4485 l_assignee_type VARCHAR2(25);
4486 l_priority_id NUMBER;
4487 l_priority_level NUMBER;
4488 l_status_id NUMBER := 0;
4489 l_title_len NUMBER := 1990;
4490 l_work_item_status_id NUMBER;
4491 l_work_item_status_valid_flag VARCHAR2(10);
4492
4493 l_source_object_type_code VARCHAR2(30);
4494 l_source_object_id NUMBER;
4495
4496 l_owner_type_actual VARCHAR2(30);
4497 l_assignee_type_actual VARCHAR2(30);
4498
4499 l_msg_data VARCHAR2(4000);
4500
4501 l_ws_id1 NUMBER;
4502 l_ws_id2 NUMBER;
4503 l_association_ws_id NUMBER;
4504 l_dist_from IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_FROM%TYPE;
4505 l_dist_to IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_TO%TYPE;
4506 l_curr_ws_id NUMBER;
4507
4508 l_dist_st_based_on_parent IEU_UWQM_WS_ASSCT_PROPS.DIST_ST_BASED_ON_PARENT_FLAG%TYPE;
4509 l_distribution_status_id NUMBER;
4510 l_parent_dist_status NUMBER;
4511 l_set_dist_id_flag VARCHAR2(5);
4512 l_parent_status_id NUMBER;
4513 l_ws_id NUMBER;
4514 l_ctr NUMBER;
4515 l_msg_count NUMBER;
4516 l_wr_item_list IEU_WR_PUB.IEU_WR_ITEM_LIST;
4517
4518 cursor c1(p_source_object_id IN NUMBER, p_source_object_type_code IN VARCHAR2) is
4519 select work_item_id, workitem_pk_id, workitem_obj_code
4520 from ieu_uwqm_items
4521 where source_object_id = p_source_object_id
4522 and source_object_type_code = p_source_object_type_code
4523 and ( distribution_status_id = 0 or distribution_status_id = 1);
4524
4525 m_title VARCHAR2(1990);
4526 m_party_id NUMBER;
4527 m_priority_code VARCHAR2(30);
4528 m_due_date DATE;
4529 m_owner_id NUMBER;
4530 m_owner_type VARCHAR2(25);
4531 m_assignee_id NUMBER;
4532 m_assignee_type VARCHAR2(25);
4533 m_source_object_id NUMBER;
4534 m_source_object_type_code VARCHAR2(30);
4535 m_application_id NUMBER;
4536 m_work_item_status VARCHAR2(30);
4537
4538
4539 -- Audit Log
4540 l_action_key VARCHAR2(2000);
4541 l_event_key VARCHAR2(2000);
4542 l_module VARCHAR2(2000);
4543 l_curr_ws_code VARCHAR2(2000);
4544 l_application_id NUMBER;
4545 l_prev_status_id NUMBER;
4546 l_prev_owner_id NUMBER;
4547 l_prev_owner_type VARCHAR2(2000);
4548 l_prev_assignee_id NUMBER;
4549 l_prev_assignee_type VARCHAR2(2000);
4550 l_prev_distribution_status_id NUMBER;
4551 l_prev_priority_id NUMBER;
4552 l_prev_due_date DATE;
4553 l_prev_reschedule_time DATE;
4554 l_ieu_comment_code1 VARCHAR2(2000);
4555 l_ieu_comment_code2 VARCHAR2(2000);
4556 l_ieu_comment_code3 VARCHAR2(2000);
4557 l_ieu_comment_code4 VARCHAR2(2000);
4558 l_ieu_comment_code5 VARCHAR2(2000);
4559 l_workitem_comment_code1 VARCHAR2(2000);
4560 l_workitem_comment_code2 VARCHAR2(2000);
4561 l_workitem_comment_code3 VARCHAR2(2000);
4562 l_workitem_comment_code4 VARCHAR2(2000);
4563 l_workitem_comment_code5 VARCHAR2(2000);
4564
4565 l_ws_code1 VARCHAR2(50);
4566 l_ws_code2 VARCHAR2(50);
4567 l_assct_ws_code VARCHAR2(50);
4568 L_LOG_DIST_FROM VARCHAR(100);
4569 L_LOG_DIST_TO VARCHAR2(100);
4570 l_return_status VARCHAR2(10);
4571
4572 l_audit_trail_rec SYSTEM.WR_AUDIT_TRAIL_NST;
4573 l_prev_source_object_id NUMBER;
4574 l_prev_source_object_type_code VARCHAR2(30);
4575 l_audit_log_id NUMBER;
4576
4577 BEGIN
4578
4579 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
4580 l_api_name := 'UPDATE_WR_ITEM';
4581 l_token_str := '';
4582 SAVEPOINT update_wr_items_sp;
4583 x_return_status := fnd_api.g_ret_sts_success;
4584
4585 IF NOT fnd_api.compatible_api_call (
4586 l_api_version,
4587 p_api_version,
4588 l_api_name,
4589 g_pkg_name
4590 )
4591 THEN
4592 RAISE fnd_api.g_exc_unexpected_error;
4593 END IF;
4594
4595 -- Initialize Message list
4596
4597 IF fnd_api.to_boolean(p_init_msg_list)
4598 THEN
4599 FND_MSG_PUB.INITIALIZE;
4600 END IF;
4601
4602 -- Check for NOT NULL columns
4603
4604 IF (p_workitem_obj_code is null)
4605 THEN
4606 l_miss_param_flag := 1;
4607 l_token_str := l_token_str || ' WORKITEM_OBJECT_CODE ';
4608 END IF;
4609 IF (p_workitem_pk_id is null)
4610 THEN
4611 l_miss_param_flag := 1;
4612 l_token_str := l_token_str || ' WORKITEM_PK_ID ';
4613 END IF;
4614 IF (p_priority_code is null)
4615 THEN
4616 l_miss_param_flag := 1;
4617 l_token_str := l_token_str || ' PRIORITY_CODE ';
4618 END IF;
4619 IF (p_work_item_status is null)
4620 THEN
4621 l_miss_param_flag := 1;
4622 l_token_str := l_token_str || ' WORK_ITEM_STATUS ';
4623 END IF;
4624 IF (p_application_id is null)
4625 THEN
4626 l_miss_param_flag := 1;
4627 l_token_str := l_token_str || ' APPLICATION_ID ';
4628 END IF;
4629 IF (p_title is null)
4630 THEN
4631 l_miss_param_flag := 1;
4632 l_token_str := l_token_str || ' TITLE ';
4633 END IF;
4634 IF (p_user_id is null)
4635 THEN
4636 l_miss_param_flag := 1;
4637 l_token_str := l_token_str || ' USER_ID ';
4638 END IF;
4639
4640 If (l_miss_param_flag = 1)
4641 THEN
4642
4643 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_REQUIRED_PARAM_NULL');
4644 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
4645 FND_MESSAGE.SET_TOKEN('IEU_UWQ_REQ_PARAM',l_token_str);
4646 fnd_msg_pub.ADD;
4647 fnd_msg_pub.Count_and_Get
4648 (
4649 p_count => x_msg_count,
4650 p_data => x_msg_data
4651 );
4652
4653 x_return_status := fnd_api.g_ret_sts_error;
4654 RAISE fnd_api.g_exc_error;
4655
4656 END IF;
4657
4658 ---- validate if FND_API.G_MISS is passed
4659 /*******************
4660 BEGIN
4661
4662 select decode(p_title, FND_API.G_MISS_CHAR, title, p_title) title,
4663 decode(p_party_id, FND_API.G_MISS_NUM, party_id, p_party_id) party_id,
4664 decode(p_due_date, FND_API.G_MISS_DATE, due_date, p_due_date) due_date,
4665 decode(p_owner_id, FND_API.G_MISS_NUM, owner_id, p_owner_id) owner_id,
4666 decode(p_owner_type, FND_API.G_MISS_CHAR, owner_type_actual, p_owner_type) owner_type_actual,
4667 decode(p_assignee_id, FND_API.G_MISS_NUM, assignee_id, p_assignee_id) assignee_id,
4668 decode(p_assignee_type, FND_API.G_MISS_CHAR, assignee_type_actual, p_assignee_type) assignee_type_actual,
4669 decode(p_source_object_id, FND_API.G_MISS_NUM, source_object_id, p_source_object_id) source_object_id,
4670 decode(p_source_object_type_code, FND_API.G_MISS_CHAR, source_object_type_code, p_source_object_type_code) source_object_type_code,
4671 decode(p_application_id, FND_API.G_MISS_NUM, application_id, p_application_id) application_id
4672 into m_title,
4673 m_party_id,
4674 m_due_date,
4675 m_owner_id,
4676 m_owner_type,
4677 m_assignee_id,
4678 m_assignee_type,
4679 m_source_object_id,
4680 m_source_object_type_code,
4681 m_application_id
4682 from ieu_uwqm_items
4683 where workitem_obj_code = p_workitem_obj_code
4684 and workitem_pk_id = p_workitem_pk_id;
4685 EXCEPTION
4686 WHEN OTHERS THEN
4687
4688 l_token_str := 'TITLE, PARTY_ID, DUE_DATE, OWNER_ID, OWNER_TYPE, ';
4689 l_token_str := l_token_str || 'ASSIGNEE_ID, APPLICATION_ID, SOURCE_OBJECT_ID, SOURCE_OBJ_TYPE';
4690
4691 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
4692 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
4693 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
4694 fnd_msg_pub.ADD;
4695 fnd_msg_pub.Count_and_Get
4696 (
4697 p_count => x_msg_count,
4698 p_data => x_msg_data
4699 );
4700
4701 RAISE fnd_api.g_exc_error;
4702
4703 END;
4704
4705 ********************/
4706
4707 /**** Modified this code due to performance reasons ********/
4708 BEGIN
4709 select title,
4710 party_id,
4711 due_date,
4712 owner_id,
4713 owner_type_actual,
4714 assignee_id,
4715 assignee_type_actual,
4716 source_object_id,
4717 source_object_type_code,
4718 application_id
4719 into m_title,
4720 m_party_id,
4721 m_due_date,
4722 m_owner_id,
4723 m_owner_type,
4724 m_assignee_id,
4725 m_assignee_type,
4726 m_source_object_id,
4727 m_source_object_type_code,
4728 m_application_id
4729 from ieu_uwqm_items
4730 where workitem_obj_code = p_workitem_obj_code
4731 and workitem_pk_id = p_workitem_pk_id;
4732
4733 EXCEPTION WHEN OTHERS THEN
4734 l_token_str := 'TITLE, PARTY_ID, DUE_DATE, OWNER_ID, OWNER_TYPE, ';
4735 l_token_str := l_token_str || 'ASSIGNEE_ID, APPLICATION_ID, SOURCE_OBJECT_ID, SOURCE_OBJ_TYPE';
4736
4737 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
4738 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
4739 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
4740 fnd_msg_pub.ADD;
4741 fnd_msg_pub.Count_and_Get
4742 (
4743 p_count => x_msg_count,
4744 p_data => x_msg_data
4745 );
4746
4747 RAISE fnd_api.g_exc_error;
4748 END;
4749
4750 -- insert into p_temp(msg) values('b4 asg: '||p_assignee_id||' '||p_assignee_type);
4751
4752 IF ((p_title <> FND_API.G_MISS_CHAR))
4753 THEN
4754 m_title := p_title;
4755 END IF;
4756 IF ((nvl(p_party_id, -9999) <> FND_API.G_MISS_NUM) )
4757 THEN
4758 m_party_id := p_party_id;
4759 END IF;
4760 IF ((nvl(p_due_date, sysdate) <> FND_API.G_MISS_DATE) )
4761 THEN
4762 m_due_date := p_due_date;
4763 END IF;
4764 IF ((nvl(p_owner_id, -9999) <> FND_API.G_MISS_NUM ))
4765 THEN
4766 m_owner_id := p_owner_id;
4767 END IF;
4768 IF ((nvl(p_owner_type, 'NULL') <> FND_API.G_MISS_CHAR ))
4769 then
4770 m_owner_type := p_owner_type;
4771 END IF;
4772 IF ( (nvl( p_assignee_id, -9999) <> FND_API.G_MISS_NUM ))
4773 THEN
4774 m_assignee_id := p_assignee_id;
4775 END IF;
4776 IF ( (nvl(p_assignee_type, 'NULL') <> FND_API.G_MISS_CHAR ))
4777 THEN
4778 m_assignee_type := p_assignee_type;
4779 END IF;
4780 IF ((p_application_id <> FND_API.G_MISS_NUM) )
4781 THEN
4782 m_application_id := p_application_id;
4783 END IF;
4784 IF ((nvl(p_source_object_id, -9999) <> FND_API.G_MISS_NUM) )
4785 THEN
4786 m_source_object_id := p_source_object_id;
4787 END IF;
4788 IF ((nvl(p_source_object_type_code, 'NULL') <> FND_API.G_MISS_CHAR) )
4789 THEN
4790 m_source_object_type_code := p_source_object_type_code;
4791 END IF;
4792 -- insert into p_temp(msg) values('after asg: '||p_assignee_id||' '||p_assignee_type||
4793 -- 'm val: '||m_assignee_id||' '||m_assignee_type);
4794
4795
4796 BEGIN
4797 select decode(p_priority_code, FND_API.G_MISS_CHAR, b.priority_code, p_priority_code) priority_code
4798 into m_priority_code
4799 from ieu_uwqm_items a, ieu_uwqm_priorities_b b
4800 where a.priority_id = b.priority_id
4801 and a.priority_level = b.priority_level
4802 and a.workitem_obj_code = p_workitem_obj_code
4803 and a.workitem_pk_id = p_workitem_pk_id;
4804 EXCEPTION
4805 WHEN OTHERS THEN
4806
4807 l_token_str := 'PRIORITY_CODE : '||p_priority_code;
4808
4809 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
4810 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
4811 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
4812 fnd_msg_pub.ADD;
4813 fnd_msg_pub.Count_and_Get
4814 (
4815 p_count => x_msg_count,
4816 p_data => x_msg_data
4817 );
4818
4819 RAISE fnd_api.g_exc_error;
4820
4821 END;
4822
4823 BEGIN
4824
4825 select decode(p_work_item_status, FND_API.G_MISS_CHAR, decode(status_id, 0, 'OPEN', 3, 'CLOSE', 4, 'DELETE', 5, 'SLEEP'), p_work_item_status) status_id
4826 into m_work_item_status
4827 from ieu_uwqm_items
4828 where workitem_obj_code = p_workitem_obj_code
4829 and workitem_pk_id = p_workitem_pk_id;
4830 EXCEPTION
4831 WHEN OTHERS THEN
4832 l_token_str := 'WORK_ITEM_STATUS : '||p_work_item_status;
4833
4834 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
4835 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
4836 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
4837 fnd_msg_pub.ADD;
4838 fnd_msg_pub.Count_and_Get
4839 (
4840 p_count => x_msg_count,
4841 p_data => x_msg_data
4842 );
4843
4844 RAISE fnd_api.g_exc_error;
4845
4846
4847
4848 END;
4849
4850
4851 -------- end of FND_API.G_MISS changes
4852
4853
4854 -- Validate object Code
4855
4856 IF (p_workitem_obj_code is not NULL)
4857 THEN
4858
4859 l_token_str := '';
4860
4861 BEGIN
4862 SELECT 1
4863 INTO l_workitem_obj_code
4864 FROM jtf_objects_b
4865 WHERE object_code = p_workitem_obj_code;
4866 EXCEPTION
4867 WHEN no_data_found THEN
4868 null;
4869 END;
4870
4871 IF (l_workitem_obj_code is null)
4872 THEN
4873
4874 l_param_valid_flag := 1;
4875 l_token_str := 'WORKITEM_OBJ_CODE : '||p_workitem_obj_code;
4876
4877 END IF;
4878
4879 IF (l_param_valid_flag = 1)
4880 THEN
4881
4882 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
4883 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
4884 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
4885 fnd_msg_pub.ADD;
4886 fnd_msg_pub.Count_and_Get
4887 (
4888 p_count => x_msg_count,
4889 p_data => x_msg_data
4890 );
4891
4892 RAISE fnd_api.g_exc_error;
4893
4894 END IF;
4895
4896 END IF;
4897
4898 IF (m_priority_code is NOT NULL)
4899 THEN
4900
4901 l_token_str := '';
4902
4903 BEGIN
4904
4905 SELECT priority_id, priority_level
4906 INTO l_priority_id, l_priority_level
4907 FROM ieu_uwqm_priorities_b
4908 WHERE priority_code = m_priority_code;
4909
4910 EXCEPTION
4911 WHEN no_data_found THEN
4912
4913 l_param_valid_flag := 1;
4914 l_token_str := l_token_str || 'PRIORITY_CODE : '||m_priority_code;
4915
4916 END;
4917
4918 IF (l_param_valid_flag = 1)
4919 THEN
4920
4921 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
4922 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
4923 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
4924 fnd_msg_pub.ADD;
4925 fnd_msg_pub.Count_and_Get
4926 (
4927 p_count => x_msg_count,
4928 p_data => x_msg_data
4929 );
4930
4931 RAISE fnd_api.g_exc_error;
4932
4933 END IF;
4934
4935 END IF;
4936
4937 IF (m_work_item_status = 'OPEN') OR
4938 (m_work_item_status = 'CLOSE') OR
4939 (m_work_item_status = 'DELETE') OR
4940 (m_work_item_status = 'SLEEP')
4941 THEN
4942 l_work_item_status_valid_flag := 'T';
4943 ELSE
4944 l_work_item_status_valid_flag := 'F';
4945 l_token_str := ' WORK_ITEM_STATUS : '||m_work_item_status;
4946 END IF;
4947
4948 IF (l_work_item_status_valid_flag = 'F')
4949 THEN
4950
4951 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
4952 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
4953 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
4954 fnd_msg_pub.ADD;
4955 fnd_msg_pub.Count_and_Get
4956 (
4957 p_count => x_msg_count,
4958 p_data => x_msg_data
4959 );
4960
4961 RAISE fnd_api.g_exc_error;
4962
4963 END IF;
4964
4965 IF (length(m_title) > l_title_len)
4966 THEN
4967
4968
4969 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_PARAM_EXCEED_MAX');
4970 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
4971 FND_MESSAGE.SET_TOKEN('IEU_UWQ_PARAM_MAX',' TITLE ');
4972 fnd_msg_pub.ADD;
4973 fnd_msg_pub.Count_and_Get
4974 (
4975 p_count => x_msg_count,
4976 p_data => x_msg_data
4977 );
4978
4979 RAISE fnd_api.g_exc_error;
4980
4981 END IF;
4982
4983 -- If OWNER_TYPE or ASSIGNEE_TYPE is not RS_GROUP then set it to RS_INDIVIDUAL
4984
4985 IF ( (m_owner_type <> 'RS_GROUP')
4986 AND (m_owner_type <> 'RS_TEAM') )
4987 THEN
4988
4989 l_owner_type:= 'RS_INDIVIDUAL';
4990 l_owner_type_actual := m_owner_type;
4991
4992 else
4993
4994 l_owner_type := m_owner_type;
4995 l_owner_type_actual := m_owner_type;
4996
4997 END IF;
4998
4999 IF ( (m_assignee_type <> 'RS_GROUP')
5000 AND (m_assignee_type <> 'RS_TEAM') )
5001 THEN
5002
5003 l_assignee_type := 'RS_INDIVIDUAL';
5004 l_assignee_type_actual := m_assignee_type;
5005
5006 else
5007
5008 l_assignee_type := m_assignee_type;
5009 l_assignee_type_actual := m_assignee_type;
5010
5011 END IF;
5012
5013 if ( (m_owner_type is not null) and (m_owner_id is null)) OR
5014 ( (m_assignee_type is not null) and (m_assignee_id is null) )
5015 then
5016 l_token_str := '';
5017 l_token_str2 := '';
5018 FND_MESSAGE.SET_NAME('IEU', 'IEU_WR_OWN_OR_ASG_ID_NULL');
5019 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
5020 if ( (m_owner_id is null) and (m_owner_type is not null) OR
5021 (m_owner_id is not null) and (m_owner_type is null) )
5022 then
5023 l_token_str := ' OWNER_ID';
5024 l_token_str2 := 'OWNER_TYPE - '||m_owner_type;
5025 end if;
5026 if ( (m_assignee_id is null) and (m_assignee_type is not null) OR
5027 (m_assignee_id is not null) and (m_assignee_type is null) )
5028 then
5029 if (l_token_str is not null)
5030 then
5031 l_token_str := l_token_str ||', ASSIGNEE_ID';
5032 else
5033 l_token_str := ' ASSIGNEE_ID';
5034 end if;
5035 if (l_token_str2 is not null)
5036 then
5037 l_token_str2 := l_token_str2 || ', ASSINGEE_TYPE - '||m_assignee_type;
5038 else
5039 l_token_str2 := ' ASSINGEE_TYPE - '||m_assignee_type;
5040 end if;
5041 end if;
5042 FND_MESSAGE.SET_TOKEN('ID_PARAM',l_token_str);
5043 FND_MESSAGE.SET_TOKEN('TYPE_PARAM',l_token_str2);
5044 fnd_msg_pub.ADD;
5045 fnd_msg_pub.Count_and_Get
5046 (
5047 p_count => x_msg_count,
5048 p_data => x_msg_data
5049 );
5050
5051 RAISE fnd_api.g_exc_error;
5052 end if;
5053 -- Check Source_Object_type_code, Source_Object_id
5054 /*
5055 IF (p_source_object_type_code is null)
5056 THEN
5057 l_source_object_type_code := p_workitem_obj_code;
5058 ELSE
5059 l_source_object_type_code := p_source_object_type_code;
5060 END IF;
5061
5062 IF (p_source_object_id is null)
5063 THEN
5064 l_source_object_id := p_workitem_pk_id;
5065 ELSE
5066 l_source_object_id := p_source_object_id;
5067 END IF;
5068 */
5069 -- Set Work Item Status Id
5070
5071 IF (m_work_item_status is not null)
5072 THEN
5073 IF (m_work_item_status = 'OPEN')
5074 THEN
5075 l_work_item_status_id := 0;
5076 ELSIF (m_work_item_status = 'CLOSE')
5077 THEN
5078 l_work_item_status_id := 3;
5079 ELSIF (m_work_item_status = 'DELETE')
5080 THEN
5081 l_work_item_status_id := 4;
5082 ELSIF (m_work_item_status = 'SLEEP')
5083 THEN
5084 l_work_item_status_id := 5;
5085
5086 END IF;
5087 END IF;
5088
5089 -- Set the Distribution states based on Business Rules
5090
5091 -- Get the Work_source_id
5092
5093 BEGIN
5094 l_not_valid_flag := 'N';
5095 Select ws_id, ws_code
5096 into l_ws_id1, l_ws_code1
5097 from ieu_uwqm_work_sources_b
5098 where object_code = p_workitem_obj_code
5099 -- and nvl(not_valid_flag,'N') = 'N';
5100 and nvl(not_valid_flag,'N') = l_not_valid_flag;
5101
5102 EXCEPTION
5103 WHEN OTHERS THEN
5104
5105 -- Work Source does not exist for this Object Code
5106 l_token_str := 'OBJECT_CODE:' ||p_workitem_obj_code;
5107 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_WORK_SOURCE');
5108 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
5109 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
5110 fnd_msg_pub.ADD;
5111 fnd_msg_pub.Count_and_Get
5112 (
5113 p_count => x_msg_count,
5114 p_data => x_msg_data
5115 );
5116
5117 RAISE fnd_api.g_exc_error;
5118
5119 END;
5120
5121 if (m_source_object_type_code is not null)
5122 then
5123
5124 BEGIN
5125 l_not_valid_flag := 'N';
5126 Select ws_id, ws_code
5127 into l_ws_id2, l_ws_code2
5128 from ieu_uwqm_work_sources_b
5129 where object_code = m_source_object_type_code
5130 -- and nvl(not_valid_flag,'N') = 'N';
5131 and nvl(not_valid_flag,'N') = l_not_valid_flag;
5132
5133 EXCEPTION
5134 WHEN OTHERS THEN
5135
5136 l_ws_id2 := null;
5137 END;
5138
5139 end if;
5140
5141 if (l_ws_id2 is not null)
5142 then
5143
5144 -- Check if Any Work Source Association exists for this combination of Object Code/Source Obj Code
5145 BEGIN
5146 l_not_valid_flag := 'N';
5147 SELECT a.ws_id, b.ws_code
5148 INTO l_association_ws_id, l_assct_ws_code
5149 FROM ieu_uwqm_ws_assct_props a, ieu_uwqm_work_sources_b b
5150 WHERE child_ws_id = l_ws_id1
5151 AND parent_ws_id = l_ws_id2
5152 AND a.ws_id = b.ws_id
5153 -- AND nvl(b.not_valid_flag,'N') = 'N';
5154 AND nvl(b.not_valid_flag,'N') = l_not_valid_flag;
5155
5156 EXCEPTION
5157 WHEN NO_DATA_FOUND THEN
5158 l_association_ws_id := null;
5159 END;
5160
5161 else
5162 l_association_ws_id := null;
5163
5164 end if;
5165
5166 -- Get the Distribute_from, Distribute_to
5167
5168 if (l_association_ws_id is not null)
5169 then
5170
5171 l_curr_ws_id := l_association_ws_id;
5172 l_curr_ws_code := l_assct_ws_code;
5173
5174 BEGIN
5175 l_not_valid_flag := 'N';
5176 SELECT ws_a_props.dist_st_based_on_parent_flag
5177 INTO l_dist_st_based_on_parent
5178 FROM ieu_uwqm_work_sources_b ws_b, IEU_UWQM_WS_ASSCT_PROPS ws_a_props
5179 WHERE ws_b.ws_id = l_association_ws_id
5180 AND ws_b.ws_id = ws_a_props.ws_id
5181 -- AND nvl(ws_b.not_valid_flag, 'N') = 'N';
5182 AND nvl(ws_b.not_valid_flag, 'N') = l_not_valid_flag;
5183
5184 EXCEPTION
5185 WHEN OTHERS THEN
5186 -- Work Source does not exist for this Object Code
5187 l_token_str := 'OBJECT_CODE: '||p_workitem_obj_code;
5188 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_WORK_SOURCE');
5189 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
5190 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
5191 fnd_msg_pub.ADD;
5192 fnd_msg_pub.Count_and_Get
5193 (
5194 p_count => x_msg_count,
5195 p_data => x_msg_data
5196 );
5197
5198 RAISE fnd_api.g_exc_error;
5199 END;
5200 l_dist_from := 'GROUP_OWNED';
5201 l_dist_to := 'INDIVIDUAL_ASSIGNED';
5202 else
5203 l_dist_from := 'GROUP_OWNED';
5204 l_dist_to := 'INDIVIDUAL_ASSIGNED';
5205
5206 l_curr_ws_id := l_ws_id1;
5207 l_curr_ws_code := l_ws_code1;
5208 /*
5209 BEGIN
5210
5211 SELECT distribute_from, distribute_to
5212 INTO l_dist_from, l_dist_to
5213 FROM ieu_uwqm_work_sources_b
5214 WHERE ws_id = l_ws_id1;
5215
5216 EXCEPTION
5217 WHEN OTHERS THEN
5218 -- Work Source does not exist for this Object Code
5219 l_token_str := 'OBJECT_CODE: '||p_workitem_obj_code;
5220 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_WORK_SOURCE');
5221 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.CREATE_WR_ITEM');
5222 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
5223 fnd_msg_pub.ADD;
5224 fnd_msg_pub.Count_and_Get
5225 (
5226 p_count => x_msg_count,
5227 p_data => x_msg_data
5228 );
5229
5230 RAISE fnd_api.g_exc_error;
5231 END;
5232 */
5233 end if;
5234
5235 -- Set Distribution Status based on these rules
5236
5237 -- If the Distribution State is based on the Parent, then check if the parent is distributed.
5238
5239 if (l_dist_st_based_on_parent = 'Y')
5240 then
5241 BEGIN
5242 SELECT distribution_status_id, status_id
5243 INTO l_parent_dist_status, l_parent_status_id
5244 FROM ieu_uwqm_items
5245 WHERE workitem_pk_id = m_source_object_id
5246 AND workitem_obj_code = m_source_object_type_code;
5247 EXCEPTION
5248 WHEN OTHERS THEN
5249 l_parent_dist_status := null;
5250 l_parent_status_id := null;
5251 END;
5252 end if;
5253
5254 -- If the parent is not distributed, then this item will be in "On-Hold/Unavailable" status
5255 -- else set the status based on distribute_from and distribute_to
5256 if (l_parent_status_id = 3)
5257 then
5258
5259 l_set_dist_id_flag := 'T';
5260
5261 else
5262
5263 if (l_parent_dist_status <> 3)
5264 then
5265
5266 l_distribution_status_id := 0;
5267
5268 else
5269
5270 l_set_dist_id_flag := 'T';
5271
5272 end if; /* parent_dist_status */
5273
5274 end if; /* l_parent_status_id */
5275
5276 if (l_set_dist_id_flag = 'T')
5277 then
5278
5279 if (l_parent_dist_status <> 3)
5280 then
5281
5282 l_distribution_status_id := 0;
5283
5284 else
5285 if (l_dist_from = 'GROUP_OWNED') and
5286 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
5287 then
5288 if (l_owner_type = 'RS_GROUP') and
5289 ( (l_assignee_type is null) OR (l_assignee_type <> 'RS_INDIVIDUAL') )
5290 then
5291 l_distribution_status_id := 1;
5292 elsif (l_assignee_type = 'RS_INDIVIDUAL')
5293 then
5294 l_distribution_status_id := 3;
5295 else
5296 l_distribution_status_id := 0;
5297 end if;
5298 end if;
5299
5300 /* if (l_dist_from = 'GROUP_OWNED') and
5301 (l_dist_to = 'INDIVIDUAL_OWNED')
5302 then
5303
5304 if (l_owner_type = 'RS_GROUP')
5305 then
5306 l_distribution_status_id := 1;
5307 elsif (l_owner_type = 'RS_INDIVIDUAL')
5308 then
5309 l_distribution_status_id := 3;
5310 else
5311 l_distribution_status_id := 0;
5312 end if;
5313
5314 elsif (l_dist_from = 'GROUP_OWNED') and
5315 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
5316 then
5317
5318 if (l_owner_type = 'RS_GROUP') and
5319 ( (l_assignee_type is null) OR (l_assignee_type <> 'RS_INDIVIDUAL') )
5320 then
5321 l_distribution_status_id := 1;
5322 elsif (l_assignee_type = 'RS_INDIVIDUAL')
5323 then
5324 l_distribution_status_id := 3;
5325 else
5326 l_distribution_status_id := 0;
5327 end if;
5328
5329 elsif (l_dist_from = 'GROUP_ASSIGNED') and
5330 (l_dist_to = 'INDIVIDUAL_OWNED')
5331 then
5332
5333 if (l_assignee_type = 'RS_GROUP') and
5334 ( (l_owner_type is null) OR (l_owner_type <> 'RS_INDIVIDUAL') )
5335 then
5336 l_distribution_status_id := 1;
5337 elsif (l_owner_type = 'RS_INDIVIDUAL')
5338 then
5339 l_distribution_status_id := 3;
5340 else
5341 l_distribution_status_id := 0;
5342 end if;
5343
5344 elsif (l_dist_from = 'GROUP_ASSIGNED') and
5345 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
5346 then
5347
5348 if (l_assignee_type = 'RS_GROUP')
5349 then
5350 l_distribution_status_id := 1;
5351 elsif (l_assignee_type = 'RS_INDIVIDUAL')
5352 then
5353 l_distribution_status_id := 3;
5354 else
5355 l_distribution_status_id := 0;
5356 end if;
5357
5358 end if;
5359 */
5360 end if; /* l_parent_dist_status */
5361 end if; /* l_set_dist_id_flag */
5362
5363 -- Get the prev values for audit trail
5364 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL'))
5365 then
5366
5367 BEGIN
5368 SELECT owner_id, owner_type, assignee_id, assignee_type, status_id,
5369 priority_id, due_date, reschedule_time, distribution_status_id, source_object_id, source_object_type_code
5370 INTO l_prev_owner_id, l_prev_owner_type, l_prev_assignee_id, l_prev_assignee_type, l_prev_status_id,
5371 l_prev_priority_id, l_prev_due_date, l_prev_reschedule_time, l_prev_distribution_status_id,
5372 l_prev_source_object_id, l_prev_source_object_type_code
5373 FROM IEU_UWQM_ITEMS
5374 WHERE workitem_obj_code = p_workitem_obj_code
5375 AND workitem_pk_id = p_workitem_pk_id;
5376
5377 EXCEPTION
5378 WHEN OTHERS THEN
5379 NULL;
5380 END;
5381 end if;
5382
5383 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
5384 then
5385
5386
5387 -- Get the values of App Distribute From and To for Audit Logging
5388 if (l_audit_log_val = 'DETAILED')
5389 then
5390 BEGIN
5391
5392 SELECT distribute_from, distribute_to
5393 INTO l_log_dist_from, l_log_dist_to
5394 FROM ieu_uwqm_work_sources_b
5395 WHERE ws_id = l_curr_ws_id;
5396
5397 EXCEPTION
5398 WHEN OTHERS THEN
5399 NULL;
5400 END;
5401
5402 /*********************** Used only During Distribute ******************
5403 l_ieu_comment_code1 := null;
5404 l_ieu_comment_code2 := null;
5405 l_ieu_comment_code3 := null;
5406 l_ieu_comment_code4 := null;
5407 l_ieu_comment_code5 := null;
5408
5409 if (l_log_dist_from = 'GROUP_OWNED') and
5410 (l_log_dist_to = 'INDIVIDUAL_OWNED')
5411 then
5412 l_ieu_comment_code1 := 'GO_IO';
5413 elsif (l_log_dist_from = 'GROUP_OWNED') and
5414 (l_log_dist_to = 'INDIVIDUAL_ASSIGNED')
5415 then
5416 l_ieu_comment_code1 := 'GO_IA';
5417 elsif (l_log_dist_from = 'GROUP_ASSIGNED') and
5418 (l_log_dist_to = 'INDIVIDUAL_OWNED')
5419 then
5420 l_ieu_comment_code1 := 'GA_IO';
5421 elsif (l_log_dist_from = 'GROUP_ASSIGNED') and
5422 (l_log_dist_to = 'INDIVIDUAL_ASSIGNED')
5423 then
5424 l_ieu_comment_code1 := 'GA_IA';
5425 end if;
5426 **********************************************************************/
5427
5428 if (l_dist_st_based_on_parent = 'Y')
5429 then
5430 if (l_parent_dist_status = 0) and (l_parent_status_id = 0)
5431 then
5432 l_ieu_comment_code2 := 'ON_HOLD_OPEN';
5433 elsif (l_parent_dist_status = 0) and (l_parent_status_id = 3)
5434 then
5435 l_ieu_comment_code2 := 'ON_HOLD_CLOSED';
5436 elsif (l_parent_dist_status = 0) and (l_parent_status_id = 5)
5437 then
5438 l_ieu_comment_code2 := 'ON_HOLD_SLEEP';
5439 elsif (l_parent_dist_status = 1) and (l_parent_status_id = 0)
5440 then
5441 l_ieu_comment_code2 := 'DISTRIBUTABLE_OPEN';
5442 elsif (l_parent_dist_status = 1) and (l_parent_status_id = 3)
5443 then
5444 l_ieu_comment_code2 := 'DISTRIBUTABLE_CLOSED';
5445 elsif (l_parent_dist_status = 1) and (l_parent_status_id = 5)
5446 then
5447 l_ieu_comment_code2 := 'DISTRIBUTABLE_SLEEP';
5448 elsif (l_parent_dist_status = 3) and (l_parent_status_id = 0)
5449 then
5450 l_ieu_comment_code2 := 'DISTRIBUTED_OPEN';
5451 elsif (l_parent_dist_status = 3) and (l_parent_status_id = 3)
5452 then
5453 l_ieu_comment_code2 := 'DISTRIBUTED_CLOSED';
5454 elsif (l_parent_dist_status = 3) and (l_parent_status_id = 5)
5455 then
5456 l_ieu_comment_code2 := 'DISTRIBUTED_SLEEP';
5457 end if;
5458 end if;
5459
5460 end if;
5461 end if;/* Full or Detailed */
5462
5463 IEU_WR_ITEMS_PKG.UPDATE_ROW
5464 ( p_workitem_obj_code,
5465 p_workitem_pk_id,
5466 m_title,
5467 m_party_id,
5468 l_priority_id,
5469 l_priority_level,
5470 m_due_date,
5471 m_owner_id,
5472 l_owner_type,
5473 m_assignee_id,
5474 l_assignee_type,
5475 l_owner_type_actual,
5476 l_assignee_type_actual,
5477 m_source_object_id,
5478 m_source_object_type_code,
5479 m_application_id,
5480 l_work_item_status_id,
5481 p_user_id,
5482 p_login_id,
5483 l_curr_ws_id,
5484 l_distribution_status_id,
5485 l_msg_data,
5486 x_return_status
5487 );
5488
5489 -- Insert values to Audit Log
5490
5491 if p_audit_trail_rec.count > 0
5492 then
5493 for n in p_audit_trail_rec.first..p_audit_trail_rec.last
5494 loop
5495 l_action_key := p_audit_trail_rec(n).action_key;
5496 l_event_key := p_audit_trail_rec(n).event_key;
5497 l_module := p_audit_trail_rec(n).module;
5498 if (l_audit_log_val = 'DETAILED')
5499 then
5500 l_workitem_comment_code1 := p_audit_trail_rec(n).workitem_comment_code1;
5501 l_workitem_comment_code2 := p_audit_trail_rec(n).workitem_comment_code2;
5502 l_workitem_comment_code3 := p_audit_trail_rec(n).workitem_comment_code3;
5503 l_workitem_comment_code4 := p_audit_trail_rec(n).workitem_comment_code4;
5504 l_workitem_comment_code5 := p_audit_trail_rec(n).workitem_comment_code5;
5505 else
5506 l_workitem_comment_code1 := null;
5507 l_workitem_comment_code2 := null;
5508 l_workitem_comment_code3 := null;
5509 l_workitem_comment_code4 := null;
5510 l_workitem_comment_code5 := null;
5511 end if;
5512 end loop;
5513 end if;
5514
5515
5516 -- Audit Logging should be done only if the Profile Option Value is Full or Detailed
5517 -- However, during the actual Work Item Creation, if the Apps are not integrated,
5518 -- the actions cannot be logged. Hence we will be conditionally logging for
5519 -- Profile Option Value - Minimal. In this case, the Event value will be Null.
5520
5521 if (l_action_key is NULL)
5522 then
5523 l_action_key := 'WORKITEM_UPDATE';
5524 end if;
5525
5526 if (l_audit_log_val = 'MINIMAL')
5527 then
5528 l_event_key := null;
5529 end if;
5530
5531 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
5532 then
5533 /**
5534 dbms_output.put_line('prev asg: '||l_prev_assignee_type||'curr asg: '||l_assignee_type);
5535 dbms_output.put_line('prev asgid: '||l_prev_assignee_id||'curr asgid: '||m_assignee_id);
5536 dbms_output.put_line('prev owner: '||l_prev_owner_type||'curr own: '||l_owner_type);
5537 dbms_output.put_line('prev ownid: '||l_prev_owner_id||'curr ownid: '||m_owner_id);
5538 **/
5539 -- Requeue
5540 if (l_owner_type = 'RS_GROUP')
5541 then
5542 if (l_prev_owner_type <> 'RS_GROUP') and (l_owner_type = 'RS_GROUP') and
5543 (l_assignee_type is null)
5544 then
5545 l_event_key := 'REQUEUE';
5546 --dbms_output.put_line('requeue');
5547 elsif ( (l_prev_owner_type = 'RS_GROUP') and (l_owner_type = 'RS_GROUP') and
5548 (l_assignee_type is null) and (l_prev_owner_id <> m_owner_id))
5549 then
5550 -- dbms_output.put_line('asg types are grp');
5551 --if (l_prev_owner_id <> m_owner_id)
5552 -- then
5553 l_event_key := 'REQUEUE';
5554 --dbms_output.put_line('requeue');
5555 -- end if;
5556 elsif (l_prev_assignee_type is not null) and (l_assignee_type is null)
5557 then
5558 l_event_key := 'REQUEUE';
5559 -- dbms_output.put_line('requeue');
5560 /* else
5561 if (l_event_key is NULL)
5562 then
5563 l_event_key := 'UPDATE_WR_ITEM';
5564 end if;
5565 */ end if;
5566 end if; /* requeue */
5567 -- Reassign
5568 if ( (l_prev_assignee_type = 'RS_INDIVIDUAL') and (l_assignee_type = 'RS_INDIVIDUAL') )
5569 then
5570 -- dbms_output.put_line('asg types are ind');
5571 if (l_prev_assignee_id <> m_assignee_id)
5572 then
5573 l_event_key := 'REASSIGN';
5574 end if;
5575 -- dbms_output.put_line('reasg');
5576 end if;
5577
5578 if (l_event_key is NULL)
5579 then
5580 l_event_key := 'UPDATE_WR_ITEM';
5581 end if;
5582 --end if;
5583 end if;
5584
5585
5586 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') ) OR
5587 ( (l_audit_log_val = 'MINIMAL') AND ( (l_action_key is NULL) OR (l_action_key = 'WORKITEM_UPDATE')) )
5588 then
5589
5590 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
5591 (
5592 P_ACTION_KEY => l_action_key,
5593 P_EVENT_KEY => l_event_key,
5594 P_MODULE => l_module,
5595 P_WS_CODE => l_curr_ws_code,
5596 P_APPLICATION_ID => p_application_id,
5597 P_WORKITEM_PK_ID => p_workitem_pk_id,
5598 P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
5599 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
5600 P_WORK_ITEM_STATUS_CURR => l_work_item_status_id,
5601 P_OWNER_ID_PREV => l_prev_owner_id,
5602 P_OWNER_ID_CURR => m_owner_id,
5603 P_OWNER_TYPE_PREV => l_prev_owner_type,
5604 P_OWNER_TYPE_CURR => l_owner_type,
5605 P_ASSIGNEE_ID_PREV => l_prev_assignee_id,
5606 P_ASSIGNEE_ID_CURR => m_assignee_id,
5607 P_ASSIGNEE_TYPE_PREV => l_prev_assignee_type,
5608 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
5609 P_SOURCE_OBJECT_ID_PREV => l_prev_source_object_id,
5610 P_SOURCE_OBJECT_ID_CURR => m_source_object_id,
5611 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_prev_source_object_type_code,
5612 P_SOURCE_OBJECT_TYPE_CODE_CURR => m_source_object_type_code,
5613 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
5614 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
5615 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
5616 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
5617 P_WORKITEM_DIST_STATUS_PREV => l_prev_distribution_status_id,
5618 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
5619 P_PRIORITY_PREV => l_prev_priority_id,
5620 P_PRIORITY_CURR => l_priority_id,
5621 P_DUE_DATE_PREV => l_prev_due_date,
5622 P_DUE_DATE_CURR => m_due_date,
5623 P_RESCHEDULE_TIME_PREV => l_prev_reschedule_time,
5624 P_RESCHEDULE_TIME_CURR => l_prev_reschedule_time,
5625 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
5626 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
5627 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
5628 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
5629 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
5630 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
5631 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
5632 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
5633 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
5634 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
5635 P_STATUS => x_return_status,
5636 P_ERROR_CODE => l_msg_data,
5637 X_AUDIT_LOG_ID => l_audit_log_id,
5638 X_MSG_DATA => l_msg_data,
5639 X_RETURN_STATUS => l_return_status);
5640
5641 end if;
5642 -- dbms_output.put_line('ret sts: '||x_return_status);
5643 IF (x_return_status = fnd_api.g_ret_sts_success)
5644 THEN
5645
5646 -- Set the Distribution Status of Child Work Items which are on-hold
5647 -- If it is a primary Work Source with Dependent Items
5648
5649 if (l_association_ws_id is null)
5650 then
5651
5652 BEGIN
5653 l_not_valid_flag := 'N';
5654 select a.ws_id
5655 into l_ws_id
5656 from ieu_uwqm_ws_assct_props a, ieu_uwqm_work_sources_b b
5657 where (parent_ws_id = l_curr_ws_id)
5658 and a.ws_id = b.ws_id
5659 -- and nvl(b.not_valid_flag, 'N') = 'N';
5660 and nvl(b.not_valid_flag, 'N') = l_not_valid_flag;
5661 EXCEPTION
5662 WHEN OTHERS THEN
5663 l_ws_id := null;
5664 END;
5665
5666 if (l_ws_id is not null)
5667 then
5668
5669 l_ctr := 0;
5670 for cur_rec in c1(p_workitem_pk_id, p_workitem_obj_code)
5671 loop
5672 l_wr_item_list(l_ctr).work_item_id := cur_rec.work_item_id;
5673 l_wr_item_list(l_ctr).workitem_pk_id := cur_rec.workitem_pk_id;
5674 l_wr_item_list(l_ctr).workitem_obj_code := cur_rec.workitem_obj_code;
5675 l_wr_item_list(l_ctr).prev_parent_dist_status_id := l_prev_distribution_status_id;
5676 l_wr_item_list(l_ctr).prev_parent_workitem_status_id := l_prev_status_id;
5677
5678 l_ctr := l_ctr + 1;
5679 --dbms_output.put_line('pk id: '||cur_rec.work_item_id);
5680
5681 end loop;
5682
5683 if ( l_wr_item_list.count > 0)
5684 then
5685 l_audit_trail_rec := SYSTEM.WR_AUDIT_TRAIL_NST();
5686 l_audit_trail_rec.extend;
5687
5688 if p_audit_trail_rec.count > 0
5689 then
5690 for n in p_audit_trail_rec.first..p_audit_trail_rec.last
5691 loop
5692 l_action_key := p_audit_trail_rec(n).action_key;
5693 end loop;
5694 end if;
5695
5696 if (l_action_key is null)
5697 then
5698 l_action_key := 'WORKITEM_UPDATE';
5699 end if;
5700 l_event_key := null;
5701 --dbms_output.put_line('audit trail rec..act key:'||l_action_key||' app id: '||p_application_id);
5702 BEGIN
5703 l_audit_trail_rec(l_audit_trail_rec.LAST) := SYSTEM.WR_AUDIT_TRAIL_OBJ
5704 (l_action_key,
5705 l_event_key,
5706 p_application_id,
5707 'IEU_WR_PUB.UPDATE_WR_ITEM',
5708 null,
5709 null,
5710 null,
5711 null,
5712 null);
5713 EXCEPTION
5714 WHEN OTHERS THEN
5715 --dbms_output.put_line('err: '||SQLERRM||' '||SQLCODE);
5716 null;
5717 END;
5718
5719 IEU_WR_PUB.SYNC_DEPENDENT_WR_ITEMS
5720 ( p_api_version => 1,
5721 p_init_msg_list => 'T',
5722 p_commit => 'F',
5723 p_wr_item_list => l_wr_item_list,
5724 p_audit_trail_rec => l_audit_trail_rec,
5725 x_msg_count => l_msg_count,
5726 x_msg_data => l_msg_data,
5727 x_return_status => x_return_status);
5728 --dbms_output.put_line('ret sts from sync: '||x_return_status);
5729 if (x_return_status <> 'S')
5730 then
5731 x_return_status := fnd_api.g_ret_sts_error;
5732 l_token_str := l_msg_data;
5733
5734 FND_MESSAGE.SET_NAME('IEU', 'IEU_UPDATE_WR_ITEM_FAILED');
5735 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
5736 FND_MESSAGE.SET_TOKEN('DETAILS', l_token_str);
5737
5738 fnd_msg_pub.ADD;
5739 fnd_msg_pub.Count_and_Get
5740 (
5741 p_count => x_msg_count,
5742 p_data => x_msg_data
5743 );
5744
5745 RAISE fnd_api.g_exc_error;
5746 end if;
5747 end if;
5748
5749 end if; /*l_ws_id is not null */
5750
5751 else
5752
5753 x_return_status := fnd_api.g_ret_sts_success;
5754
5755 end if; /* association_ws_id is null */
5756
5757 ELSIF (x_return_status <> fnd_api.g_ret_sts_success)
5758 THEN
5759
5760 x_return_status := fnd_api.g_ret_sts_error;
5761 l_token_str := l_msg_data;
5762
5763 FND_MESSAGE.SET_NAME('IEU', 'IEU_UPDATE_WR_ITEM_FAILED');
5764 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
5765 FND_MESSAGE.SET_TOKEN('DETAILS', l_token_str);
5766
5767 fnd_msg_pub.ADD;
5768 fnd_msg_pub.Count_and_Get
5769 (
5770 p_count => x_msg_count,
5771 p_data => x_msg_data
5772 );
5773
5774 RAISE fnd_api.g_exc_error;
5775 END IF;
5776
5777
5778 IF FND_API.TO_BOOLEAN( p_commit )
5779 THEN
5780 COMMIT WORK;
5781 END iF;
5782
5783 EXCEPTION
5784
5785 WHEN fnd_api.g_exc_error THEN
5786
5787 ROLLBACK TO update_wr_items_sp;
5788 x_return_status := fnd_api.g_ret_sts_error;
5789
5790 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') ) OR
5791 ( (l_audit_log_val = 'MINIMAL') AND ( (l_action_key is NULL) OR (l_action_key = 'WORKITEM_CREATION')) )
5792 then
5793
5794 if (l_action_key is NULL)
5795 then
5796 l_action_key := 'WORKITEM_UPDATE';
5797 end if;
5798
5799 if (l_audit_log_val = 'MINIMAL')
5800 then
5801 l_event_key := null;
5802 elsif ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
5803 then
5804 l_event_key := 'UPDATE_WR_ITEM';
5805 end if;
5806
5807 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
5808 (
5809 P_ACTION_KEY => l_action_key,
5810 P_EVENT_KEY => l_event_key,
5811 P_MODULE => l_module,
5812 P_WS_CODE => l_curr_ws_code,
5813 P_APPLICATION_ID => p_application_id,
5814 P_WORKITEM_PK_ID => p_workitem_pk_id,
5815 P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
5816 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
5817 P_WORK_ITEM_STATUS_CURR => l_work_item_status_id,
5818 P_OWNER_ID_PREV => l_prev_owner_id,
5819 P_OWNER_ID_CURR => m_owner_id,
5820 P_OWNER_TYPE_PREV => l_prev_owner_type,
5821 P_OWNER_TYPE_CURR => l_owner_type,
5822 P_ASSIGNEE_ID_PREV => l_prev_assignee_id,
5823 P_ASSIGNEE_ID_CURR => m_assignee_id,
5824 P_ASSIGNEE_TYPE_PREV => l_prev_assignee_type,
5825 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
5826 P_SOURCE_OBJECT_ID_PREV => l_prev_source_object_id,
5827 P_SOURCE_OBJECT_ID_CURR => m_source_object_id,
5828 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_prev_source_object_type_code,
5829 P_SOURCE_OBJECT_TYPE_CODE_CURR => m_source_object_type_code,
5830 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
5831 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
5832 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
5833 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
5834 P_WORKITEM_DIST_STATUS_PREV => l_prev_distribution_status_id,
5835 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
5836 P_PRIORITY_PREV => l_prev_priority_id,
5837 P_PRIORITY_CURR => l_priority_id,
5838 P_DUE_DATE_PREV => l_prev_due_date,
5839 P_DUE_DATE_CURR => m_due_date,
5840 P_RESCHEDULE_TIME_PREV => l_prev_reschedule_time,
5841 P_RESCHEDULE_TIME_CURR => l_prev_reschedule_time,
5842 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
5843 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
5844 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
5845 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
5846 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
5847 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
5848 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
5849 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
5850 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
5851 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
5852 P_STATUS => x_return_status,
5853 P_ERROR_CODE => x_msg_data,
5854 X_AUDIT_LOG_ID => l_audit_log_id,
5855 X_MSG_DATA => l_msg_data,
5856 X_RETURN_STATUS => l_return_status);
5857 commit;
5858
5859 end if;
5860
5861 fnd_msg_pub.Count_and_Get
5862 (
5863 p_count => x_msg_count,
5864 p_data => x_msg_data
5865 );
5866
5867 WHEN fnd_api.g_exc_unexpected_error THEN
5868
5869 ROLLBACK TO update_wr_items_sp;
5870 x_return_status := fnd_api.g_ret_sts_unexp_error;
5871
5872 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') ) OR
5873 ( (l_audit_log_val = 'MINIMAL') AND ( (l_action_key is NULL) OR (l_action_key = 'WORKITEM_CREATION')) )
5874 then
5875
5876 if (l_action_key is NULL)
5877 then
5878 l_action_key := 'WORKITEM_UPDATE';
5879 end if;
5880
5881 if (l_audit_log_val = 'MINIMAL')
5882 then
5883 l_event_key := null;
5884 elsif ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
5885 then
5886 l_event_key := 'UPDATE_WR_ITEM';
5887 end if;
5888
5889 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
5890 (
5891 P_ACTION_KEY => l_action_key,
5892 P_EVENT_KEY => l_event_key,
5893 P_MODULE => l_module,
5894 P_WS_CODE => l_curr_ws_code,
5895 P_APPLICATION_ID => p_application_id,
5896 P_WORKITEM_PK_ID => p_workitem_pk_id,
5897 P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
5898 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
5899 P_WORK_ITEM_STATUS_CURR => l_work_item_status_id,
5900 P_OWNER_ID_PREV => l_prev_owner_id,
5901 P_OWNER_ID_CURR => m_owner_id,
5902 P_OWNER_TYPE_PREV => l_prev_owner_type,
5903 P_OWNER_TYPE_CURR => l_owner_type,
5904 P_ASSIGNEE_ID_PREV => l_prev_assignee_id,
5905 P_ASSIGNEE_ID_CURR => m_assignee_id,
5906 P_ASSIGNEE_TYPE_PREV => l_prev_assignee_type,
5907 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
5908 P_SOURCE_OBJECT_ID_PREV => l_prev_source_object_id,
5909 P_SOURCE_OBJECT_ID_CURR => m_source_object_id,
5910 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_prev_source_object_type_code,
5911 P_SOURCE_OBJECT_TYPE_CODE_CURR => m_source_object_type_code,
5912 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
5913 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
5914 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
5915 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
5916 P_WORKITEM_DIST_STATUS_PREV => l_prev_distribution_status_id,
5917 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
5918 P_PRIORITY_PREV => l_prev_priority_id,
5919 P_PRIORITY_CURR => l_priority_id,
5920 P_DUE_DATE_PREV => l_prev_due_date,
5921 P_DUE_DATE_CURR => m_due_date,
5922 P_RESCHEDULE_TIME_PREV => l_prev_reschedule_time,
5923 P_RESCHEDULE_TIME_CURR => l_prev_reschedule_time,
5924 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
5925 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
5926 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
5927 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
5928 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
5929 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
5930 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
5931 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
5932 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
5933 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
5934 P_STATUS => x_return_status,
5935 P_ERROR_CODE => x_msg_data,
5936 X_AUDIT_LOG_ID => l_audit_log_id,
5937 X_MSG_DATA => l_msg_data,
5938 X_RETURN_STATUS => l_return_status);
5939 commit;
5940
5941 end if;
5942
5943 fnd_msg_pub.Count_and_Get
5944 (
5945 p_count => x_msg_count,
5946 p_data => x_msg_data
5947 );
5948
5949
5950 WHEN OTHERS THEN
5951
5952 ROLLBACK TO update_wr_items_sp;
5953 x_return_status := fnd_api.g_ret_sts_unexp_error;
5954
5955 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') ) OR
5956 ( (l_audit_log_val = 'MINIMAL') AND ( (l_action_key is NULL) OR (l_action_key = 'WORKITEM_CREATION')) )
5957 then
5958
5959 if (l_action_key is NULL)
5960 then
5961 l_action_key := 'WORKITEM_UPDATE';
5962 end if;
5963
5964 if (l_audit_log_val = 'MINIMAL')
5965 then
5966 l_event_key := null;
5967 elsif ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
5968 then
5969 l_event_key := 'UPDATE_WR_ITEM';
5970 end if;
5971
5972 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
5973 (
5974 P_ACTION_KEY => l_action_key,
5975 P_EVENT_KEY => l_event_key,
5976 P_MODULE => l_module,
5977 P_WS_CODE => l_curr_ws_code,
5978 P_APPLICATION_ID => p_application_id,
5979 P_WORKITEM_PK_ID => p_workitem_pk_id,
5980 P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
5981 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
5982 P_WORK_ITEM_STATUS_CURR => l_work_item_status_id,
5983 P_OWNER_ID_PREV => l_prev_owner_id,
5984 P_OWNER_ID_CURR => m_owner_id,
5985 P_OWNER_TYPE_PREV => l_prev_owner_type,
5986 P_OWNER_TYPE_CURR => l_owner_type,
5987 P_ASSIGNEE_ID_PREV => l_prev_assignee_id,
5988 P_ASSIGNEE_ID_CURR => m_assignee_id,
5989 P_ASSIGNEE_TYPE_PREV => l_prev_assignee_type,
5990 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
5991 P_SOURCE_OBJECT_ID_PREV => l_prev_source_object_id,
5992 P_SOURCE_OBJECT_ID_CURR => m_source_object_id,
5993 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_prev_source_object_type_code,
5994 P_SOURCE_OBJECT_TYPE_CODE_CURR => m_source_object_type_code,
5995 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
5996 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
5997 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
5998 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
5999 P_WORKITEM_DIST_STATUS_PREV => l_prev_distribution_status_id,
6000 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
6001 P_PRIORITY_PREV => l_prev_priority_id,
6002 P_PRIORITY_CURR => l_priority_id,
6003 P_DUE_DATE_PREV => l_prev_due_date,
6004 P_DUE_DATE_CURR => m_due_date,
6005 P_RESCHEDULE_TIME_PREV => l_prev_reschedule_time,
6006 P_RESCHEDULE_TIME_CURR => l_prev_reschedule_time,
6007 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
6008 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
6009 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
6010 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
6011 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
6012 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
6013 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
6014 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
6015 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
6016 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
6017 P_STATUS => x_return_status,
6018 P_ERROR_CODE => x_msg_data,
6019 X_AUDIT_LOG_ID => l_audit_log_id,
6020 X_MSG_DATA => l_msg_data,
6021 X_RETURN_STATUS => l_return_status);
6022 commit;
6023
6024 end if;
6025
6026 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6027 THEN
6028
6029 fnd_msg_pub.Count_and_Get
6030 (
6031 p_count => x_msg_count,
6032 p_data => x_msg_data
6033 );
6034
6035 END IF;
6036
6037 END UPDATE_WR_ITEM;
6038
6039 PROCEDURE RESCHEDULE_UWQM_ITEM
6040 ( p_api_version IN NUMBER,
6041 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
6042 p_commit IN VARCHAR2 DEFAULT NULL,
6043 p_workitem_obj_code IN VARCHAR2 DEFAULT NULL,
6044 p_workitem_pk_id IN NUMBER DEFAULT NULL,
6045 p_work_item_id IN NUMBER DEFAULT NULL,
6046 p_reschedule_time IN DATE DEFAULT NULL,
6047 p_user_id IN NUMBER DEFAULT NULL,
6048 p_login_id IN NUMBER DEFAULT NULL,
6049 -- p_audit_trail_rec IN SYSTEM.WR_AUDIT_TRAIL_NST,
6050 x_msg_count OUT NOCOPY NUMBER,
6051 x_msg_data OUT NOCOPY VARCHAR2,
6052 x_return_status OUT NOCOPY VARCHAR2) AS
6053
6054 l_api_version CONSTANT NUMBER := 1.0;
6055 l_api_name CONSTANT VARCHAR2(30) := 'RESCHEDULE_UWQM_ITEM';
6056
6057 l_miss_param_flag NUMBER(1) := 0;
6058 l_token_str VARCHAR2(4000);
6059 l_param_valid_flag NUMBER(1) := 0;
6060
6061 l_work_item_id NUMBER;
6062 l_workitem_obj_code VARCHAR2(30);
6063 l_object_function VARCHAR2(30);
6064 l_status_id NUMBER := 0;
6065
6066 l_old_status_update_user_id NUMBER;
6067 l_new_status_update_user_id NUMBER;
6068
6069 l_miss_workitem_id_flag NUMBER(1) := 0;
6070 l_miss_workitem_obj_code_flag NUMBER(1) := 0;
6071
6072 -- Audit Log
6073 l_action_key VARCHAR2(2000);
6074 l_event_key VARCHAR2(2000);
6075 l_module VARCHAR2(2000);
6076 l_curr_ws_code VARCHAR2(2000);
6077 l_application_id NUMBER;
6078 l_prev_status_id NUMBER;
6079 l_prev_owner_id NUMBER;
6080 l_prev_owner_type VARCHAR2(2000);
6081 l_prev_assignee_id NUMBER;
6082 l_prev_assignee_type VARCHAR2(2000);
6083 l_prev_distribution_status_id NUMBER;
6084 l_prev_priority_id NUMBER;
6085 l_prev_due_date DATE;
6086 l_prev_reschedule_time DATE;
6087 l_ieu_comment_code1 VARCHAR2(2000);
6088 l_ieu_comment_code2 VARCHAR2(2000);
6089 l_ieu_comment_code3 VARCHAR2(2000);
6090 l_ieu_comment_code4 VARCHAR2(2000);
6091 l_ieu_comment_code5 VARCHAR2(2000);
6092 l_workitem_comment_code1 VARCHAR2(2000);
6093 l_workitem_comment_code2 VARCHAR2(2000);
6094 l_workitem_comment_code3 VARCHAR2(2000);
6095 l_workitem_comment_code4 VARCHAR2(2000);
6096 l_workitem_comment_code5 VARCHAR2(2000);
6097 l_msg_data VARCHAR2(4000);
6098 l_return_status VARCHAR2(10);
6099
6100 l_parent_status_id NUMBER;
6101 l_parent_dist_status NUMBER;
6102 l_distribution_status_id NUMBER;
6103
6104 l_ws_code1 VARCHAR2(50);
6105 l_ws_code2 VARCHAR2(50);
6106 l_assct_ws_code VARCHAR2(50);
6107 L_LOG_DIST_FROM VARCHAR(100);
6108 L_LOG_DIST_TO VARCHAR2(100);
6109 l_prev_source_object_id NUMBER;
6110 l_prev_source_object_type_code VARCHAR2(30);
6111
6112 l_ws_code VARCHAR2(50);
6113 l_ws_id NUMBER;
6114 l_audit_log_id NUMBER;
6115
6116 l_obj_code VARCHAR2(50);
6117 l_workitem_pk_id NUMBER;
6118
6119 BEGIN
6120
6121 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
6122 l_token_str := '';
6123
6124 SAVEPOINT reschedule_uwqm_items_sp;
6125 x_return_status := fnd_api.g_ret_sts_success;
6126
6127 IF NOT fnd_api.compatible_api_call (
6128 l_api_version,
6129 p_api_version,
6130 l_api_name,
6131 g_pkg_name
6132 )
6133 THEN
6134 RAISE fnd_api.g_exc_unexpected_error;
6135 END IF;
6136
6137 -- Initialize Message list
6138
6139 IF fnd_api.to_boolean(p_init_msg_list)
6140 THEN
6141 FND_MSG_PUB.INITIALIZE;
6142 END IF;
6143
6144 -- Check for NOT NULL columns
6145
6146 IF ( p_work_item_id is null)
6147 THEN
6148 -- l_miss_param_flag := 1;
6149 l_miss_workitem_id_flag := 1;
6150 l_token_str := l_token_str || ' WORK_ITEM_ID ';
6151 END IF;
6152
6153 IF (l_miss_workitem_id_flag = 1)
6154 THEN
6155 IF (p_workitem_obj_code is null)
6156 THEN
6157 l_miss_workitem_obj_code_flag := 1;
6158 l_token_str := l_token_str || ' WORKITEM_OBJECT_CODE ';
6159 END IF;
6160 IF (p_workitem_pk_id is null)
6161 THEN
6162 l_miss_workitem_obj_code_flag := 1;
6163 l_token_str := l_token_str || ' WORKITEM_PK_ID ';
6164 END IF;
6165 END IF;
6166
6167
6168 IF ( (l_miss_workitem_obj_code_flag = 1) and
6169 (l_miss_workitem_id_flag = 1) )
6170 THEN
6171 l_miss_param_flag := 1;
6172 END IF;
6173
6174 IF (p_user_id is null)
6175 THEN
6176 l_miss_param_flag := 1;
6177 l_token_str := l_token_str || ' USER_ID ';
6178 END IF;
6179
6180 IF (p_reschedule_time is null)
6181 THEN
6182 l_miss_param_flag := 1;
6183 l_token_str := l_token_str || ' START_TIME ';
6184 END IF;
6185
6186 If (l_miss_param_flag = 1)
6187 THEN
6188
6189 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_REQUIRED_PARAM_NULL');
6190 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_UWQM_PUB.RESCHEDULE_UWQM_ITEM');
6191 FND_MESSAGE.SET_TOKEN('IEU_UWQ_REQ_PARAM',l_token_str);
6192 fnd_msg_pub.ADD;
6193 fnd_msg_pub.Count_and_Get
6194 (
6195 p_count => x_msg_count,
6196 p_data => x_msg_data
6197 );
6198
6199 x_return_status := fnd_api.g_ret_sts_error;
6200 RAISE fnd_api.g_exc_error;
6201
6202 END IF;
6203
6204 IF (l_miss_workitem_obj_code_flag <> 1)
6205 THEN
6206
6207 BEGIN
6208 SELECT work_item_id
6209 INTO l_work_item_id
6210 FROM ieu_uwqm_items
6211 WHERE workitem_obj_code = p_workitem_obj_code
6212 AND workitem_pk_id = p_workitem_pk_id;
6213 EXCEPTION WHEN NO_DATA_FOUND
6214 THEN
6215 NULL;
6216 END;
6217
6218 IF (p_work_item_id <> l_work_item_id)
6219 THEN
6220
6221 l_token_str :=' WORKITEM_ID :'||
6222 p_work_item_id||' WORKITEM_PK_ID: '||p_workitem_pk_id||
6223 ' WORKITEM_OBJ_CODE: '||p_workitem_obj_code;
6224 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_COMBINATION');
6225 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_UWQM_PUB.RESCHEDULE_UWQM_ITEM');
6226 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
6227 fnd_msg_pub.ADD;
6228 fnd_msg_pub.Count_and_Get
6229 (
6230 p_count => x_msg_count,
6231 p_data => x_msg_data
6232 );
6233
6234 x_return_status := fnd_api.g_ret_sts_error;
6235 RAISE fnd_api.g_exc_error;
6236
6237 END IF;
6238
6239 END IF;
6240
6241 -- Validate object Code, owner_id, owner_type, assignee_id, assignee_type
6242
6243 IF (p_workitem_obj_code is not null)
6244 THEN
6245
6246 l_token_str := '';
6247
6248 BEGIN
6249 SELECT object_code, object_function
6250 INTO l_workitem_obj_code, l_object_function
6251 FROM jtf_objects_b
6252 WHERE object_code = p_workitem_obj_code;
6253 EXCEPTION
6254 WHEN no_data_found THEN
6255 null;
6256 END;
6257
6258 IF (l_workitem_obj_code is null)
6259 THEN
6260
6261 l_param_valid_flag := 1;
6262 l_token_str := 'WORKITEM_OBJ_CODE : '||p_workitem_obj_code;
6263
6264 /* ELSIF ( (l_workitem_obj_code = p_workitem_obj_code) and (l_object_FUNCTION is null))
6265 THEN
6266
6267 l_param_valid_flag := 1;
6268 l_token_str := 'Object Function for Object Code : '||p_workitem_obj_code; */
6269
6270 END IF;
6271
6272 IF (l_param_valid_flag = 1)
6273 THEN
6274
6275 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
6276 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_UWQM_PUB.RESCHEDULE_UWQM_ITEM');
6277 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
6278 fnd_msg_pub.ADD;
6279 fnd_msg_pub.Count_and_Get
6280 (
6281 p_count => x_msg_count,
6282 p_data => x_msg_data
6283 );
6284
6285 RAISE fnd_api.g_exc_error;
6286
6287 END IF;
6288
6289 END IF;
6290
6291 -- Get the prev values for audit trail
6292
6293 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL'))
6294 then
6295 IF (p_work_item_id is not null) THEN
6296 BEGIN
6297 SELECT ws_id, owner_id, owner_type, assignee_id, assignee_type, status_id,
6298 priority_id, due_date, reschedule_time, distribution_status_id, source_object_id, source_object_type_code, workitem_pk_id, workitem_obj_code
6299 INTO l_ws_id, l_prev_owner_id, l_prev_owner_type, l_prev_assignee_id, l_prev_assignee_type, l_prev_status_id,
6300 l_prev_priority_id, l_prev_due_date, l_prev_reschedule_time, l_prev_distribution_status_id,
6301 l_prev_source_object_id, l_prev_source_object_type_code, l_workitem_pk_id, l_obj_code
6302 FROM IEU_UWQM_ITEMS
6303 WHERE WORK_ITEM_ID = P_WORK_ITEM_ID;
6304
6305 EXCEPTION
6306 WHEN OTHERS THEN
6307 NULL;
6308 END;
6309
6310 ELSE
6311 BEGIN
6312 SELECT ws_id, owner_id, owner_type, assignee_id, assignee_type, status_id,
6313 priority_id, due_date, reschedule_time, distribution_status_id, source_object_id, source_object_type_code
6314 INTO l_ws_id, l_prev_owner_id, l_prev_owner_type, l_prev_assignee_id, l_prev_assignee_type, l_prev_status_id,
6315 l_prev_priority_id, l_prev_due_date, l_prev_reschedule_time, l_prev_distribution_status_id,
6316 l_prev_source_object_id, l_prev_source_object_type_code
6317 FROM IEU_UWQM_ITEMS
6318 WHERE workitem_obj_code = p_workitem_obj_code
6319 AND workitem_pk_id = p_workitem_pk_id;
6320
6321 EXCEPTION
6322 WHEN OTHERS THEN
6323 NULL;
6324 END;
6325 END IF;
6326 end if;
6327
6328 IF (p_work_item_id is not null)
6329 THEN
6330
6331 UPDATE IEU_UWQM_ITEMS
6332 SET reschedule_time = P_reschedule_time
6333 WHERE WORK_ITEM_ID = P_WORK_ITEM_ID;
6334
6335 ELSE
6336
6337 UPDATE IEU_UWQM_ITEMS
6338 SET reschedule_time = P_reschedule_time
6339 WHERE WORKITEM_PK_ID = P_WORKITEM_PK_ID
6340 AND WORKITEM_OBJ_CODE = P_WORKITEM_OBJ_CODE;
6341
6342 l_workitem_pk_id := P_WORKITEM_PK_ID;
6343 l_obj_code := P_WORKITEM_OBJ_CODE;
6344
6345 END IF;
6346
6347
6348 -- Audit Logging should be done only if the Profile Option Value is Minimal, Full or Detailed
6349
6350 l_action_key := 'RESCHEDULE';
6351 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
6352 then
6353 l_event_key := 'RESCHEDULE_WR_ITEM';
6354 else
6355 l_event_key := null;
6356 end if;
6357 -- l_module := 'IEU_WR_PUB.RESCEDULE_WR_ITEM';
6358 l_module := 'IEU_WR_PUB.SNOOZE_UWQM_ITEM';
6359
6360 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL') )
6361 then
6362
6363 BEGIN
6364
6365 select ws_code
6366 into l_ws_code
6367 from ieu_uwqm_work_sources_b
6368 where ws_id = l_ws_id;
6369
6370 EXCEPTION
6371 when others then
6372 null;
6373 END;
6374
6375 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
6376 (
6377 P_ACTION_KEY => l_action_key,
6378 P_EVENT_KEY => l_event_key,
6379 P_MODULE => l_module,
6380 P_WS_CODE => l_ws_code,
6381 P_APPLICATION_ID => 696,
6382 -- P_WORKITEM_PK_ID => p_workitem_pk_id,
6383 -- P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
6384 P_WORKITEM_PK_ID => l_workitem_pk_id,
6385 P_WORKITEM_OBJ_CODE => l_obj_code,
6386 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
6387 P_WORK_ITEM_STATUS_CURR => l_prev_status_id,
6388 P_OWNER_ID_PREV => l_prev_owner_id,
6389 P_OWNER_ID_CURR => l_prev_owner_id,
6390 P_OWNER_TYPE_PREV => l_prev_owner_type,
6391 P_OWNER_TYPE_CURR => l_prev_owner_type,
6392 P_ASSIGNEE_ID_PREV => l_prev_assignee_id,
6393 P_ASSIGNEE_ID_CURR => l_prev_assignee_id,
6394 P_ASSIGNEE_TYPE_PREV => l_prev_assignee_type,
6395 P_ASSIGNEE_TYPE_CURR => l_prev_assignee_type,
6396 P_SOURCE_OBJECT_ID_PREV => l_prev_source_object_id,
6397 P_SOURCE_OBJECT_ID_CURR => l_prev_source_object_id,
6398 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_prev_source_object_type_code,
6399 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_prev_source_object_type_code,
6400 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
6401 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
6402 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
6403 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
6404 P_WORKITEM_DIST_STATUS_PREV => l_prev_distribution_status_id,
6405 P_WORKITEM_DIST_STATUS_CURR => l_prev_distribution_status_id,
6406 P_PRIORITY_PREV => l_prev_priority_id,
6407 P_PRIORITY_CURR => l_prev_priority_id,
6408 P_DUE_DATE_PREV => l_prev_due_date,
6409 P_DUE_DATE_CURR => l_prev_due_date,
6410 P_RESCHEDULE_TIME_PREV => l_prev_reschedule_time,
6411 P_RESCHEDULE_TIME_CURR => P_reschedule_time,
6412 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
6413 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
6414 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
6415 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
6416 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
6417 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
6418 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
6419 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
6420 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
6421 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
6422 P_STATUS => fnd_api.g_ret_sts_success,
6423 P_ERROR_CODE => l_msg_data,
6424 X_AUDIT_LOG_ID => l_audit_log_id,
6425 X_MSG_DATA => l_msg_data,
6426 X_RETURN_STATUS => l_return_status);
6427
6428 end if;
6429
6430 IF (x_return_status <> fnd_api.g_ret_sts_success)
6431 THEN
6432
6433 x_return_status := fnd_api.g_ret_sts_error;
6434
6435 l_token_str := 'WORKITEM_OBJ_CODE : '||p_workitem_obj_code||
6436 ' WORKITEM_PK_ID : '||p_workitem_pk_id;
6437 FND_MESSAGE.SET_NAME('IEU', 'IEU_SUSPEND_UWQM_ITEM_FAILED');
6438 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_UWQM_PUB.RESCHEDULE_UWQM_ITEM');
6439 FND_MESSAGE.SET_TOKEN('DETAILS', l_token_str);
6440 fnd_msg_pub.ADD;
6441 fnd_msg_pub.Count_and_Get
6442 (
6443 p_count => x_msg_count,
6444 p_data => x_msg_data
6445 );
6446
6447 RAISE fnd_api.g_exc_error;
6448 END IF;
6449
6450
6451 IF FND_API.TO_BOOLEAN( p_commit )
6452 THEN
6453 COMMIT WORK;
6454 END iF;
6455
6456 EXCEPTION
6457
6458 WHEN fnd_api.g_exc_error THEN
6459
6460 ROLLBACK TO reschedule_uwqm_items_sp;
6461 x_return_status := fnd_api.g_ret_sts_error;
6462
6463 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL') )
6464 then
6465 l_action_key := 'RESCHEDULE';
6466 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
6467 then
6468 l_event_key := 'RESCHEDULE_WR_ITEM';
6469 else
6470 l_event_key := null;
6471 end if;
6472 -- l_module := 'IEU_WR_PUB.RESCEDULE_WR_ITEM';
6473 l_module := 'IEU_WR_PUB.SNOOZE_UWQM_ITEM';
6474
6475 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
6476 (
6477 P_ACTION_KEY => l_action_key,
6478 P_EVENT_KEY => l_event_key,
6479 P_MODULE => l_module,
6480 P_WS_CODE => l_curr_ws_code,
6481 P_APPLICATION_ID => 696,
6482 -- P_WORKITEM_PK_ID => p_workitem_pk_id,
6483 -- P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
6484 P_WORKITEM_PK_ID => l_workitem_pk_id,
6485 P_WORKITEM_OBJ_CODE => l_obj_code,
6486 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
6487 P_WORK_ITEM_STATUS_CURR => l_prev_status_id,
6488 P_OWNER_ID_PREV => l_prev_owner_id,
6489 P_OWNER_ID_CURR => l_prev_owner_id,
6490 P_OWNER_TYPE_PREV => l_prev_owner_type,
6491 P_OWNER_TYPE_CURR => l_prev_owner_type,
6492 P_ASSIGNEE_ID_PREV => l_prev_assignee_id,
6493 P_ASSIGNEE_ID_CURR => l_prev_assignee_id,
6494 P_ASSIGNEE_TYPE_PREV => l_prev_assignee_type,
6495 P_ASSIGNEE_TYPE_CURR => l_prev_assignee_type,
6496 P_SOURCE_OBJECT_ID_PREV => l_prev_source_object_id,
6497 P_SOURCE_OBJECT_ID_CURR => l_prev_source_object_id,
6498 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_prev_source_object_type_code,
6499 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_prev_source_object_type_code,
6500 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
6501 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
6502 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
6503 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
6504 P_WORKITEM_DIST_STATUS_PREV => l_distribution_status_id,
6505 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
6506 P_PRIORITY_PREV => l_prev_priority_id,
6507 P_PRIORITY_CURR => l_prev_priority_id,
6508 P_DUE_DATE_PREV => l_prev_due_date,
6509 P_DUE_DATE_CURR => l_prev_due_date,
6510 P_RESCHEDULE_TIME_PREV => l_prev_reschedule_time,
6511 P_RESCHEDULE_TIME_CURR => P_reschedule_time,
6512 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
6513 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
6514 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
6515 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
6516 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
6517 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
6518 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
6519 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
6520 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
6521 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
6522 P_STATUS => x_return_status,
6523 P_ERROR_CODE => x_msg_data,
6524 X_AUDIT_LOG_ID => l_audit_log_id,
6525 X_MSG_DATA => l_msg_data,
6526 X_RETURN_STATUS => l_return_status); commit;
6527
6528 end if;
6529
6530 fnd_msg_pub.Count_and_Get
6531 (
6532 p_count => x_msg_count,
6533 p_data => x_msg_data
6534 );
6535
6536 WHEN fnd_api.g_exc_unexpected_error THEN
6537
6538 ROLLBACK TO reschedule_uwqm_items_sp;
6539 x_return_status := fnd_api.g_ret_sts_unexp_error;
6540
6541 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL') )
6542 then
6543
6544 l_action_key := 'RESCHEDULE';
6545 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
6546 then
6547 l_event_key := 'RESCHEDULE_WR_ITEM';
6548 else
6549 l_event_key := null;
6550 end if;
6551 -- l_module := 'IEU_WR_PUB.RESCEDULE_WR_ITEM';
6552 l_module := 'IEU_WR_PUB.SNOOZE_UWQM_ITEM';
6553
6554 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
6555 (
6556 P_ACTION_KEY => l_action_key,
6557 P_EVENT_KEY => l_event_key,
6558 P_MODULE => l_module,
6559 P_WS_CODE => l_curr_ws_code,
6560 P_APPLICATION_ID => 696,
6561 -- P_WORKITEM_PK_ID => p_workitem_pk_id,
6562 -- P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
6563 P_WORKITEM_PK_ID => l_workitem_pk_id,
6564 P_WORKITEM_OBJ_CODE => l_obj_code,
6565 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
6566 P_WORK_ITEM_STATUS_CURR => l_prev_status_id,
6567 P_OWNER_ID_PREV => l_prev_owner_id,
6568 P_OWNER_ID_CURR => l_prev_owner_id,
6569 P_OWNER_TYPE_PREV => l_prev_owner_type,
6570 P_OWNER_TYPE_CURR => l_prev_owner_type,
6571 P_ASSIGNEE_ID_PREV => l_prev_assignee_id,
6572 P_ASSIGNEE_ID_CURR => l_prev_assignee_id,
6573 P_ASSIGNEE_TYPE_PREV => l_prev_assignee_type,
6574 P_ASSIGNEE_TYPE_CURR => l_prev_assignee_type,
6575 P_SOURCE_OBJECT_ID_PREV => l_prev_source_object_id,
6576 P_SOURCE_OBJECT_ID_CURR => l_prev_source_object_id,
6577 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_prev_source_object_type_code,
6578 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_prev_source_object_type_code,
6579 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
6580 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
6581 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
6582 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
6583 P_WORKITEM_DIST_STATUS_PREV => l_distribution_status_id,
6584 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
6585 P_PRIORITY_PREV => l_prev_priority_id,
6586 P_PRIORITY_CURR => l_prev_priority_id,
6587 P_DUE_DATE_PREV => l_prev_due_date,
6588 P_DUE_DATE_CURR => l_prev_due_date,
6589 P_RESCHEDULE_TIME_PREV => l_prev_reschedule_time,
6590 P_RESCHEDULE_TIME_CURR => P_reschedule_time,
6591 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
6592 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
6593 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
6594 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
6595 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
6596 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
6597 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
6598 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
6599 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
6600 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
6601 P_STATUS => x_return_status,
6602 P_ERROR_CODE => x_msg_data,
6603 X_AUDIT_LOG_ID => l_audit_log_id,
6604 X_MSG_DATA => l_msg_data,
6605 X_RETURN_STATUS => l_return_status); commit;
6606
6607 end if;
6608
6609 fnd_msg_pub.Count_and_Get
6610 (
6611 p_count => x_msg_count,
6612 p_data => x_msg_data
6613 );
6614
6615 WHEN OTHERS THEN
6616
6617 ROLLBACK TO reschedule_uwqm_items_sp;
6618 x_return_status := fnd_api.g_ret_sts_unexp_error;
6619
6620 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL') )
6621 then
6622
6623 l_action_key := 'RESCHEDULE';
6624 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
6625 then
6626 l_event_key := 'RESCHEDULE_WR_ITEM';
6627 else
6628 l_event_key := null;
6629 end if;
6630 -- l_module := 'IEU_WR_PUB.RESCEDULE_WR_ITEM';
6631 l_module := 'IEU_WR_PUB.SNOOZE_UWQM_ITEM';
6632
6633 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
6634 (
6635 P_ACTION_KEY => l_action_key,
6636 P_EVENT_KEY => l_event_key,
6637 P_MODULE => l_module,
6638 P_WS_CODE => l_curr_ws_code,
6639 P_APPLICATION_ID => 696,
6640 -- P_WORKITEM_PK_ID => p_workitem_pk_id,
6641 -- P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
6642 P_WORKITEM_PK_ID => l_workitem_pk_id,
6643 P_WORKITEM_OBJ_CODE => l_obj_code,
6644 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
6645 P_WORK_ITEM_STATUS_CURR => l_prev_status_id,
6646 P_OWNER_ID_PREV => l_prev_owner_id,
6647 P_OWNER_ID_CURR => l_prev_owner_id,
6648 P_OWNER_TYPE_PREV => l_prev_owner_type,
6649 P_OWNER_TYPE_CURR => l_prev_owner_type,
6650 P_ASSIGNEE_ID_PREV => l_prev_assignee_id,
6651 P_ASSIGNEE_ID_CURR => l_prev_assignee_id,
6652 P_ASSIGNEE_TYPE_PREV => l_prev_assignee_type,
6653 P_ASSIGNEE_TYPE_CURR => l_prev_assignee_type,
6654 P_SOURCE_OBJECT_ID_PREV => l_prev_source_object_id,
6655 P_SOURCE_OBJECT_ID_CURR => l_prev_source_object_id,
6656 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_prev_source_object_type_code,
6657 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_prev_source_object_type_code,
6658 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
6659 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
6660 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
6661 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
6662 P_WORKITEM_DIST_STATUS_PREV => l_distribution_status_id,
6663 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
6664 P_PRIORITY_PREV => l_prev_priority_id,
6665 P_PRIORITY_CURR => l_prev_priority_id,
6666 P_DUE_DATE_PREV => l_prev_due_date,
6667 P_DUE_DATE_CURR => l_prev_due_date,
6668 P_RESCHEDULE_TIME_PREV => l_prev_reschedule_time,
6669 P_RESCHEDULE_TIME_CURR => P_reschedule_time,
6670 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
6671 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
6672 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
6673 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
6674 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
6675 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
6676 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
6677 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
6678 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
6679 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
6680 P_STATUS => x_return_status,
6681 P_ERROR_CODE => x_msg_data,
6682 X_AUDIT_LOG_ID => l_audit_log_id,
6683 X_MSG_DATA => l_msg_data,
6684 X_RETURN_STATUS => l_return_status); commit;
6685
6686 end if;
6687
6688 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6689 THEN
6690
6691 fnd_msg_pub.Count_and_Get
6692 (
6693 p_count => x_msg_count,
6694 p_data => x_msg_data
6695 );
6696
6697 END IF;
6698
6699 END RESCHEDULE_UWQM_ITEM;
6700
6701
6702 PROCEDURE SYNC_WS_DETAILS
6703 ( p_api_version IN NUMBER,
6704 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
6705 p_commit IN VARCHAR2 DEFAULT NULL,
6706 p_ws_code IN VARCHAR2 DEFAULT NULL,
6707 p_audit_trail_rec IN SYSTEM.WR_AUDIT_TRAIL_NST,
6708 x_msg_count OUT NOCOPY NUMBER,
6709 x_msg_data OUT NOCOPY VARCHAR2,
6710 x_return_status OUT NOCOPY VARCHAR2) AS
6711
6712 l_api_version CONSTANT NUMBER := 1.0;
6713 l_api_name CONSTANT VARCHAR2(30) := 'SYNC_WS_DETAILS';
6714
6715 l_miss_param_flag NUMBER(1) := 0;
6716 l_token_str VARCHAR2(4000);
6717 l_param_valid_flag NUMBER(1) := 0;
6718
6719 l_msg_data VARCHAR2(4000);
6720
6721 l_ws_id NUMBER;
6722 l_parent_ws_id NUMBER;
6723 l_child_ws_id NUMBER;
6724 l_parent_obj_code VARCHAR2(500);
6725 l_child_obj_code VARCHAR2(500);
6726 l_dist_from IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_FROM%TYPE;
6727 l_dist_to IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_TO%TYPE;
6728 l_ws_type VARCHAR2(500);
6729 l_obj_code VARCHAR2(500);
6730 l_distribution_status_id NUMBER;
6731 l_parent_dist_status NUMBER;
6732 l_dist_st_based_on_parent VARCHAR2(5);
6733 l_parent_status_id NUMBER;
6734 l_set_dist_id_flag VARCHAR2(5);
6735
6736 l_tasks_rules_func varchar2(256);
6737 l_tasks_data_list SYSTEM.WR_TASKS_DATA_NST;
6738 l_def_data_list SYSTEM.DEF_WR_DATA_NST;
6739 l_uwqm_count number;
6740 l_task_data_var varchar2(20);
6741 l_msg_count number;
6742 l_return_status varchar2(1);
6743
6744 l_task_id number;
6745 l_task_number varchar2(30);
6746 l_customer_id number;
6747 l_owner_id number;
6748 l_owner_type_code varchar2(30);
6749 l_source_object_id number;
6750 l_source_object_type_code varchar2(30);
6751 l_task_name varchar2(80);
6752 l_assignee_id number;
6753 l_assignee_type varchar2(25);
6754 l_task_priority_id number;
6755 l_date_selected varchar2(1);
6756 l_due_date date;
6757 l_planned_end_date date;
6758 l_actual_end_date date;
6759 l_scheduled_end_date date;
6760 l_planned_start_date date;
6761 l_actual_start_date date;
6762 l_scheduled_start_date date;
6763 l_importance_level number;
6764 l_priority_code varchar2(30);
6765 l_task_status varchar2(10);
6766 l_task_status_id number;
6767 l_task_type_id number;
6768
6769
6770 -- Cursor for primary ws
6771 cursor c_pry_ws(p_obj_code in VARCHAR2) is
6772 select work_item_id, owner_type, assignee_type
6773 from ieu_uwqm_items
6774 where workitem_obj_code = p_obj_code;
6775
6776 -- Cursor for association ws
6777 cursor c_assct_ws(p_parent_obj_code in VARCHAR2, p_child_obj_code in VARCHAR2) is
6778 select work_item_id, workitem_pk_id, workitem_obj_code, owner_id, owner_type, assignee_id, assignee_type, source_object_id, source_object_type_code,
6779 status_id, priority_id, due_date
6780 from ieu_uwqm_items
6781 where workitem_obj_code = p_child_obj_code
6782 and source_object_type_code = p_parent_obj_code;
6783
6784 cursor c_task(p_source_object_type_code in varchar2) is
6785 select tb.task_id, tb.task_number, tb.customer_id, tb.owner_id, tb.owner_type_code,
6786 tb.source_object_id, tb.source_object_type_code,
6787 -- decode(tb.date_selected, 'P', tb.planned_end_date,
6788 -- 'A', tb.actual_end_date, 'S', tb.scheduled_end_date, null, tb.scheduled_end_date) due_date,
6789 tb.planned_start_date, tb.planned_end_date, tb.actual_start_date, tb.actual_end_date,
6790 tb.scheduled_start_date, tb.scheduled_end_date,tb.task_type_id,
6791 tb.task_status_id, tt.task_name, tp.importance_level, ip.priority_code, tb.task_priority_id
6792 from jtf_tasks_b tb, jtf_tasks_tl tt, jtf_task_priorities_vl tp, ieu_uwqm_priorities_b ip
6793 where tb.entity = 'TASK' and nvl(tb.deleted_flag, 'N') = 'N' and tb.task_id = tt.task_id
6794 and tt.language = userenv('LANG') and tp.task_priority_id = nvl(tb.task_priority_id, 4)
6795 and least(tp.importance_level, 4) = ip.priority_level
6796 and tb.open_flag = 'Y'
6797 and tb.source_object_type_code = p_source_object_type_code;
6798
6799 -- Audit Log
6800 l_action_key VARCHAR2(2000);
6801 l_event_key VARCHAR2(2000);
6802 l_module VARCHAR2(2000);
6803 l_curr_ws_code VARCHAR2(2000);
6804 l_application_id NUMBER;
6805 l_prev_status_id NUMBER;
6806 l_prev_owner_id NUMBER;
6807 l_prev_owner_type VARCHAR2(2000);
6808 l_prev_assignee_id NUMBER;
6809 l_prev_assignee_type VARCHAR2(2000);
6810 l_prev_distribution_status_id NUMBER;
6811 l_prev_priority_id NUMBER;
6812 l_prev_due_date DATE;
6813 l_prev_reschedule_time DATE;
6814 l_ieu_comment_code1 VARCHAR2(2000);
6815 l_ieu_comment_code2 VARCHAR2(2000);
6816 l_ieu_comment_code3 VARCHAR2(2000);
6817 l_ieu_comment_code4 VARCHAR2(2000);
6818 l_ieu_comment_code5 VARCHAR2(2000);
6819 l_workitem_comment_code1 VARCHAR2(2000);
6820 l_workitem_comment_code2 VARCHAR2(2000);
6821 l_workitem_comment_code3 VARCHAR2(2000);
6822 l_workitem_comment_code4 VARCHAR2(2000);
6823 l_workitem_comment_code5 VARCHAR2(2000);
6824
6825 l_status_id NUMBER;
6826 l_priority_id NUMBER;
6827 l_reschedule_time DATE;
6828
6829 l_ws_code1 VARCHAR2(50);
6830 l_ws_code2 VARCHAR2(50);
6831 l_assct_ws_code VARCHAR2(50);
6832
6833 L_LOG_DIST_FROM VARCHAR(100);
6834 L_LOG_DIST_TO VARCHAR2(100);
6835 l_prev_source_object_id NUMBER;
6836 l_prev_source_object_type_code VARCHAR2(30);
6837 l_audit_log_id NUMBER;
6838
6839 CURSOR c_task_status(p_source_object_type_code in varchar2) IS
6840 SELECT TASK_ID,
6841 DECODE(DELETED_FLAG, 'Y', 4, 3) "STATUS_ID"
6842 FROM JTF_TASKS_B
6843 WHERE SOURCE_OBJECT_TYPE_CODE = p_source_object_type_code
6844 AND ((OPEN_FLAG = 'N' AND DELETED_FLAG = 'N') OR (DELETED_FLAG = 'Y'))
6845 AND ENTITY = 'TASK';
6846
6847 TYPE NUMBER_TBL is TABLE OF NUMBER INDEX BY BINARY_INTEGER;
6848
6849 TYPE status_rec is RECORD
6850 (
6851 l_task_id_list NUMBER_TBL,
6852 l_status_id_list NUMBER_TBL
6853 );
6854
6855 l_task_status_rec status_rec;
6856
6857 l_array_size NUMBER;
6858 l_done BOOLEAN;
6859
6860 dml_errors EXCEPTION;
6861 PRAGMA exception_init(dml_errors, -24381);
6862 errors number;
6863
6864 BEGIN
6865
6866 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
6867 l_priority_code := 'LOW';
6868 l_token_str := '';
6869 l_dist_from := 'GROUP_OWNED';
6870 l_dist_to := 'INDIVIDUAL_ASSIGNED';
6871 l_array_size := 2000;
6872
6873 SAVEPOINT sync_ws_details_sp;
6874
6875 x_return_status := fnd_api.g_ret_sts_success;
6876
6877 -- Check for API Version
6878
6879 IF NOT fnd_api.compatible_api_call (
6880 l_api_version,
6881 p_api_version,
6882 l_api_name,
6883 g_pkg_name
6884 )
6885 THEN
6886 RAISE fnd_api.g_exc_unexpected_error;
6887 END IF;
6888
6889 -- Initialize Message list
6890
6891 IF fnd_api.to_boolean(p_init_msg_list)
6892 THEN
6893 FND_MSG_PUB.INITIALIZE;
6894 END IF;
6895
6896
6897 -- Set the Distribution states based on Business Rules
6898
6899 -- Get the Work_source_id
6900
6901 BEGIN
6902 l_not_valid_flag := 'N';
6903 Select ws_id, ws_type, object_code
6904 into l_ws_id, l_ws_type, l_obj_code
6905 from ieu_uwqm_work_sources_b
6906 where ws_code = p_ws_code
6907 -- and nvl(not_valid_flag, 'N') = 'N';
6908 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
6909
6910 EXCEPTION
6911 WHEN OTHERS THEN
6912
6913 -- Work Source does not exist for this Object Code
6914 l_token_str := 'WS_CODE: '||p_ws_code;
6915 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
6916 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WS_DETAILS');
6917 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
6918 fnd_msg_pub.ADD;
6919 fnd_msg_pub.Count_and_Get
6920 (
6921 p_count => x_msg_count,
6922 p_data => x_msg_data
6923 );
6924
6925 RAISE fnd_api.g_exc_error;
6926
6927 END;
6928
6929 if (l_ws_type = 'PRIMARY')
6930 then
6931 -- The Sync script works only for Association Work Source
6932 -- If a primary Work Source is passed then it will throw an exception and exit
6933 -- Work Source does not exist for this Object Code
6934 l_token_str := 'WORK_SOURCE:' ||p_ws_code;
6935 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_WORK_SOURCE');
6936 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WS_DETAILS');
6937 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
6938 fnd_msg_pub.ADD;
6939 fnd_msg_pub.Count_and_Get
6940 (
6941 p_count => x_msg_count,
6942 p_data => x_msg_data
6943 );
6944
6945 RAISE fnd_api.g_exc_error;
6946
6947
6948 elsif (l_ws_type = 'ASSOCIATION')
6949 then
6950 BEGIN
6951
6952 SELECT parent_ws_id, child_ws_id, dist_st_based_on_parent_flag , tasks_rules_function
6953 INTO l_parent_ws_id, l_child_ws_id, l_dist_st_based_on_parent , l_tasks_rules_func
6954 FROM IEU_UWQM_WS_ASSCT_PROPS
6955 WHERE ws_id = l_ws_id;
6956
6957 EXCEPTION
6958 WHEN NO_DATA_FOUND THEN
6959
6960 -- Work Source does not exist for this Object Code
6961 l_token_str := 'WS_CODE: '||p_ws_code;
6962 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
6963 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WS_DETAILS');
6964 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
6965 fnd_msg_pub.ADD;
6966 fnd_msg_pub.Count_and_Get
6967 (
6968 p_count => x_msg_count,
6969 p_data => x_msg_data
6970 );
6971
6972 RAISE fnd_api.g_exc_error;
6973
6974 END;
6975
6976 BEGIN
6977 l_not_valid_flag := 'N';
6978 SELECT object_code
6979 INTO l_parent_obj_code
6980 FROM IEU_UWQM_WORK_SOURCES_B
6981 WHERE ws_id = l_parent_ws_id
6982 -- and nvl(not_valid_flag, 'N') = 'N';
6983 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
6984
6985 EXCEPTION
6986 WHEN NO_DATA_FOUND THEN
6987
6988 -- Work Source does not exist for this Object Code
6989 l_token_str := 'WS_CODE: '||p_ws_code;
6990 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
6991 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WS_DETAILS');
6992 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
6993 fnd_msg_pub.ADD;
6994 fnd_msg_pub.Count_and_Get
6995 (
6996 p_count => x_msg_count,
6997 p_data => x_msg_data
6998 );
6999
7000 RAISE fnd_api.g_exc_error;
7001
7002 END;
7003
7004 BEGIN
7005 l_not_valid_flag := 'N';
7006 SELECT object_code
7007 INTO l_child_obj_code
7008 FROM IEU_UWQM_WORK_SOURCES_B
7009 WHERE ws_id = l_child_ws_id
7010 -- and nvl(not_valid_flag, 'N') = 'N';
7011 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
7012
7013 EXCEPTION
7014 WHEN NO_DATA_FOUND THEN
7015
7016 -- Work Source does not exist for this Object Code
7017 l_token_str := 'WS_CODE: '||p_ws_code;
7018 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
7019 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WS_DETAILS');
7020 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
7021 fnd_msg_pub.ADD;
7022 fnd_msg_pub.Count_and_Get
7023 (
7024 p_count => x_msg_count,
7025 p_data => x_msg_data
7026 );
7027
7028 RAISE fnd_api.g_exc_error;
7029
7030 END;
7031
7032
7033 end if;
7034
7035 /******************** This is not used now *****************************
7036
7037 if (l_ws_type = 'PRIMARY')
7038 then
7039
7040 for cur_rec in c_pry_ws(l_obj_code)
7041 loop
7042
7043 if (l_dist_from = 'GROUP_OWNED') and
7044 (l_dist_to = 'INDIVIDUAL_OWNED')
7045 then
7046
7047 if (cur_rec.owner_type = 'RS_GROUP')
7048 then
7049 l_distribution_status_id := 1;
7050 elsif (cur_rec.owner_type = 'RS_INDIVIDUAL')
7051 then
7052 l_distribution_status_id := 3;
7053 else
7054 l_distribution_status_id := 0;
7055 end if;
7056
7057 elsif (l_dist_from = 'GROUP_OWNED') and
7058 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
7059 then
7060
7061 if (cur_rec.owner_type = 'RS_GROUP') and
7062 ( (cur_rec.assignee_type is null) OR (cur_rec.assignee_type <> 'RS_INDIVIDUAL') )
7063 then
7064 l_distribution_status_id := 1;
7065 elsif (cur_rec.assignee_type = 'RS_INDIVIDUAL')
7066 then
7067 l_distribution_status_id := 3;
7068 else
7069 l_distribution_status_id := 0;
7070 end if;
7071
7072 elsif (l_dist_from = 'GROUP_ASSIGNED') and
7073 (l_dist_to = 'INDIVIDUAL_OWNED')
7074 then
7075
7076 if (cur_rec.assignee_type = 'RS_GROUP') and
7077 ( (cur_rec.owner_type is null) OR (cur_rec.owner_type <> 'RS_INDIVIDUAL') )
7078 then
7079 l_distribution_status_id := 1;
7080 elsif (cur_rec.owner_type= 'RS_INDIVIDUAL')
7081 then
7082 l_distribution_status_id := 3;
7083 else
7084 l_distribution_status_id := 0;
7085 end if;
7086
7087 elsif (l_dist_from = 'GROUP_ASSIGNED') and
7088 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
7089 then
7090
7091 if (cur_rec.assignee_type = 'RS_GROUP')
7092 then
7093 l_distribution_status_id := 1;
7094 elsif (cur_rec.assignee_type = 'RS_INDIVIDUAL')
7095 then
7096 l_distribution_status_id := 3;
7097 else
7098 l_distribution_status_id := 0;
7099 end if;
7100
7101 end if;
7102
7103 update ieu_uwqm_items
7104 set ws_id = l_ws_id,
7105 distribution_status_id = l_distribution_status_id
7106 where work_item_id = cur_rec.work_item_id;
7107 commit;
7108
7109 end loop;
7110
7111 elsif (l_ws_type = 'ASSOCIATION')
7112 ********************************************************************/
7113 if (l_ws_type = 'ASSOCIATION')
7114 then
7115
7116 -- Audit Logging should be done only when the Profile Option Value is Minimal, Full or Detailed
7117 -- This will be logged as an action
7118
7119 if p_audit_trail_rec.count > 0
7120 then
7121 for n in p_audit_trail_rec.first..p_audit_trail_rec.last
7122 loop
7123 l_action_key := p_audit_trail_rec(n).action_key;
7124 l_module := p_audit_trail_rec(n).module;
7125 if (l_audit_log_val = 'DETAILED')
7126 then
7127 l_workitem_comment_code1 := p_audit_trail_rec(n).workitem_comment_code1;
7128 l_workitem_comment_code2 := p_audit_trail_rec(n).workitem_comment_code2;
7129 l_workitem_comment_code3 := p_audit_trail_rec(n).workitem_comment_code3;
7130 l_workitem_comment_code4 := p_audit_trail_rec(n).workitem_comment_code4;
7131 l_workitem_comment_code5 := p_audit_trail_rec(n).workitem_comment_code5;
7132 else
7133 l_workitem_comment_code1 := null;
7134 l_workitem_comment_code2 := null;
7135 l_workitem_comment_code3 := null;
7136 l_workitem_comment_code4 := null;
7137 l_workitem_comment_code5 := null;
7138 end if;
7139 end loop;
7140 end if;
7141
7142 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL') )
7143 then
7144
7145 l_action_key := 'SYNC_ASSCT_WS';
7146 l_event_key := null;
7147 l_module := 'IEU_WR_PUB.SYNC_WS_DETAILS';
7148
7149 -- Get the values of App Distribute From and To for Audit Logging
7150 if (l_audit_log_val = 'DETAILED')
7151 then
7152 if l_tasks_rules_func is not null
7153 then
7154 l_ieu_comment_code1 := 'TASKS_RULES_FUNC ' ||l_tasks_rules_func;
7155 else
7156 l_ieu_comment_code1 := 'SYNC_PROC - IEU_WR_ITEMS.SYNC_WS_DETAILS';
7157 end if;
7158 end if;
7159 end if;
7160
7161 if l_tasks_rules_func is not null
7162 then
7163 open c_task(l_parent_obj_code);
7164 loop
7165 fetch c_task into l_task_id, l_task_number, l_customer_id, l_owner_id, l_owner_type_code,
7166 l_source_object_id, l_source_object_type_code,
7167 --l_due_date,
7168 l_planned_start_date,
7169 l_planned_end_date, l_actual_start_date, l_actual_end_date, l_scheduled_start_date, l_scheduled_end_date,
7170 l_task_type_id, l_task_status_id, l_task_name, l_importance_level, l_priority_code, l_task_priority_id;
7171 exit when c_task%notfound;
7172
7173 begin
7174 select 'SLEEP' into l_task_status
7175 from jtf_task_statuses_vl
7176 where (nvl(on_hold_flag,'N') = 'Y')
7177 and task_status_id = l_task_status_id;
7178 EXCEPTION WHEN no_data_found
7179 THEN
7180 l_task_status := 'OPEN';
7181 end;
7182
7183 begin
7184 select booking_end_date
7185 into l_due_date
7186 from jtf_task_all_assignments
7187 where task_id = l_task_id
7188 and assignee_role = 'OWNER';
7189 exception when others then
7190 -- Work Source does not exist for this Object Code
7191 l_token_str := sqlcode||' '||sqlerrm;
7192 fnd_msg_pub.ADD;
7193 fnd_msg_pub.Count_and_Get
7194 (
7195 p_count => x_msg_count,
7196 p_data => x_msg_data
7197 );
7198
7199 RAISE fnd_api.g_exc_error;
7200 end;
7201
7202 begin
7203 l_workitem_obj_code_1 := 'TASK';
7204 select count(*) into l_uwqm_count
7205 from ieu_uwqm_items
7206 -- where workitem_obj_code = 'TASK'
7207 where workitem_obj_code = l_workitem_obj_code_1
7208 and workitem_pk_id = l_task_id;
7209 exception when others then
7210 l_uwqm_count := 0;
7211 end;
7212
7213 if l_uwqm_count = 0 then
7214 l_task_data_var := 'CREATE_TASK';
7215 else
7216 l_task_data_var := 'UPDATE_TASK';
7217 end if;
7218
7219 l_tasks_data_list := SYSTEM.WR_TASKS_DATA_NST();
7220
7221 l_tasks_data_list.extend;
7222
7223 l_tasks_data_list(l_tasks_data_list.last) := SYSTEM.WR_TASKS_DATA_OBJ (
7224 l_task_data_var,
7225 l_task_id,
7226 null,
7227 l_task_number,
7228 l_task_name,
7229 l_task_type_id,
7230 l_task_status_id,
7231 l_task_priority_id,
7232 l_owner_id,
7233 l_owner_type_code,
7234 l_source_object_id,
7235 l_source_object_type_code,
7236 l_customer_id,
7237 l_date_selected,
7238 l_planned_start_date,
7239 l_planned_end_date,
7240 l_scheduled_start_date,
7241 l_scheduled_end_date,
7242 l_actual_start_date,
7243 l_actual_end_date,
7244 null,
7245 null,
7246 null);
7247
7248 l_def_data_list := SYSTEM.DEF_WR_DATA_NST();
7249
7250 l_def_data_list.extend;
7251
7252
7253 l_def_data_list(l_def_data_list.last) := SYSTEM.DEF_WR_DATA_OBJ(
7254 l_task_status,
7255 l_priority_code,
7256 l_due_date,
7257 'TASKS',
7258 null
7259 );
7260
7261 execute immediate
7262 'BEGIN '||l_tasks_rules_func ||' ( :1, :2, :3, :4 , :5); END ; '
7263 USING IN l_tasks_data_list, IN l_def_data_list , OUT l_msg_count, OUT l_msg_data, OUT l_return_status;
7264
7265 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL') )
7266 then
7267
7268 BEGIN
7269 SELECT priority_id
7270 into l_priority_id
7271 from ieu_uwqm_priorities_b
7272 where priority_code = l_priority_code;
7273 EXCEPTION
7274 when others then
7275 null;
7276 END;
7277
7278
7279 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
7280 (
7281 P_ACTION_KEY => l_action_key,
7282 P_EVENT_KEY => l_event_key,
7283 P_MODULE => l_module,
7284 P_WS_CODE => p_ws_code,
7285 P_APPLICATION_ID => 696,
7286 P_WORKITEM_PK_ID => l_task_id,
7287 P_WORKITEM_OBJ_CODE => 'TASK',
7288 P_WORK_ITEM_STATUS_PREV => null,
7289 P_WORK_ITEM_STATUS_CURR => l_task_status_id,
7290 P_OWNER_ID_PREV => null,
7291 P_OWNER_ID_CURR => l_owner_id,
7292 P_OWNER_TYPE_PREV => null,
7293 P_OWNER_TYPE_CURR => l_owner_type_code,
7294 P_ASSIGNEE_ID_PREV => null,
7295 P_ASSIGNEE_ID_CURR => null,
7296 P_ASSIGNEE_TYPE_PREV => null,
7297 P_ASSIGNEE_TYPE_CURR => null,
7298 P_SOURCE_OBJECT_ID_PREV => null,
7299 P_SOURCE_OBJECT_ID_CURR => l_source_object_id,
7300 P_SOURCE_OBJECT_TYPE_CODE_PREV => null,
7301 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_source_object_type_code,
7302 P_PARENT_WORKITEM_STATUS_PREV => null,
7303 P_PARENT_WORKITEM_STATUS_CURR => null,
7304 P_PARENT_DIST_STATUS_PREV => null,
7305 P_PARENT_DIST_STATUS_CURR => null,
7306 P_WORKITEM_DIST_STATUS_PREV => null,
7307 P_WORKITEM_DIST_STATUS_CURR => null,
7308 P_PRIORITY_PREV => null,
7309 P_PRIORITY_CURR => l_priority_id,
7310 P_DUE_DATE_PREV => null,
7311 P_DUE_DATE_CURR => l_due_date,
7312 P_RESCHEDULE_TIME_PREV => sysdate,
7313 P_RESCHEDULE_TIME_CURR => sysdate,
7314 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
7315 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
7316 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
7317 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
7318 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
7319 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
7320 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
7321 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
7322 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
7323 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
7324 P_STATUS => l_return_status,
7325 P_ERROR_CODE => l_msg_data ,
7326 X_AUDIT_LOG_ID => l_audit_log_id,
7327 X_MSG_DATA => l_msg_data,
7328 X_RETURN_STATUS => l_return_status);
7329
7330
7331 end if;
7332
7333 end loop;
7334 close c_task;
7335 else
7336
7337 for cur_rec in c_assct_ws(l_parent_obj_code, l_child_obj_code)
7338 loop
7339
7340 if (l_dist_st_based_on_parent = 'Y')
7341 then
7342 BEGIN
7343 SELECT distribution_status_id, status_id
7344 INTO l_parent_dist_status, l_parent_status_id
7345 FROM ieu_uwqm_items
7346 WHERE workitem_pk_id = cur_rec.source_object_id
7347 AND workitem_obj_code = cur_rec.source_object_type_code;
7348 EXCEPTION
7349 WHEN OTHERS THEN
7350 l_parent_dist_status := null;
7351 END;
7352 end if;
7353
7354 -- If the parent is not distributed, then this item will be in "On-Hold/Unavailable" status
7355 -- else set the status based on distribute_from and distribute_to
7356
7357 if (l_parent_status_id = 3)
7358 then
7359
7360 l_set_dist_id_flag := 'T';
7361
7362 else
7363
7364 if (l_parent_dist_status <> 3)
7365 then
7366
7367 l_distribution_status_id := 0;
7368
7369 else
7370
7371 l_set_dist_id_flag := 'T';
7372
7373 end if; /* parent_dist_status */
7374
7375 end if; /* l_parent_status_id */
7376
7377 if (l_set_dist_id_flag = 'T')
7378 then
7379
7380 if (l_dist_from = 'GROUP_OWNED') and
7381 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
7382 then
7383 if (cur_rec.owner_type = 'RS_GROUP') and
7384 ( (cur_rec.assignee_type is null) OR (cur_rec.assignee_type <> 'RS_INDIVIDUAL') )
7385 then
7386 l_distribution_status_id := 1;
7387 elsif (cur_rec.assignee_type = 'RS_INDIVIDUAL')
7388 then
7389 l_distribution_status_id := 3;
7390 else
7391 l_distribution_status_id := 0;
7392 end if;
7393 end if;
7394
7395 /* if (l_dist_from = 'GROUP_OWNED') and
7396 (l_dist_to = 'INDIVIDUAL_OWNED')
7397 then
7398
7399 if (cur_rec.owner_type = 'RS_GROUP')
7400 then
7401 l_distribution_status_id := 1;
7402 elsif (cur_rec.owner_type = 'RS_INDIVIDUAL')
7403 then
7404 l_distribution_status_id := 3;
7405 else
7406 l_distribution_status_id := 0;
7407 end if;
7408
7409 elsif (l_dist_from = 'GROUP_OWNED') and
7410 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
7411 then
7412
7413 if (cur_rec.owner_type = 'RS_GROUP') and
7414 ( (cur_rec.assignee_type is null) OR (cur_rec.assignee_type <> 'RS_INDIVIDUAL') )
7415 then
7416 l_distribution_status_id := 1;
7417 elsif (cur_rec.assignee_type = 'RS_INDIVIDUAL')
7418 then
7419 l_distribution_status_id := 3;
7420 else
7421 l_distribution_status_id := 0;
7422 end if;
7423
7424 elsif (l_dist_from = 'GROUP_ASSIGNED') and
7425 (l_dist_to = 'INDIVIDUAL_OWNED')
7426 then
7427
7428 if (cur_rec.assignee_type = 'RS_GROUP') and
7429 ( (cur_rec.owner_type is null) OR (cur_rec.owner_type <> 'RS_INDIVIDUAL') )
7430 then
7431 l_distribution_status_id := 1;
7432 elsif (cur_rec.owner_type = 'RS_INDIVIDUAL')
7433 then
7434 l_distribution_status_id := 3;
7435 else
7436 l_distribution_status_id := 0;
7437 end if;
7438
7439 elsif (l_dist_from = 'GROUP_ASSIGNED') and
7440 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
7441 then
7442
7443 if (cur_rec.assignee_type = 'RS_GROUP')
7444 then
7445 l_distribution_status_id := 1;
7446 elsif (cur_rec.assignee_type = 'RS_INDIVIDUAL')
7447 then
7448 l_distribution_status_id := 3;
7449 else
7450 l_distribution_status_id := 0;
7451 end if;
7452
7453 end if;
7454 */
7455
7456 end if; /* l_set_dist_id_flag */
7457
7458
7459 update ieu_uwqm_items
7460 set ws_id = l_ws_id,
7461 distribution_status_id = l_distribution_status_id
7462 where work_item_id = cur_rec.work_item_id;
7463 commit;
7464
7465 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL') )
7466 then
7467
7468
7469 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
7470 (
7471 P_ACTION_KEY => l_action_key,
7472 P_EVENT_KEY => l_event_key,
7473 P_MODULE => l_module,
7474 P_WS_CODE => p_ws_code,
7475 P_APPLICATION_ID => 696,
7476 P_WORKITEM_PK_ID => cur_rec.workitem_pk_id,
7477 P_WORKITEM_OBJ_CODE => cur_rec.workitem_obj_code,
7478 P_WORK_ITEM_STATUS_PREV => null,
7479 P_WORK_ITEM_STATUS_CURR => cur_rec.status_id,
7480 P_OWNER_ID_PREV => null,
7481 P_OWNER_ID_CURR => cur_rec.owner_id,
7482 P_OWNER_TYPE_PREV => null,
7483 P_OWNER_TYPE_CURR => cur_rec.owner_type,
7484 P_ASSIGNEE_ID_PREV => null,
7485 P_ASSIGNEE_ID_CURR => cur_rec.assignee_id,
7486 P_ASSIGNEE_TYPE_PREV => null,
7487 P_ASSIGNEE_TYPE_CURR => cur_rec.assignee_type,
7488 P_SOURCE_OBJECT_ID_PREV => null,
7489 P_SOURCE_OBJECT_ID_CURR => cur_rec.source_object_id,
7490 P_SOURCE_OBJECT_TYPE_CODE_PREV => null,
7491 P_SOURCE_OBJECT_TYPE_CODE_CURR => cur_rec.source_object_type_code,
7492 P_PARENT_WORKITEM_STATUS_PREV => null,
7493 P_PARENT_WORKITEM_STATUS_CURR => null,
7494 P_PARENT_DIST_STATUS_PREV => null,
7495 P_PARENT_DIST_STATUS_CURR => null,
7496 P_WORKITEM_DIST_STATUS_PREV => null,
7497 P_WORKITEM_DIST_STATUS_CURR => null,
7498 P_PRIORITY_PREV => null,
7499 P_PRIORITY_CURR => cur_rec.priority_id,
7500 P_DUE_DATE_PREV => null,
7501 P_DUE_DATE_CURR => cur_rec.due_date,
7502 P_RESCHEDULE_TIME_PREV => null,
7503 P_RESCHEDULE_TIME_CURR => sysdate,
7504 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
7505 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
7506 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
7507 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
7508 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
7509 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
7510 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
7511 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
7512 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
7513 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
7514 P_STATUS => l_return_status,
7515 P_ERROR_CODE => l_msg_data ,
7516 X_AUDIT_LOG_ID => l_audit_log_id,
7517 X_MSG_DATA => l_msg_data,
7518 X_RETURN_STATUS => l_return_status);
7519
7520 end if;
7521
7522 end loop; /* cur_rec */
7523 end if;
7524
7525 -- Update Close and Delete Statuses
7526
7527 open c_task_status(l_parent_obj_code);
7528 loop
7529
7530 FETCH c_task_status
7531 BULK COLLECT INTO
7532 l_task_status_rec.l_task_id_list,
7533 l_task_status_rec.l_status_id_list
7534 LIMIT l_array_size;
7535
7536 l_done := c_task_status%NOTFOUND;
7537
7538 BEGIN
7539 -- fnd_file.put_line(FND_FILE.LOG,'Begin update');
7540 FORALL i in 1..l_task_status_rec.l_task_id_list.COUNT SAVE EXCEPTIONS
7541 update IEU_UWQM_ITEMS
7542 set status_id = l_task_status_rec.l_status_id_list(i),
7543 LAST_UPDATED_BY = FND_GLOBAL.USER_ID,
7544 LAST_UPDATE_DATE = SYSDATE,
7545 LAST_UPDATE_LOGIN = FND_GLOBAL.LOGIN_ID
7546 where workitem_obj_code = 'TASK'
7547 and workitem_pk_id = l_task_status_rec.l_task_id_list(i)
7548 and source_object_type_code = l_parent_obj_code;
7549
7550 EXCEPTION
7551 WHEN dml_errors THEN
7552 errors := SQL%BULK_EXCEPTIONS.COUNT;
7553 FOR i IN 1..errors LOOP
7554
7555 fnd_file.new_line(FND_FILE.LOG, 1);
7556 FND_MESSAGE.SET_NAME('IEU', 'IEU_UPDATE_UWQM_ITEM_FAILED');
7557 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME', 'IEU_WR_PUB.SYNC_WS_DETAILS');
7558 FND_MESSAGE.SET_TOKEN('DETAILS', ' WORKITEM_PK_ID:'||l_task_status_rec.l_task_id_list(SQL%BULK_EXCEPTIONS(i).ERROR_INDEX) ||' Error: '||SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
7559
7560 fnd_file.put_line(FND_FILE.LOG,SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
7561 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
7562 fnd_msg_pub.ADD;
7563 fnd_msg_pub.Count_and_Get
7564 (
7565 p_count => x_msg_count,
7566 p_data => x_msg_data
7567 );
7568 END LOOP;
7569 RAISE fnd_api.g_exc_error;
7570 END;
7571
7572 l_task_status_rec.l_task_id_list.DELETE;
7573 l_task_status_rec.l_status_id_list.DELETE;
7574
7575 exit when (l_done);
7576
7577 end loop;
7578
7579 close c_task_status;
7580
7581 end if;
7582
7583 IF FND_API.TO_BOOLEAN( p_commit )
7584 THEN
7585 COMMIT WORK;
7586 END IF;
7587
7588
7589 EXCEPTION
7590
7591 WHEN fnd_api.g_exc_error THEN
7592
7593 ROLLBACK TO sync_ws_details_sp;
7594 x_return_status := fnd_api.g_ret_sts_error;
7595
7596 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL') )
7597 then
7598
7599 l_action_key := 'SYNC_ASSCT_WS';
7600 l_event_key := null;
7601 l_module := 'IEU_WR_PUB.SYNC_WS_DETAILS';
7602
7603 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
7604 (
7605 P_ACTION_KEY => l_action_key,
7606 P_EVENT_KEY => l_event_key,
7607 P_MODULE => l_module,
7608 P_WS_CODE => p_ws_code,
7609 P_APPLICATION_ID => 696,
7610 P_WORKITEM_PK_ID => null,
7611 P_WORKITEM_OBJ_CODE => null,
7612 P_WORK_ITEM_STATUS_PREV => null,
7613 P_WORK_ITEM_STATUS_CURR => null,
7614 P_OWNER_ID_PREV => null,
7615 P_OWNER_ID_CURR => null,
7616 P_OWNER_TYPE_PREV => null,
7617 P_OWNER_TYPE_CURR => null,
7618 P_ASSIGNEE_ID_PREV => null,
7619 P_ASSIGNEE_ID_CURR => null,
7620 P_ASSIGNEE_TYPE_PREV => null,
7621 P_ASSIGNEE_TYPE_CURR => null,
7622 P_SOURCE_OBJECT_ID_PREV => null,
7623 P_SOURCE_OBJECT_ID_CURR => null,
7624 P_SOURCE_OBJECT_TYPE_CODE_PREV => null,
7625 P_SOURCE_OBJECT_TYPE_CODE_CURR => null,
7626 P_PARENT_WORKITEM_STATUS_PREV => null,
7627 P_PARENT_WORKITEM_STATUS_CURR => null,
7628 P_PARENT_DIST_STATUS_PREV => null,
7629 P_PARENT_DIST_STATUS_CURR => null,
7630 P_WORKITEM_DIST_STATUS_PREV => null,
7631 P_WORKITEM_DIST_STATUS_CURR => null,
7632 P_PRIORITY_PREV => null,
7633 P_PRIORITY_CURR => null,
7634 P_DUE_DATE_PREV => null,
7635 P_DUE_DATE_CURR => null,
7636 P_RESCHEDULE_TIME_PREV => null,
7637 P_RESCHEDULE_TIME_CURR => null,
7638 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
7639 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
7640 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
7641 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
7642 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
7643 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
7644 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
7645 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
7646 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
7647 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
7648 P_STATUS => x_return_status,
7649 P_ERROR_CODE => x_msg_data ,
7650 X_AUDIT_LOG_ID => l_audit_log_id,
7651 X_MSG_DATA => l_msg_data,
7652 X_RETURN_STATUS => l_return_status); commit;
7653
7654 end if;
7655 fnd_msg_pub.Count_and_Get
7656 (
7657 p_count => x_msg_count,
7658 p_data => x_msg_data
7659 );
7660
7661 WHEN fnd_api.g_exc_unexpected_error THEN
7662
7663 ROLLBACK TO sync_ws_details_sp;
7664 x_return_status := fnd_api.g_ret_sts_unexp_error;
7665
7666
7667 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL') )
7668 then
7669
7670 l_action_key := 'SYNC_ASSCT_WS';
7671 l_event_key := null;
7672 l_module := 'IEU_WR_PUB.SYNC_WS_DETAILS';
7673
7674 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
7675 (
7676 P_ACTION_KEY => l_action_key,
7677 P_EVENT_KEY => l_event_key,
7678 P_MODULE => l_module,
7679 P_WS_CODE => p_ws_code,
7680 P_APPLICATION_ID => 696,
7681 P_WORKITEM_PK_ID => null,
7682 P_WORKITEM_OBJ_CODE => null,
7683 P_WORK_ITEM_STATUS_PREV => null,
7684 P_WORK_ITEM_STATUS_CURR => null,
7685 P_OWNER_ID_PREV => null,
7686 P_OWNER_ID_CURR => null,
7687 P_OWNER_TYPE_PREV => null,
7688 P_OWNER_TYPE_CURR => null,
7689 P_ASSIGNEE_ID_PREV => null,
7690 P_ASSIGNEE_ID_CURR => null,
7691 P_ASSIGNEE_TYPE_PREV => null,
7692 P_ASSIGNEE_TYPE_CURR => null,
7693 P_SOURCE_OBJECT_ID_PREV => null,
7694 P_SOURCE_OBJECT_ID_CURR => null,
7695 P_SOURCE_OBJECT_TYPE_CODE_PREV => null,
7696 P_SOURCE_OBJECT_TYPE_CODE_CURR => null,
7697 P_PARENT_WORKITEM_STATUS_PREV => null,
7698 P_PARENT_WORKITEM_STATUS_CURR => null,
7699 P_PARENT_DIST_STATUS_PREV => null,
7700 P_PARENT_DIST_STATUS_CURR => null,
7701 P_WORKITEM_DIST_STATUS_PREV => null,
7702 P_WORKITEM_DIST_STATUS_CURR => null,
7703 P_PRIORITY_PREV => null,
7704 P_PRIORITY_CURR => null,
7705 P_DUE_DATE_PREV => null,
7706 P_DUE_DATE_CURR => null,
7707 P_RESCHEDULE_TIME_PREV => null,
7708 P_RESCHEDULE_TIME_CURR => null,
7709 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
7710 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
7711 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
7712 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
7713 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
7714 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
7715 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
7716 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
7717 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
7718 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
7719 P_STATUS => x_return_status,
7720 P_ERROR_CODE => x_msg_data ,
7721 X_AUDIT_LOG_ID => l_audit_log_id,
7722 X_MSG_DATA => l_msg_data,
7723 X_RETURN_STATUS => l_return_status); commit;
7724
7725 end if;
7726
7727 fnd_msg_pub.Count_and_Get
7728 (
7729 p_count => x_msg_count,
7730 p_data => x_msg_data
7731 );
7732
7733 WHEN OTHERS THEN
7734
7735 ROLLBACK TO sync_ws_details_sp;
7736 x_return_status := fnd_api.g_ret_sts_unexp_error;
7737
7738
7739 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL') )
7740 then
7741
7742 l_action_key := 'SYNC_ASSCT_WS';
7743 l_event_key := null;
7744 l_module := 'IEU_WR_PUB.SYNC_WS_DETAILS';
7745
7746 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
7747 (
7748 P_ACTION_KEY => l_action_key,
7749 P_EVENT_KEY => l_event_key,
7750 P_MODULE => l_module,
7751 P_WS_CODE => p_ws_code,
7752 P_APPLICATION_ID => 696,
7753 P_WORKITEM_PK_ID => null,
7754 P_WORKITEM_OBJ_CODE => null,
7755 P_WORK_ITEM_STATUS_PREV => null,
7756 P_WORK_ITEM_STATUS_CURR => null,
7757 P_OWNER_ID_PREV => null,
7758 P_OWNER_ID_CURR => null,
7759 P_OWNER_TYPE_PREV => null,
7760 P_OWNER_TYPE_CURR => null,
7761 P_ASSIGNEE_ID_PREV => null,
7762 P_ASSIGNEE_ID_CURR => null,
7763 P_ASSIGNEE_TYPE_PREV => null,
7764 P_ASSIGNEE_TYPE_CURR => null,
7765 P_SOURCE_OBJECT_ID_PREV => null,
7766 P_SOURCE_OBJECT_ID_CURR => null,
7767 P_SOURCE_OBJECT_TYPE_CODE_PREV => null,
7768 P_SOURCE_OBJECT_TYPE_CODE_CURR => null,
7769 P_PARENT_WORKITEM_STATUS_PREV => null,
7770 P_PARENT_WORKITEM_STATUS_CURR => null,
7771 P_PARENT_DIST_STATUS_PREV => null,
7772 P_PARENT_DIST_STATUS_CURR => null,
7773 P_WORKITEM_DIST_STATUS_PREV => null,
7774 P_WORKITEM_DIST_STATUS_CURR => null,
7775 P_PRIORITY_PREV => null,
7776 P_PRIORITY_CURR => null,
7777 P_DUE_DATE_PREV => null,
7778 P_DUE_DATE_CURR => null,
7779 P_RESCHEDULE_TIME_PREV => null,
7780 P_RESCHEDULE_TIME_CURR => null,
7781 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
7782 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
7783 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
7784 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
7785 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
7786 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
7787 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
7788 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
7789 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
7790 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
7791 P_STATUS => x_return_status,
7792 P_ERROR_CODE => x_msg_data ,
7793 X_AUDIT_LOG_ID => l_audit_log_id,
7794 X_MSG_DATA => l_msg_data,
7795 X_RETURN_STATUS => l_return_status); commit;
7796
7797 end if;
7798
7799 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7800 THEN
7801
7802 fnd_msg_pub.Count_and_Get
7803 (
7804 p_count => x_msg_count,
7805 p_data => x_msg_data
7806 );
7807
7808 END IF;
7809
7810 END SYNC_WS_DETAILS;
7811
7812 PROCEDURE GET_NEXT_WORK_FOR_APPS
7813 ( p_api_version IN NUMBER,
7814 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
7815 p_commit IN VARCHAR2 DEFAULT NULL,
7816 p_resource_id IN NUMBER,
7817 p_language IN VARCHAR2,
7818 p_source_lang IN VARCHAR2,
7819 p_ws_det_list IN IEU_UWQ_GET_NEXT_WORK_PVT.IEU_WS_DETAILS_LIST,
7820 p_audit_trail_rec IN SYSTEM.WR_AUDIT_TRAIL_NST,
7821 x_uwqm_workitem_data OUT NOCOPY IEU_FRM_PVT.T_IEU_MEDIA_DATA,
7822 x_msg_count OUT NOCOPY NUMBER,
7823 x_msg_data OUT NOCOPY VARCHAR2,
7824 x_return_status OUT NOCOPY VARCHAR2) IS
7825
7826 l_dist_from_where VARCHAR2(4000);
7827 l_dist_to_where VARCHAR2(4000);
7828
7829 l_api_version CONSTANT NUMBER := 1.0;
7830 l_api_name CONSTANT VARCHAR2(30) := 'GET_NEXT_WORK_FOR_APPS';
7831
7832 l_token_str VARCHAR2(4000);
7833
7834 l_ws_id NUMBER;
7835 l_ws_type IEU_UWQM_WORK_SOURCES_B.WS_TYPE%TYPE;
7836 l_dist_from IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_FROM%TYPE;
7837 l_dist_to IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_TO%TYPE;
7838 l_obj_code IEU_UWQM_WORK_SOURCES_B.OBJECT_CODE%TYPE;
7839
7840 -- Audit Log
7841 l_action_key VARCHAR2(2000);
7842 l_event_key VARCHAR2(2000);
7843 l_module VARCHAR2(2000);
7844 l_curr_ws_code VARCHAR2(2000);
7845 l_application_id NUMBER;
7846 l_prev_status_id NUMBER;
7847 l_prev_owner_id NUMBER;
7848 l_prev_owner_type VARCHAR2(2000);
7849 l_prev_assignee_id NUMBER;
7850 l_prev_assignee_type VARCHAR2(2000);
7851 l_prev_distribution_status_id NUMBER;
7852 l_prev_priority_id NUMBER;
7853 l_prev_due_date DATE;
7854 l_prev_reschedule_time DATE;
7855 l_ieu_comment_code1 VARCHAR2(2000);
7856 l_ieu_comment_code2 VARCHAR2(2000);
7857 l_ieu_comment_code3 VARCHAR2(2000);
7858 l_ieu_comment_code4 VARCHAR2(2000);
7859 l_ieu_comment_code5 VARCHAR2(2000);
7860 l_workitem_comment_code1 VARCHAR2(2000);
7861 l_workitem_comment_code2 VARCHAR2(2000);
7862 l_workitem_comment_code3 VARCHAR2(2000);
7863 l_workitem_comment_code4 VARCHAR2(2000);
7864 l_workitem_comment_code5 VARCHAR2(2000);
7865
7866 l_ws_code1 VARCHAR2(50);
7867 l_ws_code2 VARCHAR2(50);
7868 l_assct_ws_code VARCHAR2(50);
7869 L_LOG_DIST_FROM VARCHAR(100);
7870 L_LOG_DIST_TO VARCHAR2(100);
7871 l_msg_data VARCHAR2(4000);
7872 l_return_status VARCHAR2(10);
7873 l_message varchar2(4000);
7874 l_prev_source_object_id NUMBER;
7875 l_prev_source_object_type_code VARCHAR2(30);
7876 l_workitem_pk_id NUMBER;
7877 l_workitem_obj_code VARCHAR2(50);
7878 l_owner_id NUMBER;
7879 l_owner_type VARCHAR2(500);
7880 l_assignee_id NUMBER;
7881 l_assignee_type VARCHAR2(500);
7882 l_priority_id NUMBER;
7883 l_due_date DATE;
7884 l_source_object_id NUMBER;
7885 l_source_object_type_code VARCHAR2(500);
7886 l_workitem_status_id NUMBER;
7887 l_dist_status_id NUMBER;
7888 l_reschedule_time DATE;
7889 l_audit_log_id NUMBER;
7890 l_bindvar_from_list IEU_UWQ_GET_NEXT_WORK_PVT.IEU_UWQ_BINDVAR_LIST;
7891 l_bindvar_to_list IEU_UWQ_GET_NEXT_WORK_PVT.IEU_UWQ_BINDVAR_LIST;
7892
7893
7894 BEGIN
7895
7896 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
7897 l_token_str := '';
7898 l_dist_from := 'GROUP_OWNED';
7899 l_dist_to := 'INDIVIDUAL_ASSIGNED';
7900 SAVEPOINT next_work_for_apps;
7901
7902 x_return_status := fnd_api.g_ret_sts_success;
7903
7904 -- Check for API Version
7905
7906 IF NOT fnd_api.compatible_api_call (
7907 l_api_version,
7908 p_api_version,
7909 l_api_name,
7910 g_pkg_name
7911 )
7912 THEN
7913 RAISE fnd_api.g_exc_unexpected_error;
7914 END IF;
7915
7916 -- Initialize Message list
7917
7918 IF fnd_api.to_boolean(p_init_msg_list)
7919 THEN
7920 FND_MSG_PUB.INITIALIZE;
7921 END IF;
7922
7923
7924 for i in p_ws_det_list.first..p_ws_det_list.last
7925 loop
7926
7927 --dbms_output.put_line('ws_code : '||p_ws_det_list(i).ws_code);
7928 BEGIN
7929 l_not_valid_flag := 'N';
7930 Select ws_id, ws_type, object_code
7931 into l_ws_id, l_ws_type, l_obj_code
7932 from ieu_uwqm_work_sources_b
7933 where ws_code = p_ws_det_list(i).ws_code
7934 -- and nvl(not_valid_flag, 'N') = 'N';
7935 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
7936
7937 EXCEPTION
7938 WHEN OTHERS THEN
7939
7940 -- Work Source does not exist for this Object Code
7941 l_token_str := 'WS_CODE: '||p_ws_det_list(i).ws_code;
7942 FND_MESSAGE.SET_NAME('IEU', 'GET_NEXT_WORK_FOR_APPS');
7943 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','GET_NEXT_WORK_FOR_APPS');
7944 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
7945 fnd_msg_pub.ADD;
7946 fnd_msg_pub.Count_and_Get
7947 (
7948 p_count => x_msg_count,
7949 p_data => x_msg_data
7950 );
7951
7952 RAISE fnd_api.g_exc_error;
7953
7954 END;
7955
7956 end loop;
7957
7958 -- Get the extra where clause for Distribute_from and distribute_to based on the ws_code
7959
7960 IEU_UWQ_GET_NEXT_WORK_PVT.GET_WS_WHERE_CLAUSE
7961 (p_type => 'DELIVER',
7962 p_ws_det_list => p_ws_det_list,
7963 p_resource_id => p_resource_id,
7964 x_dist_from_where => l_dist_from_where,
7965 x_dist_to_where => l_dist_to_where,
7966 x_bindvar_from_list => l_bindvar_from_list,
7967 x_bindvar_to_list => l_bindvar_to_list);
7968
7969 --insert into p_temp(msg) values ('from: '||l_dist_from_where); commit;
7970 --insert into p_temp(msg) values ('from: '||l_dist_to_where); commit;
7971
7972 BEGIN
7973 IEU_UWQ_GET_NEXT_WORK_PVT.DISTRIBUTE_AND_DELIVER_WR_ITEM
7974 ( p_api_version => p_api_version,
7975 p_resource_id => p_resource_id,
7976 p_language => p_language,
7977 p_source_lang => p_source_lang,
7978 p_dist_from_extra_where_clause => l_dist_from_where,
7979 p_dist_to_extra_where_clause => l_dist_to_where,
7980 p_bindvar_from_list => l_bindvar_from_list,
7981 p_bindvar_to_list => l_bindvar_to_list,
7982 x_uwqm_workitem_data => x_uwqm_workitem_data,
7983 x_msg_count => x_msg_count,
7984 x_msg_data => x_msg_data,
7985 x_return_status => x_return_status);
7986 EXCEPTION
7987 WHEN OTHERS THEN
7988 l_msg_data := SQLCODE||SQLERRM;
7989 --dbms_output.put_line(SQLCODE||' '||SQLERRM); commit;
7990 END;
7991 -- Audit Logging should be done only when the Profile Option Value is Minimal, Full or Detailed
7992 -- This will be logged as an action
7993 --insert into p_temp(msg) values ('ret sts: '||x_return_status); commit;
7994
7995 if x_uwqm_workitem_data.count > 0
7996 then
7997 for j in x_uwqm_workitem_data.first .. x_uwqm_workitem_data.last
7998 loop
7999 if (x_uwqm_workitem_data(j).param_name = 'WORKITEM_PK_ID')
8000 then
8001 l_workitem_pk_id := x_uwqm_workitem_data(j).param_value;
8002 end if;
8003 if (x_uwqm_workitem_data(j).param_name = 'WORKITEM_OBJ_CODE')
8004 then
8005 l_workitem_obj_code := x_uwqm_workitem_data(j).param_value;
8006 end if;
8007 if (x_uwqm_workitem_data(j).param_name = 'PRIORITY_ID')
8008 then
8009 l_priority_id := x_uwqm_workitem_data(j).param_value;
8010 end if;
8011 if (x_uwqm_workitem_data(j).param_name = 'DUE_DATE')
8012 then
8013 l_due_date := x_uwqm_workitem_data(j).param_value;
8014 end if;
8015 if (x_uwqm_workitem_data(j).param_name = 'OWNER_ID')
8016 then
8017 l_owner_id := x_uwqm_workitem_data(j).param_value;
8018 end if;
8019 if (x_uwqm_workitem_data(j).param_name = 'OWNER_TYPE')
8020 then
8021 l_owner_type := x_uwqm_workitem_data(j).param_value;
8022 end if;
8023 if (x_uwqm_workitem_data(j).param_name = 'ASSIGNEE_ID')
8024 then
8025 l_assignee_id := x_uwqm_workitem_data(j).param_value;
8026 end if;
8027 if (x_uwqm_workitem_data(j).param_name = 'ASSIGNEE_TYPE')
8028 then
8029 l_assignee_type := x_uwqm_workitem_data(j).param_value;
8030 end if;
8031 if (x_uwqm_workitem_data(j).param_name = 'SOURCE_OBJECT_ID')
8032 then
8033 l_source_object_id := x_uwqm_workitem_data(j).param_value;
8034 end if;
8035 if (x_uwqm_workitem_data(j).param_name = 'SOURCE_OBJECT_TYPE_CODE')
8036 then
8037 l_source_object_type_code := x_uwqm_workitem_data(j).param_value;
8038 end if;
8039 if (x_uwqm_workitem_data(j).param_name = 'STATUS_ID')
8040 then
8041 l_workitem_status_id := x_uwqm_workitem_data(j).param_value;
8042 end if;
8043 end loop;
8044 end if;
8045
8046 BEGIN
8047
8048 SELECT distribution_status_id, reschedule_time, due_date
8049 INTO l_dist_status_id, l_reschedule_time, l_due_date
8050 FROM ieu_uwqm_items
8051 WHERE workitem_pk_id = l_workitem_pk_id
8052 AND workitem_obj_code = l_workitem_obj_code;
8053 EXCEPTION
8054 when others then
8055 null;
8056 END;
8057 if p_audit_trail_rec.count > 0
8058 then
8059 for n in p_audit_trail_rec.first..p_audit_trail_rec.last
8060 loop
8061 l_action_key := p_audit_trail_rec(n).action_key;
8062 l_module := p_audit_trail_rec(n).module;
8063 if (l_audit_log_val = 'DETAILED')
8064 then
8065 l_workitem_comment_code1 := p_audit_trail_rec(n).workitem_comment_code1;
8066 l_workitem_comment_code2 := p_audit_trail_rec(n).workitem_comment_code2;
8067 l_workitem_comment_code3 := p_audit_trail_rec(n).workitem_comment_code3;
8068 l_workitem_comment_code4 := p_audit_trail_rec(n).workitem_comment_code4;
8069 l_workitem_comment_code5 := p_audit_trail_rec(n).workitem_comment_code5;
8070 else
8071 l_workitem_comment_code1 := null;
8072 l_workitem_comment_code2 := null;
8073 l_workitem_comment_code3 := null;
8074 l_workitem_comment_code4 := null;
8075 l_workitem_comment_code5 := null;
8076 end if;
8077 end loop;
8078 end if;
8079 --insert into p_temp(msg) values ('audit log'); commit;
8080
8081 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL') )
8082 then
8083
8084 l_action_key := 'DELIVERY';
8085 l_event_key := null;
8086 l_module := 'IEU_WR_PUB.GET_NEXT_WORK_FOR_APPS';
8087
8088 if x_msg_count > 0
8089 then
8090 FOR l_index IN 1..x_msg_count LOOP
8091 l_message := l_message || FND_MSG_PUB.Get(p_msg_index => l_index,p_encoded => 'F');
8092 END LOOP;
8093 end if;
8094
8095 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
8096 (
8097 P_ACTION_KEY => l_action_key,
8098 P_EVENT_KEY => l_event_key,
8099 P_MODULE => l_module,
8100 P_WS_CODE => null,
8101 P_APPLICATION_ID => 696,
8102 P_WORKITEM_PK_ID => l_workitem_pk_id,
8103 P_WORKITEM_OBJ_CODE => l_workitem_obj_code,
8104 P_WORK_ITEM_STATUS_PREV => l_workitem_status_id,
8105 P_WORK_ITEM_STATUS_CURR => l_workitem_status_id,
8106 P_OWNER_ID_PREV => l_owner_id,
8107 P_OWNER_ID_CURR => l_owner_id,
8108 P_OWNER_TYPE_PREV => l_owner_type,
8109 P_OWNER_TYPE_CURR => l_owner_type,
8110 P_ASSIGNEE_ID_PREV => l_assignee_id,
8111 P_ASSIGNEE_ID_CURR => l_assignee_id,
8112 P_ASSIGNEE_TYPE_PREV => l_assignee_type,
8113 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
8114 P_SOURCE_OBJECT_ID_PREV => l_source_object_id,
8115 P_SOURCE_OBJECT_ID_CURR => l_source_object_id,
8116 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_source_object_type_code,
8117 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_source_object_type_code,
8118 P_PARENT_WORKITEM_STATUS_PREV => null,
8119 P_PARENT_WORKITEM_STATUS_CURR => null,
8120 P_PARENT_DIST_STATUS_PREV => null,
8121 P_PARENT_DIST_STATUS_CURR => null,
8122 P_WORKITEM_DIST_STATUS_PREV => l_dist_status_id,
8123 P_WORKITEM_DIST_STATUS_CURR => l_dist_status_id,
8124 P_PRIORITY_PREV => l_priority_id,
8125 P_PRIORITY_CURR => l_priority_id,
8126 P_DUE_DATE_PREV => l_due_date,
8127 P_DUE_DATE_CURR => l_due_date,
8128 P_RESCHEDULE_TIME_PREV => l_reschedule_time,
8129 P_RESCHEDULE_TIME_CURR => l_reschedule_time,
8130 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
8131 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
8132 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
8133 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
8134 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
8135 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
8136 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
8137 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
8138 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
8139 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
8140 P_STATUS => x_return_status,
8141 P_ERROR_CODE => l_message,
8142 X_AUDIT_LOG_ID => l_audit_log_id,
8143 X_MSG_DATA => l_msg_data,
8144 X_RETURN_STATUS => l_return_status);
8145 commit;
8146 --insert into p_temp(msg) values ('audit log2'); commit;
8147 end if;
8148 -- insert into p_temp(msg) values ('commit work'); commit;
8149 IF FND_API.TO_BOOLEAN( p_commit )
8150 THEN
8151 COMMIT WORK;
8152 END IF;
8153
8154 EXCEPTION
8155
8156 WHEN fnd_api.g_exc_error THEN
8157
8158 ROLLBACK TO next_work_for_apps;
8159 x_return_status := fnd_api.g_ret_sts_error;
8160
8161 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL') )
8162 then
8163
8164 l_action_key := 'DELIVERY';
8165 l_event_key := null;
8166 l_module := 'IEU_WR_PUB.GET_NEXT_WORK_FOR_APPS';
8167
8168 FOR l_index IN 1..x_msg_count LOOP
8169 l_msg_data := l_msg_data || FND_MSG_PUB.Get(p_msg_index => l_index,p_encoded => 'F');
8170 END LOOP;
8171
8172 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
8173 (
8174 P_ACTION_KEY => l_action_key,
8175 P_EVENT_KEY => l_event_key,
8176 P_MODULE => l_module,
8177 P_WS_CODE => null,
8178 P_APPLICATION_ID => 696,
8179 P_WORKITEM_PK_ID => l_workitem_pk_id,
8180 P_WORKITEM_OBJ_CODE => l_workitem_obj_code,
8181 P_WORK_ITEM_STATUS_PREV => l_workitem_status_id,
8182 P_WORK_ITEM_STATUS_CURR => l_workitem_status_id,
8183 P_OWNER_ID_PREV => l_owner_id,
8184 P_OWNER_ID_CURR => l_owner_id,
8185 P_OWNER_TYPE_PREV => l_owner_type,
8186 P_OWNER_TYPE_CURR => l_owner_type,
8187 P_ASSIGNEE_ID_PREV => l_assignee_id,
8188 P_ASSIGNEE_ID_CURR => l_assignee_id,
8189 P_ASSIGNEE_TYPE_PREV => l_assignee_type,
8190 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
8191 P_SOURCE_OBJECT_ID_PREV => l_source_object_id,
8192 P_SOURCE_OBJECT_ID_CURR => l_source_object_id,
8193 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_source_object_type_code,
8194 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_source_object_type_code,
8195 P_PARENT_WORKITEM_STATUS_PREV => null,
8196 P_PARENT_WORKITEM_STATUS_CURR => null,
8197 P_PARENT_DIST_STATUS_PREV => null,
8198 P_PARENT_DIST_STATUS_CURR => null,
8199 P_WORKITEM_DIST_STATUS_PREV => l_dist_status_id,
8200 P_WORKITEM_DIST_STATUS_CURR => l_dist_status_id,
8201 P_PRIORITY_PREV => l_priority_id,
8202 P_PRIORITY_CURR => l_priority_id,
8203 P_DUE_DATE_PREV => l_due_date,
8204 P_DUE_DATE_CURR => l_due_date,
8205 P_RESCHEDULE_TIME_PREV => l_reschedule_time,
8206 P_RESCHEDULE_TIME_CURR => l_reschedule_time,
8207 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
8208 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
8209 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
8210 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
8211 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
8212 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
8213 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
8214 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
8215 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
8216 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
8217 P_STATUS => x_return_status,
8218 P_ERROR_CODE => l_message ,
8219 X_AUDIT_LOG_ID => l_audit_log_id,
8220 X_MSG_DATA => l_msg_data,
8221 X_RETURN_STATUS => l_return_status); commit;
8222 end if;
8223
8224 fnd_msg_pub.Count_and_Get
8225 (
8226 p_count => x_msg_count,
8227 p_data => x_msg_data
8228 );
8229
8230 WHEN fnd_api.g_exc_unexpected_error THEN
8231
8232 ROLLBACK TO next_work_for_apps;
8233 x_return_status := fnd_api.g_ret_sts_unexp_error;
8234
8235 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL') )
8236 then
8237
8238 l_action_key := 'DELIVERY';
8239 l_event_key := null;
8240 l_module := 'IEU_WR_PUB.GET_NEXT_WORK_FOR_APPS';
8241
8242 FOR l_index IN 1..x_msg_count LOOP
8243 l_msg_data := l_msg_data || FND_MSG_PUB.Get(p_msg_index => l_index,p_encoded => 'F');
8244 END LOOP;
8245
8246 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
8247 (
8248 P_ACTION_KEY => l_action_key,
8249 P_EVENT_KEY => l_event_key,
8250 P_MODULE => l_module,
8251 P_WS_CODE => null,
8252 P_APPLICATION_ID => 696,
8253 P_WORKITEM_PK_ID => l_workitem_pk_id,
8254 P_WORKITEM_OBJ_CODE => l_workitem_obj_code,
8255 P_WORK_ITEM_STATUS_PREV => l_workitem_status_id,
8256 P_WORK_ITEM_STATUS_CURR => l_workitem_status_id,
8257 P_OWNER_ID_PREV => l_owner_id,
8258 P_OWNER_ID_CURR => l_owner_id,
8259 P_OWNER_TYPE_PREV => l_owner_type,
8260 P_OWNER_TYPE_CURR => l_owner_type,
8261 P_ASSIGNEE_ID_PREV => l_assignee_id,
8262 P_ASSIGNEE_ID_CURR => l_assignee_id,
8263 P_ASSIGNEE_TYPE_PREV => l_assignee_type,
8264 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
8265 P_SOURCE_OBJECT_ID_PREV => l_source_object_id,
8266 P_SOURCE_OBJECT_ID_CURR => l_source_object_id,
8267 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_source_object_type_code,
8268 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_source_object_type_code,
8269 P_PARENT_WORKITEM_STATUS_PREV => null,
8270 P_PARENT_WORKITEM_STATUS_CURR => null,
8271 P_PARENT_DIST_STATUS_PREV => null,
8272 P_PARENT_DIST_STATUS_CURR => null,
8273 P_WORKITEM_DIST_STATUS_PREV => l_dist_status_id,
8274 P_WORKITEM_DIST_STATUS_CURR => l_dist_status_id,
8275 P_PRIORITY_PREV => l_priority_id,
8276 P_PRIORITY_CURR => l_priority_id,
8277 P_DUE_DATE_PREV => l_due_date,
8278 P_DUE_DATE_CURR => l_due_date,
8279 P_RESCHEDULE_TIME_PREV => l_reschedule_time,
8280 P_RESCHEDULE_TIME_CURR => l_reschedule_time,
8281 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
8282 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
8283 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
8284 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
8285 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
8286 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
8287 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
8288 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
8289 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
8290 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
8291 P_STATUS => x_return_status,
8292 P_ERROR_CODE => l_message ,
8293 X_AUDIT_LOG_ID => l_audit_log_id,
8294 X_MSG_DATA => l_msg_data,
8295 X_RETURN_STATUS => l_return_status); commit;
8296
8297 end if;
8298
8299 fnd_msg_pub.Count_and_Get
8300 (
8301 p_count => x_msg_count,
8302 p_data => x_msg_data
8303 );
8304
8305
8306 WHEN OTHERS THEN
8307
8308 ROLLBACK TO next_work_for_apps;
8309 x_return_status := fnd_api.g_ret_sts_unexp_error;
8310
8311 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL') )
8312 then
8313
8314 l_action_key := 'DELIVERY';
8315 l_event_key := null;
8316 l_module := 'IEU_WR_PUB.GET_NEXT_WORK_FOR_APPS';
8317
8318 FOR l_index IN 1..x_msg_count LOOP
8319 l_msg_data := l_msg_data || FND_MSG_PUB.Get(p_msg_index => l_index,p_encoded => 'F');
8320 END LOOP;
8321
8322 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
8323 (
8324 P_ACTION_KEY => l_action_key,
8325 P_EVENT_KEY => l_event_key,
8326 P_MODULE => l_module,
8327 P_WS_CODE => null,
8328 P_APPLICATION_ID => 696,
8329 P_WORKITEM_PK_ID => l_workitem_pk_id,
8330 P_WORKITEM_OBJ_CODE => l_workitem_obj_code,
8331 P_WORK_ITEM_STATUS_PREV => l_workitem_status_id,
8332 P_WORK_ITEM_STATUS_CURR => l_workitem_status_id,
8333 P_OWNER_ID_PREV => l_owner_id,
8334 P_OWNER_ID_CURR => l_owner_id,
8335 P_OWNER_TYPE_PREV => l_owner_type,
8336 P_OWNER_TYPE_CURR => l_owner_type,
8337 P_ASSIGNEE_ID_PREV => l_assignee_id,
8338 P_ASSIGNEE_ID_CURR => l_assignee_id,
8339 P_ASSIGNEE_TYPE_PREV => l_assignee_type,
8340 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
8341 P_SOURCE_OBJECT_ID_PREV => l_source_object_id,
8342 P_SOURCE_OBJECT_ID_CURR => l_source_object_id,
8343 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_source_object_type_code,
8344 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_source_object_type_code,
8345 P_PARENT_WORKITEM_STATUS_PREV => null,
8346 P_PARENT_WORKITEM_STATUS_CURR => null,
8347 P_PARENT_DIST_STATUS_PREV => null,
8348 P_PARENT_DIST_STATUS_CURR => null,
8349 P_WORKITEM_DIST_STATUS_PREV => l_dist_status_id,
8350 P_WORKITEM_DIST_STATUS_CURR => l_dist_status_id,
8351 P_PRIORITY_PREV => l_priority_id,
8352 P_PRIORITY_CURR => l_priority_id,
8353 P_DUE_DATE_PREV => l_due_date,
8354 P_DUE_DATE_CURR => l_due_date,
8355 P_RESCHEDULE_TIME_PREV => l_reschedule_time,
8356 P_RESCHEDULE_TIME_CURR => l_reschedule_time,
8357 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
8358 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
8359 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
8360 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
8361 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
8362 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
8363 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
8364 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
8365 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
8366 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
8367 P_STATUS => x_return_status,
8368 P_ERROR_CODE => l_message ,
8369 X_AUDIT_LOG_ID => l_audit_log_id,
8370 X_MSG_DATA => l_msg_data,
8371 X_RETURN_STATUS => l_return_status);commit;
8372
8373 end if;
8374
8375 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
8376 THEN
8377
8378 fnd_msg_pub.Count_and_Get
8379 (
8380 p_count => x_msg_count,
8381 p_data => x_msg_data
8382 );
8383
8384 END IF;
8385
8386 END GET_NEXT_WORK_FOR_APPS;
8387
8388
8389 PROCEDURE SYNC_DEPENDENT_WR_ITEMS
8390 ( p_api_version IN NUMBER,
8391 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
8392 p_commit IN VARCHAR2 DEFAULT NULL,
8393 p_wr_item_list IN IEU_WR_PUB.IEU_WR_ITEM_LIST ,
8394 p_audit_trail_rec IN SYSTEM.WR_AUDIT_TRAIL_NST,
8395 x_msg_count OUT NOCOPY NUMBER,
8396 x_msg_data OUT NOCOPY VARCHAR2,
8397 x_return_status OUT NOCOPY VARCHAR2) AS
8398
8399 l_api_version CONSTANT NUMBER := 1.0;
8400 l_api_name CONSTANT VARCHAR2(30) := 'SYNC_DEPENDENT_WR_ITEMS';
8401
8402 l_miss_param_flag NUMBER(1) := 0;
8403 l_token_str VARCHAR2(4000);
8404 l_param_valid_flag NUMBER(1) := 0;
8405
8406 l_msg_data VARCHAR2(4000);
8407
8408 l_ws_id NUMBER;
8409 l_parent_ws_id NUMBER;
8410 l_child_ws_id NUMBER;
8411 l_dist_from IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_FROM%TYPE;
8412 l_dist_to IEU_UWQM_WORK_SOURCES_B.DISTRIBUTE_TO%TYPE;
8413 l_ws_type VARCHAR2(500);
8414 l_ws_code VARCHAR2(500);
8415 l_owner_type IEU_UWQM_ITEMS.OWNER_TYPE%TYPE;
8416 l_assignee_type IEU_UWQM_ITEMS.ASSIGNEE_TYPE%TYPE;
8417 l_source_object_id NUMBER;
8418 l_source_object_type_code IEU_UWQM_ITEMS.SOURCE_OBJECT_TYPE_CODE%TYPE;
8419 l_distribution_status_id NUMBER;
8420 l_parent_dist_status NUMBER;
8421 l_dist_st_based_on_parent VARCHAR2(5);
8422 l_set_dist_id_flag VARCHAR2(5);
8423 l_parent_status_id NUMBER;
8424
8425 -- Audit Log
8426 l_action_key VARCHAR2(2000);
8427 l_event_key VARCHAR2(2000);
8428 l_module VARCHAR2(2000);
8429 l_curr_ws_code VARCHAR2(2000);
8430 l_application_id NUMBER;
8431 l_prev_status_id NUMBER;
8432 l_prev_owner_id NUMBER;
8433 l_prev_owner_type VARCHAR2(2000);
8434 l_prev_assignee_id NUMBER;
8435 l_prev_assignee_type VARCHAR2(2000);
8436 l_prev_distribution_status_id NUMBER;
8437 l_prev_priority_id NUMBER;
8438 l_prev_due_date DATE;
8439 l_prev_reschedule_time DATE;
8440 l_ieu_comment_code1 VARCHAR2(2000);
8441 l_ieu_comment_code2 VARCHAR2(2000);
8442 l_ieu_comment_code3 VARCHAR2(2000);
8443 l_ieu_comment_code4 VARCHAR2(2000);
8444 l_ieu_comment_code5 VARCHAR2(2000);
8445 l_workitem_comment_code1 VARCHAR2(2000);
8446 l_workitem_comment_code2 VARCHAR2(2000);
8447 l_workitem_comment_code3 VARCHAR2(2000);
8448 l_workitem_comment_code4 VARCHAR2(2000);
8449 l_workitem_comment_code5 VARCHAR2(2000);
8450
8451 l_owner_id NUMBER;
8452 l_assignee_id NUMBER;
8453 l_status_id NUMBER;
8454 l_priority_id NUMBER;
8455 l_due_date DATE;
8456 l_reschedule_time DATE;
8457
8458 l_ws_code1 VARCHAR2(50);
8459 l_ws_code2 VARCHAR2(50);
8460 l_assct_ws_code VARCHAR2(50);
8461
8462 L_LOG_DIST_FROM VARCHAR(100);
8463 L_LOG_DIST_TO VARCHAR2(100);
8464 l_return_status VARCHAR2(10);
8465 l_prev_source_object_id NUMBER;
8466 l_prev_source_object_type_code VARCHAR2(30);
8467 l_workitem_pk_id NUMBER;
8468 l_workitem_obj_code VARCHAR2(30);
8469 l_audit_log_id NUMBER;
8470
8471 BEGIN
8472
8473 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
8474 l_token_str := '';
8475 l_dist_from := 'GROUP_OWNED';
8476 l_dist_to := 'INDIVIDUAL_ASSIGNED';
8477 SAVEPOINT sync_dependent_wr_items_sp;
8478
8479 x_return_status := fnd_api.g_ret_sts_success;
8480
8481 -- Check for API Version
8482
8483 IF NOT fnd_api.compatible_api_call (
8484 l_api_version,
8485 p_api_version,
8486 l_api_name,
8487 g_pkg_name
8488 )
8489 THEN
8490 RAISE fnd_api.g_exc_unexpected_error;
8491 END IF;
8492
8493 -- Initialize Message list
8494
8495 IF fnd_api.to_boolean(p_init_msg_list)
8496 THEN
8497 FND_MSG_PUB.INITIALIZE;
8498 END IF;
8499
8500
8501 for i in p_wr_item_list.first .. p_wr_item_list.last
8502 loop
8503
8504
8505 --dbms_output.put_line('work item pk id: '||p_wr_item_list(i).workitem_pk_id||' obj code: '||p_wr_item_list(i).workitem_obj_code);
8506 -- Get all the required Work Item details
8507 -- some additional info is retrieved for Audit Log
8508 l_workitem_pk_id := p_wr_item_list(i).workitem_pk_id;
8509 l_workitem_obj_code := p_wr_item_list(i).workitem_obj_code;
8510
8511 BEGIN
8512 select ws_id, owner_id, owner_type, assignee_id, assignee_type, status_id,
8513 priority_id, due_date, reschedule_time, distribution_status_id, source_object_id, source_object_type_code
8514 into l_ws_id, l_owner_id, l_owner_type, l_assignee_id, l_assignee_type, l_prev_status_id,
8515 l_priority_id, l_due_date, l_reschedule_time, l_prev_distribution_status_id, l_source_object_id, l_source_object_type_code
8516 from ieu_uwqm_items
8517 where workitem_pk_id = p_wr_item_list(i).workitem_pk_id
8518 and workitem_obj_code = p_wr_item_list(i).workitem_obj_code;
8519
8520 EXCEPTION
8521 WHEN OTHERS THEN
8522
8523 x_return_status := fnd_api.g_ret_sts_error;
8524
8525 l_token_str := p_wr_item_list(i).workitem_obj_code ||' WORKITEM_PK_ID : '|| p_wr_item_list(i).workitem_pk_id ||' - '||l_msg_data;
8526
8527 FND_MESSAGE.SET_NAME('IEU', 'IEU_UPDATE_UWQM_ITEM_FAILED');
8528 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM');
8529 FND_MESSAGE.SET_TOKEN('DETAILS', l_token_str);
8530
8531 fnd_msg_pub.ADD;
8532 fnd_msg_pub.Count_and_Get
8533 (
8534 p_count => x_msg_count,
8535 p_data => x_msg_data
8536 );
8537
8538 RAISE fnd_api.g_exc_error;
8539
8540 END;
8541
8542 -- some additional info like Dist from and to are retrieved for Audit Log
8543
8544 BEGIN
8545 l_not_valid_flag := 'N';
8546 Select ws_code, ws_type, distribute_from, distribute_to
8547 into l_ws_code, l_ws_type, l_log_dist_from, l_log_dist_to
8548 from ieu_uwqm_work_sources_b
8549 where ws_id = l_ws_id
8550 -- and nvl(not_valid_flag, 'N') = 'N';
8551 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
8552
8553 EXCEPTION
8554 WHEN OTHERS THEN
8555
8556 -- Work Source does not exist for this Object Code
8557 l_token_str := 'WS_CODE: '||l_ws_code;
8558 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
8559 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WS_DETAILS');
8560 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
8561 fnd_msg_pub.ADD;
8562 fnd_msg_pub.Count_and_Get
8563 (
8564 p_count => x_msg_count,
8565 p_data => x_msg_data
8566 );
8567
8568 RAISE fnd_api.g_exc_error;
8569
8570 END;
8571
8572 if (l_ws_type = 'ASSOCIATION')
8573 then
8574 BEGIN
8575
8576 SELECT parent_ws_id, child_ws_id, dist_st_based_on_parent_flag
8577 INTO l_parent_ws_id, l_child_ws_id, l_dist_st_based_on_parent
8578 FROM IEU_UWQM_WS_ASSCT_PROPS
8579 WHERE ws_id = l_ws_id;
8580
8581 EXCEPTION
8582 WHEN NO_DATA_FOUND THEN
8583
8584 -- Work Source does not exist for this Object Code
8585 l_token_str := 'WS_CODE: '||l_ws_code;
8586 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
8587 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WS_DETAILS');
8588 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
8589 fnd_msg_pub.ADD;
8590 fnd_msg_pub.Count_and_Get
8591 (
8592 p_count => x_msg_count,
8593 p_data => x_msg_data
8594 );
8595
8596 RAISE fnd_api.g_exc_error;
8597
8598 END;
8599
8600 end if;/* ws_type */
8601
8602 -- Set Distribution Status based on these rules
8603
8604 -- If the Distribution State is based on the Parent, then check if the parent is distributed.
8605
8606 if (l_dist_st_based_on_parent = 'Y')
8607 then
8608 BEGIN
8609 SELECT distribution_status_id, status_id
8610 INTO l_parent_dist_status, l_parent_status_id
8611 FROM ieu_uwqm_items
8612 WHERE workitem_pk_id = l_source_object_id
8613 AND workitem_obj_code = l_source_object_type_code;
8614 EXCEPTION
8615 WHEN OTHERS THEN
8616 l_parent_dist_status := null;
8617 END;
8618 end if;
8619
8620 --dbms_output.put_line('dist st based on parent; '||l_dist_st_based_on_parent ||'s id: '||l_source_object_id||' s obj: '||l_source_object_type_code||' parent dist st: '||l_parent_dist_status);
8621
8622
8623 -- If the parent is not distributed, then this item will be in "On-Hold/Unavailable" status
8624 -- else set the status based on distribute_from and distribute_to
8625
8626 if (l_parent_status_id = 3)
8627 then
8628
8629 l_set_dist_id_flag := 'T';
8630
8631 else
8632
8633 if (l_parent_dist_status <> 3)
8634 then
8635
8636 l_distribution_status_id := 0;
8637
8638 else
8639
8640 l_set_dist_id_flag := 'T';
8641
8642 end if; /* parent_dist_status */
8643
8644 end if; /* l_parent_status_id */
8645
8646 if (l_set_dist_id_flag = 'T')
8647 then
8648
8649 if (l_dist_from = 'GROUP_OWNED') and
8650 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
8651 then
8652 if (l_owner_type = 'RS_GROUP') and
8653 ( (l_assignee_type is null) OR (l_assignee_type <> 'RS_INDIVIDUAL') )
8654 then
8655 l_distribution_status_id := 1;
8656 elsif (l_assignee_type = 'RS_INDIVIDUAL')
8657 then
8658 l_distribution_status_id := 3;
8659 else
8660 l_distribution_status_id := 0;
8661 end if;
8662 end if;
8663
8664 /* if (l_dist_from = 'GROUP_OWNED') and
8665 (l_dist_to = 'INDIVIDUAL_OWNED')
8666 then
8667
8668 if (l_owner_type = 'RS_GROUP')
8669 then
8670 l_distribution_status_id := 1;
8671 elsif (l_owner_type = 'RS_INDIVIDUAL')
8672 then
8673 l_distribution_status_id := 3;
8674 else
8675 l_distribution_status_id := 0;
8676 end if;
8677
8678 elsif (l_dist_from = 'GROUP_OWNED') and
8679 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
8680 then
8681
8682 if (l_owner_type = 'RS_GROUP') and
8683 ( (l_assignee_type is null) OR (l_assignee_type <> 'RS_INDIVIDUAL') )
8684 then
8685 l_distribution_status_id := 1;
8686 elsif (l_assignee_type = 'RS_INDIVIDUAL')
8687 then
8688 l_distribution_status_id := 3;
8689 else
8690 l_distribution_status_id := 0;
8691 end if;
8692
8693 elsif (l_dist_from = 'GROUP_ASSIGNED') and
8694 (l_dist_to = 'INDIVIDUAL_OWNED')
8695 then
8696
8697 if (l_assignee_type = 'RS_GROUP') and
8698 ( (l_owner_type is null) OR (l_owner_type <> 'RS_INDIVIDUAL') )
8699 then
8700 l_distribution_status_id := 1;
8701 elsif (l_owner_type = 'RS_INDIVIDUAL')
8702 then
8703 l_distribution_status_id := 3;
8704 else
8705 l_distribution_status_id := 0;
8706 end if;
8707
8708 elsif (l_dist_from = 'GROUP_ASSIGNED') and
8709 (l_dist_to = 'INDIVIDUAL_ASSIGNED')
8710 then
8711
8712 if (l_assignee_type = 'RS_GROUP')
8713 then
8714 l_distribution_status_id := 1;
8715 elsif (l_assignee_type = 'RS_INDIVIDUAL')
8716 then
8717 l_distribution_status_id := 3;
8718 else
8719 l_distribution_status_id := 0;
8720 end if;
8721
8722 end if;
8723 */
8724 end if; /* l_set_dist_id_flag */
8725
8726 --dbms_output.put_line('l_set_dist_id_flag: '||l_set_dist_id_flag|| ' dist status: '|| l_distribution_status_id);
8727 update ieu_uwqm_items
8728 set distribution_status_id = l_distribution_status_id
8729 where workitem_pk_id = p_wr_item_list(i).workitem_pk_id
8730 and workitem_obj_code = p_wr_item_list(i).workitem_obj_code;
8731
8732 if (sql%notfound)
8733 then
8734 l_return_status := 'E';
8735 l_msg_data := SQLERRM;
8736 raise fnd_api.g_exc_error;
8737 else
8738 l_return_status := 'S';
8739 end if;
8740
8741 -- Get the values of App Distribute From and To for Audit Logging
8742 if (l_audit_log_val = 'DETAILED')
8743 then
8744
8745 l_ieu_comment_code1 := null;
8746 l_ieu_comment_code2 := null;
8747 l_ieu_comment_code3 := null;
8748 l_ieu_comment_code4 := null;
8749 l_ieu_comment_code5 := null;
8750
8751 /******************************* Used only for Distribute **************************
8752 if (l_log_dist_from = 'GROUP_OWNED') and
8753 (l_log_dist_to = 'INDIVIDUAL_OWNED')
8754 then
8755 l_ieu_comment_code1 := 'GO_IO';
8756 elsif (l_log_dist_from = 'GROUP_OWNED') and
8757 (l_log_dist_to = 'INDIVIDUAL_ASSIGNED')
8758 then
8759 l_ieu_comment_code1 := 'GO_IA';
8760 elsif (l_log_dist_from = 'GROUP_ASSIGNED') and
8761 (l_log_dist_to = 'INDIVIDUAL_OWNED')
8762 then
8763 l_ieu_comment_code1 := 'GA_IO';
8764 elsif (l_log_dist_from = 'GROUP_ASSIGNED') and
8765 (l_log_dist_to = 'INDIVIDUAL_ASSIGNED')
8766 then
8767 l_ieu_comment_code1 := 'GA_IA';
8768 end if;
8769 ********************************************************************/
8770
8771 if (l_dist_st_based_on_parent = 'Y')
8772 then
8773 if (l_parent_dist_status = 0) and (l_parent_status_id = 0)
8774 then
8775 l_ieu_comment_code2 := 'ON_HOLD_OPEN';
8776 elsif (l_parent_dist_status = 0) and (l_parent_status_id = 3)
8777 then
8778 l_ieu_comment_code2 := 'ON_HOLD_CLOSED';
8779 elsif (l_parent_dist_status = 0) and (l_parent_status_id = 5)
8780 then
8781 l_ieu_comment_code2 := 'ON_HOLD_SLEEP';
8782 elsif (l_parent_dist_status = 1) and (l_parent_status_id = 0)
8783 then
8784 l_ieu_comment_code2 := 'DISTRIBUTABLE_OPEN';
8785 elsif (l_parent_dist_status = 1) and (l_parent_status_id = 3)
8786 then
8787 l_ieu_comment_code2 := 'DISTRIBUTABLE_CLOSED';
8788 elsif (l_parent_dist_status = 1) and (l_parent_status_id = 5)
8789 then
8790 l_ieu_comment_code2 := 'DISTRIBUTABLE_SLEEP';
8791 elsif (l_parent_dist_status = 3) and (l_parent_status_id = 0)
8792 then
8793 l_ieu_comment_code2 := 'DISTRIBUTED_OPEN';
8794 elsif (l_parent_dist_status = 3) and (l_parent_status_id = 3)
8795 then
8796 l_ieu_comment_code2 := 'DISTRIBUTED_CLOSED';
8797 elsif (l_parent_dist_status = 3) and (l_parent_status_id = 5)
8798 then
8799 l_ieu_comment_code2 := 'DISTRIBUTED_SLEEP';
8800 end if;
8801 end if;
8802
8803 end if;
8804
8805 -- Logging will be done only for profile value - FULL or DETAILED, as this is only a event
8806 -- Insert values to Audit Log
8807
8808 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
8809 then
8810
8811 if p_audit_trail_rec.count > 0
8812 then
8813 for n in p_audit_trail_rec.first..p_audit_trail_rec.last
8814 loop
8815 l_action_key := p_audit_trail_rec(n).action_key;
8816 l_module := p_audit_trail_rec(n).module;
8817 if (l_audit_log_val = 'DETAILED')
8818 then
8819 l_workitem_comment_code1 := p_audit_trail_rec(n).workitem_comment_code1;
8820 l_workitem_comment_code2 := p_audit_trail_rec(n).workitem_comment_code2;
8821 l_workitem_comment_code3 := p_audit_trail_rec(n).workitem_comment_code3;
8822 l_workitem_comment_code4 := p_audit_trail_rec(n).workitem_comment_code4;
8823 l_workitem_comment_code5 := p_audit_trail_rec(n).workitem_comment_code5;
8824 else
8825 l_workitem_comment_code1 := null;
8826 l_workitem_comment_code2 := null;
8827 l_workitem_comment_code3 := null;
8828 l_workitem_comment_code4 := null;
8829 l_workitem_comment_code5 := null;
8830 end if;
8831 end loop;
8832 end if;
8833
8834 l_event_key := 'SYNC_CHILD_WORKITEM';
8835 l_return_status := 'S';
8836
8837 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
8838 (
8839 P_ACTION_KEY => l_action_key,
8840 P_EVENT_KEY => l_event_key,
8841 P_MODULE => l_module,
8842 P_WS_CODE => l_ws_code,
8843 P_APPLICATION_ID => 696,
8844 P_WORKITEM_PK_ID => p_wr_item_list(i).workitem_pk_id,
8845 P_WORKITEM_OBJ_CODE => p_wr_item_list(i).workitem_obj_code,
8846 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
8847 P_WORK_ITEM_STATUS_CURR => l_prev_status_id,
8848 P_OWNER_ID_PREV => l_owner_id,
8849 P_OWNER_ID_CURR => l_owner_id,
8850 P_OWNER_TYPE_PREV => l_owner_type,
8851 P_OWNER_TYPE_CURR => l_owner_type,
8852 P_ASSIGNEE_ID_PREV => l_assignee_id,
8853 P_ASSIGNEE_ID_CURR => l_assignee_id,
8854 P_ASSIGNEE_TYPE_PREV => l_assignee_type,
8855 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
8856 P_SOURCE_OBJECT_ID_PREV => l_source_object_id,
8857 P_SOURCE_OBJECT_ID_CURR => l_source_object_id,
8858 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_source_object_type_code,
8859 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_source_object_type_code,
8860 P_PARENT_WORKITEM_STATUS_PREV => p_wr_item_list(i).prev_parent_workitem_status_id,
8861 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
8862 P_PARENT_DIST_STATUS_PREV => p_wr_item_list(i).prev_parent_dist_status_id,
8863 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
8864 P_WORKITEM_DIST_STATUS_PREV => l_prev_distribution_status_id,
8865 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
8866 P_PRIORITY_PREV => l_priority_id,
8867 P_PRIORITY_CURR => l_priority_id,
8868 P_DUE_DATE_PREV => l_due_date,
8869 P_DUE_DATE_CURR => l_due_date,
8870 P_RESCHEDULE_TIME_PREV => l_reschedule_time,
8871 P_RESCHEDULE_TIME_CURR => l_reschedule_time,
8872 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
8873 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
8874 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
8875 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
8876 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
8877 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
8878 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
8879 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
8880 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
8881 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
8882 P_STATUS => 'S',
8883 P_ERROR_CODE => l_msg_data,
8884 X_AUDIT_LOG_ID => l_audit_log_id,
8885 X_MSG_DATA => l_msg_data,
8886 X_RETURN_STATUS => l_return_status);
8887
8888 end if;
8889
8890 IF FND_API.TO_BOOLEAN( p_commit )
8891 THEN
8892 COMMIT WORK;
8893 END iF;
8894
8895 end loop; /* p_wr_item_list */
8896
8897 EXCEPTION
8898
8899 WHEN fnd_api.g_exc_error THEN
8900
8901 ROLLBACK TO sync_dependent_wr_items_sp;
8902 x_return_status := fnd_api.g_ret_sts_error;
8903
8904 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
8905 then
8906
8907 if p_audit_trail_rec.count > 0
8908 then
8909 for n in p_audit_trail_rec.first..p_audit_trail_rec.last
8910 loop
8911 l_action_key := p_audit_trail_rec(n).action_key;
8912 l_module := p_audit_trail_rec(n).module;
8913 if (l_audit_log_val = 'DETAILED')
8914 then
8915 l_workitem_comment_code1 := p_audit_trail_rec(n).workitem_comment_code1;
8916 l_workitem_comment_code2 := p_audit_trail_rec(n).workitem_comment_code2;
8917 l_workitem_comment_code3 := p_audit_trail_rec(n).workitem_comment_code3;
8918 l_workitem_comment_code4 := p_audit_trail_rec(n).workitem_comment_code4;
8919 l_workitem_comment_code5 := p_audit_trail_rec(n).workitem_comment_code5;
8920 else
8921 l_workitem_comment_code1 := null;
8922 l_workitem_comment_code2 := null;
8923 l_workitem_comment_code3 := null;
8924 l_workitem_comment_code4 := null;
8925 l_workitem_comment_code5 := null;
8926 end if;
8927 end loop;
8928 end if;
8929
8930 l_event_key := 'SYNC_CHILD_WORKITEM';
8931
8932 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
8933 (
8934 P_ACTION_KEY => l_action_key,
8935 P_EVENT_KEY => l_event_key,
8936 P_MODULE => l_module,
8937 P_WS_CODE => l_ws_code,
8938 P_APPLICATION_ID => 696,
8939 P_WORKITEM_PK_ID => l_workitem_pk_id,
8940 P_WORKITEM_OBJ_CODE => l_workitem_obj_code,
8941 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
8942 P_WORK_ITEM_STATUS_CURR => l_status_id,
8943 P_OWNER_ID_PREV => l_owner_id,
8944 P_OWNER_ID_CURR => l_owner_id,
8945 P_OWNER_TYPE_PREV => l_owner_type,
8946 P_OWNER_TYPE_CURR => l_owner_type,
8947 P_ASSIGNEE_ID_PREV => l_assignee_id,
8948 P_ASSIGNEE_ID_CURR => l_assignee_id,
8949 P_ASSIGNEE_TYPE_PREV => l_assignee_type,
8950 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
8951 P_SOURCE_OBJECT_ID_PREV => l_source_object_id,
8952 P_SOURCE_OBJECT_ID_CURR => l_source_object_id,
8953 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_source_object_type_code,
8954 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_source_object_type_code,
8955 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
8956 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
8957 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
8958 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
8959 P_WORKITEM_DIST_STATUS_PREV => l_prev_distribution_status_id,
8960 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
8961 P_PRIORITY_PREV => l_priority_id,
8962 P_PRIORITY_CURR => l_priority_id,
8963 P_DUE_DATE_PREV => l_due_date,
8964 P_DUE_DATE_CURR => l_due_date,
8965 P_RESCHEDULE_TIME_PREV => l_reschedule_time,
8966 P_RESCHEDULE_TIME_CURR => l_reschedule_time,
8967 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
8968 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
8969 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
8970 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
8971 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
8972 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
8973 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
8974 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
8975 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
8976 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
8977 P_STATUS => 'E',
8978 P_ERROR_CODE => l_msg_data,
8979 X_AUDIT_LOG_ID => l_audit_log_id,
8980 X_MSG_DATA => l_msg_data,
8981 X_RETURN_STATUS => l_return_status);
8982
8983 end if;
8984
8985 fnd_msg_pub.Count_and_Get
8986 (
8987 p_count => x_msg_count,
8988 p_data => x_msg_data
8989 );
8990
8991 WHEN fnd_api.g_exc_unexpected_error THEN
8992
8993 ROLLBACK TO sync_dependent_wr_items_sp;
8994 x_return_status := fnd_api.g_ret_sts_unexp_error;
8995
8996 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
8997 then
8998
8999 if p_audit_trail_rec.count > 0
9000 then
9001 for n in p_audit_trail_rec.first..p_audit_trail_rec.last
9002 loop
9003 l_action_key := p_audit_trail_rec(n).action_key;
9004 l_module := p_audit_trail_rec(n).module;
9005 if (l_audit_log_val = 'DETAILED')
9006 then
9007 l_workitem_comment_code1 := p_audit_trail_rec(n).workitem_comment_code1;
9008 l_workitem_comment_code2 := p_audit_trail_rec(n).workitem_comment_code2;
9009 l_workitem_comment_code3 := p_audit_trail_rec(n).workitem_comment_code3;
9010 l_workitem_comment_code4 := p_audit_trail_rec(n).workitem_comment_code4;
9011 l_workitem_comment_code5 := p_audit_trail_rec(n).workitem_comment_code5;
9012 else
9013 l_workitem_comment_code1 := null;
9014 l_workitem_comment_code2 := null;
9015 l_workitem_comment_code3 := null;
9016 l_workitem_comment_code4 := null;
9017 l_workitem_comment_code5 := null;
9018 end if;
9019 end loop;
9020 end if;
9021
9022 l_event_key := 'SYNC_CHILD_WORKITEM';
9023
9024 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
9025 (
9026 P_ACTION_KEY => l_action_key,
9027 P_EVENT_KEY => l_event_key,
9028 P_MODULE => l_module,
9029 P_WS_CODE => l_ws_code,
9030 P_APPLICATION_ID => 696,
9031 P_WORKITEM_PK_ID => l_workitem_pk_id,
9032 P_WORKITEM_OBJ_CODE => l_workitem_obj_code,
9033 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
9034 P_WORK_ITEM_STATUS_CURR => l_status_id,
9035 P_OWNER_ID_PREV => l_owner_id,
9036 P_OWNER_ID_CURR => l_owner_id,
9037 P_OWNER_TYPE_PREV => l_owner_type,
9038 P_OWNER_TYPE_CURR => l_owner_type,
9039 P_ASSIGNEE_ID_PREV => l_assignee_id,
9040 P_ASSIGNEE_ID_CURR => l_assignee_id,
9041 P_ASSIGNEE_TYPE_PREV => l_assignee_type,
9042 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
9043 P_SOURCE_OBJECT_ID_PREV => l_source_object_id,
9044 P_SOURCE_OBJECT_ID_CURR => l_source_object_id,
9045 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_source_object_type_code,
9046 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_source_object_type_code,
9047 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
9048 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
9049 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
9050 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
9051 P_WORKITEM_DIST_STATUS_PREV => l_prev_distribution_status_id,
9052 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
9053 P_PRIORITY_PREV => l_priority_id,
9054 P_PRIORITY_CURR => l_priority_id,
9055 P_DUE_DATE_PREV => l_due_date,
9056 P_DUE_DATE_CURR => l_due_date,
9057 P_RESCHEDULE_TIME_PREV => l_reschedule_time,
9058 P_RESCHEDULE_TIME_CURR => l_reschedule_time,
9059 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
9060 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
9061 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
9062 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
9063 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
9064 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
9065 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
9066 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
9067 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
9068 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
9069 P_STATUS => fnd_api.g_ret_sts_unexp_error,
9070 P_ERROR_CODE => l_msg_data,
9071 X_AUDIT_LOG_ID => l_audit_log_id,
9072 X_MSG_DATA => l_msg_data,
9073 X_RETURN_STATUS => l_return_status);
9074
9075 end if;
9076
9077 fnd_msg_pub.Count_and_Get
9078 (
9079 p_count => x_msg_count,
9080 p_data => x_msg_data
9081 );
9082
9083
9084 WHEN OTHERS THEN
9085
9086 ROLLBACK TO sync_dependent_wr_items_sp;
9087 x_return_status := fnd_api.g_ret_sts_unexp_error;
9088
9089 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
9090 then
9091
9092 if p_audit_trail_rec.count > 0
9093 then
9094 for n in p_audit_trail_rec.first..p_audit_trail_rec.last
9095 loop
9096 l_action_key := p_audit_trail_rec(n).action_key;
9097 l_module := p_audit_trail_rec(n).module;
9098 if (l_audit_log_val = 'DETAILED')
9099 then
9100 l_workitem_comment_code1 := p_audit_trail_rec(n).workitem_comment_code1;
9101 l_workitem_comment_code2 := p_audit_trail_rec(n).workitem_comment_code2;
9102 l_workitem_comment_code3 := p_audit_trail_rec(n).workitem_comment_code3;
9103 l_workitem_comment_code4 := p_audit_trail_rec(n).workitem_comment_code4;
9104 l_workitem_comment_code5 := p_audit_trail_rec(n).workitem_comment_code5;
9105 else
9106 l_workitem_comment_code1 := null;
9107 l_workitem_comment_code2 := null;
9108 l_workitem_comment_code3 := null;
9109 l_workitem_comment_code4 := null;
9110 l_workitem_comment_code5 := null;
9111 end if;
9112 end loop;
9113 end if;
9114
9115 l_event_key := 'SYNC_CHILD_WORKITEM';
9116
9117 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
9118 (
9119 P_ACTION_KEY => l_action_key,
9120 P_EVENT_KEY => l_event_key,
9121 P_MODULE => l_module,
9122 P_WS_CODE => l_ws_code,
9123 P_APPLICATION_ID => 696,
9124 P_WORKITEM_PK_ID => l_workitem_pk_id,
9125 P_WORKITEM_OBJ_CODE => l_workitem_obj_code,
9126 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
9127 P_WORK_ITEM_STATUS_CURR => l_status_id,
9128 P_OWNER_ID_PREV => l_owner_id,
9129 P_OWNER_ID_CURR => l_owner_id,
9130 P_OWNER_TYPE_PREV => l_owner_type,
9131 P_OWNER_TYPE_CURR => l_owner_type,
9132 P_ASSIGNEE_ID_PREV => l_assignee_id,
9133 P_ASSIGNEE_ID_CURR => l_assignee_id,
9134 P_ASSIGNEE_TYPE_PREV => l_assignee_type,
9135 P_ASSIGNEE_TYPE_CURR => l_assignee_type,
9136 P_SOURCE_OBJECT_ID_PREV => l_source_object_id,
9137 P_SOURCE_OBJECT_ID_CURR => l_source_object_id,
9138 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_source_object_type_code,
9139 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_source_object_type_code,
9140 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
9141 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
9142 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
9143 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
9144 P_WORKITEM_DIST_STATUS_PREV => l_prev_distribution_status_id,
9145 P_WORKITEM_DIST_STATUS_CURR => l_distribution_status_id,
9146 P_PRIORITY_PREV => l_priority_id,
9147 P_PRIORITY_CURR => l_priority_id,
9148 P_DUE_DATE_PREV => l_due_date,
9149 P_DUE_DATE_CURR => l_due_date,
9150 P_RESCHEDULE_TIME_PREV => l_reschedule_time,
9151 P_RESCHEDULE_TIME_CURR => l_reschedule_time,
9152 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
9153 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
9154 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
9155 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
9156 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
9157 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
9158 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
9159 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
9160 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
9161 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
9162 P_STATUS => fnd_api.g_ret_sts_unexp_error,
9163 P_ERROR_CODE => l_msg_data,
9164 X_AUDIT_LOG_ID => l_audit_log_id,
9165 X_MSG_DATA => l_msg_data,
9166 X_RETURN_STATUS => l_return_status);
9167
9168 end if;
9169
9170 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
9171 THEN
9172
9173 fnd_msg_pub.Count_and_Get
9174 (
9175 p_count => x_msg_count,
9176 p_data => x_msg_data
9177 );
9178
9179 END IF;
9180
9181 END SYNC_DEPENDENT_WR_ITEMS;
9182
9183 PROCEDURE ACTIVATE_WS
9184 ( p_api_version IN NUMBER,
9185 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
9186 p_commit IN VARCHAR2 DEFAULT NULL,
9187 p_ws_code IN VARCHAR2,
9188 x_msg_count OUT NOCOPY NUMBER,
9189 x_msg_data OUT NOCOPY VARCHAR2,
9190 x_return_status OUT NOCOPY VARCHAR2) AS
9191
9192 l_api_version CONSTANT NUMBER := 1.0;
9193 l_api_name CONSTANT VARCHAR2(30) := 'ACTIVATE_WS';
9194
9195 l_miss_param_flag NUMBER(1) := 0;
9196 l_token_str VARCHAR2(4000);
9197
9198 l_ws_code VARCHAR2(32);
9199 BEGIN
9200
9201 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
9202 l_token_str := '';
9203 SAVEPOINT activate_ws_sp;
9204 x_return_status := fnd_api.g_ret_sts_success;
9205
9206 IF NOT fnd_api.compatible_api_call (
9207 l_api_version,
9208 p_api_version,
9209 l_api_name,
9210 g_pkg_name
9211 )
9212 THEN
9213 RAISE fnd_api.g_exc_unexpected_error;
9214 END IF;
9215
9216 -- Initialize Message list
9217
9218 IF fnd_api.to_boolean(p_init_msg_list)
9219 THEN
9220 FND_MSG_PUB.INITIALIZE;
9221 END IF;
9222
9223 -- validate parameters
9224
9225 if p_ws_code is null
9226 then
9227 l_miss_param_flag := 1;
9228 l_token_str := l_token_str || ' WS_CODE ';
9229 END IF;
9230
9231 If (l_miss_param_flag = 1)
9232 THEN
9233
9234 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_REQUIRED_PARAM_NULL');
9235 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.ACTIVATE_WS');
9236 FND_MESSAGE.SET_TOKEN('IEU_UWQ_REQ_PARAM',l_token_str);
9237 fnd_msg_pub.ADD;
9238 fnd_msg_pub.Count_and_Get
9239 (
9240 p_count => x_msg_count,
9241 p_data => x_msg_data
9242 );
9243
9244 x_return_status := fnd_api.g_ret_sts_error;
9245 RAISE fnd_api.g_exc_error;
9246
9247 END IF;
9248
9249 IF p_ws_code is not null
9250 THEN
9251
9252 BEGIN
9253 l_not_valid_flag := 'N';
9254 select ws_code
9255 into l_ws_code
9256 from ieu_uwqm_work_sources_b
9257 where ws_code = p_ws_code
9258 -- and nvl(not_valid_flag, 'N') = 'N';
9259 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
9260 EXCEPTION WHEN NO_DATA_FOUND
9261 THEN
9262 l_ws_code := '';
9263 END;
9264
9265 IF (p_ws_code <> nvl(l_ws_code, '-1'))
9266 THEN
9267 l_token_str :=' WS_CODE:'||p_ws_code;
9268 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_COMBINATION');
9269 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.ACTIVATE_WS');
9270 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
9271 fnd_msg_pub.ADD;
9272 fnd_msg_pub.Count_and_Get
9273 (
9274 p_count => x_msg_count,
9275 p_data => x_msg_data
9276 );
9277
9278 x_return_status := fnd_api.g_ret_sts_error;
9279 RAISE fnd_api.g_exc_error;
9280
9281 ELSIF p_ws_code = l_ws_code
9282 THEN
9283 l_active_flag := 'Y';
9284 update ieu_uwqm_work_sources_b
9285 set active_flag = l_active_flag
9286 where ws_code = p_ws_code;
9287 END IF;
9288
9289 END IF;
9290
9291 IF FND_API.TO_BOOLEAN(p_commit)
9292 THEN
9293 COMMIT WORK;
9294 END IF;
9295
9296 EXCEPTION
9297
9298 WHEN fnd_api.g_exc_error THEN
9299
9300 ROLLBACK TO activate_ws_sp;
9301 x_return_status := fnd_api.g_ret_sts_error;
9302
9303 fnd_msg_pub.Count_and_Get
9304 (
9305 p_count => x_msg_count,
9306 p_data => x_msg_data
9307 );
9308
9309 WHEN fnd_api.g_exc_unexpected_error THEN
9310
9311 ROLLBACK TO activate_ws_sp;
9312 x_return_status := fnd_api.g_ret_sts_unexp_error;
9313
9314 fnd_msg_pub.Count_and_Get
9315 (
9316 p_count => x_msg_count,
9317 p_data => x_msg_data
9318 );
9319
9320 WHEN OTHERS THEN
9321
9322 ROLLBACK TO activate_ws_sp;
9323 x_return_status := fnd_api.g_ret_sts_unexp_error;
9324
9325 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
9326 THEN
9327
9328 fnd_msg_pub.Count_and_Get
9329 (
9330 p_count => x_msg_count,
9331 p_data => x_msg_data
9332 );
9333
9334 END IF;
9335
9336 END ACTIVATE_WS;
9337
9338 PROCEDURE CHECK_WS_ACTIVATION_STATUS
9339 ( p_api_version IN NUMBER,
9340 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
9341 p_commit IN VARCHAR2 DEFAULT NULL,
9342 p_ws_code IN VARCHAR2,
9343 x_ws_activation_status OUT NOCOPY VARCHAR2,
9344 x_msg_count OUT NOCOPY NUMBER,
9345 x_msg_data OUT NOCOPY VARCHAR2,
9346 x_return_status OUT NOCOPY VARCHAR2) AS
9347
9348 l_api_version CONSTANT NUMBER := 1.0;
9349 l_api_name CONSTANT VARCHAR2(30) := 'CHECK_WS_ACTIVATION_STATUS';
9350
9351 l_miss_param_flag NUMBER(1) := 0;
9352 l_token_str VARCHAR2(4000);
9353
9354 l_ws_code VARCHAR2(32);
9355 l_ws_activation_status VARCHAR2(1);
9356
9357 BEGIN
9358
9359 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
9360 l_token_str := '';
9361 SAVEPOINT check_ws_activation_status_sp;
9362 x_return_status := fnd_api.g_ret_sts_success;
9363
9364 IF NOT fnd_api.compatible_api_call (
9365 l_api_version,
9366 p_api_version,
9367 l_api_name,
9368 g_pkg_name
9369 )
9370 THEN
9371 RAISE fnd_api.g_exc_unexpected_error;
9372 END IF;
9373
9374 -- Initialize Message list
9375
9376 IF fnd_api.to_boolean(p_init_msg_list)
9377 THEN
9378 FND_MSG_PUB.INITIALIZE;
9379 END IF;
9380
9381 -- validate parameters
9382
9383 if p_ws_code is null
9384 then
9385 l_miss_param_flag := 1;
9386 l_token_str := l_token_str || ' WS_CODE ';
9387 END IF;
9388
9389 If (l_miss_param_flag = 1)
9390 THEN
9391
9392 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_REQUIRED_PARAM_NULL');
9393 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.ACTIVATE_WS');
9394 FND_MESSAGE.SET_TOKEN('IEU_UWQ_REQ_PARAM',l_token_str);
9395 fnd_msg_pub.ADD;
9396 fnd_msg_pub.Count_and_Get
9397 (
9398 p_count => x_msg_count,
9399 p_data => x_msg_data
9400 );
9401
9402 x_return_status := fnd_api.g_ret_sts_error;
9403 RAISE fnd_api.g_exc_error;
9404
9405 END IF;
9406
9407 IF p_ws_code is not null
9408 THEN
9409
9410 BEGIN
9411 l_not_valid_flag := 'N';
9412 select ws_code, nvl(active_flag,'N')
9413 into l_ws_code, l_ws_activation_status
9414 from ieu_uwqm_work_sources_b
9415 where ws_code = p_ws_code
9416 -- and nvl(not_valid_flag, 'N') = 'N';
9417 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
9418 EXCEPTION WHEN NO_DATA_FOUND
9419 THEN
9420 l_ws_code := '';
9421 END;
9422
9423 IF (p_ws_code <> nvl(l_ws_code, '-1'))
9424 THEN
9425 l_token_str :=' WS_CODE:'||p_ws_code;
9426 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_COMBINATION');
9427 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.ACTIVATE_WS');
9428 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
9429 fnd_msg_pub.ADD;
9430 fnd_msg_pub.Count_and_Get
9431 (
9432 p_count => x_msg_count,
9433 p_data => x_msg_data
9434 );
9435
9436 x_return_status := fnd_api.g_ret_sts_error;
9437 RAISE fnd_api.g_exc_error;
9438
9439 END IF;
9440
9441 x_ws_activation_status := l_ws_activation_status;
9442
9443 END IF;
9444
9445 EXCEPTION
9446
9447 WHEN fnd_api.g_exc_error THEN
9448
9449 ROLLBACK TO check_ws_activation_status_sp;
9450 x_return_status := fnd_api.g_ret_sts_error;
9451
9452 fnd_msg_pub.Count_and_Get
9453 (
9454 p_count => x_msg_count,
9455 p_data => x_msg_data
9456 );
9457
9458 WHEN fnd_api.g_exc_unexpected_error THEN
9459
9460 ROLLBACK TO check_ws_activation_status_sp;
9461 x_return_status := fnd_api.g_ret_sts_unexp_error;
9462
9463 fnd_msg_pub.Count_and_Get
9464 (
9465 p_count => x_msg_count,
9466 p_data => x_msg_data
9467 );
9468
9469 WHEN OTHERS THEN
9470
9471 ROLLBACK TO check_ws_activation_status_sp;
9472 x_return_status := fnd_api.g_ret_sts_unexp_error;
9473
9474 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
9475 THEN
9476
9477 fnd_msg_pub.Count_and_Get
9478 (
9479 p_count => x_msg_count,
9480 p_data => x_msg_data
9481 );
9482
9483 END IF;
9484 END CHECK_WS_ACTIVATION_STATUS;
9485
9486
9487 PROCEDURE PURGE_WR_ITEM
9488 (
9489 P_API_VERSION_NUMBER IN NUMBER,
9490 P_INIT_MSG_LIST IN VARCHAR2,
9491 P_COMMIT IN VARCHAR2,
9492 P_PROCESSING_SET_ID IN NUMBER,
9493 P_OBJECT_TYPE IN VARCHAR2,
9494 X_RETURN_STATUS OUT NOCOPY VARCHAR2,
9495 X_MSG_COUNT OUT NOCOPY NUMBER,
9496 X_MSG_DATA OUT NOCOPY VARCHAR2
9497 ) AS
9498
9499 l_miss_param_flag NUMBER(1) := 0;
9500 l_token_str VARCHAR2(4000);
9501 l_param_valid_flag NUMBER(1) := 0;
9502 l_workitem_obj_code VARCHAR2(30);
9503
9504 l_msg_data VARCHAR2(4000);
9505 l_msg_count NUMBER;
9506 l_row_count NUMBER;
9507 l_sqlerrm VARCHAR2(2000);
9508
9509 BEGIN
9510
9511 -- Initialize Message list
9512 IF fnd_api.to_boolean(p_init_msg_list)
9513 THEN
9514 FND_MSG_PUB.INITIALIZE;
9515 END IF;
9516
9517 -- Check for NOT NULL columns
9518
9519 IF (p_object_type is null)
9520 THEN
9521 l_miss_param_flag := 1;
9522 l_token_str := l_token_str || ' OBJECT_TYPE ';
9523 END IF;
9524 IF (p_processing_set_id is null)
9525 THEN
9526 l_miss_param_flag := 1;
9527 l_token_str := l_token_str || ' PROCESSING_SET_ID ';
9528 END IF;
9529
9530 If (l_miss_param_flag = 1)
9531 THEN
9532
9533 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_REQUIRED_PARAM_NULL');
9534 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.PURGE_WR_ITEM');
9535 FND_MESSAGE.SET_TOKEN('IEU_UWQ_REQ_PARAM',l_token_str);
9536 fnd_msg_pub.ADD;
9537 fnd_msg_pub.Count_and_Get
9538 (
9539 p_count => x_msg_count,
9540 p_data => x_msg_data
9541 );
9542
9543 x_return_status := fnd_api.g_ret_sts_error;
9544 RAISE fnd_api.g_exc_error;
9545
9546 END IF;
9547
9548 -- Validate object Code
9549
9550 IF (p_object_type is not NULL)
9551 THEN
9552
9553 l_token_str := '';
9554
9555 BEGIN
9556 SELECT 1
9557 INTO l_workitem_obj_code
9558 FROM jtf_objects_b
9559 WHERE object_code = p_object_type;
9560 EXCEPTION
9561 WHEN no_data_found THEN
9562 null;
9563 END;
9564
9565 IF (l_workitem_obj_code is null)
9566 THEN
9567
9568 l_param_valid_flag := 1;
9569 l_token_str := 'WORKITEM_OBJ_CODE : '||p_object_type;
9570
9571 END IF;
9572
9573 IF (l_param_valid_flag = 1)
9574 THEN
9575
9576 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
9577 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.PURGE_WR_ITEM');
9578 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
9579 fnd_msg_pub.ADD;
9580 fnd_msg_pub.Count_and_Get
9581 (
9582 p_count => x_msg_count,
9583 p_data => x_msg_data
9584 );
9585
9586 RAISE fnd_api.g_exc_error;
9587
9588 END IF;
9589
9590 END IF;
9591
9592 fnd_file.put_line(FND_FILE.LOG, 'Deleting rows from table IEU_UWQM_ITEMS');
9593 -- This statement deletes the records from the UWQ work repository table
9594 -- that are linked to an SR that is available in the global temp table
9595 -- with purge status NULL.
9596
9597 DELETE /*+ INDEX(IEU_UWQM_ITEMS IEU_UWQM_ITEMS_U2) */
9598 from IEU_UWQM_ITEMS
9599 WHERE WORKITEM_OBJ_CODE = p_object_type
9600 and WORKITEM_PK_ID in
9601 (
9602 SELECT t.object_id
9603 FROM JTF_OBJECT_PURGE_PARAM_TMP t
9604 WHERE t.object_type = p_object_type
9605 AND t.processing_set_id = p_processing_set_id
9606 AND nvl(t.purge_status,'S') <> 'E'
9607 );
9608
9609 l_row_count := SQL%ROWCOUNT;
9610 fnd_file.put_line(FND_FILE.LOG, 'After deleting data from table IEU_UWQM_ITEMS ' || l_row_count || ' rows');
9611
9612 x_return_status := fnd_api.g_ret_sts_success;
9613
9614 fnd_file.put_line(FND_FILE.LOG, 'Completed work in ' || 'IEU_WR_PUB.PURGE_WR_ITEM' || ' with return status ' || x_return_status);
9615 fnd_file.put_line(FND_FILE.LOG, '--------------------------------------------------------------------------------');
9616
9617 IF (x_return_status <> fnd_api.g_ret_sts_success)
9618 THEN
9619
9620 x_return_status := fnd_api.g_ret_sts_error;
9621 l_token_str := l_msg_data;
9622
9623 FND_MESSAGE.SET_NAME('IEU', 'IEU_PURGE_WR_ITEM_FAILED');
9624 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.PURGE_WR_ITEM');
9625 FND_MESSAGE.SET_TOKEN('DETAILS', l_token_str);
9626
9627 fnd_msg_pub.ADD;
9628 fnd_msg_pub.Count_and_Get
9629 (
9630 p_count => x_msg_count,
9631 p_data => x_msg_data
9632 );
9633
9634 RAISE fnd_api.g_exc_error;
9635 END IF;
9636
9637 IF FND_API.TO_BOOLEAN( p_commit )
9638 THEN
9639 COMMIT WORK;
9640 END iF;
9641
9642 EXCEPTION
9643
9644 WHEN fnd_api.g_exc_error THEN
9645
9646 x_return_status := fnd_api.g_ret_sts_error;
9647 fnd_file.put_line(FND_FILE.LOG, 'Inside WHEN FND_API.G_EXC_ERROR of ' || 'IEU_WR_PUB.PURGE_WR_ITEM');
9648
9649 fnd_msg_pub.Count_and_Get
9650 (
9651 p_count => x_msg_count,
9652 p_data => x_msg_data
9653 );
9654
9655 WHEN fnd_api.g_exc_unexpected_error THEN
9656
9657 x_return_status := fnd_api.g_ret_sts_unexp_error;
9658 fnd_file.put_line(FND_FILE.LOG, 'Inside WHEN FND_API.G_EXC_UNEXPECTED_ERROR of ' || 'IEU_WR_PUB.PURGE_WR_ITEM');
9659
9660 fnd_msg_pub.Count_and_Get
9661 (
9662 p_count => x_msg_count,
9663 p_data => x_msg_data
9664 );
9665
9666 WHEN OTHERS THEN
9667
9668 x_return_status := fnd_api.g_ret_sts_unexp_error;
9669 l_sqlerrm := SQLERRM;
9670
9671 fnd_file.put_line(FND_FILE.LOG, 'Inside WHEN OTHERS of ' || 'IEU_WR_PUB.PURGE_WR_ITEM' || '. Oracle Error was:');
9672 fnd_file.put_line(FND_FILE.LOG, l_sqlerrm);
9673
9674 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
9675 THEN
9676
9677 fnd_msg_pub.Count_and_Get
9678 (
9679 p_count => x_msg_count,
9680 p_data => x_msg_data
9681 );
9682
9683 END IF;
9684
9685 END PURGE_WR_ITEM;
9686
9687
9688 PROCEDURE PURGE_WR_ITEM
9689 ( p_api_version IN NUMBER,
9690 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
9691 p_commit IN VARCHAR2 DEFAULT NULL,
9692 p_workitem_obj_code IN VARCHAR2,
9693 p_workitem_pk_id IN NUMBER,
9694 p_application_id IN NUMBER DEFAULT NULL,
9695 p_audit_trail_rec IN SYSTEM.WR_AUDIT_TRAIL_NST DEFAULT NULL,
9696 x_msg_count OUT NOCOPY NUMBER,
9697 x_msg_data OUT NOCOPY VARCHAR2,
9698 x_return_status OUT NOCOPY VARCHAR2) AS
9699
9700 l_api_version NUMBER := 1.0;
9701 l_api_name VARCHAR2(30);
9702
9703 l_miss_param_flag NUMBER(1) := 0;
9704 l_token_str VARCHAR2(4000);
9705 l_param_valid_flag NUMBER(1) := 0;
9706
9707 l_workitem_obj_code VARCHAR2(30);
9708 l_object_function VARCHAR2(30);
9709
9710 l_msg_data VARCHAR2(4000);
9711
9712 l_owner_id NUMBER;
9713 l_assignee_id NUMBER;
9714 l_owner_type VARCHAR2(25);
9715 l_assignee_type VARCHAR2(25);
9716 l_priority_id NUMBER;
9717 l_priority_level NUMBER;
9718 l_status_id NUMBER := 0;
9719 l_title_len NUMBER := 1990;
9720 -- l_work_item_status_valid_flag VARCHAR2(10);
9721
9722 -- Audit Log
9723 l_action_key VARCHAR2(2000);
9724 l_event_key VARCHAR2(2000);
9725 l_module VARCHAR2(2000);
9726 l_curr_ws_code VARCHAR2(2000);
9727 l_application_id NUMBER;
9728 l_prev_status_id NUMBER;
9729 l_prev_owner_id NUMBER;
9730 l_prev_owner_type VARCHAR2(2000);
9731 l_prev_assignee_id NUMBER;
9732 l_prev_assignee_type VARCHAR2(2000);
9733 l_prev_distribution_status_id NUMBER;
9734 l_prev_priority_id NUMBER;
9735 l_prev_due_date DATE;
9736 l_prev_reschedule_time DATE;
9737 l_ieu_comment_code1 VARCHAR2(2000);
9738 l_ieu_comment_code2 VARCHAR2(2000);
9739 l_ieu_comment_code3 VARCHAR2(2000);
9740 l_ieu_comment_code4 VARCHAR2(2000);
9741 l_ieu_comment_code5 VARCHAR2(2000);
9742 l_workitem_comment_code1 VARCHAR2(2000);
9743 l_workitem_comment_code2 VARCHAR2(2000);
9744 l_workitem_comment_code3 VARCHAR2(2000);
9745 l_workitem_comment_code4 VARCHAR2(2000);
9746 l_workitem_comment_code5 VARCHAR2(2000);
9747
9748 l_ws_code1 VARCHAR2(50);
9749 l_ws_code2 VARCHAR2(50);
9750 l_assct_ws_code VARCHAR2(50);
9751 L_LOG_DIST_FROM VARCHAR(100);
9752 L_LOG_DIST_TO VARCHAR2(100);
9753 l_return_status VARCHAR2(10);
9754
9755 l_audit_trail_rec SYSTEM.WR_AUDIT_TRAIL_NST;
9756 l_prev_source_object_id NUMBER;
9757 l_prev_source_object_type_code VARCHAR2(30);
9758 l_audit_log_id NUMBER;
9759
9760 l_curr_ws_id NUMBER;
9761 l_dist_st_based_on_parent IEU_UWQM_WS_ASSCT_PROPS.DIST_ST_BASED_ON_PARENT_FLAG%TYPE;
9762 l_distribution_status_id NUMBER;
9763 l_parent_dist_status NUMBER;
9764 l_set_dist_id_flag VARCHAR2(5);
9765 l_parent_status_id NUMBER;
9766 l_ws_id NUMBER;
9767 l_ctr NUMBER;
9768 l_msg_count NUMBER;
9769
9770 l_work_item_status_id NUMBER;
9771
9772 l_msg_data2 varchar2(4000);
9773
9774 BEGIN
9775
9776 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
9777 l_api_name := 'PURGE_WR_ITEM';
9778 l_token_str := '';
9779 SAVEPOINT purge_wr_items_sp;
9780 x_return_status := fnd_api.g_ret_sts_success;
9781
9782 IF NOT fnd_api.compatible_api_call (
9783 l_api_version,
9784 p_api_version,
9785 l_api_name,
9786 g_pkg_name
9787 )
9788 THEN
9789 RAISE fnd_api.g_exc_unexpected_error;
9790 END IF;
9791
9792 -- Initialize Message list
9793
9794 IF fnd_api.to_boolean(p_init_msg_list)
9795 THEN
9796 FND_MSG_PUB.INITIALIZE;
9797 END IF;
9798
9799 -- Check for NOT NULL columns
9800
9801 IF (p_workitem_obj_code is null)
9802 THEN
9803 l_miss_param_flag := 1;
9804 l_token_str := l_token_str || ' WORKITEM_OBJECT_CODE ';
9805 END IF;
9806 IF (p_workitem_pk_id is null)
9807 THEN
9808 l_miss_param_flag := 1;
9809 l_token_str := l_token_str || ' WORKITEM_PK_ID ';
9810 END IF;
9811
9812 If (l_miss_param_flag = 1)
9813 THEN
9814
9815 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_REQUIRED_PARAM_NULL');
9816 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.PURGE_WR_ITEM');
9817 FND_MESSAGE.SET_TOKEN('IEU_UWQ_REQ_PARAM',l_token_str);
9818 fnd_msg_pub.ADD;
9819 fnd_msg_pub.Count_and_Get
9820 (
9821 p_count => x_msg_count,
9822 p_data => x_msg_data
9823 );
9824
9825 x_return_status := fnd_api.g_ret_sts_error;
9826 RAISE fnd_api.g_exc_error;
9827
9828 END IF;
9829
9830 -- Validate object Code
9831
9832 IF (p_workitem_obj_code is not NULL)
9833 THEN
9834
9835 l_token_str := '';
9836
9837 BEGIN
9838 SELECT 1
9839 INTO l_workitem_obj_code
9840 FROM jtf_objects_b
9841 WHERE object_code = p_workitem_obj_code;
9842 EXCEPTION
9843 WHEN no_data_found THEN
9844 null;
9845 END;
9846
9847 IF (l_workitem_obj_code is null)
9848 THEN
9849
9850 l_param_valid_flag := 1;
9851 l_token_str := 'WORKITEM_OBJ_CODE : '||p_workitem_obj_code;
9852
9853 END IF;
9854
9855 IF (l_param_valid_flag = 1)
9856 THEN
9857
9858 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_VALUE');
9859 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.PURGE_WR_ITEM');
9860 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
9861 fnd_msg_pub.ADD;
9862 fnd_msg_pub.Count_and_Get
9863 (
9864 p_count => x_msg_count,
9865 p_data => x_msg_data
9866 );
9867
9868 RAISE fnd_api.g_exc_error;
9869
9870 END IF;
9871
9872 END IF;
9873
9874 -- Get the prev values for audit trail
9875 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') OR (l_audit_log_val = 'MINIMAL'))
9876 then
9877 BEGIN
9878 SELECT owner_id, owner_type, assignee_id, assignee_type, status_id,
9879 priority_id, due_date, reschedule_time, distribution_status_id, source_object_id, source_object_type_code
9880 INTO l_prev_owner_id, l_prev_owner_type, l_prev_assignee_id, l_prev_assignee_type, l_prev_status_id,
9881 l_prev_priority_id, l_prev_due_date, l_prev_reschedule_time, l_prev_distribution_status_id,
9882 l_prev_source_object_id, l_prev_source_object_type_code
9883 FROM IEU_UWQM_ITEMS
9884 WHERE workitem_obj_code = p_workitem_obj_code
9885 AND workitem_pk_id = p_workitem_pk_id;
9886
9887 EXCEPTION
9888 WHEN OTHERS THEN
9889 NULL;
9890 END;
9891 end if;
9892
9893 IEU_WR_ITEMS_PKG.DELETE_ROW
9894 ( p_workitem_obj_code,
9895 p_workitem_pk_id,
9896 l_msg_data,
9897 x_return_status
9898 );
9899
9900 -- Insert values to Audit Log
9901
9902 if p_audit_trail_rec is not null then
9903
9904 if p_audit_trail_rec.count > 0
9905 then
9906 for n in p_audit_trail_rec.first..p_audit_trail_rec.last
9907 loop
9908 l_action_key := p_audit_trail_rec(n).action_key;
9909 l_event_key := p_audit_trail_rec(n).event_key;
9910 l_module := p_audit_trail_rec(n).module;
9911 if (l_audit_log_val = 'DETAILED')
9912 then
9913 l_workitem_comment_code1 := p_audit_trail_rec(n).workitem_comment_code1;
9914 l_workitem_comment_code2 := p_audit_trail_rec(n).workitem_comment_code2;
9915 l_workitem_comment_code3 := p_audit_trail_rec(n).workitem_comment_code3;
9916 l_workitem_comment_code4 := p_audit_trail_rec(n).workitem_comment_code4;
9917 l_workitem_comment_code5 := p_audit_trail_rec(n).workitem_comment_code5;
9918 else
9919 l_workitem_comment_code1 := null;
9920 l_workitem_comment_code2 := null;
9921 l_workitem_comment_code3 := null;
9922 l_workitem_comment_code4 := null;
9923 l_workitem_comment_code5 := null;
9924 end if;
9925 end loop;
9926 end if;
9927 end if;
9928
9929 -- Audit Logging should be done only if the Profile Option Value is Full or Detailed
9930 -- However, during the actual Work Item Creation, if the Apps are not integrated,
9931 -- the actions cannot be logged. Hence we will be conditionally logging for
9932 -- Profile Option Value - Minimal. In this case, the Event value will be Null.
9933
9934 if (l_action_key is NULL)
9935 then
9936 l_action_key := 'WORKITEM_PURGE';
9937 end if;
9938
9939 if (l_audit_log_val = 'MINIMAL')
9940 then
9941 l_event_key := null;
9942 end if;
9943
9944 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') )
9945 then
9946
9947 /**
9948 dbms_output.put_line('prev asg: '||l_prev_assignee_type||'curr asg: '||l_assignee_type);
9949 dbms_output.put_line('prev asgid: '||l_prev_assignee_id||'curr asgid: '||m_assignee_id);
9950 dbms_output.put_line('prev owner: '||l_prev_owner_type||'curr own: '||l_owner_type);
9951 dbms_output.put_line('prev ownid: '||l_prev_owner_id||'curr ownid: '||m_owner_id);
9952 **/
9953
9954 if (l_event_key is NULL)
9955 then
9956 l_event_key := 'PURGE_WR_ITEM';
9957 end if;
9958 --end if;
9959 end if;
9960
9961 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') ) OR
9962 ( (l_audit_log_val = 'MINIMAL') AND ( (l_action_key is NULL) OR (l_action_key = 'WORKITEM_PURGE')) )
9963 then
9964
9965 l_msg_data2 := l_msg_data;
9966
9967 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
9968 (
9969 P_ACTION_KEY => l_action_key,
9970 P_EVENT_KEY => l_event_key,
9971 P_MODULE => l_module,
9972 P_WS_CODE => l_curr_ws_code,
9973 P_APPLICATION_ID => p_application_id,
9974 P_WORKITEM_PK_ID => p_workitem_pk_id,
9975 P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
9976 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
9977 P_WORK_ITEM_STATUS_CURR => l_prev_status_id,
9978 P_OWNER_ID_PREV => l_prev_owner_id,
9979 P_OWNER_ID_CURR => l_prev_owner_id,
9980 P_OWNER_TYPE_PREV => l_prev_owner_type,
9981 P_OWNER_TYPE_CURR => l_prev_owner_type,
9982 P_ASSIGNEE_ID_PREV => l_prev_assignee_id,
9983 P_ASSIGNEE_ID_CURR => l_prev_assignee_id,
9984 P_ASSIGNEE_TYPE_PREV => l_prev_assignee_type,
9985 P_ASSIGNEE_TYPE_CURR => l_prev_assignee_type,
9986 P_SOURCE_OBJECT_ID_PREV => l_prev_source_object_id,
9987 P_SOURCE_OBJECT_ID_CURR => l_prev_source_object_id,
9988 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_prev_source_object_type_code,
9989 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_prev_source_object_type_code,
9990 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
9991 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
9992 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
9993 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
9994 P_WORKITEM_DIST_STATUS_PREV => l_prev_distribution_status_id,
9995 P_WORKITEM_DIST_STATUS_CURR => l_prev_distribution_status_id,
9996 P_PRIORITY_PREV => l_prev_priority_id,
9997 P_PRIORITY_CURR => l_prev_priority_id,
9998 P_DUE_DATE_PREV => l_prev_due_date,
9999 P_DUE_DATE_CURR => l_prev_due_date,
10000 P_RESCHEDULE_TIME_PREV => l_prev_reschedule_time,
10001 P_RESCHEDULE_TIME_CURR => l_prev_reschedule_time,
10002 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
10003 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
10004 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
10005 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
10006 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
10007 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
10008 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
10009 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
10010 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
10011 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
10012 P_STATUS => x_return_status,
10013 P_ERROR_CODE => l_msg_data,
10014 X_AUDIT_LOG_ID => l_audit_log_id,
10015 X_MSG_DATA => l_msg_data2,
10016 X_RETURN_STATUS => l_return_status);
10017
10018 end if;
10019
10020 x_return_status := fnd_api.g_ret_sts_success;
10021
10022 IF (x_return_status <> fnd_api.g_ret_sts_success)
10023 THEN
10024
10025 x_return_status := fnd_api.g_ret_sts_error;
10026 l_token_str := l_msg_data;
10027
10028 FND_MESSAGE.SET_NAME('IEU', 'IEU_PURGE_WR_ITEM_FAILED');
10029 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.PURGE_WR_ITEM');
10030 FND_MESSAGE.SET_TOKEN('DETAILS', l_token_str);
10031
10032 fnd_msg_pub.ADD;
10033 fnd_msg_pub.Count_and_Get
10034 (
10035 p_count => x_msg_count,
10036 p_data => x_msg_data
10037 );
10038
10039 RAISE fnd_api.g_exc_error;
10040 END IF;
10041
10042 IF FND_API.TO_BOOLEAN( p_commit )
10043 THEN
10044 COMMIT WORK;
10045 END iF;
10046
10047 EXCEPTION
10048
10049 WHEN fnd_api.g_exc_error THEN
10050
10051 ROLLBACK TO purge_wr_items_sp;
10052 x_return_status := fnd_api.g_ret_sts_error;
10053
10054 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') ) OR
10055 ( (l_audit_log_val = 'MINIMAL') AND ( (l_action_key is NULL) OR (l_action_key = 'WORKITEM_PURGE')) )
10056 then
10057
10058 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
10059 (
10060 P_ACTION_KEY => l_action_key,
10061 P_EVENT_KEY => l_event_key,
10062 P_MODULE => l_module,
10063 P_WS_CODE => l_curr_ws_code,
10064 P_APPLICATION_ID => p_application_id,
10065 P_WORKITEM_PK_ID => p_workitem_pk_id,
10066 P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
10067 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
10068 P_WORK_ITEM_STATUS_CURR => l_prev_status_id,
10069 P_OWNER_ID_PREV => l_prev_owner_id,
10070 P_OWNER_ID_CURR => l_prev_owner_id,
10071 P_OWNER_TYPE_PREV => l_prev_owner_type,
10072 P_OWNER_TYPE_CURR => l_prev_owner_type,
10073 P_ASSIGNEE_ID_PREV => l_prev_assignee_id,
10074 P_ASSIGNEE_ID_CURR => l_prev_assignee_id,
10075 P_ASSIGNEE_TYPE_PREV => l_prev_assignee_type,
10076 P_ASSIGNEE_TYPE_CURR => l_prev_assignee_type,
10077 P_SOURCE_OBJECT_ID_PREV => l_prev_source_object_id,
10078 P_SOURCE_OBJECT_ID_CURR => l_prev_source_object_id,
10079 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_prev_source_object_type_code,
10080 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_prev_source_object_type_code,
10081 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
10082 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
10083 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
10084 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
10085 P_WORKITEM_DIST_STATUS_PREV => l_prev_distribution_status_id,
10086 P_WORKITEM_DIST_STATUS_CURR => l_prev_distribution_status_id,
10087 P_PRIORITY_PREV => l_prev_priority_id,
10088 P_PRIORITY_CURR => l_prev_priority_id,
10089 P_DUE_DATE_PREV => l_prev_due_date,
10090 P_DUE_DATE_CURR => l_prev_due_date,
10091 P_RESCHEDULE_TIME_PREV => l_prev_reschedule_time,
10092 P_RESCHEDULE_TIME_CURR => l_prev_reschedule_time,
10093 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
10094 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
10095 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
10096 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
10097 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
10098 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
10099 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
10100 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
10101 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
10102 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
10103 P_STATUS => x_return_status,
10104 P_ERROR_CODE => l_msg_data,
10105 X_AUDIT_LOG_ID => l_audit_log_id,
10106 X_MSG_DATA => l_msg_data2,
10107 X_RETURN_STATUS => l_return_status);
10108 commit;
10109 end if;
10110
10111 fnd_msg_pub.Count_and_Get
10112 (
10113 p_count => x_msg_count,
10114 p_data => x_msg_data
10115 );
10116
10117 WHEN fnd_api.g_exc_unexpected_error THEN
10118
10119 ROLLBACK TO purge_wr_items_sp;
10120 x_return_status := fnd_api.g_ret_sts_unexp_error;
10121
10122 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') ) OR
10123 ( (l_audit_log_val = 'MINIMAL') AND ( (l_action_key is NULL) OR (l_action_key = 'WORKITEM_PURGE')) )
10124 then
10125
10126 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
10127 (
10128 P_ACTION_KEY => l_action_key,
10129 P_EVENT_KEY => l_event_key,
10130 P_MODULE => l_module,
10131 P_WS_CODE => l_curr_ws_code,
10132 P_APPLICATION_ID => p_application_id,
10133 P_WORKITEM_PK_ID => p_workitem_pk_id,
10134 P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
10135 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
10136 P_WORK_ITEM_STATUS_CURR => l_prev_status_id,
10137 P_OWNER_ID_PREV => l_prev_owner_id,
10138 P_OWNER_ID_CURR => l_prev_owner_id,
10139 P_OWNER_TYPE_PREV => l_prev_owner_type,
10140 P_OWNER_TYPE_CURR => l_prev_owner_type,
10141 P_ASSIGNEE_ID_PREV => l_prev_assignee_id,
10142 P_ASSIGNEE_ID_CURR => l_prev_assignee_id,
10143 P_ASSIGNEE_TYPE_PREV => l_prev_assignee_type,
10144 P_ASSIGNEE_TYPE_CURR => l_prev_assignee_type,
10145 P_SOURCE_OBJECT_ID_PREV => l_prev_source_object_id,
10146 P_SOURCE_OBJECT_ID_CURR => l_prev_source_object_id,
10147 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_prev_source_object_type_code,
10148 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_prev_source_object_type_code,
10149 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
10150 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
10151 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
10152 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
10153 P_WORKITEM_DIST_STATUS_PREV => l_prev_distribution_status_id,
10154 P_WORKITEM_DIST_STATUS_CURR => l_prev_distribution_status_id,
10155 P_PRIORITY_PREV => l_prev_priority_id,
10156 P_PRIORITY_CURR => l_prev_priority_id,
10157 P_DUE_DATE_PREV => l_prev_due_date,
10158 P_DUE_DATE_CURR => l_prev_due_date,
10159 P_RESCHEDULE_TIME_PREV => l_prev_reschedule_time,
10160 P_RESCHEDULE_TIME_CURR => l_prev_reschedule_time,
10161 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
10162 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
10163 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
10164 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
10165 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
10166 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
10167 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
10168 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
10169 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
10170 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
10171 P_STATUS => x_return_status,
10172 P_ERROR_CODE => l_msg_data,
10173 X_AUDIT_LOG_ID => l_audit_log_id,
10174 X_MSG_DATA => l_msg_data2,
10175 X_RETURN_STATUS => l_return_status);
10176 commit;
10177 end if;
10178
10179 fnd_msg_pub.Count_and_Get
10180 (
10181 p_count => x_msg_count,
10182 p_data => x_msg_data
10183 );
10184
10185 WHEN OTHERS THEN
10186
10187 ROLLBACK TO purge_wr_items_sp;
10188 x_return_status := fnd_api.g_ret_sts_unexp_error;
10189
10190 if ( (l_audit_log_val = 'FULL') OR (l_audit_log_val = 'DETAILED') ) OR
10191 ( (l_audit_log_val = 'MINIMAL') AND ( (l_action_key is NULL) OR (l_action_key = 'WORKITEM_PURGE')) )
10192 then
10193
10194 IEU_UWQM_AUDIT_LOG_PKG.INSERT_ROW
10195 (
10196 P_ACTION_KEY => l_action_key,
10197 P_EVENT_KEY => l_event_key,
10198 P_MODULE => l_module,
10199 P_WS_CODE => l_curr_ws_code,
10200 P_APPLICATION_ID => p_application_id,
10201 P_WORKITEM_PK_ID => p_workitem_pk_id,
10202 P_WORKITEM_OBJ_CODE => p_workitem_obj_code,
10203 P_WORK_ITEM_STATUS_PREV => l_prev_status_id,
10204 P_WORK_ITEM_STATUS_CURR => l_prev_status_id,
10205 P_OWNER_ID_PREV => l_prev_owner_id,
10206 P_OWNER_ID_CURR => l_prev_owner_id,
10207 P_OWNER_TYPE_PREV => l_prev_owner_type,
10208 P_OWNER_TYPE_CURR => l_prev_owner_type,
10209 P_ASSIGNEE_ID_PREV => l_prev_assignee_id,
10210 P_ASSIGNEE_ID_CURR => l_prev_assignee_id,
10211 P_ASSIGNEE_TYPE_PREV => l_prev_assignee_type,
10212 P_ASSIGNEE_TYPE_CURR => l_prev_assignee_type,
10213 P_SOURCE_OBJECT_ID_PREV => l_prev_source_object_id,
10214 P_SOURCE_OBJECT_ID_CURR => l_prev_source_object_id,
10215 P_SOURCE_OBJECT_TYPE_CODE_PREV => l_prev_source_object_type_code,
10216 P_SOURCE_OBJECT_TYPE_CODE_CURR => l_prev_source_object_type_code,
10217 P_PARENT_WORKITEM_STATUS_PREV => l_parent_status_id,
10218 P_PARENT_WORKITEM_STATUS_CURR => l_parent_status_id,
10219 P_PARENT_DIST_STATUS_PREV => l_parent_dist_status,
10220 P_PARENT_DIST_STATUS_CURR => l_parent_dist_status,
10221 P_WORKITEM_DIST_STATUS_PREV => l_prev_distribution_status_id,
10222 P_WORKITEM_DIST_STATUS_CURR => l_prev_distribution_status_id,
10223 P_PRIORITY_PREV => l_prev_priority_id,
10224 P_PRIORITY_CURR => l_prev_priority_id,
10225 P_DUE_DATE_PREV => l_prev_due_date,
10226 P_DUE_DATE_CURR => l_prev_due_date,
10227 P_RESCHEDULE_TIME_PREV => l_prev_reschedule_time,
10228 P_RESCHEDULE_TIME_CURR => l_prev_reschedule_time,
10229 P_IEU_COMMENT_CODE1 => l_ieu_comment_code1,
10230 P_IEU_COMMENT_CODE2 => l_ieu_comment_code2,
10231 P_IEU_COMMENT_CODE3 => l_ieu_comment_code3,
10232 P_IEU_COMMENT_CODE4 => l_ieu_comment_code4,
10233 P_IEU_COMMENT_CODE5 => l_ieu_comment_code5,
10234 P_WORKITEM_COMMENT_CODE1 => l_workitem_comment_code1,
10235 P_WORKITEM_COMMENT_CODE2 => l_workitem_comment_code2,
10236 P_WORKITEM_COMMENT_CODE3 => l_workitem_comment_code3,
10237 P_WORKITEM_COMMENT_CODE4 => l_workitem_comment_code4,
10238 P_WORKITEM_COMMENT_CODE5 => l_workitem_comment_code5,
10239 P_STATUS => x_return_status,
10240 P_ERROR_CODE => l_msg_data,
10241 X_AUDIT_LOG_ID => l_audit_log_id,
10242 X_MSG_DATA => l_msg_data2,
10243 X_RETURN_STATUS => l_return_status);
10244 commit;
10245 end if;
10246
10247 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
10248 THEN
10249
10250 fnd_msg_pub.Count_and_Get
10251 (
10252 p_count => x_msg_count,
10253 p_data => x_msg_data
10254 );
10255
10256 END IF;
10257
10258 END PURGE_WR_ITEM;
10259
10260 /**** Wrapper for RESCHEDULE_WORK_ITEM - ER# 4134808****/
10261
10262 PROCEDURE SNOOZE_UWQM_ITEM
10263 ( p_api_version IN NUMBER,
10264 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
10265 p_commit IN VARCHAR2 DEFAULT NULL,
10266 p_workitem_obj_code IN VARCHAR2 DEFAULT NULL,
10267 p_workitem_pk_id IN NUMBER DEFAULT NULL,
10268 p_work_item_id IN NUMBER DEFAULT NULL,
10269 p_reschedule_time IN DATE DEFAULT NULL,
10270 p_user_id IN NUMBER DEFAULT NULL,
10271 p_login_id IN NUMBER DEFAULT NULL,
10272 x_msg_count OUT NOCOPY NUMBER,
10273 x_msg_data OUT NOCOPY VARCHAR2,
10274 x_return_status OUT NOCOPY VARCHAR2) AS
10275 BEGIN
10276 IEU_WR_PUB.RESCHEDULE_UWQM_ITEM
10277 ( p_api_version,
10278 p_init_msg_list,
10279 p_commit,
10280 p_workitem_obj_code,
10281 p_workitem_pk_id,
10282 p_work_item_id,
10283 p_reschedule_time,
10284 p_user_id,
10285 p_login_id,
10286 x_msg_count,
10287 x_msg_data,
10288 x_return_status);
10289 END SNOOZE_UWQM_ITEM;
10290
10291 PROCEDURE DEACTIVATE_WS
10292 ( p_api_version IN NUMBER,
10293 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
10294 p_commit IN VARCHAR2 DEFAULT NULL,
10295 p_ws_code IN VARCHAR2,
10296 x_msg_count OUT NOCOPY NUMBER,
10297 x_msg_data OUT NOCOPY VARCHAR2,
10298 x_return_status OUT NOCOPY VARCHAR2) AS
10299
10300 l_api_version CONSTANT NUMBER := 1.0;
10301 l_api_name CONSTANT VARCHAR2(30) := 'DEACTIVATE_WS';
10302
10303 l_miss_param_flag NUMBER(1) := 0;
10304 l_token_str VARCHAR2(4000);
10305
10306 l_ws_code VARCHAR2(32);
10307 l_ws_id NUMBER;
10308
10309 CURSOR c_child_worksources IS
10310 select ws_code
10311 from ieu_uwqm_work_sources_b b, ieu_uwqm_ws_assct_props p
10312 where b.ws_id = p.ws_id
10313 and p.parent_ws_id = l_ws_id;
10314
10315 BEGIN
10316
10317 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
10318 l_token_str := '';
10319 SAVEPOINT deactivate_ws_sp;
10320 x_return_status := fnd_api.g_ret_sts_success;
10321
10322 IF NOT fnd_api.compatible_api_call (
10323 l_api_version,
10324 p_api_version,
10325 l_api_name,
10326 g_pkg_name
10327 )
10328 THEN
10329 RAISE fnd_api.g_exc_unexpected_error;
10330 END IF;
10331
10332 -- Initialize Message list
10333
10334 IF fnd_api.to_boolean(p_init_msg_list)
10335 THEN
10336 FND_MSG_PUB.INITIALIZE;
10337 END IF;
10338
10339 -- validate parameters
10340
10341 if p_ws_code is null
10342 then
10343 l_miss_param_flag := 1;
10344 l_token_str := l_token_str || ' WS_CODE ';
10345 END IF;
10346
10347 If (l_miss_param_flag = 1)
10348 THEN
10349
10350 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_REQUIRED_PARAM_NULL');
10351 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.DEACTIVATE_WS');
10352 FND_MESSAGE.SET_TOKEN('IEU_UWQ_REQ_PARAM',l_token_str);
10353 fnd_msg_pub.ADD;
10354 fnd_msg_pub.Count_and_Get
10355 (
10356 p_count => x_msg_count,
10357 p_data => x_msg_data
10358 );
10359
10360 x_return_status := fnd_api.g_ret_sts_error;
10361 RAISE fnd_api.g_exc_error;
10362
10363 END IF;
10364
10365 IF p_ws_code is not null
10366 THEN
10367
10368 BEGIN
10369 l_not_valid_flag := 'N';
10370 select ws_code, ws_id
10371 into l_ws_code, l_ws_id
10372 from ieu_uwqm_work_sources_b
10373 where ws_code = p_ws_code
10374 -- and nvl(not_valid_flag, 'N') = 'N';
10375 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
10376 EXCEPTION WHEN NO_DATA_FOUND
10377 THEN
10378 l_ws_code := '';
10379 END;
10380
10381
10382 IF (p_ws_code <> nvl(l_ws_code, '-1'))
10383 THEN
10384 l_token_str :=' WS_CODE:'||p_ws_code;
10385 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_COMBINATION');
10386 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.DEACTIVATE_WS');
10387 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
10388 fnd_msg_pub.ADD;
10389 fnd_msg_pub.Count_and_Get
10390 (
10391 p_count => x_msg_count,
10392 p_data => x_msg_data
10393 );
10394
10395 x_return_status := fnd_api.g_ret_sts_error;
10396 RAISE fnd_api.g_exc_error;
10397
10398 ELSIF p_ws_code = l_ws_code
10399 THEN
10400 l_active_flag := 'N';
10401 update ieu_uwqm_work_sources_b
10402 set active_flag = l_active_flag
10403 where ws_code = p_ws_code;
10404
10405 for cur_rec in c_child_worksources
10406 loop
10407 update ieu_uwqm_work_sources_b
10408 set active_flag = l_active_flag
10409 where ws_code = cur_rec.ws_code;
10410 end loop;
10411
10412 END IF;
10413
10414 END IF;
10415
10416 IF FND_API.TO_BOOLEAN(p_commit)
10417 THEN
10418 COMMIT WORK;
10419 END IF;
10420
10421 EXCEPTION
10422
10423 WHEN fnd_api.g_exc_error THEN
10424
10425 ROLLBACK TO deactivate_ws_sp;
10426 x_return_status := fnd_api.g_ret_sts_error;
10427
10428 fnd_msg_pub.Count_and_Get
10429 (
10430 p_count => x_msg_count,
10431 p_data => x_msg_data
10432 );
10433
10434 WHEN fnd_api.g_exc_unexpected_error THEN
10435
10436 ROLLBACK TO deactivate_ws_sp;
10437 x_return_status := fnd_api.g_ret_sts_unexp_error;
10438
10439 fnd_msg_pub.Count_and_Get
10440 (
10441 p_count => x_msg_count,
10442 p_data => x_msg_data
10443 );
10444
10445 WHEN OTHERS THEN
10446
10447 ROLLBACK TO deactivate_ws_sp;
10448 x_return_status := fnd_api.g_ret_sts_unexp_error;
10449
10450 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
10451 THEN
10452
10453 fnd_msg_pub.Count_and_Get
10454 (
10455 p_count => x_msg_count,
10456 p_data => x_msg_data
10457 );
10458
10459 END IF;
10460
10461 END DEACTIVATE_WS;
10462
10463 PROCEDURE SYNC_WR_ITEMS
10464 ( p_api_version IN NUMBER,
10465 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
10466 p_commit IN VARCHAR2 DEFAULT NULL,
10467 p_processing_set_id IN NUMBER DEFAULT NULL,
10468 p_user_id IN NUMBER DEFAULT NULL,
10469 p_login_id IN NUMBER DEFAULT NULL,
10470 x_msg_count OUT NOCOPY NUMBER,
10471 x_msg_data OUT NOCOPY VARCHAR2,
10472 x_return_status OUT NOCOPY VARCHAR2) AS
10473
10474 l_api_version CONSTANT NUMBER := 1.0;
10475 l_api_name CONSTANT VARCHAR2(30) := 'SYNC_WR_ITEMS';
10476
10477 l_token_str VARCHAR2(4000);
10478 l_miss_param_flag NUMBER(1);
10479
10480 l_count NUMBER;
10481 L_MISS_NUM NUMBER;
10482
10483 TYPE NUMBER_TAB IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
10484 TYPE DATE_TAB IS TABLE OF DATE INDEX BY BINARY_INTEGER;
10485 TYPE WORKITEM_OBJ_CODE_TAB IS TABLE OF IEU_UWQM_ITEMS.WORKITEM_OBJ_CODE%TYPE INDEX BY BINARY_INTEGER;
10486 TYPE TITLE_TAB IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;
10487 TYPE OWNER_TYPE_TAB IS TABLE OF IEU_UWQM_ITEMS.OWNER_TYPE%TYPE INDEX BY BINARY_INTEGER;
10488 TYPE ASSIGNEE_TYPE_TAB IS TABLE OF IEU_UWQM_ITEMS.ASSIGNEE_TYPE%TYPE INDEX BY BINARY_INTEGER;
10489 TYPE SOURCE_OBJECT_TYPE_CODE_TAB IS TABLE OF IEU_UWQM_ITEMS.SOURCE_OBJECT_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
10490 TYPE OWNER_TYPE_ACTUAL_TAB IS TABLE OF IEU_UWQM_ITEMS.OWNER_TYPE_ACTUAL%TYPE INDEX BY BINARY_INTEGER;
10491 TYPE ASSIGNEE_TYPE_ACTUAL_TAB IS TABLE OF IEU_UWQM_ITEMS.ASSIGNEE_TYPE_ACTUAL%TYPE INDEX BY BINARY_INTEGER;
10492 TYPE IEU_ENUM_TYPE_UUID_TAB IS TABLE OF IEU_UWQM_ITEMS.IEU_ENUM_TYPE_UUID%TYPE INDEX BY BINARY_INTEGER;
10493 TYPE WORK_ITEM_NUMBER_TAB IS TABLE OF IEU_UWQM_ITEMS.WORK_ITEM_NUMBER%TYPE INDEX BY BINARY_INTEGER;
10494 TYPE CHAR_TAB IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
10495
10496 WORKITEM_OBJ_CODE_LIST WORKITEM_OBJ_CODE_TAB;
10497 WORKITEM_PK_ID_LIST NUMBER_TAB;
10498
10499 TYPE wr_items_rec IS RECORD
10500 ( WORKITEM_OBJ_CODE_LST WORKITEM_OBJ_CODE_TAB
10501 , WORKITEM_PK_ID_LST NUMBER_TAB
10502 , STATUS_ID_LIST NUMBER_TAB
10503 , PRIORITY_ID_LIST NUMBER_TAB
10504 , PRIORITY_LEVEL_LIST NUMBER_TAB
10505 , DUE_DATE_LIST DATE_TAB
10506 , TITLE_LIST TITLE_TAB
10507 , PARTY_ID_LIST NUMBER_TAB
10508 , OWNER_TYPE_LIST OWNER_TYPE_TAB
10509 , OWNER_ID_LIST NUMBER_TAB
10510 , ASSIGNEE_TYPE_LIST ASSIGNEE_TYPE_TAB
10511 , ASSIGNEE_ID_LIST NUMBER_TAB
10512 , SOURCE_OBJECT_ID_LIST NUMBER_TAB
10513 , SOURCE_OBJECT_TYPE_CODE_LIST SOURCE_OBJECT_TYPE_CODE_TAB
10514 , OWNER_TYPE_ACTUAL_LIST OWNER_TYPE_ACTUAL_TAB
10515 , ASSIGNEE_TYPE_ACTUAL_LIST ASSIGNEE_TYPE_ACTUAL_TAB
10516 , APPLICATION_ID_LIST NUMBER_TAB
10517 , IEU_ENUM_TYPE_UUID_LIST IEU_ENUM_TYPE_UUID_TAB
10518 , WORK_ITEM_NUMBER_LIST WORK_ITEM_NUMBER_TAB
10519 , WS_ID_LIST NUMBER_TAB
10520 , DISTRIBUTION_STATUS_ID_LIST NUMBER_TAB
10521 , l_ins_flag NUMBER_TAB
10522 );
10523
10524 l_wr_items_rec wr_items_rec;
10525
10526 dml_errors EXCEPTION;
10527 PRAGMA exception_init(dml_errors, -24381);
10528 errors number;
10529 err_flag varchar2(1);
10530
10531 BEGIN
10532 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
10533 l_token_str := '';
10534 l_not_valid_flag := 'N';
10535 errors := 0;
10536 err_flag := 'N';
10537 l_miss_param_flag := 0;
10538 L_MISS_NUM := FND_API.G_MISS_NUM;
10539
10540 SAVEPOINT sync_wr_items_sp;
10541 x_return_status := fnd_api.g_ret_sts_success;
10542
10543
10544 -- Check for API Version
10545
10546 IF NOT fnd_api.compatible_api_call (
10547 l_api_version,
10548 p_api_version,
10549 l_api_name,
10550 g_pkg_name
10551 )
10552 THEN
10553 RAISE fnd_api.g_exc_unexpected_error;
10554 END IF;
10555
10556
10557 -- Initialize Message list
10558
10559 IF fnd_api.to_boolean(p_init_msg_list)
10560 THEN
10561 FND_MSG_PUB.INITIALIZE;
10562 END IF;
10563
10564
10565 -- Check for NOT NULL columns
10566
10567 IF ((p_processing_set_id = L_MISS_NUM) or
10568 (p_processing_set_id is null))
10569 THEN
10570 l_miss_param_flag := 1;
10571 l_token_str := l_token_str || ' PROCESSING_SET_ID ';
10572 END IF;
10573
10574
10575 IF ((p_user_id = L_MISS_NUM) or
10576 (p_user_id is null))
10577 THEN
10578 l_miss_param_flag := 1;
10579 l_token_str := l_token_str || ' USER_ID ';
10580 END IF;
10581
10582 If (l_miss_param_flag = 1)
10583 THEN
10584
10585 fnd_file.new_line(FND_FILE.LOG, 1);
10586 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_RQD_VALUE_NULL');
10587 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WR_ITEMS');
10588 FND_MESSAGE.SET_TOKEN('IEU_UWQ_REQ_PARAM',l_token_str);
10589 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
10590
10591 fnd_msg_pub.ADD;
10592 fnd_msg_pub.Count_and_Get
10593 (
10594 p_count => x_msg_count,
10595 p_data => x_msg_data
10596 );
10597
10598 x_return_status := fnd_api.g_ret_sts_error;
10599 RAISE fnd_api.g_exc_error;
10600
10601 END IF;
10602
10603 -- Validate Work Item Status
10604
10605 l_token_str := '';
10606 l_count := '';
10607 WORKITEM_PK_ID_LIST.delete;
10608 WORKITEM_OBJ_CODE_LIST.delete;
10609
10610 SELECT Count(*)
10611 INTO l_count
10612 FROM IEU_UWQM_ITEMS_GTT
10613 WHERE PROCESSING_SET_ID = P_PROCESSING_SET_ID
10614 AND WORKITEM_STATUS NOT IN ('OPEN', 'CLOSE', 'DELETE', 'SLEEP');
10615
10616 IF NVL(l_count, 0) > 0
10617 THEN
10618
10619 SELECT WORKITEM_PK_ID
10620 , WORKITEM_OBJ_CODE
10621 BULK COLLECT INTO
10622 WORKITEM_PK_ID_LIST
10623 , WORKITEM_OBJ_CODE_LIST
10624 FROM IEU_UWQM_ITEMS_GTT
10625 WHERE PROCESSING_SET_ID = P_PROCESSING_SET_ID
10626 AND WORKITEM_STATUS NOT IN ('OPEN', 'CLOSE', 'DELETE', 'SLEEP')
10627 AND ROWNUM <= 5;
10628
10629 FOR i IN WORKITEM_PK_ID_LIST.FIRST..WORKITEM_PK_ID_LIST.LAST
10630 LOOP
10631 l_token_str := l_token_str||WORKITEM_OBJ_CODE_LIST(i)||'-'||TO_CHAR(WORKITEM_PK_ID_LIST(i))||' ';
10632 END LOOP;
10633
10634 fnd_file.new_line(FND_FILE.LOG, 1);
10635 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_INVALID_STATUS');
10636 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WR_ITEMS');
10637 FND_MESSAGE.SET_TOKEN('WORKITEM_OBJ_CODE_AND_PK_ID',l_token_str);
10638 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
10639
10640 fnd_msg_pub.ADD;
10641 fnd_msg_pub.Count_and_Get
10642 (
10643 p_count => x_msg_count,
10644 p_data => x_msg_data
10645 );
10646
10647 x_return_status := fnd_api.g_ret_sts_error;
10648 RAISE fnd_api.g_exc_error;
10649
10650 END IF;
10651
10652
10653 -- Validate object Code, owner_id, owner_type, assignee_id, assignee_type
10654
10655 l_token_str := '';
10656 l_count := '';
10657 WORKITEM_PK_ID_LIST.delete;
10658 WORKITEM_OBJ_CODE_LIST.delete;
10659
10660 SELECT count(*)
10661 INTO l_count
10662 FROM IEU_UWQM_ITEMS_GTT A
10663 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID
10664 AND NOT EXISTS
10665 ( SELECT 1
10666 FROM JTF_OBJECTS_B
10667 WHERE OBJECT_CODE = A.WORKITEM_OBJ_CODE );
10668
10669 IF NVL(l_count, 0) > 0
10670 THEN
10671 SELECT WORKITEM_PK_ID
10672 , WORKITEM_OBJ_CODE
10673 BULK COLLECT INTO
10674 WORKITEM_PK_ID_LIST
10675 , WORKITEM_OBJ_CODE_LIST
10676 FROM IEU_UWQM_ITEMS_GTT A
10677 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID
10678 AND ROWNUM <= 5
10679 AND NOT EXISTS
10680 ( SELECT 1
10681 FROM JTF_OBJECTS_B
10682 WHERE OBJECT_CODE = A.WORKITEM_OBJ_CODE );
10683
10684 FOR i IN WORKITEM_PK_ID_LIST.FIRST..WORKITEM_PK_ID_LIST.LAST
10685 LOOP
10686 l_token_str := l_token_str||WORKITEM_OBJ_CODE_LIST(i)||'-'||TO_CHAR(WORKITEM_PK_ID_LIST(i))||' ';
10687 END LOOP;
10688
10689 fnd_file.new_line(FND_FILE.LOG, 1);
10690 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_INVALID_VALUE');
10691 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WR_ITEMS');
10692 FND_MESSAGE.SET_TOKEN('COLUMN_NAME','WORKITEM_OBJ_CODE');
10693 FND_MESSAGE.SET_TOKEN('WORKITEM_OBJ_CODE_AND_PK_ID',l_token_str);
10694 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
10695
10696 fnd_msg_pub.ADD;
10697 fnd_msg_pub.Count_and_Get
10698 (
10699 p_count => x_msg_count,
10700 p_data => x_msg_data
10701 );
10702
10703 x_return_status := fnd_api.g_ret_sts_error;
10704 RAISE fnd_api.g_exc_error;
10705
10706 END IF;
10707
10708
10709 l_token_str := '';
10710 l_count := '';
10711 WORKITEM_PK_ID_LIST.delete;
10712 WORKITEM_OBJ_CODE_LIST.delete;
10713
10714 SELECT count(*)
10715 INTO l_count
10716 FROM IEU_UWQM_ITEMS_GTT A
10717 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID
10718 AND NOT EXISTS
10719 ( SELECT 1
10720 FROM IEU_UWQM_PRIORITIES_B B
10721 WHERE B.PRIORITY_CODE = A.PRIORITY_CODE );
10722
10723 IF nvl(l_count, 0) > 0
10724 THEN
10725
10726 SELECT WORKITEM_PK_ID
10727 , WORKITEM_OBJ_CODE
10728 BULK COLLECT INTO
10729 WORKITEM_PK_ID_LIST
10730 , WORKITEM_OBJ_CODE_LIST
10731 FROM IEU_UWQM_ITEMS_GTT A
10732 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID
10733 AND ROWNUM <= 5
10734 AND NOT EXISTS
10735 ( SELECT 1
10736 FROM IEU_UWQM_PRIORITIES_B B
10737 WHERE B.PRIORITY_CODE = A.PRIORITY_CODE );
10738
10739 FOR i IN WORKITEM_PK_ID_LIST.FIRST..WORKITEM_PK_ID_LIST.LAST
10740 LOOP
10741 l_token_str := l_token_str||WORKITEM_OBJ_CODE_LIST(i)||'-'||TO_CHAR(WORKITEM_PK_ID_LIST(i))||' ';
10742 END LOOP;
10743
10744 fnd_file.new_line(FND_FILE.LOG, 1);
10745 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_INVALID_VALUE');
10746 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WR_ITEMS');
10747 FND_MESSAGE.SET_TOKEN('COLUMN_NAME','PRIORITY_CODE');
10748 FND_MESSAGE.SET_TOKEN('WORKITEM_OBJ_CODE_AND_PK_ID',l_token_str);
10749 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
10750
10751 fnd_msg_pub.ADD;
10752 fnd_msg_pub.Count_and_Get
10753 (
10754 p_count => x_msg_count,
10755 p_data => x_msg_data
10756 );
10757
10758 x_return_status := fnd_api.g_ret_sts_error;
10759 RAISE fnd_api.g_exc_error;
10760
10761 END IF;
10762
10763
10764 -- Set the Distribution states based on Business Rules
10765
10766 -- Get the Work_source_id
10767
10768 l_token_str := '';
10769 l_count := '';
10770 l_not_valid_flag := 'N';
10771 WORKITEM_PK_ID_LIST.delete;
10772 WORKITEM_OBJ_CODE_LIST.delete;
10773
10774 SELECT count(*)
10775 INTO l_count
10776 FROM IEU_UWQM_ITEMS_GTT A
10777 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID
10778 AND NOT EXISTS
10779 ( SELECT 1
10780 FROM IEU_UWQM_WORK_SOURCES_B
10781 WHERE OBJECT_CODE = A.WORKITEM_OBJ_CODE
10782 AND NVL(NOT_VALID_FLAG, 'N') = L_NOT_VALID_FLAG );
10783
10784 IF NVL(l_count, 0) > 0
10785 THEN
10786
10787 SELECT WORKITEM_PK_ID
10788 , WORKITEM_OBJ_CODE
10789 BULK COLLECT INTO
10790 WORKITEM_PK_ID_LIST
10791 , WORKITEM_OBJ_CODE_LIST
10792 FROM IEU_UWQM_ITEMS_GTT A
10793 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID
10794 AND ROWNUM <= 5
10795 AND NOT EXISTS
10796 ( SELECT 1
10797 FROM IEU_UWQM_WORK_SOURCES_B
10798 WHERE OBJECT_CODE = A.WORKITEM_OBJ_CODE
10799 AND NVL(NOT_VALID_FLAG, 'N') = L_NOT_VALID_FLAG );
10800
10801 FOR i IN WORKITEM_PK_ID_LIST.FIRST..WORKITEM_PK_ID_LIST.LAST
10802 LOOP
10803 l_token_str := l_token_str||WORKITEM_OBJ_CODE_LIST(i)||'-'||TO_CHAR(WORKITEM_PK_ID_LIST(i))||' ';
10804 END LOOP;
10805
10806 -- Work Source does not exist for this Object Code
10807
10808 fnd_file.new_line(FND_FILE.LOG, 1);
10809 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_INVALID_WS');
10810 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WR_ITEMS');
10811 FND_MESSAGE.SET_TOKEN('WORKITEM_OBJ_CODE_AND_PK_ID',l_token_str);
10812 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
10813
10814 fnd_msg_pub.ADD;
10815 fnd_msg_pub.Count_and_Get
10816 (
10817 p_count => x_msg_count,
10818 p_data => x_msg_data
10819 );
10820
10821 x_return_status := fnd_api.g_ret_sts_error;
10822 RAISE fnd_api.g_exc_error;
10823
10824 END IF;
10825
10826
10827 -- Set Distribution Status based on these rules
10828 -- Get the Work_source_id
10829
10830 UPDATE IEU_UWQM_ITEMS_GTT A
10831 SET A.WS_ID1 =
10832 (SELECT B.WS_ID
10833 FROM IEU_UWQM_WORK_SOURCES_B B
10834 WHERE A.WORKITEM_OBJ_CODE = B.OBJECT_CODE
10835 AND NVL(B.NOT_VALID_FLAG, 'N') = L_NOT_VALID_FLAG)
10836 , A.WS_ID2 =
10837 (SELECT C.WS_ID
10838 FROM IEU_UWQM_WORK_SOURCES_B C
10839 WHERE A.SOURCE_OBJECT_TYPE_CODE = C.OBJECT_CODE
10840 AND NVL(C.NOT_VALID_FLAG, 'N') = L_NOT_VALID_FLAG)
10841 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID;
10842
10843
10844 -- Check if Any Work Source Association exists for this combination of Object Code/Source Obj Code
10845
10846 UPDATE IEU_UWQM_ITEMS_GTT A
10847 SET A.ASSOCIATION_WS_ID =
10848 (SELECT B.WS_ID
10849 FROM IEU_UWQM_WS_ASSCT_PROPS B
10850 , IEU_UWQM_WORK_SOURCES_B C
10851 WHERE B.CHILD_WS_ID = A.WS_ID1
10852 AND B.PARENT_WS_ID = A.WS_ID2
10853 AND B.WS_ID = C.WS_ID
10854 AND NVL(C.NOT_VALID_FLAG, 'N') = L_NOT_VALID_FLAG)
10855 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID
10856 AND A.WS_ID2 IS NOT NULL;
10857
10858
10859 -- Get the Distribute_from, Distribute_to
10860
10861 BEGIN
10862 l_not_valid_flag := 'N';
10863
10864 UPDATE IEU_UWQM_ITEMS_GTT A
10865 SET ( A.DIST_ST_BASED_ON_PARENT_FLAG
10866 , A.DIST_FROM
10867 , A.DIST_TO
10868 ) =
10869 (SELECT C.DIST_ST_BASED_ON_PARENT_FLAG
10870 , 'GROUP_OWNED'
10871 , 'INDIVIDUAL_ASSIGNED'
10872 FROM IEU_UWQM_WORK_SOURCES_B B
10873 , IEU_UWQM_WS_ASSCT_PROPS C
10874 WHERE A.ASSOCIATION_WS_ID = B.WS_ID
10875 AND B.WS_ID = C.WS_ID
10876 AND NVL(B.NOT_VALID_FLAG, 'N') = L_NOT_VALID_FLAG)
10877 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID
10878 AND A.ASSOCIATION_WS_ID IS NOT NULL;
10879
10880 EXCEPTION
10881 WHEN OTHERS THEN
10882
10883 -- Work Source Details does not exist for this Object Code
10884 l_token_str := '(IEU_UWQ_SYNC_WR_WS_DTLS_NULL) '||sqlcode||' '||sqlerrm;
10885
10886 fnd_file.new_line(FND_FILE.LOG, 1);
10887 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_WS_DTLS_NULL');
10888 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WR_ITEMS');
10889 FND_MESSAGE.SET_TOKEN('DETAILS',l_token_str);
10890 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
10891
10892 fnd_msg_pub.ADD;
10893 fnd_msg_pub.Count_and_Get
10894 (
10895 p_count => x_msg_count,
10896 p_data => x_msg_data
10897 );
10898
10899 x_return_status := fnd_api.g_ret_sts_error;
10900 RAISE fnd_api.g_exc_error;
10901 END;
10902
10903
10904 -- All validations are successful and continue to set the required values
10905
10906 -- If OWNER_TYPE or ASSIGNEE_TYPE is not RS_GROUP then set it to RS_INDIVIDUAL
10907 -- Set Work Item Status Id
10908 -- set PRIORITY_ID and PRIORITY_LEVEL
10909
10910 UPDATE IEU_UWQM_ITEMS_GTT A
10911 SET A.OWNER_TYPE = CASE WHEN (A.OWNER_TYPE_ACTUAL <> 'RS_GROUP' AND A.OWNER_TYPE_ACTUAL <> 'RS_TEAM') THEN 'RS_INDIVIDUAL'
10912 ELSE A.OWNER_TYPE_ACTUAL
10913 END
10914 , A.ASSIGNEE_TYPE = CASE WHEN (A.ASSIGNEE_TYPE_ACTUAL <> 'RS_GROUP' AND A.ASSIGNEE_TYPE_ACTUAL <> 'RS_TEAM') THEN 'RS_INDIVIDUAL'
10915 ELSE A.ASSIGNEE_TYPE_ACTUAL
10916 END
10917 , A.STATUS_ID = DECODE(A.WORKITEM_STATUS, 'OPEN', 0, 'CLOSE', 3, 'DELETE', 4, 'SLEEP', 5, A.STATUS_ID)
10918 , ( A.PRIORITY_ID
10919 , A.PRIORITY_LEVEL
10920 ) =
10921 (SELECT B.PRIORITY_ID
10922 , B.PRIORITY_LEVEL
10923 FROM IEU_UWQM_PRIORITIES_B B
10924 WHERE A.PRIORITY_CODE = B.PRIORITY_CODE)
10925 WHERE PROCESSING_SET_ID = P_PROCESSING_SET_ID;
10926
10927
10928 UPDATE IEU_UWQM_ITEMS_GTT A
10929 SET A.DIST_FROM = 'GROUP_OWNED'
10930 , A.DIST_TO = 'INDIVIDUAL_ASSIGNED'
10931 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID
10932 AND A.ASSOCIATION_WS_ID IS NULL;
10933
10934 UPDATE IEU_UWQM_ITEMS_GTT A
10935 SET A.WS_ID = NVL(A.ASSOCIATION_WS_ID, A.WS_ID1)
10936 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID;
10937
10938
10939 -- If the Distribution State is based on the Parent, then check if the parent is distributed.
10940
10941 UPDATE IEU_UWQM_ITEMS_GTT A
10942 SET ( A.PARENT_STATUS_ID
10943 , A.PARENT_DIST_STATUS_ID
10944 ) =
10945 (SELECT B.STATUS_ID
10946 , B.DISTRIBUTION_STATUS_ID
10947 FROM IEU_UWQM_ITEMS B
10948 WHERE A.SOURCE_OBJECT_ID = B.WORKITEM_PK_ID
10949 AND A.SOURCE_OBJECT_TYPE_CODE = B.WORKITEM_OBJ_CODE)
10950 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID
10951 AND A.DIST_ST_BASED_ON_PARENT_FLAG = 'Y';
10952
10953
10954 -- If the parent is not distributed, then this item will be in "On-Hold/Unavailable" status
10955 -- else set the status based on distribute_from and distribute_to
10956
10957 UPDATE IEU_UWQM_ITEMS_GTT
10958 SET DIST_ID_FLAG = CASE WHEN DIST_ST_BASED_ON_PARENT_FLAG = 'Y' THEN
10959 CASE WHEN PARENT_STATUS_ID = 3 THEN 'T'
10960 ELSE CASE WHEN PARENT_DIST_STATUS_ID <> 3 THEN 'F'
10961 ELSE 'T'
10962 END
10963 END
10964 ELSE 'T'
10965 END
10966 WHERE PROCESSING_SET_ID = P_PROCESSING_SET_ID;
10967
10968 UPDATE IEU_UWQM_ITEMS_GTT
10969 SET DISTRIBUTION_STATUS_ID = CASE WHEN (DIST_ID_FLAG = 'T') THEN
10970 CASE WHEN (PARENT_DIST_STATUS_ID <> 3) THEN 0
10971 ELSE CASE WHEN (DIST_FROM = 'GROUP_OWNED') AND (DIST_TO = 'INDIVIDUAL_ASSIGNED') THEN
10972 CASE WHEN (OWNER_TYPE = 'RS_GROUP') AND ((ASSIGNEE_TYPE IS NULL)
10973 OR (ASSIGNEE_TYPE <> 'RS_INDIVIDUAL')) THEN 1
10974 ELSE CASE WHEN (ASSIGNEE_TYPE = 'RS_INDIVIDUAL') THEN 3
10975 ELSE 0
10976 END
10977 END
10978 ELSE 0
10979 END
10980 END
10981 ELSE 0
10982 END
10983 WHERE PROCESSING_SET_ID = P_PROCESSING_SET_ID;
10984
10985
10986 BEGIN
10987 x_return_status := fnd_api.g_ret_sts_success;
10988 l_wr_items_rec.WORKITEM_OBJ_CODE_LST.delete;
10989 l_wr_items_rec.WORKITEM_PK_ID_LST.delete;
10990 l_wr_items_rec.STATUS_ID_LIST.delete;
10991 l_wr_items_rec.PRIORITY_ID_LIST.delete;
10992 l_wr_items_rec.PRIORITY_LEVEL_LIST.delete;
10993 l_wr_items_rec.DUE_DATE_LIST.delete;
10994 l_wr_items_rec.TITLE_LIST.delete;
10995 l_wr_items_rec.PARTY_ID_LIST.delete;
10996 l_wr_items_rec.OWNER_TYPE_LIST.delete;
10997 l_wr_items_rec.OWNER_ID_LIST.delete;
10998 l_wr_items_rec.ASSIGNEE_TYPE_LIST.delete;
10999 l_wr_items_rec.ASSIGNEE_ID_LIST.delete;
11000 l_wr_items_rec.SOURCE_OBJECT_ID_LIST.delete;
11001 l_wr_items_rec.SOURCE_OBJECT_TYPE_CODE_LIST.delete;
11002 l_wr_items_rec.OWNER_TYPE_ACTUAL_LIST.delete;
11003 l_wr_items_rec.ASSIGNEE_TYPE_ACTUAL_LIST.delete;
11004 l_wr_items_rec.APPLICATION_ID_LIST.delete;
11005 l_wr_items_rec.IEU_ENUM_TYPE_UUID_LIST.delete;
11006 l_wr_items_rec.WORK_ITEM_NUMBER_LIST.delete;
11007 l_wr_items_rec.WS_ID_LIST.delete;
11008 l_wr_items_rec.DISTRIBUTION_STATUS_ID_LIST.delete;
11009
11010 SELECT WORKITEM_OBJ_CODE
11011 , WORKITEM_PK_ID
11012 , STATUS_ID
11013 , PRIORITY_ID
11014 , PRIORITY_LEVEL
11015 , DUE_DATE
11016 , TITLE
11017 , PARTY_ID
11018 , OWNER_TYPE
11019 , OWNER_ID
11020 , ASSIGNEE_TYPE
11021 , ASSIGNEE_ID
11022 , SOURCE_OBJECT_ID
11023 , SOURCE_OBJECT_TYPE_CODE
11024 , OWNER_TYPE_ACTUAL
11025 , ASSIGNEE_TYPE_ACTUAL
11026 , APPLICATION_ID
11027 , IEU_ENUM_TYPE_UUID
11028 , WORK_ITEM_NUMBER
11029 , WS_ID
11030 , DISTRIBUTION_STATUS_ID
11031 , 1
11032 BULK COLLECT INTO l_wr_items_rec.WORKITEM_OBJ_CODE_LST
11033 , l_wr_items_rec.WORKITEM_PK_ID_LST
11034 , l_wr_items_rec.STATUS_ID_LIST
11035 , l_wr_items_rec.PRIORITY_ID_LIST
11036 , l_wr_items_rec.PRIORITY_LEVEL_LIST
11037 , l_wr_items_rec.DUE_DATE_LIST
11038 , l_wr_items_rec.TITLE_LIST
11039 , l_wr_items_rec.PARTY_ID_LIST
11040 , l_wr_items_rec.OWNER_TYPE_LIST
11041 , l_wr_items_rec.OWNER_ID_LIST
11042 , l_wr_items_rec.ASSIGNEE_TYPE_LIST
11043 , l_wr_items_rec.ASSIGNEE_ID_LIST
11044 , l_wr_items_rec.SOURCE_OBJECT_ID_LIST
11045 , l_wr_items_rec.SOURCE_OBJECT_TYPE_CODE_LIST
11046 , l_wr_items_rec.OWNER_TYPE_ACTUAL_LIST
11047 , l_wr_items_rec.ASSIGNEE_TYPE_ACTUAL_LIST
11048 , l_wr_items_rec.APPLICATION_ID_LIST
11049 , l_wr_items_rec.IEU_ENUM_TYPE_UUID_LIST
11050 , l_wr_items_rec.WORK_ITEM_NUMBER_LIST
11051 , l_wr_items_rec.WS_ID_LIST
11052 , l_wr_items_rec.DISTRIBUTION_STATUS_ID_LIST
11053 , l_wr_items_rec.l_ins_flag
11054 FROM IEU_UWQM_ITEMS_GTT
11055 WHERE PROCESSING_SET_ID = P_PROCESSING_SET_ID;
11056
11057 IF l_wr_items_rec.WORKITEM_OBJ_CODE_LST.FIRST IS NOT NULL THEN
11058 FORALL i IN l_wr_items_rec.WORKITEM_OBJ_CODE_LST.FIRST..l_wr_items_rec.WORKITEM_OBJ_CODE_LST.LAST SAVE EXCEPTIONS
11059 INSERT INTO IEU_UWQM_ITEMS
11060 ( WORK_ITEM_ID
11061 , OBJECT_VERSION_NUMBER
11062 , CREATED_BY
11063 , CREATION_DATE
11064 , LAST_UPDATED_BY
11065 , LAST_UPDATE_DATE
11066 , LAST_UPDATE_LOGIN
11067 , WORKITEM_OBJ_CODE
11068 , WORKITEM_PK_ID
11069 , WORK_ITEM_NUMBER
11070 , STATUS_ID
11071 , PRIORITY_ID
11072 , PRIORITY_LEVEL
11073 , DUE_DATE
11074 , TITLE
11075 , PARTY_ID
11076 , OWNER_ID
11077 , OWNER_TYPE
11078 , ASSIGNEE_ID
11079 , ASSIGNEE_TYPE
11080 , OWNER_TYPE_ACTUAL
11081 , ASSIGNEE_TYPE_ACTUAL
11082 , SOURCE_OBJECT_ID
11083 , SOURCE_OBJECT_TYPE_CODE
11084 , APPLICATION_ID
11085 , IEU_ENUM_TYPE_UUID
11086 , RESCHEDULE_TIME
11087 , STATUS_UPDATE_USER_ID
11088 , WS_ID
11089 , DISTRIBUTION_STATUS_ID
11090 ) VALUES
11091 ( IEU_UWQM_ITEMS_S1.NEXTVAL
11092 , 1
11093 , P_USER_ID
11094 , SYSDATE
11095 , P_USER_ID
11096 , SYSDATE
11097 , P_LOGIN_ID
11098 , l_wr_items_rec.WORKITEM_OBJ_CODE_LST(i)
11099 , l_wr_items_rec.WORKITEM_PK_ID_LST(i)
11100 , l_wr_items_rec.WORK_ITEM_NUMBER_LIST(i)
11101 , l_wr_items_rec.STATUS_ID_LIST(i)
11102 , l_wr_items_rec.PRIORITY_ID_LIST(i)
11103 , l_wr_items_rec.PRIORITY_LEVEL_LIST(i)
11104 , l_wr_items_rec.DUE_DATE_LIST(i)
11105 , l_wr_items_rec.TITLE_LIST(i)
11106 , l_wr_items_rec.PARTY_ID_LIST(i)
11107 , l_wr_items_rec.OWNER_ID_LIST(i)
11108 , l_wr_items_rec.OWNER_TYPE_LIST(i)
11109 , l_wr_items_rec.ASSIGNEE_ID_LIST(i)
11110 , l_wr_items_rec.ASSIGNEE_TYPE_LIST(i)
11111 , l_wr_items_rec.OWNER_TYPE_ACTUAL_LIST(i)
11112 , l_wr_items_rec.ASSIGNEE_TYPE_ACTUAL_LIST(i)
11113 , l_wr_items_rec.SOURCE_OBJECT_ID_LIST(i)
11114 , l_wr_items_rec.SOURCE_OBJECT_TYPE_CODE_LIST(i)
11115 , l_wr_items_rec.APPLICATION_ID_LIST(i)
11116 , l_wr_items_rec.IEU_ENUM_TYPE_UUID_LIST(i)
11117 , SYSDATE
11118 , P_USER_ID
11119 , l_wr_items_rec.WS_ID_LIST(i)
11120 , l_wr_items_rec.DISTRIBUTION_STATUS_ID_LIST(i)
11121 );
11122 END IF;
11123 EXCEPTION
11124 WHEN dml_errors THEN
11125 errors := SQL%BULK_EXCEPTIONS.COUNT;
11126 FOR i IN 1..errors LOOP
11127 l_wr_items_rec.l_ins_flag(SQL%BULK_EXCEPTIONS(i).ERROR_INDEX) := 0;
11128
11129 IF SQL%BULK_EXCEPTIONS(i).ERROR_CODE <> 1 then
11130 err_flag := 'Y';
11131
11132 fnd_file.new_line(FND_FILE.LOG, 1);
11133 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_INSERT_FAILED');
11134 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME', 'IEU_WR_PUB.SYNC_WR_ITEMS');
11135 FND_MESSAGE.SET_TOKEN('DETAILS', 'WORKITEM_PK_ID:'||l_wr_items_rec.WORKITEM_PK_ID_LST(SQL%BULK_EXCEPTIONS(i).ERROR_INDEX) ||' Error: '||SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
11136 fnd_file.put_line(FND_FILE.LOG,SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
11137 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11138
11139 fnd_msg_pub.ADD;
11140 fnd_msg_pub.Count_and_Get
11141 (
11142 p_count => x_msg_count,
11143 p_data => x_msg_data
11144 );
11145
11146 END IF;
11147 END LOOP;
11148
11149 IF err_flag = 'Y' THEN
11150 x_return_status := fnd_api.g_ret_sts_error;
11151 RAISE fnd_api.g_exc_error;
11152 END IF;
11153
11154 if (errors > 0) then
11155 BEGIN
11156 FORALL i in l_wr_items_rec.WORKITEM_OBJ_CODE_LST.FIRST..l_wr_items_rec.WORKITEM_OBJ_CODE_LST.LAST SAVE EXCEPTIONS
11157 UPDATE IEU_UWQM_ITEMS
11158 SET OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER + 1
11159 , CREATED_BY = P_USER_ID
11160 , CREATION_DATE = SYSDATE
11161 , LAST_UPDATED_BY = P_USER_ID
11162 , LAST_UPDATE_DATE = SYSDATE
11163 , LAST_UPDATE_LOGIN = P_LOGIN_ID
11164 , STATUS_UPDATE_USER_ID = P_USER_ID
11165 , RESCHEDULE_TIME = SYSDATE
11166 , STATUS_ID = l_wr_items_rec.STATUS_ID_LIST(i)
11167 , PRIORITY_ID = l_wr_items_rec.PRIORITY_ID_LIST(i)
11168 , PRIORITY_LEVEL = l_wr_items_rec.PRIORITY_LEVEL_LIST(i)
11169 , DUE_DATE = l_wr_items_rec.DUE_DATE_LIST(i)
11170 , TITLE = l_wr_items_rec.TITLE_LIST(i)
11171 , PARTY_ID = l_wr_items_rec.PARTY_ID_LIST(i)
11172 , OWNER_TYPE = l_wr_items_rec.OWNER_TYPE_LIST(i)
11173 , OWNER_ID = l_wr_items_rec.OWNER_ID_LIST(i)
11174 , ASSIGNEE_TYPE = l_wr_items_rec.ASSIGNEE_TYPE_LIST(i)
11175 , ASSIGNEE_ID = l_wr_items_rec.ASSIGNEE_ID_LIST(i)
11176 , SOURCE_OBJECT_ID = l_wr_items_rec.SOURCE_OBJECT_ID_LIST(i)
11177 , SOURCE_OBJECT_TYPE_CODE = l_wr_items_rec.SOURCE_OBJECT_TYPE_CODE_LIST(i)
11178 , OWNER_TYPE_ACTUAL = l_wr_items_rec.OWNER_TYPE_ACTUAL_LIST(i)
11179 , ASSIGNEE_TYPE_ACTUAL = l_wr_items_rec.ASSIGNEE_TYPE_ACTUAL_LIST(i)
11180 , APPLICATION_ID = l_wr_items_rec.APPLICATION_ID_LIST(i)
11181 , IEU_ENUM_TYPE_UUID = l_wr_items_rec.IEU_ENUM_TYPE_UUID_LIST(i)
11182 , WORK_ITEM_NUMBER = l_wr_items_rec.WORK_ITEM_NUMBER_LIST(i)
11183 , WS_ID = l_wr_items_rec.WS_ID_LIST(i)
11184 , DISTRIBUTION_STATUS_ID = l_wr_items_rec.DISTRIBUTION_STATUS_ID_LIST(i)
11185 WHERE WORKITEM_OBJ_CODE = l_wr_items_rec.WORKITEM_OBJ_CODE_LST(i)
11186 AND WORKITEM_PK_ID = l_wr_items_rec.WORKITEM_PK_ID_LST(i)
11187 AND l_wr_items_rec.l_ins_flag(i) = 0;
11188 EXCEPTION
11189 WHEN dml_errors THEN
11190 errors := SQL%BULK_EXCEPTIONS.COUNT;
11191
11192 FOR i IN 1..errors LOOP
11193 fnd_file.new_line(FND_FILE.LOG, 1);
11194 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_UPDATE_FAILED');
11195 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME', 'IEU_WR_PUB.SYNC_WR_ITEMS');
11196 FND_MESSAGE.SET_TOKEN('DETAILS', ' WORKITEM_PK_ID:'||l_wr_items_rec.WORKITEM_PK_ID_LST(SQL%BULK_EXCEPTIONS(i).ERROR_INDEX) ||' Error: '||SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
11197
11198 fnd_file.put_line(FND_FILE.LOG,SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
11199 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11200
11201 fnd_msg_pub.ADD;
11202 fnd_msg_pub.Count_and_Get
11203 (
11204 p_count => x_msg_count,
11205 p_data => x_msg_data
11206 );
11207 END LOOP;
11208
11209 x_return_status := fnd_api.g_ret_sts_error;
11210 RAISE fnd_api.g_exc_error;
11211 END;
11212 end if;
11213
11214 l_wr_items_rec.WORKITEM_OBJ_CODE_LST.delete;
11215 l_wr_items_rec.WORKITEM_PK_ID_LST.delete;
11216 l_wr_items_rec.STATUS_ID_LIST.delete;
11217 l_wr_items_rec.PRIORITY_ID_LIST.delete;
11218 l_wr_items_rec.PRIORITY_LEVEL_LIST.delete;
11219 l_wr_items_rec.DUE_DATE_LIST.delete;
11220 l_wr_items_rec.TITLE_LIST.delete;
11221 l_wr_items_rec.PARTY_ID_LIST.delete;
11222 l_wr_items_rec.OWNER_TYPE_LIST.delete;
11223 l_wr_items_rec.OWNER_ID_LIST.delete;
11224 l_wr_items_rec.ASSIGNEE_TYPE_LIST.delete;
11225 l_wr_items_rec.ASSIGNEE_ID_LIST.delete;
11226 l_wr_items_rec.SOURCE_OBJECT_ID_LIST.delete;
11227 l_wr_items_rec.SOURCE_OBJECT_TYPE_CODE_LIST.delete;
11228 l_wr_items_rec.OWNER_TYPE_ACTUAL_LIST.delete;
11229 l_wr_items_rec.ASSIGNEE_TYPE_ACTUAL_LIST.delete;
11230 l_wr_items_rec.APPLICATION_ID_LIST.delete;
11231 l_wr_items_rec.IEU_ENUM_TYPE_UUID_LIST.delete;
11232 l_wr_items_rec.WORK_ITEM_NUMBER_LIST.delete;
11233 l_wr_items_rec.WS_ID_LIST.delete;
11234 l_wr_items_rec.DISTRIBUTION_STATUS_ID_LIST.delete;
11235 END;
11236
11237 IF FND_API.TO_BOOLEAN( p_commit ) THEN
11238 COMMIT WORK;
11239 END IF;
11240
11241
11242 EXCEPTION
11243
11244 WHEN fnd_api.g_exc_error THEN
11245
11246 ROLLBACK TO sync_wr_items_sp;
11247 x_return_status := fnd_api.g_ret_sts_error;
11248
11249 fnd_msg_pub.Count_and_Get
11250 (
11251 p_count => x_msg_count,
11252 p_data => x_msg_data
11253 );
11254
11255 WHEN fnd_api.g_exc_unexpected_error THEN
11256
11257 ROLLBACK TO sync_wr_items_sp;
11258 x_return_status := fnd_api.g_ret_sts_unexp_error;
11259
11260 fnd_msg_pub.Count_and_Get
11261 (
11262 p_count => x_msg_count,
11263 p_data => x_msg_data
11264 );
11265
11266 WHEN OTHERS THEN
11267 x_msg_data := sqlcode||' '||sqlerrm;
11268
11269 ROLLBACK TO sync_wr_items_sp;
11270 x_return_status := fnd_api.g_ret_sts_unexp_error;
11271
11272 FND_FILE.PUT_LINE(FND_FILE.LOG, x_msg_data);
11273 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
11274 THEN
11275
11276 fnd_msg_pub.Count_and_Get
11277 (
11278 p_count => x_msg_count,
11279 p_data => x_msg_data
11280 );
11281
11282 END IF;
11283 END SYNC_WR_ITEMS;
11284
11285 PROCEDURE SYNC_ASSCT_TASK_WR_ITEMS
11286 ( p_api_version IN NUMBER,
11287 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
11288 p_commit IN VARCHAR2 DEFAULT NULL,
11289 p_ws_code IN VARCHAR2 DEFAULT NULL,
11290 x_msg_count OUT NOCOPY NUMBER,
11291 x_msg_data OUT NOCOPY VARCHAR2,
11292 x_return_status OUT NOCOPY VARCHAR2) AS
11293
11294 l_api_version CONSTANT NUMBER := 1.0;
11295 l_api_name CONSTANT VARCHAR2(30) := 'SYNC_ASSCT_TASK_WR_ITEMS';
11296
11297 l_token_str VARCHAR2(4000);
11298
11299 l_ws_id NUMBER;
11300 l_parent_ws_id NUMBER;
11301 l_child_ws_id NUMBER;
11302 l_parent_obj_code VARCHAR2(500);
11303 l_child_obj_code VARCHAR2(500);
11304 l_ws_type VARCHAR2(500);
11305 l_obj_code VARCHAR2(500);
11306 l_dist_st_based_on_parent VARCHAR2(5);
11307 l_tasks_rules_func varchar2(256);
11308
11309 l_msg_count number;
11310 l_msg_data VARCHAR2(4000);
11311 l_return_status varchar2(1);
11312 l_error_count number;
11313
11314 cursor c_task(p_source_object_type_code in varchar2) is
11315 select /*+ ordered parallel(tb) parallel(tt) use_nl(tp,ip,sts_b) */
11316 tb.task_id
11317 , tb.task_priority_id
11318 , tp.importance_level
11319 , decode(tb.date_selected, 'P', tb.planned_end_date, 'A', tb.actual_end_date, 'S', tb.scheduled_end_date, null, tb.scheduled_end_date) due_date
11320 , substr(tt.task_name,1,1990) task_name
11321 , tb.customer_id
11322 , tb.owner_type_code
11323 , tb.owner_id
11324 , tb.source_object_id
11325 , tb.source_object_type_code
11326 , tb.task_number
11327 , tb.planned_start_date
11328 , tb.planned_end_date
11329 , tb.actual_start_date
11330 , tb.actual_end_date
11331 , tb.scheduled_start_date
11332 , tb.scheduled_end_date
11333 , tb.task_type_id
11334 , ip.priority_code
11335 , tb.date_selected
11336 , decode(nvl(sts_b.on_hold_flag, 'N'), 'Y', 'SLEEP', 'OPEN') workitem_status
11337 , tb.task_status_id
11338 from jtf_tasks_b tb
11339 , jtf_tasks_tl tt
11340 , jtf_task_priorities_vl tp
11341 , ieu_uwqm_priorities_b ip
11342 , jtf_task_statuses_b sts_b
11343 where tb.entity = 'TASK'
11344 and nvl(tb.deleted_flag, 'N') = 'N'
11345 and tb.task_id = tt.task_id
11346 and tt.language = userenv('LANG')
11347 and tp.task_priority_id = nvl(tb.task_priority_id, 4)
11348 and least(tp.importance_level, 4) = ip.priority_level
11349 and tb.open_flag = 'Y'
11350 and tb.task_status_id = sts_b.task_status_id
11351 and tb.source_object_type_code = p_source_object_type_code;
11352
11353 TYPE NUMBER_TAB IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
11354 TYPE DATE_TAB IS TABLE OF DATE INDEX BY BINARY_INTEGER;
11355 TYPE TITLE_TAB IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;
11356 TYPE WORK_ITEM_NUMBER_TAB IS TABLE OF IEU_UWQM_ITEMS.WORK_ITEM_NUMBER%TYPE INDEX BY BINARY_INTEGER;
11357 TYPE CHAR_TAB IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
11358
11359
11360 TYPE ws_details_rec IS RECORD
11361 ( WORKITEM_PK_ID_LIST NUMBER_TAB
11362 , TASK_PRIORITY_ID_LIST NUMBER_TAB
11363 , IMPORTANCE_LEVEL_LIST NUMBER_TAB
11364 , DUE_DATE_LIST DATE_TAB
11365 , TITLE_LIST TITLE_TAB
11366 , PARTY_ID_LIST NUMBER_TAB
11367 , OWNER_TYPE_LIST CHAR_TAB
11368 , OWNER_ID_LIST NUMBER_TAB
11369 , SOURCE_OBJECT_ID_LIST NUMBER_TAB
11370 , SOURCE_OBJECT_TYPE_CODE_LIST CHAR_TAB
11371 , WORK_ITEM_NUMBER_LIST WORK_ITEM_NUMBER_TAB
11372 , PLANNED_START_DATE_LIST DATE_TAB
11373 , PLANNED_END_DATE_LIST DATE_TAB
11374 , ACTUAL_START_DATE_LIST DATE_TAB
11375 , ACTUAL_END_DATE_LIST DATE_TAB
11376 , SCHEDULED_START_DATE_LIST DATE_TAB
11377 , SCHEDULED_END_DATE_LIST DATE_TAB
11378 , TASK_TYPE_ID_LIST NUMBER_TAB
11379 , PRIORITY_CODE_LIST CHAR_TAB
11380 , DATE_SELECTED_LIST CHAR_TAB
11381 , WORKITEM_STATUS_LIST CHAR_TAB
11382 , STATUS_ID NUMBER_TAB
11383 );
11384
11385 l_ws_details_rec ws_details_rec;
11386
11387 dml_errors EXCEPTION;
11388 PRAGMA exception_init(dml_errors, -24381);
11389 errors number;
11390 l_limit NUMBER;
11391 l_processing_set_id NUMBER;
11392 l_active_flag varchar2(1);
11393 l_ws_name varchar2(1000);
11394 l_parent_ws_name varchar2(1000);
11395
11396 CURSOR c_task_status(p_source_object_type_code in varchar2) IS
11397 SELECT TASK_ID,
11398 DECODE(DELETED_FLAG, 'Y', 4, 3) "STATUS_ID"
11399 FROM JTF_TASKS_B
11400 WHERE SOURCE_OBJECT_TYPE_CODE = p_source_object_type_code
11401 AND ((OPEN_FLAG = 'N' AND DELETED_FLAG = 'N') OR (DELETED_FLAG = 'Y'))
11402 AND ENTITY = 'TASK';
11403
11404 TYPE status_rec is RECORD
11405 (
11406 l_task_id_list NUMBER_TAB,
11407 l_status_id_list NUMBER_TAB
11408 );
11409
11410 l_task_status_rec status_rec;
11411 l_done BOOLEAN;
11412
11413 BEGIN
11414 l_error_count := 0;
11415 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
11416 l_token_str := '';
11417 l_limit := 2000;
11418
11419 SAVEPOINT sync_assct_task_wr_items_sp;
11420
11421 x_return_status := fnd_api.g_ret_sts_success;
11422
11423 -- Check for API Version
11424
11425 IF NOT fnd_api.compatible_api_call (
11426 l_api_version,
11427 p_api_version,
11428 l_api_name,
11429 g_pkg_name
11430 )
11431 THEN
11432 RAISE fnd_api.g_exc_unexpected_error;
11433 END IF;
11434
11435 -- Initialize Message list
11436
11437 IF fnd_api.to_boolean(p_init_msg_list)
11438 THEN
11439 FND_MSG_PUB.INITIALIZE;
11440 END IF;
11441
11442
11443 -- Set the Distribution states based on Business Rules
11444
11445 -- Get the Work_source_id
11446
11447 BEGIN
11448 l_not_valid_flag := 'N';
11449 Select ws_id, ws_type, object_code
11450 into l_ws_id, l_ws_type, l_obj_code
11451 from ieu_uwqm_work_sources_b
11452 where ws_code = p_ws_code
11453 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
11454
11455 EXCEPTION
11456 WHEN OTHERS THEN
11457
11458 -- Work Source does not exist for this Object Code
11459 l_token_str := 'WS_CODE: '||p_ws_code;
11460
11461 fnd_file.new_line(FND_FILE.LOG, 1);
11462 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
11463 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_ASSCT_TASK_WR_ITEMS');
11464 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
11465 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11466
11467 fnd_msg_pub.ADD;
11468 fnd_msg_pub.Count_and_Get
11469 (
11470 p_count => x_msg_count,
11471 p_data => x_msg_data
11472 );
11473
11474 RAISE fnd_api.g_exc_error;
11475
11476 END;
11477
11478 if (l_ws_type = 'PRIMARY')
11479 then
11480 -- The Sync script works only for Association Work Source
11481 -- If a primary Work Source is passed then it will throw an exception and exit
11482 -- Work Source does not exist for this Object Code
11483 l_token_str := 'WORK_SOURCE:' ||p_ws_code;
11484
11485 fnd_file.new_line(FND_FILE.LOG, 1);
11486 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_INVALID_WORK_SOURCE');
11487 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_ASSCT_TASK_WR_ITEMS');
11488 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
11489 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11490
11491 fnd_msg_pub.ADD;
11492 fnd_msg_pub.Count_and_Get
11493 (
11494 p_count => x_msg_count,
11495 p_data => x_msg_data
11496 );
11497
11498 RAISE fnd_api.g_exc_error;
11499
11500
11501 elsif (l_ws_type = 'ASSOCIATION')
11502 then
11503 BEGIN
11504
11505 SELECT parent_ws_id, child_ws_id, dist_st_based_on_parent_flag , tasks_rules_function
11506 INTO l_parent_ws_id, l_child_ws_id, l_dist_st_based_on_parent , l_tasks_rules_func
11507 FROM IEU_UWQM_WS_ASSCT_PROPS
11508 WHERE ws_id = l_ws_id;
11509
11510 EXCEPTION
11511 WHEN NO_DATA_FOUND THEN
11512
11513 -- Work Source does not exist for this Object Code
11514 l_token_str := 'WS_CODE: '||p_ws_code;
11515
11516 fnd_file.new_line(FND_FILE.LOG, 1);
11517 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
11518 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_ASSCT_TASK_WR_ITEMS');
11519 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
11520 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11521
11522 fnd_msg_pub.ADD;
11523 fnd_msg_pub.Count_and_Get
11524 (
11525 p_count => x_msg_count,
11526 p_data => x_msg_data
11527 );
11528
11529 RAISE fnd_api.g_exc_error;
11530
11531 END;
11532
11533 BEGIN
11534 l_not_valid_flag := 'N';
11535 SELECT object_code, NVL(active_flag, 'N')
11536 INTO l_parent_obj_code, l_active_flag
11537 FROM IEU_UWQM_WORK_SOURCES_B
11538 WHERE ws_id = l_parent_ws_id
11539 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
11540
11541 IF l_active_flag = 'N' THEN
11542 BEGIN
11543 SELECT ws_name
11544 INTO l_ws_name
11545 FROM IEU_UWQM_WORK_SOURCES_TL
11546 WHERE ws_id = l_ws_id
11547 AND language = userenv('LANG');
11548 EXCEPTION
11549 WHEN NO_DATA_FOUND THEN
11550 l_token_str := 'WS_CODE: '||p_ws_code;
11551
11552 fnd_file.new_line(FND_FILE.LOG, 1);
11553 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
11554 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_ASSCT_TASK_WR_ITEMS');
11555 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
11556 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11557
11558 fnd_msg_pub.ADD;
11559 fnd_msg_pub.Count_and_Get
11560 (
11561 p_count => x_msg_count,
11562 p_data => x_msg_data
11563 );
11564
11565 RAISE fnd_api.g_exc_error;
11566 END;
11567
11568 BEGIN
11569 SELECT ws_name
11570 INTO l_parent_ws_name
11571 FROM IEU_UWQM_WORK_SOURCES_TL
11572 WHERE ws_id = l_parent_ws_id
11573 AND language = userenv('LANG');
11574 EXCEPTION
11575 WHEN NO_DATA_FOUND THEN
11576 l_token_str := 'WS_CODE: '||p_ws_code;
11577
11578 fnd_file.new_line(FND_FILE.LOG, 1);
11579 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
11580 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_ASSCT_TASK_WR_ITEMS');
11581 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
11582 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11583
11584 fnd_msg_pub.ADD;
11585 fnd_msg_pub.Count_and_Get
11586 (
11587 p_count => x_msg_count,
11588 p_data => x_msg_data
11589 );
11590
11591 RAISE fnd_api.g_exc_error;
11592 END;
11593
11594
11595 -- The Sync script works only if Parent Work Source is ACTIVE
11596 -- Else it will throw an exception and exit
11597
11598 fnd_file.new_line(FND_FILE.LOG, 1);
11599 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_PRNT_WS_INACTIVE');
11600 FND_MESSAGE.SET_TOKEN('PACKAGE.PROCEDURE','IEU_WR_PUB.SYNC_ASSCT_TASK_WR_ITEMS');
11601 FND_MESSAGE.SET_TOKEN('WS_NAME', l_ws_name);
11602 FND_MESSAGE.SET_TOKEN('PRIMARY_WS_NAME', l_parent_ws_name);
11603 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11604
11605 fnd_msg_pub.ADD;
11606 fnd_msg_pub.Count_and_Get
11607 (
11608 p_count => x_msg_count,
11609 p_data => x_msg_data
11610 );
11611
11612 RAISE fnd_api.g_exc_error;
11613
11614 END IF;
11615 EXCEPTION
11616 WHEN NO_DATA_FOUND THEN
11617
11618 -- Work Source does not exist for this Object Code
11619 l_token_str := 'WS_CODE: '||p_ws_code;
11620
11621 fnd_file.new_line(FND_FILE.LOG, 1);
11622 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
11623 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_ASSCT_TASK_WR_ITEMS');
11624 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
11625 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11626
11627 fnd_msg_pub.ADD;
11628 fnd_msg_pub.Count_and_Get
11629 (
11630 p_count => x_msg_count,
11631 p_data => x_msg_data
11632 );
11633
11634 RAISE fnd_api.g_exc_error;
11635
11636 END;
11637
11638 BEGIN
11639 l_not_valid_flag := 'N';
11640 SELECT object_code
11641 INTO l_child_obj_code
11642 FROM IEU_UWQM_WORK_SOURCES_B
11643 WHERE ws_id = l_child_ws_id
11644 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
11645
11646 EXCEPTION
11647 WHEN NO_DATA_FOUND THEN
11648
11649 -- Work Source does not exist for this Object Code
11650 l_token_str := 'WS_CODE: '||p_ws_code;
11651
11652 fnd_file.new_line(FND_FILE.LOG, 1);
11653 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
11654 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_ASSCT_TASK_WR_ITEMS');
11655 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
11656 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11657
11658 fnd_msg_pub.ADD;
11659 fnd_msg_pub.Count_and_Get
11660 (
11661 p_count => x_msg_count,
11662 p_data => x_msg_data
11663 );
11664
11665 RAISE fnd_api.g_exc_error;
11666
11667 END;
11668
11669 end if;
11670
11671 if (l_ws_type = 'ASSOCIATION')
11672 then
11673
11674 select IEU_UWQM_ITEMS_GTT_S1.NEXTVAL into l_processing_set_id from dual;
11675
11676 open c_task(l_parent_obj_code);
11677 loop
11678
11679 delete from IEU_UWQM_ITEMS_GTT;
11680 l_ws_details_rec.WORKITEM_PK_ID_LIST.delete;
11681 l_ws_details_rec.TASK_PRIORITY_ID_LIST.delete;
11682 l_ws_details_rec.IMPORTANCE_LEVEL_LIST.delete;
11683 l_ws_details_rec.DUE_DATE_LIST.delete;
11684 l_ws_details_rec.TITLE_LIST.delete;
11685 l_ws_details_rec.PARTY_ID_LIST.delete;
11686 l_ws_details_rec.OWNER_TYPE_LIST.delete;
11687 l_ws_details_rec.OWNER_ID_LIST.delete;
11688 l_ws_details_rec.SOURCE_OBJECT_ID_LIST.delete;
11689 l_ws_details_rec.SOURCE_OBJECT_TYPE_CODE_LIST.delete;
11690 l_ws_details_rec.WORK_ITEM_NUMBER_LIST.delete;
11691 l_ws_details_rec.PLANNED_START_DATE_LIST.delete;
11692 l_ws_details_rec.PLANNED_END_DATE_LIST.delete;
11693 l_ws_details_rec.ACTUAL_START_DATE_LIST.delete;
11694 l_ws_details_rec.ACTUAL_END_DATE_LIST.delete;
11695 l_ws_details_rec.SCHEDULED_START_DATE_LIST.delete;
11696 l_ws_details_rec.SCHEDULED_END_DATE_LIST.delete;
11697 l_ws_details_rec.TASK_TYPE_ID_LIST.delete;
11698 l_ws_details_rec.PRIORITY_CODE_LIST.delete;
11699 l_ws_details_rec.DATE_SELECTED_LIST.delete;
11700 l_ws_details_rec.WORKITEM_STATUS_LIST.delete;
11701 l_ws_details_rec.STATUS_ID.delete;
11702
11703 FETCH c_task BULK COLLECT INTO
11704 l_ws_details_rec.WORKITEM_PK_ID_LIST
11705 , l_ws_details_rec.TASK_PRIORITY_ID_LIST
11706 , l_ws_details_rec.IMPORTANCE_LEVEL_LIST
11707 , l_ws_details_rec.DUE_DATE_LIST
11708 , l_ws_details_rec.TITLE_LIST
11709 , l_ws_details_rec.PARTY_ID_LIST
11710 , l_ws_details_rec.OWNER_TYPE_LIST
11711 , l_ws_details_rec.OWNER_ID_LIST
11712 , l_ws_details_rec.SOURCE_OBJECT_ID_LIST
11713 , l_ws_details_rec.SOURCE_OBJECT_TYPE_CODE_LIST
11714 , l_ws_details_rec.WORK_ITEM_NUMBER_LIST
11715 , l_ws_details_rec.PLANNED_START_DATE_LIST
11716 , l_ws_details_rec.PLANNED_END_DATE_LIST
11717 , l_ws_details_rec.ACTUAL_START_DATE_LIST
11718 , l_ws_details_rec.ACTUAL_END_DATE_LIST
11719 , l_ws_details_rec.SCHEDULED_START_DATE_LIST
11720 , l_ws_details_rec.SCHEDULED_END_DATE_LIST
11721 , l_ws_details_rec.TASK_TYPE_ID_LIST
11722 , l_ws_details_rec.PRIORITY_CODE_LIST
11723 , l_ws_details_rec.DATE_SELECTED_LIST
11724 , l_ws_details_rec.WORKITEM_STATUS_LIST
11725 , l_ws_details_rec.STATUS_ID
11726 LIMIT l_limit;
11727
11728
11729 IF l_ws_details_rec.WORKITEM_PK_ID_LIST.FIRST IS NOT NULL THEN
11730
11731 BEGIN
11732 FORALL i IN l_ws_details_rec.WORKITEM_PK_ID_LIST.FIRST..l_ws_details_rec.WORKITEM_PK_ID_LIST.LAST SAVE EXCEPTIONS
11733 Insert into ieu_uwqm_items_gtt
11734 ( PROCESSING_SET_ID
11735 , WORKITEM_OBJ_CODE
11736 , WORKITEM_PK_ID
11737 , STATUS_ID
11738 , DUE_DATE
11739 , TITLE
11740 , PARTY_ID
11741 , OWNER_ID
11742 , SOURCE_OBJECT_ID
11743 , SOURCE_OBJECT_TYPE_CODE
11744 , OWNER_TYPE_ACTUAL
11745 , APPLICATION_ID
11746 , IEU_ENUM_TYPE_UUID
11747 , WORK_ITEM_NUMBER
11748 , WORKITEM_STATUS
11749 , PRIORITY_CODE
11750 , PLANNED_START_DATE
11751 , PLANNED_END_DATE
11752 , ACTUAL_START_DATE
11753 , ACTUAL_END_DATE
11754 , SCHEDULED_START_DATE
11755 , SCHEDULED_END_DATE
11756 , DATE_SELECTED
11757 , TASK_TYPE_ID
11758 , TASK_PRIORITY_ID
11759 , UWQ_DEF_WORK_ITEM_STATUS
11760 , UWQ_DEF_PRIORITY_CODE
11761 , UWQ_DEF_DUE_DATE
11762 , UWQ_DEF_IEU_ENUM_TYPE_UUID
11763 )
11764 values
11765 ( l_processing_set_id
11766 , l_child_obj_code
11767 , l_ws_details_rec.WORKITEM_PK_ID_LIST(i)
11768 , l_ws_details_rec.STATUS_ID(i)
11769 , l_ws_details_rec.DUE_DATE_LIST(i)
11770 , l_ws_details_rec.TITLE_LIST(i)
11771 , l_ws_details_rec.PARTY_ID_LIST(i)
11772 , l_ws_details_rec.OWNER_ID_LIST(i)
11773 , l_ws_details_rec.SOURCE_OBJECT_ID_LIST(i)
11774 , l_ws_details_rec.SOURCE_OBJECT_TYPE_CODE_LIST(i)
11775 , l_ws_details_rec.OWNER_TYPE_LIST(i)
11776 , 696
11777 , 'TASKS'
11778 , l_ws_details_rec.WORK_ITEM_NUMBER_LIST(i)
11779 , l_ws_details_rec.WORKITEM_STATUS_LIST(i)
11780 , l_ws_details_rec.PRIORITY_CODE_LIST(i)
11781 , l_ws_details_rec.PLANNED_START_DATE_LIST(i)
11782 , l_ws_details_rec.PLANNED_END_DATE_LIST(i)
11783 , l_ws_details_rec.ACTUAL_START_DATE_LIST(i)
11784 , l_ws_details_rec.ACTUAL_END_DATE_LIST(i)
11785 , l_ws_details_rec.SCHEDULED_START_DATE_LIST(i)
11786 , l_ws_details_rec.SCHEDULED_END_DATE_LIST(i)
11787 , l_ws_details_rec.DATE_SELECTED_LIST(i)
11788 , l_ws_details_rec.TASK_TYPE_ID_LIST(i)
11789 , l_ws_details_rec.TASK_PRIORITY_ID_LIST(i)
11790 , l_ws_details_rec.WORKITEM_STATUS_LIST(i)
11791 , l_ws_details_rec.PRIORITY_CODE_LIST(i)
11792 , l_ws_details_rec.DUE_DATE_LIST(i)
11793 , 'TASKS'
11794 );
11795
11796 EXCEPTION
11797 WHEN dml_errors THEN
11798 errors := SQL%BULK_EXCEPTIONS.COUNT;
11799
11800 FOR i IN 1..errors LOOP
11801
11802 --** checking for error threshold **--
11803
11804 l_error_count := l_error_count + 1;
11805 IF l_error_count > 1000 THEN
11806 FND_MESSAGE.SET_NAME('IEU', 'IEU_ERROR_THRESHOLD');
11807 FND_MESSAGE.SET_TOKEN('ERROR_COUNT', '1000');
11808 FND_MESSAGE.SET_TOKEN('WS_CODE', 'TASK');
11809 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11810 fnd_msg_pub.ADD;
11811 fnd_msg_pub.Count_and_Get
11812 (
11813 p_count => x_msg_count,
11814 p_data => x_msg_data
11815 );
11816
11817 RAISE fnd_api.g_exc_error;
11818 END IF;
11819 fnd_file.new_line(FND_FILE.LOG, 1);
11820 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_INSERT_FAILED');
11821 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME', 'IEU_WR_PUB.SYNC_ASSCT_TASK_WR_ITEMS');
11822 FND_MESSAGE.SET_TOKEN('DETAILS', ' WORKITEM_PK_ID:'||l_ws_details_rec.WORKITEM_PK_ID_LIST(SQL%BULK_EXCEPTIONS(i).ERROR_INDEX) ||' Error: '||SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
11823
11824 fnd_file.put_line(FND_FILE.LOG,SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
11825 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11826
11827 fnd_msg_pub.ADD;
11828 fnd_msg_pub.Count_and_Get
11829 (
11830 p_count => x_msg_count,
11831 p_data => x_msg_data
11832 );
11833 END LOOP;
11834
11835 -- RAISE fnd_api.g_exc_error;
11836 END;
11837 END IF;
11838
11839 l_msg_count := '';
11840 l_msg_data := '';
11841 l_return_status := '';
11842
11843 BEGIN
11844 update ieu_uwqm_items_gtt gtt
11845 set due_date = (select booking_end_date
11846 from jtf_task_all_assignments asg
11847 where asg.task_id = gtt.workitem_pk_id
11848 and asg.assignee_role= 'OWNER');
11849 EXCEPTION
11850 WHEN OTHERS THEN
11851 fnd_file.new_line(FND_FILE.LOG, 1);
11852 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_UPDATE_FAILED');
11853 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME', 'IEU_WR_PUB.SYNC_ASSCT_TASK_WR_ITEMS');
11854 FND_MESSAGE.SET_TOKEN('DETAILS', sqlcode||' - '||sqlerrm);
11855
11856 fnd_file.put_line(FND_FILE.LOG, sqlcode||' - '||sqlerrm);
11857 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11858
11859 fnd_msg_pub.ADD;
11860 fnd_msg_pub.Count_and_Get
11861 (
11862 p_count => x_msg_count,
11863 p_data => x_msg_data
11864 );
11865
11866 RAISE fnd_api.g_exc_error;
11867 END;
11868
11869
11870 if l_tasks_rules_func is not null
11871 then
11872
11873 execute immediate
11874 'BEGIN '||l_tasks_rules_func ||' ( :1, :2, :3, :4); END ; '
11875 USING IN l_processing_set_id, OUT l_msg_count, OUT l_msg_data, OUT l_return_status;
11876 else
11877 IEU_WR_PUB.IEU_DEF_TASKS_RULES_FUNC (
11878 p_processing_set_id => L_PROCESSING_SET_ID,
11879 x_msg_count => l_msg_count,
11880 x_msg_data => l_msg_data,
11881 x_return_status => l_return_status);
11882
11883 end if;
11884
11885
11886 exit when c_task%notfound;
11887
11888 end loop;
11889 close c_task;
11890
11891 -- Update Close and Delete Statuses
11892
11893 open c_task_status(l_parent_obj_code);
11894 loop
11895
11896 FETCH c_task_status
11897 BULK COLLECT INTO
11898 l_task_status_rec.l_task_id_list,
11899 l_task_status_rec.l_status_id_list
11900 LIMIT l_limit;
11901
11902 l_done := c_task_status%NOTFOUND;
11903
11904 BEGIN
11905 -- fnd_file.put_line(FND_FILE.LOG,'Begin update');
11906 FORALL i in 1..l_task_status_rec.l_task_id_list.COUNT SAVE EXCEPTIONS
11907 update IEU_UWQM_ITEMS
11908 set status_id = l_task_status_rec.l_status_id_list(i),
11909 LAST_UPDATED_BY = FND_GLOBAL.USER_ID,
11910 LAST_UPDATE_DATE = SYSDATE,
11911 LAST_UPDATE_LOGIN = FND_GLOBAL.LOGIN_ID
11912 where workitem_obj_code = 'TASK'
11913 and workitem_pk_id = l_task_status_rec.l_task_id_list(i)
11914 and source_object_type_code = l_parent_obj_code;
11915
11916 EXCEPTION
11917 WHEN dml_errors THEN
11918 errors := SQL%BULK_EXCEPTIONS.COUNT;
11919 FOR i IN 1..errors LOOP
11920
11921 --** checking for error threshold **--
11922
11923 l_error_count := l_error_count + 1;
11924 IF l_error_count > 1000 THEN
11925 FND_MESSAGE.SET_NAME('IEU', 'IEU_ERROR_THRESHOLD');
11926 FND_MESSAGE.SET_TOKEN('ERROR_COUNT', '1000');
11927 FND_MESSAGE.SET_TOKEN('WS_CODE', 'TASK');
11928 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11929 fnd_msg_pub.ADD;
11930 fnd_msg_pub.Count_and_Get
11931 (
11932 p_count => x_msg_count,
11933 p_data => x_msg_data
11934 );
11935
11936 RAISE fnd_api.g_exc_error;
11937 END IF;
11938
11939 fnd_file.new_line(FND_FILE.LOG, 1);
11940 FND_MESSAGE.SET_NAME('IEU', 'IEU_UPDATE_UWQM_ITEM_FAILED');
11941 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME', 'IEU_WR_PUB.SYNC_ASSCT_TASK_WR_ITEMS');
11942 FND_MESSAGE.SET_TOKEN('DETAILS', ' WORKITEM_PK_ID:'||l_task_status_rec.l_task_id_list(SQL%BULK_EXCEPTIONS(i).ERROR_INDEX) ||' Error: '||SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
11943
11944 fnd_file.put_line(FND_FILE.LOG,SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
11945 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
11946 fnd_msg_pub.ADD;
11947 fnd_msg_pub.Count_and_Get
11948 (
11949 p_count => x_msg_count,
11950 p_data => x_msg_data
11951 );
11952 END LOOP;
11953 -- RAISE fnd_api.g_exc_error;
11954 END;
11955
11956 l_task_status_rec.l_task_id_list.DELETE;
11957 l_task_status_rec.l_status_id_list.DELETE;
11958
11959 exit when (l_done);
11960
11961 end loop;
11962
11963 close c_task_status;
11964
11965 end if;
11966
11967 IF l_return_status = 'E' THEN
11968 RAISE fnd_api.g_exc_error;
11969 ELSIF l_return_status = 'U' THEN
11970 RAISE fnd_api.g_exc_unexpected_error;
11971 END IF;
11972
11973 IF FND_API.TO_BOOLEAN( p_commit ) THEN
11974 COMMIT WORK;
11975 END IF;
11976
11977 EXCEPTION
11978
11979 WHEN fnd_api.g_exc_error THEN
11980
11981 ROLLBACK TO sync_assct_task_wr_items_sp;
11982 x_return_status := fnd_api.g_ret_sts_error;
11983
11984 fnd_msg_pub.Count_and_Get
11985 (
11986 p_count => x_msg_count,
11987 p_data => x_msg_data
11988 );
11989
11990 WHEN fnd_api.g_exc_unexpected_error THEN
11991
11992 ROLLBACK TO sync_assct_task_wr_items_sp;
11993 x_return_status := fnd_api.g_ret_sts_unexp_error;
11994
11995 fnd_msg_pub.Count_and_Get
11996 (
11997 p_count => x_msg_count,
11998 p_data => x_msg_data
11999 );
12000
12001
12002 WHEN OTHERS THEN
12003 x_msg_data := sqlcode||' '||sqlerrm;
12004
12005 ROLLBACK TO sync_assct_task_wr_items_sp;
12006 x_return_status := fnd_api.g_ret_sts_unexp_error;
12007
12008 FND_FILE.PUT_LINE(FND_FILE.LOG, x_msg_data);
12009 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
12010 THEN
12011
12012 fnd_msg_pub.Count_and_Get
12013 (
12014 p_count => x_msg_count,
12015 p_data => x_msg_data
12016 );
12017
12018 END IF;
12019
12020 END SYNC_ASSCT_TASK_WR_ITEMS;
12021
12022 PROCEDURE IEU_DEF_TASKS_RULES_FUNC
12023 ( P_PROCESSING_SET_ID IN NUMBER DEFAULT NULL,
12024 X_MSG_COUNT OUT NOCOPY NUMBER,
12025 X_MSG_DATA OUT NOCOPY VARCHAR2,
12026 X_RETURN_STATUS OUT NOCOPY VARCHAR2) AS
12027
12028 cursor c_task_asg(p_processing_set_id in number) is
12029 SELECT resource_id, WORKITEM_PK_ID, resource_type_code
12030 from (SELECT GTT.WORKITEM_PK_ID, asg.resource_id, asg.resource_type_code,
12031 max(asg.last_update_date) over (partition by asg.task_id) max_update_date, asg.last_update_date
12032 FROM IEU_UWQM_ITEMS_GTT GTT, JTF_TASK_ASSIGNMENTS ASG
12033 WHERE GTT.PROCESSING_SET_ID = P_PROCESSING_SET_ID
12034 AND GTT.WORKITEM_PK_ID = ASG.TASK_ID
12035 and GTT.OWNER_TYPE_ACTUAL = 'RS_GROUP'
12036 and asg.resource_type_code not in ('RS_GROUP', 'RS_TEAM')
12037 and asg.assignee_role = 'ASSIGNEE'
12038 and exists
12039 (SELECT /*+ index(a,JTF_RS_GROUP_MEMBERS_N1) */ null
12040 FROM JTF_RS_GROUP_MEMBERS a
12041 WHERE a.group_id= GTT.owner_id
12042 and a.RESOURCE_ID = asg.resource_id
12043 AND NVL(DELETE_FLAG,'N') <> 'Y' )
12044 and exists
12045 (select 1
12046 from jtf_task_statuses_b sts
12047 where sts.task_status_id = asg.assignment_status_id
12048 and (nvl(sts.closed_flag, 'N') = 'N'
12049 and nvl(sts.completed_flag, 'N') = 'N'
12050 and nvl(sts.cancelled_flag, 'N') = 'N'
12051 and nvl(sts.rejected_flag, 'N') = 'N'))) a
12052 where a.last_update_date = a.max_update_date;
12053
12054
12055 TYPE NUMBER_TBL is TABLE OF NUMBER INDEX BY BINARY_INTEGER;
12056 TYPE DATE_TBL is TABLE OF DATE INDEX BY BINARY_INTEGER;
12057 TYPE VARCHAR2_TBL is TABLE OF VARCHAR2(80) INDEX BY BINARY_INTEGER;
12058
12059 TYPE task_asg_rec is RECORD
12060 (
12061 l_asg_id_list NUMBER_TBL,
12062 l_asg_task_id_list NUMBER_TBL,
12063 l_asg_type_act_list VARCHAR2_TBL
12064 );
12065
12066 l_task_asg_rec task_asg_rec;
12067
12068 dml_errors EXCEPTION;
12069 PRAGMA exception_init(dml_errors, -24381);
12070 errors number;
12071
12072 l_msg_count NUMBER;
12073 l_msg_data VARCHAR2(4000);
12074 l_return_status VARCHAR2(1);
12075
12076 BEGIN
12077 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
12078
12079 errors := 0;
12080 l_return_status := FND_API.G_RET_STS_SUCCESS;
12081
12082 open c_task_asg (p_processing_set_id);
12083
12084 FETCH c_task_asg
12085 BULK COLLECT INTO
12086 l_task_asg_rec.l_asg_id_list,
12087 l_task_asg_rec.l_asg_task_id_list,
12088 l_task_asg_rec.l_asg_type_act_list;
12089
12090 BEGIN
12091 FORALL i in 1..l_task_asg_rec.l_asg_task_id_list.COUNT SAVE EXCEPTIONS
12092 update IEU_UWQM_ITEMS_GTT
12093 set assignee_id = l_task_asg_rec.l_asg_id_list(i),
12094 assignee_type_actual = l_task_asg_rec.l_asg_type_act_list(i)
12095 where processing_set_id = p_processing_set_id
12096 and workitem_pk_id = l_task_asg_rec.l_asg_task_id_list(i);
12097 -- and workitem_obj_code = 'TASK';
12098 EXCEPTION
12099 WHEN dml_errors THEN
12100 errors := SQL%BULK_EXCEPTIONS.COUNT;
12101 FOR i IN 1..errors
12102 LOOP
12103 fnd_file.new_line(FND_FILE.LOG, 1);
12104 FND_MESSAGE.SET_NAME('IEU', 'IEU_UPDATE_UWQM_ITEM_FAILED');
12105 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME', 'IEU_DEF_TASKS_RULES_FUNC');
12106 FND_MESSAGE.SET_TOKEN('DETAILS', ' WORKITEM_PK_ID:'||l_task_asg_rec.l_asg_task_id_list(SQL%BULK_EXCEPTIONS(i).ERROR_INDEX) ||' Error: '||SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
12107
12108 fnd_file.put_line(FND_FILE.LOG,SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
12109 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
12110 fnd_msg_pub.ADD;
12111 fnd_msg_pub.Count_and_Get
12112 (
12113 p_count => x_msg_count,
12114 p_data => x_msg_data
12115 );
12116 END LOOP;
12117
12118 x_return_status := fnd_api.g_ret_sts_error;
12119 RAISE fnd_api.g_exc_error;
12120 END;
12121
12122 l_task_asg_rec.l_asg_id_list.DELETE;
12123 l_task_asg_rec.l_asg_task_id_list.DELETE;
12124 l_task_asg_rec.l_asg_type_act_list.DELETE;
12125
12126 close c_task_asg;
12127
12128 l_msg_count := null;
12129 l_msg_data := null;
12130 l_return_status := null;
12131
12132 IEU_WR_PUB.SYNC_WR_ITEMS (
12133 p_api_version => 1.0,
12134 p_init_msg_list => FND_API.G_TRUE,
12135 p_commit => FND_API.G_FALSE,
12136 p_processing_set_id => P_PROCESSING_SET_ID,
12137 p_user_id => FND_GLOBAL.USER_ID,
12138 p_login_id => FND_GLOBAL.LOGIN_ID,
12139 x_msg_count => l_msg_count,
12140 x_msg_data => l_msg_data,
12141 x_return_status => l_return_status);
12142
12143
12144 x_return_status := l_return_status;
12145
12146 END IEU_DEF_TASKS_RULES_FUNC;
12147
12148 PROCEDURE GET_NEXT_WORK_ITEM
12149 ( p_ws_code IN VARCHAR2,
12150 p_resource_id IN NUMBER,
12151 x_workitem_pk_id OUT nocopy NUMBER,
12152 x_workitem_obj_code OUT NOCOPY VARCHAR2,
12153 x_source_obj_id OUT NOCOPY NUMBER,
12154 x_source_obj_type_code OUT NOCOPY VARCHAR2,
12155 x_msg_count OUT nocopy NUMBER,
12156 x_return_status OUT nocopy VARCHAR2,
12157 x_msg_data OUT nocopy VARCHAR2) IS
12158
12159 --declare variables
12160 l_ws_det_list IEU_UWQ_GET_NEXT_WORK_PVT.IEU_WS_DETAILS_LIST;
12161 l_uwqm_workitem_data IEU_FRM_PVT.T_IEU_MEDIA_DATA;
12162 l_language VARCHAR2(10);
12163 l_source_lang VARCHAR2(10);
12164 j number;
12165 l_temp_str VARCHAR2(4000);
12166 l_search_ctr NUMBER;
12167 l_start_ctr NUMBER;
12168 l_ws_ctr NUMBER;
12169 l_ws_code_str VARCHAR2(50);
12170 l_search_str_ctr NUMBER;
12171 my_message VARCHAR2(4000);
12172 l_inc_ctr NUMBER;
12173
12174 BEGIN
12175 -- insert into p_temp values(' Get work api..p_ws_code: '||p_ws_code, 1); commit;
12176
12177 -- l_ws_det_list(1).ws_code := p_ws_code;
12178
12179 If (LENGTH(p_ws_code) is not NULL)
12180 then
12181
12182 l_temp_str := p_ws_code;
12183 l_search_ctr := 1;
12184 l_start_ctr := 0;
12185 l_ws_ctr := 0;
12186 l_inc_ctr := 0;
12187
12188 While (l_inc_ctr < LENGTH(p_ws_code) )
12189 loop
12190
12191 l_search_str_ctr := instr(l_temp_str, '^',1,l_search_ctr);
12192
12193 /* insert into p_temp(msg, ctr) values('srchStrCtr: '||l_search_str_ctr, l_ws_ctr); commit;
12194 insert into p_temp(msg, ctr) values(' strt ctr: '||l_start_ctr, l_ws_ctr); commit;
12195 insert into p_temp(msg, ctr) values ('tmp str: '||l_temp_str, l_ws_ctr); commit; */
12196
12197 if ((l_search_str_ctr) = 0 )
12198 then
12199 l_ws_code_str := l_temp_str;
12200 else
12201 l_ws_code_str :=
12202 substr (
12203 l_temp_str,
12204 l_start_ctr,
12205 ( instr(l_temp_str, '^',1,l_search_ctr) -
12206 (l_start_ctr + 1) )
12207 );
12208 l_temp_str :=
12209 substr (
12210 l_temp_str,
12211 instr(l_temp_str, '^',1,l_search_ctr) + 1,
12212 ( LENGTH(l_temp_str) -
12213 instr(l_temp_str, '<',1,l_search_ctr)+1 )
12214 );
12215
12216 end if;
12217
12218 --insert into p_temp(msg, ctr) values('wsCode '||l_ws_code_str, l_ws_ctr); commit;
12219 --insert into p_temp(msg, ctr) values(' temp Str: '||l_temp_str, l_ws_ctr); commit;
12220
12221 l_ws_det_list(l_ws_ctr).ws_code := l_ws_code_str;
12222 -- insert into p_temp(msg) values('ws code str: '||l_ws_code_str||'ws_code: '||l_ws_det_list(l_ws_ctr).ws_code||' temp str: '||l_temp_str); commit;
12223
12224 --l_start_ctr := l_start_ctr + length(l_ws_det_list(l_ws_ctr).ws_code) +1;
12225 --l_search_ctr := l_search_ctr + 1;
12226 l_inc_ctr := l_inc_ctr + length(l_ws_det_list(l_ws_ctr).ws_code) +1;
12227 l_ws_ctr := l_ws_ctr + 1;
12228
12229 --insert into p_temp(msg, ctr) values('strrt ctr: '||l_start_ctr||' srch ctr: '||l_search_ctr||' ws ctr: '||l_ws_ctr, l_ws_ctr); commit;
12230
12231 END LOOP;
12232 END IF;
12233 /*
12234 for i in l_ws_det_list.first..l_ws_det_list.last
12235 loop
12236 insert into p_temp(msg) values ('ws code in list: '||l_ws_det_list(i).ws_code); commit;
12237 end loop; */
12238
12239 l_language := userenv('lang');
12240 l_source_lang := 'US';
12241 j :=0;
12242
12243 BEGIN
12244 -- Invoke the IEU API to get the incident Id
12245 IEU_WR_PUB.GET_NEXT_WORK_FOR_APPS
12246 ( p_api_version => 1,
12247 p_resource_id => p_resource_id,
12248 p_language => l_language,
12249 p_source_lang => l_source_lang,
12250 p_ws_det_list => l_ws_det_list,
12251 x_uwqm_workitem_data => l_uwqm_workitem_data,
12252 x_msg_count => x_msg_count,
12253 x_msg_data => x_msg_data,
12254 x_return_status => x_return_status);
12255
12256 EXCEPTION
12257 WHEN OTHERS THEN
12258 --insert into p_temp values('error in get work', 2); commit;
12259 fnd_msg_pub.Count_and_Get
12260 (
12261 p_count => x_msg_count,
12262 p_data => x_msg_data
12263 );
12264 RAISE fnd_api.g_exc_error;
12265 END;
12266
12267 -- If the return status is Success or if the OUT param l_uwqm_workitem_data
12268 -- has values. Then retrieve the first row and get the incident_id
12269 -- which in the WORKITEM_PK_ID
12270 -- insert into p_temp values ('ret sts from Getwork'||x_return_status, 3); commit;
12271 IF x_return_status <> 'S' THEN
12272 --insert into p_temp(msg) values('Error: '|| x_return_status || '; ' ||
12273 -- x_msg_count || '; ' || x_msg_data);
12274 FOR l_index IN 1..x_msg_count LOOP
12275 my_message := FND_MSG_PUB.Get(p_msg_index => l_index,p_encoded => 'F');
12276 --insert into p_temp(msg) values (l_index || ' = ' || my_message);
12277 END LOOP;
12278 end if;
12279
12280 if (x_return_status = 'S') OR (l_uwqm_workitem_data.count >= 1)
12281 then
12282
12283 FOR j in l_uwqm_workitem_data.first .. l_uwqm_workitem_data.last
12284 LOOP
12285 if (l_uwqm_workitem_data(j).param_name = 'WORKITEM_PK_ID')
12286 then
12287 x_workitem_pk_id := l_uwqm_workitem_data(j).param_value;
12288 end if;
12289 if (l_uwqm_workitem_data(j).param_name = 'WORKITEM_OBJ_CODE')
12290 then
12291 x_workitem_obj_code := l_uwqm_workitem_data(j).param_value;
12292 end if;
12293 if (l_uwqm_workitem_data(j).param_name = 'SOURCE_OBJECT_ID')
12294 then
12295 x_source_obj_id := l_uwqm_workitem_data(j).param_value;
12296 end if;
12297 if (l_uwqm_workitem_data(j).param_name = 'SOURCE_OBJECT_TYPE_CODE')
12298 then
12299 x_source_obj_type_code := l_uwqm_workitem_data(j).param_value;
12300 end if;
12301 end loop;
12302 end if;
12303
12304 -- insert into p_Temp(msg) values (x_workitem_pk_id||' '||x_workitem_obj_code||' '||x_source_obj_id||' '||x_source_obj_type_code);
12305 Exception
12306
12307 WHEN fnd_api.g_exc_error THEN
12308 x_return_status := 'E';
12309 fnd_msg_pub.Count_and_Get
12310 (
12311 p_count => x_msg_count,
12312 p_data => x_msg_data
12313 );
12314
12315 WHEN fnd_api.g_exc_unexpected_error THEN
12316 x_return_status := 'U';
12317 fnd_msg_pub.Count_and_Get
12318 (
12319 p_count => x_msg_count,
12320 p_data => x_msg_data
12321 );
12322
12323 END;
12324
12325 PROCEDURE SYNC_WR_ITEM_STATUS
12326 ( p_api_version IN NUMBER,
12327 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
12328 p_commit IN VARCHAR2 DEFAULT NULL,
12329 p_processing_set_id IN NUMBER DEFAULT NULL,
12330 p_ws_code IN VARCHAR2 DEFAULT NULL,
12331 x_msg_count OUT NOCOPY NUMBER,
12332 x_msg_data OUT NOCOPY VARCHAR2,
12333 x_return_status OUT NOCOPY VARCHAR2) AS
12334
12335 l_api_version CONSTANT NUMBER := 1.0;
12336 l_api_name CONSTANT VARCHAR2(30) := 'SYNC_WR_ITEM_STATUS';
12337
12338 l_token_str VARCHAR2(4000);
12339
12340 l_count NUMBER;
12341 L_MISS_NUM NUMBER;
12342
12343 TYPE NUMBER_TAB IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
12344 TYPE WORKITEM_OBJ_CODE_TAB IS TABLE OF IEU_UWQM_ITEMS.WORKITEM_OBJ_CODE%TYPE INDEX BY BINARY_INTEGER;
12345 TYPE SOURCE_OBJECT_TYPE_CODE_TAB IS TABLE OF IEU_UWQM_ITEMS.SOURCE_OBJECT_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
12346
12347 WORKITEM_OBJ_CODE_LIST WORKITEM_OBJ_CODE_TAB;
12348 WORKITEM_PK_ID_LIST NUMBER_TAB;
12349
12350 TYPE wr_item_status_rec IS RECORD
12351 ( WORKITEM_OBJ_CODE_LST WORKITEM_OBJ_CODE_TAB
12352 , WORKITEM_PK_ID_LST NUMBER_TAB
12353 , STATUS_ID_LIST NUMBER_TAB
12354 );
12355
12356 l_wr_item_status_rec wr_item_status_rec;
12357
12358 dml_errors EXCEPTION;
12359 PRAGMA exception_init(dml_errors, -24381);
12360 errors number;
12361
12362 l_ws_id NUMBER;
12363 l_parent_ws_id NUMBER;
12364 l_child_ws_id NUMBER;
12365 l_parent_obj_code VARCHAR2(500);
12366 l_child_obj_code VARCHAR2(500);
12367 l_ws_type VARCHAR2(500);
12368 l_obj_code VARCHAR2(500);
12369 l_not_valid_flag VARCHAR2(1);
12370
12371 BEGIN
12372 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
12373 l_token_str := '';
12374 l_not_valid_flag := 'N';
12375 L_MISS_NUM := FND_API.G_MISS_NUM;
12376
12377 SAVEPOINT SYNC_WR_ITEM_STATUS_SP;
12378 x_return_status := fnd_api.g_ret_sts_success;
12379
12380
12381 -- Check for API Version
12382
12383 IF NOT fnd_api.compatible_api_call (
12384 l_api_version,
12385 p_api_version,
12386 l_api_name,
12387 g_pkg_name
12388 )
12389 THEN
12390 RAISE fnd_api.g_exc_unexpected_error;
12391 END IF;
12392
12393
12394 -- Initialize Message list
12395
12396 IF fnd_api.to_boolean(p_init_msg_list)
12397 THEN
12398 FND_MSG_PUB.INITIALIZE;
12399 END IF;
12400
12401
12402 -- Check for NOT NULL columns
12403
12404 IF ((p_processing_set_id = L_MISS_NUM) or
12405 (p_processing_set_id is null))
12406 THEN
12407 l_token_str := l_token_str || ' PROCESSING_SET_ID ';
12408
12409 fnd_file.new_line(FND_FILE.LOG, 1);
12410 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_RQD_VALUE_NULL');
12411 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WR_ITEM_STATUS');
12412 FND_MESSAGE.SET_TOKEN('IEU_UWQ_REQ_PARAM',l_token_str);
12413 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
12414
12415 fnd_msg_pub.ADD;
12416 fnd_msg_pub.Count_and_Get
12417 (
12418 p_count => x_msg_count,
12419 p_data => x_msg_data
12420 );
12421
12422 RAISE fnd_api.g_exc_error;
12423
12424 END IF;
12425
12426 -- Get the Work_source_id
12427
12428 BEGIN
12429 l_not_valid_flag := 'N';
12430 Select ws_id, ws_type, object_code
12431 into l_ws_id, l_ws_type, l_obj_code
12432 from ieu_uwqm_work_sources_b
12433 where ws_code = p_ws_code
12434 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
12435
12436 EXCEPTION
12437 WHEN OTHERS THEN
12438
12439 -- Work Source does not exist for this Object Code
12440 l_token_str := 'WS_CODE: '||p_ws_code;
12441
12442 fnd_file.new_line(FND_FILE.LOG, 1);
12443 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
12444 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WR_ITEM_STATUS');
12445 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
12446 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
12447
12448 fnd_msg_pub.ADD;
12449 fnd_msg_pub.Count_and_Get
12450 (
12451 p_count => x_msg_count,
12452 p_data => x_msg_data
12453 );
12454
12455 RAISE fnd_api.g_exc_error;
12456
12457 END;
12458
12459 if (l_ws_type = 'PRIMARY')
12460 then
12461
12462 -- Validate object Code
12463
12464 l_token_str := '';
12465 l_count := '';
12466 l_not_valid_flag := 'N';
12467 WORKITEM_PK_ID_LIST.delete;
12468 WORKITEM_OBJ_CODE_LIST.delete;
12469
12470 SELECT count(*)
12471 INTO l_count
12472 FROM IEU_UWQM_ITEMS_GTT A
12473 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID
12474 AND A.WORKITEM_OBJ_CODE <> L_OBJ_CODE;
12475
12476 IF NVL(l_count, 0) > 0
12477 THEN
12478
12479 SELECT WORKITEM_PK_ID
12480 , WORKITEM_OBJ_CODE
12481 BULK COLLECT INTO
12482 WORKITEM_PK_ID_LIST
12483 , WORKITEM_OBJ_CODE_LIST
12484 FROM IEU_UWQM_ITEMS_GTT A
12485 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID
12486 AND A.WORKITEM_OBJ_CODE <> L_OBJ_CODE
12487 AND ROWNUM <= 5;
12488
12489 FOR i IN WORKITEM_PK_ID_LIST.FIRST..WORKITEM_PK_ID_LIST.LAST
12490 LOOP
12491 l_token_str := l_token_str||WORKITEM_OBJ_CODE_LIST(i)||'-'||TO_CHAR(WORKITEM_PK_ID_LIST(i))||' ';
12492 END LOOP;
12493
12494 -- Work Source does not exist for this Object Code
12495
12496 fnd_file.new_line(FND_FILE.LOG, 1);
12497 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_INVALID_WS');
12498 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WR_ITEM_STATUS');
12499 FND_MESSAGE.SET_TOKEN('WORKITEM_OBJ_CODE_AND_PK_ID',l_token_str);
12500 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
12501
12502 fnd_msg_pub.ADD;
12503 fnd_msg_pub.Count_and_Get
12504 (
12505 p_count => x_msg_count,
12506 p_data => x_msg_data
12507 );
12508
12509 RAISE fnd_api.g_exc_error;
12510
12511 END IF;
12512
12513 elsif (l_ws_type = 'ASSOCIATION')
12514 then
12515 BEGIN
12516
12517 SELECT parent_ws_id, child_ws_id
12518 INTO l_parent_ws_id, l_child_ws_id
12519 FROM IEU_UWQM_WS_ASSCT_PROPS
12520 WHERE ws_id = l_ws_id;
12521
12522 EXCEPTION
12523 WHEN NO_DATA_FOUND THEN
12524
12525 -- Work Source does not exist for this Object Code
12526 l_token_str := 'WS_CODE: '||p_ws_code;
12527 fnd_file.new_line(FND_FILE.LOG, 1);
12528 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
12529 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WR_ITEM_STATUS');
12530 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
12531 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
12532
12533 fnd_msg_pub.ADD;
12534 fnd_msg_pub.Count_and_Get
12535 (
12536 p_count => x_msg_count,
12537 p_data => x_msg_data
12538 );
12539
12540 RAISE fnd_api.g_exc_error;
12541
12542 END;
12543
12544 BEGIN
12545 l_not_valid_flag := 'N';
12546 SELECT object_code
12547 INTO l_parent_obj_code
12548 FROM IEU_UWQM_WORK_SOURCES_B
12549 WHERE ws_id = l_parent_ws_id
12550 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
12551
12552 EXCEPTION
12553 WHEN NO_DATA_FOUND THEN
12554
12555 -- Work Source does not exist for this Object Code
12556 l_token_str := 'WS_CODE: '||p_ws_code;
12557 fnd_file.new_line(FND_FILE.LOG, 1);
12558 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
12559 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WR_ITEM_STATUS');
12560 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
12561 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
12562 fnd_msg_pub.ADD;
12563 fnd_msg_pub.Count_and_Get
12564 (
12565 p_count => x_msg_count,
12566 p_data => x_msg_data
12567 );
12568
12569 RAISE fnd_api.g_exc_error;
12570
12571 END;
12572
12573 BEGIN
12574 l_not_valid_flag := 'N';
12575 SELECT object_code
12576 INTO l_child_obj_code
12577 FROM IEU_UWQM_WORK_SOURCES_B
12578 WHERE ws_id = l_child_ws_id
12579 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
12580
12581 EXCEPTION
12582 WHEN NO_DATA_FOUND THEN
12583
12584 -- Work Source does not exist for this Object Code
12585 l_token_str := 'WS_CODE: '||p_ws_code;
12586 fnd_file.new_line(FND_FILE.LOG, 1);
12587 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
12588 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WR_ITEM_STATUS');
12589 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
12590 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
12591 fnd_msg_pub.ADD;
12592 fnd_msg_pub.Count_and_Get
12593 (
12594 p_count => x_msg_count,
12595 p_data => x_msg_data
12596 );
12597
12598 RAISE fnd_api.g_exc_error;
12599
12600 END;
12601
12602 -- Validate object Code
12603
12604 l_token_str := '';
12605 l_count := '';
12606 l_not_valid_flag := 'N';
12607 WORKITEM_PK_ID_LIST.delete;
12608 WORKITEM_OBJ_CODE_LIST.delete;
12609
12610 SELECT count(*)
12611 INTO l_count
12612 FROM IEU_UWQM_ITEMS_GTT A
12613 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID
12614 AND ( A.WORKITEM_OBJ_CODE <> L_CHILD_OBJ_CODE OR A.SOURCE_OBJECT_TYPE_CODE <> L_PARENT_OBJ_CODE);
12615
12616 IF NVL(l_count, 0) > 0
12617 THEN
12618
12619 SELECT WORKITEM_PK_ID
12620 , WORKITEM_OBJ_CODE
12621 BULK COLLECT INTO
12622 WORKITEM_PK_ID_LIST
12623 , WORKITEM_OBJ_CODE_LIST
12624 FROM IEU_UWQM_ITEMS_GTT A
12625 WHERE A.PROCESSING_SET_ID = P_PROCESSING_SET_ID
12626 AND (A.WORKITEM_OBJ_CODE <> L_CHILD_OBJ_CODE OR A.SOURCE_OBJECT_TYPE_CODE <> L_PARENT_OBJ_CODE)
12627 AND ROWNUM <= 5;
12628
12629 FOR i IN WORKITEM_PK_ID_LIST.FIRST..WORKITEM_PK_ID_LIST.LAST
12630 LOOP
12631 l_token_str := l_token_str||WORKITEM_OBJ_CODE_LIST(i)||'-'||TO_CHAR(WORKITEM_PK_ID_LIST(i))||' ';
12632 END LOOP;
12633
12634 -- Work Source does not exist for this Object Code
12635
12636 fnd_file.new_line(FND_FILE.LOG, 1);
12637 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_INVALID_WS');
12638 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WR_ITEM_STATUS');
12639 FND_MESSAGE.SET_TOKEN('WORKITEM_OBJ_CODE_AND_PK_ID',l_token_str);
12640 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
12641
12642 fnd_msg_pub.ADD;
12643 fnd_msg_pub.Count_and_Get
12644 (
12645 p_count => x_msg_count,
12646 p_data => x_msg_data
12647 );
12648
12649 RAISE fnd_api.g_exc_error;
12650
12651 END IF;
12652
12653 end if;
12654
12655 -- Validate Work Item Status
12656
12657 l_token_str := '';
12658 l_count := '';
12659 WORKITEM_PK_ID_LIST.delete;
12660 WORKITEM_OBJ_CODE_LIST.delete;
12661
12662 SELECT Count(*)
12663 INTO l_count
12664 FROM IEU_UWQM_ITEMS_GTT
12665 WHERE PROCESSING_SET_ID = P_PROCESSING_SET_ID
12666 AND WORKITEM_STATUS NOT IN ('CLOSE', 'DELETE');
12667
12668 IF NVL(l_count, 0) > 0
12669 THEN
12670
12671 SELECT WORKITEM_PK_ID
12672 , WORKITEM_OBJ_CODE
12673 BULK COLLECT INTO
12674 WORKITEM_PK_ID_LIST
12675 , WORKITEM_OBJ_CODE_LIST
12676 FROM IEU_UWQM_ITEMS_GTT
12677 WHERE PROCESSING_SET_ID = P_PROCESSING_SET_ID
12678 AND WORKITEM_STATUS NOT IN ('CLOSE', 'DELETE')
12679 AND ROWNUM <= 5;
12680
12681 FOR i IN WORKITEM_PK_ID_LIST.FIRST..WORKITEM_PK_ID_LIST.LAST
12682 LOOP
12683 l_token_str := l_token_str||WORKITEM_OBJ_CODE_LIST(i)||'-'||TO_CHAR(WORKITEM_PK_ID_LIST(i))||' ';
12684 END LOOP;
12685
12686 fnd_file.new_line(FND_FILE.LOG, 1);
12687 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_INVALID_STATUS');
12688 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.SYNC_WR_ITEM_STATUS');
12689 FND_MESSAGE.SET_TOKEN('WORKITEM_OBJ_CODE_AND_PK_ID',l_token_str);
12690 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
12691
12692 fnd_msg_pub.ADD;
12693 fnd_msg_pub.Count_and_Get
12694 (
12695 p_count => x_msg_count,
12696 p_data => x_msg_data
12697 );
12698
12699 RAISE fnd_api.g_exc_error;
12700
12701 END IF;
12702
12703
12704 x_return_status := fnd_api.g_ret_sts_success;
12705 l_wr_item_status_rec.WORKITEM_OBJ_CODE_LST.delete;
12706 l_wr_item_status_rec.WORKITEM_PK_ID_LST.delete;
12707 l_wr_item_status_rec.STATUS_ID_LIST.delete;
12708
12709 SELECT WORKITEM_OBJ_CODE
12710 , WORKITEM_PK_ID
12711 , DECODE(WORKITEM_STATUS, 'CLOSE', 3, 'DELETE', 4, STATUS_ID) "STATUS_ID"
12712 BULK COLLECT INTO l_wr_item_status_rec.WORKITEM_OBJ_CODE_LST
12713 , l_wr_item_status_rec.WORKITEM_PK_ID_LST
12714 , l_wr_item_status_rec.STATUS_ID_LIST
12715 FROM IEU_UWQM_ITEMS_GTT
12716 WHERE PROCESSING_SET_ID = P_PROCESSING_SET_ID;
12717
12718 IF l_wr_item_status_rec.WORKITEM_OBJ_CODE_LST.FIRST IS NOT NULL THEN
12719 BEGIN
12720 FORALL i in l_wr_item_status_rec.WORKITEM_OBJ_CODE_LST.FIRST..l_wr_item_status_rec.WORKITEM_OBJ_CODE_LST.LAST SAVE EXCEPTIONS
12721
12722 UPDATE IEU_UWQM_ITEMS
12723 SET OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER + 1
12724 , LAST_UPDATED_BY = FND_GLOBAL.USER_ID
12725 , LAST_UPDATE_DATE = SYSDATE
12726 , LAST_UPDATE_LOGIN = FND_GLOBAL.LOGIN_ID
12727 , STATUS_UPDATE_USER_ID = FND_GLOBAL.USER_ID
12728 , STATUS_ID = l_wr_item_status_rec.STATUS_ID_LIST(i)
12729 WHERE WORKITEM_OBJ_CODE = l_wr_item_status_rec.WORKITEM_OBJ_CODE_LST(i)
12730 AND WORKITEM_PK_ID = l_wr_item_status_rec.WORKITEM_PK_ID_LST(i);
12731
12732 EXCEPTION
12733 WHEN dml_errors THEN
12734 errors := SQL%BULK_EXCEPTIONS.COUNT;
12735
12736 FOR i IN 1..errors LOOP
12737 fnd_file.new_line(FND_FILE.LOG, 1);
12738 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_SYNC_WR_UPDATE_FAILED');
12739 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME', 'IEU_WR_PUB.SYNC_WR_ITEM_STATUS');
12740 FND_MESSAGE.SET_TOKEN('DETAILS', 'WORKITEM_PK_ID:'||l_wr_item_status_rec.WORKITEM_PK_ID_LST(SQL%BULK_EXCEPTIONS(i).ERROR_INDEX) ||' Error: '||SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
12741
12742 fnd_file.put_line(FND_FILE.LOG,SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
12743 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
12744 fnd_msg_pub.ADD;
12745 fnd_msg_pub.Count_and_Get
12746 (
12747 p_count => x_msg_count,
12748 p_data => x_msg_data
12749 );
12750 END LOOP;
12751
12752 RAISE fnd_api.g_exc_error;
12753 END;
12754 END IF;
12755
12756 l_wr_item_status_rec.WORKITEM_OBJ_CODE_LST.delete;
12757 l_wr_item_status_rec.WORKITEM_PK_ID_LST.delete;
12758 l_wr_item_status_rec.STATUS_ID_LIST.delete;
12759
12760 IF FND_API.TO_BOOLEAN( p_commit ) THEN
12761 COMMIT WORK;
12762 END IF;
12763
12764 EXCEPTION
12765
12766 WHEN fnd_api.g_exc_error THEN
12767
12768 ROLLBACK TO SYNC_WR_ITEM_STATUS_SP;
12769 x_return_status := fnd_api.g_ret_sts_error;
12770
12771 fnd_msg_pub.Count_and_Get
12772 (
12773 p_count => x_msg_count,
12774 p_data => x_msg_data
12775 );
12776
12777 WHEN fnd_api.g_exc_unexpected_error THEN
12778
12779 ROLLBACK TO SYNC_WR_ITEM_STATUS_SP;
12780 x_return_status := fnd_api.g_ret_sts_unexp_error;
12781
12782 fnd_msg_pub.Count_and_Get
12783 (
12784 p_count => x_msg_count,
12785 p_data => x_msg_data
12786 );
12787
12788 WHEN OTHERS THEN
12789 x_msg_data := sqlcode||' '||sqlerrm;
12790
12791 ROLLBACK TO SYNC_WR_ITEM_STATUS_SP;
12792 x_return_status := fnd_api.g_ret_sts_unexp_error;
12793
12794 FND_FILE.PUT_LINE(FND_FILE.LOG, x_msg_data);
12795 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
12796 THEN
12797
12798 fnd_msg_pub.Count_and_Get
12799 (
12800 p_count => x_msg_count,
12801 p_data => x_msg_data
12802 );
12803
12804 END IF;
12805
12806 END SYNC_WR_ITEM_STATUS;
12807
12808 PROCEDURE UPDATE_WR_ITEM_STATUS
12809 ( p_api_version IN NUMBER,
12810 p_init_msg_list IN VARCHAR2 DEFAULT NULL,
12811 p_commit IN VARCHAR2 DEFAULT NULL,
12812 p_ws_code IN VARCHAR2 DEFAULT NULL,
12813 x_msg_count OUT NOCOPY NUMBER,
12814 x_msg_data OUT NOCOPY VARCHAR2,
12815 x_return_status OUT NOCOPY VARCHAR2) AS
12816
12817 l_api_version CONSTANT NUMBER := 1.0;
12818 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_WR_ITEM_STATUS';
12819
12820 l_token_str VARCHAR2(4000);
12821
12822 TYPE NUMBER_TAB IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
12823
12824 WORK_ITEM_ID_LIST NUMBER_TAB;
12825
12826 TYPE wr_item_status_rec IS RECORD
12827 ( WORK_ITEM_ID_LIST NUMBER_TAB
12828 );
12829
12830 l_wr_item_status_rec wr_item_status_rec;
12831
12832 dml_errors EXCEPTION;
12833 PRAGMA exception_init(dml_errors, -24381);
12834 errors number;
12835
12836 l_ws_id NUMBER;
12837 l_not_valid_flag VARCHAR2(1);
12838 l_array_size NUMBER;
12839 l_done BOOLEAN;
12840
12841 cursor c_status(p_ws_id IN NUMBER) is
12842 select work_item_id
12843 from ieu_uwqm_items
12844 where ws_id = p_ws_id
12845 and status_id = 0;
12846
12847 BEGIN
12848
12849 l_audit_log_val := FND_PROFILE.VALUE('IEU_WR_DIST_AUDIT_LOG');
12850 l_token_str := '';
12851 l_not_valid_flag := 'N';
12852 l_array_size := 2000;
12853
12854 SAVEPOINT UPDATE_WR_ITEM_STATUS_SP;
12855 x_return_status := fnd_api.g_ret_sts_success;
12856
12857
12858 -- Check for API Version
12859
12860 IF NOT fnd_api.compatible_api_call (
12861 l_api_version,
12862 p_api_version,
12863 l_api_name,
12864 g_pkg_name
12865 )
12866 THEN
12867 RAISE fnd_api.g_exc_unexpected_error;
12868 END IF;
12869
12870
12871 -- Initialize Message list
12872
12873 IF fnd_api.to_boolean(p_init_msg_list)
12874 THEN
12875 FND_MSG_PUB.INITIALIZE;
12876 END IF;
12877
12878
12879 -- Get the Work_source_id
12880
12881 BEGIN
12882 l_not_valid_flag := 'N';
12883 Select ws_id
12884 into l_ws_id
12885 from ieu_uwqm_work_sources_b
12886 where ws_code = p_ws_code
12887 and nvl(not_valid_flag, 'N') = l_not_valid_flag;
12888
12889 EXCEPTION
12890 WHEN OTHERS THEN
12891
12892 -- Work Source does not exist for this Object Code
12893 l_token_str := 'WS_CODE: '||p_ws_code;
12894
12895 fnd_file.new_line(FND_FILE.LOG, 1);
12896 FND_MESSAGE.SET_NAME('IEU', 'IEU_UWQ_WS_DETAILS_NULL');
12897 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME','IEU_WR_PUB.UPDATE_WR_ITEM_STATUS');
12898 FND_MESSAGE.SET_TOKEN('COLUMN_VALUE',l_token_str);
12899 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
12900
12901 fnd_msg_pub.ADD;
12902 fnd_msg_pub.Count_and_Get
12903 (
12904 p_count => x_msg_count,
12905 p_data => x_msg_data
12906 );
12907
12908 RAISE fnd_api.g_exc_error;
12909
12910 END;
12911
12912
12913 x_return_status := fnd_api.g_ret_sts_success;
12914 l_wr_item_status_rec.WORK_ITEM_ID_LIST.delete;
12915
12916 open c_status (l_ws_id);
12917 loop
12918
12919 FETCH c_status
12920 BULK COLLECT INTO
12921 l_wr_item_status_rec.WORK_ITEM_ID_LIST
12922 LIMIT l_array_size;
12923
12924 -- fnd_file.put_line(FND_FILE.LOG,'due date task id cnt: '||l_task_duedate_rec.l_task_id_list.COUNT);
12925 l_done := c_status%NOTFOUND;
12926
12927 BEGIN
12928 FORALL i in 1..l_wr_item_status_rec.WORK_ITEM_ID_LIST.COUNT SAVE EXCEPTIONS
12929 UPDATE IEU_UWQM_ITEMS
12930 SET OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER + 1
12931 , LAST_UPDATED_BY = FND_GLOBAL.USER_ID
12932 , LAST_UPDATE_DATE = SYSDATE
12933 , LAST_UPDATE_LOGIN = FND_GLOBAL.LOGIN_ID
12934 , STATUS_UPDATE_USER_ID = FND_GLOBAL.USER_ID
12935 , STATUS_ID = 3
12936 WHERE WORK_ITEM_ID = l_wr_item_status_rec.WORK_ITEM_ID_LIST(i);
12937 EXCEPTION
12938 WHEN dml_errors THEN
12939 errors := SQL%BULK_EXCEPTIONS.COUNT;
12940 FOR i IN 1..errors LOOP
12941
12942 fnd_file.new_line(FND_FILE.LOG, 1);
12943 FND_MESSAGE.SET_NAME('IEU', 'IEU_UPDATE_UWQM_ITEM_FAILED');
12944 FND_MESSAGE.SET_TOKEN('PACKAGE_NAME', 'IEU_WR_PUB.UPDATE_WR_ITEM_STATUS');
12945 FND_MESSAGE.SET_TOKEN('DETAILS', 'WORK_ITEM_ID:'||l_wr_item_status_rec.WORK_ITEM_ID_LIST(SQL%BULK_EXCEPTIONS(i).ERROR_INDEX) ||' Error: '||SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
12946
12947 fnd_file.put_line(FND_FILE.LOG,SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
12948 fnd_file.put_line(FND_FILE.LOG,FND_MESSAGE.GET);
12949 fnd_msg_pub.ADD;
12950 fnd_msg_pub.Count_and_Get
12951 (
12952 p_count => x_msg_count,
12953 p_data => x_msg_data
12954 );
12955 END LOOP;
12956
12957 RAISE fnd_api.g_exc_error;
12958 END;
12959
12960 IF FND_API.TO_BOOLEAN( p_commit ) THEN
12961 COMMIT WORK;
12962 END IF;
12963
12964 l_wr_item_status_rec.WORK_ITEM_ID_LIST.DELETE;
12965
12966 exit when (l_done);
12967
12968 end loop;
12969
12970 close c_status;
12971
12972 EXCEPTION
12973
12974 WHEN fnd_api.g_exc_error THEN
12975
12976 ROLLBACK TO UPDATE_WR_ITEM_STATUS_SP;
12977 x_return_status := fnd_api.g_ret_sts_error;
12978
12979 fnd_msg_pub.Count_and_Get
12980 (
12981 p_count => x_msg_count,
12982 p_data => x_msg_data
12983 );
12984
12985 WHEN fnd_api.g_exc_unexpected_error THEN
12986
12987 ROLLBACK TO UPDATE_WR_ITEM_STATUS_SP;
12988 x_return_status := fnd_api.g_ret_sts_unexp_error;
12989
12990 fnd_msg_pub.Count_and_Get
12991 (
12992 p_count => x_msg_count,
12993 p_data => x_msg_data
12994 );
12995
12996 WHEN OTHERS THEN
12997 x_msg_data := sqlcode||' '||sqlerrm;
12998
12999 ROLLBACK TO UPDATE_WR_ITEM_STATUS_SP;
13000 x_return_status := fnd_api.g_ret_sts_unexp_error;
13001
13002 FND_FILE.PUT_LINE(FND_FILE.LOG, x_msg_data);
13003 IF FND_MSG_PUB.Check_msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
13004 THEN
13005
13006 fnd_msg_pub.Count_and_Get
13007 (
13008 p_count => x_msg_count,
13009 p_data => x_msg_data
13010 );
13011
13012 END IF;
13013
13014 END UPDATE_WR_ITEM_STATUS;
13015
13016 END IEU_WR_PUB;