DBA Data[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;